diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 37e474ec..d9348af8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -49,4 +49,18 @@ public class AcsToWmsController { public ResponseEntity orderFinish(@RequestBody String string) { return new ResponseEntity<>(acsToWmsService.orderFinish(string), HttpStatus.OK); } + + @PostMapping("/feedDeviceStatusType") + @Log("向wms反馈设备状态") + @ApiOperation("向wms反馈设备状态") + public ResponseEntity feedDeviceStatusType(@RequestBody String string) { + return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(string), HttpStatus.OK); + } + + @PostMapping("/feedOrderRealQty") + @Log("向wms反订单实施数量") + @ApiOperation("向wms反订单实施数量") + public ResponseEntity feedOrderRealQty(@RequestBody String string) { + return new ResponseEntity<>(acsToWmsService.feedOrderRealQty(string), HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index f3193a18..f16ec30c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -39,4 +39,18 @@ public interface AcsToWmsService { * @return */ Map orderFinish(String string); + + /** + * ACS给WMS反馈设备状态状态 + * @param string + * @return + */ + Map feedDeviceStatusType(String string); + + /** + * ACS给WMS反馈订单实时数量 + * @param string + * @return + */ + Map feedOrderRealQty(String string); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 62453868..6e3857d3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -2,6 +2,7 @@ package org.nl.wms.ext.acs.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -130,23 +131,93 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public Map orderFinish(String string) { - JSONObject orderJson = JSONObject.parseObject(string); - String ext_order_id = orderJson.getString("ext_order_id"); - // JSONArray array = JSONArray.parseArray(string); - String now = DateUtil.now(); - WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); - JSONObject map = new JSONObject(); - map.put("produceorder_id",ext_order_id); - map.put("order_status","04"); - map.put("update_optid", 1111111111); - map.put("device_id", ""); - map.put("update_optname", "acs"); - map.put("update_time", now); - map.put("realproduceend_date", now); - wo.update(map,"produceorder_id = '"+ext_order_id+"'"); JSONObject result = new JSONObject(); + try { + JSONObject orderJson = JSONObject.parseObject(string); + String ext_order_id = orderJson.getString("ext_order_id"); + // JSONArray array = JSONArray.parseArray(string); + String now = DateUtil.now(); + WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); + JSONObject map = new JSONObject(); + map.put("produceorder_id", ext_order_id); + map.put("order_status", "04"); + map.put("update_optid", 1001001); + map.put("device_id", ""); + map.put("update_optname", "acs"); + map.put("update_time", now); + map.put("realproduceend_date", now); + wo.update(map, "produceorder_id = '" + ext_order_id + "'"); + } catch (Exception e){ + result.put("status", 400); + result.put("message", e.getMessage()); + return result; + } result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); + result.put("message", "订单完成状态反馈成功!"); + return result; + } + + @Override + public Map feedDeviceStatusType(String string) { + JSONObject result = new JSONObject(); + try { + JSONObject param = JSONObject.parseObject(string); + String device_code = param.getString("device_code"); + String status_type = param.getString("status_type"); + String start_time = param.getString("start_time"); + Integer error_code = Integer.parseInt(param.getString("error_code")); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_device"); + JSONObject device_json = wo.query("is_delete = '0' and is_active = '1' and device_code = '" + device_code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(device_json)) { + String device_id = device_json.getString("device_id"); + WQLObject wo_status = WQLObject.getWQLObject("PDM_BI_DeviceRunStatusRecord"); + JSONObject status_json = wo_status.query("device_id = '" + device_id + "' and (end_time is null or end_time = '' )").uniqueResult(0); + if (ObjectUtil.isNotEmpty(status_json)) { + status_json.put("end_time", start_time); + wo_status.update(status_json); + log.warn("上一次设备状态结束时间修改成功:{}",device_code); + } + JSONObject map = new JSONObject(); + map.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + map.put("device_id", device_id); + map.put("status_type", status_type); + map.put("start_time", start_time); + if (error_code > 0) { + map.put("err_status_id", error_code); + } else { + map.put("err_status_id", null); + } + wo_status.insert(map); + log.warn("设备状态新增成功{}",device_code); + } + } catch (Exception e){ + result.put("status", 400); + result.put("message", e.getMessage()); + return result; + } + result.put("status", HttpStatus.OK.value()); + result.put("message", "设备状态反馈成功"); + return result; + } + + @Override + public Map feedOrderRealQty(String string) { + JSONObject result = new JSONObject(); + + try { + JSONObject param = JSONObject.parseObject(string); + String order_code = param.getString("order"); + String real_qty = param.getString("real_qty"); + WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + JSONObject map = new JSONObject(); + map.put("real_qty", real_qty); + wo.update(map, "produceorder_code = '" + order_code + "' and order_status != '04'"); + } catch (Exception e){ + result.put("status", 400); + result.put("message", e.getMessage()); + } + result.put("status", HttpStatus.OK.value()); + result.put("message", "设备状态反馈成功"); return result; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/DeviceScreenServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/DeviceScreenServiceImpl.java index a1d20b6e..20158ffb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/DeviceScreenServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/DeviceScreenServiceImpl.java @@ -75,6 +75,7 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { public JSONObject oeeAndTeep(JSONObject param) { JSONObject oee = new JSONObject(); JSONObject teep = new JSONObject(); + //value1:过去一个月;value2:目标;value3:实际 oee.put("value1", "78.0"); oee.put("value2", "67.0"); @@ -104,7 +105,8 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { @Override public JSONObject deviceErrorNum(JSONObject param) { - JSONArray result = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "2").process().getResultJSONArray(0); + String today = DateUtil.today() + "%"; + JSONArray result = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "2").addParam("today",today).process().getResultJSONArray(0); JSONObject returnjo = new JSONObject(); returnjo.put("code", "1"); returnjo.put("desc", "查询成功!"); @@ -115,6 +117,7 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { @Override public JSONObject deviceManage(JSONObject param) { String today = DateUtil.today() + "%"; + final String now = DateUtil.today(); Date today_begin = DateUtil.beginOfDay(DateUtil.date()); //弯头工段 JSONObject jo1 = new JSONObject(); @@ -127,24 +130,24 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { JSONObject device = wt_run_rows.getJSONObject(i); String start_time = device.getString("start_time"); String end_time = device.getString("end_time"); - if (start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(date1, date2, DateUnit.HOUR); wt_mibf += between; } - if (start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.date(); long between = DateUtil.between(date1, date2, DateUnit.HOUR); wt_mibf += between; } - if (!start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date2 = DateUtil.date(); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); wt_mibf += between; } - if (!start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); wt_mibf += between; @@ -157,24 +160,24 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { JSONObject device = wt_err_rows.getJSONObject(i); String start_time = device.getString("start_time"); String end_time = device.getString("end_time"); - if (start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(date1, date2, DateUnit.HOUR); wt_mttr += between; } - if (start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.date(); long between = DateUtil.between(date1, date2, DateUnit.HOUR); wt_mttr += between; } - if (!start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date2 = DateUtil.date(); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); wt_mttr += between; } - if (!start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); wt_mttr += between; @@ -190,62 +193,62 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { double zh_mibf = 0; double zh_mttr = 0; //计算mibf - JSONArray zh_run_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "3").addParam("worksection_type_scode", "01").addParam("today", today).process().getResultJSONArray(0); + JSONArray zh_run_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "3").addParam("worksection_type_scode", "02").addParam("today", today).process().getResultJSONArray(0); for (int i = 0; i < zh_run_rows.size(); i++) { JSONObject device = zh_run_rows.getJSONObject(i); String start_time = device.getString("start_time"); String end_time = device.getString("end_time"); - if (start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(date1, date2, DateUnit.HOUR); - wt_mibf += between; + zh_mibf += between; } - if (start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.date(); long between = DateUtil.between(date1, date2, DateUnit.HOUR); - wt_mibf += between; + zh_mibf += between; } - if (!start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date2 = DateUtil.date(); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); - wt_mibf += between; + zh_mibf += between; } - if (!start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); - wt_mibf += between; + zh_mibf += between; } } //计算mmttr - JSONArray zh_err_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "4").addParam("worksection_type_scode", "01").addParam("today", today).process().getResultJSONArray(0); + JSONArray zh_err_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "4").addParam("worksection_type_scode", "02").addParam("today", today).process().getResultJSONArray(0); for (int i = 0; i < zh_err_rows.size(); i++) { JSONObject device = zh_err_rows.getJSONObject(i); String start_time = device.getString("start_time"); String end_time = device.getString("end_time"); - if (start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(date1, date2, DateUnit.HOUR); - wt_mttr += between; + zh_mttr += between; } - if (start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.date(); long between = DateUtil.between(date1, date2, DateUnit.HOUR); - wt_mttr += between; + zh_mttr += between; } - if (!start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date2 = DateUtil.date(); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); - wt_mttr += between; + zh_mttr += between; } - if (!start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); - wt_mttr += between; + zh_mttr += between; } } @@ -258,62 +261,62 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { double cp_mibf = 0; double cp_mttr = 0; //计算mibf - JSONArray cp_run_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "3").addParam("worksection_type_scode", "01").addParam("today", today).process().getResultJSONArray(0); + JSONArray cp_run_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "3").addParam("worksection_type_scode", "03").addParam("today", today).process().getResultJSONArray(0); for (int i = 0; i < cp_run_rows.size(); i++) { JSONObject device = cp_run_rows.getJSONObject(i); String start_time = device.getString("start_time"); String end_time = device.getString("end_time"); - if (start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(date1, date2, DateUnit.HOUR); - wt_mibf += between; + cp_mibf += between; } - if (start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.date(); long between = DateUtil.between(date1, date2, DateUnit.HOUR); - wt_mibf += between; + cp_mibf += between; } - if (!start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date2 = DateUtil.date(); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); - wt_mibf += between; + cp_mibf += between; } - if (!start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); - wt_mibf += between; + cp_mibf += between; } } //计算mmttr - JSONArray cp_err_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "4").addParam("worksection_type_scode", "01").addParam("today", today).process().getResultJSONArray(0); + JSONArray cp_err_rows = WQL.getWO("QDEVICE_SCREEN").addParam("flag", "4").addParam("worksection_type_scode", "03").addParam("today", today).process().getResultJSONArray(0); for (int i = 0; i < cp_err_rows.size(); i++) { JSONObject device = cp_err_rows.getJSONObject(i); String start_time = device.getString("start_time"); String end_time = device.getString("end_time"); - if (start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(date1, date2, DateUnit.HOUR); - wt_mttr += between; + cp_mttr += between; } - if (start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date1 = DateUtil.parse(start_time); Date date2 = DateUtil.date(); long between = DateUtil.between(date1, date2, DateUnit.HOUR); - wt_mttr += between; + cp_mttr += between; } - if (!start_time.startsWith(today) && StrUtil.isEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isEmpty(end_time)) { Date date2 = DateUtil.date(); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); - wt_mttr += between; + cp_mttr += between; } - if (!start_time.startsWith(today) && StrUtil.isNotEmpty(end_time)) { + if (!start_time.startsWith(now) && StrUtil.isNotEmpty(end_time)) { Date date2 = DateUtil.parse(end_time); long between = DateUtil.between(today_begin, date2, DateUnit.HOUR); - wt_mttr += between; + cp_mttr += between; } } @@ -412,23 +415,23 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { device.put("end_time",""); device.put("product_time",""); String device_id = device.getString("device_id"); - JSONArray order_rows = WQLObject.getWQLObject("mps_bd_produceshiftorder").query("device_id = '" + device_id + "' AND produce_date like '" + date + "' AND is_delete = '0'").getResultJSONArray(0); + /*JSONArray order_rows = WQLObject.getWQLObject("mps_bd_produceshiftorder").query("device_id = '" + device_id + "' AND produce_date like '" + date + "' AND is_delete = '0'").getResultJSONArray(0); for (int j = 0; j < order_rows.size(); j++) { JSONObject order = order_rows.getJSONObject(i); product_qty += order.getIntValue("real_qty"); - } + }*/ // device.put("product_qty", product_qty); //查询最近的一条开机状态 - JSONObject start_jo = WQLObject.getWQLObject("pdm_bi_devicerunstatusrecord").query("device_id = '" + device_id + "' AND status_type = '02' order by end_time desc").uniqueResult(0); + JSONObject start_jo = WQLObject.getWQLObject("pdm_bi_devicerunstatusrecord").query("device_id = '" + device_id + "' AND status_type = '01' order by end_time desc").uniqueResult(0); if (ObjectUtil.isNotEmpty(start_jo)) { device.put("start_time", start_jo.getString("end_time")); } - if (StrUtil.isEmpty(device.getString("status_type"))) { + if (StrUtil.isNotEmpty(device.getString("status_type"))) { //查询最近的一条关机状态 JSONObject end_jo = WQLObject.getWQLObject("pdm_bi_devicerunstatusrecord").query("device_id = '" + device_id + "' AND status_type = '01' order by end_time desc").uniqueResult(0); if (ObjectUtil.isNotEmpty(end_jo)) { - device.put("end_time", end_jo.getString("end_time")); + device.put("end_time", end_jo.getString("start_time")); } } @@ -494,12 +497,12 @@ public class DeviceScreenServiceImpl implements DeviceScreenService { //OEE计算目标:当天汇总/(产能x负荷时间);实际:(班制时间-故障时间)/班制时间 * (当天工单汇总/(产能*(符合时间-故障时间)))* 98% if (type.equals("1")) { //8是指符合时间,也就是每天的工作时间 - oee = NumberUtil.div(total_qty, NumberUtil.mul(8, productivity)); + oee = NumberUtil.div(total_qty, NumberUtil.mul(16, productivity)); } else { //(班制时间-故障时间)/班制时间 - double value1 = NumberUtil.div(NumberUtil.sub(8 * 60, err_time), 8 * 60); + double value1 = NumberUtil.div(NumberUtil.sub(16 * 60, err_time), 16 * 60); //(产能*(符合时间-故障时间) - double value2 = NumberUtil.div(total_qty, NumberUtil.mul(productivity, value1)); + double value2 = NumberUtil.div(total_qty, NumberUtil.mul(productivity, NumberUtil.sub(16 * 60, err_time))); oee = NumberUtil.mul(value1, value2); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/ProductServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/ProductServiceImpl.java index ebb82d35..7781d1bf 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/ProductServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/ProductServiceImpl.java @@ -18,44 +18,42 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class ProductServiceImpl implements ProductService { - private String now = DateUtil.now(); - private String today = DateUtil.today(); - //一个月的开始日期 - private String beginOfMonth = DateUtil.formatTime(DateUtil.beginOfMonth(DateUtil.parseDate(today))); @Override public Map planReached(Map param) { + String today = DateUtil.today(); //计算当天的计划达成 //01-弯头工段、02-综合工段、03-成品工段 Map map = new HashMap(); map.put("flag", "1"); map.put("produce_date", today); - map.put("worksection_type_scode","01"); + map.put("worksection_type_scode", "01"); JSONObject jo1 = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0); - map.put("worksection_type_scode","02"); + map.put("worksection_type_scode", "02"); JSONObject jo2 = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0); - map.put("worksection_type_scode","03"); + map.put("worksection_type_scode", "03"); JSONObject jo3 = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0); JSONObject dayResult = new JSONObject(); - dayResult.put("jo1",jo1); - dayResult.put("jo2",jo2); - dayResult.put("jo3",jo3); + dayResult.put("jo1", jo1); + dayResult.put("jo2", jo2); + dayResult.put("jo3", jo3); //计算一个月的计划达成 + String beginOfMonth = DateUtil.formatTime(DateUtil.beginOfMonth(DateUtil.parseDate(today))); JSONObject monthResult = new JSONObject(); map.put("flag", "14"); map.put("end_produce_date", today); map.put("begin_produce_date", beginOfMonth); - map.put("worksection_type_scode","01"); + map.put("worksection_type_scode", "01"); JSONObject joo1 = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0); - map.put("worksection_type_scode","02"); + map.put("worksection_type_scode", "02"); JSONObject joo2 = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0); - map.put("worksection_type_scode","03"); + map.put("worksection_type_scode", "03"); JSONObject joo3 = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0); - monthResult.put("joo1",joo1); - monthResult.put("joo2",joo2); - monthResult.put("joo3",joo3); + monthResult.put("joo1", joo1); + monthResult.put("joo2", joo2); + monthResult.put("joo3", joo3); JSONObject returnjo = new JSONObject(); returnjo.put("code", "1"); returnjo.put("desc", "操作成功!"); @@ -66,6 +64,7 @@ public class ProductServiceImpl implements ProductService { @Override public Map productSchedule(Map param) { + String today = DateUtil.today(); //今日排产生产进度跟踪 Map map = new HashMap(); map.put("flag", "2"); @@ -81,6 +80,7 @@ public class ProductServiceImpl implements ProductService { @Override public Map output(Map param) { JSONObject result = new JSONObject(); + String today = DateUtil.today(); Map map = new HashMap(); // map.put("flag", "3"); map.put("flag", "7"); @@ -99,7 +99,7 @@ public class ProductServiceImpl implements ProductService { map.put("flag", "4"); int sum_qty = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0).getIntValue("count"); //统计延时工单 - map.put("product_date",today); + map.put("product_date", today); map.put("flag", "5"); int delayed_qty = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0).getIntValue("count"); @@ -121,13 +121,14 @@ public class ProductServiceImpl implements ProductService { //获取一周的日期 JSONArray dataArr = new JSONArray(); JSONArray results = new JSONArray(); + String now = DateUtil.now(); for (int i = 0; i < 7; i++) { DateTime dateTime = DateUtil.offsetDay(DateUtil.parse(now), -i); dataArr.add(dateTime.toString().substring(0, 10)); } for (int i = 0; i < dataArr.size(); i++) { JSONObject jo = new JSONObject(); - String date = dataArr.get(( dataArr.size()-i-1)).toString(); + String date = dataArr.get((dataArr.size() - i - 1)).toString(); //01-弯头工段、02-综合工段、03-成品工段 Map map = new HashMap(); @@ -142,7 +143,7 @@ public class ProductServiceImpl implements ProductService { map.put("worksection_type_scode", "03"); int end_product_qty = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0).getIntValue("real_qty"); jo.put("end_product_qty", end_product_qty); - jo.put("date",date.substring(5,date.length())); + jo.put("date", date.substring(5, date.length())); results.add(jo); } JSONObject returnjo = new JSONObject(); @@ -154,6 +155,7 @@ public class ProductServiceImpl implements ProductService { @Override public Map topHarvest(Map param) { + String today = DateUtil.today(); //今日Top10产量 Map map = new HashMap(); map.put("flag", "10"); @@ -169,6 +171,7 @@ public class ProductServiceImpl implements ProductService { @Override public Map monthHarvest(Map param) { //30天产量走势 + String now = DateUtil.now(); JSONArray dataArr = new JSONArray(); JSONArray results = new JSONArray(); for (int i = 0; i < 30; i++) { @@ -177,7 +180,7 @@ public class ProductServiceImpl implements ProductService { } for (int i = 0; i < dataArr.size(); i++) { JSONObject jo = new JSONObject(); - String date = dataArr.get(dataArr.size()-i-1).toString(); + String date = dataArr.get(dataArr.size() - i - 1).toString(); Map map = new HashMap(); map.put("flag", "9"); @@ -188,7 +191,7 @@ public class ProductServiceImpl implements ProductService { real_qty = jsonObject.getIntValue("real_qty"); } jo.put("real_qty", real_qty); - jo.put("date", date.substring(5,date.length())); + jo.put("date", date.substring(5, date.length())); results.add(jo); } JSONObject returnjo = new JSONObject(); @@ -200,6 +203,7 @@ public class ProductServiceImpl implements ProductService { @Override public Map unfinishOrder(Map param) { + String today = DateUtil.today(); Map map = new HashMap(); map.put("flag", "11"); map.put("produce_date", today); @@ -214,6 +218,9 @@ public class ProductServiceImpl implements ProductService { @Override public Map monthOrder(Map param) { //计算前9种物料产能 + String today = DateUtil.today(); + String beginOfMonth = DateUtil.formatTime(DateUtil.beginOfMonth(DateUtil.parseDate(today))); + Map map = new HashMap(); map.put("flag", "12"); map.put("produce_date", today); @@ -230,14 +237,15 @@ public class ProductServiceImpl implements ProductService { for (int i = 0; i < results.size(); i++) { count_num_flag = count_num_flag + results.getJSONObject(i).getIntValue("real_qty"); } + if (count_num_flag < sum_count) { + JSONObject joo = new JSONObject(); + joo.put("material_name", "其他"); + joo.put("material_spec", "其他"); + joo.put("real_qty", sum_count - count_num_flag); + results.add(joo); + } } - if (count_num_flag < sum_count) { - JSONObject joo = new JSONObject(); - joo.put("material_name", "其他"); - joo.put("material_spec", "其他"); - joo.put("real_qty", sum_count - count_num_flag); - results.add(joo); - } + JSONObject returnjo = new JSONObject(); returnjo.put("code", "1"); returnjo.put("desc", "操作成功!"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/BIGSCREENPRODUCT.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/BIGSCREENPRODUCT.wql index 445d5432..738978f5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/BIGSCREENPRODUCT.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/BIGSCREENPRODUCT.wql @@ -61,6 +61,7 @@ where shiftorder.is_delete='0' + and shiftorder.order_status<>'00' OPTION 输入.worksection_type_scode <> "" workprocedure.worksection_type_scode = 输入.worksection_type_scode ENDOPTION @@ -134,6 +135,7 @@ ENDIF mps_bd_produceshiftorder shiftorder where shiftorder.is_delete='0' + and shiftorder.order_status<>'00' OPTION 输入.produce_date <> "" shiftorder.produce_date = 输入.produce_date ENDOPTION @@ -149,6 +151,7 @@ ENDIF mps_bd_produceshiftorder shiftorder where shiftorder.realproduceend_date > shiftorder.planproduceend_date + and shiftorder.order_status<>'00' OPTION 输入.produce_date <> "" shiftorder.produce_date = 输入.produce_date ENDOPTION @@ -168,6 +171,7 @@ ENDIF LEFT JOIN pdm_bi_workprocedure workprocedure ON workprocedure.workprocedure_id = shiftorder.workprocedure_id WHERE shiftorder.is_delete='0' + and shiftorder.order_status<>'00' and workprocedure.workprocedure_code IN ( '07', '06', '02' ) OPTION 输入.produce_date <> "" shiftorder.produce_date = 输入.produce_date @@ -268,6 +272,7 @@ IF 输入.flag = "11" left join md_me_materialbase material on material.material_id =shiftorder.material_id WHERE shiftorder.is_delete='0' + and shiftorder.order_status<>'00' and workprocedure.workprocedure_code IN ( '07', '06', '02' ) and shiftorder. real_qty < shiftorder.plan_qty OPTION 输入.produce_date <> "" @@ -379,9 +384,6 @@ IF 输入.flag = "14" OPTION 输入.worksection_type_scode <> "" workprocedure.worksection_type_scode = 输入.worksection_type_scode ENDOPTION - OPTION 输入.produce_date <> "" - shiftorder.produce_date = 输入.produce_date - ENDOPTION ENDSELECT ENDQUERY ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/QDEVICE_SCREEN.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/QDEVICE_SCREEN.wql index 6b2eb9ff..79153a6b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/QDEVICE_SCREEN.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/QDEVICE_SCREEN.wql @@ -68,10 +68,14 @@ FROM pdm_bi_devicerunstatusrecord run LEFT JOIN pdm_bi_device device ON device.device_id = run.device_id + WHERE + run.status_type = '05' + AND + run.start_time LIKE 输入.today GROUP BY - run.device_id - ORDER BY err_num desc - LIMIT 10 + run.device_id + ORDER BY err_num desc + LIMIT 10 ENDSELECT ENDQUERY ENDIF @@ -151,10 +155,10 @@ LEFT JOIN pdm_bi_device device ON device.device_id = run.device_id WHERE run.status_type = '05' - AND DATE_SUB( CURDATE(), INTERVAL 10 DAY ) <= date( start_time ) + AND DATE_SUB( CURDATE(), INTERVAL 30 DAY ) <= date( start_time ) GROUP BY run.device_id - LIMIT 10 + ENDSELECT ENDQUERY ENDIF @@ -198,17 +202,17 @@ IF 输入.flag = "9" QUERY SELECT DISTINCT - device.device_id + device.device_id FROM - pdm_bi_device device - LEFT JOIN mps_bd_produceshiftorder shift ON shift.device_id = device.device_id - LEFT JOIN pdm_bi_devicerunstatusrecord run ON run.device_id = device.device_id + pdm_bi_device device + INNER JOIN mps_bd_produceshiftorder shift ON shift.device_id = device.device_id + INNER JOIN pdm_bi_devicerunstatusrecord run ON run.device_id = device.device_id AND IFNULL(run.end_time,'') ='' WHERE - shift.is_delete = '0' + shift.is_delete = '0' AND - shift.order_status <> '04' + shift.order_status <> '04' AND - (run.status_type <> '05' OR (run.status_type = '05' AND IFNULL(run.end_time,'') <> '') OR run.status_type IS NULL) + run.status_type <> '05' OPTION 输入.workprocedure_id <> "" device.workprocedure_id = 输入.workprocedure_id ENDOPTION @@ -241,7 +245,7 @@ device.device_code, device.device_name, pro.workprocedure_name, - (case when run.status_type is null then '关机' + (case when run.status_type = '01' then '关机' when run.status_type = '02' then '开机' when run.status_type = '03' then '生产中' when run.status_type = '04' then '待机' diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceshiftorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceshiftorderController.java index 781d9ab8..95863ed3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceshiftorderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceshiftorderController.java @@ -15,12 +15,13 @@ import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; /** -* @author qinx -* @date 2022-05-24 -**/ + * @author qinx + * @date 2022-05-24 + **/ @RestController @RequiredArgsConstructor @Api(tags = "工单管理") @@ -34,24 +35,35 @@ public class ProduceshiftorderController { @Log("查询工单") @ApiOperation("查询工单") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity query(@RequestParam Map whereJson, Pageable page){ - return new ResponseEntity<>(produceshiftorderService.queryAll(whereJson,page),HttpStatus.OK); + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(produceshiftorderService.queryAll(whereJson, page), HttpStatus.OK); } @PostMapping @Log("新增工单") @ApiOperation("新增工单") //@PreAuthorize("@el.check('produceshiftorder:add')") - public ResponseEntity create(@Validated @RequestBody ProduceshiftorderDto dto){ + public ResponseEntity create(@Validated @RequestBody ProduceshiftorderDto dto) { produceshiftorderService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); } + @PostMapping("/addRows") + @Log("批量新增工单") + @ApiOperation("批量新增工单") + //@PreAuthorize("@el.check('produceshiftorder:add')") + public ResponseEntity create(@Validated @RequestBody List rows) { + for (ProduceshiftorderDto dto : rows) { + produceshiftorderService.create(dto); + } + return new ResponseEntity<>(HttpStatus.CREATED); + } + @PutMapping @Log("修改工单") @ApiOperation("修改工单") //@PreAuthorize("@el.check('produceshiftorder:edit')") - public ResponseEntity update(@Validated @RequestBody ProduceshiftorderDto dto){ + public ResponseEntity update(@Validated @RequestBody ProduceshiftorderDto dto) { produceshiftorderService.update(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -69,7 +81,7 @@ public class ProduceshiftorderController { @Log("工单下发") @ApiOperation("工单下发") //@PreAuthorize("@el.check('produceshiftorder:edit')") - public ResponseEntity submits(@RequestBody JSONObject param){ + public ResponseEntity submits(@RequestBody JSONObject param) { produceshiftorderService.submits(param); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -78,23 +90,23 @@ public class ProduceshiftorderController { @Log("根据登录用户设备下拉") @ApiOperation("根据登录用户设备下拉") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity getDevice(@RequestBody JSONObject param){ - return new ResponseEntity<>(produceshiftorderService.getDevice(param),HttpStatus.OK); + public ResponseEntity getDevice(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.getDevice(param), HttpStatus.OK); } @PostMapping("/getTable") @Log("获取工单生产记录") @ApiOperation("获取工单生产记录") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity getTable(@RequestBody JSONObject param){ - return new ResponseEntity<>(produceshiftorderService.getTable(param),HttpStatus.OK); + public ResponseEntity getTable(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.getTable(param), HttpStatus.OK); } @PostMapping("/openStart") @Log("看板开工") @ApiOperation("看板开工") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity openStart(@RequestBody JSONObject param){ + public ResponseEntity openStart(@RequestBody JSONObject param) { produceshiftorderService.openStart(param); return new ResponseEntity<>(HttpStatus.OK); } @@ -103,7 +115,7 @@ public class ProduceshiftorderController { @Log("看板报工") @ApiOperation("看板报工") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity saveReport(@RequestBody JSONObject param){ + public ResponseEntity saveReport(@RequestBody JSONObject param) { produceshiftorderService.saveReport(param); return new ResponseEntity<>(HttpStatus.OK); } @@ -112,7 +124,7 @@ public class ProduceshiftorderController { @Log("看板强制完成") @ApiOperation("看板强制完成") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity finish(@RequestBody JSONObject param){ + public ResponseEntity finish(@RequestBody JSONObject param) { produceshiftorderService.finish(param); return new ResponseEntity<>(HttpStatus.OK); } @@ -121,15 +133,15 @@ public class ProduceshiftorderController { @Log("获取当前报工记录") @ApiOperation("获取当前报工记录") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity getReportWork(@RequestBody JSONObject param){ - return new ResponseEntity<>(produceshiftorderService.getReportWork(param),HttpStatus.OK); + public ResponseEntity getReportWork(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.getReportWork(param), HttpStatus.OK); } @PostMapping("/forceFinish") @Log("工单强制完成") @ApiOperation("工单强制完成") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity forceFinish(@RequestBody JSONObject param){ + public ResponseEntity forceFinish(@RequestBody JSONObject param) { produceshiftorderService.forceFinish(param); return new ResponseEntity<>(HttpStatus.OK); } @@ -138,8 +150,8 @@ public class ProduceshiftorderController { @Log("获取当前工单下的工单生产记录") @ApiOperation("获取当前工单下的工单生产记录") //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity getDtl(@RequestBody JSONObject param){ - return new ResponseEntity<>(produceshiftorderService.getDtl(param),HttpStatus.OK); + public ResponseEntity getDtl(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.getDtl(param), HttpStatus.OK); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/ProduceshiftorderDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/ProduceshiftorderDto.java index 7445e363..06f65c9c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/ProduceshiftorderDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/ProduceshiftorderDto.java @@ -102,4 +102,6 @@ public class ProduceshiftorderDto implements Serializable { private Long device_id; private Long sale_id; + + private Integer orderNum; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java index 3b4a8d31..f92f7ce5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java @@ -13,6 +13,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.exception.BadRequestException; import org.nl.modules.security.service.dto.JwtUserDto; +import org.nl.modules.system.service.UserService; +import org.nl.modules.system.service.dto.UserDto; import org.nl.modules.system.util.CodeUtil; import org.nl.utils.SecurityUtils; import org.nl.wms.basedata.master.service.ClassstandardService; @@ -22,6 +24,7 @@ import org.nl.wms.mps.service.dto.ProduceshiftorderDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.nl.wql.util.WqlUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,6 +45,9 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService { private final ClassstandardService classstandardService; private final WmsToAcsService wmsToAcsService; + @Autowired + UserService userService; + @Override public Map queryAll(Map whereJson, Pageable page) { String produceorder_code = MapUtil.getStr(whereJson, "produceorder_code"); @@ -83,7 +89,24 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService { if (StrUtil.isNotEmpty(sale_id)) { map.put("sale_id", "%" + sale_id + "%"); } + WQLObject wo = WQLObject.getWQLObject("mps_bd_macoperaterecord"); JSONObject jsonObject = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "ShiftOrder.update_time desc"); + JSONArray jsonArray = jsonObject.getJSONArray("content"); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject arrayJSONObject = jsonArray.getJSONObject(i); + String produceorder_id = arrayJSONObject.getString("produceorder_id"); + JSONArray resultJSONArray = wo.query("produceorder_id = '" + produceorder_id + "'", "operatetime_start desc").getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(resultJSONArray)){ + JSONObject resultJSONArrayJSONObject = resultJSONArray.getJSONObject(0); + String jockey_id = resultJSONArrayJSONObject.getString("jockey_id"); + UserDto user = userService.findById(Long.valueOf(jockey_id)); + String nick_name = ""; + if (ObjectUtil.isNotEmpty(user)){ + nick_name = user.getNickName(); + } + arrayJSONObject.put("jockey_name",nick_name); + } + } return jsonObject; } @@ -118,27 +141,31 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService { @Override @Transactional(rollbackFor = Exception.class) public void create(ProduceshiftorderDto dto) { - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getNickName(); - String now = DateUtil.now(); - JwtUserDto currentUser = (JwtUserDto) SecurityUtils.getCurrentUser(); - Long deptId = currentUser.getDeptId(); - String newCode = CodeUtil.getNewCode("PDM_SHIFTORDER"); - dto.setProduceorder_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setProduceorder_code(newCode); - dto.setProducedeviceorder_code(newCode); - dto.setOrder_status("00"); - dto.setCreate_id(currentUserId); - dto.setCreate_name(nickName); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - dto.setUpdate_time(now); - dto.setCreate_time(now); - WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - json.put("sysdeptid", deptId); - json.put("syscompanyid", deptId); - wo.insert(json); + Integer orderNum = dto.getOrderNum(); + for (Integer i = 0; i < orderNum; i++) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + JwtUserDto currentUser = (JwtUserDto) SecurityUtils.getCurrentUser(); + Long deptId = currentUser.getDeptId(); + String newCode = CodeUtil.getNewCode("PDM_SHIFTORDER"); + dto.setProduce_date(dto.getProduce_date().substring(0,10)); + dto.setProduceorder_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setProduceorder_code(newCode); + dto.setProducedeviceorder_code(newCode); + dto.setOrder_status("00"); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + json.put("sysdeptid", deptId); + json.put("syscompanyid", deptId); + wo.insert(json); + } } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/MPS_PRODUCEDURE001.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/MPS_PRODUCEDURE001.wql index dba05de2..43930318 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/MPS_PRODUCEDURE001.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/MPS_PRODUCEDURE001.wql @@ -63,9 +63,12 @@ WorkProcedure.workprocedure_code, WorkProcedure.workprocedure_name, classstandard.class_id, - classstandard.class_name + classstandard.class_name, + device.device_code, + device.device_name FROM MPS_BD_ProduceShiftOrder ShiftOrder + left join pdm_bi_device device on ShiftOrder.device_id = device.device_id LEFT JOIN md_me_materialbase material ON material.material_id = ShiftOrder.material_id LEFT JOIN PDM_BI_WorkProcedure WorkProcedure ON WorkProcedure.workprocedure_id = ShiftOrder.workprocedure_id LEFT JOIN md_pb_classstandard classstandard ON classstandard.class_id = material.product_series diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index 2238c466..155ba657 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls differ diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml index 155cdf15..bb6caeb9 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml @@ -1,5 +1,5 @@ server: - port: 8010 + port: 8011 #海亮sqlserver erp: sqlserver: @@ -18,11 +18,11 @@ spring: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy #url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} #password: ${DB_PWD:P@ssw0rd} #password: ${DB_PWD:root} - password: ${DB_PWD:Root.123456} + password: ${DB_PWD:password} # 初始连接数 initial-size: 5 # 最小连接数 @@ -68,14 +68,14 @@ spring: multi-statement-alagvslow: true data: mongodb: - host: 47.111.78.178 + host: 127.0.0.1 port: 27017 database: nlwms redis: #数据库索引 database: ${REDIS_DB:1} - host: ${REDIS_HOST:47.111.78.178} + host: ${REDIS_HOST:127.0.0.1} # host: ${REDIS_HOST:localhost} port: ${REDIS_PORT:6379} password: ${REDIS_PWD:} @@ -173,5 +173,5 @@ jetcache: maxIdle: 200 maxTotal: 1000 uri: - - redis://47.111.78.178:6379 + - redis://127.0.0.1:6379 diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml b/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml index 59ed99d8..ee130584 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml @@ -8,7 +8,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.225}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:123456} #password: ${DB_PWD:Root.123456} @@ -57,14 +57,14 @@ spring: multi-statement-alagvslow: true data: mongodb: - host: 192.168.46.225 + host: 192.168.46.5 port: 27017 database: nlacs redis: #数据库索引 database: ${REDIS_DB:6} - host: ${REDIS_HOST:192.168.46.225} + host: ${REDIS_HOST:192.168.46.5} #host: ${REDIS_HOST:localhost} port: ${REDIS_PORT:6379} password: ${REDIS_PWD:} @@ -162,5 +162,5 @@ jetcache: maxIdle: 200 maxTotal: 1000 uri: - - redis://localhost:6379 + - redis://192.168.46.5:6379 diff --git a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml index 72d9e4c2..e9a3d0a9 100644 --- a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -123,7 +123,7 @@ https://juejin.cn/post/6844903775631572999 - + diff --git a/mes/qd/.env.development b/mes/qd/.env.development index 809e77ff..e37a9a4f 100644 --- a/mes/qd/.env.development +++ b/mes/qd/.env.development @@ -1,8 +1,8 @@ ENV = 'development' # 接口地址 -VUE_APP_BASE_API = 'http://localhost:8010' -VUE_APP_WS_API = 'ws://localhost:8010' +VUE_APP_BASE_API = 'http://localhost:8011' +VUE_APP_WS_API = 'ws://localhost:8011' # 是否启用 babel-plugin-dynamic-import-node插件 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/mes/qd/src/api/wms/mps/produceshiftorder.js b/mes/qd/src/api/wms/mps/produceshiftorder.js index fc7e636a..76f7d6cf 100644 --- a/mes/qd/src/api/wms/mps/produceshiftorder.js +++ b/mes/qd/src/api/wms/mps/produceshiftorder.js @@ -8,6 +8,14 @@ export function add(data) { }) } +export function addRows(data) { + return request({ + url: 'api/produceshiftorder/addRows', + method: 'post', + data + }) +} + export function del(ids) { return request({ url: 'api/produceshiftorder/', @@ -96,4 +104,4 @@ export function getDtl(data) { }) } -export default { add, edit, del, submits, getDevice, getTable, openStart, saveReport, finish, getReportWork, forceFinish, getDtl } +export default { add, addRows, edit, del, submits, getDevice, getTable, openStart, saveReport, finish, getReportWork, forceFinish, getDtl } diff --git a/mes/qd/src/components/Crud/crud.js b/mes/qd/src/components/Crud/crud.js index 3efbbd29..bf10ea42 100644 --- a/mes/qd/src/components/Crud/crud.js +++ b/mes/qd/src/components/Crud/crud.js @@ -1,5 +1,5 @@ -import { download, initData } from '@/api/data' -import { downloadFile, parseTime } from '@/utils/index' +import {download, initData} from '@/api/data' +import {downloadFile, parseTime} from '@/utils/index' import Vue from 'vue' /** @@ -183,6 +183,16 @@ function CRUD(options) { callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form) callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) }, + /** + * 启动复制新增 + * @param {*} data 数据项 + */ + toCopy(data) { + crud.resetForm(JSON.parse(JSON.stringify(data))) + crud.status.add = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form) + callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) + }, /** * 启动编辑 * @param {*} data 数据项 @@ -387,7 +397,7 @@ function CRUD(options) { /** * 获取查询参数 */ - getQueryParams: function() { + getQueryParams: function () { // 清除参数无值的情况 Object.keys(crud.query).length !== 0 && Object.keys(crud.query).forEach(item => { if (crud.query[item] === null || crud.query[item] === '') crud.query[item] = undefined diff --git a/mes/qd/src/views/wms/mps/produce/AddDialog.vue b/mes/qd/src/views/wms/mps/produce/AddDialog.vue new file mode 100644 index 00000000..db929409 --- /dev/null +++ b/mes/qd/src/views/wms/mps/produce/AddDialog.vue @@ -0,0 +1,349 @@ + + + + diff --git a/mes/qd/src/views/wms/mps/produce/index.vue b/mes/qd/src/views/wms/mps/produce/index.vue index cba88d07..4552a483 100644 --- a/mes/qd/src/views/wms/mps/produce/index.vue +++ b/mes/qd/src/views/wms/mps/produce/index.vue @@ -129,8 +129,29 @@ type="success" icon="el-icon-position" size="mini" - :disabled="is_disabled(crud.selections.length,crud.selections[0])" - @click="submits(crud.selections[0])" + :disabled="crud.selections.length !== 1" + @click="crud.toCopy(crud.selections[0])" + > + 复制新增 + + + 批量新增 + + 下发 @@ -235,12 +256,16 @@ + + + {{ item.label }} +                         + + + @@ -367,11 +400,11 @@ import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure' import MaterDtl from '@/views/wms/pub/MaterDialog' -import Treeselect, {LOAD_CHILDREN_OPTIONS} from '@riophae/vue-treeselect' +import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' import '@riophae/vue-treeselect/dist/vue-treeselect.css' -import crudMaterialbase from '@/api/wms/basedata/master/materialbase' import ViewDialog from '@/views/wms/mps/produce/ViewDialog' import crudClassstandard from '@/api/wms/basedata/master/classstandard' +import AddDialog from '@/views/wms/mps/produce/AddDialog' const defaultForm = { produceorder_id: null, @@ -391,7 +424,7 @@ const defaultForm = { realproducestart_date: null, realproduceend_date: null, order_status: '00', - is_needmove: '1', + is_needmove: '0', order_type_scode: '01', create_id: null, create_name: null, @@ -406,11 +439,12 @@ const defaultForm = { device_id: null, is_canupdate_update: '1', material_spec: null, - sale_id: null + sale_id: null, + orderNum: 1 } export default { name: 'Produceshiftorder', - components: { pagination, crudOperation, rrOperation, udOperation, MaterDtl, Treeselect, ViewDialog }, + components: { AddDialog, pagination, crudOperation, rrOperation, udOperation, MaterDtl, Treeselect, ViewDialog }, mixins: [presenter(), header(), form(defaultForm), crud()], dicts: ['PDM_BI_SHIFTTYPE', 'MPS_BD_ORDERSTATUS', 'is_used', 'PDM_BI_ORDERTYPE', 'IS_OR_NOT'], cruds() { @@ -434,6 +468,7 @@ export default { classes3: [], materType: '01', materialShow: false, + addShow: false, workprocedureList: [], order_status: ['-1'], permission: {}, @@ -459,15 +494,6 @@ export default { material_code: [ { required: true, message: '物料编码不能为空', trigger: 'change' } ], - material_weight: [ - { required: true, message: '物料单重不能为空', trigger: 'blur' } - ], - planproducestart_date: [ - { required: true, message: '计划生产开始时间不能为空', trigger: 'blur' } - ], - planproduceend_date: [ - { required: true, message: '计划生产结束时间不能为空', trigger: 'blur' } - ], order_status: [ { required: true, message: '工单状态不能为空', trigger: 'blur' } ], @@ -477,6 +503,9 @@ export default { order_type_scode: [ { required: true, message: '工单类型不能为空', trigger: 'blur' } ], + orderNum: [ + { required: true, message: '生成工单数量不能为空', trigger: 'blur' } + ], is_canupdate_update: [ { required: true, message: '不能为空', trigger: 'blur' } ] @@ -488,6 +517,42 @@ export default { this.initClass3() }, methods: { + initDataPlan() { + const date = this.dateFormatter(new Date()) + const formatter1 = this.dateFormatter1(new Date()) + this.form.planproducestart_date = date + this.form.planproduceend_date = formatter1 + this.form.produce_date = date + }, + change(val) { + const d = new Date() + const year = d.getFullYear() + const month = (d.getMonth() + 1) < 10 ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1) + const day = d.getDate() < 10 ? '0' + d.getDate() : d.getDate() + if (val === '02') { + this.form.planproducestart_date = [year, month, day].join('-') + ' ' + ['18', '30', '00'].join(':') + const day1 = d.getDate() < 10 ? '0' + (d.getDate() + 1) : d.getDate() + 1 + this.form.planproduceend_date = [year, month, day1].join('-') + ' ' + ['07', '30', '00'].join(':') + } + if (val === '01') { + this.form.planproducestart_date = [year, month, day].join('-') + ' ' + ['07', '30', '00'].join(':') + this.form.planproduceend_date = [year, month, day].join('-') + ' ' + ['18', '30', '00'].join(':') + } + }, + dateFormatter(str) { + const d = new Date(str) + const year = d.getFullYear() + const month = (d.getMonth() + 1) < 10 ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1) + const day = d.getDate() < 10 ? '0' + d.getDate() : d.getDate() + return [year, month, day].join('-') + ' ' + ['07', '30', '00'].join(':') + }, + dateFormatter1(str) { + const d = new Date(str) + const year = d.getFullYear() + const month = (d.getMonth() + 1) < 10 ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1) + const day = d.getDate() < 10 ? '0' + d.getDate() : d.getDate() + return [year, month, day].join('-') + ' ' + ['18', '30', '00'].join(':') + }, queryClassId() { const param = { 'class_idStr': this.class_idStr @@ -537,6 +602,9 @@ export default { this.classes3 = data }) }, + querytable() { + this.crud.toQuery() + }, // 工单状态多选搜索 handTaskStatus(value) { this.$forceUpdate() @@ -565,8 +633,18 @@ export default { return parseFloat(row[column.property]).toFixed(2) }, // 下发按钮禁用条件 - is_disabled(len, row) { - if (len === 1 && row.order_status === '00') { + is_disabled(rows) { + var length = rows.length + if (length > 1) { + var flag = false + for (let i = 0; i < rows.length; i++) { + if (rows[i].order_status !== '00') { + flag = true + break + } + } + return flag + } else if (length === 1 && rows[0].order_status === '00') { return false } else { return true @@ -586,11 +664,23 @@ export default { }) }, // 下发 - submits(row) { - crudProduceshiftorder.submits({ produceorder_id: row.produceorder_id }).then(res => { - this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS) - this.crud.toQuery() + submits(rows) { + rows.forEach((item) => { + var produceorder_id = item.produceorder_id + crudProduceshiftorder.submits({ produceorder_id: produceorder_id }).then(res => { + }) }) + this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }, + add() { + this.addShow = true + }, + copyAdd(data) { + this.crud.toCopy(data) + }, + [CRUD.HOOK.beforeToAdd]() { + this.initDataPlan() } } } diff --git a/mes/qd/src/views/wms/pdm/device/index.vue b/mes/qd/src/views/wms/pdm/device/index.vue index db9d94f2..18c07e80 100644 --- a/mes/qd/src/views/wms/pdm/device/index.vue +++ b/mes/qd/src/views/wms/pdm/device/index.vue @@ -14,7 +14,7 @@ class="filter-item" /> - + - + @@ -117,6 +117,18 @@ :min-width="item.width" /> + + +