From 1e31f9f7fe6f04236e97f72c0df3ce051d5f867e Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期一, 24 十一月 2025 16:26:23 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override
---
north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java | 206 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 197 insertions(+), 9 deletions(-)
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java
index 15f2563..319c357 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java
@@ -1,31 +1,219 @@
package com.example.erp.service.sd;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.example.erp.common.Constants;
+import com.example.erp.dto.sd.OrderSearchDTO;
import com.example.erp.entity.sd.Product;
+import com.example.erp.entity.sd.ProductDetail;
+import com.example.erp.entity.userInfo.Log;
+import com.example.erp.exception.ServiceException;
+import com.example.erp.mapper.sd.ProductDetailMapper;
import com.example.erp.mapper.sd.ProductMapper;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.example.erp.service.userInfo.LogService;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.DecimalFormat;
+import java.util.*;
@Service
@DS("sd")
+@Transactional
public class ProductService {
- @Autowired
+ private final
ProductMapper productMapper;
- public Map<String,Object> defaultDateProduct(Integer pageNum, Integer pageSize, List<String> glassType, Product product) {
+ private final
+ ProductDetailMapper productDetailMapper;
+
+ private final LogService logService;
+
+ public ProductService(ProductMapper productMapper, ProductDetailMapper productDetailMapper, LogService logService) {
+ this.productMapper = productMapper;
+ this.productDetailMapper = productDetailMapper;
+ this.logService = logService;
+ }
+ //浜у搧鏌ヨ鏂规硶
+ public Map<String,Object> defaultDateProduct(Integer pageNum, Integer pageSize, List<String> glassType,Map<String,Object> config) {
Integer offset = (pageNum-1)*pageSize;
String glassTypeId = null;
- if(glassType.size()>1){
- glassTypeId = glassType.get(1);
+ if(glassType.size()==2){
+ if(!Objects.equals(glassType.get(0), "")&&!Objects.equals(glassType.get(1), "")){
+ glassTypeId = glassType.get(1);
+ }
+ }else if(glassType.size()==1){
+ if(!Objects.equals(glassType.get(0), "")&& !Objects.equals(glassType.get(0), "undefined")){
+ glassTypeId = glassType.get(0);
+ }
+
}
+ JSONObject orderJson = new JSONObject(config);
+ Product product = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), Product.class);
+ Map<String,String> sortDate = (Map<String, String>) config.get("sort");
+ String field = sortDate.get("field").replaceAll("(?<!^)([A-Z])", "_$1").toLowerCase();
+ String orderBy = sortDate.get("order");
+
Map<String,Object> map = new HashMap<>();
- map.put("data",productMapper.defaultProduct(offset,pageSize,glassTypeId,product));
+ map.put("data",productMapper.defaultProduct(offset,pageSize,glassTypeId,product,field, orderBy));
map.put("total",productMapper.getPageTotal(offset,pageSize,glassTypeId,product));
return map;
}
+ //浜у搧淇濆瓨鏂规硶
+ public boolean saveProduct(Map<String,Object> productObject, String operator) {
+ //鎶婁紶鍏ヤ富闄勮〃鐨刼bject绫诲瀷杞崲鎴愬疄浣撶被绫诲瀷
+ JSONObject productJson = new JSONObject(productObject);
+ Product product = JSONObject.parseObject(JSONObject.toJSONString(productJson.get("title")), Product.class);
+ List<ProductDetail> productDetails = JSONArray.parseArray(JSONObject.toJSONString(productJson.get("detail")), ProductDetail.class);
+ //瀹屽杽涓婚檮琛ㄤ俊鎭苟杩斿洖
+ Map<String,Object> getProductJson = updateProduct(productDetails,product);
+ Product getProduct = JSONObject.parseObject(JSONObject.toJSONString(getProductJson.get("title")), Product.class);
+ List<ProductDetail> getProductDetails = JSONArray.parseArray(JSONObject.toJSONString(getProductJson.get("detail")), ProductDetail.class);
+ if(getProduct.getId()==null ){
+ insertProduct(getProduct,getProductDetails);
+ }else{
+ updateProductData(getProductDetails,getProduct,operator);
+ }
+ return true;
+
+ }
+
+ public Map<String,Object> selectProduct(String productName,Map<String,Object> productObject) {
+ Map<String,Object> map = new HashMap<>();
+ //鎶婁紶鍏ヤ富闄勮〃鐨刼bject绫诲瀷杞崲鎴愬疄浣撶被绫诲瀷
+ JSONObject productJson = new JSONObject(productObject);
+ Product product = JSONObject.parseObject(JSONObject.toJSONString(productJson.get("title")), Product.class);
+ List<ProductDetail> productDetails = JSONArray.parseArray(JSONObject.toJSONString(productJson.get("detail")), ProductDetail.class);
+ //瀹屽杽涓婚檮琛ㄤ俊鎭苟杩斿洖
+ Map<String,Object> getProductJson = updateProduct(productDetails,product);
+ Product getProduct = JSONObject.parseObject(JSONObject.toJSONString(getProductJson.get("title")), Product.class);
+ List<ProductDetail> getProductDetails = JSONArray.parseArray(JSONObject.toJSONString(getProductJson.get("detail")), ProductDetail.class);
+ if(getProduct.getId()!=null){
+ map.put("data",productMapper.selectProductId(productName,getProduct.getProductAbbreviation(), getProduct.getId()));
+ }else{
+ map.put("data",productMapper.selectProduct(productName,getProduct.getProductAbbreviation()));
+ }
+
+ return map;
+
+ }
+
+ private void updateProductData(List<ProductDetail> getProductDetails, Product getProduct, String operator) {
+ productMapper.update(getProduct,new UpdateWrapper<Product>().eq("id",getProduct.getId()));
+ productDetailMapper.delete(new QueryWrapper<ProductDetail>().eq("prod_id",getProduct.getId()));
+ for (ProductDetail getProductDetail : getProductDetails) {
+ getProductDetail.setProdId(getProduct.getId());
+ }
+ productDetailMapper.insertList(getProductDetails);
+ Log log = new Log();
+ log.setOperator(operator);
+ log.setContent(getProductDetails.toString()+getProduct.toString());
+ log.setFunction("浜у搧淇敼:saveProduct"+getProduct.getId());
+ logService.saveLog(log);
+ }
+
+ private void insertProduct(Product getProduct, List<ProductDetail> getProductDetails) {
+ //鎻掑叆涓昏〃鏁版嵁
+ productMapper.insert(getProduct);
+ //缁欏壇琛ㄦ坊鍔犱骇鍝乮d
+ for (ProductDetail getProductDetail : getProductDetails) {
+ getProductDetail.setProdId(getProduct.getId());
+ }
+
+ //鎻掑叆鍓〃
+ productDetailMapper.insertList(getProductDetails);
+ Log log = new Log();
+ log.setOperator(getProduct.getCreator());
+ log.setFunction("浜у搧鍒涘缓:saveProduct"+getProduct.getId());
+ logService.saveLog(log);
+ }
+
+ private Map<String,Object> updateProduct(List<ProductDetail> productDetailList,Product product) {
+ Map<String,Object> map = new HashMap<>();
+ //瀹氫箟浜у搧鐜荤拑鍘氬害绱姞
+ double thickness1 = 0;
+ //瀹氫箟浜у搧鎬诲帤搴︾疮鍔�
+ double totalThickness = 0;
+ //瀹氫箟蹇�熸煡璇�
+ StringBuilder query = new StringBuilder();
+
+ //瀹氫箟鍓〃鐜荤拑涓庨棿闅旂墿鎺掑簭
+ int sortNum = 0;
+ //瀹氫箟鍓〃鐜荤拑鎺掑簭
+ int glassSort = 0;
+ //瀹氫箟鍓〃涓┖鍒嗙粍
+ int glassGroup = 1;
+
+ for (ProductDetail productDetail : productDetailList) {
+ sortNum+=1;
+ productDetail.setSortNum(sortNum);
+ JSONObject separation = JSONObject.parseObject(productDetail.getSeparation(), Feature.OrderedField);
+ String getThickness = (String) separation.get("thickness");
+ double thicknessDetail = Double.parseDouble(getThickness.replace("mm",""));
+ totalThickness += thicknessDetail;
+
+ if(Objects.equals(productDetail.getDetailType(), "glass")){
+ glassSort+=1;
+ productDetail.setGlassSort(glassSort);
+ productDetail.setGlassGroup(glassGroup);
+ thickness1 += thicknessDetail;
+ DecimalFormat decimalFormat = new DecimalFormat("###");
+ query.append(decimalFormat.format(thicknessDetail));
+ }
+ else if (Objects.equals(productDetail.getDetailType(), "Interlayer")) {
+ query.append("+");
+ }else if(Objects.equals(productDetail.getDetailType(), "hollow")){
+ glassGroup+=1;
+ query.append("*");
+ }
+ }
+ product.setThickness(thickness1);
+ product.setTotalThickness(totalThickness);
+ product.setQuery(String.valueOf(query));
+ map.put("title",product);
+ map.put("detail",productDetailList);
+ return map;
+ }
+
+ public boolean deleteProductById(Integer id, String operator) {
+ Product product = productMapper.selectById(id);
+ if(product.getState()==1){
+ throw new ServiceException(Constants.Code_600,"浜у搧宸插鏍�,鏃犳硶鍒犻櫎");
+ }
+ productMapper.deleteById(id);
+ Log log = new Log();
+ log.setOperator(operator);
+ log.setFunction("浜у搧鍒犻櫎:deleteProductById"+id);
+ logService.saveLog(log);
+ return true;
+ }
+
+ public boolean updateProductStateById(Integer id, Integer state, String operator) {
+ Log log = new Log();
+ log.setOperator(operator);
+ log.setContent(state+state==0?"鍙嶅":"瀹℃牳");
+ log.setFunction("浜у搧瀹℃牳鍙嶅:updateProductStateById"+id);
+ logService.saveLog(log);
+ return productMapper.updateProductStateById(id,state);
+ }
+
+ public Map<String,Object> selectProductById(Integer id) {
+ Product product = productMapper.selectById(id);
+ List<ProductDetail> productDetailList = productDetailMapper.selectList(
+ new QueryWrapper<ProductDetail>().eq("prod_id", id));
+ Map<String,Object> map = new HashMap<>();
+ map.put("title",product);
+ map.put("detail",productDetailList);
+ return map;
+ }
+
+ public List<Product> otherSysGetProduct() {
+ return productMapper.selectList(new QueryWrapper<Product>().eq("state",1)
+ .orderByDesc("id"));
+ }
}
--
Gitblit v1.8.0