| 2026-02-04 | liyong | ![]() |
| 2026-02-04 | liyong | ![]() |
| 2026-02-04 | liyong | ![]() |
| 2026-02-04 | liyong | ![]() |
| 2026-02-04 | liyong | ![]() |
| 2026-02-04 | liyong | ![]() |
| 2026-02-04 | gongchunyi | ![]() |
| 2026-02-04 | gongchunyi | ![]() |
| 2026-02-04 | maven | ![]() |
| 2026-02-03 | gongchunyi | ![]() |
| 2026-02-03 | gongchunyi | ![]() |
src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -11,9 +11,9 @@ import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.mapper.DeviceRepairMapper; import com.ruoyi.device.pojo.DeviceRepair; @@ -31,7 +31,6 @@ import com.ruoyi.sales.pojo.SalesQuotation; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -206,7 +205,7 @@ purchaseLedgerServiceImpl.addQualityInspect(purchaseLedger, salesLedgerProduct); }else { //ç´æ¥å ¥åº stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId()); stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId()); } } } else if (status.equals(3)) { src/main/java/com/ruoyi/basic/controller/EnumController.java
@@ -1,7 +1,7 @@ package com.ruoyi.basic.controller; import com.ruoyi.basic.utils.EnumUtils; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.EnumUtil; import com.ruoyi.framework.aspectj.lang.annotation.Anonymous; import com.ruoyi.framework.web.domain.R; @@ -24,13 +24,13 @@ @GetMapping("/stockRecordType") @Anonymous public R getStockRecordTypeEnum(){ List<Map<String, Object>> list = EnumUtil.toList(StockQualifiedRecordTypeEnum.class); List<Map<String, Object>> list = EnumUtil.toList(StockOutQualifiedRecordTypeEnum.class); return R.ok(list); } @GetMapping("/{className}") @Anonymous public R test(@PathVariable String className){ public R stockRecordTypeByClassName(@PathVariable("className") String className){ return R.ok(EnumUtils.getOptions("com.ruoyi.common.enums." + className)); } } src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ package com.ruoyi.common.enums; import lombok.Getter; @Getter public enum StockInQualifiedRecordTypeEnum implements BaseEnum<String> { CUSTOMIZATION_STOCK_IN("0", "åæ ¼èªå®ä¹å ¥åº"), PRODUCTION_REPORT_STOCK_IN("2", "ç产æ¥å·¥-å ¥åº"), PURCHASE_STOCK_IN("7", "éè´-å ¥åº"), QUALITYINSPECT_STOCK_IN("11", "è´¨æ£-åæ ¼å ¥åº"), DEFECTIVE_PASS("11", "ä¸åæ ¼-è®©æ¥æ¾è¡"); private final String code; private final String value; StockInQualifiedRecordTypeEnum(String code, String value) { this.code = code; this.value = value; } } src/main/java/com/ruoyi/common/enums/StockInUnQualifiedRecordTypeEnum.java
ÎļþÃû´Ó src/main/java/com/ruoyi/common/enums/StockUnQualifiedRecordTypeEnum.java ÐÞ¸Ä @@ -4,20 +4,19 @@ @Getter public enum StockUnQualifiedRecordTypeEnum implements BaseEnum<String> { public enum StockInUnQualifiedRecordTypeEnum implements BaseEnum<String> { PRODUCTION_SCRAP("4", "ç产æ¥å·¥-æ¥åº"), DEFECTIVE_SCRAP("5", "ä¸åæ ¼å¤ç-æ¥åº"), PRODUCTION_SCRAP("5", "ç产æ¥å·¥-æ¥åº"), CUSTOMIZATION_UNSTOCK_IN("9", "ä¸åæ ¼èªå®ä¹å ¥åº"), CUSTOMIZATION_UNSTOCK_OUT("10", "ä¸åæ ¼èªå®ä¹åºåº"), QUALITYINSPECT_UNSTOCK_IN("12", "è´¨æ£-ä¸åæ ¼å ¥åº"); private final String code; private final String value; StockUnQualifiedRecordTypeEnum(String code, String value) { StockInUnQualifiedRecordTypeEnum(String code, String value) { this.code = code; this.value = value; } src/main/java/com/ruoyi/common/enums/StockOutQualifiedRecordTypeEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.ruoyi.common.enums; import lombok.Getter; @Getter public enum StockOutQualifiedRecordTypeEnum implements BaseEnum<String> { CUSTOMIZATION_STOCK_OUT("1", "åæ ¼èªå®ä¹åºåº"), PRODUCTION_REPORT_STOCK_OUT("3", "ç产æ¥å·¥-åºåº"), SALE_STOCK_OUT("8", "éå®-åºåº"), SALE_SHIP_STOCK_OUT("13", "éå®-åè´§åºåº"); private final String code; private final String value; StockOutQualifiedRecordTypeEnum(String code, String value) { this.code = code; this.value = value; } } src/main/java/com/ruoyi/common/enums/StockOutUnQualifiedRecordTypeEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.ruoyi.common.enums; import lombok.Getter; @Getter public enum StockOutUnQualifiedRecordTypeEnum implements BaseEnum<String> { CUSTOMIZATION_UNSTOCK_OUT("10", "ä¸åæ ¼èªå®ä¹åºåº"); private final String code; private final String value; StockOutUnQualifiedRecordTypeEnum(String code, String value) { this.code = code; this.value = value; } } src/main/java/com/ruoyi/common/enums/StockQualifiedRecordTypeEnum.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -87,4 +87,15 @@ } @ApiOperation("æ°å¢ç产订å") @PostMapping("addProductOrder") public R addProductOrder(@RequestBody ProductOrder productOrder) { return R.ok(productOrderService.addProductOrder(productOrder)); } @ApiOperation("å é¤ç产订å") @DeleteMapping("/{ids}") public R delete(@PathVariable("ids") Long[] ids) { return R.ok(productOrderService.delete(ids)); } } src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
@@ -20,4 +20,6 @@ ProductWorkOrderDto getProductWorkOrderFlowCard(@Param("id") Long id); List<ProductWorkOrderDto> selectWorkOrderStartStats(@Param("startDate") String startDate, @Param("endDate") String endDate); ProductWorkOrder selectMax(@Param("datePrefix") String datePrefix); } src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -21,4 +21,8 @@ List<ProcessRoute> listProcessRoute(Long productModelId); List<ProductStructureDto> listProcessBom(Long orderId); Boolean addProductOrder(ProductOrder productOrder); Boolean delete(Long[] id); } src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -1,22 +1,29 @@ package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.dto.ProductBomDto; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.production.dto.ProductOrderDto; import com.ruoyi.production.dto.ProductStructureDto; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; import com.ruoyi.production.service.ProcessRouteService; import com.ruoyi.production.service.ProductOrderService; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.pojo.QualityInspect; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.stream.Collectors; @Service public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, ProductOrder> implements ProductOrderService { @@ -39,6 +46,23 @@ @Autowired private ProductWorkOrderMapper productWorkOrderMapper; @Autowired private ProductionProductMainMapper productionProductMainMapper; @Autowired private ProductionProductOutputMapper productionProductOutputMapper; @Autowired private ProductionProductInputMapper productionProductInputMapper; @Autowired private QualityInspectMapper qualityInspectMapper; @Autowired private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; @Autowired private StockUtils stockUtils; @Override public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) { @@ -69,11 +93,7 @@ int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); queryWrapper.likeRight("work_order_no", datePrefix) .orderByDesc("work_order_no") .last("LIMIT 1"); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); @@ -87,7 +107,7 @@ } } // çæå®æ´çå·¥åå· String workOrderNoStr ="GD"+ String.format("%s%03d", datePrefix, sequenceNumber); String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber); ProductWorkOrder productWorkOrder = new ProductWorkOrder(); productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); productWorkOrder.setProductOrderId(productOrder.getId()); @@ -110,4 +130,139 @@ public List<ProductStructureDto> listProcessBom(Long orderId) { return productOrderMapper.listProcessBom(orderId); } @Override public Boolean addProductOrder(ProductOrder productOrder) { String string = generateNextOrderNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); productOrder.setNpsNo(string); productOrder.setCompleteQuantity(BigDecimal.ZERO); this.save(productOrder); if (ObjectUtils.isNotEmpty(productOrder.getRouteId())) { this.bindingRoute(productOrder); } return true; } @Override public Boolean delete(Long[] ids) { //æ¹éæ¥è¯¢productOrder List<ProductOrder> productOrders = productOrderMapper.selectList( new LambdaQueryWrapper<ProductOrder>() .in(ProductOrder::getId, ids) ); if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) { // æ¹éæ¥è¯¢processRouteItems List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList( new LambdaQueryWrapper<ProductProcessRouteItem>() .in(ProductProcessRouteItem::getProductOrderId, ids) ); if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(allRouteItems)) { // è·åè¦å é¤çå·¥åºé¡¹ID List<Long> routeItemIds = allRouteItems.stream() .map(ProductProcessRouteItem::getId) .collect(Collectors.toList()); // æ¥è¯¢å ³èçå·¥åID List<ProductWorkOrder> workOrders = productWorkOrderMapper.selectList( new LambdaQueryWrapper<ProductWorkOrder>() .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds) ); if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(workOrders)) { List<Long> workOrderIds = workOrders.stream() .map(ProductWorkOrder::getId) .collect(Collectors.toList()); // æ¥è¯¢å ³èçç产主表ID List<ProductionProductMain> productMains = productionProductMainMapper.selectList( new LambdaQueryWrapper<ProductionProductMain>() .in(ProductionProductMain::getWorkOrderId, workOrderIds) ); List<Long> productMainIds = productMains.stream() .map(ProductionProductMain::getId) .collect(Collectors.toList()); // å é¤äº§åºè¡¨ãæå ¥è¡¨æ°æ® if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(productMainIds)) { productionProductOutputMapper.deleteByProductMainIds(productMainIds); productionProductInputMapper.deleteByProductMainIds(productMainIds); List<QualityInspect> qualityInspects = qualityInspectMapper.selectList( new LambdaQueryWrapper<QualityInspect>() .in(QualityInspect::getProductMainId, productMainIds) ); //å é¤åºåºè®°å½ for (Long productMainId : productMainIds) { //å é¤ç产åºåºè®°å½ stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode()); //å 餿¥åºçå ¥åºè®°å½ stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode()); } qualityInspects.forEach(qualityInspect -> { //inspectState=1 å·²æäº¤ ä¸è½å é¤ if (qualityInspect.getInspectState() == 1) { throw new RuntimeException("å·²æäº¤çæ£éªåä¸è½å é¤"); } }); qualityInspectMapper.deleteByProductMainIds(productMainIds); salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>() .in(SalesLedgerProductionAccounting::getProductMainId, productMainIds)); } // å é¤çäº§ä¸»è¡¨æ°æ® productionProductMainMapper.deleteByWorkOrderIds(workOrderIds); // å é¤å·¥åæ°æ® productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>() .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)); } } // æ¹éå é¤processRouteItem productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>() .in(ProductProcessRouteItem::getProductOrderId, ids)); // æ¹éå é¤productProcessRoute productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>() .in(ProductProcessRoute::getProductOrderId, ids)); // æ¹éå é¤productOrder productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>() .in(ProductOrder::getId, ids)); } return true; } //è·åå½åç产订åå· public String getMaxOrderNoByDate(String datePrefix) { QueryWrapper<ProductOrder> queryWrapper = new QueryWrapper<>(); // å¹é 以 SC + æ¥æå¼å¤´ç订åå· queryWrapper.likeRight("nps_no", "SC" + datePrefix); // æè®¢åå·ååºæå queryWrapper.orderByDesc("nps_no"); queryWrapper.last("LIMIT 1"); ProductOrder latestOrder = this.getOne(queryWrapper); return latestOrder != null ? latestOrder.getNpsNo() : null; } public String generateNextOrderNo(String datePrefix) { String maxOrderNo = getMaxOrderNoByDate(datePrefix); int sequence = 1; // é»è®¤èµ·å§åºå· if (maxOrderNo != null && !maxOrderNo.isEmpty()) { // æåæµæ°´å·é¨åï¼åè®¾æ ¼å¼ä¸º SC + æ¥æ + æµæ°´å·ï¼ String sequenceStr = maxOrderNo.substring(("SC" + datePrefix).length()); try { sequence = Integer.parseInt(sequenceStr) + 1; } catch (NumberFormatException e) { // å¼å¸¸æ åµä¸é置为1 sequence = 1; } } // çææ°è®¢åå· return "SC" + datePrefix + String.format("%04d", sequence); } } src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
@@ -142,11 +142,7 @@ String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); queryWrapper.likeRight("work_order_no", datePrefix) .orderByDesc("work_order_no") .last("LIMIT 1"); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -11,8 +11,10 @@ import com.ruoyi.basic.mapper.ProductModelMapper; import com.ruoyi.basic.pojo.Product; import com.ruoyi.basic.pojo.ProductModel; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.production.dto.ProductStructureDto; @@ -24,6 +26,7 @@ import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.quality.mapper.*; import com.ruoyi.quality.pojo.*; import com.ruoyi.quality.service.IQualityInspectService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,6 +45,7 @@ @Transactional(rollbackFor = Exception.class) public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService { private IQualityInspectService qualityInspectService; private ProductionProductMainMapper productionProductMainMapper; @@ -149,7 +153,7 @@ productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())); productionProductInput.setProductMainId(productionProductMain.getId()); productionProductInputMapper.insert(productionProductInput); stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId()); stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId()); } /*æ°å¢æ¥å·¥äº§åºè¡¨*/ @@ -203,7 +207,7 @@ } }else { //ç´æ¥å ¥åº stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId()); stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId()); } /*æ´æ°å·¥ååç产订å*/ ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId()); @@ -244,13 +248,14 @@ //妿æ¥åºæ°é>0,éè¦è¿å ¥æ¥åºçåºå if (ObjectUtils.isNotEmpty(dto.getScrapQty())) { if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) { stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId()); stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId()); } } return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean removeProductMain(Long id) { ProductionProductMain productionProductMain = productionProductMainMapper.selectById(id); //该æ¥å·¥å¯¹åºçå·¥èºè·¯çº¿è¯¦æ @@ -263,16 +268,35 @@ ); /*æ´æ°å·¥ååç产订å*/ ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId()); productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity())); productWorkOrder.setActualEndTime(null); productWorkOrderMapper.updateById(productWorkOrder); if (productWorkOrder != null && productionProductOutput != null) { BigDecimal outputQty = productionProductOutput.getQuantity() == null ? BigDecimal.ZERO : productionProductOutput.getQuantity(); 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)); productWorkOrder.setActualEndTime(null); productWorkOrderMapper.updateById(productWorkOrder); } else { throw new ServiceException("æä½å¤±è´¥ï¼å·¥åä¿¡æ¯æäº§åºè®°å½ä¸åå¨"); } //夿æ¯å¦æ¯æåä¸éå·¥åº List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId())); if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) { if (productProcessRouteItem.getDragSort() != null && productProcessRouteItems != null && productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) { ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId()); productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity())); productOrder.setEndTime(null); productOrderMapper.updateById(productOrder); if (productOrder != null) { BigDecimal orderCompleteQty = productOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productOrder.getCompleteQuantity(); BigDecimal outputQty = productionProductOutput.getQuantity() != null ? productionProductOutput.getQuantity() : BigDecimal.ZERO; productOrder.setCompleteQuantity(orderCompleteQty.subtract(outputQty)); productOrder.setEndTime(null); productOrderMapper.updateById(productOrder); } else { throw new ServiceException("å ³èçç产订åä¸åå¨"); } } //å é¤è´¨æ£ qualityInspectMapper.selectList( @@ -283,7 +307,9 @@ new LambdaQueryWrapper<QualityInspectParam>() .eq(QualityInspectParam::getInspectId, q.getId())); qualityInspectMapper.deleteById(q.getId()); stockUtils.deleteStockInRecord(q.getId(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()); }); // å é¤äº§åºè®°å½ productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>() .eq(ProductionProductOutput::getProductMainId, productionProductMain.getId())); @@ -291,11 +317,11 @@ productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>() .eq(ProductionProductInput::getProductMainId, productionProductMain.getId())); //å 餿¥åºçå ¥åºè®°å½ stockUtils.deleteStockInRecord(productionProductMain.getId(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode()); stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode()); //å é¤ä¸éè¦è´¨æ£çåæ ¼å ¥åº stockUtils.deleteStockInRecord(productionProductMain.getId(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode()); stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode()); //å é¤æå ¥å¯¹åºçåºåºè®°å½ stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode()); stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode()); // å é¤ä¸»è¡¨ productionProductMainMapper.deleteById(productionProductMain.getId()); return true; src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -2,21 +2,18 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; import com.ruoyi.procurementrecord.service.ProcurementRecordService; import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.quality.dto.QualityInspectDto; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectFile; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.pojo.QualityUnqualified; import com.ruoyi.quality.service.IQualityInspectFileService; import com.ruoyi.quality.service.IQualityInspectParamService; import com.ruoyi.quality.service.IQualityInspectService; import com.ruoyi.quality.service.IQualityUnqualifiedService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; @@ -74,7 +71,7 @@ .in(QualityInspectFile::getInspectId,ids)); //å é¤å ¥åºè®°å½ for (Integer id : ids) { stockUtils.deleteStockInRecord(Long.valueOf(id), StockQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()); stockUtils.deleteStockInRecord(Long.valueOf(id), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()); } //å 餿£éªå return AjaxResult.success(qualityInspectService.removeBatchByIds(ids)); src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -8,7 +8,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.HackLoopTableRenderPolicy; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.procurementrecord.service.ProcurementRecordService; @@ -93,7 +94,7 @@ qualityUnqualifiedMapper.insert(qualityUnqualified); } else { //åæ ¼ç´æ¥å ¥åº stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId()); stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId()); } qualityInspect.setInspectState(1);//å·²æäº¤ return qualityInspectMapper.updateById(qualityInspect); src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -7,8 +7,9 @@ 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.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.procurementrecord.utils.StockUtils; @@ -98,11 +99,7 @@ int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); queryWrapper.likeRight("work_order_no", datePrefix) .orderByDesc("work_order_no") .last("LIMIT 1"); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); @@ -130,11 +127,11 @@ break; case "æ¥åº": //è°ç¨ä¸åæ ¼åºåæ¥å£ å ¥ä¸åæ ¼åº stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId()); stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId()); break; case "è®©æ¥æ¾è¡": //è°ç¨æäº¤åæ ¼çæ¥å£ stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId()); stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId()); qualityInspect.setCheckResult("åæ ¼"); qualityInspectService.submit(qualityInspect); break; src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -1,29 +1,18 @@ package com.ruoyi.sales.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.math.LongMath; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; 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.procurementrecord.utils.StockUtils; import com.ruoyi.sales.mapper.ShipmentApprovalMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.ShipmentApproval; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.ISalesLedgerProductService; import com.ruoyi.sales.service.ShipmentApprovalService; import com.ruoyi.sales.service.ShippingInfoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -31,9 +20,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @RestController @@ -101,7 +87,7 @@ //åºåº stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId()); stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId()); } return AjaxResult.success(); src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -5,17 +5,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.framework.web.domain.R; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.production.dto.ProductStructureDto; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; import com.ruoyi.production.service.impl.SalesLedgerProductionAccountingServiceImpl; import com.ruoyi.production.service.impl.ProductOrderServiceImpl; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.quality.mapper.QualityInspectMapper; @@ -26,7 +24,6 @@ import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.ShippingInfo; @@ -94,7 +91,7 @@ @Autowired private StockInventoryMapper stockInventoryMapper; @Autowired private SalesLedgerProductionAccountingServiceImpl salesLedgerProductionAccountingServiceImpl; private ProductOrderServiceImpl productOrderServiceImpl; @Override public SalesLedgerProduct selectSalesLedgerProductById(Long id) { @@ -273,7 +270,8 @@ productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId()); productOrder.setProductModelId(salesLedgerProduct.getProductModelId()); productOrder.setSaleLedgerProductId(salesLedgerProduct.getId()); productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId())); String string = productOrderServiceImpl.generateNextOrderNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); productOrder.setNpsNo(string); productOrder.setQuantity(salesLedgerProduct.getQuantity());//éæ±æ°é productOrder.setCompleteQuantity(BigDecimal.ZERO);//宿æ°é productOrderMapper.insert(productOrder); @@ -304,13 +302,7 @@ int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); queryWrapper.likeRight("work_order_no", datePrefix) .orderByDesc("work_order_no") .last("LIMIT 1"); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); @@ -397,9 +389,9 @@ //å é¤åºåºè®°å½ for (Long productMainId : productMainIds) { //å é¤ç产åºåºè®°å½ stockUtils.deleteStockOutRecord(productMainId, StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode()); stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode()); //å 餿¥åºçå ¥åºè®°å½ stockUtils.deleteStockInRecord(productMainId, StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode()); stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode()); } qualityInspects.forEach(qualityInspect -> { //inspectState=1 å·²æäº¤ ä¸è½å é¤ src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -7,7 +7,7 @@ import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.sales.dto.ShippingInfoDto; @@ -66,7 +66,7 @@ //æ£ååºå if(!"å·²åè´§".equals(byId.getStatus())){ SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(byId.getSalesLedgerProductId()); stockUtils.substractStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId()); stockUtils.substractStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId()); } byId.setExpressNumber(req.getExpressNumber()); byId.setExpressCompany(req.getExpressCompany()); @@ -90,7 +90,7 @@ // æ£å·²åè´§åºå for (ShippingInfo shippingInfo : shippingInfos) { if("å·²åè´§".equals(shippingInfo.getStatus())) { stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode()); stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode()); } } // å é¤åè´§å®¡æ¹ src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
@@ -2,7 +2,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; @@ -46,7 +47,7 @@ @PostMapping("/addstockInventory") @ApiOperation("æ°å¢åºå") public R addstockInventory(@RequestBody StockInventoryDto stockInventoryDto) { stockInventoryDto.setRecordType(String.valueOf(StockQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode())); stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode())); stockInventoryDto.setRecordId(0L); return R.ok(stockInventoryService.addstockInventory(stockInventoryDto)); } @@ -55,7 +56,7 @@ @PostMapping("/subtractStockInventory") @ApiOperation("æ£ååºå") public R subtractStockInventory(@RequestBody StockInventoryDto stockInventoryDto) { stockInventoryDto.setRecordType(String.valueOf(StockQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_OUT.getCode())); stockInventoryDto.setRecordType(String.valueOf(StockOutQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_OUT.getCode())); stockInventoryDto.setRecordId(0L); return R.ok(stockInventoryService.subtractStockInventory(stockInventoryDto)); } src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
@@ -2,7 +2,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutUnQualifiedRecordTypeEnum; import com.ruoyi.framework.web.domain.R; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockUninventoryDto; @@ -37,7 +38,7 @@ @PostMapping("/addstockUninventory") @ApiOperation("æ°å¢åºå") public R addstockUninventory(@RequestBody StockUninventoryDto stockUninventoryDto) { stockUninventoryDto.setRecordType(String.valueOf(StockUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_IN.getCode())); stockUninventoryDto.setRecordType(String.valueOf(StockInUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_IN.getCode())); stockUninventoryDto.setRecordId(0L); return R.ok(stockUninventoryService.addStockUninventory(stockUninventoryDto)); } @@ -46,7 +47,7 @@ @PostMapping("/subtractstockUninventory") @ApiOperation("æ£ååºå") public R subtractstockUninventory(@RequestBody StockUninventoryDto stockUninventoryDto) { stockUninventoryDto.setRecordType(String.valueOf(StockUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode())); stockUninventoryDto.setRecordType(String.valueOf(StockOutUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode())); stockUninventoryDto.setRecordId(0L); return R.ok(stockUninventoryService.subtractStockUninventory(stockUninventoryDto)); } src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -4,8 +4,8 @@ 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.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.EnumUtil; import com.ruoyi.common.utils.OrderUtils; @@ -102,9 +102,9 @@ List<StockInRecordExportData> list = stockInRecordMapper.listStockInRecordExportData(stockInRecordDto); for (StockInRecordExportData stockInRecordExportData : list) { if (stockInRecordExportData.getType().equals("0")) { stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockOutQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); }else { stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockInUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); } } ExcelUtil<StockInRecordExportData> util = new ExcelUtil<>(StockInRecordExportData.class); src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -5,7 +5,8 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.web.domain.R; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; @@ -127,7 +128,7 @@ item.getSpecificationModel().equals(dto.getModel())) { StockInventoryDto stockInventoryDto = new StockInventoryDto(); stockInventoryDto.setRecordId(0L); stockInventoryDto.setRecordType(StockQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode()); stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode()); stockInventoryDto.setQualitity(dto.getQualitity()); stockInventoryDto.setRemark(dto.getRemark()); stockInventoryDto.setWarnNum(dto.getWarnNum()); src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -4,8 +4,8 @@ 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.enums.StockQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.EnumUtil; import com.ruoyi.common.utils.OrderUtils; @@ -105,9 +105,9 @@ List<StockOutRecordExportData> list = stockOutRecordMapper.listStockOutRecordExportData(stockOutRecordDto); for (StockOutRecordExportData stockInRecordExportData : list) { if (stockInRecordExportData.getType().equals("0")) { stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockOutQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); }else { stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockInUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); } } ExcelUtil<StockOutRecordExportData> util = new ExcelUtil<>(StockOutRecordExportData.class); src/main/resources/application-zxsq.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,245 @@ # 项ç®ç¸å ³é ç½® ruoyi: # åç§° name: RuoYi # çæ¬ version: 3.8.9 # çæå¹´ä»½ copyrightYear: 2025 # æä»¶è·¯å¾ 示ä¾ï¼ Windowsé ç½®D:/ruoyi/uploadPathï¼Linuxé ç½® /home/ruoyi/uploadPathï¼ profile: /javaWork/product-inventory-management/file # è·åipå°åå¼å ³ addressEnabled: false # éªè¯ç ç±»å math æ°åè®¡ç® char å符éªè¯ captchaType: math # åå审æ¹ç¼å·åç¼(é ç½®æä»¶åç¼å½å) approvalNumberPrefix: NEW # å¼åç¯å¢é ç½® server: # æå¡å¨çHTTP端å£ï¼é»è®¤ä¸º8080 port: 9005 servlet: # åºç¨ç访é®è·¯å¾ context-path: / tomcat: # tomcatçURIç¼ç uri-encoding: UTF-8 # è¿æ¥æ°æ»¡åçæéæ°ï¼é»è®¤ä¸º100 accept-count: 1000 threads: # tomcatæå¤§çº¿ç¨æ°ï¼é»è®¤ä¸º200 max: 800 # Tomcatå¯å¨åå§åççº¿ç¨æ°ï¼é»è®¤å¼10 min-spare: 100 # æ¥å¿é ç½® logging: level: com.ruoyi: warn org.springframework: warn minio: endpoint: http://114.132.189.42/ port: 7019 secure: false accessKey: admin secretKey: 12345678 preview-expiry: 24 # é¢è§å°åé»è®¤24å°æ¶ default-bucket: jxc # ç¨æ·é ç½® user: password: # å¯ç æå¤§éè¯¯æ¬¡æ° maxRetryCount: 5 # å¯ç é宿¶é´ï¼é»è®¤10åéï¼ lockTime: 10 # Springé ç½® spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: # ä¸»åºæ°æ®æº master: url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-zxsq?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: xd@123456.. # ä»åºæ°æ®æº slave: # 仿°æ®æºå¼å ³/é»è®¤å ³é enabled: false url: username: password: # åå§è¿æ¥æ° initialSize: 5 # æå°è¿æ¥æ± æ°é minIdle: 10 # æå¤§è¿æ¥æ± æ°é maxActive: 20 # é ç½®è·åè¿æ¥çå¾ è¶ æ¶çæ¶é´ maxWait: 60000 # é ç½®è¿æ¥è¶ æ¶æ¶é´ connectTimeout: 30000 # é ç½®ç½ç»è¶ æ¶æ¶é´ socketTimeout: 60000 # é ç½®é´éå¤ä¹ æè¿è¡ä¸æ¬¡æ£æµï¼æ£æµéè¦å ³éç空é²è¿æ¥ï¼å使¯æ¯«ç§ timeBetweenEvictionRunsMillis: 60000 # é ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿å°çåçæ¶é´ï¼å使¯æ¯«ç§ minEvictableIdleTimeMillis: 300000 # é ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿大çåçæ¶é´ï¼å使¯æ¯«ç§ maxEvictableIdleTimeMillis: 900000 # é ç½®æ£æµè¿æ¥æ¯å¦ææ validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false webStatFilter: enabled: true statViewServlet: enabled: true # 设置ç½ååï¼ä¸å¡«åå 许ææè®¿é® allow: url-pattern: /druid/* # æ§å¶å°ç®¡çç¨æ·ååå¯ç login-username: ruoyi login-password: 123456 filter: stat: enabled: true # æ ¢SQLè®°å½ log-slow-sql: true slow-sql-millis: 1000 merge-sql: true wall: config: multi-statement-allow: true # èµæºä¿¡æ¯ messages: # å½é åèµæºæä»¶è·¯å¾ basename: i18n/messages # æä»¶ä¸ä¼ servlet: multipart: # å个æä»¶å¤§å° max-file-size: 1GB # 设置æ»ä¸ä¼ çæä»¶å¤§å° max-request-size: 2GB # æå¡æ¨¡å devtools: restart: # çé¨ç½²å¼å ³ enabled: false # redis é ç½® redis: # å°å # host: 127.0.0.1 host: 172.17.0.1 # 端å£ï¼é»è®¤ä¸º6379 port: 6379 # æ°æ®åºç´¢å¼ database: 1 # å¯ç # password: root2022! password: # è¿æ¥è¶ æ¶æ¶é´ timeout: 10s lettuce: pool: # è¿æ¥æ± ä¸çæå°ç©ºé²è¿æ¥ min-idle: 0 # è¿æ¥æ± ä¸çæå¤§ç©ºé²è¿æ¥ max-idle: 8 # è¿æ¥æ± çæå¤§æ°æ®åºè¿æ¥æ° max-active: 8 # #è¿æ¥æ± æå¤§é»å¡çå¾ æ¶é´ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼ max-wait: -1ms # Quartz宿¶ä»»å¡é ç½®ï¼æ°å¢é¨åï¼ quartz: job-store-type: jdbc # ä½¿ç¨æ°æ®åºåå¨ jdbc: initialize-schema: never # 馿¬¡è¿è¡æ¶èªå¨åå»ºè¡¨ç»æï¼æååæ¹ä¸ºnever schema: classpath:org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql # MySQLè¡¨ç»æèæ¬ properties: org: quartz: scheduler: instanceName: RuoYiScheduler instanceId: AUTO jobStore: class: org.quartz.impl.jdbcjobstore.JobStoreTX driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate # MySQLéé tablePrefix: qrtz_ # 表ååç¼ï¼ä¸èæ¬ä¸è´ isClustered: false # åèç¹æ¨¡å¼ï¼éç¾¤éæ¹ä¸ºtrueï¼ clusterCheckinInterval: 10000 txIsolationLevelSerializable: true threadPool: class: org.quartz.simpl.SimpleThreadPool threadCount: 10 # çº¿ç¨æ± å¤§å° threadPriority: 5 makeThreadsDaemons: true updateCheck: false # å ³éçæ¬æ£æ¥ # tokené ç½® token: # 令çèªå®ä¹æ è¯ header: Authorization # 令çå¯é¥ secret: abcdefghijklmnopqrstuvwxyz # ä»¤çæææï¼é»è®¤30åéï¼ expireTime: 450 # MyBatis Plusé ç½® mybatis-plus: # æç´¢æå®å å«å æ ¹æ®èªå·±çé¡¹ç®æ¥ typeAliasesPackage: com.ruoyi.**.pojo # é ç½®mapperçæ«æï¼æ¾å°ææçmapper.xmlæ å°æä»¶ mapperLocations: classpath*:mapper/**/*Mapper.xml # å è½½å ¨å±çé ç½®æä»¶ configLocation: classpath:mybatis/mybatis-config.xml global-config: enable-sql-runner: true db-config: id-type: auto # PageHelperå页æä»¶ pagehelper: helperDialect: mysql supportMethodsArguments: true params: count=countSql # Swaggeré ç½® swagger: # æ¯å¦å¼å¯swagger enabled: true # 请æ±åç¼ pathMapping: /dev-api # 鲿¢XSSæ»å» xss: # è¿æ»¤å¼å ³ enabled: true # æé¤é¾æ¥ï¼å¤ä¸ªç¨éå·åéï¼ excludes: /system/notice # å¹é 龿¥ urlPatterns: /system/*,/monitor/*,/tool/* # 代ç çæ gen: # ä½è author: ruoyi # é»è®¤çæå è·¯å¾ system éæ¹æèªå·±ç模ååç§° å¦ system monitor tool packageName: com.ruoyi.project.system # èªå¨å»é¤è¡¨åç¼ï¼é»è®¤æ¯true autoRemovePre: false # 表åç¼ï¼çæç±»åä¸ä¼å å«è¡¨åç¼ï¼å¤ä¸ªç¨éå·åéï¼ tablePrefix: sys_ # æ¯å¦å è®¸çææä»¶è¦çå°æ¬å°ï¼èªå®ä¹è·¯å¾ï¼ï¼é»è®¤ä¸å 许 allowOverwrite: false file: temp-dir: /javaWork/product-inventory-management/file/temp/uploads upload-dir: /javaWork/product-inventory-management/file/prod/uploads src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -17,8 +17,9 @@ select po.*, sl.sales_contract_no, sl.customer_name, slp.product_category, slp.specification_model, p.product_name as product_category, pm.model as specification_model, pm.unit, ppr.process_route_code, pb.bom_no, ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus, @@ -38,6 +39,8 @@ FROM shipping_info GROUP BY sales_ledger_id ) shipping_status_counts ON sl.id = shipping_status_counts.sales_ledger_id left join product_model pm on po.product_model_id = pm.id left join product p on pm.product_id = p.id left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id left join product_process_route ppr on po.id = ppr.product_order_id left join product_bom pb on pb.id = ppr.bom_id src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -87,4 +87,12 @@ actual_start_time >= #{startDate} AND actual_start_time <= #{endDate} </select> <select id="selectMax" resultType="com.ruoyi.production.pojo.ProductWorkOrder"> SELECT SUBSTRING(work_order_no, 3) as work_order_no FROM product_work_order WHERE SUBSTRING(work_order_no, 3) like concat(#{datePrefix},'%') order by work_order_no desc limit 1 ; </select> </mapper>