maven
34 分钟以前 43a8301f04a6ea7891ef16861734163b2646e07f
Merge remote-tracking branch 'origin/dev_New' into dev_New
已添加6个文件
已修改27个文件
320 ■■■■■ 文件已修改
doc/20260113-product_model.sql 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/20260114_add_dimission_reason_and_remark_to_staff_join_leave_record.sql 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/basic/dto/ProductModelDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/enums/StaffJoinLeaveRecordDimissionReason.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/dto/Details.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProductStructureService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/controller/QualityReportController.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/controller/QualityTestStandardController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/dto/QualityTestStandardBindingDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/pojo/QualityInspect.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/QualityReportService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/quality/QualityTestStandardBindingMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/quality/QualityTestStandardMapper.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/20260113-product_model.sql
@@ -4,3 +4,11 @@
alter table process_route
    add process_route_code varchar(255)  null comment '工艺路线编码';
alter table procurement_record_storage
    add product_model_id bigint null comment '产品规格id';
alter table procurement_record_out
    add product_model_id bigint null comment '产品规格id';
alter table quality_inspect
    add product_model_id bigint null comment '产品规格id';
doc/20260114_add_dimission_reason_and_remark_to_staff_join_leave_record.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
alter table staff_join_leave_record
    add dimission_reason varchar(255) null,
    add dimission_remark text null;
src/main/java/com/ruoyi/basic/dto/ProductModelDto.java
@@ -1,8 +1,12 @@
package com.ruoyi.basic.dto;
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.production.dto.ProductStructureDto;
import lombok.Data;
import java.util.List;
@Data
public class ProductModelDto extends ProductModel {
    private List<ProductStructureDto> productStructureList;
}
src/main/java/com/ruoyi/common/enums/StaffJoinLeaveRecordDimissionReason.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.ruoyi.common.enums;
import lombok.AllArgsConstructor;
/**
 * é™„件记录类型枚举
 *
 */
@AllArgsConstructor
public enum StaffJoinLeaveRecordDimissionReason {
    StaffJoinLeaveRecordDimissionReasonSalary("salary","薪资待遇"),
    StaffJoinLeaveRecordDimissionReasonCareerDevelopment("career_development","职业发展"),
    StaffJoinLeaveRecordDimissionReasonWorkEnvironment("work_environment","工作环境"),
    StaffJoinLeaveRecordDimissionReasonPersonalReason("personal_reason","个人原因"),
    StaffJoinLeaveRecordDimissionReasonOther("other","其他原因");
    private final String code;
    private final String info;
    public String getCode() {
        return code;
    }
    public String getInfo() {
        return info;
    }
}
src/main/java/com/ruoyi/procurementrecord/dto/Details.java
@@ -10,10 +10,11 @@
 */
@Data
public class Details {
    private Integer id;  // äº§å“id
    private Integer id;  // å°è´¦äº§å“id
    private BigDecimal inboundQuantity;  // å…¥åº“数量
    private BigDecimal warnNum;  // é¢„警数量(采购入库才有)
    //单价
    private BigDecimal unitPrice;
    private BigDecimal totalPrice;
    private Long productModelId; // åŸºç¡€äº§å“id
}
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
@@ -24,4 +24,6 @@
     */
    private Integer type;
    private Long productModelId;// åŸºç¡€äº§å“ID
}
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
@@ -9,6 +9,7 @@
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -41,4 +42,6 @@
    IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, @Param("req") ProcurementPageDto procurementDto);
    IPage<ProcurementPageDtoCopy> listPagePRS(Page page, @Param("req") ProcurementPageDto procurementDto);
    BigDecimal getSumQuantity(@Param("productModelId") Long productModelId);
}
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
@@ -7,6 +7,7 @@
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -26,4 +27,6 @@
    IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
    IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
    BigDecimal getSumQuantity(@Param("productModelId") Long productModelId);
}
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
@@ -1,8 +1,6 @@
package com.ruoyi.procurementrecord.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
@@ -89,4 +87,9 @@
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    /**
     * äº§å“ID
     */
    private Long productModelId;
}
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
@@ -95,4 +95,9 @@
     */
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    /**
     * äº§å“ID
     */
    private Long productModelId;
}
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -10,7 +10,6 @@
import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -22,7 +21,6 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -80,7 +78,8 @@
                .createUser(Long.valueOf(procurementRecordOutAdd.getUserId()))
                .createBy(sysUser.getNickName())
                .updateUser(Long.valueOf(procurementRecordOutAdd.getUserId()))
                .updateTime(LocalDateTime.now());
                .updateTime(LocalDateTime.now())
                .productModelId(procurementRecordOutAdd.getProductModelId());
        this.save(procurementRecordOut.build());
        return 0;
    }
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -14,8 +14,8 @@
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.procurementrecord.pojo.CustomStorage;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -29,7 +29,6 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -772,7 +771,8 @@
                    .createUser(loginUser.getUserId())
                    .updateTime(LocalDateTime.now())
                    .updateUser(loginUser.getUserId())
                    .createBy(procurementDto.getNickName());
                    .createBy(procurementDto.getNickName())
                    .productModelId(detail.getProductModelId());
            this.save(procurementRecordBuilder.build());
            // å…¥åº“成功减掉采购数量
