gongchunyi
2 天以前 f7649c532163847914e3591236e77c99fb68e1a8
Merge branch 'dev_New' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New
已修改21个文件
144 ■■■■ 文件已修改
src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/controller/QualityTestStandardBindingController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/QualityTestStandardBindingService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/quality/service/impl/QualityTestStandardBindingServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/device/DeviceMaintenanceMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/measuringinstrumentledger/MeasuringInstrumentLedgerMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductOrderMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductionProductMainMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/quality/QualityTestStandardMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/safe/SafeTrainingDetailsMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/safe/SafeTrainingMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockInventoryMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/safe-training.docx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java
@@ -37,7 +37,7 @@
    @ApiModelProperty("维修时间")
    @Excel(name = "维修时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date maintenanceTime;
    private LocalDateTime maintenanceTime;
    @ApiModelProperty("维修结果")
    @Excel(name = "维修结果")
src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java
@@ -25,7 +25,7 @@
 */
@RestController
@Api(tags = "计量器具台账记录")
@RequestMapping("/measuringInstrumentLedgerRecord")
@RequestMapping("Record")
public class MeasuringInstrumentLedgerRecordController extends BaseController {
    @Autowired
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
@@ -1,12 +1,15 @@
package com.ruoyi.production.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.production.pojo.ProductOrder;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
@Data
@ExcelIgnoreUnannotated
@@ -46,4 +49,9 @@
    @ApiModelProperty(value = "交期偏差")
    private Integer deliveryDaysDiff;
    @ApiModelProperty(value = "交期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate deliveryDate;
}
src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -1,10 +1,12 @@
package com.ruoyi.production.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.production.pojo.ProductionProductMain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -30,7 +32,7 @@
    @ApiModelProperty(value = "报废数量")
    @Excel(name = "报废数量")
    private BigDecimal scrapQty;
    private BigDecimal scrapQty = BigDecimal.ZERO;
    //产品名称
    @Excel(name = "产品名称")
@@ -48,10 +50,14 @@
    @Excel(name = "销售合同号")
    private String salesContractNo;
    private LocalDate scheduleDate;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate schedulingDate;
    private String schedulingUserName;
    private String customerName;
    private String process;
    private BigDecimal workHours;
    private BigDecimal wages;
}
src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
@@ -1,12 +1,15 @@
package com.ruoyi.production.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
 * @author :yys
@@ -63,17 +66,27 @@
     */
    @ApiModelProperty(value = "排产日期")
    @Excel(name = "生产日期")
    private String schedulingDate;
    private LocalDate schedulingDate;
    @ApiModelProperty(value = "开始时间")
    private String entryDateStart;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate entryDateStart;
    @ApiModelProperty(value = "结束时间")
    private String entryDateEnd;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate entryDateEnd;
    private BigDecimal outputNum;
    private BigDecimal outputRate;
    private String outputRate;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate entryDate;
    private String dateType;
}
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -239,9 +239,11 @@
            salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
        }
        //如果报废数量>0,需要进入报废的库存
        if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
        if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
            if (BigDecimal.ZERO.compareTo(dto.getScrapQty()) > 0) {
            stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
        }
        }
        return true;
    }
src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.production.dto.ProductionProductMainDto;
import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
import com.ruoyi.production.mapper.ProductionProductMainMapper;
@@ -43,11 +44,27 @@
    @Override
    public IPage<SalesLedgerProductionAccountingDto> pageProductionAccounting(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page) {
        // TODO 管理员查询所有,其他人只能查自己
        boolean admin = SecurityUtils.isAdmin(SecurityUtils.getUserId());
        if (!admin) {
            salesLedgerProductionAccountingDto.setSchedulingUserName(SecurityUtils.getUsername());
        }
        if (salesLedgerProductionAccountingDto.getDateType().equals("month"))  {
            salesLedgerProductionAccountingDto.setEntryDate(null);
        }else {
            salesLedgerProductionAccountingDto.setEntryDateStart(null);
            salesLedgerProductionAccountingDto.setEntryDateEnd(null);
        }
        return salesLedgerProductionAccountingMapper.pageProductionAccounting(page, salesLedgerProductionAccountingDto);
    }
    @Override
    public IPage<ProductionProductMainDto> listProductionDetails(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page) {
        if (salesLedgerProductionAccountingDto.getDateType().equals("month"))  {
            salesLedgerProductionAccountingDto.setEntryDate(null);
        }else {
            salesLedgerProductionAccountingDto.setEntryDateStart(null);
            salesLedgerProductionAccountingDto.setEntryDateEnd(null);
        }
        return productionProductMainMapper.listProductionDetails(salesLedgerProductionAccountingDto, page);
    }
