diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index 957ec5462..4fd7102d5 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -31,11 +31,13 @@ import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.util.object.BeanUtils; +import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.common.pojo.CommonResult.success; import com.cf.imes.framework.operatelog.core.annotations.OperateLog; import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*; +import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_PLAN_DATA_ERROR; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.service.order.OrderService; @@ -153,8 +155,8 @@ public class OrderController { @Operation(summary = "生产单详情-数量信息") @Parameter(name = "orderId", description = "生产单编号", example = "1024") @PreAuthorize("@ss.hasPermission('production:manager-list:detail')") - public CommonResult>> getModule(@RequestParam("orderId") Long orderId) { - Map> moduleDOList = orderService.getModule(orderId); + public CommonResult>> getModule(@RequestParam("orderId") Long orderId) { + Map> moduleDOList = orderService.getModule(orderId); return success(moduleDOList); } @@ -173,7 +175,7 @@ public class OrderController { @RequestParam(value = "bodyId", required = false) Long bodyId, @RequestParam(value = "groupId", required = false) Long groupId, @RequestParam(value = "groupName", required = false) String groupName) { - List moduleDOList = orderService.getPlatesDetail(orderId, roomId, bodyId,groupId,groupName); + List moduleDOList = orderService.getPlatesDetail(orderId, roomId, bodyId, groupId, groupName); return success(moduleDOList); } @@ -208,10 +210,13 @@ public class OrderController { @PreAuthorize("@ss.hasPermission('production:manager-list:create')") public CommonResult test(@RequestParam(value = "orderNo", required = false, defaultValue = "20230809027818") String orderNo) throws InterruptedException, ExecutionException { -// return success(orderService.importApiData(orderNo)); + Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId(); String token = apiDataAchieve.getApiToken(organId); JSONObject dataPlates = apiDataAchieve.getApiPlateProData(token, orderNo).get(); + if (!dataPlates.getString("err_code").equals("0")) { + throw exception(PLATE_PLAN_DATA_ERROR); + } JSONObject dataParts = apiDataAchieve.getApiPartsMessage(token, orderNo).get(); JSONObject dataBody = apiDataAchieve.getApiBodyMessage(token, orderNo).get(); JSONObject dataGoods = apiDataAchieve.getApiGoodsMessage(token, orderNo).get(); @@ -240,41 +245,44 @@ public class OrderController { @OperateLog(type = IMPORT) public void exportTest(@RequestPart("file") MultipartFile file, @RequestParam(value = "type", required = false, defaultValue = "true") Integer type, - HttpServletResponse response) throws IOException { - System.out.println("kkkkkkkk"); + HttpServletResponse response) throws IOException { + try { - List list = null; - OrderDO orderDO = new OrderDO(); - if (type == 0) { //excel - // 读取文件 - excelReadUtil.setErr(0); - Map map = excelReadUtil.read(file); + List list = null; + OrderDO orderDO = new OrderDO(); + if (type == 0) { //excel + // 读取文件 + excelReadUtil.setErr(0); + Map map = excelReadUtil.read(file); // System.out.println(" map " + map); - System.err.println(excelReadUtil.isErr()); - // 判断是否读取有误 - if (excelReadUtil.isErr() == -1) { // 文件为空 - ExcelWriterUtil.writeErr(response, "生产单内容为空", orderService.getSavePath() + File.separator + "错误文件.xlsx"); - return; - }else if (excelReadUtil.isErr() > 0) { - // 返回文件 + System.err.println(excelReadUtil.isErr()); + // 判断是否读取有误 + if (excelReadUtil.isErr() == -1) { // 文件为空 + ExcelWriterUtil.writeErr(response, "生产单内容为空", orderService.getSavePath() + File.separator + "错误文件.xlsx"); + return; + } else if (excelReadUtil.isErr() > 0) { + // 返回文件 // System.out.println("(Map) " + (Map) map.get("order")+ " , (List)" +(List) map.get("plate")); - ExcelWriterUtil.write(response, (Map) map.get("order"), (List) map.get("plate"), orderService.getSavePath() + File.separator + "生产单Excel导入错误导出模板.xlsx"); - return; - } else { - // 获取数据 - list = (List) map.get("plate"); - orderDO = excelReadUtil.changeOrderDO((Map) map.get("order")).setOrderType(0).setStatus(1); - if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())){ - ExcelWriterUtil.writeErr(response, "自定义生产单号存在", orderService.getSavePath() + File.separator + "错误文件.xlsx"); + ExcelWriterUtil.write(response, (Map) map.get("order"), (List) map.get("plate"), orderService.getSavePath() + File.separator + "生产单Excel导入错误导出模板.xlsx"); + return; + } else { + // 获取数据 + list = (List) map.get("plate"); + orderDO = excelReadUtil.changeOrderDO((Map) map.get("order")).setOrderType(0).setStatus(1); + if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { + ExcelWriterUtil.writeErr(response, "自定义生产单号存在", orderService.getSavePath() + File.separator + "错误文件.xlsx"); + } } + } else if (type == 1) { // json + + } else if (type == 2) { // xml + } - } else if (type == 1) { // json - - }else if (type == 2) { // xml - + orderService.importExcelData(orderDO, list); + } catch (Exception e) { + ExcelWriterUtil.writeErr(response, "系统出现未知错误,请下载模板,按照模板重新上传文件", orderService.getSavePath() + File.separator + "错误文件.xlsx"); } - orderService.importExcelData(orderDO,list); } @GetMapping("/get-goodsList") @@ -294,8 +302,8 @@ public class OrderController { }) @PreAuthorize("@ss.hasPermission('production:manager-list:create')") public CommonResult uploadOrderType(@RequestPart("file") MultipartFile file, - @RequestParam(value = "type", required = false, defaultValue = "false") Boolean type) { - return success(orderService.importTemplate(file,type)); + @RequestParam(value = "type", required = false, defaultValue = "false") Boolean type) { + return success(orderService.importTemplate(file, type)); } @GetMapping("/printing") @@ -308,6 +316,6 @@ public class OrderController { @RequestParam("type") String type, HttpServletResponse response) { - return success(orderService.getPrintDataMap(orderId,type,response)); + return success(orderService.getPrintDataMap(orderId, type, response)); } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java index e60348ecd..2ebaab1f9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java @@ -174,6 +174,10 @@ public class PlateDO extends BaseDO { * 是否造型 */ private Boolean isSculpt; + /** + * 是否造型 + */ + private Boolean isRowHole; /** * 排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠 */ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index d64ce8f15..fdf6cf77b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -339,8 +339,9 @@ public class OrderServiceImpl implements OrderService { } goodsIdDeleted.add(k); }); - goodsMapper.updateDeletedById(goodsIdDeleted, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); - + if (goodsIdDeleted.size()>0){ + goodsMapper.updateDeletedById(goodsIdDeleted, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); + } List partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyId, SecurityFrameworkUtils.getLoginUser().getOrganId()); orderPartsMapper.updateDeletedById(partsList, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); }); @@ -379,6 +380,7 @@ public class OrderServiceImpl implements OrderService { List orderModelDOs = BeanUtils.toBean(plateDetail, OrderModelDO.class); orderModelDOs.forEach(orderModelDO -> orderModelDO.setOrderId(order.get(0).getId())); orderInputProcessor.batchSaveModel(orderModelDOs); + orderInputProcessor.batchSaveOrderPartsModel(partsRemark); return order.get(0).getId(); } @@ -561,6 +563,7 @@ public class OrderServiceImpl implements OrderService { validateCustomOrderNoExists(orderDO.getCustomOrderNo()); orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, null, itemDO, orderDO, goodsDO, plateGoodDOS); orderInputProcessor.batchSaveModel(orderModelDOS); + orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiDataAchieve.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiDataAchieve.java index 2fed9a3f0..3b06cb73a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiDataAchieve.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiDataAchieve.java @@ -47,20 +47,18 @@ public class ApiDataAchieve { } // 获取板件生产数据信息 -// @Async + @Async public Future getApiPlateProData(String token, String orderNo) { JSONObject jsonPlatesData = new JSONObject(); jsonPlatesData.put("order_no", orderNo);//生产单号需要传入赋值 jsonPlatesData.put("format", "json"); JSONObject dataPlates = apiDataProduction.getApiOrderMessage(token, jsonPlatesData); - if (!dataPlates.getString("err_code").equals("0")) { - throw exception(PLATE_PLAN_DATA_ERROR); - } + return new AsyncResult<>(dataPlates); } // 获取配件信息 分页获取 -// @Async + @Async public Future getApiPartsMessage(String token, String orderNo) { JSONObject jsonParts = new JSONObject(); jsonParts.put("curr_page", 1); @@ -80,7 +78,7 @@ public class ApiDataAchieve { } // 柜体信息转换 -// @Async + @Async public Future getApiBodyMessage(String token, String orderNo) { JSONObject jsonBody = new JSONObject(); jsonBody.put("curr_page", 1); @@ -100,7 +98,7 @@ public class ApiDataAchieve { } // 商品信息转换 -// @Async + @Async public Future getApiGoodsMessage(String token, String orderNo) { JSONObject jsonGoods = new JSONObject(); jsonGoods.put("curr_page", 1); @@ -120,7 +118,7 @@ public class ApiDataAchieve { } // 板材明细信息转换 -// @Async + @Async public Future getApiPlateDetailMessage(String token, String orderNo) { JSONObject jsonPlates = new JSONObject(); jsonPlates.put("curr_page", 1); @@ -140,7 +138,7 @@ public class ApiDataAchieve { } // 加工组信息转换 -// @Async + @Async public Future getApiGroupMessage(String token, String orderNo) { JSONObject jsonModule = new JSONObject(); jsonModule.put("order_no", orderNo); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java index c672551e4..b4e90cd13 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java @@ -25,6 +25,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -44,11 +45,11 @@ public class ApiTypeRealize { @Resource SnowflakeIdWorker3rd idWorker; - private Integer num = 0; +// private Integer num = 0; - private Integer specialShapedNum = 0; +// private Integer specialShapedNum = 0; - private Integer groupNum = 0; +// private Integer groupNum = 0; private final static Integer X = 0; private final static Integer Y = 1; @@ -147,6 +148,7 @@ public class ApiTypeRealize { public Map orderPartsChange(Map orderGroupDO, Map> groupLists, Map items) { + AtomicInteger groupNum = new AtomicInteger(0); groupLists.forEach((k, v) -> { v.forEach(v1 -> { if (items.get(v1) != null) { @@ -171,11 +173,11 @@ public class ApiTypeRealize { } if (items.get(v1).getPlateId() != null) - groupNum++; + groupNum.getAndIncrement(); } }); - orderGroupDO.get(k).setPlateNum(groupNum); - groupNum = 0; + orderGroupDO.get(k).setPlateNum(groupNum.get()); + groupNum.set(0); }); return items; @@ -192,21 +194,22 @@ public class ApiTypeRealize { List orderGroupDOList = orderGroupDO.values().stream().collect(Collectors.toList()); Map orderGroupDOMap = orderGroupDOList.stream().collect(Collectors.toMap(OrderGroupDO::getId, v -> v)); + AtomicInteger specialShapedNum = new AtomicInteger(0); groupPlate.forEach((k, v) -> { // k 加工组id v.forEach(item -> { if (plateDOMap.get(item.getPlateId()) != null) { if (plateDOMap.get(item.getPlateId()).getIsSpecialShaped()) { // 异形相加 - specialShapedNum++; + specialShapedNum.getAndIncrement(); // System.out.println(k + " 对应 " + specialShapedNum); } } }); if (orderGroupDOMap.get(k) != null) {// m 加工组 - orderGroupDOMap.get(k).setUnregularNum(specialShapedNum); + orderGroupDOMap.get(k).setUnregularNum(specialShapedNum.get()); } ; - specialShapedNum = 0; + specialShapedNum.set(0); }); return orderGroupDO; } @@ -341,7 +344,7 @@ public class ApiTypeRealize { .goodsName(goods.getString("GoodsName")) .material(goods.getString("Material")) .color(goods.getString("Color")) - .texture(false) + .texture(getTexture( goods.getJSONObject("ExtraProp"))) .thickness(goods.getDouble("Thickness")) .price(goods.getDouble("Price")) .brand(goods.getString("Brand")) @@ -357,7 +360,7 @@ public class ApiTypeRealize { .goodsName(goods.getString("GoodsName")) .material(goods.getString("Material")) .color(goods.getString("Color")) - .texture(false) + .texture(getTexture( goods.getJSONObject("ExtraProp"))) .width(BigDecimal.valueOf(goods.getDouble("Width"))) .height(BigDecimal.valueOf(goods.getDouble("Height"))) .thickness(BigDecimal.valueOf(goods.getDouble("Thickness"))) @@ -612,7 +615,8 @@ public class ApiTypeRealize { plateInfo.setHeight(BigDecimal.valueOf(jsonObject.getDouble("Height"))) .setWidth(BigDecimal.valueOf(jsonObject.getDouble("Width"))) .setThickness(BigDecimal.valueOf(jsonObject.getDouble("Thickness"))) - .setArea(BigDecimal.valueOf(jsonObject.getDouble("Area"))); + .setArea(BigDecimal.valueOf(jsonObject.getDouble("Area"))) + .setIsRowHole(jsonObject.getBoolean("IsHole")); plateDetail.get(plate.getLong("BlockNo")) .setRemarkJson(jsonObject.getString("RemarkJson")) .setSpecialRemark(jsonObject.getString("SpecialRemark")); @@ -633,24 +637,25 @@ public class ApiTypeRealize { .collect(Collectors.toMap(PlateDO::getId, plate -> plate)); // 板件id为key // 遍历platesDetail - + AtomicInteger NUM = new AtomicInteger(0); + AtomicInteger specialShapedNum = new AtomicInteger(0); platesDetail.forEach((k, v) -> { v.forEach(item -> { - num++; + NUM.getAndIncrement(); if (plateDOMap.get(item.getPlateId()).getIsSpecialShaped()) { // 异形相加 - specialShapedNum++; + specialShapedNum.getAndIncrement(); } }); bodyInfos.forEach((n, m) -> { if (k == m.getId()) { - m.setPlateNum(num); - m.setUnregularNum(specialShapedNum); + m.setPlateNum(NUM.get()); + m.setUnregularNum(specialShapedNum.get()); } }); - num = 0; - specialShapedNum = 0; + NUM.set(0); + specialShapedNum.set(0); }); map.put("platesInfos", platesInfos); map.put("platesItems", platesItem); @@ -934,4 +939,16 @@ public class ApiTypeRealize { } return map; } + + // 纹理解析 + public Boolean getTexture(JSONObject extraProp) { + JSONObject jsonObject = new JSONObject(extraProp); + if (jsonObject.getString("HasWave") != null){ + String hasWave = jsonObject.getString("HasWave").trim(); + if (hasWave.equals("0")){ + return false; + } + } + return true; + } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java index 734550347..1aa09c2b8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java @@ -53,7 +53,7 @@ public class ExcelReadUtil { // 文件读取 } if (index.get()) { orderMap.put(item.get(0), item.get(1)); - orderMap.put(item.get(13), item.get(14)); + orderMap.put(item.get(16), item.get(17)); } else { if (!(item.get(0).equals("序号") || item.get(0).equals("###"))) { list.add(changeValue(item)); @@ -145,97 +145,106 @@ public class ExcelReadUtil { // 文件读取 case 9:// 型号 vo.setModel(value); break; - case 10:// 规格 + case 10:// 板材长 + vo.setGoodsHeight(value); + break; + case 11:// 板材宽 + vo.setGoodsWidth(value); + break; + case 12:// 板材厚 + vo.setGoodsThickness(value); + break; + case 13:// 规格 vo.setSpec(value); break; - case 11:// 单位 + case 14:// 单位 vo.setUnit(value); break; - case 12:// 数量 + case 15:// 数量 vo.setGoodsNumber(value); break; - case 13:// 房间 + case 16:// 房间 vo.setRoomsName(value); break; - case 14:// 柜体 + case 17:// 柜体 vo.setCabinetsName(value); break; - case 15:// 加工组类型 + case 18:// 加工组类型 vo.setSynthesisTypeName(value); break; - case 16:// 加工组名称 + case 19:// 加工组名称 vo.setCombinationName(value); break; - case 17://板名称 + case 20://板名称 vo.setName(value); break; - case 18:// 自定义板编号 + case 21:// 自定义板编号 vo.setPlateNo(value); break; - case 19:// 成品长 + case 22:// 成品长 vo.setHeight(value); break; - case 20:// 成品宽 + case 23:// 成品宽 vo.setWidth(value); break; - case 21:// 拆单长 + case 24:// 拆单长 vo.setSplitHeight(value); break; - case 22:// 拆单宽 + case 25:// 拆单宽 vo.setSplitWidth(value); break; - case 23:// 厚 + case 26:// 厚 vo.setThickness(value); break; - case 24:// 左封边 + case 27:// 左封边 vo.setSealLeft(value); break; - case 25:// 右封边 + case 28:// 右封边 vo.setSealRight(value); break; - case 26:// 上封边 + case 29:// 上封边 vo.setSealUp(value); break; - case 27:// 下封边 + case 30:// 下封边 vo.setSealDown(value); break; - case 28:// 排版面 + case 31:// 排版面 vo.setTypographicFace(value); break; - case 29:// 纹路 + case 32:// 纹路 vo.setTexture(value); break; - case 30:// 开门方向 + case 33:// 开门方向 vo.setOpenDoorType(value); break; - case 31://备注1 + case 34://备注1 vo.setRemark1(value); break; - case 32://备注2 + case 35://备注2 vo.setRemark2(value); break; - case 33://备注3 + case 36://备注3 vo.setRemark3(value); break; - case 34://备注4 + case 37://备注4 vo.setRemark4(value); break; - case 35://备注5 + case 38://备注5 vo.setRemark5(value); break; - case 36://备注6 + case 39://备注6 vo.setRemark6(value); break; - case 37://备注7 + case 40://备注7 vo.setRemark7(value); break; - case 38://备注8 + case 41://备注8 vo.setRemark8(value); break; - case 39://备注9 + case 42://备注9 vo.setRemark9(value); break; - case 40://备注10 + case 43://备注10 vo.setRemark10(value); break; default: @@ -274,6 +283,40 @@ public class ExcelReadUtil { // 文件读取 errList.add("纹理无效"); } } + // 大板长宽厚数据不可为空 + if (StringUtils.isEmpty(vo.getGoodsHeight()) && StringUtils.isEmpty(vo.getGoodsWidth()) && StringUtils.isEmpty(vo.getGoodsThickness())) { + flag = false; + errList.add("板材长宽厚数据不能为空"); + }else { + // 大板长宽厚数据不为空,检查数据格式 + if (!convertToDouble(vo.getGoodsHeight())) { + flag = false; + errList.add("板材长数据类型错误"); + } else { + if (!checkPrecision(vo.getGoodsHeight())) { + flag = false; + errList.add("板材长数据长度错误"); + } + } + if (!convertToDouble(vo.getGoodsWidth())) { + flag = false; + errList.add("板材宽数据类型错误"); + } else { + if (!checkPrecision(vo.getGoodsWidth())) { + flag = false; + errList.add("板材宽数据长度错误"); + } + } + if (!convertToDouble(vo.getGoodsThickness())) { + flag = false; + errList.add("板材厚数据类型错误"); + } else { + if (!checkPrecision(vo.getGoodsThickness())) { + flag = false; + errList.add("板材厚数据长度错误"); + } + } + } if (StringUtils.isEmpty(vo.getRoomsName()) && StringUtils.isEmpty(vo.getCabinetsName()) && StringUtils.isEmpty(vo.getName())) { flag = false; errList.add("房间、柜体、板名称不能为空"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java index 59c603e6b..5ea91a3a4 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java @@ -90,6 +90,9 @@ public class ExcelTypeRealize { p.getColor(), p.getSpec(), p.getWave(), // 纹理 + p.getGoodsHeight(), + p.getGoodsWidth(), + p.getGoodsThickness(), // p.getModel(), p.getBrand()), Collectors.toList() @@ -97,14 +100,14 @@ public class ExcelTypeRealize { goodsMap.forEach((goodKey, goodValue) -> { // 板材信息合集,添加生产单id,添加生产单板材设计端商品编码,板材信息写入order_raw_goods -// 规格分解 - List specList = spec(goodValue.get(0).getSpec()); RawGoodsDO rawGoodsDO = setRawGoodsDO(goodValue.get(0)).setId((Long) snowFlakeGenerator.nextId(null)).setOrderId(orderId); rawGoodsDOS.add(rawGoodsDO); Long goodId = (Long) snowFlakeGenerator.nextId(null); GoodsDO plateDO = setGoodsDO(goodValue.get(0)).setId(goodId).setOrderId(orderId) .setRawGoodsId(String.valueOf(rawGoodsDO.getId())) - .setHeight(BigDecimal.valueOf(specList.get(0))).setWidth(BigDecimal.valueOf(specList.get(1))); // 在good_id为空的时候,首先赋值为空值 + .setHeight(BigDecimal.valueOf(Double.parseDouble(goodValue.get(0).getGoodsHeight()))) + .setWidth(BigDecimal.valueOf(Double.parseDouble(goodValue.get(0).getGoodsWidth()))) + .setThickness(BigDecimal.valueOf(Double.parseDouble(goodValue.get(0).getGoodsThickness()))); // 在good_id为空的时候,首先赋值为空值 goodsDOS.add(plateDO); // 赋值给板件未对应前order_raw_goods的id for (OrderPlateImportExcelVO reqVO : goodValue) { @@ -112,14 +115,15 @@ public class ExcelTypeRealize { } }); } else { // 商品编码有的 - List specList = spec(value.get(0).getSpec()); // 板材信息合集,添加生产单id,添加生产单板材设计端商品编码,板材信息写入order_raw_goods RawGoodsDO rawGoodsDO = setRawGoodsDO(value.get(0)).setId((Long) snowFlakeGenerator.nextId(null)).setOrderId(orderId); rawGoodsDOS.add(rawGoodsDO); Long goodId = (Long) snowFlakeGenerator.nextId(null); GoodsDO plateDO = setGoodsDO(value.get(0)).setId(goodId).setOrderId(orderId) .setRawGoodsId(String.valueOf(rawGoodsDO.getId())).setGoodsId(String.valueOf(rawGoodsDO.getRawGoodsId())) - .setHeight(BigDecimal.valueOf(specList.get(0))).setWidth(BigDecimal.valueOf(specList.get(1))); + .setHeight(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsHeight()))) + .setWidth(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsWidth()))) + .setThickness(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsThickness()))); goodsDOS.add(plateDO); // 赋值给板件未对应前order_raw_goods的id for (OrderPlateImportExcelVO reqVO : value) { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderPlateImportExcelVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderPlateImportExcelVO.java index 049f65965..1359180e0 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderPlateImportExcelVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderPlateImportExcelVO.java @@ -69,6 +69,18 @@ public class OrderPlateImportExcelVO { @JsonIgnore private String model; + @ExcelProperty(value = "板材长") + @JsonIgnore + private String goodsHeight; + + @ExcelProperty(value = "板材宽") + @JsonIgnore + private String goodsWidth; + + @ExcelProperty(value = "板材厚") + @JsonIgnore + private String goodsThickness; + @ExcelProperty(value = "规格") @JsonIgnore private String spec; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml index c9c8cdac7..f5ae792a3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml @@ -47,8 +47,9 @@ UPDATE order_goods SET deleted = #{deleted} WHERE id IN - + #{id} - AND organ_id = #{organId} + + AND organ_id = #{organId} \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx index 643be051e..e09ec97b8 100644 Binary files a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx and b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx differ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx index 9aa231dbc..22a672f75 100644 Binary files a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx and b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单新增Excel模板.xlsx differ diff --git a/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/DeletedCodeEnum.java b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/DeletedCodeEnum.java new file mode 100644 index 000000000..8963aa73a --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/DeletedCodeEnum.java @@ -0,0 +1,23 @@ +package com.cf.imes.module.manage.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum DeletedCodeEnum { + + DELETED(1, "删除"), + NOT_DELETED(0, "未删除"); + + private final Integer status; + private String description; + + public boolean equals(Integer status) { + return this.status .equals(status) ; + } + + public boolean equals(DeletedCodeEnum DeletedCodeEnum) { + return DeletedCodeEnum != null && DeletedCodeEnum.status .equals(this.getStatus()) ; + } +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/RemainPlateUseTypeEnum.java b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/RemainPlateUseTypeEnum.java index 76d11d931..37dadf579 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/RemainPlateUseTypeEnum.java +++ b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/RemainPlateUseTypeEnum.java @@ -7,9 +7,10 @@ import lombok.Getter; @AllArgsConstructor public enum RemainPlateUseTypeEnum { - TYPE_ONE(0, "核销"), - TYPE_TWO(1, "排单"), - TYPE_THREE(2, "补板"); + TYPE_ZERO(0, ""), + TYPE_ONE(1, "核销"), + TYPE_TWO(2, "排单"), + TYPE_THREE(3, "补板"); private final Integer status; private String description; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/RemainPlateController.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/RemainPlateController.java index 029683876..85e9ebdc8 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/RemainPlateController.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/RemainPlateController.java @@ -43,7 +43,7 @@ public class RemainPlateController { @PostMapping("/create") @Operation(summary = "创建生产单余料板表(单个)") @PreAuthorize("@ss.hasPermission('placeorder:remain')") - public CommonResult createRemainPlate(@Valid @RequestBody RemainPlateSaveReqVO createReqVO) { + public CommonResult createRemainPlate(@Valid @RequestBody RemainPlateSaveReqVO createReqVO) { return success(remainPlateService.createRemainPlate(createReqVO)); } @@ -66,7 +66,7 @@ public class RemainPlateController { @Operation(summary = "余料板批量核销") @PreAuthorize("@ss.hasPermission('placeorder:remain')") public CommonResult updateRemainPlate(@RequestBody RemainPlateUptReqVO updateReqVO) { - remainPlateService.updateRemainPlateStatus(updateReqVO.getIds(), + remainPlateService.updateRemainPlateStatus(updateReqVO.getId(), updateReqVO.getStatus(), updateReqVO.getUseType(), updateReqVO.getPlanId()); @@ -77,7 +77,7 @@ public class RemainPlateController { @Operation(summary = "余料板批量释放") @PreAuthorize("@ss.hasPermission('manage:remain-plate:update')") public CommonResult revertRemainPlate(@RequestBody RemainPlateUptReqVO updateReqVO) { - remainPlateService.revertRemainPlateStatus(updateReqVO.getIds(),updateReqVO.getStatus()); + remainPlateService.revertRemainPlateStatus(updateReqVO.getId(),updateReqVO.getStatus()); return success(true); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateUptReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateUptReqVO.java index 45081e13f..800bc1cdb 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateUptReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateUptReqVO.java @@ -9,13 +9,13 @@ import java.util.Set; @Data public class RemainPlateUptReqVO { - @Schema(description = "余料板集", requiredMode = Schema.RequiredMode.REQUIRED, example = "16470") - private Set ids; + @Schema(description = "余料板集", example = "16470") + private Set id; @Schema(description = "余料板状态,0未使用,1使用中", example = "1") private Integer status; - @Schema(description = "使用类型,0核销,1排单,2补板", example = "0") + @Schema(description = "使用类型,1核销,2排单,3补板", example = "0") private Integer useType; @Schema(description = "排单 ID", example = "6628") diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/plate/OrderPlateDO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/plate/OrderPlateDO.java index 460c89f75..5f811e46e 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/plate/OrderPlateDO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/plate/OrderPlateDO.java @@ -116,6 +116,9 @@ public class OrderPlateDO extends BaseDO { // 是否孤形对角 private Boolean isArcAcross; + // 是否排孔 + private Boolean isRowHole; + // 模块类型 ID private Long moduleTypeId; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/remainplaten/RemainPlateMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/remainplaten/RemainPlateMapper.java index 3cdc618b0..a68f95b92 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/remainplaten/RemainPlateMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/remainplaten/RemainPlateMapper.java @@ -1,5 +1,6 @@ package com.cf.imes.module.manage.dal.mysql.remainplaten; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -8,6 +9,7 @@ import com.cf.imes.module.manage.controller.admin.plate.vo.remain.RemainPlatePag import com.cf.imes.module.manage.dal.dataobject.remainplaten.RemainPlateDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; import java.util.Set; /** @@ -20,20 +22,21 @@ public interface RemainPlateMapper extends BaseMapperX { default PageResult selectPage(RemainPlatePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(RemainPlateDO::getId, reqVO.getId()) .eqIfPresent(RemainPlateDO::getPlanId, reqVO.getPlanId()) .eqIfPresent(RemainPlateDO::getInitPlanId, reqVO.getInitPlanId()) .eqIfPresent(RemainPlateDO::getStatus, reqVO.getStatus()) .eqIfPresent(RemainPlateDO::getGoodsId, reqVO.getGoodsId()) .eqIfPresent(RemainPlateDO::getIsCutting, reqVO.getIsCutting()) .likeIfPresent(RemainPlateDO::getName, reqVO.getName()) - .eqIfPresent(RemainPlateDO::getMaterial, reqVO.getMaterial()) - .eqIfPresent(RemainPlateDO::getColor, reqVO.getColor()) + .likeIfPresent(RemainPlateDO::getMaterial, reqVO.getMaterial()) + .likeIfPresent(RemainPlateDO::getColor, reqVO.getColor()) .eqIfPresent(RemainPlateDO::getThickness, reqVO.getThickness()) .eqIfPresent(RemainPlateDO::getBrand, reqVO.getBrand()) .eqIfPresent(RemainPlateDO::getPlaceStyle, reqVO.getPlaceStyle()) - .eqIfPresent(RemainPlateDO::getStore, reqVO.getStore()) + .likeIfPresent(RemainPlateDO::getStore, reqVO.getStore()) .eqIfPresent(RemainPlateDO::getCount, reqVO.getCount()) - .eqIfPresent(RemainPlateDO::getRemark, reqVO.getRemark()) + .likeIfPresent(RemainPlateDO::getRemark, reqVO.getRemark()) .eqIfPresent(RemainPlateDO::getUseType, reqVO.getUseType()) .eqIfPresent(RemainPlateDO::getOrganId, reqVO.getOrganId()) .eqIfPresent(RemainPlateDO::getOutLineJson, reqVO.getOutLineJson()) @@ -52,4 +55,39 @@ public interface RemainPlateMapper extends BaseMapperX { .eq("organ_id",organId) .in("id", ids)); } + + // 查询该排单是否已经添加余料 + default List selectRemainPlatesByInitPlanId(Long initPlanId, Integer deleted, Long organId) { + return selectList(new LambdaUpdateWrapper() + .eq(RemainPlateDO::getInitPlanId, initPlanId) + .eq(RemainPlateDO::getDeleted, deleted) + .eq(RemainPlateDO::getOrganId, organId)); + } + + // 判断该排单是否存在以使用的余料 + default List selectRemainPlatesByPlanId(Long planId, Integer status, Integer deleted, Long organId) { + return selectList(new LambdaUpdateWrapper() + .eq(RemainPlateDO::getPlanId, planId) + .eq(RemainPlateDO::getStatus, status) + .eq(RemainPlateDO::getDeleted, deleted) + .eq(RemainPlateDO::getOrganId, organId)); + } + + // 通过排单id批量余料板 + default void deleteRemainPlate(Long initPlanId, Long organId) { + update(new UpdateWrapper() + .set("deleted", 1) + .eq("init_plan_id", initPlanId) + .eq("organ_id", organId)); + } + + // 根据使用排单id批量还原状态 + default void updateRemainPlateStatusByPlanId(Integer status, Integer useType,Long organId,Long planId) { + update(new UpdateWrapper() + .set("status", status) + .set("use_type", useType) + .set("plan_id","") + .eq("organ_id",organId) + .eq("plan_id", planId)); + } } \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateService.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateService.java index d6ece6124..029fc6723 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateService.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateService.java @@ -21,12 +21,12 @@ public interface RemainPlateService { * @param createReqVO 创建信息 * @return 编号 */ - Long createRemainPlate(@Valid RemainPlateSaveReqVO createReqVO); + Boolean createRemainPlate(@Valid RemainPlateSaveReqVO createReqVO); /** * 创建生产单余料板表 * - * @param createReqVOS 创建信息 + * @param createReqVOS 创建信息 多个 * @return 编号 */ Boolean createRemainPlateMultiple(@Valid Set createReqVOS); diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateServiceImpl.java index a195597bb..e785eafee 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateServiceImpl.java @@ -5,6 +5,7 @@ import com.cf.imes.module.manage.controller.admin.plate.vo.remain.RemainPlatePag import com.cf.imes.module.manage.controller.admin.plate.vo.remain.RemainPlateSaveReqVO; import com.cf.imes.module.manage.dal.dataobject.remainplaten.RemainPlateDO; import com.cf.imes.module.manage.dal.mysql.remainplaten.RemainPlateMapper; +import com.cf.imes.module.manage.enums.DeletedCodeEnum; import com.cf.imes.module.manage.enums.RemainPlateStatusEnum; import com.cf.imes.module.manage.enums.RemainPlateUseTypeEnum; import org.springframework.stereotype.Service; @@ -35,18 +36,29 @@ public class RemainPlateServiceImpl implements RemainPlateService { private RemainPlateMapper remainPlateMapper; @Override - public Long createRemainPlate(RemainPlateSaveReqVO createReqVO) { + public Boolean createRemainPlate(RemainPlateSaveReqVO createReqVO) { + List remainPlates = new ArrayList<>(); // 插入 - RemainPlateDO remainPlate = BeanUtils.toBean(createReqVO, RemainPlateDO.class); - remainPlateMapper.insert(remainPlate); - // 返回 - return remainPlate.getId(); + if (createReqVO.getCount() > 1) { + for (int i = 0; i < createReqVO.getCount(); i++) { + RemainPlateDO remainPlate = BeanUtils.toBean(createReqVO, RemainPlateDO.class).setCount(1); + remainPlates.add(remainPlate); + } + } + // 批量增加 + return remainPlateMapper.insertBatch(remainPlates); } @Override + @Transactional(rollbackFor = Exception.class) public Boolean createRemainPlateMultiple(Set createReqVOS) { Collection remainPlates = new ArrayList<>(); createReqVOS.forEach(createReqVO -> { + // 判断该排单是否已经添加过余料 + if (remainPlateMapper.selectRemainPlatesByInitPlanId(createReqVO.getInitPlanId(), DeletedCodeEnum.NOT_DELETED.getStatus(), OrganContextHolder.getOrganId()).size() > 0) { + // 删除余料 + remainPlateMapper.deleteRemainPlate(createReqVO.getInitPlanId(), OrganContextHolder.getOrganId()); + } RemainPlateDO remainPlate = BeanUtils.toBean(createReqVO, RemainPlateDO.class); remainPlates.add(remainPlate); }); @@ -55,25 +67,39 @@ public class RemainPlateServiceImpl implements RemainPlateService { @Override @Transactional(rollbackFor = Exception.class) - public void updateRemainPlateStatus(Set ids, Integer status, Integer useType,Long planId) { - //判断是否符合核销标准 - validateRemainPlateStatus(ids,RemainPlateStatusEnum.IN_USE.getStatus()); - //以id为条件批量修改余料库中的状态 - remainPlateMapper.updateRemainPlateStatus(ids, status, useType, OrganContextHolder.getOrganId(),planId); + public void updateRemainPlateStatus(Set ids, Integer status, Integer useType, Long planId) { + if (useType != RemainPlateUseTypeEnum.TYPE_ONE.getStatus() && useType != RemainPlateUseTypeEnum.TYPE_ZERO.getStatus()) { //余料使用状态为2或3 + // 判断该排单是否存在以使用的余料 + if (remainPlateMapper.selectRemainPlatesByPlanId(planId, RemainPlateStatusEnum.IN_USE.getStatus(), + DeletedCodeEnum.NOT_DELETED.getStatus(), OrganContextHolder.getOrganId()).size() > 0) { + // 余料状态还原 + remainPlateMapper.updateRemainPlateStatusByPlanId(RemainPlateStatusEnum.UNUSED.getStatus(), RemainPlateUseTypeEnum.TYPE_ZERO.getStatus(), + OrganContextHolder.getOrganId(), planId); + } + } + if (ids != null){ + //判断是否符合核销标准 + validateRemainPlateStatus(ids, RemainPlateStatusEnum.IN_USE.getStatus()); + //以id为条件批量修改余料库中的状态 + remainPlateMapper.updateRemainPlateStatus(ids, status, useType, OrganContextHolder.getOrganId(), planId); + } } @Override @Transactional(rollbackFor = Exception.class) public void revertRemainPlateStatus(Set ids, Integer status) { + if (ids == null) { + throw exception(REMAIN_PLATE_ID_NOT_EXISTS); + } // 判断余料的状态是否存在使用中 - validateRemainPlateStatus(ids,RemainPlateStatusEnum.UNUSED.getStatus()); + validateRemainPlateStatus(ids, RemainPlateStatusEnum.UNUSED.getStatus()); // 判断使用类型是否为核销 for (Long id : ids) { - if (validateRemainPlateUseType(id).equals( RemainPlateUseTypeEnum.TYPE_ONE.getStatus())) { + if (!validateRemainPlateUseType(id).equals(RemainPlateUseTypeEnum.TYPE_ONE.getStatus())) { throw exception(REMAIN_PLATE_USR_TYPE); } } - remainPlateMapper.updateRemainPlateStatus(ids, status, null, OrganContextHolder.getOrganId(),0L); + remainPlateMapper.updateRemainPlateStatus(ids, status, null, OrganContextHolder.getOrganId(), 0L); } @Override @@ -81,14 +107,14 @@ public class RemainPlateServiceImpl implements RemainPlateService { // 校验存在 validateRemainPlateExists(updateReqVO.getId()); // 是否使用 - if (validateRemainPlateStatus(updateReqVO.getId()) == RemainPlateStatusEnum.IN_USE.getStatus()){ + if (validateRemainPlateStatus(updateReqVO.getId()) == RemainPlateStatusEnum.IN_USE.getStatus()) { throw exception(REMAIN_PLATE_STATUS_USED); } // 判断是否为开料添加 RemainPlateDO updateObj = new RemainPlateDO(); - if (validateRemainPlateIsCutting(updateReqVO.getId())){ + if (validateRemainPlateIsCutting(updateReqVO.getId())) { updateObj.setRemark(updateReqVO.getRemark()); - }else { + } else { // 更新 updateObj = BeanUtils.toBean(updateReqVO, RemainPlateDO.class); } @@ -98,8 +124,11 @@ public class RemainPlateServiceImpl implements RemainPlateService { @Override @Transactional(rollbackFor = Exception.class) public void deleteRemainPlate(Set ids) { + if (ids == null) { + throw exception(REMAIN_PLATE_ID_NOT_EXISTS); + } // 判断余料的状态是否存在使用中 - validateRemainPlateStatus(ids,RemainPlateStatusEnum.IN_USE.getStatus()); + validateRemainPlateStatus(ids, RemainPlateStatusEnum.IN_USE.getStatus()); // 删除 remainPlateMapper.deleteBatchIds(ids); } @@ -123,7 +152,7 @@ public class RemainPlateServiceImpl implements RemainPlateService { } private boolean validateRemainPlateIsCutting(Long id) { - return remainPlateMapper.selectById(id).getIsCutting(); + return remainPlateMapper.selectById(id).getIsCutting(); } private Integer validateRemainPlateStatus(Long id) { diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index 4f373d206..0733861d8 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -269,6 +269,7 @@ public interface ErrorCodeConstants { ErrorCode ERR = new ErrorCode(1_002_038_001, "未知错误"); ErrorCode REMAIN_PLATE_STATUS_USED = new ErrorCode(1_002_038_001, "余料板正在使用中,禁止修改"); - ErrorCode REMAIN_PLATE_STATUS_NO_USED = new ErrorCode(1_002_038_001, "余料板未使用"); - ErrorCode REMAIN_PLATE_USR_TYPE = new ErrorCode(1_002_038_001, "余料板使用类型为不可核销类型"); + ErrorCode REMAIN_PLATE_STATUS_NO_USED = new ErrorCode(1_002_038_002, "余料板未使用"); + ErrorCode REMAIN_PLATE_USR_TYPE = new ErrorCode(1_002_038_003, "余料板使用类型为不可核销类型"); + ErrorCode REMAIN_PLATE_ID_NOT_EXISTS = new ErrorCode(1_002_038_004, "未选中余料板,请选择余料板"); }