//            LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductLambdaQueryWrapper = new LambdaQueryWrapper<>();
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.procurementrecord.utils;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
@Component
@RequiredArgsConstructor
public class StockUtils {
    private final ProcurementRecordOutMapper procurementRecordOutMapper;
    private final ProcurementRecordMapper procurementRecordMapper;
    // èŽ·å–å•†å“å‰©ä½™åº“å­˜
    public  BigDecimal getStockQuantity(Long productModelId) {
        // å…¥åº“数量
        BigDecimal sumQuantity = procurementRecordMapper.getSumQuantity(productModelId);
        // å‡ºåº“数量
        BigDecimal outQuantity = procurementRecordOutMapper.getSumQuantity(productModelId);
        return outQuantity.compareTo(sumQuantity) > 0 ? BigDecimal.ZERO : sumQuantity.subtract(outQuantity);
    }
}
src/main/java/com/ruoyi/production/service/ProductStructureService.java
@@ -1,6 +1,7 @@
package com.ruoyi.production.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basic.dto.ProductModelDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProductStructure;
@@ -9,7 +10,7 @@
public interface ProductStructureService extends IService<ProductStructure> {
    List<ProductStructureDto> listByproductModelId(Long productId);
    ProductModelDto listByproductModelId(Long productId);
    Boolean addProductStructureDto(ProductStructureDto productStructureDto);
src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
@@ -2,15 +2,22 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.dto.ProductModelDto;
import com.ruoyi.basic.mapper.ProductMapper;
import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.mapper.ProductStructureMapper;
import com.ruoyi.production.pojo.ProductStructure;
import com.ruoyi.production.service.ProductStructureService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
@Service
@@ -20,10 +27,21 @@
    @Autowired
    private  ProductStructureMapper productStructureMapper;
    @Autowired
    private ProductModelMapper productModelMapper;
    @Autowired
    private ProductMapper productMapper;
    @Override
    public List<ProductStructureDto> listByproductModelId(Long productModelId) {
        return productStructureMapper.listByproductModelId( productModelId);
    public ProductModelDto listByproductModelId(Long productModelId) {
        ProductModel productModel = productModelMapper.selectById(productModelId);
        Product product = productMapper.selectById(productModel.getProductId());
        ProductModelDto productModelDto = new ProductModelDto();
        BeanUtils.copyProperties(productModel,productModelDto);
        productModelDto.setProductName(product.getProductName());
        List<ProductStructureDto> productStructureDtos = productStructureMapper.listByproductModelId(productModelId);
        productModelDto.setProductStructureList(productStructureDtos);
        return productModelDto;
    }
    @Override
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -13,6 +13,7 @@
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.controller.ProductWorkOrderController;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.dto.ProductionProductMainDto;
@@ -76,6 +77,8 @@
    private ProductOrderMapper productOrderMapper;
    private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
    private StockUtils stockUtils;
    @Override
@@ -169,6 +172,7 @@
            qualityInspect.setInspectState(0);
            qualityInspect.setInspectType(inspectType);
            qualityInspect.setProductMainId(productionProductMain.getId());
            qualityInspect.setProductModelId(productModel.getId());
            qualityInspectMapper.insert(qualityInspect);
            List<QualityTestStandardParam> qualityTestStandardParams = qualityTestStandardParamMapper.selectListByProductId(product.getId());
@@ -186,6 +190,12 @@
        if (productModel != null) {
            List<ProductStructureDto> productStructureDtos = productStructureMapper.listByproductModelId(productModel.getId());
            for (ProductStructureDto productStructureDto : productStructureDtos) {
                ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId());
                BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId());
                if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) {
                    throw new RuntimeException("库存不足");
                }
                ProductionProductInput productionProductInput = new ProductionProductInput();
                productionProductInput.setProductModelId(productStructureDto.getProductModelId());
                productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -242,6 +242,7 @@
            qualityInspect.setProductId(saleProduct.getId());
            qualityInspect.setProductName(saleProduct.getProductCategory());
            qualityInspect.setModel(saleProduct.getSpecificationModel());
            qualityInspect.setProductModelId(saleProduct.getProductModelId());
            qualityInspect.setUnit(saleProduct.getUnit());
            qualityInspect.setQuantity(saleProduct.getQuantity());
            qualityInspectMapper.insert(qualityInspect);
src/main/java/com/ruoyi/quality/controller/QualityReportController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.quality.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.quality.pojo.QualityTestStandardParam;
import com.ruoyi.quality.service.QualityReportService;
import com.ruoyi.quality.service.QualityTestStandardParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * <p>
 * è´¨é‡ç®¡ç†çš„æŠ¥è¡¨ç®¡ç† å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-01-14 03:39:49
 */
@RestController
@RequestMapping("/qualityReport")
public class QualityReportController {
    @Autowired
    private QualityReportService qualityReportService;
}
src/main/java/com/ruoyi/quality/controller/QualityTestStandardController.java
@@ -80,4 +80,14 @@
        return AjaxResult.success(qualityTestStandardService.copyParam(qualityTestStandard));
    }
    /**
     * æ£€æµ‹æ ‡å‡†æ‰¹é‡å®¡æ ¸
     * @param qualityTestStandards
     * @return
     */
    @PostMapping("/qualityTestStandardAudit")
    public AjaxResult qualityTestStandardAudit(@RequestBody List<QualityTestStandard> qualityTestStandards) {
        return AjaxResult.success(qualityTestStandardService.updateBatchById(qualityTestStandards));
    }
}
src/main/java/com/ruoyi/quality/dto/QualityTestStandardBindingDto.java
@@ -8,4 +8,6 @@
public class QualityTestStandardBindingDto {
    private String productName;
    private Long qualityTestStandardBindingId;
}
src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
@@ -144,6 +144,8 @@
     * æŠ¥å·¥id
     */
    private Long productMainId;
    private Long productModelId;
    //不合格现象
    private String defectivePhenomena;
