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.docxBinary files differ