diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 6ebfd19..445dba7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -56,4 +56,7 @@ public interface AcsToWmsService { GetPalletizeResponse getVehicleInfo(JSONObject param); /** 实时修改点位状态 */ BaseResponse realTimeSetPoint(JSONObject param); + + /** 分拣 申请取走满料盅托盘 任务不下发*/ + BaseResponse woodenPalletBinding(JSONObject param); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 53f0f43..cbbf7e6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -49,10 +49,7 @@ import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.constant.GeneralDefinition; import org.nl.wms.sch.task_manage.constant.ExceptionConstant; import org.nl.wms.sch.task_manage.constant.RequestConstant; -import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum; +import org.nl.wms.sch.task_manage.enums.*; import org.nl.wms.sch.task_manage.task.TaskFactory; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.task_manage.task.tasks.fj.FJQLTask; @@ -70,12 +67,10 @@ import javax.annotation.PostConstruct; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @Author: lyd @@ -489,29 +484,27 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (baseRequest.getVehicle_code() == null) { return ApplyTaskResponse.responseError(requestNo, "载具编码不能为空!"); } + String vehicleCode = TaskUtils.defaultVehicleCode(baseRequest.getVehicle_code()); StringBuilder sb = new StringBuilder(); - SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(), - GroupBindMaterialStatusEnum.UNBOUND.getValue()); - String materialId = groupInfo.getMaterial_id(); - MdBaseMaterial baseMaterial = materialService.getById(materialId); - BigDecimal materialWeight = ObjectUtil.isNotEmpty(groupInfo.getMaterial_weight()) - ? groupInfo.getMaterial_weight() : BigDecimal.valueOf(0); - String singleWeightStr = baseMaterial.getSingle_weight(); - BigDecimal singleWeight = BigDecimal.valueOf(Double.parseDouble(singleWeightStr)); - BigDecimal multiply = materialWeight.multiply(singleWeight); + SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(vehicleCode, + GroupBindMaterialStatusEnum.BOUND.getValue()); +// String materialId = groupInfo.getMaterial_id(); +// MdBaseMaterial baseMaterial = materialService.getById(materialId); +// BigDecimal materialWeight = ObjectUtil.isNotEmpty(groupInfo.getMaterial_weight()) +// ? groupInfo.getMaterial_weight() : BigDecimal.valueOf(0); +// String singleWeightStr = baseMaterial.getSingle_weight(); +// BigDecimal singleWeight = BigDecimal.valueOf(Double.parseDouble(singleWeightStr)); +// BigDecimal multiply = materialWeight.multiply(singleWeight); // 获取工单 - PdmBdWorkorder workorder = workorderService.getByCode(groupInfo.getWorkorder_code()); - String extData = workorder.getExt_data(); - JSONObject object = JSONObject.parseObject(extData); - CusterVo custer = wmsToMesService.getCusterByNo(object.getString("custer_no")); + PdmBdWorkorder workorder = workorderService.selectApplyLabelInfo(groupInfo.getWorkorder_code()); // 组合 - sb.append(baseRequest.getVehicle_code()).append("##") - .append(baseMaterial.getMaterial_code()).append("##") - .append(groupInfo.getMaterial_qty()).append("##") - .append(multiply).append("##") - .append(DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyy年MM月dd日")).append("##") - .append(custer.getCUSTER_NAME()).append("##") - .append(workorder.getProduction_order()); + sb.append(workorder.getOrder_number()).append("##") + .append(workorder.getProduct_code()).append("##") + .append(workorder.getMaterial_name()).append("##") + .append(workorder.getMaterial_code()).append("##") + .append(workorder.getMaterial_spec()).append("##") + .append(workorder.getMaterial_model()).append("##") + .append(DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyy年MM月dd日")); return ApplyTaskResponse.responseOk(requestNo, sb.toString()); } @@ -954,4 +947,70 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } return BaseResponse.responseOk(actionRequest.getRequestNo()); } + + @Override + public BaseResponse woodenPalletBinding(JSONObject param) { + String requestNo = param.getString("requestNo"); + String deviceCode = param.getString("device_code"); + JSONObject stackParameters = param.getJSONObject("palletize"); + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + return BaseResponse.responseError(requestNo, "设备号[" + deviceCode + "]不正确!"); + } + String parentPointCode = basePoint.getParent_point_code(); + // 获取当前正在生产的工单 + PdmBdWorkorder workOrder = workorderService.getOne(new LambdaQueryWrapper() + .eq(PdmBdWorkorder::getPoint_code, parentPointCode) + .eq(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.PRODUCING.getCode()) + .eq(PdmBdWorkorder::getIs_delete, false)); + if (ObjectUtil.isEmpty(workOrder)) { + return BaseResponse.responseError(requestNo, "工单不存在!"); + } + // 获取原材料物料 + // 载具编码从点位中获取 + // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 + String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); + String isFull = param.getString("is_full"); + if (isFull == null) { + isFull = GeneralDefinition.YES; + } + // 砖块数量 + Integer qty = param.getInteger("qty"); + String vehicleType = workOrder.getVehicle_type(); + // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 + // 解绑同载具的信息 + vehiclematerialgroupService.unBindingSameVehicleMaterial(vehicleCode, vehicleType); + SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); + groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + // 要把数据存到组盘表 + groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workOrder) + ? workOrder.getMaterial_id() + : ""); + groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workOrder) + ? workOrder.getStanding_time() + : 0); + groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workOrder) + ? workOrder.getWorkorder_code() + : ""); + groupEntity.setCreate_id(GeneralDefinition.ACS_ID); + groupEntity.setCreate_name(GeneralDefinition.ACS_NAME); + groupEntity.setCreate_time(DateUtil.now()); + groupEntity.setVehicle_code(vehicleCode); + groupEntity.setVehicle_type(vehicleType); + groupEntity.setMaterial_qty(qty); + groupEntity.setCustomer(workOrder.getCustomer()); + groupEntity.setExt_data(JSONObject.toJSONString(stackParameters)); + groupEntity.setPoint_code(basePoint.getPoint_code()); + groupEntity.setPoint_name(basePoint.getPoint_name()); + groupEntity.setSource_vehicle_code(basePoint.getPoint_code()); + groupEntity.setMove_way(basePoint.getPoint_code()); + groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); + groupEntity.setInstorage_time(DateUtil.now()); + groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); + groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); + groupEntity.setIs_delete(false); + groupEntity.setIs_full(isFull.equals(GeneralDefinition.YES)); + vehiclematerialgroupService.saveOrUpdate(groupEntity); + return BaseResponse.responseOk(requestNo); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java index e1f3d41..7b9eb7f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java @@ -109,4 +109,6 @@ public interface IPdmBdWorkorderService extends IService { List getAcsWorkOrderVos(String s); List getUserList(); + + PdmBdWorkorder selectApplyLabelInfo(String workorderCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java index eb95f06..7d64da8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java @@ -47,4 +47,6 @@ public interface PdmBdWorkorderMapper extends BaseMapper { * @return */ List getAcsWorkOrderVos(String device); + + PdmBdWorkorder selectApplyLabelInfo(String workorderCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml index fd58d20..560bc41 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml @@ -123,4 +123,19 @@ AND w.point_code = #{device} ORDER BY w.planproducestart_date + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java index 6b01b38..0f6b926 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java @@ -286,4 +286,9 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl getUserList() { return userService.getAllUserIdAndName(); } + + @Override + public PdmBdWorkorder selectApplyLabelInfo(String workorderCode) { + return pdmBdWorkorderMapper.selectApplyLabelInfo(workorderCode); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java index 55b292f..1f6ec86 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java @@ -127,7 +127,8 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl lambda = new QueryWrapper().lambda(); lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value) - .eq(SchBaseVehiclematerialgroup::getIs_delete, false); + .eq(SchBaseVehiclematerialgroup::getIs_delete, false) + .orderByDesc(SchBaseVehiclematerialgroup::getCreate_time); SchBaseVehiclematerialgroup selectOne = vehiclematerialgroupMapper.selectOne(lambda); return selectOne; }