rev: 分拣工单、分拣木托盘搬运校验根据计算好的数量
This commit is contained in:
@@ -302,31 +302,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
// todo: 特殊处理
|
||||
protected int specialHandling(String regionCode, JSONObject param) {
|
||||
int torus = 0; // 无业务:0, 分拣剩余1托:1,分拣剩余0托:2
|
||||
int torus = 0; // 无业务:0,分拣剩余0托:1
|
||||
if (regionCode.equals("FJ")) { // 判断是否够码满
|
||||
// 分拣需要在这设置特殊值
|
||||
// 校验是否够码满一托
|
||||
JSONArray array = param.getJSONArray("list");
|
||||
List<ApplyDeviceDto> list = JSONArray.parseArray(array.toJSONString(), ApplyDeviceDto.class);
|
||||
PdmBdWorkorder workorder = workorderService.getDeviceDockingProductionTask(param.getString("device_code"));
|
||||
// 1 获取点位相应数量
|
||||
int sum = 0;
|
||||
for (ApplyDeviceDto applyDeviceDto : list) {
|
||||
sum += Integer.parseInt(applyDeviceDto.getQty());
|
||||
}
|
||||
// 2 获取库存量 surplusNumber
|
||||
int surplusNumber = fjMapper.getInventoryQuantity(workorder.getMaterial_id());
|
||||
// 3 现有总数 total
|
||||
int total = sum + surplusNumber;
|
||||
// 4 获取木托盘需要多少块 needFullNumber
|
||||
String needFullNumberStr = fjMapper.getNeedFullNumber(workorder.getMaterial_id());
|
||||
int needFullNumber = TaskUtils.convertMultiply(needFullNumberStr);
|
||||
int surplus = total / needFullNumber;
|
||||
if (surplus == 1) {
|
||||
torus = 1;
|
||||
} else if (surplus == 0) {
|
||||
torus = 2;
|
||||
}
|
||||
boolean enoughCallEmpty = workorderService.isEnoughCallEmpty(param.getString("device_code"));
|
||||
// PdmBdWorkorder workorder = workorderService.getDeviceDockingProductionTask(param.getString("device_code"));
|
||||
// BigDecimal realQty = workorder.getReal_qty();
|
||||
// BigDecimal planQty = workorder.getPlan_qty();
|
||||
// if (realQty.compareTo(planQty) < 0) { // 还可以叫空盘
|
||||
// torus = 0;
|
||||
// } else {
|
||||
// torus = 1;
|
||||
// }
|
||||
return enoughCallEmpty ? 0 : 1;
|
||||
}
|
||||
return torus;
|
||||
}
|
||||
@@ -596,7 +585,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(),
|
||||
baseRequest.getVehicle_type(), GroupBindMaterialStatusEnum.BOUND.getValue());
|
||||
if (ObjectUtil.isEmpty(one)) {
|
||||
throw new BadRequestException("载具编码为"+baseRequest.getVehicle_code()+"组盘不存在!");
|
||||
throw new BadRequestException("载具编码为" + baseRequest.getVehicle_code() + "组盘不存在!");
|
||||
}
|
||||
String yjDeviceCode = basePoint.getParent_point_code(); // 压机设备编码
|
||||
SchBasePoint devicePoint = pointService.getById(yjDeviceCode);
|
||||
@@ -627,7 +616,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
vehiclematerialgroupService.updateById(one);
|
||||
// 记录泥料
|
||||
MesMudConsumptionDto mesMudConsumptionDto = new MesMudConsumptionDto();
|
||||
mesMudConsumptionDto.setMSGID(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
mesMudConsumptionDto.setMSGID(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
mesMudConsumptionDto.setPWORKSCHE_ID(productionTask.getWorkorder_code());
|
||||
mesMudConsumptionDto.setOUT_FINNUM(one.getMaterial_weight());
|
||||
mesMudConsumptionDto.setPRESSUNIT(devicePoint.getExt_point_code());
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
package org.nl.wms.ext.mes.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo;
|
||||
import org.nl.wms.ext.acs.service.dto.BrickInfoDto;
|
||||
import org.nl.wms.ext.mes.autotask.AutoSaveWaitGdyInfo;
|
||||
import org.nl.wms.ext.mes.service.dto.*;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
|
||||
@@ -92,4 +91,17 @@ public interface WmsToMesService {
|
||||
* @param shelfInfo
|
||||
*/
|
||||
void saveShelfInfoBatchToMes(MesShelfInfo shelfInfo);
|
||||
|
||||
/**
|
||||
* 根据成品物料编码获取订单号
|
||||
* @param materialId
|
||||
* @return
|
||||
*/
|
||||
IPage<MesOrderInfo> selectPageMesOrder(IPage<MesOrderInfo> pages, String materialId);
|
||||
|
||||
/**
|
||||
* 获取所有客户信息
|
||||
* @return
|
||||
*/
|
||||
List<CusterVo> getCusterInfo();
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.ext.mes.service.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.ext.mes.autotask.AutoSaveWaitGdyInfo;
|
||||
@@ -59,4 +60,8 @@ public interface MesRequestMapper {
|
||||
List<MesShelfInfo> getAllShelfInfos();
|
||||
@DS("oracle")
|
||||
void saveShelfInfoBatchToMes(MesShelfInfo shelfInfo);
|
||||
@DS("oracle")
|
||||
IPage<MesOrderInfo> findOrderInfoByMaterialId(IPage<MesOrderInfo> pages, String materialId);
|
||||
@DS("oracle")
|
||||
List<CusterVo> getCusterInfo();
|
||||
}
|
||||
|
||||
@@ -281,4 +281,14 @@
|
||||
LEFT JOIN sch_base_point p2 ON p2.point_code = vg.source_vehicle_code
|
||||
WHERE p1.region_code = 'GTPHC'
|
||||
</select>
|
||||
<select id="findOrderInfoByMaterialId" resultType="org.nl.wms.ext.mes.service.dto.MesOrderInfo">
|
||||
SELECT * FROM "RTMG"."VIEW_POP_ORDER_RESULT_LMS" vp
|
||||
WHERE 1 = 1
|
||||
<if test="materialId != null and materialId != ''">
|
||||
AND vp.FMATERIAL_ID = #{materialId}
|
||||
</if>
|
||||
</select>
|
||||
<select id="getCusterInfo" resultType="org.nl.wms.ext.mes.service.dto.CusterVo">
|
||||
SELECT * FROM "RTMG"."VIEW_CUSTER_LMS"
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.nl.wms.ext.mes.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 客户信息
|
||||
* @Date: 2023/10/23
|
||||
*/
|
||||
@Data
|
||||
public class CusterVo {
|
||||
private String CUSTER_NO;
|
||||
private String CUSTER_NAME;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.nl.wms.ext.mes.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: mes的订单信息DTO
|
||||
* @Date: 2023/10/23
|
||||
*/
|
||||
@Data
|
||||
public class MesOrderInfo {
|
||||
/**
|
||||
* 订单号
|
||||
*/
|
||||
private String FORDER_NO;
|
||||
private String FPLANSTART_DATE;
|
||||
private String FPLANFINISH_DATE;
|
||||
private String FMATERIAL_ID;
|
||||
private String FMATERIAL_NAME;
|
||||
private String FMATSPEC;
|
||||
private String FMATMODEL;
|
||||
private String FSALE_NO;
|
||||
private int FORDER_SUBNUM;
|
||||
private String BC;
|
||||
private String BZ;
|
||||
private int GUADANSUM;
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo;
|
||||
@@ -407,6 +408,16 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
mesRequestMapper.saveShelfInfoBatchToMes(shelfInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<MesOrderInfo> selectPageMesOrder(IPage<MesOrderInfo> pages, String materialId) {
|
||||
return mesRequestMapper.findOrderInfoByMaterialId(pages, materialId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CusterVo> getCusterInfo() {
|
||||
return mesRequestMapper.getCusterInfo();
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换
|
||||
*
|
||||
|
||||
@@ -44,6 +44,18 @@ public class PdmBdWorkorderController {
|
||||
public ResponseEntity<Object> query(PdmBdWorkorderQuery query, PageQuery page){
|
||||
return new ResponseEntity<>(TableDataInfo.build(pdmBdWorkorderService.queryAll(query,page)),HttpStatus.OK);
|
||||
}
|
||||
@GetMapping("/mesOrder")
|
||||
@Log("查询订单管理")
|
||||
@ApiOperation("查询订单管理")
|
||||
public ResponseEntity<Object> queryMesOrder(PdmBdWorkorderQuery query, PageQuery page){
|
||||
return new ResponseEntity<>(TableDataInfo.build(pdmBdWorkorderService.queryMesOrder(query,page)),HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/getCuster")
|
||||
@Log("获取客户信息")
|
||||
@ApiOperation("获取客户信息")
|
||||
public ResponseEntity<Object> getCuster(){
|
||||
return new ResponseEntity<>(wmsToMesService.getCusterInfo(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/materials")
|
||||
@Log("查询物料基础信息")
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.pdm.workorder.service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.ext.mes.service.dto.MesOrderInfo;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
|
||||
|
||||
@@ -63,4 +64,19 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
|
||||
* @return
|
||||
*/
|
||||
PdmBdWorkorder getDeviceDockingProductionTask(String deviceCode);
|
||||
|
||||
/**
|
||||
* 获取mes订单信息
|
||||
* @param query
|
||||
* @param page
|
||||
* @return
|
||||
*/
|
||||
IPage<MesOrderInfo> queryMesOrder(PdmBdWorkorderQuery query, PageQuery page);
|
||||
|
||||
/**
|
||||
* 根据对接位获取是否可以叫空盘
|
||||
* @param deviceCode
|
||||
* @return
|
||||
*/
|
||||
boolean isEnoughCallEmpty(String deviceCode);
|
||||
}
|
||||
|
||||
@@ -146,4 +146,15 @@ public class PdmBdWorkorder implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private String half_material_code;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String order_no;
|
||||
@TableField(exist = false)
|
||||
private String custer_no;
|
||||
@TableField(exist = false)
|
||||
private int order_subnum;
|
||||
@TableField(exist = false)
|
||||
private int guadansum;
|
||||
@TableField(exist = false)
|
||||
private String pack_method;
|
||||
|
||||
}
|
||||
|
||||
@@ -16,5 +16,6 @@ public class PdmBdWorkorderQuery implements Serializable {
|
||||
private String begin_time;
|
||||
private String end_time;
|
||||
private List<String> more_order_status;
|
||||
private String materialId;
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -16,13 +17,15 @@ import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.ext.mes.service.dto.MesOrderInfo;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.pdm.workorder.service.dao.mapper.PdmBdWorkorderMapper;
|
||||
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
|
||||
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
@@ -32,16 +35,16 @@ import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
/**
|
||||
* @description 服务实现
|
||||
* @author lyd
|
||||
* @date 2023-05-05
|
||||
**/
|
||||
* @author lyd
|
||||
* @description 服务实现
|
||||
* @date 2023-05-05
|
||||
**/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper, PdmBdWorkorder> implements IPdmBdWorkorderService {
|
||||
@@ -55,9 +58,13 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
private ISysNoticeService noticeService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private WmsToMesService wmsToMesService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
|
||||
@Override
|
||||
public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page){
|
||||
public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page) {
|
||||
IPage<PdmBdWorkorder> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
pages = pdmBdWorkorderMapper.selectPageLeftJoin(pages, query);
|
||||
return pages;
|
||||
@@ -78,9 +85,37 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
entity.setUpdate_id(currentUserId);
|
||||
entity.setUpdate_name(nickName);
|
||||
entity.setUpdate_time(now);
|
||||
// 如果是分拣,就特殊处理
|
||||
if (entity.getRegion_code().equals("FJ")) {
|
||||
toCalculatePlannedQuantity(entity);
|
||||
}
|
||||
pdmBdWorkorderMapper.insert(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分拣工单需要计算计划数量,并封装数据
|
||||
*
|
||||
* @param entity
|
||||
*/
|
||||
private void toCalculatePlannedQuantity(PdmBdWorkorder entity) {
|
||||
int orderSubnum = entity.getOrder_subnum(); // 计划量
|
||||
int guadansum = entity.getGuadansum(); // 已经包装数
|
||||
int residueNum = orderSubnum - guadansum; // 剩余数
|
||||
int multiply = TaskUtils.convertMultiply(entity.getPack_method());
|
||||
// 计算需要多少木托
|
||||
int ceil = (int) Math.ceil(residueNum / multiply);
|
||||
// 获取此物料在库存中有多少
|
||||
int inventoryQty = vehiclematerialgroupService.getInventoryQtyByMaterialId(entity.getMaterial_id());
|
||||
// 查看库存能有多少托
|
||||
int inventoryCeil = (int) Math.ceil(inventoryQty / multiply);
|
||||
// 工单号和客户编码存放json
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("order_no", entity.getOrder_no());
|
||||
res.put("custer_no", entity.getCuster_no());
|
||||
entity.setPlan_qty(ceil > inventoryCeil ? BigDecimal.valueOf(inventoryCeil) : BigDecimal.valueOf(ceil));
|
||||
entity.setExt_data(res.toJSONString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(PdmBdWorkorder entity) {
|
||||
PdmBdWorkorder dto = pdmBdWorkorderMapper.selectById(entity.getWorkorder_id());
|
||||
@@ -154,7 +189,7 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
log.error("工单下发异常:" + e.getMessage());
|
||||
// 通知
|
||||
noticeService.createNotice("工单下发失败: " + e.getMessage(), "工单下发失败: "
|
||||
+ pdmBdWorkorder.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode());
|
||||
+ pdmBdWorkorder.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode());
|
||||
throw new BadRequestException("工单下发失败");
|
||||
}
|
||||
if (resultForAcs.getCode() != HttpStatus.HTTP_OK) {
|
||||
@@ -182,4 +217,20 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
.eq(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.PRODUCING.getCode());
|
||||
return pdmBdWorkorderMapper.selectOne(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<MesOrderInfo> queryMesOrder(PdmBdWorkorderQuery query, PageQuery page) {
|
||||
IPage<MesOrderInfo> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
pages = wmsToMesService.selectPageMesOrder(pages, query.getMaterialId());
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnoughCallEmpty(String deviceCode) {
|
||||
PdmBdWorkorder workorder = this.getDeviceDockingProductionTask(deviceCode);
|
||||
BigDecimal realQty = workorder.getReal_qty();
|
||||
BigDecimal planQty = workorder.getPlan_qty();
|
||||
// 还可以叫空盘
|
||||
return realQty.compareTo(planQty) < 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,4 +79,11 @@ public interface ISchBaseVehiclematerialgroupService extends IService<SchBaseVeh
|
||||
* @return
|
||||
*/
|
||||
SchBaseVehiclematerialgroup getGroupInfo(String vehicleCode, String value);
|
||||
|
||||
/**
|
||||
* 返回当前物料的剩余库存数
|
||||
* @param materialId
|
||||
* @return
|
||||
*/
|
||||
int getInventoryQtyByMaterialId(String materialId);
|
||||
}
|
||||
|
||||
@@ -15,4 +15,6 @@ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper<SchBaseVeh
|
||||
IPage<SchBaseVehiclematerialgroup> selectPageLeftJoin(IPage<SchBaseVehiclematerialgroup> pages, SchBaseVehiclematerialgroupQuery query);
|
||||
|
||||
SchBaseVehiclematerialgroup getGroup(JSONObject entity);
|
||||
|
||||
int getInventoryQtyByMaterialId(String materialId);
|
||||
}
|
||||
|
||||
@@ -49,4 +49,20 @@
|
||||
</if>
|
||||
AND vg.group_bind_material_status = '2'
|
||||
</select>
|
||||
<select id="getInventoryQtyByMaterialId" resultType="java.lang.Integer">
|
||||
SELECT
|
||||
IF(SUM(vg.material_qty)>0,SUM(vg.material_qty),0) AS qty
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
LEFT JOIN sch_base_vehiclematerialgroup vg ON vg.vehicle_code = p.vehicle_code
|
||||
AND vg.vehicle_type = p.vehicle_type
|
||||
AND vg.group_bind_material_status = '2'
|
||||
WHERE
|
||||
p.region_code = 'GTPHC'
|
||||
AND p.point_status = '3'
|
||||
AND p.vehicle_code IS NOT NULL
|
||||
AND p.vehicle_code != ''
|
||||
AND vg.group_id IS NOT NULL
|
||||
AND vg.material_id = #{materialId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -129,4 +129,9 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
return selectOne;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInventoryQtyByMaterialId(String materialId) {
|
||||
return vehiclematerialgroupMapper.getInventoryQtyByMaterialId(materialId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -362,6 +363,10 @@ public class FJMKTask extends AbstractTask {
|
||||
}
|
||||
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
JSONObject jsonObject = JSONObject.parseObject(requestParam);
|
||||
String workorderCode = jsonObject.getString("workorder_code");
|
||||
PdmBdWorkorder workorder = workorderService.getByCode(workorderCode);
|
||||
// 获取参数
|
||||
String bzxPoint = taskObj.getPoint_code2(); // 获取终点1
|
||||
String fmPoint = taskObj.getPoint_code3(); // 获取起点2
|
||||
@@ -373,9 +378,15 @@ public class FJMKTask extends AbstractTask {
|
||||
// 包装位: 解锁
|
||||
PointUtils.setUpdateByType(bzxPointObj, taskFinishedType);
|
||||
PointUtils.clearPoint(bzxPointObj);
|
||||
// 覆膜位: 解锁 . 清空
|
||||
PointUtils.setUpdateByType(fmPointObj, taskFinishedType);
|
||||
PointUtils.clearPoint(fmPointObj);
|
||||
if (ObjectUtil.isNotEmpty(fmPoint)) {
|
||||
// 覆膜位: 解锁 . 清空
|
||||
PointUtils.setUpdateByType(fmPointObj, taskFinishedType);
|
||||
PointUtils.clearPoint(fmPointObj);
|
||||
// 工单的真实数+1
|
||||
workorder.setReal_qty(workorder.getReal_qty().add(BigDecimal.ONE));
|
||||
TaskUtils.setWorkOrderUpdateByType(workorder, taskFinishedType);
|
||||
workorderService.updateById(workorder);
|
||||
}
|
||||
// 分拣机械手: 清空
|
||||
PointUtils.setUpdateByType(fjcPointObj, taskFinishedType);
|
||||
PointUtils.clearPoint(fjcPointObj);
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -128,6 +129,11 @@ public class FJQKTask extends AbstractTask {
|
||||
// 找起点
|
||||
String requestParam = task.getRequest_param();
|
||||
JSONObject extGroupData = JSONObject.parseObject(requestParam);
|
||||
// 判断工单是否够
|
||||
boolean enoughCallEmpty = workorderService.isEnoughCallEmpty(task.getPoint_code2());
|
||||
if (!enoughCallEmpty) {
|
||||
throw new BadRequestException("数量不足,不呼叫空盘");
|
||||
}
|
||||
SchBasePoint point = findStartPoint(startRegionStr, extGroupData);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
// 消息通知
|
||||
@@ -229,6 +235,10 @@ public class FJQKTask extends AbstractTask {
|
||||
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
// 载具编码:前面需要根据任务判断,没有载具不能生成任务
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
JSONObject jsonObject = JSONObject.parseObject(requestParam);
|
||||
String workorderCode = jsonObject.getString("workorder_code");
|
||||
PdmBdWorkorder workorder = workorderService.getByCode(workorderCode);
|
||||
String vehicleCode = taskObj.getVehicle_code();
|
||||
String vehicleType = taskObj.getVehicle_type();
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取终点
|
||||
@@ -237,7 +247,6 @@ public class FJQKTask extends AbstractTask {
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
|
||||
// 终点设置值
|
||||
// 记录库存并解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
@@ -247,6 +256,10 @@ public class FJQKTask extends AbstractTask {
|
||||
endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
|
||||
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
|
||||
pointService.updateById(endPointObj);
|
||||
// 工单的真实数+1
|
||||
workorder.setReal_qty(workorder.getReal_qty().add(BigDecimal.ONE));
|
||||
TaskUtils.setWorkOrderUpdateByType(workorder, taskFinishedType);
|
||||
workorderService.updateById(workorder);
|
||||
}
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
|
||||
@@ -152,4 +152,4 @@ sa-token:
|
||||
|
||||
lucene:
|
||||
index:
|
||||
path: C:\lucene\index
|
||||
path: D:\lucene\index
|
||||
|
||||
Reference in New Issue
Block a user