diff --git a/src/main/java/com/jtem/modules/Schedule/controller/ScheduleController.java b/src/main/java/com/jtem/modules/Schedule/controller/ScheduleController.java index 2c6247d..6947e98 100644 --- a/src/main/java/com/jtem/modules/Schedule/controller/ScheduleController.java +++ b/src/main/java/com/jtem/modules/Schedule/controller/ScheduleController.java @@ -135,4 +135,79 @@ public class ScheduleController { scheduleService.closeSchedule(inData); return R.ok(); } + + /** + * @Description TODO + * @Title saveGenerateReportForSchedule + * @param generateReportData + * @author rq + * @date 2022/8/3 17:35 + * @return R + * @throw + */ + @PostMapping("/saveGenerateReportForSchedule") + public R saveGenerateReportForSchedule(@RequestBody GenerateReportData generateReportData){ + return scheduleService.saveGenerateReportForSchedule(generateReportData); + } + + /** + * @Description TODO + * @Title searchReportedQty + * @param generateReportData + * @author rq + * @date 2022/8/3 17:35 + * @return R + * @throw + */ + @PostMapping("/searchReportedQty") + public R searchReportedQty(@RequestBody GenerateReportData generateReportData){ + + SORoutingData soRoutingData = scheduleService.searchReportedQty(generateReportData); + return R.ok().put("row", soRoutingData); + } + + /** + * @Description 扫描派工单获取数据 + * @Title getStockPrint + * @param inData + * @author rq + * @date 2022/9/13 11:32 + * @return R + * @throw + */ + @PostMapping("/searchSeqNo") + public R searchSeqNo(@RequestBody SOScheduledRoutingOutData inData){ + SOScheduledRoutingOutData result = scheduleService.searchSeqNo(inData); + return R.ok().put("row", result); + } + + /** + * @Description 扫描派工单保存开始时间 + * @Title startSeqNo + * @param inData + * @author rq + * @date 2022/9/13 11:32 + * @return R + * @throw + */ + @PostMapping("/startSeqNo") + public R startSeqNo(@RequestBody StartSeqNoData inData){ + scheduleService.startSeqNo(inData); + return R.ok(); + } + + /** + * @Description 获取报工信息 + * @Title SfdcCancel + * @param inData + * @author rq + * @date 2022/10/25 18:16 + * @return R + * @throw + */ + @PostMapping("/getSfdcList") + public R getSfdcList(@RequestBody SfdcCancel inData){ + List result= scheduleService.getSfdcList(inData); + return R.ok().put("rows",result); + } } diff --git a/src/main/java/com/jtem/modules/Schedule/dao/ScheduleMapper.java b/src/main/java/com/jtem/modules/Schedule/dao/ScheduleMapper.java index a6253de..35ae02c 100644 --- a/src/main/java/com/jtem/modules/Schedule/dao/ScheduleMapper.java +++ b/src/main/java/com/jtem/modules/Schedule/dao/ScheduleMapper.java @@ -1,5 +1,6 @@ package com.jtem.modules.Schedule.dao; +import com.jtem.common.utils.R; import com.jtem.modules.Schedule.entity.*; import com.jtem.modules.base.entity.OperatorData; import org.apache.ibatis.annotations.Mapper; @@ -151,4 +152,52 @@ public interface ScheduleMapper { * @throw */ void closeSchedule(SOScheduledRoutingOutData inData); + + SORoutingData searchReportedQty(GenerateReportData generateReportData); + + String getSeqNoSite(int seqNo); + + /** + * @Description 扫描派工单获取数据 + * @Title cancelJob + * @param inData + * @author rq + * @date 2022/8/3 15:19 + * @return List + * @throw + */ + SOScheduledRoutingOutData searchSeqNo(SOScheduledRoutingOutData inData); + + /** + * @Description TODO + * @Title checkFirstItem + * @param inData + * @author rq + * @date 2023/2/16 14:36 + * @return List + * @throw + */ + List checkFirstItem(SOScheduledRoutingOutData inData); + + /** + * @Description TODO + * @Title updateOutWorkFlag + * @param inData + * @author rq + * @date 2023/7/21 14:10 + * @return void + * @throw + */ + void updateOutWorkFlag(SOScheduledRoutingOutData inData); + + /** + * @Description 获取报工数据 + * @Title getSfdcList + * @param inData + * @author rq + * @date 2022/10/31 16:31 + * @return List + * @throw + */ + List getSfdcList(SfdcCancel inData); } diff --git a/src/main/java/com/jtem/modules/Schedule/entity/SfdcCancel.java b/src/main/java/com/jtem/modules/Schedule/entity/SfdcCancel.java new file mode 100644 index 0000000..a128edb --- /dev/null +++ b/src/main/java/com/jtem/modules/Schedule/entity/SfdcCancel.java @@ -0,0 +1,50 @@ +package com.jtem.modules.Schedule.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class SfdcCancel { + private String site; + private String orderNo; + private Double itemNo; + private Double stopTime; + private String operationDesc; + private Integer seqNo; + private String partNo; + private String partSpec; + private String partDesc; + private String workCenterNo; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date reportDate; + private String operatorId; + private String operatorName; + private BigDecimal reportQty; + private BigDecimal approveQty; + private BigDecimal reportedManfTime; + private Integer assJobSeqNo; + private String shiftNo; + private String shiftDesc; + private String resourceId; + private String resourceDesc; + private String batchNo; + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date startDate; + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date endDate; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date statisticDate; + private String reverseflag; + private Double reportWeight; + private Double approveWeight; + private Double moldQty; + private BigDecimal wasteWeight; +} diff --git a/src/main/java/com/jtem/modules/Schedule/entity/StartSeqNoData.java b/src/main/java/com/jtem/modules/Schedule/entity/StartSeqNoData.java new file mode 100644 index 0000000..ef28217 --- /dev/null +++ b/src/main/java/com/jtem/modules/Schedule/entity/StartSeqNoData.java @@ -0,0 +1,50 @@ +package com.jtem.modules.Schedule.entity; + +public class StartSeqNoData { + + private String site; + private String username; + private Integer seqNo; + private String flag; + private String tvId; + + public String getSite() { + return site; + } + + public void setSite(String site) { + this.site = site; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public Integer getSeqNo() { + return seqNo; + } + + public void setSeqNo(Integer seqNo) { + this.seqNo = seqNo; + } + + public String getFlag() { + return flag; + } + + public void setFlag(String flag) { + this.flag = flag; + } + + public String getTvId() { + return tvId; + } + + public void setTvId(String tvId) { + this.tvId = tvId; + } +} diff --git a/src/main/java/com/jtem/modules/Schedule/service/ScheduleService.java b/src/main/java/com/jtem/modules/Schedule/service/ScheduleService.java index da6e6e2..48108cb 100644 --- a/src/main/java/com/jtem/modules/Schedule/service/ScheduleService.java +++ b/src/main/java/com/jtem/modules/Schedule/service/ScheduleService.java @@ -1,8 +1,11 @@ package com.jtem.modules.Schedule.service; +import com.jtem.common.utils.R; import com.jtem.modules.Schedule.entity.*; import com.jtem.modules.base.entity.OperatorData; import com.jtem.modules.base.entity.WorkCenterResourceData; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.math.BigDecimal; import java.util.List; @@ -99,4 +102,51 @@ public interface ScheduleService { * @throw */ void closeSchedule(SOScheduledRoutingOutData inData); + + /** + * @Method saveGenerateReport + * @Description: 保存报告信息 + * @param inData + * @author: ZuoWenWen + * @Version: 1.0 + * @date: 2022/4/14 + * @return: java.util.Map + * @throws: + */ + R saveGenerateReportForSchedule(GenerateReportData inData); + + SORoutingData searchReportedQty(GenerateReportData generateReportData); + + /** + * @Description 扫描派工单获取数据 + * @Title searchSeqNo + * @param inData + * @author rq + * @date 2022/9/13 11:36 + * @return SOScheduledRoutingOutData + * @throw + */ + SOScheduledRoutingOutData searchSeqNo(SOScheduledRoutingOutData inData); + + /** + * @Description 扫描派工单保存开始时间 + * @Title startSeqNo + * @param inData + * @author rq + * @date 2022/9/13 11:32 + * @return R + * @throw + */ + void startSeqNo(StartSeqNoData inData); + + /** + * @Description 获取报工数据 + * @Title getSfdcList + * @param inData + * @author rq + * @date 2022/10/31 16:31 + * @return List + * @throw + */ + List getSfdcList(SfdcCancel inData); } diff --git a/src/main/java/com/jtem/modules/Schedule/service/impl/ScheduleServiceImpl.java b/src/main/java/com/jtem/modules/Schedule/service/impl/ScheduleServiceImpl.java index e5af1f1..e139a26 100644 --- a/src/main/java/com/jtem/modules/Schedule/service/impl/ScheduleServiceImpl.java +++ b/src/main/java/com/jtem/modules/Schedule/service/impl/ScheduleServiceImpl.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -146,8 +147,8 @@ public class ScheduleServiceImpl implements ScheduleService { if(saveData.getCirculationSeqNo()!=null){ throw new RuntimeException("派工单已流转无需再次流转!"); } - int nextSeqNo=scheduleMapper.getDataSequence(); scheduleMapper.updateDataSequence(); + int nextSeqNo=scheduleMapper.getDataSequence(); saveData.setSeqNo(nextSeqNo); saveData.setsScheduledDate(inData.getsScheduledDate()); saveData.setQtyRequired(inData.getCirculationQty()); @@ -169,4 +170,108 @@ public class ScheduleServiceImpl implements ScheduleService { } scheduleMapper.closeSchedule(inData); } + + @Override + @Transactional + public R saveGenerateReportForSchedule(GenerateReportData inData) { + List params = new ArrayList<>(); +// 工厂编码 + params.add(inData.getSite()); +// 工单号 + params.add(inData.getSeqNo()); +// 行号 + params.add(inData.getItemNo()); +// 报告日期 + params.add(inData.getPlanFinishTime()); +// 操作员 + params.add(inData.getOperatorId()); +// 报告数量 + params.add(inData.getQtyReported()); +// 合格数量 + params.add(inData.getQtyApprove()); +// 调机时间 + params.add(inData.getPreparationTime()); +// 生产时间 + params.add(inData.getManufacturingTime()); +// 清理时间 + params.add(inData.getCleaningTime()); +// 不良原因 + params.add(inData.getScrapReason()); +// 停机原因 + params.add(inData.getShutdownReason()); +// 备注 + params.add(inData.getRemark()); +// 生产操作员 + params.add(inData.getOperatorId2()); +// 统计日期 + params.add(new Date()); +// 返工数量 + params.add(inData.getQtyRework()); + params.add(inData.getUserId()); + List> resultList = procedureMapper.getProcedureData("sfdc_schedule", params); + Map map = resultList.get(0); + if(map == null){ + throw new RuntimeException("返回结果错误!"); + }else if(Integer.parseInt(String.valueOf(map.get("resultCode"))) != 200) { + throw new RuntimeException(String.valueOf(map.get("resultMsg"))); + } + + return R.ok().put("msg" ,"操作成功!"); + } + + @Override + public SORoutingData searchReportedQty(GenerateReportData generateReportData){ + return scheduleMapper.searchReportedQty(generateReportData); + } + + @Override + public SOScheduledRoutingOutData searchSeqNo(SOScheduledRoutingOutData inData){ + inData.setSite(scheduleMapper.getSeqNoSite(inData.getSeqNo())); + // List checkUserSeqNo=dailyPlanMapper.checkUserSeqNo(inData.getSeqNo(),inData.getUserId()); + // if(checkUserSeqNo.size()==0){ + // throw new RuntimeException("该账号无权操作这个派工单!"); + // } + StartSeqNoData startSeqNoData=new StartSeqNoData(); + startSeqNoData.setSeqNo(inData.getSeqNo()); + startSeqNoData.setSite(inData.getSite()); + SOScheduledRoutingOutData result =scheduleMapper.searchSeqNo(inData); + if(result==null){ + throw new RuntimeException("派工单号不存在!"); + } + if ("Y".equals(result.getOutWorkFlag())) { + throw new RuntimeException("派工单未开始生产!"); + } + return result; + + } + + @Override + @Transactional + public void startSeqNo(StartSeqNoData inData){ + SOScheduledRoutingOutData soScheduledRoutingOutData=new SOScheduledRoutingOutData(); + soScheduledRoutingOutData.setSeqNo(inData.getSeqNo()); + soScheduledRoutingOutData.setSite(inData.getSite()); + SOScheduledRoutingOutData result =scheduleMapper.searchSeqNo(soScheduledRoutingOutData); + if(result==null){ + throw new RuntimeException("派工单号不存在!"); + } + if("N".equals(result.getOutWorkFlag())){ + throw new RuntimeException("派工单已经开始生产!"); + } + //----------检查下是否第一道工序 是否发料----------------- + List checkFirstItem=scheduleMapper.checkFirstItem(result); + // if(checkFirstItem.size()==0&&"N".equals(result.getMatIssueflag())){ + // throw new RuntimeException("派工单是首道工序且没有发料!请先发料!"); + // } + //----------检查下是否第一道工序 是否发料-----------------end + + + scheduleMapper.updateOutWorkFlag(soScheduledRoutingOutData); + + } + + @Override + public List getSfdcList(SfdcCancel inData){ + return scheduleMapper.getSfdcList(inData); + } } diff --git a/src/main/resources/mapper/schedule/ScheduleMapper.xml b/src/main/resources/mapper/schedule/ScheduleMapper.xml index c623832..e53345b 100644 --- a/src/main/resources/mapper/schedule/ScheduleMapper.xml +++ b/src/main/resources/mapper/schedule/ScheduleMapper.xml @@ -8,7 +8,7 @@ S.machRunFactor,S.factorUnit,S.ItemNo,S.OperationDesc,s.Efficiency,isnull(SOP.TotalFinishedQty,0) lastApproveQty FROM ShopOrder a LEFT JOIN Part P ON P.PartNo=a.PartNo AND a.site=P.Site - LEFT JOIN SORouting S on S.site=a.site and S.OrderNo=a.orderNo + LEFT JOIN v_SORouting S on S.site=a.site and S.OrderNo=a.orderNo LEFT JOIN ScheduleList SL on S.site=SL.site and S.OrderNo=SL.orderNo and S.ItemNo=SL.ItemNo LEFT JOIN SORoutingOutput SOP ON a.site=SOP.site and a.OrderNo=SOP.OrderNo and SOP.itemNo=dbo.Get_SORouting_PreviousOperationItemNo(a.site,a.OrderNo,S.itemNo) @@ -61,6 +61,7 @@ + order by a.PlanStartDate desc,s.itemNo @@ -101,7 +102,7 @@ + select top 1 isnull(a.QtyReported,0) QtyReported,isnull(SOP.TotalFinishedQty,0) lastApproveQty + from v_SORouting a + LEFT JOIN SORoutingOutput SOP ON a.site=SOP.site and a.OrderNo=SOP.OrderNo and SOP.itemNo=dbo.Get_SORouting_PreviousOperationItemNo(a.site,a.OrderNo,a.itemNo) + where a.Site=#{site} and a.OrderNo=#{orderNo} and a.itemNo=#{itemNo} + + + + + + + + + update SOScheduledRouting set OutWorkFlag='N' where SeqNo =#{seqNo} + + + \ No newline at end of file