# Conflicts:
#	common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java
Leon 4 years ago
commit d13545f9ab

@ -6,13 +6,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.foreverwin.mesnac.anomaly.model.AbnormalBill;
import com.foreverwin.mesnac.anomaly.model.AbnormalBillDispose;
import com.foreverwin.mesnac.anomaly.service.AbnormalBillService;
import com.foreverwin.mesnac.meapi.controller.NcCodeController;
import com.foreverwin.mesnac.meapi.controller.WorkCenterController;
import com.foreverwin.mesnac.meapi.model.DataField;
import com.foreverwin.mesnac.meapi.model.NcCode;
import com.foreverwin.mesnac.meapi.model.WorkCenter;
import com.foreverwin.mesnac.meapi.service.DataFieldListService;
import com.foreverwin.mesnac.meapi.service.NcCodeService;
import com.foreverwin.mesnac.meapi.service.WorkCenterService;
import com.foreverwin.modular.core.util.CommonMethods;
import com.foreverwin.modular.core.util.FrontPage;
import com.foreverwin.modular.core.util.R;
@ -38,10 +37,7 @@ public class AbnormalBillController {
private NcCodeService ncCodeService;
@Autowired
private WorkCenterController workCenterController;
@Autowired
private NcCodeController ncCodeController;
private WorkCenterService workCenterService;
@Autowired
private DataFieldListService dataFieldListService;
@ -181,14 +177,15 @@ public class AbnormalBillController {
//工作中心
WorkCenter workCenter = new WorkCenter();
workCenter.setWcCategory("LEVEL4");
R workCenterList = workCenterController.getWorkCenterList(workCenter);
workCenter.setSite(site);
List<WorkCenter> workCenterList = workCenterService.selectList(workCenter);
hashMap.put("workCenter",workCenterList);
//原因分类
NcCode ncCode = new NcCode();
ncCode.setSite(site);
ncCode.setNcCategory("REPAIR");
R causeType = ncCodeController.getNcCodeList(ncCode);
hashMap.put("causeType",causeType);
List<NcCode> ncCodeList = ncCodeService.selectList(ncCode);
hashMap.put("causeType",ncCodeList);
//责任部门
DataField dataField = new DataField();
dataField.setSite(site);
@ -208,15 +205,44 @@ public class AbnormalBillController {
// }
/**
*
*
* @param abnormalBill
* @return
*/
@GetMapping("/anomalyReportOther")
public R anomalyReportOther(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose){
return R.ok(abnormalBillService.anomalyReportOther(abnormalBill, abnormalBillDispose));
public R anomalyReportOther(AbnormalBill abnormalBill,
AbnormalBillDispose abnormalBillDispose,
@RequestParam List<String> dutyCauseType,
@RequestParam List<String> dutyType){
return R.ok(abnormalBillService.anomalyReportOther(abnormalBill, abnormalBillDispose,dutyCauseType,dutyType));
}
/**
*
* @param abnormalBill
* @param abnormalBillDispose
* @return
*/
@GetMapping("/anomalyReport")
public R anomalyReport(AbnormalBill abnormalBill,
AbnormalBillDispose abnormalBillDispose,
@RequestParam List<String> ncGroupAndNcCodes,
@RequestParam List<String> dutyCauseType,
@RequestParam List<String> dutyType){
return R.ok(abnormalBillService.anomalyReport(abnormalBill, abnormalBillDispose,ncGroupAndNcCodes,dutyCauseType,dutyType));
}
/**
*
* @param abnormalBill
* @return
*/
@GetMapping("/anomalyReportDevice")
public R anomalyReportDevice(AbnormalBill abnormalBill,AbnormalBillDispose abnormalBillDispose){
return R.ok(abnormalBillService.anomalyReportDevice(abnormalBill,abnormalBillDispose));
}
/**
*
* @param handle

@ -46,6 +46,8 @@ public class AbnormalCauseController {
@GetMapping("")
public R getAbnormalCauseList(AbnormalCause abnormalCause){
List<AbnormalCause> result;
String site = CommonMethods.getSite();
abnormalCause.setSite(site);
QueryWrapper<AbnormalCause> queryWrapper = new QueryWrapper<>();
queryWrapper.setEntity(abnormalCause);
result = abnormalCauseService.list(queryWrapper);

@ -46,6 +46,8 @@ public class AbnormalDutyController {
@GetMapping("")
public R getAbnormalDutyList(AbnormalDuty abnormalDuty){
List<AbnormalDuty> result;
String site = CommonMethods.getSite();
abnormalDuty.setSite(site);
QueryWrapper<AbnormalDuty> queryWrapper = new QueryWrapper<>();
queryWrapper.setEntity(abnormalDuty);
result = abnormalDutyService.list(queryWrapper);

@ -1,7 +1,7 @@
package com.foreverwin.mesnac.anomaly.mapper;
import com.foreverwin.mesnac.anomaly.model.AbnormalDuty;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.foreverwin.mesnac.anomaly.model.AbnormalDuty;
import org.springframework.stereotype.Repository;
/**

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.time.LocalDateTime;

@ -27,15 +27,26 @@ public interface AbnormalBillService extends IService<AbnormalBill> {
List<AbnormalBill> selectList(AbnormalBill abnormalBill);
String anomalyReportOther(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose);
String anomalyReportOther(AbnormalBill abnormalBill,
AbnormalBillDispose abnormalBillDispose,
List<String> dutyCauseType,
List<String> dutyType);
String anomalyReport(AbnormalBill abnormalBill,
AbnormalBillDispose abnormalBillDispose,
List<String> ncGroupAndNcCodes,
List<String> dutyCauseType,
List<String> dutyType);
/**
*
* @param abnormalBill
* @param abnormalBillDispose
*/
void generateAbnormalBill(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose);
void generateAbnormalBill(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose,List<String> dutyCauseType,List<String> dutyType);
void cancelBrowse(String handle,String cancelBrowse);
String anomalyReportDevice(AbnormalBill abnormalBill,AbnormalBillDispose abnormalBillDispose);
}

@ -25,4 +25,5 @@ public interface AbnormalDutyService extends IService<AbnormalDuty> {
IPage<AbnormalDuty> selectPage(FrontPage<AbnormalDuty> frontPage, AbnormalDuty abnormalDuty);
List<AbnormalDuty> selectList(AbnormalDuty abnormalDuty);
}

@ -25,4 +25,5 @@ public interface AbnormalNcCodeService extends IService<AbnormalNcCode> {
IPage<AbnormalNcCode> selectPage(FrontPage<AbnormalNcCode> frontPage, AbnormalNcCode abnormalNcCode);
List<AbnormalNcCode> selectList(AbnormalNcCode abnormalNcCode);
}

@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.foreverwin.mesnac.anomaly.mapper.AbnormalBillMapper;
import com.foreverwin.mesnac.anomaly.model.AbnormalBill;
import com.foreverwin.mesnac.anomaly.model.AbnormalBillDispose;
import com.foreverwin.mesnac.anomaly.service.AbnormalBillDisposeService;
import com.foreverwin.mesnac.anomaly.service.AbnormalBillService;
import com.foreverwin.mesnac.anomaly.model.*;
import com.foreverwin.mesnac.anomaly.service.*;
import com.foreverwin.mesnac.common.enums.HandleEnum;
import com.foreverwin.mesnac.common.helper.NextNumberHelper;
import com.foreverwin.mesnac.common.util.StringUtil;
@ -24,7 +22,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.*;
/**
* <p>
*
@ -56,6 +55,15 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
@Autowired
private NwaUserService nwaUserService;
@Autowired
private AbnormalNcCodeService abnormalNcCodeService;
@Autowired
private AbnormalCauseService abnormalCauseService;
@Autowired
private AbnormalDutyService abnormalDutyService;
@Override
public IPage<AbnormalBill> selectPage(FrontPage<AbnormalBill> frontPage, AbnormalBill abnormalBill) {
@ -72,40 +80,156 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
}
@Override
public String anomalyReportOther(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose) {
this.generateAbnormalBill(abnormalBill,abnormalBillDispose);
public String anomalyReportOther(AbnormalBill abnormalBill,
AbnormalBillDispose abnormalBillDispose,
List<String> dutyCauseType,
List<String> dutyType) {
this.generateAbnormalBill(abnormalBill,abnormalBillDispose,dutyCauseType,dutyType);
this.saveOrUpdate(abnormalBill);
abnormalBillDisposeService.saveOrUpdate(abnormalBillDispose);
return abnormalBill.getAbnormalNo();
}
@Override
public String anomalyReport(AbnormalBill abnormalBill,
AbnormalBillDispose abnormalBillDispose,
List<String> ncGroupAndNcCodes,
List<String> dutyCauseType,
List<String> dutyType) {
this.generateAbnormalBill(abnormalBill,abnormalBillDispose,dutyCauseType,dutyType);
//获取当前时间
LocalDateTime now = LocalDateTime.now();
//生成不良代码和不良代码组,并把它放到hashMap里面ncCode是存放在异常单里面的ncCode
List<String> ncCode = new ArrayList<>();
List<String> ncGroup = new ArrayList<>();
StringBuilder ncCodes = new StringBuilder();
for(String ncGroupAndNcCode:ncGroupAndNcCodes){
String[] split = ncGroupAndNcCode.split("/");
ncGroup.add(split[0]);
ncCode.add(split[1]);
ncCodes.append(split[1]).append(",");
}
ArrayList<AbnormalNcCode> abnormalNcCodes = new ArrayList<>();
for(int i = 0; i < ncGroup.size(); i ++){
AbnormalNcCode abnormalNcCode = new AbnormalNcCode();
//设置异常单BO
abnormalNcCode.setAbnormalBillBo(abnormalBill.getHandle());
List<AbnormalNcCode> abnormalNcCodes1 = abnormalNcCodeService.selectList(abnormalNcCode);
if(abnormalNcCodes1.size() != 0){
QueryWrapper<AbnormalNcCode> abnormalNcCodeQueryWrapper = new QueryWrapper<>();
abnormalNcCodeQueryWrapper.setEntity(abnormalNcCode);
abnormalNcCodeService.remove(abnormalNcCodeQueryWrapper);
}
abnormalNcCode.setModifiedUser(CommonMethods.getUser());
abnormalNcCode.setModifiedDateTime(now);
abnormalNcCode.setCreatedUser(CommonMethods.getUser());
abnormalNcCode.setCreatedDateTime(now);
//设置HANDLE
abnormalNcCode.setHandle(UUID.randomUUID().toString());
//设置站点
abnormalNcCode.setSite(CommonMethods.getSite());
//设置不合格代码组
abnormalNcCode.setNcCodeGroup(ncGroup.get(i));
abnormalNcCode.setNcCode(ncCode.get(i));
abnormalNcCodes.add(abnormalNcCode);
}
abnormalNcCodeService.saveOrUpdateBatch(abnormalNcCodes);
abnormalBill.setNcCode(ncCodes.substring(0,ncCodes.length() - 1));
this.saveOrUpdate(abnormalBill);
abnormalBillDisposeService.saveOrUpdate(abnormalBillDispose);
return abnormalBill.getAbnormalNo();
}
@Override
public String anomalyReportDevice(AbnormalBill abnormalBill,AbnormalBillDispose abnormalBillDispose) {
this.generateAbnormalBill(abnormalBill,abnormalBillDispose,null,null);
this.saveOrUpdate(abnormalBill);
abnormalBillDisposeService.saveOrUpdate(abnormalBillDispose);
return abnormalBill.getAbnormalNo();
}
@Override
public void generateAbnormalBill(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose) {
public void generateAbnormalBill(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose,List<String> dutyCauseType,List<String> dutyType) {
String site = CommonMethods.getSite();
LocalDateTime currentTime = LocalDateTime.now();
String user = CommonMethods.getUser();
if(StringUtil.isBlank(abnormalBill.getAbnormalNo())){
String abnormalNo = null;
//生成异常单号
if("Q".equals(abnormalBill.getType())){//其他异常
abnormalNo = nextNumberHelper.getNextNumber(abnormalBill.getSite(), "ABNORMAL_OTHER", 1, null).get(0);
abnormalNo = nextNumberHelper.getNextNumber(site, "ABNORMAL_OTHER", 1, null).get(0);
}else if("Z".equals(abnormalBill.getType())){//质量异常
abnormalNo = nextNumberHelper.getNextNumber(abnormalBill.getSite(), "ABNORMAL_QUALITY", 1, null).get(0);
abnormalNo = nextNumberHelper.getNextNumber(site, "ABNORMAL_QUALITY", 1, null).get(0);
}else if("S".equals(abnormalBill.getType())){//设备异常
abnormalNo = nextNumberHelper.getNextNumber(abnormalBill.getSite(), "ABNORMAL_DEVICE", 1, null).get(0);
abnormalNo = nextNumberHelper.getNextNumber(site, "ABNORMAL_DEVICE", 1, null).get(0);
}
abnormalBill.setAbnormalNo(abnormalNo);
}
abnormalBill.setHandle(HandleEnum.Z_ABNORMAL_BILL.getHandle(abnormalBill.getSite(),abnormalBill.getAbnormalNo()));
abnormalBill.setHandle(HandleEnum.Z_ABNORMAL_BILL.getHandle(site,abnormalBill.getAbnormalNo()));
abnormalBillDispose.setAbnormalBillBo(abnormalBill.getHandle());
abnormalBillDispose.setHandle(HandleEnum.Z_ABNORMAL_BILL_DISPOSE.getHandle(abnormalBill.getSite(),abnormalBill.getAbnormalNo()));
abnormalBillDispose.setHandle(HandleEnum.Z_ABNORMAL_BILL_DISPOSE.getHandle(site,abnormalBill.getAbnormalNo()));
LocalDateTime currentTime = LocalDateTime.now();
String user = CommonMethods.getUser();
//设置责任划分填报人和填报时间
abnormalBillDispose.setDutyUser(user);
abnormalBillDispose.setDutyDateTime(currentTime);
ArrayList<AbnormalCause> causeTypes = new ArrayList<>();
//判断原因分类是否为空
if(dutyCauseType != null && dutyCauseType.size() >= 1){
for(String cause:dutyCauseType){
AbnormalCause abnormalCause = new AbnormalCause();
String uuid = UUID.randomUUID().toString();
abnormalCause.setSite(site);
abnormalCause.setAbnormalBillBo(abnormalBill.getHandle());
abnormalCause.setAbnormalBillDisposeBo(abnormalBillDispose.getHandle());
List<AbnormalCause> abnormalCauses = abnormalCauseService.selectList(abnormalCause);
if(abnormalCauses.size() != 0){
QueryWrapper<AbnormalCause> abnormalCauseQueryWrapper = new QueryWrapper<>();
abnormalCauseQueryWrapper.setEntity(abnormalCause);
abnormalCauseService.remove(abnormalCauseQueryWrapper);
}
abnormalCause.setHandle(uuid);
abnormalCause.setAbnormalCauseNo(cause);
abnormalCause.setCreatedDateTime(currentTime);
abnormalCause.setCreatedUser(user);
abnormalCause.setModifiedUser(user);
abnormalCause.setModifiedDateTime(currentTime);
causeTypes.add(abnormalCause);
}
}
ArrayList<AbnormalDuty> dutyTypes = new ArrayList<>();
//判断责任分类是否为空
if(dutyType != null && dutyType.size() >= 1){
for(String duty:dutyType){
AbnormalDuty abnormalDuty = new AbnormalDuty();
String uuid = UUID.randomUUID().toString();
abnormalDuty.setSite(site);
abnormalDuty.setAbnormalBillBo(abnormalBill.getHandle());
abnormalDuty.setAbnormalBillDisposeBo(abnormalBillDispose.getHandle());
List<AbnormalDuty> abnormalDuties = abnormalDutyService.selectList(abnormalDuty);
if(abnormalDuties.size() != 0){
QueryWrapper<AbnormalDuty> abnormalDutyQueryWrapper = new QueryWrapper<>();
abnormalDutyQueryWrapper.setEntity(abnormalDuty);
abnormalDutyService.remove(abnormalDutyQueryWrapper);
}
abnormalDuty.setHandle(uuid);
abnormalDuty.setAbnormalDutyNo(duty);
abnormalDuty.setModifiedUser(user);
abnormalDuty.setModifiedDateTime(currentTime);
abnormalDuty.setCreatedDateTime(currentTime);
abnormalDuty.setCreatedUser(user);
dutyTypes.add(abnormalDuty);
}
}
//设置创建时间和更新时间
if(abnormalBillMapper.selectById(abnormalBill.getHandle()) == null){
abnormalBill.setCreatedDataTime(currentTime);
@ -119,24 +243,44 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
abnormalBillDispose.setModifiedUser(user);
//判断SFC、设备编号、消息类型是否不正确或为空
if(StringUtil.isBlank(abnormalBill.getSfc())){
if(StringUtil.isBlank(abnormalBill.getSfc()) && "S".equals(abnormalBill.getType())){
throw BusinessException.build("产品条码不能为空");
}
if(StringUtil.isBlank(abnormalBill.getResrce())){
throw BusinessException.build("设备编号不能为空");
}
if(!StringUtil.isBlank(abnormalBill.getMessageType())){
NcGroup messageType = ncGroupMapper.selectById(HandleEnum.NC_GROUP.getHandle(abnormalBill.getSite(), abnormalBill.getMessageType()));
NcGroup messageType = ncGroupMapper.selectById(HandleEnum.NC_GROUP.getHandle(site, abnormalBill.getMessageType()));
if(messageType == null){
throw BusinessException.build("该消息类型不存在");
}
}
Resrce resrce = resrceMapper.selectById(HandleEnum.RESOURCE.getHandle(abnormalBill.getSite(), abnormalBill.getResrce()));
Resrce resrce = resrceMapper.selectById(HandleEnum.RESOURCE.getHandle(site, abnormalBill.getResrce()));
if(resrce == null){
throw BusinessException.build("该设备编号不存在");
}
//判断不良品数量和问题数量是否为正整数
try {
if(!StringUtil.isBlank(abnormalBill.getNcQty()) && Integer.parseInt(abnormalBill.getNcQty()) < 0) {
throw BusinessException.build("不良品数量必须大于0");
}
if(!StringUtil.isBlank(abnormalBill.getPbQty()) && Integer.parseInt(abnormalBill.getPbQty()) < 0){
throw BusinessException.build("问题数量必须大于0");
}
}catch (NumberFormatException num){
throw BusinessException.build("问题数量或不良品数量必须为一个正整数");
}
//判断输入的用户组是否正确,并返回对应的用户
nwaUserService.checkUserGroup(abnormalBillDispose.getDutySendUserGroup());
//插入原因分类和责任分类
if(dutyTypes.size() > 0){
abnormalDutyService.saveOrUpdateBatch(dutyTypes);
}
if(causeTypes.size() > 0){
abnormalCauseService.saveOrUpdateBatch(causeTypes);
}
}
@Override

@ -43,4 +43,6 @@ public class AbnormalDutyServiceImpl extends ServiceImpl<AbnormalDutyMapper, Abn
}
}

@ -382,5 +382,4 @@
</foreach>)
</delete>
<!-- BaseMapper标准查询/修改/删除 -->
</mapper>

@ -20,6 +20,28 @@ public interface Constants {
String RESOURCE_INSPECT_TASK = "RESOURCE_INSPECT_TASK";
String SITE_ADMIN = "SITE_ADMIN";
//首件检验
String INSPECTION_TYPE_S="S";
//互检检验
String INSPECTION_TYPE_H="H";
//自检检验
String INSPECTION_TYPE_Z="Z";
//专检检验
String INSPECTION_TYPE_P="P";
//日常保养
String INSPECTION_TYPE_EM="EM";
//一级保养
String INSPECTION_TYPE_OM="OM";
//二级保养
String INSPECTION_TYPE_SM="SM";
//日点检
String INSPECTION_TYPE_DM="DM";
//周点检
String INSPECTION_TYPE_WM="WM";
//月点检
String INSPECTION_TYPE_MM="MM";
//年点检
String INSPECTION_TYPE_YM="YM";
//叫料类型
String CALL_TYPE_MATERIAL = "MATERIAL";

@ -0,0 +1,356 @@
package com.foreverwin.mesnac.equip.dto;
import com.foreverwin.mesnac.equip.model.ResourceInspectTaskParam;
import com.foreverwin.mesnac.equip.model.ResourceInspectTaskSpare;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author pavel.Liu
* @since 2021-06-24
*/
public class ResourceInspectTaskDto implements Serializable {
/**序号**/
private Integer itemSeq;
/**主键**/
private String handle;
/**站点**/
private String site;
/**任务编号**/
private String taskNo;
/**类型(自动AUTO/手动)**/
private String category;
/**任务描述**/
private String description;
/**任务状态(新建/处理中/完成/关闭)**/
private String status;
/**设备检验计划HANDLE**/
private String resourceInspectPlanBo;
/**检验项目清单HANDLE**/
private String inspectionItemBo;
/**设备HANDLE**/
private String resourceBo;
/**检验结果**/
private String result;
/**任务创建时间**/
private LocalDateTime taskCreateDate;
/**计划开始时间**/
private LocalDateTime planStartDate;
/**计划完成时间**/
private LocalDateTime planCompleteDate;
/**实际开始时间**/
private LocalDateTime actualStartDate;
/**实际完成时间**/
private LocalDateTime actualCompleteDate;
/**执行人**/
private String executor;
/**备注**/
private String remark;
/**检索时间段的开始时间**/
private LocalDateTime compareStartTime;
/**检索时间段的结束时间**/
private LocalDateTime compareEndTime;
/**设备编号NO**/
private String resourceNo;
/**设备描述**/
private String resourceDescription;
/**设备类型编号NO**/
private String resourceTypeNo;
/**设备类型描述**/
private String resourceTypeDescription;
/**设备类型HANDLE**/
private String resourceTypeBo;
/**计划编号NO**/
private String planNo;
/**计划描述**/
private String planDescription;
/**频率**/
private String frequency;
/**周期单位**/
private String frequencyUnit;
/**周期**/
private String cycle;
/**当前用户**/
private String currentUser;
/**车间**/
private String workCenter;
/**任务检验项明细**/
private List<ResourceInspectTaskParam> taskItemDetailList;
/**消耗备品**/
private List<ResourceInspectTaskSpare> taskSpareList;
public List<ResourceInspectTaskParam> getTaskItemDetailList() {
return taskItemDetailList;
}
public void setTaskItemDetailList(List<ResourceInspectTaskParam> taskItemDetailList) {
this.taskItemDetailList = taskItemDetailList;
}
public List<ResourceInspectTaskSpare> getTaskSpareList() {
return taskSpareList;
}
public void setTaskSpareList(List<ResourceInspectTaskSpare> taskSpareList) {
this.taskSpareList = taskSpareList;
}
public ResourceInspectTaskDto() {
}
public String getResourceNo() {
return resourceNo;
}
public void setResourceNo(String resourceNo) {
this.resourceNo = resourceNo;
}
public String getResourceDescription() {
return resourceDescription;
}
public void setResourceDescription(String resourceDescription) {
this.resourceDescription = resourceDescription;
}
public String getPlanNo() {
return planNo;
}
public void setPlanNo(String planNo) {
this.planNo = planNo;
}
public String getPlanDescription() {
return planDescription;
}
public void setPlanDescription(String planDescription) {
this.planDescription = planDescription;
}
public String getCycle() {
return cycle;
}
public void setCycle(String cycle) {
this.cycle = cycle;
}
public String getFrequency() {
return frequency;
}
public void setFrequency(String frequency) {
this.frequency = frequency;
}
public String getFrequencyUnit() {
return frequencyUnit;
}
public void setFrequencyUnit(String frequencyUnit) {
this.frequencyUnit = frequencyUnit;
}
public String getHandle() {
return handle;
}
public void setHandle(String handle) {
this.handle = handle;
}
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
public String getTaskNo() {
return taskNo;
}
public void setTaskNo(String taskNo) {
this.taskNo = taskNo;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getResourceInspectPlanBo() {
return resourceInspectPlanBo;
}
public void setResourceInspectPlanBo(String resourceInspectPlanBo) {
this.resourceInspectPlanBo = resourceInspectPlanBo;
}
public String getInspectionItemBo() {
return inspectionItemBo;
}
public void setInspectionItemBo(String inspectionItemBo) {
this.inspectionItemBo = inspectionItemBo;
}
public String getResourceBo() {
return resourceBo;
}
public void setResourceBo(String resourceBo) {
this.resourceBo = resourceBo;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public LocalDateTime getTaskCreateDate() {
return taskCreateDate;
}
public void setTaskCreateDate(LocalDateTime taskCreateDate) {
this.taskCreateDate = taskCreateDate;
}
public LocalDateTime getPlanStartDate() {
return planStartDate;
}
public void setPlanStartDate(LocalDateTime planStartDate) {
this.planStartDate = planStartDate;
}
public LocalDateTime getPlanCompleteDate() {
return planCompleteDate;
}
public void setPlanCompleteDate(LocalDateTime planCompleteDate) {
this.planCompleteDate = planCompleteDate;
}
public LocalDateTime getActualStartDate() {
return actualStartDate;
}
public void setActualStartDate(LocalDateTime actualStartDate) {
this.actualStartDate = actualStartDate;
}
public LocalDateTime getActualCompleteDate() {
return actualCompleteDate;
}
public void setActualCompleteDate(LocalDateTime actualCompleteDate) {
this.actualCompleteDate = actualCompleteDate;
}
public String getExecutor() {
return executor;
}
public void setExecutor(String executor) {
this.executor = executor;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public LocalDateTime getCompareStartTime() {
return compareStartTime;
}
public void setCompareStartTime(LocalDateTime compareStartTime) {
this.compareStartTime = compareStartTime;
}
public LocalDateTime getCompareEndTime() {
return compareEndTime;
}
public void setCompareEndTime(LocalDateTime compareEndTime) {
this.compareEndTime = compareEndTime;
}
public String getCurrentUser() {
return currentUser;
}
public void setCurrentUser(String currentUser) {
this.currentUser = currentUser;
}
public String getResourceTypeNo() {
return resourceTypeNo;
}
public void setResourceTypeNo(String resourceTypeNo) {
this.resourceTypeNo = resourceTypeNo;
}
public String getResourceTypeDescription() {
return resourceTypeDescription;
}
public void setResourceTypeDescription(String resourceTypeDescription) {
this.resourceTypeDescription = resourceTypeDescription;
}
public String getResourceTypeBo() {
return resourceTypeBo;
}
public void setResourceTypeBo(String resourceTypeBo) {
this.resourceTypeBo = resourceTypeBo;
}
public String getWorkCenter() {
return workCenter;
}
public void setWorkCenter(String workCenter) {
this.workCenter = workCenter;
}
}

@ -46,6 +46,8 @@ public class NcCodeController {
public R getNcCodeList(NcCode ncCode){
List<NcCode> result;
QueryWrapper<NcCode> queryWrapper = new QueryWrapper<>();
String site = CommonMethods.getSite();
ncCode.setSite(site);
queryWrapper.setEntity(ncCode);
result = ncCodeService.list(queryWrapper);
return R.ok(result);

@ -46,6 +46,8 @@ public class NcGroupController {
public R getNcGroupList(NcGroup ncGroup){
List<NcGroup> result;
QueryWrapper<NcGroup> queryWrapper = new QueryWrapper<>();
String site = CommonMethods.getSite();
ncGroup.setSite(site);
queryWrapper.setEntity(ncGroup);
result = ncGroupService.list(queryWrapper);
return R.ok(result);

@ -62,7 +62,28 @@ public class SfcController {
result = sfcService.list(queryWrapper);
return R.ok(result);
}
/**
*
*
* @param frontPage
* @return
*/
@ResponseBody
@GetMapping("/pageByResrce")
public R page(FrontPage<Sfc> frontPage, SfcDto sfc){
IPage result;
try {
String site = CommonMethods.getSite();
sfc.setSite(site);
QueryWrapper<SfcDto> queryWrapper = new QueryWrapper<>();
queryWrapper.setEntity(sfc);
result = sfcService.pageByResrce(frontPage.getPagePlus(), queryWrapper);
} catch (Exception e) {
return R.failed(e.getMessage());
}
return R.ok(result);
}
/**
*
*

@ -23,4 +23,6 @@ public interface OperationMapper extends BaseMapper<Operation> {
Operation selectOperationBySfcBo(@Param("sfcBo") String sfcBo, @Param("locale") String locale);
Operation getCurrentRevisionRef(@Param("site") String site, @Param("operation") String operation);
}

@ -1,5 +1,8 @@
package com.foreverwin.mesnac.meapi.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@ -24,4 +27,8 @@ public interface SfcMapper extends BaseMapper<Sfc> {
List<Sfc> getSfcListByResrceBO(String resrceBO);
SfcDto findSfcData(@Param("site") String site, @Param("sfc") String sfc);
Sfc findBySfc(@Param("sfc") Sfc sfc);
IPage pageByResrce(Page<Sfc> pagePlus,@Param("ew") QueryWrapper<SfcDto> queryWrapper,@Param("locale")String locale);
}

@ -26,4 +26,6 @@ public interface OperationService extends IService<Operation> {
IPage<Operation> selectPage(Page<Operation> page, QueryWrapper<Operation> operation);
List<Operation> selectList(Operation operation);
Operation getCurrentRevisionRef(String site, String operation);
}

@ -1,7 +1,10 @@
package com.foreverwin.mesnac.meapi.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.foreverwin.modular.core.util.FrontPage;
@ -17,6 +20,7 @@ import java.util.List;
* @since 2021-06-02
*/
public interface SfcService extends IService<Sfc> {
IPage<Sfc> pageByResrce(Page<Sfc> pagePlus, QueryWrapper<SfcDto> queryWrapper);
/**
*
@ -45,4 +49,5 @@ public interface SfcService extends IService<Sfc> {
* @return
*/
SfcDto findSfcData(String site, String sfc);
}

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.foreverwin.mesnac.meapi.mapper.OperationMapper;
import com.foreverwin.mesnac.meapi.model.Operation;
import com.foreverwin.mesnac.meapi.service.OperationService;
import com.foreverwin.modular.core.exception.BaseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
@ -46,5 +47,14 @@ public class OperationServiceImpl extends ServiceImpl<OperationMapper, Operation
return super.list(queryWrapper);
}
@Override
public Operation getCurrentRevisionRef(String site,String operation) {
Operation currentRevisionRef = operationMapper.getCurrentRevisionRef(site, operation);
if (currentRevisionRef==null){
throw new BaseException("未找到工序的当前版本");
}
return currentRevisionRef;
}
}

@ -1,5 +1,6 @@
package com.foreverwin.mesnac.meapi.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.modular.core.util.FrontPage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -9,6 +10,7 @@ import com.foreverwin.mesnac.meapi.mapper.SfcMapper;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.foreverwin.mesnac.meapi.service.SfcService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -29,6 +31,11 @@ public class SfcServiceImpl extends ServiceImpl<SfcMapper, Sfc> implements SfcSe
@Autowired
private SfcMapper sfcMapper;
@Override
public IPage pageByResrce(Page<Sfc> pagePlus, QueryWrapper<SfcDto> queryWrapper) {
return sfcMapper.pageByResrce(pagePlus, queryWrapper, LocaleContextHolder.getLocale().getLanguage());
}
@Override
public IPage<Sfc> selectPage(FrontPage<Sfc> frontPage, Sfc sfc) {
QueryWrapper<Sfc> queryWrapper = new QueryWrapper<>();

@ -183,12 +183,12 @@
<if test="ew.entity.dpmoCategoryBo!=null"> AND DPMO_CATEGORY_BO=#{ew.entity.dpmoCategoryBo}</if>
</if>
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
${ew.sqlSegment}
AND ${ew.sqlSegment}
</if>
</if>
</where>
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
${ew.sqlSegment}
AND ${ew.sqlSegment}
</if>
</select>

@ -180,12 +180,12 @@
<if test="ew.entity.modifiedDateTime!=null"> AND MODIFIED_DATE_TIME=#{ew.entity.modifiedDateTime}</if>
</if>
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
${ew.sqlSegment}
AND ${ew.sqlSegment}
</if>
</if>
</where>
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
${ew.sqlSegment}
AND ${ew.sqlSegment}
</if>
</select>

@ -598,11 +598,21 @@
<!-- BaseMapper标准查询/修改/删除 -->
<select id="selectOperationBySfcBo" resultMap="BaseResultMap">
SELECT OP.HANDLE, OP.OPERATION,OT.DESCRIPTION FROM SFC_ROUTING SR
SELECT OP.HANDLE, OP.OPERATION,OT.DESCRIPTION ,SS.STEP_ID FROM SFC_ROUTING SR
JOIN SFC_ROUTER SR2 ON SR.HANDLE =SR2.SFC_ROUTING_BO AND SR2.IN_USE = 'true'
JOIN SFC_STEP SS ON SR2.HANDLE =SS.SFC_ROUTER_BO
JOIN OPERATION OP ON 'OperationBO:'|| OP.SITE ||','|| OP.OPERATION||',#'=SS.OPERATION_BO
LEFT JOIN OPERATION_T OT ON OP.HANDLE = OT.OPERATION_BO AND OT.LOCALE = #{locale}
WHERE SR.SFC_BO =#{sfcBo} AND (SS.QTY_IN_QUEUE>0 or SS.QTY_IN_WORK>0)
</select>
<select id="getCurrentRevisionRef" resultMap="BaseResultMap">
SELECT
HANDLE,OPERATION,
REVISION
FROM OPERATION
WHERE SITE = #{site}
AND OPERATION = #{operation}
AND CURRENT_REVISION = 'true'
</select>
</mapper>

@ -663,4 +663,12 @@
LEFT JOIN OPERATION_T OTT ON SPLIT(OTT.OPERATION_BO,2) = ZSD.PREPOSITION_OPERATION AND OTT.LOCALE = 'zh'
WHERE SC.SITE = #{site} AND SC.SFC = #{sfc}
</select>
<select id="pageByResrce" resultMap="FullResultMap">
SELECT S.SFC,S.QTY,IT.DESCRIPTION ITEM_DESCRIPTION FROM SFC S
LEFT JOIN ITEM_T IT ON S.ITEM_BO=IT.HANDLE AND IT.LOCALE=#{locale}
JOIN Z_SFC_DISPATCH zsd ON S.SFC=zsd.SFC AND S.SITE=zsd.SITE
WHERE S.SITE=#{ew.entity.site} AND ZSD.RESRCE=#{ew.entity.resrce} AND ZSD.DISPATCH_STATUS!='CANCEL'
AND S.STATUS_BO IN ('StatusBO:'||#{ew.entity.site}||',401','StatusBO:'||#{ew.entity.site}||',402','StatusBO:'||#{ew.entity.site}||',403')
</select>
</mapper>

@ -9,6 +9,9 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@RequestMapping("/sfcDataMains")
public class PodTemplateController {
@ -37,4 +40,27 @@ public class PodTemplateController {
public R sfcEnter(SfcDto sfcDto) {
return R.ok(podTemplateService.sfcEnter(sfcDto));
}
/**
* sfc
* @param sfcDtoList
* @return
*/
@ResponseBody
@GetMapping("/sfcStart")
public R sfcStart(List<SfcDto> sfcDtoList) {
podTemplateService.sfcStart(sfcDtoList);
return R.ok();
}
/**
*
* @param sfcDto
* @return
*/
@ResponseBody
@GetMapping("/getSfcInfo")
public R getSfcInfo(SfcDto sfcDto) {
return R.ok(podTemplateService.getSfcInfo(sfcDto));
}
}

@ -39,8 +39,6 @@ public interface SfcCrossMapper extends BaseMapper {
*/
List<StepOperation> findRouterOperationByRouterBo(@Param("site") String site, @Param("routerBo") String routerBo, @Param("locale") String locale);
// String getDoneSfcItemBo(IPage page, @Param("dataAttr") String dataAttr,
// @Param("site") String site, @Param("statusBo") String statusBo);
/**
@ -60,7 +58,6 @@ public interface SfcCrossMapper extends BaseMapper {
List<ShopOrder> findShopOrderListByStatus(@Param("plannedWorkCenterBo") String plannedWorkCenterBo,
@Param("status") String customStatus);
//List<Map<String, Object>> findSfcListBySnList(@Param("site") String site, @Param("snList") List<String> snList);
/**
* 线
@ -93,5 +90,7 @@ public interface SfcCrossMapper extends BaseMapper {
Map<String, Object> querySfcData(@Param("site")String site, @Param("locale")String locale, @Param("dto")SfcDto sfcDto);
List<Map<String, Object>> querySfcStep(@Param("site")String site, @Param("sfc")String sfc, @Param("operation")String operation);
Map<String, Object> getSfcInfo(@Param("site")String site, @Param("sfc")String sfc, @Param("operation")String operation);
Integer getSfcDispatch(@Param("site") String site, @Param("sfc") String sfc, @Param("operation") String operation, @Param("stepId") String stepId,@Param("resrce")String resrce);
}

@ -3,10 +3,15 @@ package com.foreverwin.mesnac.production.service;
import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.mesnac.meapi.dto.WorkCenterDto;
import java.util.List;
import java.util.Map;
public interface PodTemplateService {
Map<String, Object> resrceEnter(WorkCenterDto workCenterDto);
Map<String, Object> sfcEnter(SfcDto workCenterDto);
Object getSfcInfo(SfcDto sfcDto);
void sfcStart(List<SfcDto> sfcDto);
}

@ -0,0 +1,44 @@
package com.foreverwin.mesnac.production.service;
import java.math.BigDecimal;
/**
* :
* : philip
* : 2021-6-30
*/
public interface SfcCrossService {
/**
*
* @param site
* @param operationRef
* @param resource
* @param sfcRef
* @param qty
* @throws Exception
*/
void startAction(String site, String operationRef, String resource, String sfcRef, BigDecimal qty) throws Exception;
/**
*
* @param site
* @param operationRef
* @param resource
* @param sfcRef
* @param qty
* @throws Exception
*/
void completeAction(String site, String operationRef, String resource, String sfcRef, BigDecimal qty) throws Exception;
/**
* SFC
* @param site
* @param operationRef
* @param resource
* @param sfcRef
* @param qty
* @throws Exception
*/
void passAction(String site, String operationRef, String resource, String sfcRef, BigDecimal qty) throws Exception;
}

@ -2,16 +2,19 @@ package com.foreverwin.mesnac.production.service.impl;
import com.foreverwin.mesnac.common.enums.HandleEnum;
import com.foreverwin.mesnac.common.service.CommonService;
import com.foreverwin.mesnac.common.util.ExceptionUtil;
import com.foreverwin.mesnac.common.util.StringUtil;
import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.mesnac.meapi.dto.WorkCenterDto;
import com.foreverwin.mesnac.meapi.model.Operation;
import com.foreverwin.mesnac.meapi.model.Resrce;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.foreverwin.mesnac.meapi.service.OperationService;
import com.foreverwin.mesnac.meapi.service.ResrceService;
import com.foreverwin.mesnac.meapi.service.SfcService;
import com.foreverwin.mesnac.production.mapper.SfcCrossMapper;
import com.foreverwin.mesnac.production.service.PodTemplateService;
import com.foreverwin.mesnac.production.service.SfcCrossService;
import com.foreverwin.modular.core.exception.BaseException;
import com.foreverwin.modular.core.util.CommonMethods;
import org.springframework.beans.factory.annotation.Autowired;
@ -19,6 +22,8 @@ import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -35,24 +40,27 @@ public class PodTemplateServiceImpl implements PodTemplateService {
private CommonService commonService;
@Autowired
private SfcCrossMapper sfcCrossMapper;
@Autowired
private SfcCrossService sfcCrossService;
@Autowired
private OperationService operationService;
@Override
public Map<String, Object> resrceEnter(WorkCenterDto workCenterDto) {
String site = CommonMethods.getSite();
String resrce = workCenterDto.getResrce();
String resrceBO = HandleEnum.RESOURCE.getHandle(site, resrce);
Resrce model = resrceService.getById(resrceBO);
if (model==null){
throw new BaseException("资源 "+resrce+" 不存在");
if (model == null) {
throw new BaseException("资源 " + resrce + " 不存在");
}
String workCenter = workCenterDto.getWorkCenter();
//校验
String workShopBo = commonService.getWorkShopBo(resrceBO);
if (StringUtil.isBlank(workShopBo)){
throw new BaseException("资源 "+resrce+" 未匹配到车间");
if (StringUtil.isBlank(workShopBo)) {
throw new BaseException("资源 " + resrce + " 未匹配到车间");
}
if (!workCenter.equals(StringUtil.trimHandle(workShopBo))){
throw new BaseException("资源 "+resrce+" 与车间不匹配");
if (!workCenter.equals(StringUtil.trimHandle(workShopBo))) {
throw new BaseException("资源 " + resrce + " 与车间不匹配");
}
//查询在该设备存在活动中的SFC
@ -70,26 +78,36 @@ public class PodTemplateServiceImpl implements PodTemplateService {
String sfc = sfcDto.getSfc();
String operation = sfcDto.getOperation();
String locale = LocaleContextHolder.getLocale().getLanguage();
String resrce = sfcDto.getResrce();
//校验产品条码是否存在
Sfc sfcById = sfcService.getById(HandleEnum.SFC.getHandle(site, sfc));
if (sfcById==null){
throw new BaseException("产品条码"+sfc+"不存在");
if (sfcById == null) {
throw new BaseException("产品条码" + sfc + "不存在");
}
String status = StringUtil.trimHandle(sfcById.getStatusBo());
if (!status.equals("403") && !status.equals("401") && !status.equals("402")) {
throw new BaseException("产品条码" + sfc + "不在工作中或排队中");
}
//校验产品条码是否在当前工序排队
Operation operationBySfcBo = commonService.getOperationBySfcBo(sfcById.getHandle());
if (StringUtil.notBlank(operation)&&!operationBySfcBo.getOperation().equals(operation)){
/* if (StringUtil.notBlank(operation)&&!operationBySfcBo.getOperation().equals(operation)){
throw new BaseException("产品条码"+sfc+"在"+operationBySfcBo.getOperation()+"/"+operationBySfcBo.getDescription()+"工序");
}
}*/
//校验SFC+工序+设备+STEP_ID是否与当前设备确认的派工单匹配
Integer integer = sfcCrossMapper.getSfcDispatch(site, sfc, operationBySfcBo.getOperation(), operationBySfcBo.getStepId(), resrce);
if (integer < 1) {
throw new BaseException("产品条码与当前设备工序确认的派工单不匹配");
}
String substep = "";
String substepHandle = "";
//构造前台所需要的数据
Map<String, Object> resultMap = sfcCrossMapper.querySfcData(site,locale,sfcDto);
if(resultMap == null){
Map<String, Object> resultMap = sfcCrossMapper.querySfcData(site, locale, sfcDto);
if (resultMap == null) {
throw new BaseException("根据当前资源未找到条码[" + sfc + "]的基本信息!");
}
List<Map<String, Object>> substepList = sfcCrossMapper.querySfcStep(site, sfc, operation);
//List<Map<String, Object>> substepList = sfcCrossMapper.querySfcStep(site, sfc, operationBySfcBo.getOperation());
List<Map<String, Object>> substepList = new ArrayList<>();
resultMap.put("SFC_STEP_LIST", substepList);
String stepId = (String) resultMap.get("STEP_ID");
@ -194,6 +212,33 @@ public class PodTemplateServiceImpl implements PodTemplateService {
}*/
resultMap.put("IS_CREATE_H", isCreateH);
resultMap.put("IS_CREATE_Z", isCreateZ);
return null;
return resultMap;
}
@Override
public Object getSfcInfo(SfcDto sfcDto) {
String site = CommonMethods.getSite();
String operation = sfcDto.getOperation();
String sfc = sfcDto.getSfc();
Map<String, Object> substepList = sfcCrossMapper.getSfcInfo(site, sfc, operation);
return substepList;
}
@Override
public void sfcStart(List<SfcDto> sfcDtoList) {
sfcDtoList.forEach(sfcDto -> {
String site = CommonMethods.getSite();
String operation = sfcDto.getOperation();
Operation currentRevisionRef = operationService.getCurrentRevisionRef(site, operation);
String resrce = sfcDto.getResrce();
String sfc = sfcDto.getSfc();
Sfc sfcServiceById = sfcService.getById(HandleEnum.SFC.getHandle(sfc, sfc));
BigDecimal qty=new BigDecimal(sfcServiceById.getQty().toString());
try {
sfcCrossService.startAction(site, currentRevisionRef.getHandle(),resrce,sfcServiceById.getHandle(),qty);
} catch (Exception e) {
ExceptionUtil.throwException(e);
}
});
}
}

@ -0,0 +1,64 @@
package com.foreverwin.mesnac.production.service.impl;
import com.foreverwin.mesnac.production.service.SfcCrossService;
import com.foreverwin.modular.core.meext.MEServices;
import com.foreverwin.modular.core.util.CommonMethods;
import com.sap.me.plant.ResourceBOHandle;
import com.sap.me.production.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
/**
* :
* : philip
* : 2021-06-30
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class SfcCrossServiceImpl implements SfcCrossService {
@Override
public void startAction(String site, String operationRef,
String resource, String sfcRef, BigDecimal qty) throws Exception {
SfcStartServiceInterface sfcStartService = MEServices.create("com.sap.me.production", "SfcStartService", site);
StartSfcRequest paramStartSfcRequest = new StartSfcRequest();
paramStartSfcRequest.setQty(qty);
paramStartSfcRequest.setOperationRef(operationRef);
paramStartSfcRequest.setResourceRef(new ResourceBOHandle(site, resource).getValue());
paramStartSfcRequest.setSfcRef(sfcRef);
paramStartSfcRequest.setUserRef(CommonMethods.getUserBo());
sfcStartService.startSfc(paramStartSfcRequest);
}
@Override
public void completeAction(String site, String operationRef,
String resource, String sfcRef, BigDecimal qty) throws Exception {
SfcCompleteServiceInterface sfcCompleteService = MEServices.create("com.sap.me.production", "SfcCompleteService", site);
CompleteSfcRequest paramCompleteSfcRequest = new CompleteSfcRequest();
paramCompleteSfcRequest.setOperationRef(operationRef);
paramCompleteSfcRequest.setResourceRef(new ResourceBOHandle(site, resource).getValue());
paramCompleteSfcRequest.setSfcRef(sfcRef);
if(qty != null) {
paramCompleteSfcRequest.setQuantity(qty);
}
paramCompleteSfcRequest.setLocation("");
sfcCompleteService.completeSfc(paramCompleteSfcRequest);
}
@Override
public void passAction(String site, String operationRef,
String resource, String sfcRef, BigDecimal qty) throws Exception {
SfcCompleteServiceInterface sfcCompleteService = MEServices.create("com.sap.me.production", "SfcCompleteService", site);
CompleteSfcQuickRequest paramCompleteSfcRequest = new CompleteSfcQuickRequest();
paramCompleteSfcRequest.setOperationRef(operationRef);
paramCompleteSfcRequest.setResourceRef(new ResourceBOHandle(site, resource).getValue());
paramCompleteSfcRequest.setSfcRef(sfcRef);
if(qty != null) {
paramCompleteSfcRequest.setQuantity(qty);
}
sfcCompleteService.completeSfcQuick(paramCompleteSfcRequest);
}
}

@ -139,8 +139,8 @@ WHERE sfc.site = #{site} and
RO_CF2.VALUE TOOL ,SOD.HANDLE SFC_DISPATCH_DETAIL_BO,
S.SFC,S.QTY SFC_QTY,RS.STEP_ID, SOD.DISPATCH_NO ,
TO_CHAR( SOD.PLANNED_START_DATE + INTERVAL '8' HOUR,'yyyy-mm-dd hh24:mi:ss')START_DATE,
TO_CHAR(SOD.PLANNED_COMPLETE_DATE + INTERVAL '8' HOUR ,'yyyy-mm-dd hh24:mi:ss')COMP_DATE,
TO_CHAR((SOD.PLANNED_COMPLETE_DATE - SOD.PLANNED_START_DATE )*24,'fm9999999990.00')||'H' ADD_DATE,
TO_CHAR(SOD.PLANNED_COMP_DATE + INTERVAL '8' HOUR ,'yyyy-mm-dd hh24:mi:ss')COMP_DATE,
TO_CHAR((SOD.PLANNED_COMP_DATE - SOD.PLANNED_START_DATE )*24,'fm9999999990.00')||'H' ADD_DATE,
CASE WHEN OT.DESCRIPTION LIKE 'CH%' THEN SUBSTR(OT.DESCRIPTION, 0, 3) ELSE N'' END SLOT
FROM SFC S
INNER JOIN STATUS ST ON ST.HANDLE = S.STATUS_BO
@ -159,7 +159,7 @@ WHERE sfc.site = #{site} and
INNER JOIN ITEM I ON I.HANDLE = S.ITEM_BO
LEFT JOIN ITEM_T IT ON IT.ITEM_BO = I.HANDLE AND IT.LOCALE =#{locale}
INNER JOIN (
SELECT SD.HANDLE, SD.SFC,SD.RESRCE,SD.OPERATION,SD.STEP_ID,SD.PLANNED_COMPLETE_DATE, SD.PLANNED_START_DATE,SD.DISPATCH_NO
SELECT SD.HANDLE, SD.SFC,SD.RESRCE,SD.OPERATION,SD.STEP_ID,SD.PLANNED_COMP_DATE, SD.PLANNED_START_DATE,SD.DISPATCH_NO
FROM Z_PROD_READY_TASK RB
INNER JOIN Z_SFC_DISPATCH SD ON SD.HANDLE = RB.SFC_DISPATCH_BO
WHERE RB.SITE =#{site} AND RB.STATUS = 'F'
@ -170,42 +170,28 @@ WHERE sfc.site = #{site} and
OP.OPERATION, OT.DESCRIPTION ,OP.OPERATION||'/'||RS.STEP_ID ,RO_CF2.VALUE,
S.SFC,S.QTY ,RS.STEP_ID,SOD.DISPATCH_NO , SOD.HANDLE ,
TO_CHAR( SOD.PLANNED_START_DATE + INTERVAL '8' HOUR,'yyyy-mm-dd hh24:mi:ss'),
TO_CHAR(SOD.PLANNED_COMPLETE_DATE + INTERVAL '8' HOUR,'yyyy-mm-dd hh24:mi:ss'),
TO_CHAR((SOD.PLANNED_COMPLETE_DATE - SOD.PLANNED_START_DATE )*24,'fm9999999990.00')||'H',
TO_CHAR(SOD.PLANNED_COMP_DATE + INTERVAL '8' HOUR,'yyyy-mm-dd hh24:mi:ss'),
TO_CHAR((SOD.PLANNED_COMP_DATE - SOD.PLANNED_START_DATE )*24,'fm9999999990.00')||'H',
CASE WHEN OT.DESCRIPTION LIKE 'CH%' THEN SUBSTR(OT.DESCRIPTION, 0, 3) ELSE N'' END
</select>
<select id="querySfcStep" resultType="map">
SELECT B1.OPERATION,B1.STEP_ID,B1.DESCRIPTION STEP_DESC,B1.STATE,
B1.HANDLE,B1."SEQUENCE",
CASE WHEN B1."SEQUENCE"=B1.MAXSEQ THEN 'true'
ELSE 'false' END IS_SEQTRUE,B1.LONG_DESCRIPTION,
CASE WHEN B1.STATE ='FINISHED' THEN N'已完工'
WHEN B1."SEQUENCE"=B1.MAXSEQ AND B1.STATE ='READY' AND B1.STATUS ='403' THEN N'加工中'
ELSE N'未加工'
END STEP_STATUS
FROM (
SELECT A1.*,MAX(A1.SELECTSEQ) OVER(PARTITION BY OPERATION) MAXSEQ
FROM (
SELECT O.OPERATION,SST.SUBSTEP STEP_ID,SS.STATE,
NVL(SST.DESCRIPTION,SU.DESCRIPTION) DESCRIPTION,
CASE WHEN SS.STATE ='FINISHED' THEN N'已完工' ELSE N'加工中' END STEP_STATUS,
SS.HANDLE,SS."SEQUENCE",
CASE WHEN SS.STATE='FINISHED' THEN SST."SEQUENCE"+1 ELSE 0 END SELECTSEQ,ST.STATUS,
NVL(SST.LONG_DESCRIPTION,SU.LONG_DESCRIPTION) LONG_DESCRIPTION
FROM SFC_SUBSTEP SS
INNER JOIN SFC_STEP SSTEP ON SS.SFC_STEP_BO=SSTEP.HANDLE AND SSTEP.DONE='false'
AND (SSTEP.QTY_IN_QUEUE > 0 OR SSTEP.QTY_IN_WORK > 0)
INNER JOIN SFC_ROUTER SR ON SR.HANDLE=SSTEP.SFC_ROUTER_BO
INNER JOIN SFC_ROUTING SRI ON SRI.HANDLE=SR.SFC_ROUTING_BO
INNER JOIN ROUTER_SUBSTEP SST ON SS.ROUTER_SUBSTEP_BO = SST.HANDLE
LEFT JOIN SUBSTEP SU ON SU.SUBSTEP = SST.SUBSTEP AND SU.CURRENT_REVISION = 'true' AND SU.SITE = #{site}
INNER JOIN SFC S ON S.HANDLE=SRI.SFC_BO
INNER JOIN STATUS ST ON ST.HANDLE = S.STATUS_BO
INNER JOIN OPERATION O ON O.OPERATION=SPLIT(SSTEP.OPERATION_BO,2) AND O.SITE=S.SITE AND O.CURRENT_REVISION = 'true'
AND #{operation} IS NULL OR #{operation} = O.OPERATION)
WHERE S.SFC=#{sfc} AND S.SITE= #{site} ORDER BY SST."SEQUENCE"
) A1
) B1 ORDER BY B1."SEQUENCE" ASC
<select id="getSfcInfo" resultType="map">
SELECT O.OPERATION,SSTEP.STEP_ID,IT.DESCRIPTION,S.SFC,S.QTY,
CASE WHEN SSTEP.QTY_IN_WORK > 0 THEN '工作中'
WHEN SSTEP.QTY_IN_QUEUE > 0 THEN '排队中'
ELSE '新建' END STEP_STATUS
FROM SFC S
LEFT JOIN ITEM_T IT ON S.ITEM_BO=IT.HANDLE AND IT.LOCALE='zh'
INNER JOIN SFC_ROUTING SRI ON S.HANDLE=SRI.SFC_BO
INNER JOIN SFC_ROUTER SR ON SRI.HANDLE=SR.SFC_ROUTING_BO AND SR.IN_USE='true'
INNER JOIN ROUTER_STEP RS ON RS.ROUTER_BO=sr.ROUTER_BO
INNER JOIN SFC_STEP SSTEP ON SSTEP.SFC_ROUTER_BO=SR.HANDLE AND RS.STEP_ID= SSTEP.STEP_ID
AND (SSTEP.QTY_IN_QUEUE > 0 OR SSTEP.QTY_IN_WORK > 0)
INNER JOIN STATUS ST ON ST.HANDLE = S.STATUS_BO
INNER JOIN OPERATION O ON O.OPERATION=SPLIT(SSTEP.OPERATION_BO,2) AND O.SITE=S.SITE AND O.CURRENT_REVISION = 'true'
AND #{operation} = O.OPERATION
WHERE S.SFC=#{sfc} AND S.SITE=#{site}
</select>
<select id="getSfcDispatch" resultType="java.lang.Integer">
SELECT COUNT(HANDLE) FROM Z_SFC_DISPATCH zsd WHERE OPERATION= #{operation} AND SFC= #{sfc} AND STEP_ID= #{stepId} AND SITE= #{site} AND RESRCE=#{resrce}
</select>
</mapper>

Loading…
Cancel
Save