diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java index db71db3..ecebe03 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java @@ -466,4 +466,62 @@ public class PdaController { pdaService.samplingCountNum(param); return PdaUtils.buildSuccessResultJSON(null); } + // ==================================================================== + @PostMapping("/manual/loamCompare/list") + @Log("搬运点位下拉框") + @ApiOperation("搬运点位下拉框") + @PdaAnnotation + public JSONObject getLoamComparePointList() { + return PdaUtils.buildSuccessResultJSON(pdaService.getLoamComparePointList()); + } + @PostMapping("/manual/loamCompare/doCheck") + @Log("校验任务与组盘是否一致") + @ApiOperation("校验任务与组盘是否一致") + @PdaAnnotation + public JSONObject getLoamCompareDoCheck(@RequestBody JSONObject param) { + return PdaUtils.buildSuccessResultWithMessage(pdaService.getLoamCompareDoCheck(param)); + } + // ==================================================================== + + @PostMapping("/manual/updateInfo/getInfo") + @Log("根据载具编码获取组盘信息") + @ApiOperation("根据载具编码获取组盘信息") + @PdaAnnotation + public JSONObject getGroupInfoByVehicleCode(@RequestBody JSONObject param) { + return PdaUtils.buildSuccessResultJSON(pdaService.getGroupInfoByVehicleCode(param)); + } + + @PostMapping("/manual/updateInfo/updateWeight") + @Log("修改料盅重量") + @ApiOperation("修改料盅重量") + @PdaAnnotation + public JSONObject doUpdateWeight(@RequestBody JSONObject param) { + pdaService.doUpdateWeight(param); + return PdaUtils.buildSuccessResultJSON(null); + } + // ==================================================================== + @PostMapping("/manual/updateInfo/updateQty") + @Log("修改重量/数量") + @ApiOperation("修改重量/数量") + @PdaAnnotation + public JSONObject doUpdateQty(@RequestBody JSONObject param) { + pdaService.doUpdateQty(param); + return PdaUtils.buildSuccessResultJSON(null); + } + // ==================================================================== + @PostMapping("/manual/unbindVehicle/checkHaveMaterial") + @Log("校验托盘是否有货") + @ApiOperation("校验托盘是否有货") + @PdaAnnotation + public JSONObject checkHaveMaterial(@RequestBody JSONObject param) { + return PdaUtils.buildSuccessResultJSON(pdaService.checkHaveMaterial(param)); + } + @PostMapping("/manual/unbindVehicle/doUnbindVehicle") + @Log("解绑托盘信息") + @ApiOperation("解绑托盘信息") + @PdaAnnotation + public JSONObject doUnbindVehicle(@RequestBody JSONObject param) { + pdaService.doUnbindVehicle(param); + return PdaUtils.buildSuccessResultWithMessage("成功解绑"); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java index 6a486fe..83af362 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java @@ -262,4 +262,50 @@ public interface PdaService { * @return / */ JSONArray kilnMoveCreateTaskShow(); + + /** + * 获取泥料比对的点位列表 + * @return / + */ + JSONArray getLoamComparePointList(); + + /** + * 校验任务与组盘是否一致 + * @param param / + * @return / + */ + String getLoamCompareDoCheck(JSONObject param); + + /** + * 查询数据 + * @param param / + * @return / + */ + JSONObject getGroupInfoByVehicleCode(JSONObject param); + + /** + * 更新料盅重量 + * @param param / + * @return / + */ + void doUpdateWeight(JSONObject param); + + /** + * 修改重量/数量 + * @param param / + */ + void doUpdateQty(JSONObject param); + + /** + * 校验托盘是否有货 + * @param param / + * @return / + */ + JSONObject checkHaveMaterial(JSONObject param); + + /** + * 校验托盘是否有货 + * @param param / + */ + void doUnbindVehicle(JSONObject param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java index 3686663..c246126 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java @@ -18,6 +18,8 @@ import org.nl.wms.basedata.eum.StandStatus; import org.nl.wms.basedata.eum.TrueOrFalse; import org.nl.wms.basedata.eum.VehicleType; import org.nl.wms.common.PickType; +import org.nl.wms.das.service.GroupUpdateRecordService; +import org.nl.wms.das.service.dto.GroupUpdateRecordDto; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.pda.service.PdaService; import org.nl.wms.sch.manage.*; @@ -69,6 +71,8 @@ public class PdaServiceImpl implements PdaService { private final WmsToAcsService wmsToAcsService; + private final GroupUpdateRecordService groupUpdateRecordService; + @Override public JSONArray region(String func) { switch (func) { @@ -1195,4 +1199,127 @@ public class PdaServiceImpl implements PdaService { public JSONArray kilnMoveCreateTaskShow() { return this.getTaskList(TaskType.PDA_VEHICLE_TRANSFER.value()); } + + @Override + public JSONArray getLoamComparePointList() { + return getPositionList(); + } + + @Override + public String getLoamCompareDoCheck(JSONObject param) { + // param: point_code、vehicle_code + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject taskObj = taskTab.query("point_code2 = '" + param.getString("point_code") + "' AND point_type = '" + + TaskType.PDA_PRESS_UP.value() + "'", "update_time desc").uniqueResult(0); + if (taskObj.getString("vehicle_code").equals(param.getString("vehicle_code"))) { + return "检测符合!"; + } + return "检测不符合!"; + } + + @Override + public JSONObject getGroupInfoByVehicleCode(JSONObject param) { + // param: vehicle_code, vehicle_type + JSONObject info = WQL.getWO("PDA") + .addParam("flag", "10") + .addParam("vehicle_code", param.getString("vehicle_code")) + .addParam("vehicle_type", param.getString("vehicle_type")) + .process() + .uniqueResult(0); + if (ObjectUtil.isEmpty(info)) { + throw new BadRequestException("托盘:[" + param.getString("vehicle_code") + "]的组盘信息不存在!"); + } + return info; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void doUpdateWeight(JSONObject param) { + // param: vehicle_code, vehicle_type, current_weight + // 更新、记录信息 + WQLObject vdTab = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + JSONObject info = vdTab.query("vehicle_code = '" + param.getString("vehicle_code") + "' AND vehicle_type = '" + + param.getString("vehicle_type") + "' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(info)) { + throw new BadRequestException("托盘:[" + param.getString("vehicle_code") + "]的组盘信息不存在!"); + } + // 插入记录 + GroupUpdateRecordDto dto = new GroupUpdateRecordDto(); + dto.setGroup_id(info.getString("vd_id")); + dto.setOrign_weight(info.getString("weight")); + dto.setCurrent_weight(param.getString("current_weight")); + dto.setVehicle_code(param.getString("vehicle_code")); + dto.setVehicle_type(param.getString("vehicle_type")); + dto.setUpdate_type("1"); + groupUpdateRecordService.create(dto); + info.put("weight", param.getString("current_weight")); + TaskUtils.addCurrentUpdateColum(info); + vdTab.update(info); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void doUpdateQty(JSONObject param) { + // param: vehicle_code, vehicle_type, current_weight,current_qty + // 更新、记录信息 + WQLObject vdTab = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + JSONObject info = vdTab.query("vehicle_code = '" + param.getString("vehicle_code") + "' AND vehicle_type = '" + + param.getString("vehicle_type") + "' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(info)) { + throw new BadRequestException("托盘:[" + param.getString("vehicle_code") + "]的组盘信息不存在!"); + } + // 获取重量 + BigDecimal currentWeight = param.getBigDecimal("current_weight"); + // 获取数量 + BigDecimal currentQty = param.getBigDecimal("current_qty"); + if (ObjectUtil.isEmpty(currentQty)) { + currentQty = info.getBigDecimal("weight"); + } + // 插入记录 + GroupUpdateRecordDto dto = new GroupUpdateRecordDto(); + dto.setGroup_id(info.getString("vd_id")); + dto.setOrign_weight(info.getString("weight")); + dto.setCurrent_weight(String.valueOf(currentWeight.multiply(currentQty))); + dto.setOrign_qty(info.getString("qty")); + dto.setCurrent_qty(param.getString("current_qty")); + dto.setVehicle_code(param.getString("vehicle_code")); + dto.setVehicle_type(param.getString("vehicle_type")); + dto.setUpdate_type( + (ObjectUtil.isEmpty(param.getString("current_weight")) && ObjectUtil.isNotEmpty(param.getString("current_qty"))) + ? "2" : + (ObjectUtil.isNotEmpty(param.getString("current_weight")) && ObjectUtil.isNotEmpty(param.getString("current_qty"))) + ? "3" : "1"); + groupUpdateRecordService.create(dto); + info.put("weight", param.getString("current_weight")); + TaskUtils.addCurrentUpdateColum(info); + vdTab.update(info); + } + + @Override + public JSONObject checkHaveMaterial(JSONObject param) { + JSONObject res = new JSONObject(); + // param: vehicle_code, vehicle_type + WQLObject vdTab = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + JSONObject info = vdTab.query("vehicle_code = '" + param.getString("vehicle_code") + "' AND vehicle_type = '" + + param.getString("vehicle_type") + "' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(info)) { + res.put("message", "该托盘系统中无组盘信息!"); + return res; + } + res.put("message", "该托盘系统中存在组盘信息,如需解绑,请点击确认!"); + return res; + } + + @Override + public void doUnbindVehicle(JSONObject param) { + WQLObject vdTab = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + JSONObject info = vdTab.query("vehicle_code = '" + param.getString("vehicle_code") + "' AND vehicle_type = '" + + param.getString("vehicle_type") + "' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(info)) { + throw new BadRequestException("托盘:[" + param.getString("vehicle_code") + "]的组盘信息不存在!"); + } + info.put("is_delete", "1"); + TaskUtils.addCurrentUpdateColum(info); + vdTab.update(info); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/util/PdaUtils.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/util/PdaUtils.java index e770d79..70be18f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/util/PdaUtils.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/util/PdaUtils.java @@ -3,6 +3,8 @@ package org.nl.wms.pda.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import javax.validation.constraints.NotNull; + /** * 辽宁晟华手持工具类 * @@ -26,6 +28,18 @@ public final class PdaUtils { return resultJSON; } + /** + * 调用成功,返回String + * @param result / + * @return / + */ + public static JSONObject buildSuccessResultWithMessage(@NotNull String result) { + JSONObject resultJSON = new JSONObject(); + resultJSON.put("code", "1"); + resultJSON.put("desc", result); + return resultJSON; + } + /** * 服务层调用方法 * 创建操作失败的 JSONObject diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql index 5ff5a2f..83c45bc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql @@ -18,6 +18,8 @@ 输入.region_code TYPEAS s_string 输入.handle_class TYPEAS s_string 输入.task_type TYPEAS s_string + 输入.vehicle_code TYPEAS s_string + 输入.vehicle_type TYPEAS s_string 输入.point_type TYPEAS f_string 输入.types TYPEAS f_string @@ -203,3 +205,18 @@ ENDSELECT ENDQUERY ENDIF + IF 输入.flag = "10" + QUERY + SELECT + vd.qty, + vd.weight, + mm.material_code, + mm.weight AS single_weight, + mm.material_brick_type + FROM + `st_ivt_vehicle_detail` vd + LEFT JOIN md_me_materialbase mm ON vd.material_id = mm.material_id + WHERE vd.vehicle_code = 输入.vehicle_code AND vd.vehicle_type = 输入.vehicle_type AND vd.is_delete = '0' + ENDSELECT + ENDQUERY + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java index 54b1207..bea933d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java @@ -112,4 +112,5 @@ public class WorkorderDto implements Serializable { private String region_code; private String plan_date; + private String is_auto; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/HLSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/HLSendMaterialTask.java index 795c0d2..cd0e5dc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/HLSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/HLSendMaterialTask.java @@ -81,6 +81,7 @@ public class HLSendMaterialTask extends AbstractAcsTask { @Override public void findNextPoint() { WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); + WQLObject vdTable = WQLObject.getWQLObject("st_ivt_vehicle_detail"); JSONArray tasks = task_table .query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_START.value() + "' AND handle_class = '" + HLSendMaterialTask.class.getName() + "'", "priority DESC, create_time ASC") .getResultJSONArray(0); @@ -94,6 +95,20 @@ public class HLSendMaterialTask extends AbstractAcsTask { JSONObject point1 = point_table.query("point_code = '" + task.getString("point_code1") + "'").uniqueResult(0); JSONObject point2 = null; JSONObject workorder = WQL.getWO("SEND_MATERIAL_TASK").addParam("flag", "8").addParam("vd_id", task.getString("group_id")).process().uniqueResult(0); + // 此处判断是否不需要AGV,如果不需要直接创建人工任务,todo 状态目前设置完成。。。 + if ("0".equals(workorder.getString("is_auto"))) { + task.put("task_status", TaskStatus.FINISHED.value()); + task.put("point_code2", "KLXNK"); + task.put("remark", ""); + TaskUtils.addAutoUpdateColum(task); + task_table.update(task); + // 为了库存,把点位编码设置成虚拟库 + JSONObject pa = new JSONObject(); + pa.put("point_code", "KLXNK"); + TaskUtils.addAutoUpdateColum(pa); + vdTable.update(pa, "vd_id = '" + task.getString("group_id") + "'"); + break; + } if (ObjectUtil.isNotEmpty(point1) && "2".equals(point1.getString("point_type")) && ObjectUtil.isNotEmpty(workorder) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java index 305121e..44ad4db 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java @@ -79,6 +79,7 @@ public class YZSendMaterialTask extends AbstractAcsTask { @Override public void findNextPoint() { WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); + WQLObject vdTable = WQLObject.getWQLObject("st_ivt_vehicle_detail"); JSONArray tasks = task_table .query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_START.value() + "' AND handle_class = '" + YZSendMaterialTask.class.getName() + "'", "priority DESC, create_time ASC") .getResultJSONArray(0); @@ -89,6 +90,22 @@ public class YZSendMaterialTask extends AbstractAcsTask { for (int i = 0; i < tasks.size(); i++) { JSONObject task = tasks.getJSONObject(i); + // 获取工单 + JSONObject workorder = WQL.getWO("SEND_MATERIAL_TASK").addParam("flag", "8").addParam("vd_id", task.getString("group_id")).process().uniqueResult(0); + if ("0".equals(workorder.getString("is_auto"))) { + task.put("task_status", TaskStatus.FINISHED.value()); + task.put("point_code2", "YQXNK"); + task.put("remark", ""); + TaskUtils.addAutoUpdateColum(task); + task_table.update(task); + // 为了库存,把点位编码设置成虚拟库 + JSONObject pa = new JSONObject(); + pa.put("point_code", "YQXNK"); + TaskUtils.addAutoUpdateColum(pa); + vdTable.update(pa, "vd_id = '" + task.getString("group_id") + "'"); + break; + } + JSONObject point = WQL .getWO("SEND_MATERIAL_TASK") .addParam("flag", "1") @@ -185,7 +202,7 @@ public class YZSendMaterialTask extends AbstractAcsTask { && current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) { throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!"); } - + task.put("task_status", TaskStatus.FINISHED.value()); if (operation_type == OperationType.AUTO) { TaskUtils.addACSUpdateColum(task); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls index 5bb1e68..2a89f10 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls differ diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/hl/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/hl/index.vue index 6d4fa58..8f54fbc 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/hl/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/hl/index.vue @@ -146,6 +146,14 @@ + + + + + + + + @@ -310,7 +318,8 @@ const defaultForm = { qualified_qty: '0', unqualified_qty: '0', region_code: null, - plan_date: null + plan_date: null, + is_auto: '1' } export default { name: 'HLWorkorder', @@ -359,6 +368,9 @@ export default { device_name: [ { required: true, message: '生产设备不能为空', trigger: 'change' } ], + is_auto: [ + { required: true, message: '是否自动不能为空', trigger: 'blur' } + ], is_urgent: [ { required: true, message: '是否加急不能为空', trigger: 'blur' } ], 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 6d172ef..7b941fe 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue @@ -179,6 +179,14 @@ + + + + + + + + @@ -449,7 +457,8 @@ const defaultForm = { qualified_qty: '0', unqualified_qty: '0', region_code: null, - plan_date: null + plan_date: null, + is_auto: '1' } export default { name: 'Produceshiftorder',