ruanqi 3 years ago
parent
commit
e199bb7f8f
  1. 75
      src/main/java/com/jtem/modules/Schedule/controller/ScheduleController.java
  2. 49
      src/main/java/com/jtem/modules/Schedule/dao/ScheduleMapper.java
  3. 50
      src/main/java/com/jtem/modules/Schedule/entity/SfdcCancel.java
  4. 50
      src/main/java/com/jtem/modules/Schedule/entity/StartSeqNoData.java
  5. 50
      src/main/java/com/jtem/modules/Schedule/service/ScheduleService.java
  6. 107
      src/main/java/com/jtem/modules/Schedule/service/impl/ScheduleServiceImpl.java
  7. 76
      src/main/resources/mapper/schedule/ScheduleMapper.xml

75
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<SfdcCancel> result= scheduleService.getSfdcList(inData);
return R.ok().put("rows",result);
}
}

49
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<SOScheduledRoutingOutData>
* @throw
*/
SOScheduledRoutingOutData searchSeqNo(SOScheduledRoutingOutData inData);
/**
* @Description TODO
* @Title checkFirstItem
* @param inData
* @author rq
* @date 2023/2/16 14:36
* @return List<SOScheduledRoutingOutData>
* @throw
*/
List<SOScheduledRoutingOutData> 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<SfdcCancel>
* @throw
*/
List<SfdcCancel> getSfdcList(SfdcCancel inData);
}

50
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;
}

50
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;
}
}

50
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<java.lang.String,java.lang.Object>
* @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<SfdcCancel>
* @throw
*/
List<SfdcCancel> getSfdcList(SfdcCancel inData);
}

107
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<Object> 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<Map<String, Object>> resultList = procedureMapper.getProcedureData("sfdc_schedule", params);
Map<String ,Object> 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<SOScheduledRoutingOutData> 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<SOScheduledRoutingOutData> checkFirstItem=scheduleMapper.checkFirstItem(result);
// if(checkFirstItem.size()==0&&"N".equals(result.getMatIssueflag())){
// throw new RuntimeException("派工单是首道工序且没有发料!请先发料!");
// }
//----------检查下是否第一道工序 是否发料-----------------end
scheduleMapper.updateOutWorkFlag(soScheduledRoutingOutData);
}
@Override
public List<SfdcCancel> getSfdcList(SfdcCancel inData){
return scheduleMapper.getSfdcList(inData);
}
}

