From 2f640b1038fa331954f78ed1f4317212cf5bb34d Mon Sep 17 00:00:00 2001 From: chenlu <1320612696@qq.com> Date: 星期五, 07 六月 2024 16:56:06 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override --- north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java | 149 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 143 insertions(+), 6 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 aff3714..0d88662 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,19 +1,156 @@ 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.entity.sd.Product; +import com.example.erp.entity.sd.ProductDetail; +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 org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.text.DecimalFormat; +import java.util.*; @Service -@DS("erp_sd") +@DS("sd") +@Transactional public class ProductService { - @Autowired + private final ProductMapper productMapper; - public List<Product> defaultDateProduct() { - return productMapper.defaultProduct(); + private final + ProductDetailMapper productDetailMapper; + + public ProductService(ProductMapper productMapper, ProductDetailMapper productDetailMapper) { + this.productMapper = productMapper; + this.productDetailMapper = productDetailMapper; + } + //浜у搧鏌ヨ鏂规硶 + public Map<String,Object> defaultDateProduct(Integer pageNum, Integer pageSize, List<String> glassType, Product product) { + Integer offset = (pageNum-1)*pageSize; + String glassTypeId = null; + if(glassType.size()>1){ + glassTypeId = glassType.get(1); + } + Map<String,Object> map = new HashMap<>(); + map.put("data",productMapper.defaultProduct(offset,pageSize,glassTypeId,product)); + map.put("total",productMapper.getPageTotal(offset,pageSize,glassTypeId,product)); + return map; + } + + //浜у搧淇濆瓨鏂规硶 + public boolean saveProduct(Map<String,Object> productObject) { + //鎶婁紶鍏ヤ富闄勮〃鐨刼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); + } + return true; + + } + + private void updateProductData(List<ProductDetail> getProductDetails, Product getProduct) { + 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); + } + + private void insertProduct(Product getProduct, List<ProductDetail> getProductDetails) { + //鎻掑叆涓昏〃鏁版嵁 + productMapper.insert(getProduct); + //缁欏壇琛ㄦ坊鍔犱骇鍝乮d + for (ProductDetail getProductDetail : getProductDetails) { + getProductDetail.setProdId(getProduct.getId()); + } + //鎻掑叆鍓〃 + productDetailMapper.insertList(getProductDetails); + } + + 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) { + Product product = productMapper.selectById(id); + if(product.getState()==1){ + throw new ServiceException(Constants.Code_600,"浜у搧宸插鏍�,鏃犳硶鍒犻櫎"); + } + productMapper.deleteById(id); + return true; + } + + public boolean updateProductStateById(Integer id,Integer state) { + 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; } } -- Gitblit v1.8.0