doc/20260313_À¤Ì©»¯¹¤.sql
@@ -25,5 +25,6 @@ update_time datetime null comment 'æ´æ°æ¶é´', unique idx_raw_material_id_quality_inspect_item_id (raw_material_id, quality_inspect_item_id) ); alter table raw_material add quantity decimal(18, 2) null; alter table approve_process add approve_record_id bigint not null default 0; src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -192,4 +192,14 @@ ExcelUtil<ApproveProcess> util = new ExcelUtil<ApproveProcess>(ApproveProcess.class); util.exportExcel(response, accountExpenses, "å±é©ä½ä¸å®¡æ¹å¯¼åº"); } @ApiOperation(value = "åæå®¡æ¹å¯¼åº") @PostMapping("/exportNine") public void exportNine(HttpServletResponse response) { List<ApproveProcess> accountExpenses = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>() .eq(ApproveProcess::getApproveDelete, 0) .eq(ApproveProcess::getApproveType, 9)); ExcelUtil<ApproveProcess> util = new ExcelUtil<ApproveProcess>(ApproveProcess.class); util.exportExcel(response, accountExpenses, "åæå®¡æ¹å¯¼åº"); } } src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -127,10 +127,15 @@ private Long tenantId; /** * 审æ¹ç±»å 1-å ¬åºç®¡ç 2-请å管ç 3-åºå·®ç®¡ç 4-æ¥é管ç 5-éè´å®¡æ¹ 6-æ¥ä»·å®¡æ¹ 7-åè´§å®¡æ¹ 8-å±é©ä½ä¸å®¡æ¹ * 审æ¹ç±»å 1-å ¬åºç®¡ç 2-请å管ç 3-åºå·®ç®¡ç 4-æ¥é管ç 5-éè´å®¡æ¹ 6-æ¥ä»·å®¡æ¹ 7-åè´§å®¡æ¹ 8-å±é©ä½ä¸å®¡æ¹ 9-åæå®¡æ¹ */ private Integer approveType; /** * 审æ¹å ³èè®°å½id */ private Long approveRecordId; @TableField(exist = false) private String approveTypeName; src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -325,6 +325,8 @@ return "å货审æ¹"; case 8: return "å±é©ä½ä¸å®¡æ¹"; case 9: return "åæå®¡æ¹"; } return null; } src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -115,6 +115,9 @@ approveProcess.setApproveStatus(0); approveProcess.setApproveDelete(0); approveProcess.setApproveType(approveProcessVO.getApproveType()); if (approveProcessVO.getApproveRecordId() != null) { approveProcess.setApproveRecordId(approveProcessVO.getApproveRecordId()); } approveProcess.setCreateTime(LocalDateTime.now()); approveProcess.setTenantId(approveProcessVO.getApproveDeptId()); approveProcess.setApproveUserIds(approveProcessVO.getApproveUserIds()); @@ -441,6 +444,8 @@ return "å货审æ¹"; case 8: return "å±é©ä½ä¸å®¡æ¹"; case 9: return "åæå®¡æ¹"; } return null; } src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -67,6 +67,10 @@ * 审æ¹ç±»å */ private Integer approveType; /** * 审æ¹å ³èè®°å½id */ private Long approveRecordId; /** * è®¾å¤æ¥ä¿®id */ src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -171,41 +171,40 @@ /*æ°å¢è´¨æ£*/ List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId())); if (productProcessRouteItem.getIsQuality()) { //对åºçè¿ç¨æ£æè åºåæ£ int inspectType = 1; String process = productProcess.getName();//å·¥åº if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) { //æåä¸éå·¥åºçæåºåæ£ inspectType = 2; process = null; } Product product = productMapper.selectById(productModel.getProductId()); QualityInspect qualityInspect = new QualityInspect(); qualityInspect.setProductId(product.getId()); qualityInspect.setProductName(product.getProductName()); qualityInspect.setModel(productModel.getModel()); qualityInspect.setUnit(productModel.getUnit()); qualityInspect.setQuantity(productQty); qualityInspect.setProcess(process); qualityInspect.setInspectState(0); qualityInspect.setInspectType(inspectType); qualityInspect.setProductMainId(productionProductMain.getId()); qualityInspect.setProductModelId(productModel.getId()); qualityInspectMapper.insert(qualityInspect); List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process); if (qualityTestStandard.size() > 0) { qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId()); qualityInspectMapper.updateById(qualityInspect); qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery() .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//é»è®¤è·åææ°ç .forEach(qualityTestStandardParam -> { QualityInspectParam param = new QualityInspectParam(); BeanUtils.copyProperties(qualityTestStandardParam, param); param.setId(null); param.setInspectId(qualityInspect.getId()); qualityInspectParamMapper.insert(param); }); } // int inspectType = 1; // String process = productProcess.getName();//å·¥åº // if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) { // //æåä¸éå·¥åºçæåºåæ£ // inspectType = 2; // process = null; // } // Product product = productMapper.selectById(productModel.getProductId()); // QualityInspect qualityInspect = new QualityInspect(); // qualityInspect.setProductId(product.getId()); // qualityInspect.setProductName(product.getProductName()); // qualityInspect.setModel(productModel.getModel()); // qualityInspect.setUnit(productModel.getUnit()); // qualityInspect.setQuantity(productQty); // qualityInspect.setProcess(process); // qualityInspect.setInspectState(0); // qualityInspect.setInspectType(inspectType); // qualityInspect.setProductMainId(productionProductMain.getId()); // qualityInspect.setProductModelId(productModel.getId()); // qualityInspectMapper.insert(qualityInspect); // List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process); // if (qualityTestStandard.size() > 0) { // qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId()); // qualityInspectMapper.updateById(qualityInspect); // qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery() // .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//é»è®¤è·åææ°ç // .forEach(qualityTestStandardParam -> { // QualityInspectParam param = new QualityInspectParam(); // BeanUtils.copyProperties(qualityTestStandardParam, param); // param.setId(null); // param.setInspectId(qualityInspect.getId()); // qualityInspectParamMapper.insert(param); // }); // } }else { //ç´æ¥å ¥åº stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId()); src/main/java/com/ruoyi/quality/controller/RawMaterialController.java
@@ -59,10 +59,7 @@ */ @PatchMapping("/submit/{id}") public AjaxResult submit(@PathVariable Long id) { RawMaterial rawMaterial = new RawMaterial(); rawMaterial.setId(id); rawMaterial.setInspectState(RawMaterialInspectState.RawMaterialInspectStateSubmitted.getCode()); return AjaxResult.success(rawMaterialService.updateById(rawMaterial)); return AjaxResult.success(rawMaterialService.submit(id)); } /** src/main/java/com/ruoyi/quality/pojo/RawMaterial.java
@@ -6,6 +6,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; @@ -44,10 +45,6 @@ @Excel(name = "æ¹æ¬¡å·") private String batchNo; @ApiModelProperty("æ°é") @Excel(name = "æ°é") private BigDecimal quantity; @ApiModelProperty("æ£éªç»æ 0åæ ¼ 1ä¸åæ ¼") @Excel(name = "æ£éªç»æ", readConverterExp = "0=åæ ¼,1=ä¸åæ ¼") private Integer checkResult; @@ -63,7 +60,7 @@ @ApiModelProperty("æ£éªæ¥æ") @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "æ£æµæ¥æ", width = 30, dateFormat = "yyyy-MM-dd") private LocalDate checkTime; private Date checkTime; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) src/main/java/com/ruoyi/quality/service/RawMaterialService.java
@@ -21,6 +21,8 @@ RawMaterialDto detail(Long id); boolean submit(Long id); boolean add(RawMaterialDto rawMaterialDto); boolean update(RawMaterialDto rawMaterialDto); src/main/java/com/ruoyi/quality/service/impl/RawMaterialServiceImpl.java
@@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.basic.mapper.ProductMapper; import com.ruoyi.basic.mapper.ProductModelMapper; import com.ruoyi.basic.pojo.Product; @@ -14,21 +17,22 @@ import com.ruoyi.common.enums.RawMaterialCheckType; import com.ruoyi.common.enums.RawMaterialInspectState; import com.ruoyi.common.utils.HackLoopTableRenderPolicy; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.inspectiontask.mapper.QualityInspectItemMapper; import com.ruoyi.inspectiontask.pojo.QualityInspectItem; import com.ruoyi.quality.dto.RawMaterialDto; import com.ruoyi.quality.dto.RawMaterialQualityInspectItemDto; import com.ruoyi.quality.mapper.QualityUnqualifiedMapper; import com.ruoyi.quality.mapper.RawMaterialMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.pojo.RawMaterial; import com.ruoyi.quality.pojo.RawMaterialQualityInspectItem; import com.ruoyi.quality.pojo.*; import com.ruoyi.quality.service.RawMaterialQualityInspectItemService; import com.ruoyi.quality.service.RawMaterialService; import lombok.AllArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -36,13 +40,14 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; /** * <p> * æå¡å®ç°ç±» * æå¡å®ç°ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ @@ -60,6 +65,11 @@ private ProductModelMapper productModelMapper; private ProductMapper productMapper; private QualityUnqualifiedMapper qualityUnqualifiedMapper; @Autowired private ApproveProcessServiceImpl approveProcessService; @Override public IPage<RawMaterialDto> listPage(Page page, RawMaterialDto rawMaterialDto) { @@ -93,6 +103,9 @@ public RawMaterialDto detail(Long id) { RawMaterial rawMaterial = rawMaterialMapper.selectById(id); RawMaterialDto rawMaterialDto = new RawMaterialDto(); if (rawMaterial == null) { return rawMaterialDto; } BeanUtils.copyBeanProp(rawMaterialDto, rawMaterial); // è·åæ£æµé¡¹å ³èå ³ç³» List<RawMaterialQualityInspectItem> rawQualityList = rawMaterialQualityInspectItemService.list(new LambdaQueryWrapper<RawMaterialQualityInspectItem>() @@ -113,13 +126,72 @@ // æ¥è¯¢äº§åid ProductModel productModel = productModelMapper.selectById(rawMaterialDto.getProductModelId()); Product product = productMapper.selectById(productModel.getProductId()); rawMaterialDto.setProductId(productModel.getProductId()); rawMaterialDto.setProductName(product.getProductName()); rawMaterialDto.setModel(productModel.getModel()); rawMaterialDto.setUnit(productModel.getUnit()); rawMaterialDto.setCheckResultText(RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()) == null ? "" : RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()).getValue()); rawMaterialDto.setCheckTypeText(RawMaterialCheckType.fromValue(rawMaterial.getCheckType()) == null ? "" : RawMaterialCheckType.fromValue(rawMaterial.getCheckType()).getValue()); return rawMaterialDto; } @Override @Transactional(rollbackFor = Exception.class) public boolean submit(Long id) { RawMaterial rawMaterial = rawMaterialMapper.selectById(id); if (rawMaterial.getCheckResult() == null) { throw new RuntimeException("请å 夿æ¯å¦åæ ¼"); } // ä¸åæ ¼ï¼çæä¸åæ ¼è®°å½ if (rawMaterial.getCheckResult().equals(RawMaterialCheckResult.RawMaterialCheckResultUnqualified.getCode())) { QualityUnqualified qualityUnqualified = new QualityUnqualified(); qualityUnqualified.setInspectId(rawMaterial.getId());//æ£éªid qualityUnqualified.setInspectType(rawMaterial.getCheckType());//æ£éªç±»å qualityUnqualified.setInspectState(0);//å¾ å¤ç qualityUnqualified.setCheckName(rawMaterial.getCheckUserName());//æ£éªååç§° qualityUnqualified.setCheckTime(rawMaterial.getCheckTime());//æ£éªæ¥æ ProductModel productModel = productModelMapper.selectById(rawMaterial.getProductModelId()); Product product = productMapper.selectById(productModel.getProductId()); qualityUnqualified.setProductId(productModel.getProductId());//产åid qualityUnqualified.setProductName(product.getProductName());//产ååç§° qualityUnqualified.setModel(productModel.getModel());//è§æ ¼åå· qualityUnqualified.setUnit(productModel.getUnit());//åä½ List<RawMaterialQualityInspectItem> inspectParams = rawMaterialQualityInspectItemService.list(Wrappers.<RawMaterialQualityInspectItem>lambdaQuery().eq(RawMaterialQualityInspectItem::getRawMaterialId, rawMaterial.getId())); // è·åå ³èçQualityInspectItem项ç®å String text = inspectParams.stream().map(item -> { QualityInspectItem qualityInspectItem = qualityInspectItemMapper.selectById(item.getQualityInspectItemId()); return qualityInspectItem != null ? qualityInspectItem.getName() : ""; }).collect(Collectors.joining(",")); qualityUnqualified.setDefectivePhenomena(text + "è¿äºé¡¹ç®ä¸åå¨ä¸åæ ¼");//ä¸åæ ¼ç°è±¡ qualityUnqualifiedMapper.insert(qualityUnqualified); } else { //åæ ¼: 产çåæå®¡æ ¸è®°å½ LoginUser loginUser = SecurityUtils.getLoginUser(); ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(9); approveProcessVO.setApproveRecordId(rawMaterial.getId()); approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId()); approveProcessVO.setApproveReason( "åæå®¡æ ¸æ¹å·ï¼"+rawMaterial.getBatchNo()); Long adminUserId = 1L; // todo å设第ä¸ä¸ªç®¡çåçID为1 approveProcessVO.setApproveUserIds(String.valueOf(adminUserId)); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); try { approveProcessService.addApprove(approveProcessVO); }catch (Exception e){ log.error("RawMaterialServiceImpl error:{}", e); throw new RuntimeException("审æ¹å¤±è´¥"); } } rawMaterial.setInspectState(RawMaterialInspectState.RawMaterialInspectStateSubmitted.getCode()); return rawMaterialMapper.updateById(rawMaterial) > 0; } @Override @Transactional(rollbackFor = Exception.class) public boolean add(RawMaterialDto rawMaterialDto) { rawMaterialDto.setInspectState(RawMaterialInspectState.RawMaterialInspectStateUnsubmitted.getCode()); // æ°å¢åæ