Bto增加圆整时间

tags/yfai-mes-ext-v1.0
administrator 11 months ago
parent 15a644c5a8
commit 3e262a7e6e

@ -44,21 +44,13 @@ public class MesBtoJobServiceImpl implements IMesBtoJobService {
log.info("客户的信息点{}不存在",prodGroup.getCustInfoPoint());
continue;
}
//3. 根据零件生产组中reuseSoftInfo 获取排序信息
// Integer isReuseSortInfo = prodGroup.getIsReuseSortInfo();
List<MesPartProdGroupDetail> details = mesPartProdGroupService.findDetailByCode(prodGroup.getPartProdGroupCode(), organizeCode);
List<String> custPartNoList = details.stream().map(MesPartProdGroupDetail::getCustPartNo).collect(Collectors.toList());
List<MesCustSortInfo> sortInfoList = mesCustSoftInfoService.queryCustSortInfoList(prodGroup.getCustCode(), prodGroup.getCustOrganizeCode(), prodGroup.getCustInfoPoint(), organizeCode, custPartNoList);
//4. 如果没有订单需要更新窗口时间 TM_BAS_PRODUCT_GROUP_WINDOW_TIME
//5. 根据零件生产组中是否有assyCode(总成类型),去校验 客户排序信息中,是否包含了零件发运组的零件
// custsortinfolist.where(c=> partproductgroupinfo.AssCode.contains(c.AssCode)) == 0 直接返回
// List<MesCustSortInfo> countInfo = sortInfoList.stream().filter(item -> item.getAssyCode().equals(prodGroup.getPartType())).collect(Collectors.toList());
// if (countInfo.isEmpty()){
// continue;
// }
if (sortInfoList.isEmpty()){
log.info("当前零件生产组:{}没有排序信息",prodGroup.getPartProdGroupName());
continue;
}
//6. 根据零件生产组的RoundnessType 去做策略,现在只做 窗口时间 策略; 入参

@ -23,10 +23,7 @@ import org.springframework.stereotype.Service;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -64,11 +61,21 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
@Autowired
private MesShiftRepository mesShiftRao;
@Autowired
private MesPartProdGroupWindowTimeRepository windowTimeRao;
@Override
public void execute(MesPartProdGroup partProdGroup, List<MesCustSortInfo> sortInfoList, List<MesPartProdGroupDetail> details) {
try { //4. 如果没有订单需要更新窗口时间 TM_BAS_PRODUCT_GROUP_WINDOW_TIME
MesPartProdGroupWindowTime time = getWindowTimeByProductGroup(partProdGroup.id, partProdGroup.getOrganizeCode());
if (Objects.isNull(time)) {
log.info("当前零件生产组:{}没有维护时间窗口", partProdGroup.getPartProdGroupName());
return;
}
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Long createSeq = Long.parseLong(dateFormat.format(new Date()));
try {
//遍历零件生产组零件,过滤出
for (MesPartProdGroupDetail detail : details) {
//根据detail.id 获取
@ -105,7 +112,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
//工单号生成规则 【工厂号+yyyyMMdd+5位流水】
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_CENTER_ORDER_NO);
genSerialNoModel.setPartNo(detail.getWorkCenterCode());
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, "JOB", detail.getOrganizeCode(), 1).getResultList();
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, "edi", detail.getOrganizeCode(), 1).getResultList();
// GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO);
// List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel,"JOB", detail.getOrganizeCode(), 1).getResultList();
mesWorkOrder.setWorkOrderNo(resultList.get(0));
@ -184,11 +191,11 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
mesWorkOrder.setQty(realQty);
mesWorkOrder.setUnCompleteQty(realQty);
mesWorkOrder.setUnit(mesPartSap.getUnit());
// if (partProdGroup.getIsAutoRelease() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
// mesWorkOrder.setStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
// } else {
// mesWorkOrder.setStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
// }
if (partProdGroup.getIsAutoRelease() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
} else {
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
}
mesWorkOrder.setPartProdGroupCode(partProdGroup.getPartProdGroupCode());
//bto
@ -209,13 +216,53 @@ public class MesTimeRoundnessService implements IRoundnessStrategy {
}
}
} catch (ParseException e) {
throw new RuntimeException(e);
ConvertBean.saveOrUpdate(time, "JOB");
time.setLastRunTime(TimeTool.getNowTime(true));
windowTimeRao.update(time);
} catch (Exception e) {
log.error("创建工单报错:{}", Arrays.toString(e.getStackTrace()));
}
}
private MesPartProdGroupWindowTime getWindowTimeByProductGroup(Long partProdGroupId, String organizeCode) throws ParseException {
DdlPackBean windowTimPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(partProdGroupId, "pid", windowTimPackBean);
List<MesPartProdGroupWindowTime> windowTimeList = windowTimeRao.findByHqlWhere(windowTimPackBean);
if (windowTimeList.isEmpty()) {
return null;
}
//获取当前时间的HH mm
Date now = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
String hour = calendar.get(Calendar.HOUR_OF_DAY) + ""; // 获取小时24小时制
String minute = calendar.get(Calendar.MINUTE) + "";
String nowTime = hour + minute;
//遍历窗口时间获取最新的窗口时间
String nowTimeStr = String.format("%04d", Integer.parseInt(nowTime));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<MesPartProdGroupWindowTime> sortedTime = windowTimeList.stream().sorted(Comparator.comparing(MesPartProdGroupWindowTime::getWindowTime)).collect(Collectors.toList());
for (MesPartProdGroupWindowTime time : sortedTime) {
if (nowTimeStr.compareTo(time.getWindowTime()) < 0) {
continue;
}
calendar.set(Calendar.HOUR, Integer.parseInt(time.getWindowTime().substring(0, 2)));
calendar.set(Calendar.MINUTE, Integer.parseInt(time.getWindowTime().substring(2, 4)));
Date dateCreateOrder = calendar.getTime();
if (Objects.isNull(time.getLastRunTime())){
return time;
}
Date lastRunTime = sdf.parse(time.getLastRunTime());
if (dateCreateOrder.compareTo(lastRunTime) < 0) {
continue;
}
return time;
}
return null;
}
private MesProdGroupPartBtoCount getByGroupPartId(Long groupPartId, String organizeCode) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(groupPartId, "groupPartId", ddlPackBean);

Loading…
Cancel
Save