diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java index 966607a..fc45492 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java @@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; /** * @description / @@ -91,6 +92,12 @@ public class PdmBdWorkorder implements Serializable { @ApiModelProperty(value = "外部标识") private String ext_id; + @ApiModelProperty(value = "外部数据") + private String ext_data; + + @TableField(exist = false) + private List ghs; + @ApiModelProperty(value = "是否删除") private Boolean is_delete; 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 fd98259..bcd87e6 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 @@ -29,6 +29,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Set; @@ -50,6 +51,11 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl queryAll(PdmBdWorkorderQuery query, PageQuery page){ IPage pages = new Page<>(page.getPage() + 1, page.getSize()); pages = pdmBdWorkorderMapper.selectPageLeftJoin(pages, query); + for(PdmBdWorkorder pdmBdWorkorder:pages.getRecords()){ + if(ObjectUtil.isNotEmpty(pdmBdWorkorder.getExt_data())) { + pdmBdWorkorder.setGhs(Arrays.asList(pdmBdWorkorder.getExt_data().split(","))); + } + } return pages; } @@ -58,7 +64,6 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl getPointList(SchBasePoint region) { if (ObjectUtil.isEmpty(region)) return this.list(); return pointMapper.selectList(new LambdaQueryWrapper() - .eq(SchBasePoint::getRegion_code, region.getRegion_code())); + .eq(SchBasePoint::getRegion_code, region.getRegion_code()) + .eq(ObjectUtil.isNotEmpty(region.getPoint_type()),SchBasePoint::getPoint_type, region.getPoint_type()) + .orderByAsc(SchBasePoint::getPoint_code)); } @Override diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXMLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXMLTask.java index 1d2f874..2676cfa 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXMLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXMLTask.java @@ -177,38 +177,52 @@ public class TBXMLTask extends AbstractTask { // 获取物料 MdBaseMaterial material = materialService.getById(workorder.getMaterial_id()); // 获取固化方案 - Param curingPlan = paramService.findByCode("CuringPlan"); +// Param curingPlan = paramService.findByCode("CuringPlan"); List points = new ArrayList<>(); - if (curingPlan.getValue().equals(GeneralDefinition.NOT_MIXING)) { - // 不可混料-需要根据工单上物料的信息 - // 1 获取含有该物料并且没满的固化室。 - points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id()); - } else if (curingPlan.getValue().equals(GeneralDefinition.CAN_MIXING)) { - // 可混料, 要与物料工艺号相同 - // 1 获取同工艺号的位置 - points = tbxMapper.getCanMiningPoint(nextRegionStr, vehicle_type, material.getTechnique_num()); - } else { - // 自定义混料 - // 获取自定义混料对应的plan_code(计划编码) - Param currentMaterials = paramService.getOne(new LambdaQueryWrapper().eq(Param::getCode, "CurrentMaterials")); - // 获取plan_code对应的物料数组 - List details = solidifyPlanService.details(currentMaterials.getValue()); - // 判断是否在自定义配方内 - if (details.contains(material.getMaterial_id())) { - // 1 寻找可存放的固化室 - points = tbxMapper.getSamePlanPoint(nextRegionStr, details, vehicle_type); - if (points.size() == 0) { - // 2 没找到需要找个相同物料可用的位置 - // hint: 获取含有该物料并且没满的固化室。 - points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id()); - } - } + List ghsList=new ArrayList<>(); + //固化室逻辑调整,现在去哪个固化室取决于工单,原有限制不变,原有混料规则废弃 + if(ObjectUtil.isNotEmpty(workorder.getExt_data())) { + ghsList=Arrays.asList(workorder.getExt_data().split(",")); } - // 2 没有对应的固化室、没有同工艺号的固化室、没有计划方案对应的固化室,就找新的固化室 + points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id(),ghsList); +// if (curingPlan.getValue().equals(GeneralDefinition.NOT_MIXING)) { +// // 不可混料-需要根据工单上物料的信息 +// // 1 获取含有该物料并且没满的固化室。 +// points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id()); +// } else if (curingPlan.getValue().equals(GeneralDefinition.CAN_MIXING)) { +// // 可混料, 要与物料工艺号相同 +// // 1 获取同工艺号的位置 +// points = tbxMapper.getCanMiningPoint(nextRegionStr, vehicle_type, material.getTechnique_num()); +// } else { +// // 自定义混料 +// // 获取自定义混料对应的plan_code(计划编码) +// Param currentMaterials = paramService.getOne(new LambdaQueryWrapper().eq(Param::getCode, "CurrentMaterials")); +// // 获取plan_code对应的物料数组 +// List details = solidifyPlanService.details(currentMaterials.getValue()); +// // 判断是否在自定义配方内 +// if (details.contains(material.getMaterial_id())) { +// // 1 寻找可存放的固化室 +// points = tbxMapper.getSamePlanPoint(nextRegionStr, details, vehicle_type); +// if (points.size() == 0) { +// // 2 没找到需要找个相同物料可用的位置 +// // hint: 获取含有该物料并且没满的固化室。 +// points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id()); +// } +// } +// } +// // 2 没有对应的固化室、没有同工艺号的固化室、没有计划方案对应的固化室,就找新的固化室 if (points.size() == 0) { points = tbxMapper.getEmptyPoint(nextRegionStr, vehicle_type, workorder.getMaterial_id()); } - SchBasePoint schBasePoint =points.size() > 0 ? points.get(0) : null; + SchBasePoint schBasePoint =new SchBasePoint(); + for(SchBasePoint temp:points){ + for(String ghs:ghsList) { + if (ghs.equals(temp.getParent_point_code())) { + schBasePoint=temp; + break; + } + } + } if (schBasePoint != null) { schBasePoint.setCan_material_type(workorder.getMaterial_id()); pointService.updateById(schBasePoint); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/mapper/TBXMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/mapper/TBXMapper.java index fdc274d..849695c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/mapper/TBXMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/mapper/TBXMapper.java @@ -25,7 +25,7 @@ public interface TBXMapper { * @param materialId 物料标识 * @return 点位数据 */ - List getNotFullByMaterial(List nextRegionStr, String vehicleType, String materialId); + List getNotFullByMaterial(List nextRegionStr, String vehicleType, String materialId,List ghsList); /** * 获取空的固化室 diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue index 49a0461..fad77ca 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue @@ -60,7 +60,7 @@ - + - - - - - - - - + + + + + + + + + + + + + @@ -416,7 +434,8 @@ const defaultForm = { workshop_code: null, ext_id: null, is_delete: false, - is_urgent: false + is_urgent: false, + ghs: null } export default { name: 'PdmBdWorkorder', @@ -453,6 +472,9 @@ export default { ], region_code: [ { required: true, message: '区域编码不能为空', trigger: 'change' } + ], + ghs: [ + { required: true, message: '可放固化室不能为空', trigger: 'change' } ] /* workorder_type: [ { required: true, message: '工单类型不能为空', trigger: 'blur' } @@ -465,6 +487,7 @@ export default { workShopList: [], regionList: [], pointList: [], + ghsList: [], regionCodeParam: null, materialDialog: false, fullscreenLoading: false @@ -473,6 +496,7 @@ export default { created() { this.getWorkShopList() this.getRegionList() + this.getGhsList() }, methods: { item() { @@ -506,6 +530,16 @@ export default { }) } }, + getGhsList() { // 获取点位列表 + const param = { + region_code: 'GH', + point_type: '1' + } + crudSchBasePoint.getPointList(param).then(res => { + this.ghsList = res + this.regionCodeParam = null + }) + }, getMaterial() { this.materialDialog = true },