From 12121ca31a2d53c5abbe9b7f66d5ebc7659bf23b Mon Sep 17 00:00:00 2001 From: ruanqi Date: Fri, 6 Jan 2023 17:57:17 +0800 Subject: [PATCH] =?UTF-8?q?0412=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/SOTaskOrderHeaderMapper.java | 83 +++++++++++++++++++ .../service/impl/DailyPlanServiceImpl.java | 23 ++++- .../production/SOTaskOrderHeaderMapper.xml | 69 ++++++++++++++- 3 files changed, 169 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/heai/modules/production/dao/SOTaskOrderHeaderMapper.java b/src/main/java/com/heai/modules/production/dao/SOTaskOrderHeaderMapper.java index fff8286..2dbf198 100644 --- a/src/main/java/com/heai/modules/production/dao/SOTaskOrderHeaderMapper.java +++ b/src/main/java/com/heai/modules/production/dao/SOTaskOrderHeaderMapper.java @@ -188,4 +188,87 @@ public interface SOTaskOrderHeaderMapper { List checkRev(@Param("site") String site,@Param("taskNo") String taskNo); String getCombineOrderNo(); + /** + * @Description TODO + * @Title getLastShopOrder + * @param site + * @param taskNo + * @author rq + * @date 2023/1/6 9:23 + * @return ShopOrderData + * @throw + */ + ShopOrderData getLastShopOrder(@Param("site") String site,@Param("taskNo") String taskNo); + + /** + * @Description 保存合并的生产订单 + * @Title saveNewShopOrder + * @param inData + * @author rq + * @date 2023/1/6 10:13 + * @return void + * @throw + */ + void saveNewShopOrder(ShopOrderData inData); + Double getOrderLotSize(@Param("site") String site,@Param("taskNo") String taskNo); + /** + * @Description 复制新的SOBOM + * @Title saveNewSOBom + * @param site +  * @param orderNo +  * @param lotSize + * @author rq + * @date 2023/1/6 11:34 + * @return void + * @throw + */ + void saveNewSOBom(@Param("site") String site,@Param("orderNo") String orderNo,@Param("lotSize")Double lotSize,@Param("newOrderNo") String newOrderNo); + /** + * @Description 复制新的sorouting + * @Title saveRouting + * @param site +  * @param orderNo +  * @param lotSize + * @author rq + * @date 2023/1/6 11:35 + * @return void + * @throw + */ + void saveRouting(@Param("site") String site,@Param("orderNo") String orderNo,@Param("lotSize")Double lotSize,@Param("newOrderNo") String newOrderNo); + /** + * @Description 复制新的tool + * @Title saveTool + * @param site +  * @param orderNo + * @author rq + * @date 2023/1/6 11:35 + * @return void + * @throw + */ + void saveTool(@Param("site") String site,@Param("orderNo") String orderNo,@Param("newOrderNo") String newOrderNo,@Param("createBy") String createBy); + + /** + * @Description TODO + * @Title 改旧的生产订单数量 + * @param site + * @param taskNo + * @author rq + * @date 2023/1/6 15:21 + * @return void + * @throw + */ + void updateOldOrderNo(@Param("site") String site,@Param("taskNo") String taskNo); + /** + * @Description 改旧的bom + * @Title updateOldSOBom + * @param site +  * @param taskNo + * @author rq + * @date 2023/1/6 15:23 + * @return void + * @throw + */ + void updateOldSOBom(@Param("site") String site,@Param("taskNo") String taskNo); + + void updateRouting(@Param("site") String site,@Param("taskNo") String taskNo); } diff --git a/src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java b/src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java index b65e42f..6827b74 100644 --- a/src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java +++ b/src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java @@ -1099,17 +1099,34 @@ public class DailyPlanServiceImpl implements DailyPlanService { if(getCombineTaskNo.size()>0){ //判断混炼单能否合并 List checkRepairSOFlag=sOTaskOrderHeaderMapper.checkRepairSOFlag(detailList.get(0).getSite(),taskNo); - if(checkRepairSOFlag.size()>0){ + if(checkRepairSOFlag.size()>1){ throw new RuntimeException("混炼生产订单返工的与非返工的不能合并!"); } //判断版本号是否一致 List checkRev=sOTaskOrderHeaderMapper.checkRev(detailList.get(0).getSite(),taskNo); - if(checkRev.size()>0){ + if(checkRev.size()>1){ throw new RuntimeException("混炼生产订单BOM版本或者工艺路线版本不一致的不能合并!!"); } String orderNo=sOTaskOrderHeaderMapper.getCombineOrderNo(); - + ShopOrderData getLastShopOrder=sOTaskOrderHeaderMapper.getLastShopOrder(detailList.get(0).getSite(),taskNo); + getLastShopOrder.setSite(detailList.get(0).getSite()); + getLastShopOrder.setOrderNo(orderNo); + getLastShopOrder.setUserName(inData.getCreateBy()); + getLastShopOrder.setReleaseGuys(inData.getCreateBy()); + getLastShopOrder.setPartNo(inData.getPartNo()); + getLastShopOrder.setbOMRevNo(checkRev.get(0).getbOMRevNo()); + getLastShopOrder.setRoutingRevNo(checkRev.get(0).getRoutingRevNo()); + getLastShopOrder.setRepairSOFlag(checkRepairSOFlag.get(0).getRepairSOFlag()); + getLastShopOrder.setLotSize(sOTaskOrderHeaderMapper.getOrderLotSize(detailList.get(0).getSite(),taskNo)); + getLastShopOrder.seteOriginalOrderNo(taskNo); + sOTaskOrderHeaderMapper.saveNewShopOrder(getLastShopOrder); + sOTaskOrderHeaderMapper.saveNewSOBom(detailList.get(0).getSite(),detailList.get(0).getOrderRef2(),getLastShopOrder.getLotSize(),orderNo); + sOTaskOrderHeaderMapper.saveRouting(detailList.get(0).getSite(),detailList.get(0).getOrderRef2(),getLastShopOrder.getLotSize(),orderNo); + sOTaskOrderHeaderMapper.saveTool(detailList.get(0).getSite(),detailList.get(0).getOrderRef2(),orderNo,inData.getCreateBy()); + sOTaskOrderHeaderMapper.updateOldOrderNo(detailList.get(0).getSite(),taskNo); + sOTaskOrderHeaderMapper.updateOldSOBom(detailList.get(0).getSite(),taskNo); + sOTaskOrderHeaderMapper.updateRouting(detailList.get(0).getSite(),taskNo); } dailyPlanMapper.saveHunlianTaskHeaderData(inData); diff --git a/src/main/resources/mapper/production/SOTaskOrderHeaderMapper.xml b/src/main/resources/mapper/production/SOTaskOrderHeaderMapper.xml index 7dc10e2..923ab38 100644 --- a/src/main/resources/mapper/production/SOTaskOrderHeaderMapper.xml +++ b/src/main/resources/mapper/production/SOTaskOrderHeaderMapper.xml @@ -141,7 +141,7 @@ PartNo,UserName,EnterDate,Qtyfinished,ShiftId,dispatched_hunlian FROM SOTaskOrde where Site=#{site} and taskNo=#{taskNo} and OrderRef2 is not null and OrderRef2 !='' @@ -152,8 +152,71 @@ PartNo,UserName,EnterDate,Qtyfinished,ShiftId,dispatched_hunlian FROM SOTaskOrde + + + + + insert into shoporder(OrderNo,Site,EnterDate,UserName,NeedDate,OriginalNeedDate,PlanStartDate,ReleaseDate,ReleaseGuys, + Status,Status_Tmp,Printed,OrderType,PartNo,LotSize,FinishedQty, + BOMRevNo,RoutingRevNo,Leadtime,Remark,CostRollUpFlag,ManualFlag,OriSOOrderNo,CustomerID, + TechInfo,ReceiveStatus,E_OriginalOrderNo,E_Levels,E_OriginalOrderType,SFDCReportedFlag,RepairSOFlag, + ConfigurationFlag,MaterialSplitFlag)values + (#{orderNo},#{site},GETDATE(),#{userName},#{needDate},#{originalNeedDate},GetDate(),GetDate(),#{userName}, + '已下达','已下达','N','*',#{partNo},#{lotSize},0, + #{bOMRevNo},#{routingRevNo},0,'混炼任务单合并的混炼生产订单','N','Y','','', + '','未入库',#{eOriginalOrderNo},2,'生产订单','N','N', + 'N','N') + + + INSERT into SOBOM (Site,OrderNo,ItemNo,ComponentPartNo,QtyAssembly,QtyFixedScrapt,ScraptFactor,Remark,QtyRequired,QtyIssue,IssueDate, +QtyReserved,MatGroup,QtyNotified) + select Site,#{newOrderNo},ItemNo,ComponentPartNo,QtyAssembly,QtyFixedScrapt,ScraptFactor,Remark,ROUND(#{lotSize}*QtyAssembly/(1-ScraptFactor/100)+isnull(QtyFixedScrapt,0),2),0,null, +0,MatGroup,0 from SOBOM where orderNo=#{orderNo} and site=#{site} + + + + INSERT into SORouting (Site,OrderNo,ItemNo,OperationDesc,WorkCenterNo,MachSetupTime,MachRunFactor,FactorUnit_DB,FactorUnit,QtyRequired, + QtyReported,QtyApprove,TimeRequired,TimeReported,Efficiency,PlanStartTime,PlanFinishTime,BarcodeID,Remark,PartNo, + Crewsize,ClosedFlag,ActionNotes,OutWorkFlag,OutWorkPartNo,QtyOnPR,QtyOnPO,QtyScrapt,PF_PartNo,PF_RevNo,ToolID,JJGZ_UnitFactor_DB, + JJGZ_UnitFactor,JJGZ_UnitPrice,lastApproveQty) + + select Site,#{newOrderNo},ItemNo,OperationDesc,WorkCenterNo,MachSetupTime,MachRunFactor,FactorUnit_DB,FactorUnit,#{lotSize}, + 0,0,dbo.Get_SORouting_TimeRequired(Site,OrderNo,ItemNo),0,Efficiency,GetDate(),PlanFinishTime,BarcodeID,Remark,PartNo, + Crewsize,'N',ActionNotes,'N',OutWorkPartNo,0,0,0,PF_PartNo,PF_RevNo,ToolID,JJGZ_UnitFactor_DB, + JJGZ_UnitFactor,JJGZ_UnitPrice,0 from SORouting where orderNo=#{orderNo} and site=#{site} + + + INSERT into SOTool (Site,OrderNo,ToolID,ToolQty,Remark,CreateDate,CreatedBy,ItemNo) + + select Site,#{newOrderNo},ToolID,ToolQty,Remark,GETDATE(),#{createBy},ItemNo from SOTool where orderNo=#{orderNo} and site=#{site} + + + + update ShopOrder set LotSize=round(LotSize- CONVERT(float, b.HunlianQty ),2),Status= CASE WHEN LotSize- CONVERT(float, b.HunlianQty )>0 THEN Status ELSE '已取消' END + from (select site,TaskNo,OrderRef2 ,sum(HunlianQty) HunlianQty from Hunlian_TaskDetail where TaskNo=#{taskNo} and site=#{site} GROUP BY site,TaskNo,OrderRef2 ) + as b where ShopOrder.orderNo=b.OrderRef2 and ShopOrder.site=b.site + + + + update SOBOM set QtyRequired =ROUND(b.lotSize*QtyAssembly/(1-ScraptFactor/100)+isnull(QtyFixedScrapt,0),2) from ShopOrder b + where SOBOM.site=b.site and SOBOM.OrderNo=b.orderNo and SOBOM.orderNo in ( select OrderRef2 from Hunlian_TaskDetail + where taskNo=#{taskNo} and site=#{site} and OrderRef2 is not null and OrderRef2 !='') + + + + + update SORouting set QtyRequired =b.lotSize , TimeRequired=dbo.Get_SORouting_TimeRequired(SORouting.site,SORouting.OrderNo,SORouting.ItemNo) from ShopOrder b + where SORouting.site=b.site and SORouting.OrderNo=b.orderNo and SORouting.orderNo in ( select OrderRef2 from Hunlian_TaskDetail + where taskNo=#{taskNo} and site=#{site} and OrderRef2 is not null and OrderRef2 !='') + \ No newline at end of file