src/main/java/com/ruoyi/quality/service/QualityReportService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.quality.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.quality.pojo.QualityTestStandardParam;
/**
 * <p>
 * è´¨é‡ç®¡ç†çš„æŠ¥è¡¨ç®¡ç† æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2026-01-13 03:39:49
 */
public interface QualityReportService  {
}
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.quality.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -16,6 +17,7 @@
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.procurementrecord.dto.Details;
import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.mapper.QualityInspectMapper;
@@ -43,7 +45,9 @@
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -119,16 +123,45 @@
                ArrayList<Details> detailss = new ArrayList<>();
                Details details = new Details();
                details.setId(Math.toIntExact(qualityInspect.getProductId()));
                details.setId(Math.toIntExact(salesLedgerProduct.getId()));
                details.setInboundQuantity(qualityInspect.getQuantity());
                details.setWarnNum(salesLedgerProduct.getWarnNum());
                details.setUnitPrice(salesLedgerProduct.getTaxInclusiveUnitPrice());
                details.setTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice());
                details.setProductModelId(qualityInspect.getProductModelId());
                detailss.add( details);
                procurementRecordOutAdd.setDetails(detailss);
                procurementRecordService.add(procurementRecordOutAdd);
            }
        }else if (qualityInspect.getInspectType() == 1) {
            //查询UnitPrice/TotalPrice
            ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto();
            procurementRecordOutAdd.setType(2);
            procurementRecordOutAdd.setTypeName("生产入库");
            procurementRecordOutAdd.setNickName(loginUser.getNickName());
            List<Details> details = new ArrayList<>();
            Details details1 = new Details();
            details1.setInboundQuantity(qualityInspect.getQuantity());
            details1.setProductModelId(qualityInspect.getProductModelId());
            procurementRecordOutAdd.setDetails(details);
            ProcurementRecordStorage.ProcurementRecordStorageBuilder procurementRecordBuilder = ProcurementRecordStorage.builder()
                    .salesLedgerProductId(details1.getId())
                    .inboundBatches( "生产半成品入库")
                    .inboundNum(details1.getInboundQuantity())
                    .type(2)
                    .warnNum(new BigDecimal(0))
                    .unitPrice(new BigDecimal(0))
                    .totalPrice(new BigDecimal(0))
                    .createTime(LocalDateTime.now())
                    .createUser(loginUser.getUserId())
                    .updateTime(LocalDateTime.now())
                    .updateUser(loginUser.getUserId())
                    .createBy(procurementRecordOutAdd.getNickName())
                    .productModelId(details1.getProductModelId());
            procurementRecordService.save(procurementRecordBuilder.build());
        }else if (qualityInspect.getInspectType() == 2) {
            //查询UnitPrice/TotalPrice
@@ -140,9 +173,10 @@
            List<Details> details = new ArrayList<>();
            Details details1 = new Details();
            details1.setInboundQuantity(qualityInspect.getQuantity());
            details1.setId(Math.toIntExact(salesLedgerProduct.getId()));
            details1.setId(Math.toIntExact(salesLedgerProduct.getProductId()));
            details1.setUnitPrice(salesLedgerProduct.getTaxInclusiveUnitPrice());
            details1.setTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice());
            details1.setProductModelId(salesLedgerProduct.getProductModelId());
            details.add(details1);
            procurementRecordOutAdd.setDetails(details);
            procurementRecordService.add(procurementRecordOutAdd);
