From 41040484b59676e2e41e0729b5bf1bc27a72e5e3 Mon Sep 17 00:00:00 2001 From: baoge <751575283@qq.com> Date: Tue, 19 Dec 2023 16:38:02 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E5=A2=9E=E5=8A=A0=E8=A7=84=E6=A0=BC?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=88=86=E9=A1=B5=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=8E=92=E4=BA=A7=E9=A1=BA=E5=BA=8F=EF=BC=8C=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=9C=80=E5=90=8E=E8=A7=84=E6=A0=BC=E8=AE=B0=E5=BD=95;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/common/enums/WorkerOrderEnum.java | 3 +- .../impl/ProduceshiftorderServiceImpl.java | 2 +- .../product_manage/bfpdm/wql/QUERY_DEVICE.wql | 6 +- .../device/PdmBiDeviceController.java | 237 +++--- .../PdmProduceWorkorderController.java | 29 +- .../IPdmProduceWorkorderService.java | 7 +- .../dao/mapper/PdmProduceWorkorderMapper.java | 15 + .../dao/mapper/PdmProduceWorkorderMapper.xml | 26 +- .../service/workorder/dto/WorkorderQuery.java | 2 + .../impl/IPdmProduceWorkorderServiceImpl.java | 681 ++++++++------- .../sql/1219排产调整修改.sql.sql | 4 + .../workorder/SpecStatisticDialog.vue | 114 +++ .../product_manage/workorder/adjustDialog.vue | 54 +- .../product_manage/workorder/adjustIndex.vue | 70 +- .../wms/product_manage/workorder/index.vue | 772 +++++++++--------- .../workorder/produceshiftorder.js | 9 + 16 files changed, 1087 insertions(+), 944 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/resources/sql/1219排产调整修改.sql.sql create mode 100644 mes/qd/src/views/wms/product_manage/workorder/SpecStatisticDialog.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java index c2838268..21449c67 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java @@ -17,8 +17,7 @@ public enum WorkerOrderEnum { AUTO_COMPLETE("自动完成", "5"), COMPLETE("完成", "6"), FORCE_COMPLETE("强制完成", "7"), - CANCEL("取消", "8"), - + CANCEL("取消", "8") ; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/ProduceshiftorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/ProduceshiftorderServiceImpl.java index b4e8dab1..400baca5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/ProduceshiftorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/ProduceshiftorderServiceImpl.java @@ -390,7 +390,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ } /** - * 完工操作 + * 完工 * 设备状态枚举1-关机、2-开机、3-生产中、4-待机、5-故障 * * @author gbx diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/bfpdm/wql/QUERY_DEVICE.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/bfpdm/wql/QUERY_DEVICE.wql index 65ad412f..08ac77e6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/bfpdm/wql/QUERY_DEVICE.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/bfpdm/wql/QUERY_DEVICE.wql @@ -79,6 +79,7 @@ "success" ELSE "info" END AS type, d.device_code, + d.aps_device_code, w.device_code FIRST, w.device_code SECOND, CASE @@ -109,7 +110,8 @@ QUERY SELECT workorder.device_code, - mater.material_spec + mater.material_spec, + aps_workorder_no FROM pdm_produce_workorder workorder LEFT JOIN md_me_materialbase mater ON workorder.material_id = mater.material_id @@ -124,8 +126,6 @@ ENDOPTION GROUP BY workorder.device_code,workorder.material_id - ORDER BY - aps_workorder_no ENDSELECT ENDQUERY ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java index cf98d1f3..dc17e2c3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java @@ -28,10 +28,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -42,125 +39,135 @@ import java.util.stream.Collectors; @Api(tags = "生产设备管理") @RequestMapping("/api/device") @Slf4j -public class PdmBiDeviceController{ - @Autowired - private DeviceService deviceService; - @Autowired - private IPdmBiDeviceService iDeviceService; - @Autowired - private IPdmBiWorkprocedureService pdmBiWorkprocedureService; +public class PdmBiDeviceController { + @Autowired + private DeviceService deviceService; + @Autowired + private IPdmBiDeviceService iDeviceService; + @Autowired + private IPdmBiWorkprocedureService pdmBiWorkprocedureService; - @GetMapping - @Log("查询生产设备") - //("查询生产设备") - @SaIgnore - public ResponseEntity query(DeviceQuery query, PageQuery page) { - Page result = iDeviceService.page(page.build(PdmBiDevice.class), query.build()); - return new ResponseEntity<>(TableDataInfo.build(result), HttpStatus.OK); - } + @GetMapping + @Log("查询生产设备") + //("查询生产设备") + @SaIgnore + public ResponseEntity query(DeviceQuery query, PageQuery page) { + Page result = iDeviceService.page(page.build(PdmBiDevice.class), query.build()); + return new ResponseEntity<>(TableDataInfo.build(result), HttpStatus.OK); + } - @PostMapping("/list") - @Log("查询生产设备列表") - //("查询生产设备列表") - @SaIgnore - public ResponseEntity queryList(@RequestBody DeviceQuery query) { - List> list = iDeviceService.listMaps(query.build().select("device_code", "device_name")); - return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); - } + @PostMapping("/list") + @Log("查询生产设备列表") + //("查询生产设备列表") + @SaIgnore + public ResponseEntity queryList(@RequestBody DeviceQuery query) { + List> list = iDeviceService.listMaps(query.build().select("device_code", "device_name")); + return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); + } - @PostMapping - @Log("新增生产设备") - //("新增生产设备") - //@PreAuthorize("@el.check('device:add')") - public ResponseEntity create(@RequestBody JSONObject form) { - PdmBiDevice device = form.toJavaObject(PdmBiDevice.class); - device.setCreate_id(SecurityUtils.getCurrentUserId()); - device.setCreate_name(SecurityUtils.getCurrentNickName()); - device.setCreate_time(DateUtil.now()); - iDeviceService.save(device); - return new ResponseEntity<>(HttpStatus.CREATED); - } + @PostMapping + @Log("新增生产设备") + //("新增生产设备") + //@PreAuthorize("@el.check('device:add')") + public ResponseEntity create(@RequestBody JSONObject form) { + PdmBiDevice device = form.toJavaObject(PdmBiDevice.class); + device.setCreate_id(SecurityUtils.getCurrentUserId()); + device.setCreate_name(SecurityUtils.getCurrentNickName()); + device.setCreate_time(DateUtil.now()); + iDeviceService.save(device); + return new ResponseEntity<>(HttpStatus.CREATED); + } - @PutMapping - @Log("修改生产设备") - //("修改生产设备") - //@PreAuthorize("@el.check('device:edit')") - public ResponseEntity update(@Validated @RequestBody JSONObject form) { - PdmBiDevice device = form.toJavaObject(PdmBiDevice.class); - device.setUpdate_id(SecurityUtils.getCurrentUserId()); - device.setUpdate_name(SecurityUtils.getCurrentNickName()); - device.setUpdate_time(DateUtil.now()); - iDeviceService.updateById(device); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } + @PutMapping + @Log("修改生产设备") + //("修改生产设备") + //@PreAuthorize("@el.check('device:edit')") + public ResponseEntity update(@Validated @RequestBody JSONObject form) { + PdmBiDevice device = form.toJavaObject(PdmBiDevice.class); + device.setUpdate_id(SecurityUtils.getCurrentUserId()); + device.setUpdate_name(SecurityUtils.getCurrentNickName()); + device.setUpdate_time(DateUtil.now()); + iDeviceService.updateById(device); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } - @Log("删除生产设备") - //("删除生产设备") - //@PreAuthorize("@el.check('device:del')") - @DeleteMapping - public ResponseEntity delete(@RequestBody String[] ids) { - deviceService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } + @Log("删除生产设备") + //("删除生产设备") + //@PreAuthorize("@el.check('device:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody String[] ids) { + deviceService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } - @GetMapping("/getWorkprocedure") - @Log("工序下拉") - public ResponseEntity getWorkprocedure() { - return new ResponseEntity<>(pdmBiWorkprocedureService.list(new QueryWrapper().eq("is_used", true)), HttpStatus.OK); - } + @GetMapping("/getWorkprocedure") + @Log("工序下拉") + public ResponseEntity getWorkprocedure() { + return new ResponseEntity<>(pdmBiWorkprocedureService.list(new QueryWrapper().eq("is_used", true)), HttpStatus.OK); + } - @GetMapping("/getDeviceList") - @Log("设备下拉框") - //("设备下拉框") - //@PreAuthorize("@el.check('device:list')") - public ResponseEntity getDeviceList() { - return new ResponseEntity<>(deviceService.getDeviceList(), HttpStatus.OK); - } + @GetMapping("/getDeviceList") + @Log("设备下拉框") + //("设备下拉框") + //@PreAuthorize("@el.check('device:list')") + public ResponseEntity getDeviceList() { + return new ResponseEntity<>(deviceService.getDeviceList(), HttpStatus.OK); + } - @PostMapping("/query") - @Log("根据选项卡下标获取设备信息") - //("根据选项卡下标获取设备信息") - public ResponseEntity query(@RequestBody String card_index) { - //工单排产调整通过工序选项卡下标获取设备信息 - WorkOrderImportEnum workOrderImportEnum = WorkOrderImportEnum.getIdByIndex(Integer.parseInt(card_index)); - Map param = new HashMap(); - param.put("flag", "2"); - param.put("workprocedure_id", workOrderImportEnum.getId()); - JSONArray array = WQL.getWO("QUERY_DEVICE").addParamMap(param).process().getResultJSONArray(0); - // 收集需要查询的参数 - List deviceCodes = new ArrayList<>(); - List deviceList = new ArrayList<>(); - array.stream().map(obj -> (JSONObject) obj).filter(obj -> obj.get("first") != null).forEach(obj -> - { - deviceCodes.add(obj.getString("first")); - deviceList.add(obj); - }); - if(deviceList.size() > 0) { - String joinedDeviceCodes = deviceCodes.stream().filter(s -> !s.trim().isEmpty()).map(s -> "'" + s + "'").collect(Collectors.joining(",")); - param.put("flag", "3"); - param.put("device_code", joinedDeviceCodes); - JSONArray specInfoMap = WQL.getWO("QUERY_DEVICE").addParamMap(param).process().getResultJSONArray(0); - Map> groupedByDeviceCode = specInfoMap.stream().map(obj -> (JSONObject) obj).collect(Collectors.groupingBy(specInfo -> specInfo.getString("device_code"))); - groupedByDeviceCode.forEach((deviceCode, group) -> - { - for(JSONObject device : deviceList) { - if(StringUtils.isNotBlank(device.getString("first"))) { - if(device.getString("first").equals(deviceCode)) { - device.put("type","success"); - device.put("first", group.get(0).getString("material_spec")); - if(group.size() > 1) { - device.put("second", group.get(1).getString("material_spec")); - } - } - if(device.getString("second").equals(device.getString("device_code"))) - { - device.put("second",""); - } - } + @PostMapping("/query") + @Log("根据选项卡下标获取设备信息") + //("根据选项卡下标获取设备信息") + public ResponseEntity query(@RequestBody String card_index) { + //工单排产调整通过工序选项卡下标获取设备信息 + WorkOrderImportEnum workOrderImportEnum = WorkOrderImportEnum.getIdByIndex(Integer.parseInt(card_index)); + Map param = new HashMap(); + param.put("flag", "2"); + param.put("workprocedure_id", workOrderImportEnum.getId()); + JSONArray array = WQL.getWO("QUERY_DEVICE").addParamMap(param).process().getResultJSONArray(0); + // 收集需要查询的参数 + List deviceCodes = new ArrayList<>(); + List deviceList = new ArrayList<>(); + array.stream().map(obj -> (JSONObject) obj).filter(obj -> obj.get("first") != null).forEach(obj -> + { + deviceCodes.add(obj.getString("first")); + deviceList.add(obj); + }); + if (deviceList.size() > 0) { + String joinedDeviceCodes = deviceCodes.stream().filter(s -> !s.trim().isEmpty()).map(s -> "'" + s + "'").collect(Collectors.joining(",")); + param.put("flag", "3"); + param.put("device_code", joinedDeviceCodes); + JSONArray specInfoMap = WQL.getWO("QUERY_DEVICE").addParamMap(param).process().getResultJSONArray(0); + Map> groupedByDeviceCode = specInfoMap.stream().map(obj -> (JSONObject) obj).collect(Collectors.groupingBy(specInfo -> specInfo.getString("device_code"))); + groupedByDeviceCode.forEach((deviceCode, group) -> + { + for (JSONObject device : deviceList) { + //设备有分派工单第一个工单的规格和第二个工单的规格 + if (StringUtils.isNotBlank(device.getString("first"))) { + if (device.getString("first").equals(deviceCode)) { + device.put("type", "success"); + List groups = group.stream() + .filter(r -> StringUtils.isNotBlank(r.getString("material_spec"))) + .sorted(Comparator.comparingInt(r -> Integer.parseInt(r.getString("aps_workorder_no")))) + .collect(Collectors.toList()); + if (groups.size() > 0) { + device.put("first", groups.get(0).get("material_spec")); + if (groups.size() > 1) { + device.put("second", groups.get(1).get("material_spec")); + } + } + } + if (device.getString("second").equals(device.getString("device_code"))) { + device.put("second", ""); + } } - }); - } - return new ResponseEntity<>(deviceList, HttpStatus.OK); - } + else{ + //设备无分派工单,显示最后一次生产的规格 + device.put("first", device.get("aps_device_code")); + } + } + }); + } + return new ResponseEntity<>(deviceList, HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java index 948f96b5..8340f4a3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java @@ -233,13 +233,32 @@ public class PdmProduceWorkorderController{ return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.queryAdjustWorkOrder(query)), HttpStatus.OK); } - @PostMapping("/queryStatisticsSpec") - @Log("根据规格统计工单信息") - //("根据规格统计工单信息") - public ResponseEntity queryStatisticsSpec(@RequestBody WorkorderQuery query) { - return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.queryStatisticsSpec(query)), HttpStatus.OK); +// @PostMapping("/queryStatisticsSpec1") +// @Log("根据规格统计工单信息") +// //("根据规格统计工单信息") +// public ResponseEntity queryStatisticsSpec1(@RequestBody WorkorderQuery query) { +// return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.queryStatisticsSpec(query)), HttpStatus.OK); +// } + + @PostMapping("/specOptionsSelect") + @Log("规格统计规格下拉框") + //("规格统计规格下拉框") + public ResponseEntity specOptionsSelect() { + return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.specOptionsSelect()), HttpStatus.OK); } + + + @GetMapping("/queryStatisticsSpec") + @Log("根据规格统计工单信息") + public ResponseEntity queryStatisticsSpec(WorkorderQuery query, PageQuery page) { + return new ResponseEntity<>(iPdmProduceWorkorderService.queryStatisticsSpec(query, page), HttpStatus.OK); + } + + + + + @PostMapping("/queryMouldsSpec") @Log("根据设备统计装车信息") //("根据设备统计装车信息") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java index b2ad24b8..4d8ab02d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java @@ -204,7 +204,12 @@ public interface IPdmProduceWorkorderService extends IService queryAdjustWorkOrder(WorkorderQuery param); - List queryStatisticsSpec(WorkorderQuery param); + TableDataInfo queryStatisticsSpec(WorkorderQuery query,PageQuery page); + + List specOptionsSelect(); + + + List> queryMouldsSpec(WorkorderQuery param); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java index 79d6bc0f..1526d808 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java @@ -70,6 +70,15 @@ public interface PdmProduceWorkorderMapper extends BaseMapper queryDeviceCount(@Param("query") WorkorderQuery query); + /** + * 规格下拉框 + * + * @param + * @return + */ + List specOptionsSelect(); + + /** * 根据规格统计工单信息 @@ -79,6 +88,12 @@ public interface PdmProduceWorkorderMapper extends BaseMapper queryStatisticsSpec(@Param("query") WorkorderQuery query); + + + + + + /** * 根据设备统计装车信息 * diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml index bf46a648..c1ab357a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml @@ -512,6 +512,23 @@ ${query.orderBy} + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java index 7d4594ae..985dd445 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java @@ -23,6 +23,7 @@ public class WorkorderQuery extends BaseQuery { private String titleSort; private String material; private String material_code; + private String material_id; private String order_status; private String plan_start_time; private String plan_end_time; @@ -37,6 +38,7 @@ public class WorkorderQuery extends BaseQuery { private String is_error; private Integer tabIndex; private String orderBy; + private String orderBys; @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index 6d509a28..b1bc7cb0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.poi.excel.ExcelUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -180,12 +181,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl list = this.list(new QueryWrapper().nested(i -> i.isNull("workorder_code").or().eq("workorder_code", "0").or().eq("workorder_code", "").or().eq("material_id", "0").or().eq("workprocedure_id", "0").or().eq("create_type", "3")).in("workorder_id", ids)); //aps排产完成的工单,生成工单编号再下发 if (list.size() > 0) { - list.forEach(r -> - { + list.forEach(r -> { UpdateWrapper updateWrapper = new UpdateWrapper(); updateWrapper.eq("workorder_id", r.getWorkorder_id()); //updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); @@ -279,8 +276,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl> groupedWorkorders = workorders.stream().collect(Collectors.groupingBy(workorder -> workorder.getWorkprocedure_id() + "-" + workorder.getDevice_code())); - groupedWorkorders.forEach((workprocedureId, workorderList) -> - { + groupedWorkorders.forEach((workprocedureId, workorderList) -> { if (!workorderList.isEmpty() && workprocedureId.contains("-")) { //4.批量下发,校验工单顺序是否相邻或相等,校验批量工单中的每个工单的设备,是否存在已下发的工单,如果存在,不允许继续下发 compareWorkorderAdjoin(workorderList); @@ -360,10 +356,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", pdmProduceWorkorder.getWorkorder_id()).set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"))); } - BigDecimal report_qty = pdmProduceWorkorder.getReport_qty(); - if (report_qty == null){ - report_qty = new BigDecimal(0); - } + BigDecimal report_qty = pdmProduceWorkorder.getReport_qty(); + if (report_qty == null) { + report_qty = new BigDecimal(0); + } // try { // //根据计划实际生产时间获取计算对应APS实际生产时间 // Date interval2End = getDateEndFromInterval(pdmProduceWorkorder.getRealproducestart_date(), pdmProduceWorkorder.getPlanproduceend_date(), pdmProduceWorkorder.getAps_realproducestart_date()); @@ -385,10 +381,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq(MdMeMaterialbase::getMaterial_id, workorder.getMaterial_id())); + if (materialbase != null) { + deviceService.update(new UpdateWrapper().eq("device_code", workorder.getDevice_code()).set("aps_device_code", StringUtils.isBlank(materialbase.getMaterial_spec()) ? "" : materialbase.getMaterial_spec())); + } + } + /** * 工单报工 */ @@ -443,6 +452,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl> read = excelReader.read(); - // 循环获取的数据 - List data = new ArrayList<>(); - Map errorMap = new HashMap(); - List workprodures = new ArrayList<>(); - List materialSpecs = new ArrayList<>(); - List persons = new ArrayList<>(); - row: - for(int i = 0; i < read.size(); i++) { - List list = read.get(i); - if(ObjectUtil.isEmpty(list)) { - continue; - } - PdmProduceWorkorder workorder = new PdmProduceWorkorder(); - packageForm(workorder); - for(int j = 0; j < list.size(); j++) { - String col = String.valueOf(list.get(j)); - 解析cell: - { //如果是第一行 为生产日期 - if(i == 0 && j == 0) { - continue row; - } - //如果第一列包含规格二字 则为表头 结束内循环列 - if(j == 0 && col.contains("班次")) { - continue row; - } - if(j == 0) { - //物料 - workorder.setShift_type_scode("晚班".equals(col) ? "2" : "1"); - } - if(j == 1) { - if("1".equals(workorder.getShift_type_scode())) { - workorder.setPlanproduceend_date(col.substring(0, col.indexOf(" ")) + " 18:30:00"); - workorder.setPlanproducestart_date(col.substring(0, col.indexOf(" ")) + " 07:30:00"); - } - else{ - workorder.setPlanproducestart_date(col.substring(0, col.indexOf(" ")) + " 18:30:00"); - workorder.setPlanproduceend_date(col.substring(0, col.indexOf(" ")) + " 07:30:00"); - } - } - if(j == 2) { - //物料 - materialSpecs.add(col); - workorder.setMaterial_id(col); - } - if(j == 3) { - workprodures.add(col); - workorder.setWorkprocedure_id(col); - } - if(j == 4) { - //设备 A1_TW_ - String s = col.replaceAll("-", "_"); - if (StringUtils.isNotEmpty(s)){ - workorder.setDevice_code("A1_TW_" + s); - } - } - if(j == 7) { - //单重 - BigDecimal bigDecimal = BigDecimal.valueOf(Double.parseDouble(col) * 1000); + private void 推弯(InputStream inputStream) { + ExcelReader excelReader = ExcelUtil.getReader(inputStream, "推弯计划表"); + List> read = excelReader.read(); + // 循环获取的数据 + List data = new ArrayList<>(); + Map errorMap = new HashMap(); + List workprodures = new ArrayList<>(); + List materialSpecs = new ArrayList<>(); + List persons = new ArrayList<>(); + row: + for (int i = 0; i < read.size(); i++) { + List list = read.get(i); + if (ObjectUtil.isEmpty(list)) { + continue; + } + PdmProduceWorkorder workorder = new PdmProduceWorkorder(); + packageForm(workorder); + for (int j = 0; j < list.size(); j++) { + String col = String.valueOf(list.get(j)); + 解析cell: + { //如果是第一行 为生产日期 + if (i == 0 && j == 0) { + continue row; + } + //如果第一列包含规格二字 则为表头 结束内循环列 + if (j == 0 && col.contains("班次")) { + continue row; + } + if (j == 0) { + //物料 + workorder.setShift_type_scode("晚班".equals(col) ? "2" : "1"); + } + if (j == 1) { + if ("1".equals(workorder.getShift_type_scode())) { + workorder.setPlanproduceend_date(col.substring(0, col.indexOf(" ")) + " 18:30:00"); + workorder.setPlanproducestart_date(col.substring(0, col.indexOf(" ")) + " 07:30:00"); + } else { + workorder.setPlanproducestart_date(col.substring(0, col.indexOf(" ")) + " 18:30:00"); + workorder.setPlanproduceend_date(col.substring(0, col.indexOf(" ")) + " 07:30:00"); + } + } + if (j == 2) { + //物料 + materialSpecs.add(col); + workorder.setMaterial_id(col); + } + if (j == 3) { + workprodures.add(col); + workorder.setWorkprocedure_id(col); + } + if (j == 4) { + //设备 A1_TW_ + String s = col.replaceAll("-", "_"); + if (StringUtils.isNotEmpty(s)) { + workorder.setDevice_code("A1_TW_" + s); + } + } + if (j == 7) { + //单重 + BigDecimal bigDecimal = BigDecimal.valueOf(Double.parseDouble(col) * 1000); // workorder.setMaterial_weight(bigDecimal.setScale(3, RoundingMode.HALF_UP)); - } - if(j == 8) { - persons.add(col); - workorder.setCurrent_produce_person_id(col); - } - if(j == 9) { - workorder.setPlan_qty(new BigDecimal(Long.parseLong(col))); - } - if(j == 13) { - workorder.setIs_needmove("是".equals(col)); - } - if(j == 14) { - workorder.setRemark(col); - } } - } - if(CollectionUtils.isEmpty(errorMap)) { - data.add(workorder); - } - } - List tmp_material_specs = materialbaseService.list(new QueryWrapper().in("material_spec", materialSpecs)); - List tmp_sysUsers = userService.list(new QueryWrapper().in("person_name", persons)); - List tmp_workprocedure_names = workprocedureService.list(new QueryWrapper().in("workprocedure_name", workprodures)); - Map collect = tmp_workprocedure_names.stream().collect(HashMap::new, (k, v) -> k.put(v.getWorkprocedure_name(), v), HashMap::putAll); - Map users = tmp_sysUsers.stream().collect(HashMap::new, (k, v) -> k.put(v.getPerson_name(), v), HashMap::putAll); - Map> materialspecs = tmp_material_specs.stream().collect(Collectors.groupingBy(MdMeMaterialbase::getMaterial_spec)); - for(int i = 0; i < data.size(); i++) { - PdmProduceWorkorder workorder = data.get(i); - SysUser sysUser = users.get(workorder.getCurrent_produce_person_id()); - if(sysUser == null) { - //errorMap.put("第" + (i + 1) + "行:", "账号:" + workorder.getCurrent_produce_person_id() + "不存在"); - workorder.setCurrent_produce_person_id(null); - } - else{ - workorder.setCurrent_produce_person_id(sysUser.getUser_id()); - } - PdmBiWorkprocedure workprocedure = collect.get(workorder.getWorkprocedure_id()); - if(workprocedure == null) { - errorMap.put("第" + (i + 1) + "行:", "工序名称:" + workorder.getWorkprocedure_id() + "不存在"); - } - else{ - workorder.setWorkprocedure_id(workprocedure.getWorkprocedure_id()); - } - List mdMeMaterialbases = materialspecs.get(workorder.getMaterial_id()); - if(!CollectionUtils.isEmpty(mdMeMaterialbases)) { - if(mdMeMaterialbases.size() == 1) { - workorder.setMaterial_id(mdMeMaterialbases.get(0).getMaterial_id()); + if (j == 8) { + persons.add(col); + workorder.setCurrent_produce_person_id(col); } - else{ - Optional first = mdMeMaterialbases.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S") && Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))).findFirst(); - if(first.isPresent()) { - workorder.setMaterial_id(first.get().getMaterial_id()); - } - else{ - errorMap.put("第" + (i + 1) + "行:", "物料规格:" + workorder.getMaterial_id() + "不存在"); - } + if (j == 9) { + workorder.setPlan_qty(new BigDecimal(Long.parseLong(col))); } + if (j == 13) { + workorder.setIs_needmove("是".equals(col)); + } + if (j == 14) { + workorder.setRemark(col); + } + } + } + if (CollectionUtils.isEmpty(errorMap)) { + data.add(workorder); + } + } + List tmp_material_specs = materialbaseService.list(new QueryWrapper().in("material_spec", materialSpecs)); + List tmp_sysUsers = userService.list(new QueryWrapper().in("person_name", persons)); + List tmp_workprocedure_names = workprocedureService.list(new QueryWrapper().in("workprocedure_name", workprodures)); + Map collect = tmp_workprocedure_names.stream().collect(HashMap::new, (k, v) -> k.put(v.getWorkprocedure_name(), v), HashMap::putAll); + Map users = tmp_sysUsers.stream().collect(HashMap::new, (k, v) -> k.put(v.getPerson_name(), v), HashMap::putAll); + Map> materialspecs = tmp_material_specs.stream().collect(Collectors.groupingBy(MdMeMaterialbase::getMaterial_spec)); + for (int i = 0; i < data.size(); i++) { + PdmProduceWorkorder workorder = data.get(i); + SysUser sysUser = users.get(workorder.getCurrent_produce_person_id()); + if (sysUser == null) { + //errorMap.put("第" + (i + 1) + "行:", "账号:" + workorder.getCurrent_produce_person_id() + "不存在"); + workorder.setCurrent_produce_person_id(null); + } else { + workorder.setCurrent_produce_person_id(sysUser.getUser_id()); + } + PdmBiWorkprocedure workprocedure = collect.get(workorder.getWorkprocedure_id()); + if (workprocedure == null) { + errorMap.put("第" + (i + 1) + "行:", "工序名称:" + workorder.getWorkprocedure_id() + "不存在"); + } else { + workorder.setWorkprocedure_id(workprocedure.getWorkprocedure_id()); + } + List mdMeMaterialbases = materialspecs.get(workorder.getMaterial_id()); + if (!CollectionUtils.isEmpty(mdMeMaterialbases)) { + if (mdMeMaterialbases.size() == 1) { + workorder.setMaterial_id(mdMeMaterialbases.get(0).getMaterial_id()); + } else { + Optional first = mdMeMaterialbases.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S") && Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))).findFirst(); + if (first.isPresent()) { + workorder.setMaterial_id(first.get().getMaterial_id()); + } else { + errorMap.put("第" + (i + 1) + "行:", "物料规格:" + workorder.getMaterial_id() + "不存在"); + } + } } else { errorMap.put("第" + (i + 1) + "行:", "物料规格:" + workorder.getMaterial_id() + "不存在"); @@ -681,170 +687,158 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl> read = excelReader.read(); - // 循环获取的数据 - List data = new ArrayList<>(); - Map errorMap = new HashMap(); - List workprodures = new ArrayList<>(); - List materialSpecs = new ArrayList<>(); - List persons = new ArrayList<>(); - row: - for(int i = 0; i < read.size(); i++) { - List list = read.get(i); - if(ObjectUtil.isEmpty(list)) { - continue; - } - PdmProduceWorkorder workorder = new PdmProduceWorkorder(); - packageForm(workorder); - for(int j = 0; j < list.size(); j++) { - String col = String.valueOf(list.get(j)); - 解析cell: - { //如果是第一行 为生产日期 - if(i == 0 && j == 0) { - continue row; - } - //如果第一列包含规格二字 则为表头 结束内循环列 - if(j == 0 && col.contains("班次")) { - continue row; - } - if(j == 0) { - workorder.setShift_type_scode("晚班".equals(col) ? "2" : "1"); - } - if(j == 1) { - if("1".equals(workorder.getShift_type_scode())) { - workorder.setPlanproduceend_date(col.substring(0, col.indexOf(" ")) + " 18:30:00"); - workorder.setPlanproducestart_date(col.substring(0, col.indexOf(" ")) + " 07:30:00"); - } - else{ - workorder.setPlanproducestart_date(col.substring(0, col.indexOf(" ")) + " 18:30:00"); - workorder.setPlanproduceend_date(col.substring(0, col.indexOf(" ")) + " 07:30:00"); - } - } - if(j == 2) { - //物料 - materialSpecs.add(col); - workorder.setMaterial_id(col); - } - if(j == 4) { - workprodures.add(col); - workorder.setWorkprocedure_id(col); - } - if(j == 5) { - //设备 A1_TW_ - workorder.setDevice_code(col); - } - if(j == 9) { - //单重 - BigDecimal bigDecimal = BigDecimal.valueOf(Double.parseDouble("#N/A".equals(col) ? "0.05" : col) * 1000); + private void 综合(InputStream inputStream) { + ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0); + List> read = excelReader.read(); + // 循环获取的数据 + List data = new ArrayList<>(); + Map errorMap = new HashMap(); + List workprodures = new ArrayList<>(); + List materialSpecs = new ArrayList<>(); + List persons = new ArrayList<>(); + row: + for (int i = 0; i < read.size(); i++) { + List list = read.get(i); + if (ObjectUtil.isEmpty(list)) { + continue; + } + PdmProduceWorkorder workorder = new PdmProduceWorkorder(); + packageForm(workorder); + for (int j = 0; j < list.size(); j++) { + String col = String.valueOf(list.get(j)); + 解析cell: + { //如果是第一行 为生产日期 + if (i == 0 && j == 0) { + continue row; + } + //如果第一列包含规格二字 则为表头 结束内循环列 + if (j == 0 && col.contains("班次")) { + continue row; + } + if (j == 0) { + workorder.setShift_type_scode("晚班".equals(col) ? "2" : "1"); + } + if (j == 1) { + if ("1".equals(workorder.getShift_type_scode())) { + workorder.setPlanproduceend_date(col.substring(0, col.indexOf(" ")) + " 18:30:00"); + workorder.setPlanproducestart_date(col.substring(0, col.indexOf(" ")) + " 07:30:00"); + } else { + workorder.setPlanproducestart_date(col.substring(0, col.indexOf(" ")) + " 18:30:00"); + workorder.setPlanproduceend_date(col.substring(0, col.indexOf(" ")) + " 07:30:00"); + } + } + if (j == 2) { + //物料 + materialSpecs.add(col); + workorder.setMaterial_id(col); + } + if (j == 4) { + workprodures.add(col); + workorder.setWorkprocedure_id(col); + } + if (j == 5) { + //设备 A1_TW_ + workorder.setDevice_code(col); + } + if (j == 9) { + //单重 + BigDecimal bigDecimal = BigDecimal.valueOf(Double.parseDouble("#N/A".equals(col) ? "0.05" : col) * 1000); // workorder.setMaterial_weight(bigDecimal.setScale(3, RoundingMode.HALF_UP)); - } - if(j == 10) { - persons.add(col); - workorder.setCurrent_produce_person_id(col); - } - if(j == 11) { - workorder.setPlan_qty(new BigDecimal(Long.valueOf(col))); - } - if(j == 15) { - workorder.setIs_needmove("是".equals(col) ? true : false); - } - if(j == 16) { - workorder.setRemark(col); - } } - } - if(CollectionUtils.isEmpty(errorMap)) { - data.add(workorder); - } - } - List tmp_material_specs = materialbaseService.list(new QueryWrapper().in("material_spec", materialSpecs)); - List tmp_sysUsers = userService.list(new QueryWrapper().in("person_name", persons)); - List tmp_workprocedure_names = workprocedureService.list(new QueryWrapper().in("workprocedure_name", workprodures)); - Map collect = tmp_workprocedure_names.stream().collect(HashMap::new, (k, v) -> k.put(v.getWorkprocedure_name(), v), HashMap::putAll); - Map users = tmp_sysUsers.stream().collect(HashMap::new, (k, v) -> k.put(v.getPerson_name(), v), HashMap::putAll); - Map> materialspecs = tmp_material_specs.stream().collect(Collectors.groupingBy(MdMeMaterialbase::getMaterial_spec)); - for(int i = 0; i < data.size(); i++) { - PdmProduceWorkorder workorder = data.get(i); - SysUser sysUser = users.get(workorder.getCurrent_produce_person_id()); - if(sysUser == null) { - //errorMap.put("第" + (i + 1) + "行:", "账号:" + workorder.getCurrent_produce_person_id() + "不存在"); - workorder.setCurrent_produce_person_id(null); - } - else{ - workorder.setCurrent_produce_person_id(sysUser.getUser_id()); - } - PdmBiWorkprocedure workprocedure = collect.get(workorder.getWorkprocedure_id()); - if(workprocedure == null) { - errorMap.put("第" + (i + 1) + "行:", "工序名称:" + workorder.getWorkprocedure_id() + "不存在"); - } - else{ - workorder.setWorkprocedure_id(workprocedure.getWorkprocedure_id()); - } - List mdMeMaterialbases = materialspecs.get(workorder.getMaterial_id()); - if(!CollectionUtils.isEmpty(mdMeMaterialbases)) { - if(mdMeMaterialbases.size() == 1) { - workorder.setMaterial_id(mdMeMaterialbases.get(0).getMaterial_id()); + if (j == 10) { + persons.add(col); + workorder.setCurrent_produce_person_id(col); } - else{ - Optional first = mdMeMaterialbases.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S") && Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))).findFirst(); - if(first.isPresent()) { - workorder.setMaterial_id(first.get().getMaterial_id()); - } - else{ - errorMap.put("第" + (i + 1) + "行:", "物料规格:" + workorder.getMaterial_id() + "不存在"); - } + if (j == 11) { + workorder.setPlan_qty(new BigDecimal(Long.valueOf(col))); } - } - else{ - errorMap.put("第" + (i + 1) + "行:", "物料规格:" + workorder.getMaterial_id() + "不存在"); - } - } - if(!CollectionUtils.isEmpty(errorMap)) { - throw new BadRequestException(JSON.toJSONString(errorMap)); - } - else{ - List workprocedures = data.stream().map(PdmProduceWorkorder::getWorkprocedure_id).collect(Collectors.toList()); - List list = deviceService.list(new QueryWrapper().in("workprocedure_id", workprocedures)); - Map> listMap = list.stream().collect(Collectors.groupingBy(PdmBiDevice::getWorkprocedure_id)); - for(int i = 0; i < data.size(); i++) { - PdmProduceWorkorder item = data.get(i); - List devices = listMap.get(item.getWorkprocedure_id()); - if (StringUtils.isNotEmpty(item.getDevice_code())){ - if("1535144356586165920".equals(item.getWorkprocedure_id())) { - item.setDevice_code("A1_DC_" + item.getDevice_code().replaceAll("-", "_")); + if (j == 15) { + workorder.setIs_needmove("是".equals(col) ? true : false); + } + if (j == 16) { + workorder.setRemark(col); + } + } + } + if (CollectionUtils.isEmpty(errorMap)) { + data.add(workorder); + } + } + List tmp_material_specs = materialbaseService.list(new QueryWrapper().in("material_spec", materialSpecs)); + List tmp_sysUsers = userService.list(new QueryWrapper().in("person_name", persons)); + List tmp_workprocedure_names = workprocedureService.list(new QueryWrapper().in("workprocedure_name", workprodures)); + Map collect = tmp_workprocedure_names.stream().collect(HashMap::new, (k, v) -> k.put(v.getWorkprocedure_name(), v), HashMap::putAll); + Map users = tmp_sysUsers.stream().collect(HashMap::new, (k, v) -> k.put(v.getPerson_name(), v), HashMap::putAll); + Map> materialspecs = tmp_material_specs.stream().collect(Collectors.groupingBy(MdMeMaterialbase::getMaterial_spec)); + for (int i = 0; i < data.size(); i++) { + PdmProduceWorkorder workorder = data.get(i); + SysUser sysUser = users.get(workorder.getCurrent_produce_person_id()); + if (sysUser == null) { + //errorMap.put("第" + (i + 1) + "行:", "账号:" + workorder.getCurrent_produce_person_id() + "不存在"); + workorder.setCurrent_produce_person_id(null); + } else { + workorder.setCurrent_produce_person_id(sysUser.getUser_id()); + } + PdmBiWorkprocedure workprocedure = collect.get(workorder.getWorkprocedure_id()); + if (workprocedure == null) { + errorMap.put("第" + (i + 1) + "行:", "工序名称:" + workorder.getWorkprocedure_id() + "不存在"); + } else { + workorder.setWorkprocedure_id(workprocedure.getWorkprocedure_id()); + } + List mdMeMaterialbases = materialspecs.get(workorder.getMaterial_id()); + if (!CollectionUtils.isEmpty(mdMeMaterialbases)) { + if (mdMeMaterialbases.size() == 1) { + workorder.setMaterial_id(mdMeMaterialbases.get(0).getMaterial_id()); + } else { + Optional first = mdMeMaterialbases.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S") && Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1))).findFirst(); + if (first.isPresent()) { + workorder.setMaterial_id(first.get().getMaterial_id()); + } else { + errorMap.put("第" + (i + 1) + "行:", "物料规格:" + workorder.getMaterial_id() + "不存在"); + } + } + } else { + errorMap.put("第" + (i + 1) + "行:", "物料规格:" + workorder.getMaterial_id() + "不存在"); + } + } + if (!CollectionUtils.isEmpty(errorMap)) { + throw new BadRequestException(JSON.toJSONString(errorMap)); + } else { + List workprocedures = data.stream().map(PdmProduceWorkorder::getWorkprocedure_id).collect(Collectors.toList()); + List list = deviceService.list(new QueryWrapper().in("workprocedure_id", workprocedures)); + Map> listMap = list.stream().collect(Collectors.groupingBy(PdmBiDevice::getWorkprocedure_id)); + for (int i = 0; i < data.size(); i++) { + PdmProduceWorkorder item = data.get(i); + List devices = listMap.get(item.getWorkprocedure_id()); + if (StringUtils.isNotEmpty(item.getDevice_code())) { + if ("1535144356586165920".equals(item.getWorkprocedure_id())) { + item.setDevice_code("A1_DC_" + item.getDevice_code().replaceAll("-", "_")); + } else if ("1535143882327724032".equals(item.getWorkprocedure_id())) { + item.setDevice_code("A1_XY_" + item.getDevice_code().replaceAll("-", "_")); + } else { + List deviceCollect = devices.stream().filter(pdmBiDevice -> { + String device_code = pdmBiDevice.getDevice_code(); + int indexOf = device_code.lastIndexOf("_"); + String substring = device_code.substring(indexOf + 1); + return Integer.valueOf(substring).equals(Integer.valueOf(item.getDevice_code())); + }).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(deviceCollect) || deviceCollect.size() > 1) { + errorMap.put("第" + (i + 1) + "行:", "设备名称:" + item.getDevice_code() + "不存在了!!"); + } else { + item.setDevice_code(deviceCollect.get(0).getDevice_code()); } - else if("1535143882327724032".equals(item.getWorkprocedure_id())) { - item.setDevice_code("A1_XY_" + item.getDevice_code().replaceAll("-", "_")); - } - else{ - List deviceCollect = devices.stream().filter(pdmBiDevice -> - { - String device_code = pdmBiDevice.getDevice_code(); - int indexOf = device_code.lastIndexOf("_"); - String substring = device_code.substring(indexOf + 1); - return Integer.valueOf(substring).equals(Integer.valueOf(item.getDevice_code())); - }).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(deviceCollect) || deviceCollect.size() > 1) { - errorMap.put("第" + (i + 1) + "行:", "设备名称:" + item.getDevice_code() + "不存在了!!"); - } - else{ - item.setDevice_code(deviceCollect.get(0).getDevice_code()); - } - } - }else { - item.setDevice_code(null); } - } - if(!CollectionUtils.isEmpty(errorMap)) { - throw new BadRequestException(JSON.toJSONString(errorMap)); - } - else{ - this.saveBatch(data); - } - } - } + } else { + item.setDevice_code(null); + } + } + if (!CollectionUtils.isEmpty(errorMap)) { + throw new BadRequestException(JSON.toJSONString(errorMap)); + } else { + this.saveBatch(data); + } + } + } private void packageForm(PdmProduceWorkorder workorder) { workorder.setWorkorder_id(IdUtil.getStringId()); @@ -891,7 +885,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl sonWorkOrder = Optional.ofNullable(getOne(new QueryWrapper().lambda() - .like(PdmProduceWorkorder::getWorkorder_id, workOrderId) - .ne(PdmProduceWorkorder::getAps_work_type,"S") - .orderByAsc(PdmProduceWorkorder::getPlanproducestart_date) - .last("LIMIT 1"))); + Optional sonWorkOrder = Optional.ofNullable(getOne(new QueryWrapper().lambda().like(PdmProduceWorkorder::getWorkorder_id, workOrderId).ne(PdmProduceWorkorder::getAps_work_type, "S").orderByAsc(PdmProduceWorkorder::getPlanproducestart_date).last("LIMIT 1"))); sonWorkOrder.ifPresent(workOrders -> { try { workOrders.setAps_assign_qty(workOrders.getPlan_qty()); - workOrders.setAps_realproducestart_date(getDates(workOrders.getPlanproducestart_date(),workOrders.getCreate_type().equals(StatusEnum.APSINTO.getCode())?"yyyy/MM/dd HH:mm:ss":"yyyy-MM-dd HH:mm:ss")); + workOrders.setAps_realproducestart_date(getDates(workOrders.getPlanproducestart_date(), workOrders.getCreate_type().equals(StatusEnum.APSINTO.getCode()) ? "yyyy/MM/dd HH:mm:ss" : "yyyy-MM-dd HH:mm:ss")); workOrders.setUpdate_time(new Date()); } catch (ParseException e) { throw new BadRequestException(e.getMessage()); @@ -918,10 +908,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl fatherWorkOrder = Optional.ofNullable(getOne(new QueryWrapper().lambda() - .like(PdmProduceWorkorder::getWorkorder_id, workOrderId) - .eq(PdmProduceWorkorder::getAps_work_type,"S") - .last("LIMIT 1"))); + Optional fatherWorkOrder = Optional.ofNullable(getOne(new QueryWrapper().lambda().like(PdmProduceWorkorder::getWorkorder_id, workOrderId).eq(PdmProduceWorkorder::getAps_work_type, "S").last("LIMIT 1"))); fatherWorkOrder.ifPresent(workOrders -> { workOrders.setAps_assign_qty(workOrders.getPlan_qty()); workOrders.setUpdate_time(new Date()); @@ -965,32 +952,35 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); - JSONObject form = new JSONObject(); - MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper().eq("material_id", workOrder.getMaterial_id())); - PdmBiDevice device = deviceService.getOne(new QueryWrapper().eq("device_code", workOrder.getDevice_code())); - form.put("workorder_id", workOrder.getWorkorder_id()); - form.put("workorder_code", workOrder.getWorkorder_code()); - form.put("qty", workOrder.getPlan_qty()); - Integer limit_qty = material.getLimit_qty(); - form.put("outupperlimit_qty", limit_qty); - if (limit_qty == null || limit_qty<1){ - form.put("outupperlimit_qty", device.getOutupperlimit_qty()); - } - form.put("material_id", workOrder.getMaterial_id()); - form.put("material_name", material.getMaterial_name()); - form.put("material_code", material.getMaterial_code()); - form.put("material_spec", material.getMaterial_spec()); - form.put("device_code", workOrder.getDevice_code()); - form.put("is_needmove", workOrder.getIs_needmove() ? 1 : 0); - form.put("package_ext", workOrder.getPackage_ext()); - if(param.containsKey("extra_map")) { - form.put("extra_map", param.getJSONObject("extra_map")); - } - return form; - } + @NotNull + private JSONObject packageForm(JSONObject param) { + PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); + JSONObject form = new JSONObject(); + MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper().eq("material_id", workOrder.getMaterial_id())); + PdmBiDevice device = deviceService.getOne(new QueryWrapper().eq("device_code", workOrder.getDevice_code())); + form.put("workorder_id", workOrder.getWorkorder_id()); + form.put("workorder_code", workOrder.getWorkorder_code()); + form.put("qty", workOrder.getPlan_qty()); + if (material == null) { + throw new BadRequestException("物料信息不能为空!"); + } + Integer limit_qty = material.getLimit_qty(); + form.put("outupperlimit_qty", limit_qty); + if (limit_qty == null || limit_qty < 1) { + form.put("outupperlimit_qty", device.getOutupperlimit_qty()); + } + form.put("material_id", workOrder.getMaterial_id()); + form.put("material_name", material.getMaterial_name()); + form.put("material_code", material.getMaterial_code()); + form.put("material_spec", material.getMaterial_spec()); + form.put("device_code", workOrder.getDevice_code()); + form.put("is_needmove", workOrder.getIs_needmove() ? 1 : 0); + form.put("package_ext", workOrder.getPackage_ext()); + if (param.containsKey("extra_map")) { + form.put("extra_map", param.getJSONObject("extra_map")); + } + return form; + } @Override public void unqualReport(JSONObject param) { @@ -1013,8 +1003,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl> collect = workreportRecords.stream().collect(Collectors.groupingBy(PdmProduceWorkorderrecord::getWorkorder_id)); for (Map.Entry> entry : collect.entrySet()) { List itemRecord = entry.getValue(); - itemRecord.forEach(item -> - { + itemRecord.forEach(item -> { item.setReport_status(ReportEnum.REPORT_STATUS.code("报工审核")); item.setConfirm_id(SecurityUtils.getCurrentUserId()); item.setConfirm_name(SecurityUtils.getCurrentNickName()); @@ -1074,8 +1063,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl map = new HashMap<>(whereJson); int i = 1; List> excel_lst = new ArrayList<>(); @@ -1196,8 +1184,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl workOrders = pdmProduceWorkorderMapper.queryAdjustWorkOrder(query); List deviceCount = pdmProduceWorkorderMapper.queryDeviceCount(query); Map deviceCountMap = deviceCount.stream().filter(item -> item.get("sale_id") != null).collect(Collectors.toMap(item -> item.get("sale_id").toString(), item -> item.get("device_count").toString())); - workOrders.forEach(workOrder -> - { + workOrders.forEach(workOrder -> { if ("999".equals(workOrder.get("NO").toString())) { workOrder.put("num_sort", "999"); workOrder.put("NO", ""); @@ -1205,7 +1192,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl queryStatisticsSpec(WorkorderQuery query) { + public List specOptionsSelect() { + return pdmProduceWorkorderMapper.specOptionsSelect(); + } + + + @Override + public TableDataInfo queryStatisticsSpec(WorkorderQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()).setOrderBy(pageQuery.getSort()); List workOrders = pdmProduceWorkorderMapper.queryStatisticsSpec(query); if (!CollectionUtils.isEmpty(workOrders) && StringUtils.isNotBlank(query.getMaterial())) { workOrders = workOrders.stream().filter(map -> query.getMaterial().equals(map.get("material_spec"))).collect(Collectors.toList()); } - return workOrders; + TableDataInfo build = TableDataInfo.build(workOrders); + build.setTotalElements(page.getTotal()); + return build; } @Override @@ -1248,13 +1244,15 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl> removeAdjacentDuplicates(List workOrders) { List> result = new ArrayList<>(); try { - workOrders = workOrders.stream() - .sorted(Comparator.comparing(m -> m.get("NO").toString())) - .collect(Collectors.toList()); + workOrders = workOrders.stream().sorted(Comparator.comparing(m -> m.get("NO").toString())).collect(Collectors.toList()); for (int i = 0; i < workOrders.size(); i++) { Map currentOrder = workOrders.get(i); - if (i == 0 || !currentOrder.get("material_spec").equals(workOrders.get(i - 1).get("material_spec"))) { + if (i == 0) { result.add(currentOrder); + } else if (currentOrder.get("material_spec") != null && workOrders.get(i - 1).get("material_spec") != null) { + if (!currentOrder.get("material_spec").equals(workOrders.get(i - 1).get("material_spec"))) { + result.add(currentOrder); + } } } if (result.size() > 1) { @@ -1262,8 +1260,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq(MpsSaleOrder::getSale_id, saleId)); if (mpsSaleOrder != null) { + MdMeMaterialbase material = materialbaseService.getOne(new LambdaUpdateWrapper().eq(MdMeMaterialbase::getMaterial_id, materialId)); + if (material.getNet_weight() == null) { + throw new BadRequestException("该物料规格无单重信息"); + } // 1. 订单正在生产的工单计划数量总和 BigDecimal saleOrderWorkingQty = this.list(new LambdaUpdateWrapper().eq(PdmProduceWorkorder::getSale_id, saleCode).eq(PdmProduceWorkorder::getWorkorder_status, WorkerOrderEnum.PRODUCTING.getCode())).stream().map(PdmProduceWorkorder::getPlan_qty).reduce(BigDecimal.ZERO, BigDecimal::add); // 2. 半成品库存数量冻结数 = 当前物料对应未开工的刻字工单计划数量总和(未开工包括创建,下发,暂停) @@ -1307,10 +1308,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl bcpInfo = iStIvtStructivtBcpService.getPdaBcpIvt(params); BigDecimal totalCanUseQty = bcpInfo.stream().map(item -> new BigDecimal(item.get("canuse_qty").toString())).reduce(BigDecimal.ZERO, BigDecimal::add); - MdMeMaterialbase material = materialbaseService.getOne(new LambdaUpdateWrapper().eq(MdMeMaterialbase::getMaterial_id, materialId)); - if (material.getNet_weight() == null) { - throw new BadRequestException("该物料规格无单重信息"); - } //半成品库存重量转换半成品数量 BigDecimal totalBcpQty = totalCanUseQty.divide(material.getNet_weight(), 2, RoundingMode.HALF_UP); // 4. 订单待刻字数量=订单计划数量-已刻字数量-订单正在生产的工单计划数量总和 diff --git a/mes/hd/nladmin-system/src/main/resources/sql/1219排产调整修改.sql.sql b/mes/hd/nladmin-system/src/main/resources/sql/1219排产调整修改.sql.sql new file mode 100644 index 00000000..6313306f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/resources/sql/1219排产调整修改.sql.sql @@ -0,0 +1,4 @@ +ALTER TABLE pdm_produce_workorder +MODIFY COLUMN aps_workorder_no INT DEFAULT 999; +UPDATE pdm_produce_workorder +SET aps_workorder_no = 999; diff --git a/mes/qd/src/views/wms/product_manage/workorder/SpecStatisticDialog.vue b/mes/qd/src/views/wms/product_manage/workorder/SpecStatisticDialog.vue new file mode 100644 index 00000000..74280821 --- /dev/null +++ b/mes/qd/src/views/wms/product_manage/workorder/SpecStatisticDialog.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/mes/qd/src/views/wms/product_manage/workorder/adjustDialog.vue b/mes/qd/src/views/wms/product_manage/workorder/adjustDialog.vue index 26db7cc9..aaf5f7df 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/adjustDialog.vue +++ b/mes/qd/src/views/wms/product_manage/workorder/adjustDialog.vue @@ -139,14 +139,13 @@
- -
{ - this.queryDeviceLists(this.tabIndex) - //this.editSpecVisible = false + this.fullscreenLoading = false this.$parent.success() - this.openMaterialSpec(this.device_code_select, this.selectedValue, this.sort) + this.queryDeviceLists(this.tabIndex) + this.editSpecVisible = false + //this.openMaterialSpec(this.device_code_select, this.selectedValue, this.sort) }) }, //点击规格 async openMaterialSpec(deviceCode, selectedValue, sort) { try { - debugger if (selectedValue !== '') { this.selectedValue = selectedValue } if (sort !== '') { this.sort = sort } + this.fullscreenLoading = true const queryParam = { tabIndex: this.tabIndex } const res = await crudProduceshiftorder.queryAdjustWorkOrder(queryParam) const content = res.content @@ -437,13 +439,12 @@ export default { } return acc }, []) - debugger if (selectedValue !== '' || this.sort !== '') { if (this.selectedValue !== '') { - debugger this.editSpecVisible = true this.tableData1 = content.filter(item => item.material_spec === this.selectedValue).sort((a, b) => a[this.sort] - b[this.sort]) this.$nextTick(() => { + this.fullscreenLoading = false this.$refs.transfer.leftTableData = content.filter(item => item.material_spec === this.selectedValue).sort((a, b) => a[this.sort] - b[this.sort]) this.$refs.transfer.$emit('initData', content.filter(item => item.NO !== 999 && item.device_code === this.device_code_select).sort((a, b) => a[this.sort] - b[this.sort])) }) @@ -455,6 +456,7 @@ export default { this.editSpecVisible = true this.tableData1 = content.sort((a, b) => a[this.sort] - b[this.sort]) this.$nextTick(() => { + this.fullscreenLoading = false this.$refs.transfer.leftTableData = content.sort((a, b) => a[this.sort] - b[this.sort]) this.$refs.transfer.$emit('initData', content.filter(item => item.NO !== 999 && item.device_code === this.device_code_select).sort((a, b) => a[this.sort] - b[this.sort])) }) @@ -464,7 +466,7 @@ export default { this.$refs.transfer.pageSize = 20 this.$refs.transfer.totalSize = this.tableData1.length } catch (err) { - debugger + this.fullscreenLoading = false console.log(err) } }, @@ -568,26 +570,26 @@ export default { //点击规格统计 specStatistic() { - this.queryMaterialSpec() + // this.queryMaterialSpec() this.querySpecVisible = true }, //点击规格统计 - async queryMaterialSpec() { - try { - const queryParam = { orderBy: 'start_time' } - const res = await crudProduceshiftorder.queryStatisticsSpec(queryParam) - const content = res.content - this.materialSpecData = content - this.selectSpecOptions = content.reduce((acc, currentItem) => { - if (!acc.some(item => item.material_spec === currentItem.material_spec)) { - acc.push(currentItem) - } - return acc - }, []) - } catch (err) { - console.log(err) - } - }, + // async queryMaterialSpec() { + // try { + // const queryParam = { orderBy: 'start_time' } + // const res = await crudProduceshiftorder.queryStatisticsSpec(queryParam) + // const content = res.content + // this.materialSpecData = content + // this.selectSpecOptions = content.reduce((acc, currentItem) => { + // if (!acc.some(item => item.material_spec === currentItem.material_spec)) { + // acc.push(currentItem) + // } + // return acc + // }, []) + // } catch (err) { + // console.log(err) + // } + // }, //点击人员 async openPersonButton(deviceCode) { this.device_code_select = deviceCode diff --git a/mes/qd/src/views/wms/product_manage/workorder/adjustIndex.vue b/mes/qd/src/views/wms/product_manage/workorder/adjustIndex.vue index f328d691..ab214500 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/adjustIndex.vue +++ b/mes/qd/src/views/wms/product_manage/workorder/adjustIndex.vue @@ -172,11 +172,11 @@ @@ -276,51 +276,9 @@ - - - -
- - - -
- - - - - - - - - - -
-
-
-
- + -
@@ -200,12 +200,12 @@ @@ -214,13 +214,13 @@ 复制新增 @@ -235,45 +235,45 @@ 批量新增 --> 导入工单 下发 取消下发 开工 @@ -289,23 +289,23 @@ 报工 报工审核 强制完成 @@ -316,9 +316,9 @@ title="报工数量" width="540px" > - + - + @@ -988,7 +988,7 @@ export default { reportVisible: false, addShow: false, reportForm: { - "report_qty":0 + 'report_qty': 0 }, replaceShow: false, uploadShow: false, @@ -1050,13 +1050,13 @@ export default { changeHeader(search, workprocedure_id) { this.crud.toQuery() }, - dateformat(row, column){ - if (row.update_time == undefined){ - return ""; + dateformat(row, column) { + if (row.update_time == undefined) { + return '' } - return new Date(row.update_time).toLocaleString(); + return new Date(row.update_time).toLocaleString() }, - reportCancel(){ + reportCancel() { this.reportVisible = false this.reportForm.report_qty = 0 }, diff --git a/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js b/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js index bc1e1a8d..6479d9d5 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js +++ b/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js @@ -217,11 +217,20 @@ export function getWorkOrderplanQty(data) { }) } +export function specOptionsSelect(data) { + return request({ + url: '/api/produceWorkorder/specOptionsSelect', + method: 'post', + data + }) +} + export default { add, addRows, edit, del, + specOptionsSelect, submits, report, reportApprove,