diff --git a/wms/hd/nladmin-system/pom.xml b/wms/hd/nladmin-system/pom.xml index 2dc19ad..bdd02d6 100644 --- a/wms/hd/nladmin-system/pom.xml +++ b/wms/hd/nladmin-system/pom.xml @@ -100,6 +100,12 @@ spring-boot-starter-websocket + + org.redisson + redisson + 3.16.1 + + org.redisson redisson-spring-boot-starter diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/KilnUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/KilnUtil.java index a82e551..ba2ce53 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/KilnUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/KilnUtil.java @@ -24,7 +24,7 @@ public class KilnUtil { throw new BadRequestException("未找到组盘信息,不能入窑!"); } JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); jo.put("vehicle_code", vehicle_code); jo.put("material_id", groupObj.getString("material_id")); jo.put("material_code", groupObj.getString("material_code")); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 1e14755..9d8213d 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -315,7 +315,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } @Override -// @Transactional(rollbackFor = Exception.class) public Map manipulatorApply(Map jsonObject) { log.debug("ACS的manipulatorApply请求参数为:" + jsonObject); String device_code = (String) jsonObject.get("device_code"); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/ProducetaskService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/ProducetaskService.java index cc8b7fc..2d8f314 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/ProducetaskService.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/ProducetaskService.java @@ -142,6 +142,7 @@ public interface ProducetaskService { * @param param */ void issued(JSONObject param); + void transSyn(JSONObject param); /** * 同步 * @param param diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java index eba8e5c..7b8f1df 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java @@ -56,453 +56,477 @@ import javax.servlet.http.HttpServletRequest; @Slf4j public class ProducetaskServiceImpl implements ProducetaskService { - @Autowired DeviceService deviceService; + @Autowired + DeviceService deviceService; - @Override - public Map queryAll(Map whereJson, Pageable page) { - String search = MapUtil.getStr(whereJson, "search"); - String material_id = MapUtil.getStr(whereJson, "material_id"); - String device_id = MapUtil.getStr(whereJson, "device_id"); - String produceline_id = MapUtil.getStr(whereJson, "produceline_id"); - String cust_id = MapUtil.getStr(whereJson, "cust_id"); - String workprocedure_id = MapUtil.getStr(whereJson, "workprocedure_id"); - String producetask_status = MapUtil.getStr(whereJson, "producetask_status"); - String material_name = MapUtil.getStr(whereJson, "material_name"); - String device_name = MapUtil.getStr(whereJson, "device_name"); - JSONObject map = new JSONObject(); - map.put("flag", "1"); - map.put("material_id", material_id); - map.put("device_id", device_id); - map.put("produceline_id", produceline_id); - map.put("cust_id", cust_id); - map.put("workprocedure_id", workprocedure_id); - map.put("producetask_status", producetask_status); - if (ObjectUtil.isNotEmpty(material_name)) { - map.put("material_name", "%" + material_name + "%"); - } - if (ObjectUtil.isNotEmpty(device_name)) { - map.put("device_name", "%" + device_name + "%"); - } - if (ObjectUtil.isNotEmpty(search)) { - map.put("search", "%" + search + "%"); - } - JSONObject json = - WQL.getWO("PDM_ProduceTask_01") - .addParamMap(map) - .pageQuery(WqlUtil.getHttpContext(page), "task.create_time desc"); - return json; - } - - @Override - public List queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(ProducetaskDto.class); - return null; - } - - @Override - public ProducetaskDto findById(Long producetask_id) { - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONObject json = wo.query("producetask_id = '" + producetask_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProducetaskDto.class); - } - return null; - } - - @Override - public ProducetaskDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONObject json = - wo.query("is_delete = '0' and producetask_code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProducetaskDto.class); - } - return null; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(ProducetaskDto dto) { - - // 编码唯一性校验 - String producetask_code = dto.getProducetask_code(); - ProducetaskDto byCode = this.findByCode(producetask_code); - // if (ObjectUtil.isNotEmpty(byCode)) throw new BadRequestException("编码已存在!"); - - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - - String material_id = dto.getMaterial_id().toString(); - // 根据物料去找木托盘类型 - JSONObject materialObj = - WQLObject.getWQLObject("md_me_material") - .query("material_id = '" + material_id + "'") - .uniqueResult(0); - String vehicle_type = materialObj.getString("vehicle_type"); - if (StrUtil.isEmpty(vehicle_type) || StrUtil.equals(vehicle_type, "0")) { - throw new RuntimeException("木托盘类型不可为空!"); - } - dto.setVehicle_type(vehicle_type); - dto.setProducetask_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setProducetask_code(CodeUtil.getNewCode("PRODUCE_CODE")); - dto.setCreate_id(currentUserId); - dto.setCreate_name(nickName); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - dto.setUpdate_time(now); - dto.setCreate_time(now); - dto.setProducetask_status("01"); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(ProducetaskDto dto) { - ProducetaskDto entity = this.findById(dto.getProducetask_id()); - if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); - - // 编码唯一性校验 - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - String where = - "is_delete = '0' and producetask_code = '" - + dto.getProducetask_code() - + "' and producetask_id != '" - + dto.getProducetask_id() - + "'"; - - JSONObject jsonObject = wo.query(where).uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonObject)) { - throw new BadRequestException("编码已存在!"); - } - - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - - String now = DateUtil.now(); - dto.setUpdate_time(now); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(Long[] ids) { - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - for (Long producetask_id : ids) { - wo.delete("producetask_id = '" + producetask_id + "'"); - } - } - - @Override - public JSONArray getMaterial() { - WQLObject wo = WQLObject.getWQLObject("md_me_material"); - JSONArray arr = wo.query(" is_delete = '0'", "update_time").getResultJSONArray(0); - return arr; - } - - @Override - public JSONArray getDevice(JSONObject param) { - String workprocedure_id = param.getString("workprocedure_id"); - WQLObject wo = WQLObject.getWQLObject("pdm_base_device"); - JSONArray arr = - wo.query( - " is_delete = '0' and workprocedure_id = '" + workprocedure_id + "'", "device_code") - .getResultJSONArray(0); - return arr; - } - - @Override - public JSONArray getDevice1() { - WQLObject wo = WQLObject.getWQLObject("pdm_base_device"); - JSONArray arr = - wo.query(" is_delete = '0' and is_work_device ='1'", "device_code").getResultJSONArray(0); - return arr; - } - - @Override - public void copyAdd(JSONObject param) { - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - JSONObject map = new JSONObject(); - map.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); - - map.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); - map.put("producetask_status", "01"); - map.put("material_id", param.getString("material_id")); - map.put("device_id", param.getString("device_id")); - map.put("produceline_id", param.getString("produceline_id")); - map.put("cust_id", param.getString("cust_id")); - - map.put("seq_no", param.getString("seq_no")); - map.put("plan_qty", param.getString("plan_qty")); - map.put("plan_end_time", param.getString("plan_end_time")); - map.put("plan_start_time", param.getString("plan_start_time")); - map.put("model", param.getString("model")); - map.put("molten_pool", param.getString("molten_pool")); - map.put("stewing_time", param.getString("stewing_time")); - map.put("create_id", currentUserId); - map.put("create_name", nickName); - map.put("create_time", now); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - wo.insert(map); - } - - @Override - public Map getTaskByDeviceId(Map whereJson, Pageable page) { - String device_id = MapUtil.getStr(whereJson, "device_id"); - JSONObject map = new JSONObject(); - map.put("flag", "2"); - map.put("device_id", device_id); - JSONObject json = - WQL.getWO("PDM_ProduceTask_01") - .addParamMap(map) - .pageQuery(WqlUtil.getHttpContext(page), "task.seq_no"); - return json; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void sortUpdate(JSONObject param) { - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONArray rows = param.getJSONArray("rows"); - for (int i = 0; i < rows.size(); i++) { - JSONObject jsonObject = rows.getJSONObject(i); - String producetask_id = jsonObject.getString("producetask_id"); - String seq_no = jsonObject.getString("seq_no"); - JSONObject map = new JSONObject(); - map.put("seq_no", seq_no); - map.put("update_optid", currentUserId); - map.put("update_optname", nickName); - map.put("update_time", now); - wo.update(map, "producetask_id = '" + producetask_id + "'"); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void mandFinish(JSONObject param) { - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - String producetask_id = param.getString("producetask_id"); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONObject map = new JSONObject(); - map.put("producetask_status", "05"); - map.put("producetask_finish_type", "02"); - param.put("update_optid", currentUserId); - param.put("update_optname", nickName); - param.put("update_time", now); - wo.update(map, "producetask_id = '" + producetask_id + "'"); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void issued(JSONObject param) { - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - String producetask_id = param.getString("producetask_id"); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - String device_id = param.getString("device_id"); - WQLObject taskTable = WQLObject.getWQLObject("PDM_MG_produceTask"); - JSONObject jo = - taskTable - .query("device_id='" + device_id + "' and producetask_status in ('02','03','04')") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(jo)) { - throw new BadRequestException("该设备存在未完成的工单,不能下发!"); - } - - DeviceDto dto = deviceService.findById(Long.valueOf(device_id)); - JSONObject taskObj = new JSONObject(); - // 假如是包装的三台机械手,是将设备当作工单设备 - // 假如是压机下料的机械手,则是将对接为当作工单设备 - if (StrUtil.equals(dto.getDevice_code(), "FJJXS1") - || StrUtil.equals("FJJXS2", dto.getDevice_code()) - || StrUtil.equals("FJJXS3", dto.getDevice_code())) { - taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "3").addParam("producetask_id", producetask_id).process().uniqueResult(0); - - String material_code = taskObj.getString("material_code"); - String product_code = taskObj.getString("product_code"); - if (ObjectUtil.isEmpty(product_code)) { - throw new BadRequestException("物料【"+material_code+"】的垛形参数未设置!"); - } - } else { - taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "4").addParam("producetask_id", producetask_id).process().uniqueResult(0); - } - - - taskObj.put("product_type", "wms"); - WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class); - JSONArray arr = new JSONArray(); - arr.add(taskObj); - Map result = wmsToAcsService.sendProduceTask(arr); - if (result.get("status").toString().equals("400")) { - String message = result.get("message").toString(); - throw new BadRequestException(message); - } - JSONObject map = new JSONObject(); - String producetask_status = "02"; - // 压机一 - if (StrUtil.equals(device_id, "1560189462410039296")) { - producetask_status = "04"; - } - map.put("producetask_status", producetask_status); - map.put("update_optid", currentUserId); - map.put("update_optname", nickName); - map.put("update_time", now); - wo.update(map, "producetask_id = '" + producetask_id + "'"); - } - - @Override - public void synchro(JSONObject param) { - WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); - JSONObject jo = new JSONObject(); - jo.put("startdate", DateUtil.today()); - jo.put("enddate", DateUtil.today()); - wmsToJnService.synchroDaySchedule(jo); - } - - @Override - public JSONArray getProduceline() { - WQLObject wo = WQLObject.getWQLObject("pdm_base_produceline"); - JSONArray arr = wo.query(" is_delete = '0'", "produceline_code").getResultJSONArray(0); - return arr; - } - - @Override - public JSONArray getCust() { - WQLObject wo = WQLObject.getWQLObject("MD_CS_CustomerBase"); - JSONArray arr = wo.query(" is_delete = '0'", "update_time").getResultJSONArray(0); - return arr; - } - - @Override - public JSONArray getWorkprocedure() { - WQLObject wo = WQLObject.getWQLObject("pdm_base_workprocedure"); - JSONArray arr = wo.query(" is_delete = '0'", "seq_no").getResultJSONArray(0); - return arr; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void excelImport(MultipartFile file, HttpServletRequest request) { - if (file.isEmpty()) { - throw new BadRequestException("文件为空,请添加数据后重新导入"); - } - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - // 1.获取上传文件输入流 - InputStream inputStream = null; - try { - inputStream = file.getInputStream(); - } catch (Exception e) { - e.printStackTrace(); - } - WQLObject wo = WQLObject.getWQLObject("PDM_MG_produceTask"); - WQLObject wo_material = WQLObject.getWQLObject("MD_ME_Material"); - WQLObject wo_device = WQLObject.getWQLObject("pdm_base_device"); - WQLObject wo_line = WQLObject.getWQLObject("pdm_base_produceline"); - WQLObject wo_cust = WQLObject.getWQLObject("md_cs_customerbase"); - - // 调用用 hutool 方法读取数据 默认调用第一个sheet - ExcelReader excelReader = ExcelUtil.getReader(inputStream); - // 从第二行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列 - List> read = excelReader.read(1, excelReader.getRowCount()); - // 循环获取的数据 - for (int i = 0; i < read.size(); i++) { - List list = read.get(i); - JSONObject param = new JSONObject(); - // 按照列获取 - param.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); - param.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); - param.put("producetask_status", "01"); - - String material_code = list.get(0).toString(); - JSONObject json_material = - wo_material - .query("is_delete = '0' and material_code = '" + material_code + "'") - .uniqueResult(0); - if (ObjectUtil.isEmpty(json_material)) { - throw new BadRequestException("第'" + (i + 2) + "'行,物料编码不存在"); - } - param.put("material_id", json_material.getString("material_id")); - - String device_code = list.get(1).toString(); - JSONObject json_device = - wo_device - .query("is_delete = '0' and device_code = '" + device_code + "'") - .uniqueResult(0); - if (ObjectUtil.isEmpty(json_device)) { - throw new BadRequestException("第'" + (i + 2) + "'行,设备编码不存在"); - } - param.put("device_id", json_device.getString("device_id")); - - String produceline_code = list.get(2).toString(); - JSONObject json_produceline = - wo_line - .query("is_delete = '0' and produceline_code = '" + produceline_code + "'") - .uniqueResult(0); - if (ObjectUtil.isEmpty(json_produceline)) { - throw new BadRequestException("第'" + (i + 2) + "'行,产线编码不存在"); - } - param.put("produceline_id", json_produceline.getString("produceline_id")); - - String cust_code = list.get(3).toString(); - JSONObject json_cust = - wo_cust.query("is_delete = '0' and cust_code = '" + cust_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_cust)) { - throw new BadRequestException("第'" + (i + 2) + "'行,客户编码不存在"); - } - param.put("cust_id", json_cust.getString("cust_id")); - - param.put("seq_no", list.get(4).toString()); - param.put("plan_qty", list.get(5).toString()); - if (ObjectUtil.isEmpty(list.get(6))) { - throw new BadRequestException("第'" + (i + 2) + "'行,计划开始时间不能为空"); - } else { - if (this.isLegalTime(list.get(6).toString())) { - param.put("plan_start_time", list.get(6).toString()); - } else { - throw new BadRequestException("第'" + (i + 2) + "'行,计划开始时间日期格式不正确"); + @Override + public Map queryAll(Map whereJson, Pageable page) { + String search = MapUtil.getStr(whereJson, "search"); + String material_id = MapUtil.getStr(whereJson, "material_id"); + String device_id = MapUtil.getStr(whereJson, "device_id"); + String produceline_id = MapUtil.getStr(whereJson, "produceline_id"); + String cust_id = MapUtil.getStr(whereJson, "cust_id"); + String workprocedure_id = MapUtil.getStr(whereJson, "workprocedure_id"); + String producetask_status = MapUtil.getStr(whereJson, "producetask_status"); + String material_name = MapUtil.getStr(whereJson, "material_name"); + String device_name = MapUtil.getStr(whereJson, "device_name"); + JSONObject map = new JSONObject(); + map.put("flag", "1"); + map.put("material_id", material_id); + map.put("device_id", device_id); + map.put("produceline_id", produceline_id); + map.put("cust_id", cust_id); + map.put("workprocedure_id", workprocedure_id); + map.put("producetask_status", producetask_status); + if (ObjectUtil.isNotEmpty(material_name)) { + map.put("material_name", "%" + material_name + "%"); } - } - if (ObjectUtil.isEmpty(list.get(7))) { - throw new BadRequestException("第'" + (i + 2) + "'行,计划结束时间不能为空"); - } else { - if (this.isLegalTime(list.get(7).toString())) { - param.put("plan_end_time", list.get(7).toString()); - } else { - throw new BadRequestException("第'" + (i + 2) + "'行,计划结束时间日期格式不正确"); + if (ObjectUtil.isNotEmpty(device_name)) { + map.put("device_name", "%" + device_name + "%"); } - } - param.put("model", list.get(8).toString()); - param.put("molten_pool", list.get(9).toString()); - param.put("create_id", currentUserId); - param.put("create_name", nickName); - param.put("create_time", now); - wo.insert(param); + if (ObjectUtil.isNotEmpty(search)) { + map.put("search", "%" + search + "%"); + } + JSONObject json = + WQL.getWO("PDM_ProduceTask_01") + .addParamMap(map) + .pageQuery(WqlUtil.getHttpContext(page), "task.create_time desc"); + return json; } - } - public boolean isLegalTime(String str) { - String formatTime = - "^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9]$"; - Pattern p = Pattern.compile(formatTime); - Matcher m = p.matcher(str); - return m.matches(); - } + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(ProducetaskDto.class); + return null; + } + + @Override + public ProducetaskDto findById(Long producetask_id) { + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONObject json = wo.query("producetask_id = '" + producetask_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(ProducetaskDto.class); + } + return null; + } + + @Override + public ProducetaskDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONObject json = + wo.query("is_delete = '0' and producetask_code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(ProducetaskDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(ProducetaskDto dto) { + + // 编码唯一性校验 + String producetask_code = dto.getProducetask_code(); + ProducetaskDto byCode = this.findByCode(producetask_code); + // if (ObjectUtil.isNotEmpty(byCode)) throw new BadRequestException("编码已存在!"); + + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + + if (ObjectUtil.isEmpty(dto.getMaterial_id())) { + throw new BadRequestException("物料不能为空!"); + } + + String material_id = dto.getMaterial_id().toString(); + // 根据物料去找木托盘类型 + JSONObject materialObj = + WQLObject.getWQLObject("md_me_material") + .query("material_id = '" + material_id + "'") + .uniqueResult(0); + String vehicle_type = materialObj.getString("vehicle_type"); + if (StrUtil.isEmpty(vehicle_type) || StrUtil.equals(vehicle_type, "0")) { + throw new RuntimeException("木托盘类型不可为空!"); + } + if (vehicle_type.equals("1")) { + dto.setVehicle_type("03"); + } else if (vehicle_type.equals("2")) { + dto.setVehicle_type("04"); + } else if (vehicle_type.equals("3")) { + dto.setVehicle_type("05"); + } else if (vehicle_type.equals("4")) { + dto.setVehicle_type("06"); + } else if (vehicle_type.equals("5")) { + dto.setVehicle_type("07"); + } + if (ObjectUtil.isEmpty(dto.getVehicle_type())){ + dto.setVehicle_type(vehicle_type); + } + + dto.setProducetask_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setProducetask_code(CodeUtil.getNewCode("PRODUCE_CODE")); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + dto.setProducetask_status("01"); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(ProducetaskDto dto) { + ProducetaskDto entity = this.findById(dto.getProducetask_id()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + // 编码唯一性校验 + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + String where = + "is_delete = '0' and producetask_code = '" + + dto.getProducetask_code() + + "' and producetask_id != '" + + dto.getProducetask_id() + + "'"; + + JSONObject jsonObject = wo.query(where).uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonObject)) { + throw new BadRequestException("编码已存在!"); + } + + + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + for (Long producetask_id : ids) { + wo.delete("producetask_id = '" + producetask_id + "'"); + } + } + + @Override + public JSONArray getMaterial() { + WQLObject wo = WQLObject.getWQLObject("md_me_material"); + JSONArray arr = wo.query(" is_delete = '0'", "update_time").getResultJSONArray(0); + return arr; + } + + @Override + public JSONArray getDevice(JSONObject param) { + String workprocedure_id = param.getString("workprocedure_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_base_device"); + JSONArray arr = + wo.query( + " is_delete = '0' and workprocedure_id = '" + workprocedure_id + "'", "device_code") + .getResultJSONArray(0); + return arr; + } + + @Override + public JSONArray getDevice1() { + WQLObject wo = WQLObject.getWQLObject("pdm_base_device"); + JSONArray arr = + wo.query(" is_delete = '0' and is_work_device ='1'", "device_code").getResultJSONArray(0); + return arr; + } + + @Override + public void copyAdd(JSONObject param) { + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + JSONObject map = new JSONObject(); + map.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); + + map.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); + map.put("producetask_status", "01"); + map.put("material_id", param.getString("material_id")); + map.put("device_id", param.getString("device_id")); + map.put("produceline_id", param.getString("produceline_id")); + map.put("cust_id", param.getString("cust_id")); + + map.put("seq_no", param.getString("seq_no")); + map.put("plan_qty", param.getString("plan_qty")); + map.put("plan_end_time", param.getString("plan_end_time")); + map.put("plan_start_time", param.getString("plan_start_time")); + map.put("model", param.getString("model")); + map.put("molten_pool", param.getString("molten_pool")); + map.put("stewing_time", param.getString("stewing_time")); + map.put("create_id", currentUserId); + map.put("create_name", nickName); + map.put("create_time", now); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + wo.insert(map); + } + + @Override + public Map getTaskByDeviceId(Map whereJson, Pageable page) { + String device_id = MapUtil.getStr(whereJson, "device_id"); + JSONObject map = new JSONObject(); + map.put("flag", "2"); + map.put("device_id", device_id); + JSONObject json = + WQL.getWO("PDM_ProduceTask_01") + .addParamMap(map) + .pageQuery(WqlUtil.getHttpContext(page), "task.seq_no"); + return json; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void sortUpdate(JSONObject param) { + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONArray rows = param.getJSONArray("rows"); + for (int i = 0; i < rows.size(); i++) { + JSONObject jsonObject = rows.getJSONObject(i); + String producetask_id = jsonObject.getString("producetask_id"); + String seq_no = jsonObject.getString("seq_no"); + JSONObject map = new JSONObject(); + map.put("seq_no", seq_no); + map.put("update_optid", currentUserId); + map.put("update_optname", nickName); + map.put("update_time", now); + wo.update(map, "producetask_id = '" + producetask_id + "'"); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void mandFinish(JSONObject param) { + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + String producetask_id = param.getString("producetask_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONObject map = new JSONObject(); + map.put("producetask_status", "05"); + map.put("producetask_finish_type", "02"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + wo.update(map, "producetask_id = '" + producetask_id + "'"); + } + @Override + public synchronized void issued(JSONObject param) { + ProducetaskService producetaskService = SpringContextHolder.getBean(ProducetaskService.class); + producetaskService.transSyn(param); + } + @Override + @Transactional(rollbackFor = Exception.class) + public void transSyn(JSONObject param) { + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + String producetask_id = param.getString("producetask_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + String device_id = param.getString("device_id"); + WQLObject taskTable = WQLObject.getWQLObject("PDM_MG_produceTask"); + JSONObject jo = + taskTable + .query("device_id='" + device_id + "' and producetask_status in ('02','03','04')") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(jo)) { + throw new BadRequestException("该设备存在未完成的工单,不能下发!"); + } + + DeviceDto dto = deviceService.findById(Long.valueOf(device_id)); + JSONObject taskObj = new JSONObject(); + // 假如是包装的三台机械手,是将设备当作工单设备 + // 假如是压机下料的机械手,则是将对接为当作工单设备 + if (StrUtil.equals(dto.getDevice_code(), "FJJXS1") + || StrUtil.equals("FJJXS2", dto.getDevice_code()) + || StrUtil.equals("FJJXS3", dto.getDevice_code())) { + taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "3").addParam("producetask_id", producetask_id).process().uniqueResult(0); + + String material_code = taskObj.getString("material_code"); + String product_code = taskObj.getString("product_code"); + if (ObjectUtil.isEmpty(product_code)) { + throw new BadRequestException("物料【" + material_code + "】的垛形参数未设置!"); + } + } else { + taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "4").addParam("producetask_id", producetask_id).process().uniqueResult(0); + } + + + taskObj.put("product_type", "wms"); + WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class); + JSONArray arr = new JSONArray(); + arr.add(taskObj); + Map result = wmsToAcsService.sendProduceTask(arr); + if (result.get("status").toString().equals("400")) { + String message = result.get("message").toString(); + throw new BadRequestException(message); + } + JSONObject map = new JSONObject(); + String producetask_status = "02"; + // 压机一 + if (StrUtil.equals(device_id, "1560189462410039296")) { + producetask_status = "04"; + } + map.put("producetask_status", producetask_status); + map.put("update_optid", currentUserId); + map.put("update_optname", nickName); + map.put("update_time", now); + wo.update(map, "producetask_id = '" + producetask_id + "'"); + } + + @Override + public void synchro(JSONObject param) { + WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); + JSONObject jo = new JSONObject(); + jo.put("startdate", DateUtil.today()); + jo.put("enddate", DateUtil.today()); + wmsToJnService.synchroDaySchedule(jo); + } + + @Override + public JSONArray getProduceline() { + WQLObject wo = WQLObject.getWQLObject("pdm_base_produceline"); + JSONArray arr = wo.query(" is_delete = '0'", "produceline_code").getResultJSONArray(0); + return arr; + } + + @Override + public JSONArray getCust() { + WQLObject wo = WQLObject.getWQLObject("MD_CS_CustomerBase"); + JSONArray arr = wo.query(" is_delete = '0'", "update_time").getResultJSONArray(0); + return arr; + } + + @Override + public JSONArray getWorkprocedure() { + WQLObject wo = WQLObject.getWQLObject("pdm_base_workprocedure"); + JSONArray arr = wo.query(" is_delete = '0'", "seq_no").getResultJSONArray(0); + return arr; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void excelImport(MultipartFile file, HttpServletRequest request) { + if (file.isEmpty()) { + throw new BadRequestException("文件为空,请添加数据后重新导入"); + } + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + // 1.获取上传文件输入流 + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (Exception e) { + e.printStackTrace(); + } + WQLObject wo = WQLObject.getWQLObject("PDM_MG_produceTask"); + WQLObject wo_material = WQLObject.getWQLObject("MD_ME_Material"); + WQLObject wo_device = WQLObject.getWQLObject("pdm_base_device"); + WQLObject wo_line = WQLObject.getWQLObject("pdm_base_produceline"); + WQLObject wo_cust = WQLObject.getWQLObject("md_cs_customerbase"); + + // 调用用 hutool 方法读取数据 默认调用第一个sheet + ExcelReader excelReader = ExcelUtil.getReader(inputStream); + // 从第二行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列 + List> read = excelReader.read(1, excelReader.getRowCount()); + // 循环获取的数据 + for (int i = 0; i < read.size(); i++) { + List list = read.get(i); + JSONObject param = new JSONObject(); + // 按照列获取 + param.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); + param.put("producetask_status", "01"); + + String material_code = list.get(0).toString(); + JSONObject json_material = + wo_material + .query("is_delete = '0' and material_code = '" + material_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(json_material)) { + throw new BadRequestException("第'" + (i + 2) + "'行,物料编码不存在"); + } + param.put("material_id", json_material.getString("material_id")); + + String device_code = list.get(1).toString(); + JSONObject json_device = + wo_device + .query("is_delete = '0' and device_code = '" + device_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(json_device)) { + throw new BadRequestException("第'" + (i + 2) + "'行,设备编码不存在"); + } + param.put("device_id", json_device.getString("device_id")); + + String produceline_code = list.get(2).toString(); + JSONObject json_produceline = + wo_line + .query("is_delete = '0' and produceline_code = '" + produceline_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(json_produceline)) { + throw new BadRequestException("第'" + (i + 2) + "'行,产线编码不存在"); + } + param.put("produceline_id", json_produceline.getString("produceline_id")); + + String cust_code = list.get(3).toString(); + JSONObject json_cust = + wo_cust.query("is_delete = '0' and cust_code = '" + cust_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(json_cust)) { + throw new BadRequestException("第'" + (i + 2) + "'行,客户编码不存在"); + } + param.put("cust_id", json_cust.getString("cust_id")); + + param.put("seq_no", list.get(4).toString()); + param.put("plan_qty", list.get(5).toString()); + if (ObjectUtil.isEmpty(list.get(6))) { + throw new BadRequestException("第'" + (i + 2) + "'行,计划开始时间不能为空"); + } else { + if (this.isLegalTime(list.get(6).toString())) { + param.put("plan_start_time", list.get(6).toString()); + } else { + throw new BadRequestException("第'" + (i + 2) + "'行,计划开始时间日期格式不正确"); + } + } + if (ObjectUtil.isEmpty(list.get(7))) { + throw new BadRequestException("第'" + (i + 2) + "'行,计划结束时间不能为空"); + } else { + if (this.isLegalTime(list.get(7).toString())) { + param.put("plan_end_time", list.get(7).toString()); + } else { + throw new BadRequestException("第'" + (i + 2) + "'行,计划结束时间日期格式不正确"); + } + } + param.put("model", list.get(8).toString()); + param.put("molten_pool", list.get(9).toString()); + param.put("create_id", currentUserId); + param.put("create_name", nickName); + param.put("create_time", now); + wo.insert(param); + } + } + + public boolean isLegalTime(String str) { + String formatTime = + "^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9]$"; + Pattern p = Pattern.compile(formatTime); + Matcher m = p.matcher(str); + return m.matches(); + } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java index c520a56..0f82057 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java @@ -374,12 +374,12 @@ public class CallMaterialTask extends AbstractAcsTask { iosObj.put("create_time", DateUtil.now()); WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj); // 将组盘里面的task_id改为当前的任务 - WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + /*WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); JSONObject groupObj = groupTable.query("vehicle_code='" + vehicle_code + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(groupObj)) { groupObj.put("task_id", task_id); groupTable.update(groupObj); - } + }*/ } task_status = TaskStatusEnum.START_AND_POINT.getCode(); diff --git a/wms/qd/src/views/wms/pdm/produceTask/index.vue b/wms/qd/src/views/wms/pdm/produceTask/index.vue index 44ec9ab..8244a0d 100644 --- a/wms/qd/src/views/wms/pdm/produceTask/index.vue +++ b/wms/qd/src/views/wms/pdm/produceTask/index.vue @@ -37,7 +37,7 @@