diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java index 6ab7d015..40b596a8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/TableDataInfo.java @@ -73,7 +73,7 @@ public class TableDataInfo implements Serializable { public static TableDataInfo build() { TableDataInfo rspData = new TableDataInfo<>(); rspData.setCode(HttpStatus.HTTP_OK); - rspData.setMsg("查询成功"); + rspData.setMsg("操作成功"); return rspData; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java index 56aa2df2..5966ffe9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java @@ -45,7 +45,9 @@ public enum AcsTaskEnum { TASK_WASH_EMP("21","清洗机-空叫空框"), TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位 TASK_WASH_FULL_QZ("23","清洗机-满料请求强制"),//去异常位: - TASK_POINT_TO_POINT("99","点对点搬运"),//去异常位: + TASK_Engrave_CALL("24","刻字机上料"), + TASK_Engrave_EMPTY("25","刻字输送线-空框送回"), + TASK_POINT_TO_POINT("99","点对点搬运"), //回调状态 STATUS_START("1","执行中"), @@ -54,8 +56,8 @@ public enum AcsTaskEnum { //专机请求 REQUEST_CALLTYPE_FULL("2","专机满料请求"), REQUEST_CALLTYPE_EMP("1","专机缺料请求"), - REQUEST_PLOTTER_SEND_FULL("3","刻字满料请求"),//ok - REQUEST_PLOTTER_CALL_EMP("4","刻字空框请求"),//ok + REQUEST_PLOTTER_SEND_FULL("3","刻字机满料请求"),//ok + REQUEST_PLOTTER_CALL_EMP("4","刻字机空框请求"),//ok REQUEST_WARP_CALL_FULL("5","包装缺料请求"),//ok REQUEST_WARP_SEND_EMP("6","包装送空框请求"),//ok REQUEST_WASH_SEND_MATERIAL("7","储料仓上料"),//深坑->清洗:相同物料的重量<150公斤; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/publish/event/PointEvent.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/publish/event/PointEvent.java index d7ee3abc..a149f09f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/publish/event/PointEvent.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/publish/event/PointEvent.java @@ -26,6 +26,6 @@ public class PointEvent extends PublishEvent { private String vehicle_code; private String product_area; private String task_group_id; - private Map extParam; + private Map extParam; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/AcsUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/AcsUtil.java index b8e70b69..d86ec196 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/AcsUtil.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/AcsUtil.java @@ -48,7 +48,7 @@ public class AcsUtil { } catch (Exception e) { log.info("ACS反馈异常----------------------------------------+"+api+",---"+e.getMessage()); - throw new BadRequestException("网络不同"); + throw new BadRequestException("acs:网络不同"); } //acs抛异常这里 if (api.equals("api/wms/task")){ @@ -59,7 +59,7 @@ public class AcsUtil { if (errorArr !=null && errorArr.size()>0){ errorList = errorArr.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.toList()); } - result.put("message", result.getString("message")); + result.put("message", "acs:"+result.getString("message")); result.put("data", new JSONObject()); }else { result.put("status", "200"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/rest/AcsToWmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/rest/AcsToWmsController.java index 6a160338..20472e0a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/rest/AcsToWmsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/rest/AcsToWmsController.java @@ -47,7 +47,6 @@ public class AcsToWmsController { @PostMapping("/receiveTaskIdToCacheLine") @Log("acs给wms发送缓存线的实时任务编号") - //("acs给wms发送缓存线的实时任务编号") @SaIgnore public ResponseEntity receiveTaskIdToCacheLine(@RequestBody JSONObject whereJson) { //参数校验 @@ -59,7 +58,6 @@ public class AcsToWmsController { @PostMapping("/status") @Log("ACS给WMS反馈任务状态") - //("ACS给WMS反馈任务状态") @SaIgnore public ResponseEntity status(@RequestBody String string) { return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK); @@ -67,7 +65,6 @@ public class AcsToWmsController { @PostMapping("/orderStatus") @Log("ACS给WMS下发工单完成状态") - //("ACS给WMS下发工单完成状态") @SaIgnore public ResponseEntity orderStatus(@RequestBody JSONObject param) { return new ResponseEntity<>(acsToWmsService.orderStatus(param), HttpStatus.OK); @@ -82,14 +79,11 @@ public class AcsToWmsController { } @PostMapping("/feedDeviceStatusType") - //("向wms反馈设备状态") @SaIgnore public ResponseEntity feedDeviceStatusType(@RequestBody JSONObject param) { return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(param), HttpStatus.OK); } - - @PostMapping("/feedDeviceQty") //("向wms反馈设备实时数量") @SaIgnore diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AcsToWmsServiceImpl.java index 1f8a4a2b..46ace41a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AcsToWmsServiceImpl.java @@ -121,6 +121,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ * @returnzss */ @Override + @Transactional public Map receiveTaskStatusAcs(String string) { JSONArray array = JSONArray.parseArray(string); //返回处理失败的任务 @@ -140,11 +141,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ taskHandler.updateTaskStatus(row,status); } } - //发布一个任务执行事件:服务跟任务不一样,可以同事存在 TaskEvent event = TaskEvent.builder() .task_id(task_id) .task_type(one.getTask_type()) .status(status) + .extParam(row.get("ext_param")!=null?(Map)row.get("ext_param"):null) .build(); BussEventMulticaster.Publish(event); } catch (Exception e) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AgvInstService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AgvInstService.java index 78e6c7ed..350865aa 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AgvInstService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AgvInstService.java @@ -51,8 +51,7 @@ public class AgvInstService { private IPdmBiDeviceService deviceService; @Autowired private ISchBaseTaskService taskService; - @Autowired - private IPdmProduceWorkorderService workorderService; + @Autowired private ISchCachelineVehilematerialService cachelineVehicleService; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/WmsToAcsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/WmsToAcsServiceImpl.java index 8567ecd0..b61e5715 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/WmsToAcsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/WmsToAcsServiceImpl.java @@ -37,6 +37,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{ , "barcodeArr", task.getString("barcodeArr") , "qtyArr", task.getString("qtyArr") , "proprity_floor", "2" + , "in_pcsn", task.getString("task_code") , "agv_system_type", task.getString("agv_system_type") )); form.add(param); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/storage/StructattrController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/storage/StructattrController.java index b778817e..eebad369 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/storage/StructattrController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/controller/storage/StructattrController.java @@ -81,6 +81,15 @@ public class StructattrController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + @PutMapping("/changeEmp") + @Log("修改仓位状态") + //("修改仓位状态") + public ResponseEntity changeEmp(@RequestBody JSONObject json) { + ivtStructattrService.changeEmp(json); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/getSectCascader") @Log("查询联级仓位") //("查询联级仓位") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/IStIvtStructattrService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/IStIvtStructattrService.java index fd21b982..7cafb46e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/IStIvtStructattrService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/IStIvtStructattrService.java @@ -36,6 +36,8 @@ public interface IStIvtStructattrService extends IService { */ void changeActive(JSONObject json); + void changeEmp(JSONObject json); + /** * 查询库区下的仓位 * @param jo diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/impl/StIvtStructattrServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/impl/StIvtStructattrServiceImpl.java index f9c7b34e..84af8fa2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/impl/StIvtStructattrServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/impl/StIvtStructattrServiceImpl.java @@ -138,6 +138,22 @@ public class StIvtStructattrServiceImpl extends ServiceImpl().eq("sect_id", form.getString("sect_id"))); + if (!sectarr.getIs_used()){ + throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!"); + } + + this.update(new UpdateWrapper() + .set("is_emptyvehicle",form.getBoolean("is_emptyvehicle")) + .set("update_id",SecurityUtils.getCurrentUserId()) + .set("update_name",SecurityUtils.getCurrentNickName()) + .set("update_time",new Date()) + .eq("struct_id",form.getString("struct_id"))); + } + @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void lockStruct(String struct_code, String type, String inv_code) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/备份st/StoreIvtServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/备份st/StoreIvtServiceImpl.java index 6405a5d4..f96b1c95 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/备份st/StoreIvtServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/备份st/StoreIvtServiceImpl.java @@ -47,7 +47,7 @@ public class StoreIvtServiceImpl { param.put("material_id", disObj.getString("material_id")); param.put("pcsn", disObj.getString("pcsn")); //先默认写死,只有一个仓库 - param.put("stor_id", "1528627995269533696"); + param.put("stor_id", "15286279952695336962"); param.put("change_type_scode",changeType.getIndex()); param.put("inv_id", disObj.getString("bill_id")); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/deliveryorder/service/IPcsDeliveryOrderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/deliveryorder/service/IPcsDeliveryOrderService.java index cf4ac5a4..3246f157 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/deliveryorder/service/IPcsDeliveryOrderService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/deliveryorder/service/IPcsDeliveryOrderService.java @@ -2,8 +2,15 @@ package org.nl.wms.mps_manage.deliveryorder.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.anno.Log; import org.nl.wms.mps_manage.deliveryorder.service.dao.PcsDeliveryOrder; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @@ -26,4 +33,6 @@ public interface IPcsDeliveryOrderService extends IService { void update(JSONObject form); List queryAll(Map whereJson); + + void excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/deliveryorder/service/impl/PcsDeliveryOrderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/deliveryorder/service/impl/PcsDeliveryOrderServiceImpl.java index f9464875..8847b4b8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/deliveryorder/service/impl/PcsDeliveryOrderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/deliveryorder/service/impl/PcsDeliveryOrderServiceImpl.java @@ -17,7 +17,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -87,4 +89,9 @@ public class PcsDeliveryOrderServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper() .eq("workprocedure_id", "1535144552481034240") - .eq("is_used", true) .eq("product_area",query.getString("product_area")); if (StringUtils.isNotEmpty(query.getString("material_id"))){ queryWrapper.eq("material_id",query.getString("material_id")); @@ -100,56 +106,76 @@ public class PdaWashController { List> list = iDeviceService.listMaps(queryWrapper); if (!CollectionUtils.isEmpty(list)){ Set materials = list.stream().map(a->a.get("material_id")).collect(Collectors.toSet()); - Set devices = list.stream().map(a->a.get("device_code")).collect(Collectors.toSet()); - HashMap taskMap = taskService.list(new QueryWrapper().in("point_code2", devices) - .eq("task_status", StatusEnum.TASK_RUNNING.getCode())) - .stream().collect(HashMap::new, (k, v) -> k.put(v.getPoint_code2(), v), HashMap::putAll); + List devices = list.stream().map(a->a.get("device_code")).collect(Collectors.toList()); + List regexpTask = taskService.pointRegexp(devices); Map materialMap = materialbaseService.list(new QueryWrapper() .in("material_id", materials)) .stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_id(), v), HashMap::putAll); for (Map pdmBiDevice : list) { MdMeMaterialbase materialbase = materialMap.get(pdmBiDevice.get("material_id")); - SchBaseTask baseTask = taskMap.get(pdmBiDevice.get("device_code")); + String taskCodes = regexpTask.stream().filter(schBaseTask -> { + Boolean result = false; + if (StringUtils.isNotEmpty(schBaseTask.getPoint_code1())) { result = result || schBaseTask.getPoint_code1().contains((String) pdmBiDevice.get("device_code")); } + if (StringUtils.isNotEmpty(schBaseTask.getPoint_code2())) { result = result || schBaseTask.getPoint_code2().contains((String) pdmBiDevice.get("device_code")); } + return result; + }).map(SchBaseTask::getTask_code).collect(Collectors.joining(",")); pdmBiDevice.put("material_name",materialbase!=null?materialbase.getMaterial_name():""); pdmBiDevice.put("material_code",materialbase!=null?materialbase.getMaterial_code():""); pdmBiDevice.put("material_spec",materialbase!=null?materialbase.getMaterial_spec():""); - pdmBiDevice.put("task_code",baseTask!=null?baseTask.getTask_code():""); + pdmBiDevice.put("task_code",taskCodes); } } return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); } @PostMapping("/submitWash") - @Log("提交清洗") + @Log("确认上料") @SaIgnore public ResponseEntity submitWash(@RequestBody String[] devices) { if (devices.length>0){ - List list = iDeviceService.list(new QueryWrapper() - .eq("workprocedure_id", "1535144552481034240") - .in("device_code", devices)); - Set collect = list.stream().map(PdmBiDevice::getMaterial_id).collect(Collectors.toSet()); - if (!CollectionUtils.isEmpty(collect)){ - if (collect.size()>1){ - throw new BadRequestException("选择的储料仓必须是相同物料"); - } - double sum = list.stream().mapToDouble(a->a.getDeviceinstor_weight().doubleValue()).sum(); - if (sum>LIMIT_WEIGHT){ - throw new BadRequestException("选择的储料仓必物料总重量大于150公斤"); - } - //生成生坑清洗爬坡任务 - try { - JSONObject param = new JSONObject(MapOf.of("devices", list)); - RedissonUtils.lock( () -> washMachineryTask.createTask(param), "allocation:A1_SKQX", null); - }catch (Exception ex){ - log.error("清洗上料任务失败:{}",ex); - throw new BadRequestException("任务创建失败:"+ex.getMessage()); - } + List list = checkSubmit(devices); + //生成生坑清洗爬坡任务 + try { + JSONObject param = new JSONObject(MapOf.of("devices", list)); + RedissonUtils.lock( () -> washMachineryTask.createTask(param), "allocation:A1_SKQX", null); + }catch (Exception ex){ + log.error("清洗上料任务失败:{}",ex); + throw new BadRequestException("任务创建失败:"+ex.getMessage()); } + } - return new ResponseEntity<>(HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } - /*-----------------倒料---------------------*/ + @NotNull + private List checkSubmit(String[] devices) { + List tasks = taskService.pointRegexp(Arrays.asList(devices)); + if (!CollectionUtils.isEmpty(tasks)){ + throw new BadRequestException("选择的储料仓存在正在执行的任务:"+tasks.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); + } + List list = iDeviceService.list(new QueryWrapper() + .eq("workprocedure_id", "1535144552481034240").eq("is_used",true) + .in("device_code", devices)); + if (list.size()< devices.length){ + String unUsed = Arrays.stream(devices).filter(a -> + list.stream().map(PdmBiDevice::getDevice_code). + collect(Collectors.toList()).contains(a)) + .collect(Collectors.joining(",")); + throw new BadRequestException("选择的储料仓"+unUsed+"存在清洗未完成的任务"); + } + Set collect = list.stream().map(PdmBiDevice::getMaterial_id).collect(Collectors.toSet()); + + if (collect.size()>1){ + throw new BadRequestException("选择的储料仓必须是相同物料"); + } + double sum = list.stream().mapToDouble(a->a.getDeviceinstor_weight().doubleValue()).sum(); + if (sum>LIMIT_WEIGHT){ + throw new BadRequestException("选择的储料仓必物料总重量大于150公斤"); + } + return list; + } + + /*-----------------倒料---------------------*/ @PostMapping("/weighing") @Log("称重") @@ -186,7 +212,7 @@ public class PdaWashController { .set("remark","") .set("deviceinstor_weight",form.getBigDecimal("deviceinstor_weight")) .eq("device_code",device_code)); - return new ResponseEntity<>(HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } @PostMapping("/materialList") @@ -208,30 +234,44 @@ public class PdaWashController { @SaIgnore public ResponseEntity washTasks(@RequestBody JSONObject query) { List> taskMap = taskService.listMaps(new QueryWrapper() - .eq("task_status", StatusEnum.TASK_FINISH.getCode()).eq("task_step", 2)); + .eq("task_status", StatusEnum.TASK_FINISH.getCode()).eq("task_step", 2).orderByDesc("update_time")); if (!CollectionUtils.isEmpty(taskMap)){ Set materials = taskMap.stream().map(a->a.get("material_id")).collect(Collectors.toSet()); Map materialMap = materialbaseService.list(new QueryWrapper() .in("material_id", materials)) .stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_id(), v), HashMap::putAll); - for (Map task : taskMap) { + int i = 1; + for (Map task : taskMap) {//create_time MdMeMaterialbase materialbase = materialMap.get(task.get("material_id")); task.put("material_name",materialbase!=null?materialbase.getMaterial_name():""); task.put("material_code",materialbase!=null?materialbase.getMaterial_code():""); task.put("material_spec",materialbase!=null?materialbase.getMaterial_spec():""); + task.put("create_time",task.get("create_time").toString()); + task.put("sep_on",i); + i++; } } return new ResponseEntity<>(TableDataInfo.build(taskMap),HttpStatus.OK); } - @PostMapping("//washTaskFinish") + + @PostMapping("/washFinish") + @Log("确认下料") + @SaIgnore + public ResponseEntity washFinish(@RequestBody JSONObject query) { + washSendMaterialTask.createTask(query); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + } + + + @PostMapping("/washTaskFinish") @Log("强制完成任务") @SaIgnore public ResponseEntity washTaskFinish(@RequestBody JSONObject query) { taskService.update(new UpdateWrapper() .set("task_step",3) .eq("task_id",query.getString("task_id"))); - return new ResponseEntity<>(HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } @@ -241,7 +281,7 @@ public class PdaWashController { public ResponseEntity washVechileInfo(@RequestBody JSONObject query) { JSONObject req = new JSONObject(); req.put("device_code","A1_CPQXJ_01_X"); - JSONObject result = wmsToAcsService.request(req, "api/wms/handWeight"); + JSONObject result = wmsToAcsService.request(req, "api/wms/cleanPut"); if (!StrUtil.equals(result.getString("status"), "200")) { throw new BadRequestException((String)result.get("message")); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/TmpKZController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/TmpKZController.java index 21fce5c4..142f7939 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/TmpKZController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/controller/TmpKZController.java @@ -70,14 +70,14 @@ public class TmpKZController { if (!StrUtil.equals(result.getString("status"), "200")) { throw new BadRequestException((String)result.get("message")); } - return new ResponseEntity<>( HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } @PostMapping("callVechile") @SaIgnore public ResponseEntity callVechile(@RequestBody JSONObject param){ plotterCallEmptyTask.callEmpVechile(param.getString("device_code")); - return new ResponseEntity<>( HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } //鞋料 @@ -90,7 +90,7 @@ public class TmpKZController { if (!StrUtil.equals(result.getString("status"), "200")) { throw new BadRequestException((String)result.get("message")); } - return new ResponseEntity<>( HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } @PostMapping("kzresidue") @SaIgnore @@ -105,7 +105,7 @@ public class TmpKZController { throw new BadRequestException((String)result.get("message")); } },"kzresidue",null); - return new ResponseEntity<>( HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } @PostMapping("tmpcallVechile") @SaIgnore @@ -120,8 +120,8 @@ public class TmpKZController { } moveTask.put("task_status",StatusEnum.TASK_FINISH.getCode()); taskService.save(moveTask.toJavaObject(SchBaseTask.class)); - },"刻字上料呼叫载具",null); - return new ResponseEntity<>( HttpStatus.OK); + },"刻字上料送载具",null); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } @PostMapping("tmpsendVechile") @SaIgnore @@ -137,7 +137,7 @@ public class TmpKZController { moveTask.put("task_status",StatusEnum.TASK_FINISH.getCode()); taskService.save(moveTask.toJavaObject(SchBaseTask.class)); },"刻字上料送载具",null); - return new ResponseEntity<>( HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml index 83a51154..3286477d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml @@ -55,7 +55,7 @@ LEFT JOIN md_me_materialbase ON sch_base_task.material_id = md_me_materialbase.material_id where sch_base_point.point_type = '4' and pdm_bi_device.is_used = true - AND pdm_bi_device.is_used = true + AND pdm_bi_device.is_used = true and is_artificial = false and workprocedure_id = #{workprocedure_id} and (pdm_bi_device.material_id = #{material_id} or pdm_bi_device.material_id is null or pdm_bi_device.material_id = '') diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/processroute/impl/PdmBiProcessrouteServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/processroute/impl/PdmBiProcessrouteServiceImpl.java index 9fdcb26f..89c70e26 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/processroute/impl/PdmBiProcessrouteServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/processroute/impl/PdmBiProcessrouteServiceImpl.java @@ -1,3 +1,4 @@ + package org.nl.wms.product_manage.service.processroute.impl; import cn.hutool.core.date.DateUtil; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java index 1f22a4e8..99fc7538 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto; import org.nl.wms.product_manage.service.workorder.dto.ReportQuery; import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery; import org.springframework.data.domain.Pageable; @@ -102,6 +103,13 @@ public interface IPdmProduceWorkorderService extends IService getOrderList(Map param, Pageable page); + + /** + * 根据工序查询满足来料仓要求的设备工单 + * @param param + * @return + */ + List getOrderByDevLimit(Map param); /** * 开工操作 * diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java index d3122bc4..198e9302 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto; import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery; import java.util.List; @@ -27,4 +28,6 @@ public interface PdmProduceWorkorderMapper extends BaseMapper orderList(Map qeury); + List orderListByDevLimit(Map qeury); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml index f4a23657..8c68bc85 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml @@ -117,6 +117,23 @@ order by workorder_code desc + update PDM_produce_workOrder set diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/PdmProduceWorkorderDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/PdmProduceWorkorderDto.java new file mode 100644 index 00000000..25ddc4aa --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/PdmProduceWorkorderDto.java @@ -0,0 +1,41 @@ +package org.nl.wms.product_manage.service.workorder.dto; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 生产工单表 + *

+ * + * @author generator + * @since 2023-04-26 + */ +@Data +public class PdmProduceWorkorderDto extends PdmProduceWorkorder { + + + /** + * 工单需要数量 + */ + private BigDecimal needQty; + /** + * 材料仓需要数量 + */ + private BigDecimal limitQty; + /** + * 来料仓实时数 + */ + private BigDecimal deviceinstor_qty; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index cd377107..cd128742 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -31,6 +31,7 @@ import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.mps_manage.other.service.dto.ProduceshiftorderDto; import org.nl.wms.product_manage.service.workorder.dao.WorkorderRecord; +import org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto; import org.nl.wms.scheduler_manage.ReportEnum; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; @@ -835,6 +836,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl getOrderByDevLimit(Map param) { + return this.baseMapper.orderListByDevLimit(param); + } + @Override public void updateReport(JSONObject param) { Assert.notNull(param, "参数不能为空"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/task/TaskController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/task/TaskController.java index 753c0182..aa121357 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/task/TaskController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/task/TaskController.java @@ -1,5 +1,6 @@ package org.nl.wms.scheduler_manage.controller.task; +import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -13,6 +14,7 @@ import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; import org.nl.common.domain.query.PageQuery; import org.nl.common.enums.StatusEnum; +import org.nl.wms.scheduler_manage.service.scheduler.EngraveScheduleService; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.nl.wms.system_manage.service.dict.ISysDictService; @@ -44,6 +46,9 @@ public class TaskController { @Autowired private ISchBaseTaskService baseTaskService; + @Autowired + private EngraveScheduleService engraveScheduleService; + @GetMapping @Log("查询任务") //("查询任务") @@ -137,5 +142,12 @@ public class TaskController { baseTaskService.operation(map); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + + @PutMapping("/engraveScheduleService") + @SaIgnore + public ResponseEntity engraveScheduleService() { + engraveScheduleService.EngravePublish(); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveCallMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveCallMaterialTask.java new file mode 100644 index 00000000..f6e8133e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveCallMaterialTask.java @@ -0,0 +1,178 @@ +package org.nl.wms.scheduler_manage.service.extendtask.Engrave; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.enums.StatusEnum; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.MapOf; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.ext_manage.acs.service.WmsToAcsService; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; +import org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto; +import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask; +import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/* + * @author ZZQ + * @Date 2023/7/19 20:23 + */ +@Service +public class EngraveCallMaterialTask extends AbstractAcsTask { + private static final String ENGRAVE_WORKPRODURE = "1535144682756116480"; + + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private IPdmProduceWorkorderService workorderService; + @Autowired + private IMdMeMaterialbaseService materialbaseService; + @Autowired + private WmsToAcsService wms; + + @Override + public void updateTaskStatus(JSONObject param, String status) { + SchBaseTask taskDao = taskService.getOne(new QueryWrapper() + .eq("task_id",param.getString("task_id"))); + if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { + taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode()); + } + if (status.equals(AcsTaskEnum.STATUS_START.getCode())) { + taskDao.setTask_status(TaskStatusEnum.EXECUTING.getCode()); + } + if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) { + taskDao.setTask_status(TaskStatusEnum.CANCEL.getCode()); + } + taskService.updateById(taskDao); + } + + + @Override + @Transactional + public String createTask(JSONObject param) { + if (!param.getString("status").equals(AcsTaskEnum.STATUS_FINISH.getCode())){ return null; } + SchBaseTask one = taskService.getOne(new QueryWrapper() + .eq("task_id", param.getString("task_id"))); + SchBaseTask runTask = taskService.getOne(new QueryWrapper() + .eq("point_code1", "A1_KZ_SL") + .eq("task_type",AcsTaskEnum.TASK_Engrave_CALL.getCode()) + .lt("task_status", StatusEnum.TASK_FINISH.getCode())); + if (runTask!=null){ + if (one.getTask_id().equals(runTask.getTask_id())){ + return ""; + }else { + runTask.setTask_status(StatusEnum.TASK_CANNEL.getCode()); + runTask.setUpdate_time(new Date()); + runTask.setCreate_name("mes取消"); + runTask.setRemark("刻字上料关联搬运任务"+one.getTask_code()+"不正确,任务强制取消并从新生产"); + taskService.updateById(runTask); + } + } + BigDecimal canuse_qty; + MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper() + .eq("material_id",one.getMaterial_id()) + .eq("is_delete", false)); + + Map extParam = (Map) param.get("extParam"); + if (extParam == null || extParam.get("weight") == null){ + canuse_qty = one.getMaterial_qty().multiply(material.getNet_weight()); + }else { + canuse_qty = new BigDecimal(extParam.get("weight")); + } + int total = canuse_qty.intValue(); + ArrayList taskMap = new ArrayList<>(); + List workorders= workorderService.getOrderByDevLimit(MapOf.of("workprocedure_id", ENGRAVE_WORKPRODURE,"material_id",one.getMaterial_id())); + + for (int i = 0; i < workorders.size(); i++) { + PdmProduceWorkorderDto workorder = workorders.get(i); + if (canuse_qty.intValue()<=0){ + break ; + } + Map map = new HashMap(); + int min = Math.min(canuse_qty.intValue(), Math.min(workorder.getNeedQty().intValue(),workorder.getLimitQty().intValue())); + int weight = material.getNet_weight().multiply(BigDecimal.valueOf(min)).intValue(); + map.put("device_code",workorder.getDevice_code()); + if (i == workorders.size()-1){//临时处理:最后全部倒最后一框 + map.put("weight",canuse_qty); + }else { + canuse_qty = canuse_qty.subtract(BigDecimal.valueOf(weight)); + map.put("weight",weight); + } + map.put("qty",min); + map.put("sort",i+1); + taskMap.add(map); + } + SchBaseTask baseTask = packageTask(total, material, taskMap); + if (CollectionUtils.isEmpty(taskMap)){ + throw new BadRequestException("当前任务:"+one.getTask_id()+"没送物料没有可上料的刻字机:"+one.getMaterial_id()); + } + baseTask.setTable_fk_id(one.getTask_id()); + taskService.save(baseTask); + //下发 + JSONObject jo = new JSONObject(); + jo.put("start_point_code", baseTask.getPoint_code1()); + jo.put("task_code", baseTask.getTask_code()); + jo.put("all_weight", new BigDecimal(total)); + String[] to_sort_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}; + String[] to_devices_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}; + String[] to_weight_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}; + for (int i = 0; i < taskMap.size(); i++) { + Map map = taskMap.get(i); + to_sort_array[i] = String.valueOf(map.get("sort")); + to_devices_array[i] = String.valueOf(map.get("device_code")); + to_weight_array[i] = String.valueOf(map.get("weight")); + } + jo.put("to_sort_array", Arrays.stream(to_sort_array).collect(Collectors.joining(","))); + jo.put("to_devices_array",Arrays.stream(to_devices_array).collect(Collectors.joining(","))); + jo.put("to_weight_array", Arrays.stream(to_weight_array).collect(Collectors.joining(","))); + JSONObject result = wms.request(jo, "api/wms/engravingIn"); + if (!result.getString("status").equals("200")){ + throw new BadRequestException(result.getString("message")); + } + return baseTask.getTask_id(); + } + + private SchBaseTask packageTask(Integer canuse_qty, MdMeMaterialbase material, ArrayList taskMap) { + SchBaseTask baseTask = new SchBaseTask(); + baseTask.setMaterial_id(material.getMaterial_id()); + baseTask.setTask_id(IdUtil.getStringId()); + baseTask.setTask_group_id(baseTask.getTask_id()); + baseTask.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + baseTask.setTask_name( AcsTaskEnum.TASK_Engrave_CALL.getDesc()); + baseTask.setTask_type( AcsTaskEnum.TASK_Engrave_CALL.getCode()); + baseTask.setTask_status(StatusEnum.TASK_PUBLISH.getCode()); + baseTask.setPoint_code1("A1_KZ_SL"); + baseTask.setPoint_code3(taskMap.stream().map(a->(String)a.get("device_code")).collect(Collectors.joining(","))); + baseTask.setMaterial_qty(new BigDecimal(canuse_qty)); + baseTask.setQtyArr(JSON.toJSONString(taskMap)); + baseTask.setCreate_id("1"); + baseTask.setCreate_name("acs"); + baseTask.setHandle_class(this.getClass().getName()); + baseTask.setCreate_time(new Date()); + baseTask.setIs_auto_issue(false); + baseTask.setPriority("1"); + return baseTask; + } + + @Override + public void cancel(String task_id) { } + + @Override + public void pointConfirm(JSONObject param) { + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveSendEmpTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveSendEmpTask.java new file mode 100644 index 00000000..c2b404a6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/Engrave/EngraveSendEmpTask.java @@ -0,0 +1,187 @@ +package org.nl.wms.scheduler_manage.service.extendtask.Engrave; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.enums.StatusEnum; +import org.nl.common.enums.WorkerOrderEnum; +import org.nl.common.utils.*; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.ext_manage.acs.service.WmsToAcsService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask; +import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; +import org.nl.wms.storage_manage.productmanage.util.RuleUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/* + * @author ZZQ + * @Date 2023/7/19 20:23 + */ +@Service +@Slf4j +public class EngraveSendEmpTask extends AbstractAcsTask { + + @Autowired + private IStIvtSectattrService sectattrService; + @Autowired + private DivRuleCpService divRuleCpService; + @Autowired + private ISchBaseTaskService taskService; + //仓位 + @Autowired + private IStIvtStructattrService structattrService; + @Autowired + private WmsToAcsService wms; + + + @Override + public void updateTaskStatus(JSONObject param, String status) { + String task_id = param.getString("task_id"); + SchBaseTask taskDao = taskService.getById(task_id); + // 更新任务状态为完成 + if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { + taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode()); + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getIs_emptyvehicle,true) + .set(StIvtStructattr::getStoragevehicle_code,BaseCode.intToChars(IdUtil.getLongId())) + .eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code3()) + ); + + } else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) { + taskDao.setTask_status(TaskStatusEnum.EXECUTING.getCode()); + + } else if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) { + taskDao.setTask_status(TaskStatusEnum.CANCEL.getCode()); + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getIs_emptyvehicle,false) + .set(StIvtStructattr::getStoragevehicle_code,"") + .eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code3()) + ); + } + taskService.updateById(taskDao); + } + + @Override + public String createTask(JSONObject param) { + String start_point_code = param.getString("device_code"); + //?刻字满料请求:可以存在多个任务? + List list = taskService.list(new QueryWrapper() + .lt("task_status", StatusEnum.TASK_FINISH.getCode()) + .and(wa->wa + .eq("point_code1", param.getString("device_code")) + .or() + .eq("point_code3", param.getString("device_code"))) + ); + if (!CollectionUtils.isEmpty(list)){ + throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); + } + // 查找任务状态 + JSONObject task = new JSONObject(); + task.put("task_id", IdUtil.getStringId()); + task.put("task_name", AcsTaskEnum.TASK_Engrave_EMPTY.getDesc()); + task.put("task_type", AcsTaskEnum.TASK_Engrave_EMPTY.getCode()); + task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); + task.put("material_id", ""); + task.put("task_status", TaskStatusEnum.CREATED.getCode()); + task.put("point_code1", start_point_code); + task.put("handle_class", this.getClass().getName()); + task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); + String currentUserId = SecurityUtils.getCurrentUserId(); + task.put("create_id", currentUserId); + task.put("is_send", true); + task.put("create_name", SecurityUtils.getCurrentNickName()); + task.put("create_time", DateUtil.now()); + task.put("priority", "1"); + task.put("finished_type", "1"); + task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); + SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); + taskService.save(schBaseTask); + // 找终点 + try { + pointConfirm(task); + JSONArray data = new JSONArray(); + data.add(task); + wms.issueTaskToAcs(data); + } catch (Exception ex) { + // 未找到 + if (StringUtils.isNotEmpty(task.getString("point_code3"))){ + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(StIvtStructattr::getStruct_code, task.getString("point_code3")) + ); + } + log.error("刻字满料请求异常,error:{}",ex); + schBaseTask.setRemark(ex.getMessage()); + schBaseTask.setUpdate_time(new Date()); + schBaseTask.setUpdate_name("acs"); + schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode()); + taskService.updateById(schBaseTask); + } + return null; + } + + @Override + public void cancel(String task_id) { + + } + + @Override + @Transactional + public void pointConfirm(JSONObject param) { + RedissonUtils.lock(()->{ + StIvtSectattr sect = sectattrService.getOne(new QueryWrapper().eq("sect_name", "半成品库区")); + JSONObject jo = new JSONObject(); + jo.put("sect_id", sect.getSect_id()); + jo.put("stor_id", sect.getStor_id()); + jo.put("rule_type", RuleUtil.PRODUCTION_IN_1); + StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo); + if (stIvtStructattr ==null){ + throw new BadRequestException("半成品库没有可用空位."); + } + // 设置点位 + param.put("update_time", DateUtil.now()); + param.put("point_code3",stIvtStructattr.getStruct_code()); + param.put("task_status",StatusEnum.TASK_START_END_P.getCode()); + param.put("task_grop_id",IdUtil.getStringId()); + taskService.updateById(param.toJavaObject(SchBaseTask.class)); + + //锁定货位 + structattrService.update(new UpdateWrapper() + .set("lock_type",IOSEnum.LOCK_TYPE.code("其他锁")) + .set("update_time",new Date()) + .set("inv_code",param.getString("task_code")) + .set("inv_id",param.getString("task_id")).eq("struct_code",stIvtStructattr.getStruct_code()) + ); + },"banchengpin_ruku",3); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/PointListener.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/PointListener.java index 53d97ded..1a2d2868 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/PointListener.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/PointListener.java @@ -15,6 +15,8 @@ import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Map; + @Service public class PointListener extends AbstraceListener { @Autowired @@ -25,6 +27,7 @@ public class PointListener extends AbstraceListener { String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; JSONObject task = new JSONObject(); 参数封装:{ + Map extParam = event.getExtParam(); task.put("task_id", task_id); task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); task.put("task_type", event.getType().getCode()); @@ -37,13 +40,15 @@ public class PointListener extends AbstraceListener { task.put("product_area",event.getProduct_area()); task.put("task_group_id",event.getTask_group_id()); task.put("finished_type", "1"); + if (extParam !=null){ + task.put("material_id", extParam.get("material_id")); + task.put("material_qty", extParam.get("material_qty")); + task.put("table_fk_id", extParam.get("table_fk_id")); + } task.put("is_delete", StatusEnum.LOCK_OFF.getCode()); task.put("create_id", SecurityUtils.getCurrentUserId()); task.put("create_name", SecurityUtils.getCurrentNickName()); - task.put("update_optid", SecurityUtils.getCurrentUserId()); - task.put("update_optname", SecurityUtils.getCurrentNickName()); task.put("create_time", DateUtil.now()); - task.put("update_time", DateUtil.now()); task.put("is_auto_issue", "0"); task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); task.put("priority", "1");} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/manage/AbstractAcsTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/manage/AbstractAcsTask.java index 6333bc84..d3775ad8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/manage/AbstractAcsTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/manage/AbstractAcsTask.java @@ -36,7 +36,7 @@ public abstract class AbstractAcsTask { public void notifyAcs(JSONArray param){}; public List schedulerTask(List tasks){ - return new ArrayList<>(); + return tasks; }; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/packageWrap/WrapCallMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/packageWrap/WrapCallMaterialTask.java index d3e5437b..b3018dcb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/packageWrap/WrapCallMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/packageWrap/WrapCallMaterialTask.java @@ -204,13 +204,6 @@ public class WrapCallMaterialTask extends AbstractAcsTask { @Override public List schedulerTask(List tasks) { - ArrayList Merge = new ArrayList<>(); - if (!CollectionUtils.isEmpty(tasks)){ - for (SchBaseTask task : tasks) { - task.setTask_group_id(org.nl.common.utils.IdUtil.getStringId()); - Merge.add(task); - } - } - return Merge; + return tasks; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/packageWrap/WrapSendEmptyTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/packageWrap/WrapSendEmptyTask.java index cb7e751e..5e8cdc0c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/packageWrap/WrapSendEmptyTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/packageWrap/WrapSendEmptyTask.java @@ -14,6 +14,7 @@ import org.nl.common.enums.StatusEnum; import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.MapOf; import org.nl.common.utils.OptionRecord; +import org.nl.common.utils.RedissonUtils; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; @@ -99,58 +100,59 @@ public class WrapSendEmptyTask extends AbstractAcsTask { @Override public String createTask(JSONObject param) { - String start_point_code = param.getString("device_code"); - if(StrUtil.isEmpty(start_point_code)) { - throw new BadRequestException("起点不能为空!"); - } - // 判断当前点是否有未完成的任务 - List list = taskService.list(new QueryWrapper() - .nested(i -> i - .eq("point_code1", param.getString("device_code")).or() - .eq("point_code3", param.getString("device_code"))) - .lt("task_status", StatusEnum.TASK_FINISH.getCode()) - ); - if (ObjectUtil.isNotEmpty(list)) { - throw new BadRequestException("当前点位" + start_point_code + "存在未完成的任务"); - } - String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - JSONObject task = new JSONObject(); - task.put("task_id", taskdtl_id); - task.put("task_name", AcsTaskEnum.TASK_WARP_EMPTY.getDesc()); - task.put("task_type", AcsTaskEnum.TASK_WARP_EMPTY.getCode()); - task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); - task.put("task_status", StatusEnum.TASK_CREATE.getCode()); - task.put("point_code1", start_point_code); - task.put("handle_class", this.getClass().getName()); - task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); - String currentUserId = SecurityUtils.getCurrentUserId(); - task.put("create_id", currentUserId); - task.put("is_send", true); - task.put("create_name", SecurityUtils.getCurrentNickName()); - task.put("update_id", currentUserId); - task.put("update_name", SecurityUtils.getCurrentNickName()); - task.put("create_time", DateUtil.now()); - task.put("update_time", DateUtil.now()); - task.put("priority", "1"); - task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); - SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); - taskService.save(schBaseTask); - // 找终点 - try { - pointConfirm(task); - JSONArray data = new JSONArray(); - data.add(task); - // 下发 - wms.issueTaskToAcs(data); - } catch (Exception ex) { - // 未找到 - task.put("remark", ex.getMessage()); + RedissonUtils.lock(()->{String start_point_code = param.getString("device_code"); + if(StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空!"); + } + // 判断当前点是否有未完成的任务 + List list = taskService.list(new QueryWrapper() + .nested(i -> i + .eq("point_code1", param.getString("device_code")).or() + .eq("point_code3", param.getString("device_code"))) + .lt("task_status", StatusEnum.TASK_FINISH.getCode()) + ); + if (ObjectUtil.isNotEmpty(list)) { + throw new BadRequestException("当前点位" + start_point_code + "存在未完成的任务"); + } + String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + JSONObject task = new JSONObject(); + task.put("task_id", taskdtl_id); + task.put("task_name", AcsTaskEnum.TASK_WARP_EMPTY.getDesc()); + task.put("task_type", AcsTaskEnum.TASK_WARP_EMPTY.getCode()); + task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); + task.put("task_status", StatusEnum.TASK_CREATE.getCode()); + task.put("point_code1", start_point_code); + task.put("handle_class", this.getClass().getName()); + task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); + String currentUserId = SecurityUtils.getCurrentUserId(); + task.put("create_id", currentUserId); + task.put("is_send", true); + task.put("create_name", SecurityUtils.getCurrentNickName()); + task.put("update_id", currentUserId); + task.put("update_name", SecurityUtils.getCurrentNickName()); + task.put("create_time", DateUtil.now()); task.put("update_time", DateUtil.now()); - task.put("task_status", StatusEnum.TASK_START_ERROR.getCode()); - taskService.updateById(task.toJavaObject(SchBaseTask.class)); - } - return taskdtl_id; + task.put("priority", "1"); + task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); + SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); + taskService.save(schBaseTask); + // 找终点 + try { + pointConfirm(task); + JSONArray data = new JSONArray(); + data.add(task); + // 下发 + wms.issueTaskToAcs(data); + } catch (Exception ex) { + // 未找到 + task.put("remark", ex.getMessage()); + task.put("update_time", DateUtil.now()); + task.put("task_status", StatusEnum.TASK_START_ERROR.getCode()); + taskService.updateById(task.toJavaObject(SchBaseTask.class)); + } },"kzhc_emp",2); + + return null; } @Override @@ -189,4 +191,9 @@ public class WrapSendEmptyTask extends AbstractAcsTask { throw new BadRequestException("刻字缓存区没有可用货位."); } } + + @Override + public List schedulerTask(List tasks) { + return tasks; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/plotter/PlotterCallEmptyTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/plotter/PlotterCallEmptyTask.java index 412ebcc4..b41ca945 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/plotter/PlotterCallEmptyTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/plotter/PlotterCallEmptyTask.java @@ -124,6 +124,7 @@ public class PlotterCallEmptyTask extends AbstractAcsTask { if (!CollectionUtils.isEmpty(list)){ throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); } + // 设置点位 // 查找任务状态 JSONObject task = packageTask(end_point_code, order.getMaterial_id(),order.getWorkorder_code()); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); @@ -198,6 +199,11 @@ public class PlotterCallEmptyTask extends AbstractAcsTask { if (ObjectUtil.isNotEmpty(list)) { SchBasePoint point = list.get(0); // 设置点位 + point.setLock_type(StatusEnum.LOCK_ON.getCode()); + point.setTask_id(task.getString("task_id")); + pointService.updateById(point); + // 设置点位 + task.put("update_time", DateUtil.now()); task.put("point_code1",point.getPoint_code()); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/plotter/PlotterSendMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/plotter/PlotterSendMaterialTask.java index 26a3d5d4..e897de50 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/plotter/PlotterSendMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/plotter/PlotterSendMaterialTask.java @@ -12,10 +12,7 @@ import org.apache.commons.lang3.StringUtils; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.StatusEnum; import org.nl.common.enums.WorkerOrderEnum; -import org.nl.common.utils.IdUtil; -import org.nl.common.utils.MapOf; -import org.nl.common.utils.OptionRecord; -import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.*; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; import org.nl.wms.ext_manage.acs.service.WmsToAcsService; @@ -113,64 +110,67 @@ public class PlotterSendMaterialTask extends AbstractAcsTask { @Override @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject param) { - String start_point_code = param.getString("device_code"); - PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper() - .eq("workorder_code", param.getString("workorder_code")) - .eq("is_delete", false) - .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode())); - Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); - //?刻字满料请求:可以存在多个任务? - List list = taskService.list(new QueryWrapper() - .lt("task_status", StatusEnum.TASK_FINISH.getCode()) - .and(wa->wa - .eq("point_code1", param.getString("device_code")) - .or() - .eq("point_code3", param.getString("device_code"))) - ); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); - } - // 查找任务状态 - String taskdtl_id = IdUtil.getStringId(); - JSONObject task = new JSONObject(); - task.put("task_id", taskdtl_id); - task.put("task_name", AcsTaskEnum.TASK_PLOTTER_MAC.getDesc()); - task.put("task_type", AcsTaskEnum.TASK_PLOTTER_MAC.getCode()); - task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20.getCode()); - task.put("material_id", order.getMaterial_id()); - task.put("task_status", TaskStatusEnum.CREATED.getCode()); - task.put("point_code1", start_point_code); - task.put("handle_class", this.getClass().getName()); - task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); - String currentUserId = SecurityUtils.getCurrentUserId(); - task.put("create_id", currentUserId); - task.put("is_send", true); - task.put("create_name", SecurityUtils.getCurrentNickName()); - task.put("create_time", DateUtil.now()); - task.put("priority", "1"); - task.put("finished_type", "1"); - task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); - task.put("table_fk_id",order.getWorkorder_code()); - SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); - taskService.save(schBaseTask); - // 找终点 - try { - pointConfirm(task); - JSONArray data = new JSONArray(); - data.add(task); - // 下发 - wms.issueTaskToAcs(data); - } catch (Exception ex) { - // 未找到 - log.error("刻字满料请求异常,error:{}",ex); - schBaseTask.setRemark(ex.getMessage()); - schBaseTask.setUpdate_time(new Date()); - schBaseTask.setUpdate_name("acs"); - schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode()); - taskService.updateById(schBaseTask); - } - return taskdtl_id; + RedissonUtils.lock(()->{ + String start_point_code = param.getString("device_code"); + PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper() + .eq("workorder_code", param.getString("workorder_code")) + .eq("is_delete", false) + .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode())); + Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); + //?刻字满料请求:可以存在多个任务? + List list = taskService.list(new QueryWrapper() + .lt("task_status", StatusEnum.TASK_FINISH.getCode()) + .and(wa->wa + .eq("point_code1", param.getString("device_code")) + .or() + .eq("point_code3", param.getString("device_code"))) + ); + if (!CollectionUtils.isEmpty(list)){ + throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); + } + // 查找任务状态 + String taskdtl_id = IdUtil.getStringId(); + JSONObject task = new JSONObject(); + task.put("task_id", taskdtl_id); + task.put("task_name", AcsTaskEnum.TASK_PLOTTER_MAC.getDesc()); + task.put("task_type", AcsTaskEnum.TASK_PLOTTER_MAC.getCode()); + task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20.getCode()); + task.put("material_id", order.getMaterial_id()); + task.put("task_status", TaskStatusEnum.CREATED.getCode()); + task.put("point_code1", start_point_code); + task.put("handle_class", this.getClass().getName()); + task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); + String currentUserId = SecurityUtils.getCurrentUserId(); + task.put("create_id", currentUserId); + task.put("is_send", true); + task.put("create_name", SecurityUtils.getCurrentNickName()); + task.put("create_time", DateUtil.now()); + task.put("priority", "1"); + task.put("finished_type", "1"); + task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); + task.put("table_fk_id",order.getWorkorder_code()); + SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); + taskService.save(schBaseTask); + // 找终点 + try { + pointConfirm(task); + JSONArray data = new JSONArray(); + data.add(task); + // 下发 + wms.issueTaskToAcs(data); + } catch (Exception ex) { + // 未找到 + log.error("刻字满料请求异常,error:{}",ex); + schBaseTask.setRemark(ex.getMessage()); + schBaseTask.setUpdate_time(new Date()); + schBaseTask.setUpdate_name("acs"); + schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode()); + taskService.updateById(schBaseTask); + } + },"kzhc_emp",2); + + return null; } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashCallEmptyTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashCallEmptyTask.java index 8837ffc0..fe692f1f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashCallEmptyTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashCallEmptyTask.java @@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.StatusEnum; import org.nl.common.enums.WorkerOrderEnum; +import org.nl.common.utils.BaseCode; import org.nl.common.utils.IdUtil; import org.nl.common.utils.RedissonUtils; import org.nl.common.utils.SecurityUtils; @@ -93,9 +94,8 @@ public class WashCallEmptyTask extends AbstractAcsTask { structattrService.update( new UpdateWrapper().lambda() .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) - .set(StIvtStructattr::getIs_emptyvehicle,false) - .set(StIvtStructattr::getStoragevehicle_code,"") - .eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code3()) + .set(StIvtStructattr::getIs_emptyvehicle,true) + .eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code1()) ); } taskService.updateById(taskDao); @@ -104,20 +104,19 @@ public class WashCallEmptyTask extends AbstractAcsTask { @Override @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject param) { - PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper() - .eq("workorder_code","123456")// param.getString("workorder_code")) - .eq("is_delete", false) - .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode())); - Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); - //?刻字满料请求:可以存在多个任务? + List list = taskService.list(new QueryWrapper() - .lt("task_status", StatusEnum.TASK_FINISH.getCode()) - .eq("point_code1", param.getString("device_code"))); + .lt("task_status", StatusEnum.TASK_FINISH.getCode()).nested( + i->i.eq("point_code3", param.getString("device_code")) + .or() + .eq("point_code1", param.getString("device_code")) + ) + ); if (!CollectionUtils.isEmpty(list)){ throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); } // 查找任务状态 - JSONObject task = packageTask(param.getString("device_code"), order.getMaterial_id(),order.getWorkorder_code()); + JSONObject task = packageTask(param.getString("device_code")); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); taskService.save(schBaseTask); // 找终点 @@ -127,14 +126,15 @@ public class WashCallEmptyTask extends AbstractAcsTask { JSONArray data = new JSONArray(); data.add(task); // 下发 - wms.issueTaskToAcs2(data); - structattrService.update( - new UpdateWrapper().lambda() - .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("入库锁")) - .eq(StIvtStructattr::getStruct_code, task.getString("point_code3")) - ); + wms.issueTaskToAcs(data); + }, "bcpcallemp", 2); } catch (Exception ex) { + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(StIvtStructattr::getStruct_code, task.getString("point_code3")) + ); log.error("刻字请求异常,error:{}",ex); schBaseTask.setRemark(ex.getMessage()); schBaseTask.setUpdate_time(new Date()); @@ -147,16 +147,16 @@ public class WashCallEmptyTask extends AbstractAcsTask { } @NotNull - private JSONObject packageTask(String start_point_code, String material_id,String fk) { + private JSONObject packageTask(String start_point_code) { JSONObject task = new JSONObject(); task.put("task_id", IdUtil.getStringId()); task.put("task_name", AcsTaskEnum.TASK_WASH_EMP.getDesc()); task.put("task_type", AcsTaskEnum.TASK_WASH_EMP.getCode()); task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); - task.put("material_id", material_id); + task.put("material_id", ""); task.put("task_status", StatusEnum.TASK_CREATE.getCode()); - task.put("point_code1", start_point_code); + task.put("point_code3", start_point_code); task.put("handle_class", this.getClass().getName()); task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); String currentUserId = SecurityUtils.getCurrentUserId(); @@ -168,7 +168,6 @@ public class WashCallEmptyTask extends AbstractAcsTask { task.put("update_time", DateUtil.now()); task.put("priority", "1"); task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); - task.put("table_fk_id", fk); return task; } @@ -183,8 +182,7 @@ public class WashCallEmptyTask extends AbstractAcsTask { structattrService.update( new UpdateWrapper().lambda() .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) - .set(StIvtStructattr::getIs_emptyvehicle,false) - .set(StIvtStructattr::getStoragevehicle_code,"") + .set(StIvtStructattr::getIs_emptyvehicle,true) .eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code1()) ); taskService.updateById(taskDao); @@ -200,26 +198,26 @@ public class WashCallEmptyTask extends AbstractAcsTask { // 3.找一个空载具 StIvtStructattr attrDao = structattrService.getOne( new QueryWrapper().lambda() - .eq(StIvtStructattr::getIs_emptyvehicle, IOSEnum.IS_USED.code("是")) + .eq(StIvtStructattr::getIs_emptyvehicle,IOSEnum.IS_USED.code("是")) .eq(StIvtStructattr::getSect_code, PDAEnum.SECT_CODE.code("半成品库区")) .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) - .eq(StIvtStructattr::getIs_used,true) - .and(qr -> qr.isNotNull(StIvtStructattr::getStoragevehicle_code) - .or() - .ne(StIvtStructattr::getStoragevehicle_code, "") - ),false + .eq(StIvtStructattr::getIs_used,true),false ); - if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("未找到空载具!"); // 设置点位 task.put("update_time", DateUtil.now()); - task.put("point_code3",attrDao.getStruct_code()); + task.put("point_code1",attrDao.getStruct_code()); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId()); schBaseTask.setUpdate_time(new Date()); taskService.updateById(schBaseTask); + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("其他锁")) + .eq(StIvtStructattr::getStruct_code, task.getString("point_code1")) + ); } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashMachineryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashMachineryTask.java index 8977d9d0..a471ff45 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashMachineryTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashMachineryTask.java @@ -120,10 +120,6 @@ public class WashMachineryTask extends AbstractAcsTask { throw new BadRequestException("当前点位存在正在执行的任务:" +list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); } - JSONArray data = new JSONArray(); - JSONArray items = new JSONArray(); - ArrayList start_points = new ArrayList<>(); - JSONObject task = new JSONObject(); task.put("task_id", IdUtil.getStringId()); task.put("task_name", AcsTaskEnum.REQUEST_WASH_SEND_MATERIAL.getDesc()); @@ -154,7 +150,6 @@ public class WashMachineryTask extends AbstractAcsTask { deviceService.update(new UpdateWrapper() .set("is_used",false) .set("update_time",DateUtil.now()) - .set("remark",task.getString("task_id")) .in("device_code",devices.stream().map(PdmBiDevice::getDevice_code).collect(Collectors.toList()))); return null; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashSendMaterialQZTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashSendMaterialQZTask.java index b3c3c018..5ca93859 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashSendMaterialQZTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashSendMaterialQZTask.java @@ -64,27 +64,21 @@ public class WashSendMaterialQZTask extends AbstractAcsTask { .set("task_status", StatusEnum.TASK_RUNNING.getCode()) .set("update_name", "acs") .set("update_time", DateUtil.now()).eq("task_id", one.getTask_id()); - - Map extParam = (Map)param.get("ext_param"); - String weight = extParam.get("weight"); - if (StringUtils.isNotEmpty(weight) && Integer.valueOf(weight)>0){ - updateWrapper.set("remark","fall_finish"+one.getTask_id()); - updateWrapper.set("material_qty",weight); - } taskService.update(updateWrapper); } if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { // 完成 taskService.update(new UpdateWrapper() .set("task_status",StatusEnum.TASK_FINISH.getCode()) - .set("point_status",StatusEnum.POINT_STATUS_FULL.getCode()) .set("update_name","acs") .set("update_time",DateUtil.now()).eq("task_id",one.getTask_id())); pointService.update(new UpdateWrapper() .set("lock_type",StatusEnum.LOCK_OFF.getCode()) .set("point_status",StatusEnum.POINT_STATUS_FULL.getCode()) .set("material_id",one.getMaterial_id()) + .set("vehicle_code",one.getVehicle_code()) .set("qty",one.getMaterial_qty()) + .eq("region_code","A1_BCP_YC") .eq("point_code",one.getPoint_code3())); } if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) { @@ -95,14 +89,10 @@ public class WashSendMaterialQZTask extends AbstractAcsTask { .set("update_time",DateUtil.now()).eq("task_id",one.getTask_id())); pointService.update(new UpdateWrapper() .set("lock_type",StatusEnum.LOCK_OFF.getCode()) + .eq("region_code","A1_BCP_YC") .set("point_status",StatusEnum.POINT_STATUS_EMPTY.getCode()) .eq("point_code",one.getPoint_code3())); } - OptionRecord.recordAsync(OptionRecord.OptionEnum.UPDATE, - status, - OptionRecord.Buss.POINT, - one.getPoint_code1(), MapOf.of("start",one.getPoint_code1(),"end",one.getPoint_code3(),"time",DateUtil.now(),"order",one.getTask_id())); - } @Override @@ -117,13 +107,13 @@ public class WashSendMaterialQZTask extends AbstractAcsTask { .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode())); } //?刻字满料请求:可以存在多个任务? - List list = taskService.list(new QueryWrapper() + List tasks = taskService.list(new QueryWrapper() .lt("task_status", StatusEnum.TASK_FINISH.getCode()) .eq("point_code1", param.getString("device_code")) ); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); + if (!CollectionUtils.isEmpty(tasks)){ + throw new BadRequestException(String.format("设备%s存在未完成任务"+tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); } // 查找任务状态 String taskdtl_id = IdUtil.getStringId(); @@ -147,24 +137,37 @@ public class WashSendMaterialQZTask extends AbstractAcsTask { task.put("priority", "1"); task.put("finished_type", "1"); task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); - task.put("table_fk_id",order.getWorkorder_code()); + task.put("table_fk_id",order!=null?order.getWorkorder_code():""); + // 去刻字缓存区寻找空位 + List list = pointService.list(new QueryWrapper() + .eq("is_used", "1") + .eq("region_code","A1_BCP_YC") + .eq("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode()) + .eq("lock_type", StatusEnum.LOCK_OFF.getCode()) + .last("and (material_id is null or material_id = '')") + ); + if (CollectionUtils.isEmpty(list)) { + throw new BadRequestException("异常位没有可用货位"); + } + // 找到位置 + // 点位上锁 + SchBasePoint point = list.get(0); + point.setLock_type(StatusEnum.LOCK_ON.getCode()); + pointService.updateById(point); + // 设置点位 + task.put("update_time", DateUtil.now()); + task.put("point_code2",point.getPoint_code()); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); + schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); + schBaseTask.setTask_type(AcsTaskEnum.TASK_WASH_FULL_QZ.getCode()); + schBaseTask.setUpdate_time(new Date()); taskService.save(schBaseTask); - // 找终点 - try { - pointConfirm(task); - JSONArray data = new JSONArray(); - data.add(task); - // 下发 - wms.issueTaskToAcs2(data); - } catch (Exception ex) { - // 未找到 - log.error("刻字满料请求异常,error:{}",ex); - schBaseTask.setRemark(ex.getMessage()); - schBaseTask.setUpdate_time(new Date()); - schBaseTask.setUpdate_name("acs"); - schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode()); - taskService.updateById(schBaseTask); + JSONArray data = new JSONArray(); + data.add(task); + // 下发 + Map result = wms.issueTaskToAcs2(data); + if (!result.get("status").equals("200")){ + throw new BadRequestException((String) result.get("message")); } return taskdtl_id; } @@ -185,31 +188,7 @@ public class WashSendMaterialQZTask extends AbstractAcsTask { @Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED) public void pointConfirm(JSONObject task) { // - // 去刻字缓存区寻找空位 - List list = pointService.list(new QueryWrapper() - .eq("is_used", "1") - .eq("region_code","A1_BCP_YC") - .eq("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode()) - .eq("lock_type", StatusEnum.LOCK_OFF.getCode()) - .last("and (material_id is null or material_id = '')") - ); - if (ObjectUtil.isNotEmpty(list)) { - // 找到位置 - // 点位上锁 - SchBasePoint point = list.get(0); - point.setLock_type(StatusEnum.LOCK_ON.getCode()); - pointService.updateById(point); - // 设置点位 - task.put("update_time", DateUtil.now()); - task.put("point_code2",point.getPoint_code()); - SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); - schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); - schBaseTask.setTask_type(AcsTaskEnum.TASK_WASH_FULL_QZ.getCode()); - schBaseTask.setUpdate_time(new Date()); - taskService.updateById(schBaseTask); - } else { - throw new BadRequestException("异常位没有可用货位."); - } + } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashSendMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashSendMaterialTask.java index 08fcf65d..8eb02a48 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashSendMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/wash/WashSendMaterialTask.java @@ -2,6 +2,7 @@ package org.nl.wms.scheduler_manage.service.extendtask.wash; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -10,7 +11,11 @@ import org.apache.commons.lang3.StringUtils; import org.nl.common.enums.StatusEnum; import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.IdUtil; +import org.nl.common.utils.MapOf; import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.ext_manage.acs.service.WmsToAcsService; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask; @@ -27,8 +32,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /* @@ -40,12 +44,6 @@ import java.util.stream.Collectors; @Slf4j public class WashSendMaterialTask extends AbstractAcsTask { - @Autowired - private IStIvtStructattrService structattrService; - @Autowired - private DivRuleCpService divRuleCpService; - @Autowired - private IStIvtSectattrService sectattrService; @Autowired private IPdmProduceWorkorderService workorderService; @Autowired @@ -55,9 +53,9 @@ public class WashSendMaterialTask extends AbstractAcsTask { @Autowired private WashSendMaterialQZTask sendMaterialQZTask; @Autowired - private IStIvtIostorinvBcpService stIvtIostorinvBcpService; // 仓位服务 - - + private IMdMeMaterialbaseService materialbaseService; + @Autowired + private WmsToAcsService wmsToAcsService; @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject param, String status) { @@ -66,41 +64,41 @@ public class WashSendMaterialTask extends AbstractAcsTask { @Override @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject param) { - if (StringUtils.isEmpty(param.getString("weight"))||StringUtils.isEmpty(param.getString("vehicle_code"))){ - return sendMaterialQZTask.createTask(param); - }else { - String start_point_code = param.getString("device_code"); - PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper() - .eq("workorder_code", param.getString("workorder_code")) - .eq("is_delete", false) - .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode())); - Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); - //?刻字满料请求:可以存在多个任务? - List list = taskService.list(new QueryWrapper() - .lt("task_status", StatusEnum.TASK_FINISH.getCode()) - .and(wa->wa - .eq("point_code1", start_point_code) - .or() - .eq("point_code3", start_point_code)) - ); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); - } - JSONObject form = new JSONObject(); - form.put("bill_type","0001"); - form.put("point_code",start_point_code); - form.put("stor_id", IOSEnum.STOR_CODE.code("半成品仓库"));//半成品仓库 - form.put("total_qty",param.getString("weight")); - form.put("material_id",order.getMaterial_id()); - form.put("unit_weight",order.getMaterial_weight()); - form.put("storagevehicle_code",param.getString("vehicle_code")); - form.put("product_code","A1"); - form.put("auto_send",true); - JSONObject req = new JSONObject(); - req.put("from",form); - pdaStBcpInService.createIn(req); - return ""; + if (StringUtils.isEmpty(param.getString("weight"))||StringUtils.isEmpty(param.getString("vechile_code"))){ + throw new BadRequestException("请求参数不能为空"); } + String start_point_code = "A1_CPQXJ_01_X"; + //?刻字满料请求:可以存在多个任务? + List list = taskService.list(new QueryWrapper() + .lt("task_status", StatusEnum.TASK_FINISH.getCode()) + .and(wa->wa + .eq("point_code1", start_point_code) + .or() + .eq("point_code3", start_point_code)) + ); + if (!CollectionUtils.isEmpty(list)){ + throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); + } + SchBaseTask order = taskService.getById(param.getString("task_id")); + MdMeMaterialbase byId = materialbaseService.getById(order.getMaterial_id()); + JSONObject form = new JSONObject(); + form.put("bill_type","0001"); + form.put("point_code",start_point_code); + form.put("stor_id", IOSEnum.STOR_CODE.code("半成品仓库"));//半成品仓库 + form.put("total_qty",param.getString("weight")); + form.put("material_id",order.getMaterial_id()); + form.put("unit_weight",byId.getNet_weight()); + form.put("storagevehicle_code",param.getString("vehicle_code")); + form.put("product_code","A1"); + form.put("auto_send",true); + JSONObject req = new JSONObject(); + req.put("from",form); + pdaStBcpInService.createIn(req); + taskService.update(new UpdateWrapper() + .set("task_status",StatusEnum.TASK_FINISH.getCode()) + .set("task_step","") + .eq("task_id",param.getString("task_id"))); + return ""; } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/EngraveScheduleService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/EngraveScheduleService.java index e1803c80..7b87047d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/EngraveScheduleService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/EngraveScheduleService.java @@ -1,18 +1,28 @@ package org.nl.wms.scheduler_manage.service.scheduler; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.enums.StatusEnum; import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.BaseCode; import org.nl.common.utils.IdUtil; +import org.nl.common.utils.MapOf; +import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto; +import org.nl.wms.scheduler_manage.service.extendtask.Engrave.EngraveCallMaterialTask; import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialTask; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpOutService; import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp; import org.slf4j.MDC; @@ -24,6 +34,7 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.List; import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; /* @@ -46,9 +57,7 @@ public class EngraveScheduleService { @Autowired private IStIvtIostorinvBcpOutService stIvtIostorinvBcpOutService; @Autowired - private WashSendMaterialTask engraveCallMaterialTask; - @Autowired - private IMdMeMaterialbaseService materialbaseService; + private ISchBaseTaskService taskService; public void run(){ MDC.put("requestMethod","EngraveScheduleService#EngravePublish"); @@ -58,73 +67,33 @@ public class EngraveScheduleService { this.EngravePublish(); } - @Transactional public void EngravePublish(){ - /** - * 1.查询当前正在执行的刻字工单数组 - * 3. - * 2.获取相同物料的工单:查询半成品库存物料:有的话则进行半成品出库:出到对接位 - * 3.半成品出库完成后:触发刻字机叫料任务: - * 4。根据物料获取工单对应设备:生成刻字机叫料任务 - */ - List list = workorderService.list(new QueryWrapper() - .eq("workprocedure_id", ENGRAVE_WORKPRODURE) - .eq("workorder_status", WorkerOrderEnum.PRODUCTING.getCode()) - .apply("plan_qty > dq_real_qty")); - if (CollectionUtils.isEmpty(list)){ + List list = taskService.list(new QueryWrapper() + .lt("task_status", StatusEnum.TASK_FINISH.getCode()) + .in("task_type", AcsTaskEnum.TASK_STRUCT_OUT.getCode(),AcsTaskEnum.TASK_Engrave_CALL.getCode(), AcsTaskEnum.TASK_Engrave_EMPTY.getCode())); + if (!CollectionUtils.isEmpty(list)){ return; } - Map> collect = list.stream().collect(Collectors.groupingBy(PdmProduceWorkorder::getMaterial_id)); - //工单开工规则 - for (Map.Entry> entry : collect.entrySet()) { - - JSONObject form = new JSONObject(); - form.put("stor_id","528627995269533696");//st_ivt_sectattr紫铜车间-半成品库区 - form.put("sect_id","1528631044482404352"); - form.put("material_id",entry.getKey()); - form.put("product_code","A1");//车间 - form.put("point_code","A1_KZPP_D");//刻字爬坡倒料点 - StIvtStructivtBcp stIvtStructivtBcp = stIvtIostorinvBcpOutService.autoConfirmout(form); - if (stIvtStructivtBcp != null){ - //生成输送线到刻字机任务 - //工单物料分配规则 - MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper().eq("material_id", entry.getKey()).eq("is_delete", false)); - List current_workorders = entry.getValue(); - BigDecimal canuse_qty = stIvtStructivtBcp.getCanuse_qty(); - String grop_id = IdUtil.getStringId(); - - for (PdmProduceWorkorder current_workorder : current_workorders) { - BigDecimal need = current_workorder.getPlan_qty().subtract(current_workorder.getDq_real_qty()); - if (need.intValue() <= 0){ continue; } - int min = Math.min(canuse_qty.intValue(), need.intValue()); - - JSONObject taskForm = new JSONObject(); - taskForm.put("workorder_code",current_workorder.getWorkorder_code()); - taskForm.put("device_code",current_workorder.getDevice_code()); - taskForm.put("qty",min); - taskForm.put("weight",material.getNet_weight().doubleValue()*min); - taskForm.put("material_id",material.getMaterial_id()); - taskForm.put("material_code",material.getMaterial_code()); - taskForm.put("material_spec",material.getMaterial_spec()); - taskForm.put("task_grop_id", grop_id); - engraveCallMaterialTask.createTask(taskForm); - canuse_qty = canuse_qty.subtract(need); - if (canuse_qty.intValue()<=0){return;} - } - if (canuse_qty.intValue() > 0){ - JSONObject taskForm = new JSONObject(); - taskForm.put("workorder_code"," "); - taskForm.put("device_code",""); - taskForm.put("qty",canuse_qty); - taskForm.put("weight",material.getNet_weight().multiply(canuse_qty)); - taskForm.put("material_id",material.getMaterial_id()); - taskForm.put("material_code",material.getMaterial_code()); - taskForm.put("material_spec",material.getMaterial_spec()); - taskForm.put("task_grop_id", grop_id); - engraveCallMaterialTask.createTask(taskForm); - } - } + List workorders= workorderService.getOrderByDevLimit(MapOf.of("workprocedure_id", ENGRAVE_WORKPRODURE)); + if (CollectionUtils.isEmpty(workorders)){ + return; + } + JSONObject form = new JSONObject(); + form.put("stor_id","15286279952695336962");//st_ivt_sectattr紫铜车间-半成品库区 + form.put("sect_id","1528631044482404352"); + form.put("product_code","A1");//车间 + form.put("bitt_type","1001");//生产出库 + form.put("point_code","A1_KZ_SL");//刻字爬坡倒料点 + try { + for (PdmProduceWorkorderDto workorder : workorders) { + form.put("material_id",workorder.getMaterial_id()); + StIvtStructivtBcp stIvtStructivtBcp = stIvtIostorinvBcpOutService.autoConfirmout(form); + if (stIvtStructivtBcp!=null){ + return; + } + } + }catch (Exception ex){ + log.warn("定时任务——半成品上料异常:{}",ex); } - } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/ISchBaseTaskService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/ISchBaseTaskService.java index cf76b23e..a576f0b3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/ISchBaseTaskService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/ISchBaseTaskService.java @@ -28,4 +28,6 @@ public interface ISchBaseTaskService extends IService { List queryAll(Map query); JSONObject createMoveTask(String start, String end, AcsTaskEnum taskEnum, AcsTaskEnum acstype); + + List pointRegexp(List points); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java index e6aaff58..07a27d61 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java @@ -143,6 +143,7 @@ public class SchBaseTask implements Serializable { */ private Boolean is_auto_issue; + /** * 任务组标识 */ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/SchBaseTaskMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/SchBaseTaskMapper.java index 268641d6..407121b3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/SchBaseTaskMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/SchBaseTaskMapper.java @@ -20,4 +20,6 @@ public interface SchBaseTaskMapper extends BaseMapper { List getTaskInfo (Map map); List queryAll (Map map); + + List pointRegexp (@Param("points1") String points1,@Param("points2")String points2); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/xml/SchBaseTaskMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/xml/SchBaseTaskMapper.xml index f8933dd0..3cfadac5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/xml/SchBaseTaskMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/xml/SchBaseTaskMapper.xml @@ -90,4 +90,12 @@ and task.task_id = #{task_id} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java index 2038a023..ba0c3560 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.apache.commons.lang3.StringUtils; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.IdUtil; @@ -33,6 +34,7 @@ import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** *

@@ -70,8 +72,10 @@ public class SchBaseTaskServiceImpl extends ServiceImpl().eq("task_id", task_id)); JSONArray array = new JSONArray(); array.add(JSON.toJSON(task)); @@ -80,13 +84,18 @@ public class SchBaseTaskServiceImpl extends ServiceImpl() + .set("task_status",StatusEnum.TASK_PUBLISH.getCode()) + .eq("task_id",task_id)); }catch (Exception ex){ taskObj.setTask_status(StatusEnum.TASK_START_ERROR.getCode()); taskObj.setRemark(ex.getMessage()); taskObj.setUpdate_time(new Date()); - pointService.update(new UpdateWrapper() - .set("lock_type",StatusEnum.LOCK_OFF.getCode()) - .in("point_code",taskObj.getPoint_code1(),taskObj.getPoint_code2())); + if (StringUtils.isNotEmpty(taskObj.getPoint_code1())|| StringUtils.isNotEmpty(taskObj.getPoint_code2())){ + pointService.update(new UpdateWrapper() + .set("lock_type",StatusEnum.LOCK_OFF.getCode()) + .in("point_code",taskObj.getPoint_code1(),taskObj.getPoint_code2())); + } this.updateById(taskObj); } } @@ -168,4 +177,10 @@ public class SchBaseTaskServiceImpl extends ServiceImpl pointRegexp(List points) { + return this.baseMapper.pointRegexp(points.stream().collect(Collectors.joining(",")),points.stream().collect(Collectors.joining("','"))); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/controller/record/StIvtStructivtflowBcpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/controller/record/StIvtStructivtflowBcpController.java index a62a0a19..2b7b619f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/controller/record/StIvtStructivtflowBcpController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/controller/record/StIvtStructivtflowBcpController.java @@ -1,17 +1,29 @@ package org.nl.wms.storage_manage.basedata.controller.record; +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import com.sun.tools.javadoc.Main; import io.swagger.annotations.ApiOperation; import org.nl.common.anno.Log; import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.MapOf; +import org.nl.modules.common.utils.FileUtil; +import org.nl.modules.tools.service.dto.LocalStorageDto; +import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowVo; import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService; import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery; +import org.nl.wms.system_manage.service.tableData.ColumnInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; /** *

@@ -27,10 +39,10 @@ public class StIvtStructivtflowBcpController { @Autowired private IStIvtStructivtflowService iStIvtStructivtflowService; + @Autowired + private ColumnInfoService columnInfoService; @GetMapping - @Log("查询库存变动记录") - //("查询库存变动记录") public ResponseEntity query(IvtFlowQuery query, PageQuery page) { return new ResponseEntity<>(iStIvtStructivtflowService.queryAll(query,page), HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/dao/mapper/xml/StIvtStructivtflowBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/dao/mapper/xml/StIvtStructivtflowBcpMapper.xml index 8eefcdcb..7b683696 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/dao/mapper/xml/StIvtStructivtflowBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/dao/mapper/xml/StIvtStructivtflowBcpMapper.xml @@ -35,6 +35,9 @@ and ivt.change_type_scode = #{query.change_type_scode} + + and ivt.bill_type_scode = #{query.bill_type_scode} + and ivt.stor_id = #{query.stor_id} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/dto/StIvtStructivtflowVo.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/dto/StIvtStructivtflowVo.java new file mode 100644 index 00000000..7a6a7aa8 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/dto/StIvtStructivtflowVo.java @@ -0,0 +1,154 @@ +package org.nl.wms.storage_manage.basedata.service.record.dto; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; + +/* + * @author ZZQ + * @Date 2023/7/21 22:48 + */ +@Data +@TableName("st_ivt_structivtflow_bcp") +public class StIvtStructivtflowVo { + /** + * 物料编码 + */ + private String material_code; + /** + * 物料名称 + */ + private String material_name; + /** + * 物料规格 + */ + private String material_spec; + /** + * 仓库名称 + */ + private String stor_name; + /** + * 库区名称 + */ + private String sect_name; + /** + * 计量单位 + */ + private String unit_name; + + private static final long serialVersionUID = 1L; + + /** + * 记录标识 + */ + private String change_id; + + /** + * 仓位标识 + */ + private String struct_id; + + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 仓位名称 + */ + private String struct_name; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + /** + * 品质类型 + */ + private String quality_scode; + + /** + * 是否可用 + */ + private Boolean is_active; + + /** + * 库存等级 + */ + private String ivt_level; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 单据类型 + */ + private String bill_type_scode; + + /** + * 单据标识 + */ + private String inv_id; + + /** + * 单据编号 + */ + private String bill_code; + + /** + * 单据表名 + */ + private String bill_table; + + /** + * 变动类型:单据类型 + */ + private String change_type_scode; + + /** + * 变动时间 + */ + private String change_time; + + /** + * 变动人 + */ + private String change_person_id; + + /** + * 变动人姓名 + */ + private String change_person_name; + + /** + * 变动数 + */ + private BigDecimal change_qty; + + /** + * 结存数 + */ + private BigDecimal result_qty; + + /** + * 数量计量单位标识 + */ + private String qty_unit_id; + + /** + * 车间标识 + */ + private String product_area; + /** + * 车间标识 + */ + private Boolean is_add; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/service/IStIvtStructivtflowService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/service/IStIvtStructivtflowService.java index be1d7478..2023ce84 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/service/IStIvtStructivtflowService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/service/IStIvtStructivtflowService.java @@ -5,8 +5,12 @@ import org.nl.common.domain.query.PageQuery; import org.nl.wms.storage_manage.basedata.service.record.dao.StIvtStructivtflow; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowDto; +import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowVo; import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery; +import java.util.List; +import java.util.Map; + /** *

* 仓位库存变动记录表 服务类 @@ -22,4 +26,6 @@ public interface IStIvtStructivtflowService extends IService void insetIvtChange(JSONObject json); Object queryAll(IvtFlowQuery query, PageQuery page); + + List queryAll(IvtFlowQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/service/impl/StIvtStructivtflowServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/service/impl/StIvtStructivtflowServiceImpl.java index 845129a3..e1434c35 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/service/impl/StIvtStructivtflowServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/basedata/service/record/service/impl/StIvtStructivtflowServiceImpl.java @@ -1,6 +1,8 @@ package org.nl.wms.storage_manage.basedata.service.record.service.impl; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.Page; @@ -15,6 +17,7 @@ import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; import org.nl.wms.storage_manage.basedata.service.record.dao.StIvtStructivtflow; import org.nl.wms.storage_manage.basedata.service.record.dao.mapper.StIvtStructivtflowBcpMapper; import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowDto; +import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowVo; import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; @@ -26,6 +29,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -122,4 +127,11 @@ public class StIvtStructivtflowServiceImpl extends ServiceImpl queryAll(IvtFlowQuery query) { + List maps = this.baseMapper.queryAll(query); + List list = JSONArray.parseArray(JSON.toJSONString(maps), StIvtStructivtflowVo.class); + return list; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpInServiceImpl.java index 092bb1e6..951c820b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpInServiceImpl.java @@ -184,11 +184,7 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService { .eq(StIvtStructattr::getIs_emptyvehicle,IOSEnum.IS_USED.code("是")) .eq(StIvtStructattr::getSect_code, PDAEnum.SECT_CODE.code("半成品库区")) .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) - .eq(StIvtStructattr::getIs_used,true) - .and(qr -> qr.isNotNull(StIvtStructattr::getStoragevehicle_code) - .or() - .ne(StIvtStructattr::getStoragevehicle_code, "") - ),false + .eq(StIvtStructattr::getIs_used,true),false ); if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("未找到空载具!"); @@ -228,7 +224,6 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService { @Transactional public JSONObject createIn(JSONObject from) { JSONObject whereJson = from.getJSONObject("from"); - // 组织数据 JSONObject param = new JSONObject(); param.put("biz_date", DateUtil.today()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java index 32becaf1..b2bf60c2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java @@ -59,6 +59,7 @@ import org.nl.wms.storage_manage.productmanage.util.RuleUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.ArrayList; @@ -266,11 +267,15 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl ivtList = new ArrayList<>(); // 需要更新库存、仓位、插入分配明细的集合 - while (unassign_qty > 0) { - StIvtStructivtCp ivtDao = divRuleCpService.divRuleOut(param); - - if (ObjectUtil.isEmpty(ivtDao)) throw new BadRequestException("库存不足"); + List cps = divRuleCpService.divRuleOut(param); + if (CollectionUtils.isEmpty(cps)){ + throw new BadRequestException("库存不足"); + } + for (StIvtStructivtCp ivtDao : cps) { + if (unassign_qty<=0){ + return; + } // 更新未分配数 unassign_qty = NumberUtil.sub(unassign_qty,ivtDao.getCanuse_qty().doubleValue()); ivtList.add(ivtDao); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/IStIvtStructivtCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/IStIvtStructivtCpService.java index 7a4c8f04..ca9082d0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/IStIvtStructivtCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/IStIvtStructivtCpService.java @@ -48,7 +48,7 @@ public interface IStIvtStructivtCpService extends IService { * @param json / * @return StIvtStructivtCp */ - StIvtStructivtCp queryIvtOutOne(JSONObject json); + List queryIvtOutOne(JSONObject json); /** * 获取手工分配库存 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.java index cd3c9df1..4aab73a1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.java @@ -21,7 +21,7 @@ import java.util.Map; */ public interface StIvtStructivtCpMapper extends BaseMapper { - StIvtStructivtCp queryIvtOutOne(JSONObject json); + List queryIvtOutOne(JSONObject json); List getStructIvt(JSONObject json); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml index 188079cb..d7078ffa 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml @@ -22,8 +22,6 @@ and ivt.sale_id = #{sale_id} order by ivt.canuse_qty ASC,ivt.struct_code ASC - - LIMIT 1