已修改4个文件
76 ■■■■ 文件已修改
src/main/java/com/ruoyi/production/pojo/ProductProcess.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/work-order-template.docx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductProcess.java
@@ -31,16 +31,23 @@
    private Long deviceLeaderId;
    /**
     * 工序编号
     */
    @Excel(name = "工序编号")
    private String no;
    /**
     * 工序名称
     */
    @Excel(name = "工序名称")
    private String name;
    /**
     * 工序编号
     */
    @Excel(name = "工序编号")
    private String no;
    @ApiModelProperty(value ="工序机台")
    @TableField(value = "device_name")
    @Excel(name = "工序机台")
    private String deviceName;
    /**
     * 备注
@@ -57,6 +64,7 @@
    private BigDecimal salaryQuota;
    @ApiModelProperty("类型 区分是计时还是计件 0 计时 1计件")
    @Excel(name = "类型 0 计时 1计件")
    private Long type;
    /**
@@ -82,12 +90,10 @@
    private Long tenantId;
    @ApiModelProperty(value ="是否质检")
    @Excel(name = "是否质检")
    private Boolean isQuality;
    @ApiModelProperty(value ="设备名称")
    @TableField(value = "device_name")
    @Excel(name = "设备名称")
    private String deviceName;
    @ApiModelProperty(value ="设备id")
    @TableField(value = "device_id")
src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -7,6 +8,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.mapper.DeviceLedgerMapper;
import com.ruoyi.device.pojo.DeviceLedger;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.production.dto.ProductProcessDto;
import com.ruoyi.production.mapper.ProcessRouteItemMapper;
@@ -23,6 +26,8 @@
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class ProductProcessServiceImpl extends ServiceImpl<ProductProcessMapper, ProductProcess> implements ProductProcessService {
@@ -32,6 +37,8 @@
    private ProcessRouteItemMapper processRouteItemMapper;
    @Autowired
    private ProductProcessRouteItemMapper productProcessRouteItemMapper;
    @Autowired
    private DeviceLedgerMapper deviceLedgerMapper;
    @Override
    public IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto) {
@@ -69,8 +76,29 @@
                if (ObjectUtils.isEmpty(productProcess.getName())) {
                    throw new RuntimeException("工序名称不能为空");
                }
                if (ObjectUtils.isEmpty(productProcess.getDeviceName())) {
                    throw new RuntimeException("工序机台不能为空");
                }
            });
            this.saveOrUpdateBatch(productProcessList);
            // 通过机台名称查询机台信息
            List<String> deviceNames = productProcessList.stream().map(ProductProcess::getDeviceName).collect(Collectors.toList());
            List<DeviceLedger> deviceLedgerList = deviceLedgerMapper.selectList(Wrappers.<DeviceLedger>lambdaQuery().in(DeviceLedger::getDeviceName, deviceNames));
            if(CollectionUtils.isEmpty(deviceLedgerList)){
                throw new RuntimeException("未能查询到该机台信息,请检查机台名称是否正确");
            }
            Map<String, DeviceLedger> deviceNameMap = deviceLedgerList.stream().collect(Collectors.toMap(DeviceLedger::getDeviceName, deviceLedger -> deviceLedger));
            productProcessList.forEach(productProcess -> {
                DeviceLedger deviceLedger = deviceNameMap.get(productProcess.getDeviceName());
                productProcess.setDeviceLeaderId(deviceLedger.getId());
                this.save(productProcess);
                if(StrUtil.isEmpty(productProcess.getNo())){
                    String no = "GX" + String.format("%08d", productProcess.getId());
                    productProcess.setNo(no);
                    productProcessMapper.updateById(productProcess);
                }
            });
            return AjaxResult.success(true);
        }catch (Exception e){
            e.printStackTrace();
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -207,12 +207,7 @@
            }
            productOrderMapper.updateById(productOrder);
        }
        //如果报废数量>0,需要进入报废的库存
        if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
            if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
                stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
            }
        }
        //nextAddProductMain(productionProductOutput) // 由于需要审核,所以需要拆封下来
        return true;
    }
@@ -366,6 +361,13 @@
                    .build();
            salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
        }
        //如果报废数量>0,需要进入报废的库存
        if (ObjectUtils.isNotEmpty(productionProductOutput.getScrapQty())) {
            if (productionProductOutput.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
                stockUtils.addUnStock(productModel.getId(), productionProductOutput.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
            }
        }
    }
    @Override
@@ -395,9 +397,13 @@
            BigDecimal scrapQty = productionProductOutput.getScrapQty() == null ? BigDecimal.ZERO : productionProductOutput.getScrapQty();
            BigDecimal completeQty = productWorkOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productWorkOrder.getCompleteQuantity();
            BigDecimal validQuantity = outputQty.subtract(scrapQty);
            // 必须为审核通过的才会减少数量
            productWorkOrder.setCompleteQuantity(completeQty.subtract(validQuantity));
            BigDecimal validQuantity = outputQty.subtract(scrapQty);
            if(productionProductMain.getAuditStatus() != 2){
                productWorkOrder.setCompleteQuantity(completeQty.subtract(validQuantity).max(BigDecimal.ZERO));
            }
            productWorkOrder.setActualEndTime(null);
            productWorkOrderMapper.updateById(productWorkOrder);
        } else {
src/main/resources/static/work-order-template.docx
Binary files differ