diff --git a/lms/nladmin-system/src/main/java/org/nl/config/ConfigParam.java b/lms/nladmin-system/src/main/java/org/nl/config/ConfigParam.java deleted file mode 100644 index 6d832de..0000000 --- a/lms/nladmin-system/src/main/java/org/nl/config/ConfigParam.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.nl.config; - -import org.springframework.context.annotation.Configuration; - -import javax.annotation.PostConstruct; -import java.util.HashMap; -import java.util.Map; - -/* - * @author ZZQ - * @Date 2022/11/16 4:32 下午 - */ -@Configuration -public class ConfigParam { - - //旧料盅叫料跟空盅入库都从公共点位回去 - public static Map YZJ_OLD_POINT = new HashMap<>(); - - @PostConstruct - public void initData(){ - //数据库更新该配置数据YZJ_OLD_POINT - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java index b8b4ac8..4e2cd84 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java @@ -97,6 +97,11 @@ public class MaterialbaseDto implements Serializable { private String material_height_type; + private String AlongSide; // A长边 + private String BshortSide; // B短边 + private String Htrapezoidal; // H梯形高 + private String Wthickness; // W厚度 + private Long ass_unit_id; private Long product_series; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 52ee1d3..e36add8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -56,7 +56,7 @@ public class AcsToWmsController { @PostMapping("/manipulatorApply") @Log("ACS机械手给WMS发送任务") @ApiOperation("ACS机械手给WMS发送任务") - public ResponseEntity manipulatorApply(@RequestBody Map whereJson) { + public ResponseEntity manipulatorApply(@RequestBody JSONObject whereJson) { acsToWmsService.manipulatorApply(whereJson); JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); @@ -64,6 +64,18 @@ public class AcsToWmsController { return new ResponseEntity<>(result, HttpStatus.OK); } + @PostMapping("/reverseGroup") + @Log("入窑口反向组盘") + @ApiOperation("入窑口反向组盘") + public ResponseEntity reverseGroup(@RequestBody JSONObject whereJson) { + acsToWmsService.reverseGroup(whereJson); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "发送任务成功"); + return new ResponseEntity<>(result, HttpStatus.OK); + } + + @PostMapping("/ispackage") @Log("ACS给WMS请求是否优先包装") @ApiOperation("ACS给WMS请求是否优先包装") diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index a516363..2f35dc5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -56,7 +56,7 @@ public interface AcsToWmsService { * 组盘 * @param whereJson */ - void manipulatorApply(Map whereJson); + void manipulatorApply(JSONObject whereJson); /** * ACS给WMS请求是否优先包装 @@ -86,4 +86,10 @@ public interface AcsToWmsService { * @return Map */ Map getDeviceCodeByVehicleType(Map jsonObject); + + /** + * 入窑口反向组盘 + * @param whereJson + */ + void reverseGroup(JSONObject whereJson); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 1cb105f..4e82f83 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -199,8 +199,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * 根据type判断是什么业务类型: * 1.混碾机送料入库-困料货架 * 2.混碾机呼叫空托盘 - * 3.压制机下料位叫料出库 - * 4.压制机下料位送空托盘 + * 3.压制机上料位叫料出库 + * 4.压制机上料位送空盅 * 5.压制机满料入库 * 6.压制机呼叫空钢托盘 * 7.烧制叫料出库 @@ -214,13 +214,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { switch (type) { case "1": // 1.混碾机送料入库:混碾机物料送到困料货架 - if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("设备号不能为空"); // 创建任务 param.put("point_code1", point_code); // 起点 SpringContextHolder.getBean(HnSendMaterialTask.class).createTask(param); break; case "2": - if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("设备号不能为空"); param.put("point_code2", point_code); // 终点 // 创建任务 SpringContextHolder.getBean(HnCallEmptyVehicleTask.class).createTask(param); @@ -232,7 +230,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { SpringContextHolder.getBean(YzjCallMaterialTask.class).createTask(param); break; case "4": - // 压制机送空托盘 + // 压制机送空盅 param.put("point_code1", point_code); // 起点 // 创建任务 SpringContextHolder.getBean(YzjSendEmpVehicleTask.class).createTask(param); @@ -240,6 +238,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { case "5": // 压制机满料入库 param.put("point_code1", point_code); // 起点 + param.put("group_id", whereJson.getString("group_id")); // 组盘标识 // 创建任务 SpringContextHolder.getBean(YzjSendMaterialTask.class).createTask(param); break; @@ -295,28 +294,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * @param jsonObject */ @Override - public void manipulatorApply(Map jsonObject) { + public void manipulatorApply(JSONObject jsonObject) { //组盘 JSONObject produceInfoByCode = new JSONObject(); - String device_code = (String) jsonObject.get("device_code"); + String device_code = (String) jsonObject.get("device_code"); // 对接位 + // vehicle_code:不一定有,分拣码垛会提供木托盘载具号、压制码垛是不提供载具号 String vehicle_code = (String) jsonObject.get("vehicle_code"); String qty = String.valueOf(jsonObject.get("qty")); - produceInfoByCode = this.getProduceInfoByCode(device_code); + produceInfoByCode = this.getProduceInfoByCode(device_code); // 获取设备的 String material_id = (String) produceInfoByCode.get("material_id"); String cust_id = (String) produceInfoByCode.get("cust_id"); String producetask_id = (String) produceInfoByCode.get("producetask_id"); WQLObject.getWQLObject("st_buss_vehiclegroup").delete("vehicle_code ='" + vehicle_code + "'"); - // 如果上报不了,则去点位上取(木托盘情况) - if (StrUtil.equals("0", vehicle_code)) { - vehicle_code = produceInfoByCode.getString("vehicle_code"); - } +// // 如果上报不了,则去点位上取(木托盘情况) +// if (StrUtil.equals("0", vehicle_code)) { +// vehicle_code = produceInfoByCode.getString("vehicle_code"); +// } + JSONObject materialObj = WQLObject - .getWQLObject("MD_ME_Material") + .getWQLObject("MD_ME_MaterialBase") .query("material_id='" + material_id + "'") .uniqueResult(0); JSONObject groubObj = new JSONObject(); - groubObj.put("group_id", IdUtil.getSnowflake(1, 1).nextId()); - + long nextId = IdUtil.getSnowflake(1, 1).nextId(); + groubObj.put("group_id", nextId); groubObj.put("vehicle_code", vehicle_code); groubObj.put("material_uuid", material_id); groubObj.put("material_code", materialObj.getString("material_code")); @@ -324,10 +325,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { groubObj.put("cust_id", cust_id); groubObj.put("qty", qty); groubObj.put("producetask_id", producetask_id); - groubObj.put("AlongSide", jsonObject.get("AlongSide")); - groubObj.put("BshortSide", jsonObject.get("BshortSide")); - groubObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal")); - groubObj.put("Wthickness", jsonObject.get("Wthickness")); +// groubObj.put("AlongSide", jsonObject.get("AlongSide")); +// groubObj.put("BshortSide", jsonObject.get("BshortSide")); +// groubObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal")); +// groubObj.put("Wthickness", jsonObject.get("Wthickness")); groubObj.put("tray_qty", jsonObject.get("tray_qty")); groubObj.put("crib_category", jsonObject.get("crib_category")); groubObj.put("tray_high", jsonObject.get("tray_high")); @@ -386,13 +387,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { groubObj.put("create_name", SecurityUtils.getCurrentNickName()); groubObj.put("create_time", DateUtil.now()); WQLObject.getWQLObject("st_buss_vehiclegroup").insert(groubObj); + jsonObject.put("group_id", nextId); // 组盘标识 // 判断是分拣还是压制的送料入库 if (device_code.startsWith("FJCD")) { jsonObject.put("type", "11"); } else { jsonObject.put("type", "5"); } - this.apply((JSONObject) jsonObject); + this.apply(jsonObject); } /** @@ -558,14 +560,32 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return returnjo; } - private JSONObject getProduceInfoByCode(String code) { + /** + * 入窑口反向组盘 + * + * @param whereJson + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void reverseGroup(JSONObject whereJson) { + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup"); + String vehicle_code = whereJson.getString("vehicle_code"); + JSONObject rywPoint = pointTab.query("point_code = 'RYW'").uniqueResult(0); + String group_id = rywPoint.getString("group_id"); + JSONObject group = groupTab.query("group_id = '" + group_id + "'").uniqueResult(0); + group.put("vehicle_code", vehicle_code); + groupTab.update(group); + } + + private JSONObject getProduceInfoByCode(String code) { // 查找工单 //根据 设备点位去找生产任务信息 //1 根据点位去找设备,去找对应的设备信息 JSONObject pointObj = WQLObject.getWQLObject("sch_base_point").query("point_code ='" + code + "'").uniqueResult(0); String device_code = pointObj.getString("device_code"); //2 根据设备去找对应的生产任务 1-未生产、2-已下发、3-生产中、4-暂停、5-完成 JSONObject productTaskObj = WQLObject.getWQLObject("PDM_BD_WorkOrder") - .query("device_code ='" + device_code + "' and producetask_status in ('3','2','4')", "seq_no") + .query("device_code ='" + device_code + "' and order_status in ('3','2','4')", "workorder_procedure") .uniqueResult(0); if (ObjectUtil.isEmpty(productTaskObj)) { throw new BadRequestException("未找到点位为'" + code + "'的生产任务!"); 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 b4c2586..ab88c38 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 @@ -55,6 +55,9 @@ public class WorkorderDto implements Serializable { /** 工单状态 */ private String order_status; + /** 新旧物料 */ + private String is_new; + /** 是否搬运 */ private String is_needmove; @@ -90,4 +93,10 @@ public class WorkorderDto implements Serializable { /** 修改时间 */ private String update_time; + + /** 静置时间 */ + private String standing_time; + + /** 阈值时间 */ + private String warn_time; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java index 313d52d..3c84779 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java @@ -63,9 +63,14 @@ public class SchTaskDto implements Serializable { private String point_code4; /** - * 物料详细信息,满料请求,取工单标识,组盘时候取组盘表 + * 物料详细信息,满料请求,工单标识 */ - private Long material_info_id; + private Long workorder_id; + + /** + * 组盘标识 + */ + private Long group_id; /** * 物料标识 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/WorkOrderEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/WorkOrderEnum.java index 913b1f2..cf7a7bb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/WorkOrderEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/WorkOrderEnum.java @@ -11,7 +11,10 @@ public enum WorkOrderEnum { ORDER_STATUS_DELIVERED("2", "已下发"), ORDER_STATUS_PRODUCING("3", "生产中"), ORDER_STATUS_STOP("4", "停止"), - ORDER_STATUS_FINISH("5", "完成") + ORDER_STATUS_FINISH("5", "完成"), + + IS_NEW_MATERIAL("1", "新物料"), + IS_OLD_MATERIAL("2", "旧物料") ; private final String code; private final String name; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java index 2e0b9bb..a27e6c7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java @@ -142,6 +142,12 @@ public class PointDto implements Serializable { /** 计量单位标识 */ private Long qty_unit_id; + /** 库存数 */ + private BigDecimal ivt_weight; + + /** 计量单位标识 */ + private Long weight_unit_id; + /** 入库时间 */ private String instorage_time; @@ -150,4 +156,7 @@ public class PointDto implements Serializable { /** 是否关联库存表 */ private String is_ref_ivt; + + /** 组盘标识 */ + private Long group_id; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java index 752734a..9a97af1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java @@ -172,6 +172,7 @@ public class PointServiceImpl implements PointService { dto.setVehicle_code(""); dto.setVehicle_qty(""); dto.setPcsn(""); + dto.setTask_id(null); dto.setIvt_qty(BigDecimal.valueOf(0)); dto.setInstorage_time(null); dto.setStanding_time(BigDecimal.valueOf(0)); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java new file mode 100644 index 0000000..2759a9b --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java @@ -0,0 +1,58 @@ +package org.nl.wms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.manage.PointEnum; + +/** + * @author: lyd + * @description: 点位更新工具类 + * @Date: 2022/11/23 + */ +public class PointUpdateUtil { + + /** + * 清理点位 + */ + public static void clearPoint(String point_code) { + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject pointObj = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0); + pointObj.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode()); + pointObj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); + pointObj.put("vehicle_type", null); + pointObj.put("vehicle_code", null); + pointObj.put("vehicle_qty", "0"); + pointObj.put("material_id", null); + pointObj.put("pcsn", null); + pointObj.put("ivt_qty", "0"); + pointObj.put("qty_unit_id", null); + pointObj.put("ivt_weight", "0"); + pointObj.put("weight_unit_id", null); + pointObj.put("instorage_time", null); + pointObj.put("is_full", "0"); + pointObj.put("standing_time", "0"); + pointObj.put("warn_time", "0"); + pointObj.put("group_id", null); + pointTab.update(pointObj); + } + + /** + * 点位:空载具 + */ + public static void setVehicle(JSONObject jsonObject) { + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject pointObj = pointTab.query("point_code = '" + jsonObject.getString("point_code") + "'").uniqueResult(0); + pointObj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); + pointObj.put("point_status", PointEnum.POINT_STATUS_EMPTY_VEHICLE.getCode()); + pointObj.put("vehicle_code", jsonObject.getString("vehicle_code")); + pointObj.put("vehicle_qty", "1"); + pointObj.put("instorage_time", DateUtil.now()); + pointObj.put("is_full", "1"); + pointObj.put("ivt_qty", "0"); + pointObj.put("pcsn", null); + pointObj.put("material_id", null); + pointObj.put("standing_time", "0"); + pointTab.update(pointObj); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java index 712c78a..899f0c8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java @@ -16,8 +16,11 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.PointEnum; import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.UpdateTaskStatusEnum; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.sch.tasks.RegionTypeEnum; import org.springframework.stereotype.Service; @@ -83,7 +86,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { String task_id = task.getString("task_id"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { /* * 取消任务 */ @@ -92,9 +95,9 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { } String point_code1 = task.getString("point_code1"); - if (ObjectUtil.isEmpty(point_code1)) { + if (ObjectUtil.isNotEmpty(point_code1)) { JSONObject endPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); - endPoint.put("lock_type", "1"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(endPoint); } taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); @@ -103,7 +106,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { taskTab.update(taskObj); } - if ("1".equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("update_time", DateUtil.now()); @@ -111,7 +114,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { taskTab.update(taskObj); } - if (StrUtil.equals(status, "2")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) { /* * 更改任务状态为完成 */ @@ -122,13 +125,11 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { taskTab.update(taskObj); /** - * 点位更新,起点:空位,解锁; + * 点位更新,起点:空位 */ String point_code1 = taskObj.getString("point_code1"); - JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); - startPoint.put("point_status", "1"); - startPoint.put("lock_type", "1"); - pointTab.update(startPoint); + if (ObjectUtil.isEmpty(point_code1)) return; + PointUpdateUtil.clearPoint(point_code1); } } @@ -165,8 +166,9 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { .task_status(TaskStatusEnum.SURE_END.getCode()) .point_code2(point_code2) .acs_task_type("2") + .workorder_id(workOrderObj.getLong("workorder_id")) .vehicle_code(form.getString("vehicle_code")) - .vehicle_type(workOrderObj.getString("vehicle_type"))//载具类型统一用载具表维护 + .vehicle_type(workOrderObj.getString("is_new"))//载具类型统一用载具表维护 .vehicle_qty(form.getIntValue("qty")) .task_group_id(org.nl.wms.util.IdUtil.getLongId()) .handle_class(THIS_CLASS) @@ -197,9 +199,8 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { // 创建任务 JSONObject taskObj = taskArr.getJSONObject(i); // 获取工单 - String point_code2 = taskObj.getString("point_code2"); - String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); - JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); + String workorder_id = taskObj.getString("workorder_id"); + JSONObject workOrderObj = workOrderTab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); JSONObject param1 = new JSONObject(); param1.put("flag", "1"); @@ -219,7 +220,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { //锁住起点 startPoint.put("task_id", taskObj.getString("task_id")); - startPoint.put("lock_type", "2"); + startPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(startPoint); } } @@ -240,7 +241,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"2"); + this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode()); else { throw new BadRequestException("未找到该任务或者任务已完成!"); } @@ -256,7 +257,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"0"); + this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode()); else { throw new BadRequestException("未找到该任务或者任务已完成!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java index 4aaa9c3..4635593 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java @@ -14,9 +14,9 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.*; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.util.IdUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -86,26 +86,25 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { String point_code1 = task.getString("point_code1"); - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { /* * 取消任务 */ if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { throw new BadRequestException("已完成不能取消!"); } - if (ObjectUtil.isNotEmpty(point_code1)) { - taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); - taskObj.put("update_time", DateUtil.now()); - taskObj.put("remark", "已取消"); - taskTab.update(taskObj); - + taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); + taskObj.put("update_time", DateUtil.now()); + taskObj.put("remark", "已取消"); + taskTab.update(taskObj); + if (ObjectUtil.isNotEmpty(point_code1) && !point_code1.equals("KGTDDW05")) { JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); - startPoint.put("lock_type", "1"); + startPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(startPoint); } } - if ("1".equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("update_time", DateUtil.now()); @@ -113,7 +112,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { taskTab.update(taskObj); } - if (StrUtil.equals(status,"2")) { + if (StrUtil.equals(status,UpdateTaskStatusEnum.FORCEFINISH.getCode())) { /* * 更改任务状态为完成 */ @@ -124,46 +123,31 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { taskTab.update(taskObj); JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); - if (point_code1.startsWith("L")) { // 入窑缓存位 + if (point_code1.startsWith("R")) { // 入窑缓存位 // 插入出库单 JSONObject regionIoObj = new JSONObject(); regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("buss_date", DateUtil.today()); - regionIoObj.put("io_type", "2"); // 出库 + regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_OUT.getCode()); // 出库 regionIoObj.put("region_id", startPoint.getString("region_id")); regionIoObj.put("region_code", startPoint.getString("region_code")); regionIoObj.put("region_name", startPoint.getString("region_name")); regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); - regionIoObj.put("bill_status", "3"); + regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code2")); - regionIoObj.put("create_mode", "2"); + regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); regionIoObj.put("create_time", DateUtil.now()); regionIoTab.insert(regionIoObj); // 点位更新,起点:空位,解锁; - startPoint.put("point_status", "1"); - startPoint.put("lock_type", "1"); - startPoint.put("task_id", ""); - startPoint.put("pcsn", ""); - startPoint.put("ivt_qty", "0"); - startPoint.put("material_id", ""); - startPoint.put("instorage_time", ""); - startPoint.put("is_full", "2"); - startPoint.put("standing_time", "0"); - startPoint.put("vehicle_type", ""); - startPoint.put("vehicle_code", ""); - } else { // 钢托盘每次就一个 --- 如果是堆叠位5需要更新设备状态?? - startPoint.put("point_status", "1"); - startPoint.put("lock_type", "1"); - startPoint.put("vehicle_qty", "0"); + PointUpdateUtil.clearPoint(startPoint.getString("point_code")); } - pointTab.update(startPoint); } } @@ -187,11 +171,8 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + form.getString("point_code2") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + form.getString("point_code2") + "存在未完成的任务"); - String point_code2 = form.getString("point_code2"); - String sub_device_code = point_code2.substring(0, point_code2.indexOf("_")); - - String device_code = pointTab.query("point_code = '" + sub_device_code + "'").uniqueResult(0).getString("device_code"); + String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除"); @@ -203,11 +184,13 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { .task_status(TaskStatusEnum.SURE_END.getCode()) .point_code2(point_code2) .acs_task_type("2") - .vehicle_code(form.getString("vehicle_code")) - .vehicle_type(workOrderObj.getString("vehicle_type")) + .material_id(workOrderObj.getLong("material_id")) + .workorder_id(workOrderObj.getLong("workorder_id")) + .vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode()) .vehicle_qty(form.getIntValue("qty")) .task_group_id(org.nl.wms.util.IdUtil.getLongId()) .handle_class(THIS_CLASS) + .request_param(form.toJSONString()) .create_time(DateUtil.now()) .build(); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); @@ -247,9 +230,10 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { //锁住起点 noFullPoint.put("task_id", taskObj.getString("task_id")); - noFullPoint.put("lock_type", "2"); + noFullPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(noFullPoint); } else { // 到KGTDDW05找空钢托盘 + // 向ACS查询是否有空钢托盘 JSONObject param = new JSONObject(); param.put("flag", "2"); param.put("region_code", "KGTCPQ"); @@ -263,7 +247,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { //锁住起点 kgtPoint.put("task_id", taskObj.getString("task_id")); - kgtPoint.put("lock_type", "2"); + kgtPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(kgtPoint); } else { taskObj.put("remark", "未找到可用的载具!"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_hnCallEmptyVehicle_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_hnCallEmptyVehicle_01.wql index 7c0b63d..682220d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_hnCallEmptyVehicle_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_hnCallEmptyVehicle_01.wql @@ -48,17 +48,16 @@ IF 输入.flag = "1" p.point_name FROM SCH_BASE_Point p - LEFT JOIN md_pb_vehicle vehicle ON vehicle.vehicle_code = p.vehicle_code WHERE - lock_type = '1' - AND is_used = '1' + lock_type = '1' + AND is_used = '1' AND is_delete = '0' AND point_status = '2' OPTION 输入.region_code <> "" p.region_code = 输入.region_code ENDOPTION OPTION 输入.is_new <> "" - vehicle.vehicle_type = 输入.is_new + p.vehicle_type = 输入.is_new ENDOPTION ENDSELECT ENDQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_yzjCallEmptyVehicle_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_yzjCallEmptyVehicle_01.wql index c92d852..c240eac 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_yzjCallEmptyVehicle_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_yzjCallEmptyVehicle_01.wql @@ -51,9 +51,9 @@ WHERE lock_type = '1' AND is_used = '1' - AND is_full = '2' + AND is_full = '0' AND is_delete = '0' - AND point_status = '2' + AND point_status = '3' OPTION 输入.region_code <> "" p.region_code = 输入.region_code ENDOPTION diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java index c091d03..f4dad83 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java @@ -187,7 +187,7 @@ public class FjCallMaterialTask extends AbstractAcsTask { .task_status(TaskStatusEnum.SURE_END.getCode()) .point_code2(point_code2) .vehicle_code(vehicle_code) - .material_info_id(workOrderObj.getLong("workorder_id")) + .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .vehicle_type(vehicle_type) .handle_class(THIS_CLASS) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java index 9125628..20ca49e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java @@ -14,10 +14,9 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.sch.manage.UpdateTaskStatusEnum; +import org.nl.wms.sch.manage.*; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.util.IdUtil; import org.springframework.stereotype.Service; @@ -94,7 +93,7 @@ public class SzCallMaterialTask extends AbstractAcsTask { if (ObjectUtil.isNotEmpty(material_point)) { // 点位解锁 - material_point.put("lock_type", "1"); + material_point.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(material_point); } } @@ -121,17 +120,17 @@ public class SzCallMaterialTask extends AbstractAcsTask { regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("buss_date", DateUtil.today()); - regionIoObj.put("io_type", "2"); // 出库 + regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_OUT.getCode()); // 出库 regionIoObj.put("region_id", material_point.getString("region_id")); regionIoObj.put("region_code", material_point.getString("region_code")); regionIoObj.put("region_name", material_point.getString("region_name")); regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); - regionIoObj.put("bill_status", "3"); + regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code2")); - regionIoObj.put("create_mode", "2"); + regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); @@ -140,18 +139,7 @@ public class SzCallMaterialTask extends AbstractAcsTask { //完成后 // 物料点位解锁 并设置空位 - material_point.put("lock_type", "1"); - material_point.put("point_status", "1"); - material_point.put("task_id", ""); - material_point.put("pcsn", ""); - material_point.put("ivt_qty", "0"); - material_point.put("material_id", ""); - material_point.put("instorage_time", ""); - material_point.put("is_full", "2"); - material_point.put("standing_time", "0"); - material_point.put("vehicle_type", ""); - material_point.put("vehicle_code", ""); - pointTab.update(material_point); + PointUpdateUtil.clearPoint(material_point.getString("point_code")); } } @@ -188,7 +176,7 @@ public class SzCallMaterialTask extends AbstractAcsTask { .task_status(TaskStatusEnum.SURE_END.getCode()) .point_code2(point_code2) .vehicle_code(vehicle_code) - .material_info_id(workOrderObj.getLong("workorder_id")) + .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .vehicle_type(vehicle_type) .handle_class(THIS_CLASS) @@ -231,7 +219,7 @@ public class SzCallMaterialTask extends AbstractAcsTask { JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "' and lock_type = '1'").uniqueResult(0); if (ObjectUtil.isEmpty(material_point)) throw new BadRequestException("数据错误,请校验!"); // 物料点位上锁 - material_point.put("lock_type", "2"); + material_point.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(material_point); taskObj.put("point_code1", material_point.getString("point_code")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java index 10a52c8..f3cdb1a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java @@ -9,22 +9,20 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.nl.config.ConfigParam; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.*; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.util.IdUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.function.BiConsumer; -import java.util.function.Predicate; /** * @author: lyd @@ -36,8 +34,6 @@ import java.util.function.Predicate; @Slf4j public class YzjCallMaterialTask extends AbstractAcsTask { private final String THIS_CLASS = YzjCallMaterialTask.class.getName(); - //start point,[endpoint1,endpoin2] - public static Map YZJ_OLD_POINT = new HashMap<>(); /** * 添加任务进行下发 * @@ -87,7 +83,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask { // 物料点 JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0); //任务取消 - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { // 取消删除任务 if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { throw new BadRequestException("已完成不能取消!"); @@ -96,12 +92,13 @@ public class YzjCallMaterialTask extends AbstractAcsTask { taskObj.put("remark", "已取消"); taskTab.update(taskObj); - // 点位解锁 - material_point.put("lock_type", "1"); + if (ObjectUtil.isEmpty(material_point)) return; + // 解锁 + material_point.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(material_point); } - if ("1".equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("update_time", DateUtil.now()); @@ -109,52 +106,38 @@ public class YzjCallMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); } - if (StrUtil.equals(status, "2")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) { // 更改任务状态为完成 taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); - + if (ObjectUtil.isEmpty(material_point)) return; JSONObject requestObj = task.getJSONObject("request_param"); - - 插入区域表:{ - //区域出入表【st_ivt_regionIO】 - WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); - JSONObject regionIoObj = new JSONObject(); - regionIoObj.put("iostorinv_id", IdUtil.getLongId()); - regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); - regionIoObj.put("buss_date", DateUtil.today()); - regionIoObj.put("io_type", "2"); // 出库 - regionIoObj.put("region_id", material_point.getString("region_id")); - regionIoObj.put("region_code", material_point.getString("region_code")); - regionIoObj.put("region_name", material_point.getString("region_name")); - regionIoObj.put("material_id", taskObj.getString("material_id")); - regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); - regionIoObj.put("qty", requestObj.getString("qty")); - regionIoObj.put("bill_status", "3"); - regionIoObj.put("start_point_code", taskObj.getString("point_code1")); - regionIoObj.put("end_point_code", taskObj.getString("point_code2")); - regionIoObj.put("create_mode", "2"); - regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); - regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); - regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); - regionIoObj.put("create_time", DateUtil.now()); - regionIoTab.insert(regionIoObj); - } + // 区域出入表【st_ivt_regionIO】 + WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); + JSONObject regionIoObj = new JSONObject(); + regionIoObj.put("iostorinv_id", IdUtil.getLongId()); + regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); + regionIoObj.put("buss_date", DateUtil.today()); + regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_OUT.getCode()); // 出库 + regionIoObj.put("region_id", material_point.getString("region_id")); + regionIoObj.put("region_code", material_point.getString("region_code")); + regionIoObj.put("region_name", material_point.getString("region_name")); + regionIoObj.put("material_id", taskObj.getString("material_id")); + regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); + regionIoObj.put("qty", requestObj.getString("qty")); + regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); + regionIoObj.put("start_point_code", taskObj.getString("point_code1")); + regionIoObj.put("end_point_code", taskObj.getString("point_code2")); + regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); + regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); + regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); + regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); + regionIoObj.put("create_time", DateUtil.now()); + regionIoTab.insert(regionIoObj); //完成后 // 物料点位解锁 并设置空位 - material_point.put("lock_type", "1"); - material_point.put("point_status", "1"); - material_point.put("task_id", ""); - material_point.put("pcsn", ""); - material_point.put("ivt_qty", "0"); - material_point.put("material_id", ""); - material_point.put("instorage_time", ""); - material_point.put("is_full", "2"); - material_point.put("standing_time", "0"); - material_point.put("vehicle_type", ""); - material_point.put("vehicle_code", ""); - pointTab.update(material_point); + PointUpdateUtil.clearPoint(material_point.getString("point_code")); } } @@ -181,20 +164,21 @@ public class YzjCallMaterialTask extends AbstractAcsTask { String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除"); - String oldMatSendPoint = ConfigParam.YZJ_OLD_POINT.get(point_code2);//旧料盅终点 - if (StringUtils.isNotEmpty(oldMatSendPoint)){ - point_code2=oldMatSendPoint; - } + SchTaskDto dto = SchTaskDto.builder() .task_id(IdUtil.getLongId()) .task_code(CodeUtil.getNewCode("TASK_CODE")) .task_type("task_type") .task_name("压制机叫料") .material_qty(qty) + .acs_task_type("2") + .vehicle_type(workOrderObj.getString("is_new")) + .workorder_id(workOrderObj.getLong("workorder_id")) .task_status(TaskStatusEnum.SURE_END.getCode()) .point_code2(point_code2) .vehicle_code(vehicle_code) - .material_info_id(workOrderObj.getLong("workorder_id")) + .vehicle_type(workOrderObj.getString("vehicle_type")) + .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .vehicle_type(vehicle_type) .handle_class(THIS_CLASS) @@ -216,25 +200,39 @@ public class YzjCallMaterialTask extends AbstractAcsTask { * @created 2020年6月12日 下午6:01:30 */ @Override + @Transactional(rollbackFor = Exception.class) public void findStartPoint() { - /* + /** * 根据业务找对应的起点,直接到困料货架获取 + * 如果是普通压制机:区分新旧物料、新料有对接位,旧料需要查找放到哪个旧盅货架 + * 如果是液压机:手持呼叫,到困料货架查找相同物料的料盅(这里只能是新料盅) */ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); // 工单表 + WQLObject deviceTab = WQLObject.getWQLObject("PDM_BI_Device"); // 设备表 JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0); for (int i = 0; i < taskArr.size(); i++) { JSONObject taskObj = taskArr.getJSONObject(i); - // 获取工单 + // point_code2是对应的上料点 String point_code2 = taskObj.getString("point_code2"); - String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); - - JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); + JSONObject point = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); + String device_code = point.getString("device_code"); + // 获取工单 + JSONObject workOrderObj = workOrderTab.query("workorder_id = '" + taskObj.getString("workorder_id") + "'").uniqueResult(0); + JSONObject deviceObj = deviceTab.query("device_code = '" + device_code + "'").uniqueResult(0); + if (deviceObj.getString("device_model").equals("3")) { // 普通压制机:区分新旧物料 + // 新物料終点不用修改 + if (workOrderObj.getString("is_new").equals(WorkOrderEnum.IS_OLD_MATERIAL.getCode())) { // 旧物料 + // 查找该设备对应的旧盅位 + JSONObject endPoint = pointTab.query("region_code = 'KLHJ' AND point_type = '4' AND device_code LIKE '%" + + point_code2 + "%' AND point_status = '1' AND is_used = '1' AND is_delete = '0' AND lock_type = '1'").uniqueResult(0); + point_code2 = endPoint.getString("point_code"); // 未锁的旧盅货架位 + } + } String material_id = taskObj.getString("material_id"); - String vehicle_type = taskObj.getString("vehicle_type"); JSONObject queryParam = new JSONObject(); queryParam.put("flag", "1"); queryParam.put("material_id", material_id); @@ -243,23 +241,22 @@ public class YzjCallMaterialTask extends AbstractAcsTask { JSONObject json1 = WQL.getWO("QSCH_yzjCallMaterial_01").addParamMap(queryParam).process().uniqueResult(0); if (ObjectUtil.isNotEmpty(json1)) { // 拿到点位 - JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "' and lock_type = '1'").uniqueResult(0); + JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(material_point)) throw new BadRequestException("数据错误,请校验!"); // 物料点位上锁 - material_point.put("lock_type", "2"); + material_point.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); + material_point.put("task_id", taskObj.getString("task_id")); pointTab.update(material_point); + taskObj.put("point_code2", point_code2); taskObj.put("point_code1", material_point.getString("point_code")); taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - taskObj.put("acs_task_type", "2"); taskObj.put("update_time", DateUtil.now()); - taskTab.update(taskObj); } else { taskObj.put("remark", "困料货架无所需物料"); taskObj.put("update_time", DateUtil.now()); - taskTab.update(taskObj); } - + taskTab.update(taskObj); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql index b4bbdc9..d91c3f6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql @@ -54,7 +54,7 @@ WHERE p.is_used = '1' AND is_delete = '0' - AND lock_type='1' + AND lock_type = '1' AND point_status = '3' OPTION 输入.material_id <> "" p.material_id = 输入.material_id @@ -65,7 +65,7 @@ OPTION 输入.vehicle_type <> "" p.can_vehicle_type like 输入.vehicle_type ENDOPTION - ORDER BY is_full desc,col_num,row_num,layer_num + ORDER BY is_full desc ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_yzjCallMaterial_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_yzjCallMaterial_01.wql index 8a708a4..c324ca2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_yzjCallMaterial_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_yzjCallMaterial_01.wql @@ -49,11 +49,12 @@ FROM SCH_BASE_Point p WHERE - p.is_used = '1' + lock_type = '1' + AND p.is_used = '1' AND standing_time is not null AND now() > DATE_ADD(instorage_time,INTERVAL standing_time MINUTE) AND is_delete = '0' - AND lock_type='1' + AND point_type = '1' AND point_status = '3' OPTION 输入.material_id <> "" p.material_id = 输入.material_id diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java index b62907b..f3c39eb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java @@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.nl.config.ConfigParam; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; @@ -17,9 +16,11 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.PointEnum; import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.UpdateTaskStatusEnum; import org.nl.wms.sch.tasks.AcsTaskDto; -import org.nl.wms.sch.tasks.RegionTypeEnum; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -83,7 +84,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { String point_code2 = taskObj.getString("point_code2"); JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { // 取消删除任务 if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { throw new BadRequestException("已完成不能取消!"); @@ -91,7 +92,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { // 解锁终点位置 if (ObjectUtil.isNotEmpty(point_code2)) { // 未找到终点的取消只需要完成任务就行 JSONObject point2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); - point2.put("lock_type", "1"); + point2.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(point2); } // 任务设置为完成 @@ -100,7 +101,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { taskTab.update(jsonTask); } - if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); jsonTask.put("update_time", DateUtil.now()); @@ -108,7 +109,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { taskTab.update(jsonTask); } - if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) { // 更改任务状态为完成 jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); @@ -117,18 +118,10 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { taskTab.update(jsonTask); // 释放点位 if (ObjectUtil.isNotEmpty(point_code2)) { // 防止只有确定起点的任务完成 - JSONObject point_2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); - point_2.put("lock_type", "1"); - point_2.put("point_status", "2"); - point_2.put("vehicle_code", jsonTask.getString("vehicle_code")); - point_2.put("vehicle_qty", "1"); - point_2.put("instorage_time", DateUtil.now()); - point_2.put("is_full", "1"); - point_2.put("ivt_qty", "0"); - point_2.put("pcsn", ""); - point_2.put("material_id", ""); - point_2.put("standing_time", "0"); - pointTab.update(point_2); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("point_code", point_code2); + jsonObject.put("vehicle_code", jsonTask.getString("vehicle_code")); + PointUpdateUtil.setVehicle(jsonObject); } } } @@ -147,17 +140,13 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 String point_code1 = form.getString("point_code1"); - String oldMatSendPoint = ConfigParam.YZJ_OLD_POINT.get(point_code1);//旧空料盅的回库的话从公共点位返回 - if (StringUtils.isNotEmpty(oldMatSendPoint)){ - point_code1=oldMatSendPoint; - } SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId()) .task_code(CodeUtil.getNewCode("TASK_CODE")) .task_type("") .task_name("压制机空盅入库") .task_status(TaskStatusEnum.SURE_START.getCode()) .point_code1(point_code1) - .vehicle_code(form.getString("vehicle_code")) + .vehicle_code(form.getString("vehicle_code")) // 送空盅需要 .vehicle_type(form.getString("vehicle_type")) .vehicle_qty(form.getIntValue("qty")) .handle_class(THIS_CLASS) @@ -206,7 +195,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { //锁住终点 endPoint.put("task_id", taskObj.getString("task_id")); - endPoint.put("lock_type", "2"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(endPoint); } } @@ -221,7 +210,16 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { */ @Override public void forceFinish(String task_id) { - + /* + * 强制完成 + */ + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) + this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode()); + else { + throw new BadRequestException("未找到该任务或者任务已完成!"); + } } /** @@ -231,6 +229,12 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { */ @Override public void cancel(String task_id) { - + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) + this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode()); + else { + throw new BadRequestException("未找到该任务或者任务已完成!"); + } } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/wql/QSCH_yzjSendEmptyVehicle_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/wql/QSCH_yzjSendEmptyVehicle_01.wql index 92cd9e6..61a4c22 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/wql/QSCH_yzjSendEmptyVehicle_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/wql/QSCH_yzjSendEmptyVehicle_01.wql @@ -54,7 +54,7 @@ WHERE p.is_used = '1' AND is_delete = '0' - AND lock_type='1' + AND lock_type = '1' AND point_status = '1' OPTION 输入.material_id <> "" p.material_id = 输入.material_id diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java index 7c88607..dbfc267 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java @@ -96,7 +96,7 @@ public class FjSendMaterialTask extends AbstractAcsTask { JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject requestObj = task.getJSONObject("request_param"); //工单标识 - String workorder_id = requestObj.getString("material_info_id"); + String workorder_id = requestObj.getString("workorder_id"); //生产工单表【PDM_BD_WorkOrder】 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); @@ -177,7 +177,7 @@ public class FjSendMaterialTask extends AbstractAcsTask { .point_code1(point_code1) .vehicle_code(vehicle_code) .vehicle_type(workOrderObj.getString("vehicle_type")) - .material_info_id(workOrderObj.getLong("workorder_id")) + .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java index 5b882a2..32d350a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java @@ -126,7 +126,7 @@ public class HnSendMaterialTask extends AbstractAcsTask { JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject requestObj = task.getJSONObject("request_param"); // 工单标识 - String workorder_id = taskObj.getString("material_info_id"); + String workorder_id = taskObj.getString("workorder_id"); JSONObject workorderObj = workOrderTab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); // 物料 JSONObject materialObj = materialTab.query("material_id = '" + workorderObj.getString("material_id") + "'").uniqueResult(0); @@ -145,7 +145,7 @@ public class HnSendMaterialTask extends AbstractAcsTask { regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); - regionIoObj.put("is_new", workorderObj.getString("is_new")); + regionIoObj.put("ivt_weight", requestObj.getString("weight")); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code2")); @@ -160,6 +160,7 @@ public class HnSendMaterialTask extends AbstractAcsTask { point2Obj.put("instorage_time", taskObj.getString("create_time")); // 入库时间为任务生成的时间 point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); point2Obj.put("ivt_qty", requestObj.getString("qty")); + point2Obj.put("ivt_weight", requestObj.getString("weight")); point2Obj.put("standing_time", materialObj.getString("standing_time")); point2Obj.put("warn_time", materialObj.getString("warn_time")); point2Obj.put("material_id", workorderObj.getString("material_id")); @@ -186,7 +187,7 @@ public class HnSendMaterialTask extends AbstractAcsTask { String vehicle_code = form.getString("vehicle_code"); String qty = form.getString("qty"); String is_full = form.getString("is_full"); - String weight = form.getString("weight"); // 未存 + String weight = form.getString("weight"); //任务表【SCH_BASE_Task】 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); //判断当前点是否有未完成的任务 @@ -212,7 +213,7 @@ public class HnSendMaterialTask extends AbstractAcsTask { .point_code1(point_code1) .vehicle_code(vehicle_code) .vehicle_type(workOrderObj.getString("vehicle_type")) - .material_info_id(workOrderObj.getLong("workorder_id")) + .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) @@ -235,7 +236,8 @@ public class HnSendMaterialTask extends AbstractAcsTask { public void findNextPoint() { /** * 根据业务找到相应的终点 - * 高速混碾机下料先找高速压制机旁边的三个困料位,没有位置则去公共货架 + * 高速混碾机下料先判断高速压制机的工单生产的是不是相同的,是的话判断坤料货架是否有相同物料, + * 没有就去旁边的三个困料位,没有位置则去公共货架;工单不同或者困料货架没有相同物料则去公共货架 * 普通混碾机下料直接送到公共困料货架 */ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); @@ -243,12 +245,47 @@ public class HnSendMaterialTask extends AbstractAcsTask { JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '2'").getResultJSONArray(0); for (int i = 0; i < taskArr.size(); i++) { JSONObject taskObj = taskArr.getJSONObject(i); - String vehicle_type = taskObj.getString("vehicle_type");//混碾载具类型新旧料? 工單不提供载具类型 + // 找生产改物料的液压机的工单 + JSONObject paramObj = new JSONObject(); + paramObj.put("flag", "1"); + paramObj.put("material_id", taskObj.getString("material_id")); + JSONArray workerOrders = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(paramObj).process().getResultJSONArray(0); + for (int j = 0; j < workerOrders.size(); j++) { + JSONObject workerOrder = workerOrders.getJSONObject(j); + // 判断仓库是否有该物料 + JSONObject param2 = new JSONObject(); + param2.put("flag", "2"); + param2.put("material_id", workerOrder.getString("material_id")); + param2.put("point_type", "1"); // 公用货架 + param2.put("point_status", PointEnum.POINT_STATUS_HAVE_MATERIAL.getCode()); // 有料 + JSONArray ivts = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(param2).process().getResultJSONArray(0); + if (ivts.size() > 0) continue; + // 判断是否有空位 + JSONObject param3 = new JSONObject(); + param3.put("flag", "2"); + param3.put("device_code", workerOrder.getString("device_code")); + param3.put("point_type", "2"); // 液压机旁边三个位置 + param3.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode()); // 空位 + JSONObject endPoint = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(param3).process().uniqueResult(0); + if (ObjectUtil.isEmpty(endPoint)) continue; + + // 找到位置就可以直接搬 + taskObj.put("update_time", DateUtil.now()); + taskObj.put("point_code2", endPoint.getString("point_code")); + taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + taskTab.update(taskObj); + + // 点位上锁 + endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); + endPoint.put("task_id", taskObj.getString("task_id")); + pointTab.update(endPoint); + return; + } + // 其他情况直接搬到困料货架上 JSONObject param1 = new JSONObject(); - param1.put("flag", "1"); + param1.put("flag", "3"); param1.put("region_code", "KLHJ"); - param1.put("vehicle_type", "%" + vehicle_type + "%"); - //1、查找困料货架是否有响应的载具类型和对应的物料 + // 查找困料货架 JSONObject endPoint = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(param1).process().uniqueResult(0); if (ObjectUtil.isEmpty(endPoint)) { taskObj.put("remark", "困料货架无可用货位"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SendMaterialTask.java index 1e0f711..314a234 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SendMaterialTask.java @@ -111,7 +111,7 @@ public class SendMaterialTask extends AbstractAcsTask { JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject requestObj = task.getJSONObject("request_param"); //工单标识 - String workorder_id = requestObj.getString("material_info_id"); + String workorder_id = requestObj.getString("workorder_id"); //生产工单表【PDM_BD_WorkOrder】 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); @@ -193,7 +193,7 @@ public class SendMaterialTask extends AbstractAcsTask { .point_code1(point_code1) .vehicle_code(vehicle_code) .vehicle_type(workOrderObj.getString("vehicle_type")) - .material_info_id(workOrderObj.getLong("workorder_id")) + .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java index 0bb88e4..e040b51 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java @@ -117,7 +117,7 @@ public class SzSendMaterialTask extends AbstractAcsTask { JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject requestObj = task.getJSONObject("request_param"); //工单标识 - String workorder_id = requestObj.getString("material_info_id"); + String workorder_id = requestObj.getString("workorder_id"); //生产工单表【PDM_BD_WorkOrder】 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); @@ -199,7 +199,7 @@ public class SzSendMaterialTask extends AbstractAcsTask { .point_code1(point_code1) .vehicle_code(vehicle_code) .vehicle_type(workOrderObj.getString("vehicle_type")) - .material_info_id(workOrderObj.getLong("workorder_id")) + .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java index d2a902f..d4ba8a7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java @@ -14,8 +14,7 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.*; import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.util.IdUtil; import org.springframework.stereotype.Service; @@ -81,15 +80,15 @@ public class YzjSendMaterialTask extends AbstractAcsTask { JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); //任务取消 - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { // 取消删除任务 if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { throw new BadRequestException("已完成不能取消!"); } String point_code2 = taskObj.getString("point_code2"); - if (ObjectUtil.isEmpty(point_code2)) { + if (ObjectUtil.isNotEmpty(point_code2)) { JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); - endPoint.put("lock_type", "1"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(endPoint); } taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); @@ -97,7 +96,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); } - if ("1".equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("update_time", DateUtil.now()); @@ -105,7 +104,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); } - if (StrUtil.equals(status, "2")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) { // 更改任务状态为完成 taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("update_optid", SecurityUtils.getCurrentUserId()); @@ -115,9 +114,10 @@ public class YzjSendMaterialTask extends AbstractAcsTask { String point_code2 = taskObj.getString("point_code2"); JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(point2Obj)) return; JSONObject requestObj = task.getJSONObject("request_param"); //工单标识 - String workorder_id = requestObj.getString("material_info_id"); + String workorder_id = requestObj.getString("workorder_id"); //生产工单表【PDM_BD_WorkOrder】 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); @@ -128,17 +128,18 @@ public class YzjSendMaterialTask extends AbstractAcsTask { regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("buss_date", DateUtil.today()); - regionIoObj.put("io_type", "1"); // 入库 + regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_IN.getCode()); // 入库 regionIoObj.put("region_id", point2Obj.getString("region_id")); regionIoObj.put("region_code", point2Obj.getString("region_code")); regionIoObj.put("region_name", point2Obj.getString("region_name")); regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); - regionIoObj.put("bill_status", "3"); + regionIoObj.put("ivt_weight", requestObj.getString("weight")); + regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code3")); - regionIoObj.put("create_mode", "2"); + regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); @@ -149,15 +150,18 @@ public class YzjSendMaterialTask extends AbstractAcsTask { point2Obj.put("instorage_time", DateUtil.now()); point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); point2Obj.put("ivt_qty", requestObj.getString("qty")); + point2Obj.put("ivt_weight", requestObj.getString("weight")); point2Obj.put("standing_time", workorderObj.getString("standing_time")); + point2Obj.put("warn_time", workorderObj.getString("warn_time")); point2Obj.put("material_id", workorderObj.getString("material_id")); point2Obj.put("vehicle_type", workorderObj.getString("vehicle_type")); point2Obj.put("vehicle_code", taskObj.getString("vehicle_code")); + point2Obj.put("vehicle_qty", "1"); // 入库为1个载具 point2Obj.put("is_full", requestObj.getString("is_full")); - - // 终点解锁 - point2Obj.put("lock_type", "1"); - point2Obj.put("point_status", "3"); + point2Obj.put("group_id", taskObj.getString("group_id")); // 组盘标识 + // 解锁终点 + point2Obj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); + point2Obj.put("point_status", PointEnum.POINT_STATUS_HAVE_MATERIAL.getCode()); pointTab.update(point2Obj); } } @@ -198,8 +202,9 @@ public class YzjSendMaterialTask extends AbstractAcsTask { .task_status(TaskStatusEnum.SURE_START.getCode()) .point_code1(point_code1) .vehicle_code(vehicle_code) - .vehicle_type(workOrderObj.getString("vehicle_type")) - .material_info_id(workOrderObj.getLong("workorder_id")) + .group_id(form.getLong("group_id")) + .vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode()) + .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) @@ -247,11 +252,9 @@ public class YzjSendMaterialTask extends AbstractAcsTask { //锁住终点 endPoint.put("task_id", taskObj.getString("task_id")); - endPoint.put("lock_type", "2"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(endPoint); } - - } } @@ -270,7 +273,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"2"); + this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode()); else { throw new BadRequestException("未找到该任务或者任务已完成!"); } @@ -286,7 +289,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"0"); + this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode()); else { throw new BadRequestException("未找到该任务或者任务已完成!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_hnSendMaterial_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_hnSendMaterial_01.wql index b9158ab..813b6ec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_hnSendMaterial_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_hnSendMaterial_01.wql @@ -14,9 +14,12 @@ ## 表字段对应输入参数 ################################################# 输入.flag TYPEAS s_string - 输入.region_code TYPEAS s_string - 输入.material_id TYPEAS s_string + 输入.region_code TYPEAS s_string + 输入.material_id TYPEAS s_string 输入.vehicle_type TYPEAS s_string + 输入.device_code TYPEAS s_string + 输入.point_type TYPEAS s_string + 输入.point_status TYPEAS s_string [临时表] @@ -40,7 +43,49 @@ ########################################## # 3、业务主过程 # ########################################## -IF 输入.flag = "1" + IF 输入.flag = "1" + QUERY + SELECT + workorder.* + FROM + pdm_bd_workorder workorder + LEFT JOIN pdm_bi_device device ON device.device_code = workorder.device_code + WHERE + workorder.order_status = '3' + AND + device.device_model = '4' + OPTION 输入.material_id <> "" + workorder.material_id = 输入.material_id + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + * + FROM + `sch_base_point` + WHERE + lock_type = '1' + AND region_code = 'KLHJ' + AND is_used = '1' + AND is_delete = '0' + OPTION 输入.material_id <> "" + material_id = 输入.material_id + ENDOPTION + OPTION 输入.point_type <> "" + point_type = 输入.point_type + ENDOPTION + OPTION 输入.point_status <> "" + point_status = 输入.point_status + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" QUERY SELECT p.point_id, @@ -49,13 +94,10 @@ IF 输入.flag = "1" FROM SCH_BASE_Point p WHERE - lock_type = '1' - AND is_used = '1' + lock_type = '1' + AND is_used = '1' AND is_delete = '0' AND point_status = '1' - OPTION 输入.vehicle_type <> "" - p.can_vehicle_type like 输入.vehicle_type - ENDOPTION OPTION 输入.region_code <> "" p.region_code = 输入.region_code ENDOPTION 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 50ef193..1936aed 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/login.vue b/lms/nladmin-ui/src/views/login.vue index caa6d06..b246c98 100644 --- a/lms/nladmin-ui/src/views/login.vue +++ b/lms/nladmin-ui/src/views/login.vue @@ -56,8 +56,8 @@ export default { codeUrl: '', cookiePass: '', loginForm: { - username: 'admin', - password: '123456', + username: '', + password: '', rememberMe: false, code: '', uuid: ''