76
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)
<!-- left join user_work_center uwc on a.site=uwc.site and s.workCenterNo =uwc.WorkCenterNo and uwc.userId=#{userId}-->
@ -61,6 +61,7 @@
<!-- <if test="eLevels != null ">-->
<!-- and a.E_Levels = #{eLevels}-->
<!-- </if>-->
</where>
order by a.PlanStartDate desc,s.itemNo
</select>
@ -101,7 +102,7 @@
</update>
<select id="searchLastApproveQty" resultType="SORoutingData">
select top 1 isnull(TotalFinishedQty,0) lastApproveQty from SORoutingOutput where Site=#{site} and OrderNo=#{orderNo} and itemNo=dbo.Get_SORouting_PreviousOperationItemNo(#{site},#{orderNo},#{itemNo})
select top 1 isnull(TotalFinishedQty,0) lastApproveQty from v_SORouting where Site=#{site} and OrderNo=#{orderNo} and itemNo=dbo.Get_SORouting_PreviousOperationItemNo(#{site},#{orderNo},#{itemNo})
</select>
<select id="getSOScheduleRoutingData" resultType="SOScheduledRoutingOutData">
@ -197,4 +198,75 @@
<update id="closeSchedule">
update SOScheduledRouting set ClosedFlag='Y' where site=#{site} and seqNo=#{seqNo}
</update>
<select id="searchReportedQty" resultType="SORoutingData">
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}
</select>
<select id="getSeqNoSite" resultType="String">
select site from SOScheduledRouting where SeqNo=#{seqNo}
</select>
<select id="searchSeqNo" resultType="SOScheduledRoutingOutData">
select top 1 Site,OrderNo,ItemNo,SeqNo,QtyRequired,QtyReported,QtyApprove,TimeRequired,TimeReported,
BarcodeID,Remark,Crewsize,ClosedFlag,S_ScheduledDate,S_ResourceID,S_ScheduledSeqNo,S_ShiftNo,
S_WorkCenterNo, EnteredDate,scheduleType,operatorId,partNo,dbo.Get_PartDesc(Site,partNo) as partDesc,
dbo.Get_OperatorDesc(Site,operatorId) as operatorName,dbo.Get_ItemDesc(site,orderNo,ItemNo) as itemDesc,orderRef1 ,
dbo.Get_WorkCenterDesc(Site,S_WorkCenterNo) as workCenterDesc , dbo.Get_Part_SpecDesc(Site,partNo) as partSpec,closedFlag,outWorkFlag,ParkFlag,CancelReportFlag
from SOScheduledRouting
where SeqNo=#{seqNo}
</select>
<select id="checkFirstItem" resultType="SOScheduledRoutingOutData">
select site from v_SORouting where orderNo=#{orderNo} and site=#{site} and #{itemNo} >itemNo
</select>
<update id="updateOutWorkFlag">
update SOScheduledRouting set OutWorkFlag='N' where SeqNo =#{seqNo}
</update>
<select id="getSfdcList" resultType="com.jtem.modules.Schedule.entity.SfdcCancel">
select a.site,a.OrderNo,a.ItemNo ,a.SeqNo,a.WorkCenterNo,a.ReportDate,a.OperatorID,a.ReportQty,a.ApproveQty,a.ReportedManfTime,a.StatisticDate,
a.AssJobSeqNo,a.Scheduled_ResourceId ResourceID,b.S_ShiftNo ShiftNo,b.partNo,dbo.Get_ItemDesc(a.site,a.OrderNo,a.ItemNo) operation_desc,c.OperatorName,b.S_ShiftNo ShiftDesc,e.ResourceDesc,Reverseflag
,dbo.Get_Part_Spec(a.site,b.partNo) partSpec,dbo.Get_PartDesc(a.site,b.partNo) PartDesc
from sfdc a LEFT JOIN SOScheduledRouting b on a.Site=b.Site and a.AssJobSeqNo=b.SeqNo
left join Operator c on a.site=c.site and a.OperatorID=c.OperatorID
left join WorkCenterResource e on a.Site=e.Site and a.Scheduled_ResourceId =e.ResourceID and a.WorkCenterNo=e.WorkCenterNo
<where>
and a.AssJobSeqNo is not null
<if test="orderNo != null and orderNo != ''">
and a.OrderNo like #{orderNo}
</if>
<if test="workCenterNo != null and workCenterNo != ''">
and a.WorkCenterNo like #{workCenterNo}
</if>
<if test="partNo != null and partNo != ''">
and b.partNo like #{partNo}
</if>
<if test="itemNo != null and itemNo != ''">
and a.ItemNo = #{itemNo}
</if>
<if test="operatorName != null and operatorName != ''">
and c.OperatorName like #{operatorName}
</if>
<if test="resourceId != null and resourceId != ''">
and a.Scheduled_ResourceId = #{resourceId}
</if>
<if test="shiftNo != null and shiftNo != ''">
and b.S_ShiftNo = #{shiftNo}
</if>
<if test="startDate != null ">
and ReportDate >= #{startDate}
</if>
<if test="endDate != null ">
and #{endDate} >= ReportDate
</if>
<if test="seqNo != null and seqNo != '' ">
and a.AssJobSeqNo = #{seqNo}
</if>
</where>
order by a.ReportDate desc
</select>
</mapper>
Loading…
Cancel
Save