src/main/java/com/ruoyi/quality/controller/QualityTestStandardBindingController.java
@@ -34,7 +34,7 @@
     */
    @PostMapping("/add")
    public AjaxResult add(@RequestBody List<QualityTestStandardBinding> qualityTestStandardBindings) {
        return AjaxResult.success(qualityTestStandardBindingService.saveBatch(qualityTestStandardBindings));
        return AjaxResult.success(qualityTestStandardBindingService.add(qualityTestStandardBindings));
    }
    /**
src/main/java/com/ruoyi/quality/service/QualityTestStandardBindingService.java
@@ -18,4 +18,6 @@
public interface QualityTestStandardBindingService extends IService<QualityTestStandardBinding> {
    List<QualityTestStandardBindingDto> listBinding(Long testStandardId);
    int add(List<QualityTestStandardBinding> qualityTestStandardBindings);
}
src/main/java/com/ruoyi/quality/service/impl/QualityTestStandardBindingServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.quality.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.quality.dto.QualityTestStandardBindingDto;
import com.ruoyi.quality.pojo.QualityTestStandardBinding;
import com.ruoyi.quality.mapper.QualityTestStandardBindingMapper;
@@ -28,4 +29,19 @@
    public List<QualityTestStandardBindingDto> listBinding(Long testStandardId) {
        return qualityTestStandardBindingMapper.listBinding(testStandardId);
    }
    @Override
    public int add(List<QualityTestStandardBinding> qualityTestStandardBindings) {
        //判断是否已经有绑定过的数据
        for (QualityTestStandardBinding qualityTestStandardBinding : qualityTestStandardBindings) {
            List<QualityTestStandardBinding> testStandardBindings = qualityTestStandardBindingMapper.selectList(Wrappers.<QualityTestStandardBinding>lambdaQuery()
                    .eq(QualityTestStandardBinding::getTestStandardId, qualityTestStandardBinding.getTestStandardId())
                    .eq(QualityTestStandardBinding::getProductId, qualityTestStandardBinding.getProductId()));
            if (testStandardBindings.size() > 0){
                throw new RuntimeException("该产品已经绑定过,请检查");
            }
        }
        saveBatch(qualityTestStandardBindings);
        return 0;
    }
}
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -25,4 +25,5 @@
    //现存量
    private String currentStock;
}
src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
@@ -38,11 +38,11 @@
            <if test="deviceMaintenanceDto.maintenanceActuallyName != null">
                and dm.maintenance_actually_name like concat('%',#{deviceMaintenanceDto.maintenanceActuallyName},'%')
            </if>
            <if test="deviceMaintenanceDto.maintenancePlanTimeReq != null">
                and dm.maintenance_plan_time like concat('%',#{deviceMaintenanceDto.maintenancePlanTimeReq},'%')
            <if test="deviceMaintenanceDto.maintenancePlanTime != null">
                and dm.maintenance_plan_time like concat('%',#{deviceMaintenanceDto.maintenancePlanTime},'%')
            </if>
            <if test="deviceMaintenanceDto.maintenanceActuallyTimeReq != null">
                and dm.maintenance_actually_time like concat('%',#{deviceMaintenanceDto.maintenanceActuallyTimeReq},'%')
            <if test="deviceMaintenanceDto.maintenanceActuallyTime != null">
                and dm.maintenance_actually_time like concat('%',#{deviceMaintenanceDto.maintenanceActuallyTime},'%')
            </if>
            <if test="deviceMaintenanceDto.maintenanceActuallyTime != null">
                and dm.maintenance_actually_time >= str_to_date(#{deviceMaintenanceDto.maintenanceActuallyTime}, '%Y-%m-%d')
src/main/resources/mapper/measuringinstrumentledger/MeasuringInstrumentLedgerMapper.xml
@@ -15,7 +15,7 @@
        next_date,
        record_date,
        CASE
        WHEN next_date &gt;=  DATE_FORMAT(now(),'%Y-%m-%d') THEN 1
        WHEN most_date &gt;=  DATE_FORMAT(now(),'%Y-%m-%d') THEN 1
        ELSE 2
        END AS status,
        create_user,
src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -22,7 +22,8 @@
        ppr.process_route_code,
        pb.bom_no,
        ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus,
        DATEDIFF(sl.delivery_date, CURDATE()) AS delivery_days_diff
        DATEDIFF(sl.delivery_date, CURDATE()) AS delivery_days_diff,
        sl.delivery_date
        from product_order po
        left join sales_ledger sl on po.sales_ledger_id = sl.id
        left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id
src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -63,7 +63,7 @@
        sl.sales_contract_no,
        sl.customer_name,
        p.product_name,
        pm.model,
        pm.model as product_model_name,
        pm.unit,
        slpa.process,
        ppo.quantity,
@@ -83,6 +83,14 @@
            <if test="ew.schedulingUserName != null and ew.schedulingUserName !=''">
                and slpa.scheduling_user_name = #{ew.schedulingUserName}
            </if>
            <if test="ew.entryDate != null " >
                and slpa.scheduling_date >= #{ew.entryDate}
                and slpa.scheduling_date &lt; DATE_ADD(#{ew.entryDate}, INTERVAL 1 DAY)
            </if>
            <if test="ew.entryDateStart != null and ew.entryDateEnd != null" >
                and slpa.scheduling_date >= #{ew.entryDateStart}
                and slpa.scheduling_date &lt; date_add(#{ew.entryDateEnd}, INTERVAL 1 DAY)
            </if>
        </where>
    </select>
src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
@@ -57,7 +57,16 @@
            slpa.scheduling_user_name,
               sum(ppout.quantity) as output_num,
               sum(slpa.finished_num * work_hours) as  wages,
               SUM(slpa.finished_num) / SUM(ppout.quantity) as output_rate
        CONCAT(
        ROUND(
        CASE
        WHEN SUM(ppout.quantity) = 0 OR SUM(ppout.quantity) IS NULL THEN 0
        ELSE SUM(slpa.finished_num) * 100.0 / SUM(ppout.quantity)
        END,
        2
        ),
        '%'
        ) as output_rate
        FROM sales_ledger_production_accounting slpa
                 LEFT JOIN production_product_main ppm ON slpa.sales_ledger_work_id = ppm.id
                 LEFT JOIN production_product_output ppout ON ppm.id = ppout.product_main_id
@@ -65,6 +74,15 @@
            <if test="ew.schedulingUserName != null and ew.schedulingUserName !=''" >
                and slpa.scheduling_user_name  = #{ew.schedulingUserName}
            </if>
            <if test="ew.entryDate != null ">
                and slpa.scheduling_date >= #{ew.entryDate}
                and slpa.scheduling_date &lt; DATE_ADD(DATE(#{ew.entryDate}), INTERVAL 1 DAY)
            </if>
            <if test="ew.entryDateStart != null and ew.entryDateEnd != null">
                and slpa.scheduling_date >= #{ew.entryDateStart}
                and slpa.scheduling_date &lt; DATE_ADD(DATE(#{ew.entryDateEnd}), INTERVAL 1 DAY)
            </if>
        </where>
        GROUP BY slpa.scheduling_user_name
src/main/resources/mapper/quality/QualityTestStandardMapper.xml
@@ -13,10 +13,10 @@
        <if test="c.standardName != null and c.standardName != '' ">
            AND standard_name like concat('%',#{c.standardName},'%')
        </if>
        <if test="c.state != null and c.state != '' ">
        <if test="c.state != null ">
            AND state =#{c.state}
        </if>
        <if test="c.inspectType != null and c.inspectType != '' ">
        <if test="c.inspectType != null ">
            AND inspect_type =#{c.inspectType}
        </if>
    </select>
src/main/resources/mapper/safe/SafeTrainingDetailsMapper.xml
@@ -30,7 +30,7 @@
                 left join safe_training st on std.safe_training_id = st.id
        where std.user_id = #{c.userId}
        <if test="c.trainingDate != null">
            and st.training_date = #{c.trainingDate}
            and st.training_date = date_format(#{c.trainingDate},'%Y%m%d')
        </if>
    </select>
src/main/resources/mapper/safe/SafeTrainingMapper.xml
@@ -41,8 +41,8 @@
        <if test="c.placeTraining != null and c.placeTraining != ''">
            and st.place_training like concat('%', #{c.placeTraining}, '%')
        </if>
        <if test="c.trainingDate != null and c.trainingDate != ''">
            and st.training_date = #{c.trainingDate}
        <if test="c.trainingDate != null ">
            and st.training_date = date_format(#{c.trainingDate},'%Y%m%d')
        </if>
    </select>
    <select id="getSafeTraining" resultType="com.ruoyi.safe.dto.SafeTrainingDto">
src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -91,15 +91,17 @@
        </if>
    </select>
    <select id="stockInventoryPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
        select sir.*,si.qualitity,
        select sir.*,si.qualitity as current_stock,
        pm.model,
        pm.unit,
        p.product_name
        p.product_name,
        su.nick_name as create_by
        from
        stock_in_record sir
        left join stock_inventory si on sir.product_model_id = si.product_model_id
        left join product_model pm on sir.product_model_id = pm.id
        left join product p on pm.product_id = p.id
        left join sys_user su on sir.create_user = su.user_id
        <where>
            <if test="ew.reportDate != null">
                and sir.create_time >= #{ew.reportDate}
src/main/resources/static/safe-training.docx
Binary files differ