余料库逻辑修改,柜体删除修改

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