src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.quality.service.impl;
import com.ruoyi.quality.service.QualityReportService;
import org.springframework.stereotype.Service;
@Service
public class QualityReportServiceImpl implements QualityReportService {
}
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -77,7 +77,7 @@
            IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopyByProduction(new Page<>(1,-1), procurementDto);
            if(result.getRecords().size()>0) {
                ProcurementPageDtoCopy procurementDtoCopy = result.getRecords().get(0);
                if (item.getQuantity().compareTo(procurementDtoCopy.getInboundNum0()) >= 0) {
                if (item.getQuantity().compareTo(procurementDtoCopy.getInboundNum0()) >= 0 && item.getApproveStatus() == 0) {
                    item.setApproveStatus(1);
                    salesLedgerProductService.addOrUpdateSalesLedgerProduct(item);
                }
src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -9,7 +9,9 @@
import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
@@ -26,6 +28,7 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@@ -43,6 +46,8 @@
    private ISalesLedgerProductService salesLedgerProductService;
    @Autowired
    private ProcurementRecordOutService procurementRecordOutService;
    @Autowired
    private ProcurementRecordService procurementRecordStorageService;
    @GetMapping("/listPage")
    @ApiOperation("发货审批列表")
@@ -66,15 +71,22 @@
            SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(shipmentApproval.getSalesLedgerProductId());
            salesLedgerProduct.setApproveStatus(req.getApproveStatus());
            salesLedgerProductService.updateById(salesLedgerProduct);
            if(req.getApproveStatus()==3){
                ProcurementRecordStorage procurementRecordStorage = procurementRecordStorageService.getOne(new LambdaQueryWrapper<ProcurementRecordStorage>()
                        .eq(ProcurementRecordStorage::getSalesLedgerProductId, req.getSalesLedgerProductId()));
                if(procurementRecordStorage==null){
                    return AjaxResult.error("采购记录不存在");
                }
                //发货审批通过,生产该订单出库记录
                ProcurementRecordOutAdd procurementRecordOutAdd = new ProcurementRecordOutAdd();
                procurementRecordOutAdd.setId(procurementRecordStorage.getId());
                procurementRecordOutAdd.setSalesLedgerProductId(Math.toIntExact(salesLedgerProduct.getId()));
                procurementRecordOutAdd.setType(2);
                procurementRecordOutAdd.setUserId(Math.toIntExact(getUserId()));
                procurementRecordOutAdd.setQuantity(String.valueOf(salesLedgerProduct.getQuantity()));
                //获取当前时间
                LocalDateTime now = LocalDateTime.now();
                LocalDate now = LocalDate.now();
                procurementRecordOutAdd.setTime(now.toString());
                procurementRecordOutService.stockout(procurementRecordOutAdd);
            }
src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
@@ -188,6 +188,18 @@
    @Excel(name = "备注(福利待遇)")
    private String remark;
    /**
     * ç¦»èŒåŽŸå› 
     */
    @Excel(name = "离职原因",readConverterExp = "salary=薪资待遇,career_development=职业发展,work_environment=工作环境,personal_reason=个人原因,other=其他")
    private String dimissionReason;
    /**
     * ç¦»èŒå¤‡æ³¨
     */
    @Excel(name = "离职备注")
    private String dimissionRemark;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
@@ -24,6 +24,8 @@
import java.util.*;
import java.util.function.Function;
import static com.ruoyi.common.enums.StaffJoinLeaveRecordDimissionReason.StaffJoinLeaveRecordDimissionReasonOther;
@Service
@AllArgsConstructor
@Transactional(rollbackFor = Exception.class)
@@ -77,6 +79,12 @@
                staffOnJobMapper.updateById(staffOnJob);
            }else {
                throw new BaseException("没有找到"+staffJoinLeaveRecord.getStaffNo()+"编号的员工,无法新增离职!!!");
            }
            if (staffJoinLeaveRecord.getDimissionReason()==null){
                throw new BaseException("离职原因不能为空!!!");
            }
            if (!StaffJoinLeaveRecordDimissionReasonOther.getCode().equals(staffJoinLeaveRecord.getDimissionReason())){
                staffJoinLeaveRecord.setDimissionRemark("");
            }
        }
        return staffJoinLeaveRecordMapper.insert(staffJoinLeaveRecord);
