src/main/java/org/jeecg/modules/mes/controller/MesMaterialConsumptionDetailController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/org/jeecg/modules/mes/entity/MesMaterialConsumptionDetail.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/org/jeecg/modules/mes/mapper/MesMaterialConsumptionDetailMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialConsumptionDetailMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/org/jeecg/modules/mes/service/IMesMaterialConsumptionDetailService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialConsumptionDetailServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/org/jeecg/modules/mes/controller/MesMaterialConsumptionDetailController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,177 @@ package org.jeecg.modules.mes.controller; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.mes.entity.MesMaterialConsumptionDetail; import org.jeecg.modules.mes.service.IMesMaterialConsumptionDetailService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: ç©ææ¶èæç» * @Author: jeecg-boot * @Date: 2025-09-08 * @Version: V1.0 */ @Api(tags="ç©ææ¶èæç»") @RestController @RequestMapping("/mes/mesMaterialConsumptionDetail") @Slf4j public class MesMaterialConsumptionDetailController extends JeecgController<MesMaterialConsumptionDetail, IMesMaterialConsumptionDetailService> { @Autowired private IMesMaterialConsumptionDetailService mesMaterialConsumptionDetailService; /** * å页å表æ¥è¯¢ * * @param mesMaterialConsumptionDetail * @param pageNo * @param pageSize * @param req * @return */ //@AutoLog(value = "ç©ææ¶èæç»-å页å表æ¥è¯¢") @ApiOperation(value="ç©ææ¶èæç»-å页å表æ¥è¯¢", notes="ç©ææ¶èæç»-å页å表æ¥è¯¢") @GetMapping(value = "/list") public Result<IPage<MesMaterialConsumptionDetail>> queryPageList(MesMaterialConsumptionDetail mesMaterialConsumptionDetail, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { QueryWrapper<MesMaterialConsumptionDetail> queryWrapper = QueryGenerator.initQueryWrapper(mesMaterialConsumptionDetail, req.getParameterMap()); Page<MesMaterialConsumptionDetail> page = new Page<MesMaterialConsumptionDetail>(pageNo, pageSize); IPage<MesMaterialConsumptionDetail> pageList = mesMaterialConsumptionDetailService.page(page, queryWrapper); return Result.OK(pageList); } /** * æ·»å * * @param mesMaterialConsumptionDetail * @return */ @AutoLog(value = "ç©ææ¶èæç»-æ·»å ") @ApiOperation(value="ç©ææ¶èæç»-æ·»å ", notes="ç©ææ¶èæç»-æ·»å ") //@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:add") @PostMapping(value = "/add") public Result<String> add(@RequestBody MesMaterialConsumptionDetail mesMaterialConsumptionDetail) { mesMaterialConsumptionDetailService.save(mesMaterialConsumptionDetail); return Result.OK("æ·»å æåï¼"); } /** * ç¼è¾ * * @param mesMaterialConsumptionDetail * @return */ @AutoLog(value = "ç©ææ¶èæç»-ç¼è¾") @ApiOperation(value="ç©ææ¶èæç»-ç¼è¾", notes="ç©ææ¶èæç»-ç¼è¾") //@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) public Result<String> edit(@RequestBody MesMaterialConsumptionDetail mesMaterialConsumptionDetail) { mesMaterialConsumptionDetailService.updateById(mesMaterialConsumptionDetail); return Result.OK("ç¼è¾æå!"); } /** * éè¿idå é¤ * * @param id * @return */ @AutoLog(value = "ç©ææ¶èæç»-éè¿idå é¤") @ApiOperation(value="ç©ææ¶èæç»-éè¿idå é¤", notes="ç©ææ¶èæç»-éè¿idå é¤") //@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name="id",required=true) String id) { mesMaterialConsumptionDetailService.removeById(id); return Result.OK("å 餿å!"); } /** * æ¹éå é¤ * * @param ids * @return */ @AutoLog(value = "ç©ææ¶èæç»-æ¹éå é¤") @ApiOperation(value="ç©ææ¶èæç»-æ¹éå é¤", notes="ç©ææ¶èæç»-æ¹éå é¤") //@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:deleteBatch") @DeleteMapping(value = "/deleteBatch") public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.mesMaterialConsumptionDetailService.removeByIds(Arrays.asList(ids.split(","))); return Result.OK("æ¹éå 餿å!"); } /** * éè¿idæ¥è¯¢ * * @param id * @return */ //@AutoLog(value = "ç©ææ¶èæç»-éè¿idæ¥è¯¢") @ApiOperation(value="ç©ææ¶èæç»-éè¿idæ¥è¯¢", notes="ç©ææ¶èæç»-éè¿idæ¥è¯¢") @GetMapping(value = "/queryById") public Result<MesMaterialConsumptionDetail> queryById(@RequestParam(name="id",required=true) String id) { MesMaterialConsumptionDetail mesMaterialConsumptionDetail = mesMaterialConsumptionDetailService.getById(id); if(mesMaterialConsumptionDetail==null) { return Result.error("æªæ¾å°å¯¹åºæ°æ®"); } return Result.OK(mesMaterialConsumptionDetail); } /** * 导åºexcel * * @param request * @param mesMaterialConsumptionDetail */ //@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:exportXls") @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, MesMaterialConsumptionDetail mesMaterialConsumptionDetail) { return super.exportXls(request, mesMaterialConsumptionDetail, MesMaterialConsumptionDetail.class, "ç©ææ¶èæç»"); } /** * éè¿excelå¯¼å ¥æ°æ® * * @param request * @param response * @return */ //@RequiresPermissions("mes_material_consumption_detail:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, MesMaterialConsumptionDetail.class); } } src/main/java/org/jeecg/modules/mes/entity/MesMaterialConsumptionDetail.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,74 @@ package org.jeecg.modules.mes.entity; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.Date; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableLogic; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecg.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * @Description: ç©ææ¶èæç» * @Author: jeecg-boot * @Date: 2025-09-08 * @Version: V1.0 */ @Data @TableName("mes_material_consumption_detail") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) @ApiModel(value="mes_material_consumption_detail对象", description="ç©ææ¶èæç»") public class MesMaterialConsumptionDetail implements Serializable { private static final long serialVersionUID = 1L; /**主é®*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主é®") private String id; /**å建人*/ @ApiModelProperty(value = "å建人") private String createBy; /**å建æ¶é´*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "å建æ¶é´") private Date createTime; /**订åID;åæåæ¥å·¥ï¼æ éç»å®å°ç产订å*/ @Excel(name = "订åID;åæåæ¥å·¥ï¼æ éç»å®å°ç产订å", width = 15) @ApiModelProperty(value = "订åID;åæåæ¥å·¥ï¼æ éç»å®å°ç产订å") @Dict(dictTable = "mes_production_order", dicCode = "id", dicText = "order_code") private String orderId; /**å·¥åID*/ @Excel(name = "å·¥åID", width = 15) @ApiModelProperty(value = "å·¥åID") @Dict(dictTable = "mes_production_work_order", dicCode = "id", dicText = "work_order_code") private String workOrderId; /**产线ID*/ @Excel(name = "产线ID", width = 15) @ApiModelProperty(value = "产线ID") @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name") private String factoryId; /**æ¥å·¥ID*/ @Excel(name = "æ¥å·¥ID", width = 15) @ApiModelProperty(value = "æ¥å·¥ID") private String reportingId; /**䏿ID*/ @Excel(name = "䏿ID", width = 15) @ApiModelProperty(value = "䏿ID") private String loadingId; /**æ¶èæ°é*/ @Excel(name = "æ¶èæ°é", width = 15) @ApiModelProperty(value = "æ¶èæ°é") private BigDecimal quantity; } src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java
@@ -54,23 +54,14 @@ @ApiModelProperty(value = "å 餿 è®°") @TableLogic private Integer delFlag; /**å·¥åID*/ @Excel(name = "å·¥åID", width = 15) @Dict(dictTable = "mes_production_work_order", dicCode = "id", dicText = "work_order_code") @ApiModelProperty(value = "å·¥åID") private String workOrderId; /**设å¤ID*/ @Excel(name = "设å¤ID", width = 15) @ApiModelProperty(value = "设å¤ID") private String equipmentId; /**å·¥åºç¼ç */ @Excel(name = "å·¥åºç¼ç ", width = 15) @ApiModelProperty(value = "å·¥åºç¼ç ") private String processCode; /**å·¥åºåç§°*/ @Excel(name = "å·¥åºåç§°", width = 15) @ApiModelProperty(value = "å·¥åºåç§°") private String processName; /**产线ID*/ @Excel(name = "产线ID", width = 15) @ApiModelProperty(value = "产线ID") private String factoryId; /**åºåå°ID*/ @Excel(name = "åºåå°ID", width = 15) @ApiModelProperty(value = "åºåå°ID") private String warehouseId; /**ç©æç¼ç */ @Excel(name = "ç©æç¼ç ", width = 15) @ApiModelProperty(value = "ç©æç¼ç ") @@ -83,6 +74,10 @@ @Excel(name = "æ¹æ¬¡å·", width = 15) @ApiModelProperty(value = "æ¹æ¬¡å·") private String batchNumber; /**é¢ç尺寸*/ @Excel(name = "é¢ç尺寸", width = 15) @ApiModelProperty(value = "é¢ç尺寸") private String steelBallSize; /**æ°é*/ @Excel(name = "æ°é", width = 15) @ApiModelProperty(value = "æ°é") src/main/java/org/jeecg/modules/mes/mapper/MesMaterialConsumptionDetailMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package org.jeecg.modules.mes.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mes.entity.MesMaterialConsumptionDetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: ç©ææ¶èæç» * @Author: jeecg-boot * @Date: 2025-09-08 * @Version: V1.0 */ public interface MesMaterialConsumptionDetailMapper extends BaseMapper<MesMaterialConsumptionDetail> { } src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialConsumptionDetailMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.mes.mapper.MesMaterialConsumptionDetailMapper"> </mapper> src/main/java/org/jeecg/modules/mes/service/IMesMaterialConsumptionDetailService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package org.jeecg.modules.mes.service; import org.jeecg.modules.mes.entity.MesMaterialConsumptionDetail; import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: ç©ææ¶èæç» * @Author: jeecg-boot * @Date: 2025-09-08 * @Version: V1.0 */ public interface IMesMaterialConsumptionDetailService extends IService<MesMaterialConsumptionDetail> { } src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialConsumptionDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package org.jeecg.modules.mes.service.impl; import org.jeecg.modules.mes.entity.MesMaterialConsumptionDetail; import org.jeecg.modules.mes.mapper.MesMaterialConsumptionDetailMapper; import org.jeecg.modules.mes.service.IMesMaterialConsumptionDetailService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: ç©ææ¶èæç» * @Author: jeecg-boot * @Date: 2025-09-08 * @Version: V1.0 */ @Service public class MesMaterialConsumptionDetailServiceImpl extends ServiceImpl<MesMaterialConsumptionDetailMapper, MesMaterialConsumptionDetail> implements IMesMaterialConsumptionDetailService { } src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java
@@ -18,17 +18,12 @@ import org.jeecg.modules.lsw.entity.LswMaterial; import org.jeecg.modules.lsw.entity.LswMaterialInbound; import org.jeecg.modules.lsw.enums.MaterialCategoryEnum; import org.jeecg.modules.lsw.enums.MaterialInboundCategory; import org.jeecg.modules.lsw.service.ILswMaterialInboundService; import org.jeecg.modules.lsw.service.ILswMaterialService; import org.jeecg.modules.mes.entity.MesMaterialLoading; import org.jeecg.modules.mes.entity.MesProductionOrder; import org.jeecg.modules.mes.entity.MesProductionWorkOrder; import org.jeecg.modules.mes.entity.MesWorkReporting; import org.jeecg.modules.mes.entity.*; import org.jeecg.modules.mes.mapper.MesWorkReportingMapper; import org.jeecg.modules.mes.service.IMesMaterialLoadingService; import org.jeecg.modules.mes.service.IMesProductionOrderService; import org.jeecg.modules.mes.service.IMesProductionWorkOrderService; import org.jeecg.modules.mes.service.IMesWorkReportingService; import org.jeecg.modules.mes.service.*; import org.jeecg.modules.mes.utils.CommonUtils; import org.jeecg.modules.pms.entity.PmsMaterialProcess; import org.jeecg.modules.pms.service.IPmsMaterialProcessService; @@ -97,6 +92,8 @@ private IInspectionPlanService inspectionPlanService; @Autowired private IInspectionPlanItemService inspectionPlanItemService; @Autowired private IMesMaterialConsumptionDetailService mesMaterialConsumptionDetailService; @Override public List<MesWorkReporting> queryWorkReportingByWorkOrderId(String workOrderId) { @@ -151,12 +148,13 @@ String date = today.format(DateTimeFormatter.ofPattern("yyMMdd")); Factory factory = factoryService.getById(mesWorkReporting.getFactoryId()); workOrder.setFactoryCode(factory.getFactoryCode()); List<MesMaterialConsumptionDetail> consumptionDetailList = CollectionUtil.newArrayList(); switch (materialCategory) { case FINISHED_PRODUCT: //æåæ¥å·¥ productReport(mesWorkReporting, workOrder, lineSideWarehouse); consumptionDetailList = productReport(mesWorkReporting, workOrder, lineSideWarehouse); //çææ£éªå·¥å generateInspectionOrder(mesWorkReporting, workOrder); //generateInspectionOrder(mesWorkReporting, workOrder); //æ¼æ¥æåæ¥å·¥æå· String palletNumber4 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber4"); String finishedPalletNumber = material.getMaterialNumber() + date + palletNumber4; @@ -165,7 +163,7 @@ case INNER_FLANGE: case OUTER_FLANGE: //åæå(å æ³å °ã夿³å °)æ¥å·¥ productReport(mesWorkReporting, workOrder, lineSideWarehouse); consumptionDetailList = productReport(mesWorkReporting, workOrder, lineSideWarehouse); //æ¼æ¥åæåæ¥å·¥æå· Shift shift = shiftService.getById(workOrder.getShiftId()); String palletNumber6 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber6"); @@ -175,6 +173,9 @@ } //æ°å¢æ¥å·¥è®°å½ save(mesWorkReporting); consumptionDetailList.forEach(i -> i.setReportingId(mesWorkReporting.getId())); //ä¿åç©ææ¶èæç» mesMaterialConsumptionDetailService.saveBatch(consumptionDetailList); //æ´æ°æäº§å·¥å MesProductionWorkOrder productionWorkUpdateOrder = new MesProductionWorkOrder() .setId(workOrder.getId()) @@ -186,7 +187,7 @@ } //åæå(å æ³å °ã夿³å °)ãæåæ¥å·¥ private void productReport(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder, LineSideWarehouse lineSideWarehouse) { private List<MesMaterialConsumptionDetail> productReport(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder, LineSideWarehouse lineSideWarehouse) { //1ãå ¥åº åæå/æå å°å¯¹åºçº¿è¾¹åº LswMaterialInbound materialInbound = new LswMaterialInbound() .setFactoryId(workOrder.getFactoryId()) @@ -194,21 +195,26 @@ .setMaterialNumber(workOrder.getMaterialNumber()) .setMaterialName(workOrder.getMaterialName()) .setBatchNumber(mesWorkReporting.getBatchNumber()) .setQuantity(mesWorkReporting.getQuantity()); lswMaterialInboundService.save(materialInbound); //2ãæ£åä½¿ç¨æ¯å¯åºåï¼æ´æ°ä¸æè®°å½ï¼æåæåç©æåºåï¼å æ³å °ã夿³å °ãå°å åãé ä»¶çï¼ï¼æç § æäº§å·¥åidãç©æç¼ç æ¥è¯¢ä¸æè®°å½ï¼æç §æ¶é´ä»æ©å°ææåºï¼ä¼å æ£åæ©çä¸æè®°å½ï¼å è¿å åºï¼ .setQuantity(mesWorkReporting.getQuantity()) .setInboundCategory(MaterialInboundCategory.PRODUCTION_INBOUND.name())//ç产ä¸çº¿ .setOriginalCode(lineSideWarehouse.getWarehouseCode()) .setOriginalName(lineSideWarehouse.getWarehouseName()); lswMaterialInboundService.inboundMaterial(materialInbound); //2ãæ£åä½¿ç¨æ¯å¯åºåï¼æ´æ°ä¸æè®°å½ï¼æåæåç©æåºåï¼å æ³å °ã夿³å °ãå°å åãé ä»¶çï¼ï¼æç § 产线idãåºåå°idãç©æç¼ç æ¥è¯¢ä¸æè®°å½ï¼æç §æ¶é´ä»æ©å°ææåºï¼ä¼å æ£åæ©çä¸æè®°å½ï¼å è¿å åºï¼ //å æ¥è¯¢ç©æ BOM Map<String, ProcessBillMaterialsDetailVo> processBillMaterialsDetailMap = pmsProcessBillMaterialsService .queryMaterialsDetailByOrderIdAndMaterialNumber(mesWorkReporting.getOrderId(), workOrder.getMaterialNumber()).stream() .collect(Collectors.toMap(ProcessBillMaterialsDetailVo::getMaterialNumber, v1 -> v1, (v1, v2) -> v1)); //æ¥è¯¢ä¸æè®°å½ Map<String, List<MesMaterialLoading>> materialLoadingRecordMap = mesMaterialLoadingService.list(new LambdaQueryWrapper<MesMaterialLoading>() .eq(MesMaterialLoading::getWorkOrderId, workOrder.getId()) .eq(MesMaterialLoading::getFactoryId, workOrder.getFactoryId()) .eq(MesMaterialLoading::getWarehouseId, lineSideWarehouse.getId()) .in(MesMaterialLoading::getMaterialNumber, processBillMaterialsDetailMap.keySet()) .gt(MesMaterialLoading::getRemainingQuantity, BigDecimal.ZERO)).stream() .sorted(Comparator.comparing(MesMaterialLoading::getCreateTime)) .collect(Collectors.groupingBy(MesMaterialLoading::getMaterialNumber)); List<MesMaterialLoading> materialLoadingRecordUpdateList = CollectionUtil.newArrayList(); List<MesMaterialConsumptionDetail> consumptionDetailAddList = CollectionUtil.newArrayList(); for (String materialNumber : processBillMaterialsDetailMap.keySet()) { List<MesMaterialLoading> materialLoadingRecordList = materialLoadingRecordMap.get(materialNumber); if (materialLoadingRecordList.isEmpty()) { @@ -217,8 +223,26 @@ //计ç®ç©ææ£åæ°é ProcessBillMaterialsDetailVo processBillMaterialsDetailVo = processBillMaterialsDetailMap.get(materialNumber); BigDecimal quantity = processBillMaterialsDetailVo.getPerQuantity().multiply(mesWorkReporting.getQuantity()); List<MesMaterialLoading> updateList = deductQuantity(materialLoadingRecordList, quantity); materialLoadingRecordUpdateList.addAll(updateList); //æ£å䏿æ°éå¹¶è®°å½ç©ææ¶èæç» for (MesMaterialLoading mesMaterialLoading : materialLoadingRecordList) { //è®°å½ç©ææ¶èæç» MesMaterialConsumptionDetail materialConsumptionDetail = new MesMaterialConsumptionDetail() .setOrderId(mesWorkReporting.getOrderId()) .setWorkOrderId(workOrder.getId()) .setFactoryId(workOrder.getFactoryId()) .setLoadingId(mesMaterialLoading.getId()); if (mesMaterialLoading.getRemainingQuantity().compareTo(quantity) >= 0) { mesMaterialLoading.setRemainingQuantity(mesMaterialLoading.getRemainingQuantity().subtract(quantity)); materialConsumptionDetail.setQuantity(quantity); break; } else { quantity = quantity.subtract(mesMaterialLoading.getRemainingQuantity()); materialConsumptionDetail.setQuantity(mesMaterialLoading.getRemainingQuantity()); mesMaterialLoading.setRemainingQuantity(BigDecimal.ZERO); } consumptionDetailAddList.add(materialConsumptionDetail); } materialLoadingRecordUpdateList.addAll(materialLoadingRecordList); } //æ´æ°ä¸æè®°å½ mesMaterialLoadingService.updateBatchById(materialLoadingRecordUpdateList); @@ -258,6 +282,7 @@ log.error("SAPå·¥åºæ¥å·¥å¼å¸¸ï¼", e); } } return consumptionDetailAddList; } //æ ¹æ®æ£éªæ¹æ¡çææ£éªå·¥å @@ -281,16 +306,4 @@ //todo æ£éªå·¥åç®åè¿æ²¡æçæä»£ç ï¼æ²¡æåè½ } private List<MesMaterialLoading> deductQuantity(List<MesMaterialLoading> materialLoadingRecordList, BigDecimal quantity) { for (MesMaterialLoading mesMaterialLoading : materialLoadingRecordList) { if (mesMaterialLoading.getRemainingQuantity().compareTo(quantity) >= 0) { mesMaterialLoading.setRemainingQuantity(mesMaterialLoading.getRemainingQuantity().subtract(quantity)); break; } else { quantity = quantity.subtract(mesMaterialLoading.getRemainingQuantity()); mesMaterialLoading.setRemainingQuantity(BigDecimal.ZERO); } } return materialLoadingRecordList; } }