From d44c9ab933cfca67d4c550e499228f90432cbb3a Mon Sep 17 00:00:00 2001 From: zhanghl <253316343@qq.com> Date: 星期四, 15 五月 2025 11:03:11 +0800 Subject: [PATCH] 钣金工单计划:优化子件工单的读取方式 先存储内存,再从内存扣减,最后一起保存 --- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java | 67 +++++++++++++++++++++++++-------- 1 files changed, 51 insertions(+), 16 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java index f4f90aa..15d21c4 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlatePlanServiceImpl.java @@ -1,30 +1,34 @@ package com.aps.core.service.impl; -import java.util.List; -import java.util.Optional; - +import cn.hutool.core.util.IdUtil; +import com.aps.common.core.utils.DateUtils; import com.aps.common.core.utils.uuid.IdUtils; import com.aps.common.security.utils.DictUtils; +import com.aps.core.domain.ApsPlatePlan; import com.aps.core.domain.ApsPlatePlanTemp; import com.aps.core.mapper.ApsPartPlanTempMapper; +import com.aps.core.mapper.ApsPlatePlanMapper; import com.aps.core.mapper.ApsPlatePlanTempMapper; +import com.aps.core.service.IApsPlatePlanService; import com.aps.system.api.domain.SysDictData; import org.apache.logging.log4j.util.Strings; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.aps.core.mapper.ApsPlatePlanMapper; -import com.aps.core.domain.ApsPlatePlan; -import com.aps.core.service.IApsPlatePlanService; + +import java.math.BigDecimal; +import java.util.Hashtable; +import java.util.List; +import java.util.Optional; /** * 閽i噾璁″垝绠$悊Service涓氬姟灞傚鐞� - * + * * @author ruoyi * @date 2025-04-08 */ @Service -public class ApsPlatePlanServiceImpl implements IApsPlatePlanService +public class ApsPlatePlanServiceImpl implements IApsPlatePlanService { @Autowired private ApsPlatePlanMapper apsPlatePlanMapper; @@ -36,7 +40,7 @@ /** * 鏌ヨ閽i噾璁″垝绠$悊 - * + * * @param id 閽i噾璁″垝绠$悊涓婚敭 * @return 閽i噾璁″垝绠$悊 */ @@ -48,7 +52,7 @@ /** * 鏌ヨ閽i噾璁″垝绠$悊鍒楄〃 - * + * * @param apsPlatePlan 閽i噾璁″垝绠$悊 * @return 閽i噾璁″垝绠$悊 */ @@ -60,20 +64,21 @@ /** * 鏂板閽i噾璁″垝绠$悊 - * + * * @param apsPlatePlan 閽i噾璁″垝绠$悊 * @return 缁撴灉 */ @Override public int insertApsPlatePlan(ApsPlatePlan apsPlatePlan) { - apsPlatePlan.setId(IdUtils.fastUUID()); + apsPlatePlan.setId(IdUtil.getSnowflakeNextId()); + apsPlatePlan.setCreateTime(DateUtils.getNowDate()); return apsPlatePlanMapper.insertApsPlatePlan(apsPlatePlan); } /** * 淇敼閽i噾璁″垝绠$悊 - * + * * @param apsPlatePlan 閽i噾璁″垝绠$悊 * @return 缁撴灉 */ @@ -85,7 +90,7 @@ /** * 鎵归噺鍒犻櫎閽i噾璁″垝绠$悊 - * + * * @param ids 闇�瑕佸垹闄ょ殑閽i噾璁″垝绠$悊涓婚敭 * @return 缁撴灉 */ @@ -97,7 +102,7 @@ /** * 鍒犻櫎閽i噾璁″垝绠$悊淇℃伅 - * + * * @param id 閽i噾璁″垝绠$悊涓婚敭 * @return 缁撴灉 */ @@ -109,6 +114,8 @@ @Override public int confirmPlan(ApsPlatePlanTemp tempPlan) { + //鍏堝垹闄ゆ墍鏈� + apsPlatePlanMapper.removeAllPlatePlans(); //鏌ヨ涓存椂琛ㄦ暟鎹� List<ApsPlatePlanTemp> apsPartPlanTemps=apsPlatePlanTempMapper.selectApsPlatePlanTempList(tempPlan); int count=0; @@ -118,7 +125,8 @@ ids[i]=apsPartPlanTemps.get(i).getId(); ApsPlatePlan platePlan=new ApsPlatePlan(); BeanUtils.copyProperties(apsPartPlanTemps.get(i), platePlan); - platePlan.setId(IdUtils.fastUUID()); + platePlan.setId(IdUtil.getSnowflakeNextId()); + platePlan.setCreateTime(DateUtils.getNowDate()); //鎻掑叆姝e紡琛紝骞惰褰� apsPlatePlanMapper.insertApsPlatePlan(platePlan); count++; @@ -176,4 +184,31 @@ return Strings.EMPTY; } } + + /** + * 閽i噾鍐椾綑宸ュ崟鎶ヨ〃 + * @param apsPlatePlan + * @return + */ + @Override + public List<ApsPlatePlan> selectPlateRedundantOrderList(ApsPlatePlan apsPlatePlan) { + return apsPlatePlanMapper.selectPlateRedundantOrderList(apsPlatePlan); + } + + @Override + public ApsPlatePlan selectUnMatchPlateSubPlan(String plant, String itemNumber, Hashtable<String, List<ApsPlatePlan>> subPlans) { + if(subPlans.containsKey(itemNumber)) { + List<ApsPlatePlan> subPlanList = subPlans.get(itemNumber); + Optional<ApsPlatePlan> firstPlant = subPlanList.stream().filter(x -> x.getUnmatchedQuantity().compareTo(BigDecimal.ZERO) > 0).findFirst(); + return firstPlant.orElse(null); + }else { + List<ApsPlatePlan> plans = apsPlatePlanMapper.selectUnMatchPlateSubPlanList(plant, itemNumber); + if (!plans.isEmpty()) { + subPlans.put(itemNumber, plans); + return selectUnMatchPlateSubPlan(plant, itemNumber, subPlans); + } else { + return null; + } + } + } } -- Gitblit v1.9.3