@@ -168,6 +176,12 @@
        }else {
            /*离职*/
            //离职的编辑不会影响在职表
            if (staffJoinLeaveRecord.getDimissionReason()==null){
                throw new BaseException("离职原因不能为空!!!");
            }
            if (!StaffJoinLeaveRecordDimissionReasonOther.getCode().equals(staffJoinLeaveRecord.getDimissionReason())){
                staffJoinLeaveRecord.setDimissionRemark("");
            }
        }
        return staffJoinLeaveRecordMapper.updateById(staffJoinLeaveRecord);
    }
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -353,4 +353,9 @@
              </if>
          </where>
    </select>
    <select id="getSumQuantity" resultType="BigDecimal">
        select COALESCE(sum(inbound_num), 0)
        from procurement_record_storage
        where product_model_id = #{productModelId}
    </select>
</mapper>
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
@@ -169,4 +169,11 @@
        </where>
        order by t1.create_time desc
    </select>
    <select id="getSumQuantity" resultType="BigDecimal">
        select COALESCE(sum(inbound_num), 0)
        from procurement_record_out
        where type = 1
          and product_model_id = #{productModelId}
    </select>
</mapper>
src/main/resources/mapper/quality/QualityTestStandardBindingMapper.xml
@@ -14,7 +14,8 @@
        <result column="tenant_id" property="tenantId"/>
    </resultMap>
    <select id="listBinding" resultType="com.ruoyi.quality.dto.QualityTestStandardBindingDto">
        select *
        select t2.product_name,
               t1.id qualityTestStandardBindingId
        from quality_test_standard_binding t1
                 left join product t2 on t1.product_id = t2.id
        where t1.test_standard_id = #{testStandardId}
src/main/resources/mapper/quality/QualityTestStandardMapper.xml
@@ -7,17 +7,17 @@
        FROM quality_test_standard
        where
        1=1
        <if test="qualityTestStandard.standardNo != null and qualityTestStandard.standardNo != '' ">
            AND standard_no like concat('%',#{qualityTestStandard.standardNo},'%')
        <if test="c.standardNo != null and c.standardNo != '' ">
            AND standard_no like concat('%',#{c.standardNo},'%')
        </if>
        <if test="qualityTestStandard.standardName != null and qualityTestStandard.standardName != '' ">
            AND standard_name like concat('%',#{qualityTestStandard.standardName},'%')
        <if test="c.standardName != null and c.standardName != '' ">
            AND standard_name like concat('%',#{c.standardName},'%')
        </if>
        <if test="qualityTestStandard.state != null and qualityTestStandard.state != '' ">
            AND state = #{qualityTestStandard.state}
        <if test="c.state != null and c.state != '' ">
            AND state = #{c.state}
        </if>
        <if test="qualityTestStandard.inspectType != null and qualityTestStandard.inspectType != '' ">
            AND inspect_type = #{qualityTestStandard.inspectType}
        <if test="c.inspectType != null and c.inspectType != '' ">
            AND inspect_type = #{c.inspectType}
        </if>
    </select>
</mapper>
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -11,7 +11,7 @@
        t3.shipping_date
        FROM
        sales_ledger_product T1
        left join shipping_info t3 on T1.id = t3.sales_ledger_id
        left join shipping_info t3 on T1.id = t3.sales_ledger_product_id
        <where>
            1=1
            <if test="salesLedgerProduct.salesLedgerId != null and salesLedgerProduct.salesLedgerId != '' ">