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 | 129 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 129 insertions(+), 0 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 6b36072..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
@@ -1,12 +1,141 @@
package com.vincent.rsf.server.manager.service.impl;
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
+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.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.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
@Service("purchaseItemService")
public class PurchaseItemServiceImpl extends ServiceImpl<PurchaseItemMapper, PurchaseItem> implements PurchaseItemService {
+ @Autowired
+ private PurchaseService purchaseService;
+
+ @Autowired
+ private MatnrService matnrService;
+
+ @Autowired
+ private CompanysService companysService;
+
+ /**
+ * @author Ryan
+ * @date 2025/5/6
+ * @description: PO鍗曞鍏ュ姛鑳�
+ * @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()) {
+ throw new CoolException("鐗╂枡瀵煎叆澶辫触锛侊紒");
+ }
+ if (result.getList().isEmpty()) {
+ throw new CoolException("琛ㄦ牸鍐呭涓嶈兘涓虹┖锛侊紒");
+ }
+ List<PurchaseTemplate> resultList = result.getList();
+ 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)) {
+ throw new CoolException(serviceOne.getCode() + "鍗曟嵁宸插瓨鍦紒锛�");
+ }
+ PurchaseTemplate template = list.stream().findFirst().get();
+ Purchase purchase = new Purchase();
+ 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 R.ok("瀵煎叆鎴愬姛锛侊紒");
+ }
}
--
Gitblit v1.9.1