From ebdfa825c07189b5f8e89f147d96d1bc612589db Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 15 七月 2025 08:32:17 +0800 Subject: [PATCH] 代码优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java | 204 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 185 insertions(+), 19 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java index 73eeacb..a956871 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java @@ -1,28 +1,29 @@ package com.vincent.rsf.server.manager.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.manager.controller.params.IsptOrderParam; import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem; -import com.vincent.rsf.server.manager.entity.AsnOrder; -import com.vincent.rsf.server.manager.entity.AsnOrderItem; -import com.vincent.rsf.server.manager.entity.QlyIsptItem; +import com.vincent.rsf.server.manager.entity.*; +import com.vincent.rsf.server.manager.enums.QlyIsptStatus; import com.vincent.rsf.server.manager.mapper.QlyInspectMapper; -import com.vincent.rsf.server.manager.entity.QlyInspect; -import com.vincent.rsf.server.manager.service.AsnOrderItemService; -import com.vincent.rsf.server.manager.service.AsnOrderService; -import com.vincent.rsf.server.manager.service.QlyInspectService; +import com.vincent.rsf.server.manager.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.vincent.rsf.server.manager.service.QlyIsptItemService; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.utils.SerialRuleUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; @Service("qlyInspectService") public class QlyInspectServiceImpl extends ServiceImpl<QlyInspectMapper, QlyInspect> implements QlyInspectService { @@ -36,24 +37,30 @@ @Autowired private QlyIsptItemService qlyIsptItemService; + @Autowired + private CompanysService companysService; + + @Autowired + private WarehouseAreasItemService warehouseAreasItemService; + @Override - public List<AsnOrderItem> listByAsn(Map<String, Object> map) { + public List<WkOrderItem> listByAsn(Map<String, Object> map) { if (Objects.isNull(map.get("asnCode"))) { throw new CoolException("鏀惰揣鍗曟嵁鏄庣粏缂栫爜涓嶈兘涓虹┖锛侊紒"); } - AsnOrder asnOrder = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>() - .eq(AsnOrder::getCode, map.get("asnCode")) - .ne(AsnOrder::getNtyStatus, 0)); - if (Objects.isNull(asnOrder)) { + WkOrder wkOrder = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() + .eq(WkOrder::getCode, map.get("asnCode")) + .ne(WkOrder::getNtyStatus, 0)); + if (Objects.isNull(wkOrder)) { throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); } - List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>() - .eq(AsnOrderItem::getAsnCode, map.get("asnCode")) - .eq(AsnOrderItem::getNtyStatus, 1)); - if (asnOrderItems.isEmpty()) { + List<WkOrderItem> wkOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>() + .eq(WkOrderItem::getAsnCode, map.get("asnCode")) + .eq(WkOrderItem::getNtyStatus, 1)); + if (wkOrderItems.isEmpty()) { return new ArrayList<>(); } - return asnOrderItems; + return wkOrderItems; } @Override @@ -65,7 +72,7 @@ if (Objects.isNull(inspect.getWkType())) { throw new CoolException("涓氬姟绫诲瀷涓嶈兘涓虹┖锛侊紒"); } - String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_WK_TYPE, inspect); + String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_CODE, inspect); inspect.setCode(code); if (!this.saveOrUpdate(inspect)) { throw new CoolException("璐ㄦ鍗曚繚瀛樺け璐ワ紒锛�"); @@ -87,4 +94,163 @@ } return R.ok("淇濆瓨鎴愬姛锛侊紒"); } + + /** + * @author Ryan + * @description 鑾峰彇鏈川妫�鍗曟嵁 + * @param + * @return + * @time 2025/3/31 10:12 + */ + @Override + public List<WarehouseAreasItem> getUnInspect(Map<String, String> params) { + String code = params.get("asnCode"); + List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService + .list(new QueryWrapper<WarehouseAreasItem>() + .select("asn_id as id, SUM(anfme) anfme, SUM(qty) qty, area_id, area_name, asn_code, asn_id, splr_id, splr_batch") + .eq(StringUtils.isNotBlank(code), "asn_code", code) + .lambda() +// .isNull(WarehouseAreasItem::getIsptResult) + .lt(WarehouseAreasItem::getWorkQty, 1) + .lt(WarehouseAreasItem::getQty, 1) + .groupBy(WarehouseAreasItem::getAsnCode)); + return warehouseAreasItems; + } + + /** + * @author Ryan + * @description 淇濆瓨 + * @param + * @return + * @time 2025/3/31 14:54 + */ + + @Override + @Transactional(rollbackFor = Exception.class) + public R saveSelected(IsptOrderParam param, Long loginUserId) { + if (Objects.isNull(param.getIds()) || param.getIds().isEmpty()) { + throw new CoolException("鍗曟嵁ID涓嶈兘涓虹┖锛侊紒"); + } + List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, param.getIds())); + if (wkOrders.isEmpty()) { + throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); + } +// List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, param.getIds())); +// if (orderItems.isEmpty()) { +// throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); +// } + + List<WarehouseAreasItem> orderItems = warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>() + .in(WarehouseAreasItem::getAsnId, param.getIds())); + Map<Long, List<WarehouseAreasItem>> listMap = orderItems.stream().collect(Collectors.groupingBy(WarehouseAreasItem::getAsnId)); + for (WkOrder wkOrder : wkOrders) { + QlyInspect inspect = new QlyInspect(); + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_CODE, null); + if (StringUtils.isBlank(ruleCode)) { + throw new CoolException("绛栫暐閿欒锛氳妫�鏌ョ瓥鐣ャ��" + SerialRuleCode.SYS_INSPECT_CODE + "銆嶆槸鍚﹁缃纭紒锛�"); + } + inspect.setCode(ruleCode) + .setWkType(wkOrder.getWkType()) + .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val) + .setCreateBy(loginUserId) + .setAsnId(wkOrder.getId()) + .setAsnCode(wkOrder.getCode()); + /**鑾峰彇鍗曟嵁鏄庣粏*/ + List<WarehouseAreasItem> asnOrderItems = listMap.get(wkOrder.getId()); + if (Objects.isNull(asnOrderItems) || asnOrderItems.isEmpty()) { + continue; + } + double anfme = asnOrderItems.stream().mapToDouble(WarehouseAreasItem::getAnfme).sum(); + inspect.setRcptQty(anfme); + if (!this.save(inspect)) { + throw new CoolException("鍗曟嵁" + wkOrder.getCode() + "淇濆瓨澶辫触锛侊紒"); + } + List<QlyIsptItem> items = new ArrayList<>(); + for (WarehouseAreasItem orderItem : asnOrderItems) { + QlyIsptItem isptItem = new QlyIsptItem(); + BeanUtils.copyProperties(orderItem, isptItem); + isptItem.setAsnItemId(orderItem.getId()) + .setIspectId(inspect.getId()) + .setRcptQty(orderItem.getAnfme()) + .setRcptId(orderItem.getId()) + .setPlatItemId(orderItem.getPlatItemId()) + .setPlatOrderCode(orderItem.getPlatOrderCode()) + .setPlatWorkCode(orderItem.getPlatWorkCode()) + .setProjectCode(orderItem.getProjectCode()) + .setAnfme(0.0) + .setFieldsIndex(orderItem.getFieldsIndex()) + .setSplrBatch(orderItem.getSplrBatch()) + .setSplrName(orderItem.getSplrId$()) + .setCreateBy(loginUserId) + .setUpdateBy(loginUserId) + .setDlyQty(orderItem.getAnfme()); + items.add(isptItem); + } + if (!qlyIsptItemService.saveBatch(items)) { + throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + } +// if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds()))) { +// throw new CoolException("鎶ユ鐘舵�佷慨鏀瑰け璐ワ紒锛�"); +// } + return R.ok("淇濆瓨鎴愬姛锛侊紒"); + } + + @Override + public boolean qlySave(QlyInspect qlyInspect) { + String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_CODE, qlyInspect); + if (Objects.isNull(code) || StringUtils.isBlank(code)) { + throw new CoolException("缂栫爜瑙勫垯閿欒锛�" + "璇锋鏌ョ紪鐮侊細" + "銆孲YS_INSPECT_CODE銆�" + "鏄惁璁剧疆鎴愬姛锛侊紒"); + } + qlyInspect.setCode(code); + if (Objects.isNull(qlyInspect.getAsnCode()) || StringUtils.isBlank(qlyInspect.getAsnCode())) { + throw new CoolException("鏀惰揣鍗曞彿涓嶈兘涓虹┖锛侊紒"); + } + WkOrder wkOrder = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getId, qlyInspect.getAsnCode())); + if (Objects.isNull(wkOrder)) { + throw new CoolException("鏀惰揣鍗曚笉瀛樺湪锛侊紒"); + } + qlyInspect.setAsnCode(wkOrder.getCode()).setAsnId(wkOrder.getId()); + + return this.save(qlyInspect); + } + + /** + * @author Ryan + * @date 2025/5/14 + * @description: 璐ㄦ瀹℃牳纭 + * @version 1.0 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R verifyComplate(Long id) { + if (Objects.isNull(id)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + QlyInspect inspect = this.getById(id); + if (Objects.isNull(inspect)) { + throw new CoolException("璐ㄦ鍗曟嵁涓嶅瓨鍦紒锛�"); + } + inspect.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); + if (!this.saveOrUpdate(inspect)) { + throw new CoolException("鍗曟嵁淇敼澶辫触锛侊紒"); + } + List<QlyIsptItem> items = qlyIsptItemService.selectIsptResult(new LambdaQueryWrapper<QlyIsptItem>().eq(QlyIsptItem::getIspectId, inspect.getId())); + if (items.isEmpty()) { + throw new CoolException("璐ㄦ鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); + } + + for (QlyIsptItem isptItem : items) { + if (isptItem.getSafeQty().compareTo(0.0) <= 0 && isptItem.getDisQty().compareTo(0.0) <= 0 ) { + continue; + } + WarehouseAreasItem item = warehouseAreasItemService.getById(isptItem.getRcptId()); + if (Objects.isNull(item)) { + throw new CoolException("搴撳瓨鏄庣粏涓嶅瓨鍦紒锛�"); + } + qlyIsptItemService.confirmReceipt(isptItem, item); + } + + return R.ok("瀹℃牳瀹屾垚锛侊紒"); + } } -- Gitblit v1.9.1