chenlu
2025-11-24 4086570d2a4091c86e6fad35a0c36c8963cdf415
north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java
@@ -7,11 +7,14 @@
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 com.example.erp.service.userInfo.LogService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -27,25 +30,41 @@
    private final
    ProductDetailMapper productDetailMapper;
    public ProductService(ProductMapper productMapper, 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, Product product) {
    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) {
    public boolean saveProduct(Map<String,Object>  productObject, String operator) {
        //把传入主附表的object类型转换成实体类类型
        JSONObject productJson = new JSONObject(productObject);
        Product product = JSONObject.parseObject(JSONObject.toJSONString(productJson.get("title")), Product.class);
@@ -58,19 +77,44 @@
        if(getProduct.getId()==null ){
            insertProduct(getProduct,getProductDetails);
        }else{
            updateProductData(getProductDetails,getProduct);
            updateProductData(getProductDetails,getProduct,operator);
        }
        return true;
    }
    private void updateProductData(List<ProductDetail> getProductDetails, Product getProduct) {
    public Map<String,Object> selectProduct(String productName,Map<String,Object>  productObject) {
        Map<String,Object> map = new HashMap<>();
        //把传入主附表的object类型转换成实体类类型
        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) {
@@ -80,8 +124,13 @@
        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) {
@@ -131,16 +180,25 @@
        return map;
    }
    public boolean deleteProductById(Integer id) {
    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) {
    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);
    }
@@ -153,4 +211,9 @@
        map.put("detail",productDetailList);
        return map;
    }
    public List<Product> otherSysGetProduct() {
        return productMapper.selectList(new QueryWrapper<Product>().eq("state",1)
                .orderByDesc("id"));
    }
}