From 9fe1ec3afe8696c628d076d1f76686c4efc3012e Mon Sep 17 00:00:00 2001
From: zc <zyzc>
Date: 星期二, 21 十月 2025 10:49:55 +0800
Subject: [PATCH] 容器初始化功能优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/PurchaseItemServiceImpl.java | 103 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 89 insertions(+), 14 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/PurchaseItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/PurchaseItemServiceImpl.java
index 59905b3..92994bb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/PurchaseItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/PurchaseItemServiceImpl.java
@@ -5,32 +5,46 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.manager.enums.OrderSourceType;
+import com.vincent.rsf.server.manager.enums.OrderType;
+import com.vincent.rsf.server.manager.enums.OrderWorkType;
import com.vincent.rsf.server.common.utils.ExcelUtil;
+import com.vincent.rsf.server.manager.entity.Companys;
+import com.vincent.rsf.server.manager.entity.Matnr;
import com.vincent.rsf.server.manager.entity.Purchase;
-import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
import com.vincent.rsf.server.manager.entity.excel.PurchaseTemplate;
+import com.vincent.rsf.server.manager.enums.CompanysType;
import com.vincent.rsf.server.manager.mapper.PurchaseItemMapper;
import com.vincent.rsf.server.manager.entity.PurchaseItem;
+import com.vincent.rsf.server.manager.service.CompanysService;
+import com.vincent.rsf.server.manager.service.MatnrService;
import com.vincent.rsf.server.manager.service.PurchaseItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vincent.rsf.server.manager.service.PurchaseService;
+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 org.springframework.web.multipart.MultipartFile;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.text.SimpleDateFormat;
+import java.util.*;
import java.util.stream.Collectors;
@Service("purchaseItemService")
public class PurchaseItemServiceImpl extends ServiceImpl<PurchaseItemMapper, PurchaseItem> implements PurchaseItemService {
- private final PurchaseServiceImpl purchaseService;
+ @Autowired
+ private PurchaseService purchaseService;
- public PurchaseItemServiceImpl(PurchaseServiceImpl purchaseService) {
- this.purchaseService = purchaseService;
- }
+ @Autowired
+ private MatnrService matnrService;
+
+ @Autowired
+ private CompanysService companysService;
/**
* @author Ryan
@@ -39,6 +53,7 @@
* @version 1.0
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public R excelImport(MultipartFile file, Long loginUserId) throws Exception {
ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), PurchaseTemplate.class, ExcelUtil.getDefaultImportParams());
if (result.getList().isEmpty()) {
@@ -48,19 +63,79 @@
throw new CoolException("琛ㄦ牸鍐呭涓嶈兘涓虹┖锛侊紒");
}
List<PurchaseTemplate> resultList = result.getList();
- Map<String, List<PurchaseTemplate>> listMap = resultList.stream().collect(Collectors.groupingBy(PurchaseTemplate::getPoCode));
+ Map<String, List<PurchaseTemplate>> listMap = resultList.stream().collect(Collectors.groupingBy(item ->
+ !Objects.isNull(item.getPoCode()) ? item.getPoCode() : SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ORDER_PO_CODE, null)
+ ));
for (String key : listMap.keySet()) {
List<PurchaseTemplate> list = listMap.get(key);
Purchase serviceOne = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, key));
if (!Objects.isNull(serviceOne)) {
- continue;
+ throw new CoolException(serviceOne.getCode() + "鍗曟嵁宸插瓨鍦紒锛�");
}
PurchaseTemplate template = list.stream().findFirst().get();
Purchase purchase = new Purchase();
- purchase.setCode(template.getPoCode()).set;
+ Date date = template.getArrTime();
+ BeanUtils.copyProperties(template, purchase);
+ purchase.setCode(template.getPoCode());
+ if (StringUtils.isBlank(template.getPoCode())) {
+ String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ORDER_PO_CODE, purchase);
+ purchase.setCode(ruleCode);
+ }
+ purchase.setType(OrderType.getTypeVal(template.getType()))
+ .setWkType(OrderWorkType.getWorkType(template.getWkType()))
+ .setSource(OrderSourceType.ORDER_SOURCE_TYPE_EXCEL.desc)
+ .setPreArr(date)
+ .setCreateBy(loginUserId)
+ .setUpdateBy(loginUserId);
+ if (!purchaseService.save(purchase)) {
+ throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
+ }
+ List<PurchaseItem> items = new ArrayList<>();
+ for (PurchaseTemplate purchaseTemplate : list) {
+ PurchaseItem item = new PurchaseItem();
+ if (StringUtils.isBlank(purchaseTemplate.getMatnrCode())) {
+ throw new CoolException(purchaseTemplate.getPoCode() + "锛氱墿鏂欑紪鐮佷笉鑳戒负绌猴紒锛�");
+ }
+ Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, purchaseTemplate.getMatnrCode()));
+ if (Objects.isNull(matnr)) {
+ throw new CoolException(purchaseTemplate.getMatnrCode() + "鐗╂枡涓嶅瓨鍦紒锛�");
+ }
+ item.setMatnrName(matnr.getName())
+ .setMatnrCode(matnr.getCode())
+ .setPlatItemId(purchaseTemplate.getPlatItemId())
+ .setAnfme(purchaseTemplate.getAnfme())
+ .setPurchaseId(purchase.getId())
+ .setUnit(matnr.getUnit())
+ .setNromQty(matnr.getNromNum())
+ .setSplrBatch(purchaseTemplate.getSplrBatch())
+ .setCreateBy(loginUserId)
+ .setUpdateBy(loginUserId);
+ if (StringUtils.isNotBlank(purchaseTemplate.getSplrCode())) {
+ Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>()
+ .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val)
+ .eq(Companys::getCode, purchaseTemplate.getSplrCode()));
+ if (!Objects.isNull(companys)) {
+ item.setSplrCode(companys.getCode()).setSplrName(companys.getName());
+ } else {
+ throw new CoolException("渚涘簲鍟嗭細" + template.getSplrName() + "涓嶅瓨鍦紒锛�");
+ }
+ } else {
+ throw new CoolException("渚涘簲鍟嗙紪鐮佷笉鑳戒负绌猴紒锛�");
+ }
+ if (!this.save(item)) {
+ throw new CoolException("鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ items.add(item);
+ }
+ double anfmes = items.stream().mapToDouble(PurchaseItem::getAnfme).sum();
+ purchase.setAnfme(anfmes);
+
+ if (!purchaseService.updateById(purchase)) {
+ throw new CoolException("涓诲崟鏁伴噺淇敼澶辫触锛侊紒");
+ }
}
- return null;
+ return R.ok("瀵煎叆鎴愬姛锛侊紒");
}
}
--
Gitblit v1.9.1