|
|
|
@ -0,0 +1,137 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesCorssOrganizeErrorProofingService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCorssOrganizeErrorProofingDao;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
|
|
|
|
|
import cn.estsh.i3plus.mes.apiservice.util.DateUtil;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofing;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofingLog;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.IMesCorssOrganizeErrorProofingLogRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description : 跨工厂防错
|
|
|
|
|
* @Reference :
|
|
|
|
|
* @Author : junsheng.li
|
|
|
|
|
* @CreateDate 2024/7/4 16:50
|
|
|
|
|
* @Modify:
|
|
|
|
|
**/
|
|
|
|
|
@Service
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class MesCorssOrganizeErrorProofingServiceImpl extends BaseMesService<MesCorssOrganizeErrorProofing> implements IMesCorssOrganizeErrorProofingService {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesCorssOrganizeErrorProofingDao mesCorssOrganizeErrorProofingDao;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesProduceSnRepository mesProduceSnRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesCorssOrganizeErrorProofingLogRepository mesCorssOrganizeErrorProofingLogRepository;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void setPackQueryBean(MesCorssOrganizeErrorProofing bean, DdlPackBean packBean) {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getSrcOrganizeCode(), "srcOrganizeCode", packBean);
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(bean.getPartName(), "partName", packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void onInsertBean(MesCorssOrganizeErrorProofing item) {
|
|
|
|
|
// 数据校验
|
|
|
|
|
checkData(item);
|
|
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getSrcOrganizeCode(), "srcOrganizeCode", packBean);
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(item.getPartNo(), "partNo", packBean);
|
|
|
|
|
if (baseRDao.isExitByHql(packBean)) {
|
|
|
|
|
MesException.throwMesBusiException("源工厂代码【%s】物料【%s】,数据已存在", item.getSrcOrganizeCode(), item.getPartNo());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void onUpdateBean(MesCorssOrganizeErrorProofing item) {
|
|
|
|
|
// 数据校验
|
|
|
|
|
checkData(item);
|
|
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getSrcOrganizeCode(), "srcOrganizeCode", packBean);
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(item.getPartNo(), "partNo", packBean);
|
|
|
|
|
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", packBean);
|
|
|
|
|
if (baseRDao.isExitByHql(packBean)) {
|
|
|
|
|
MesException.throwMesBusiException("源工厂代码【%s】物料【%s】,数据已存在", item.getSrcOrganizeCode(), item.getPartNo());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doMesCorssOrganizeErrorProofing(String organizeCode, Integer pageSize, String userName) {
|
|
|
|
|
List<MesCorssOrganizeErrorProofing> corssOrganizeErrorProofingList = baseRDao.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode));
|
|
|
|
|
if (CollectionUtils.isEmpty(corssOrganizeErrorProofingList)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//循环处理数据
|
|
|
|
|
for (MesCorssOrganizeErrorProofing organizeErrorProofing : corssOrganizeErrorProofingList) {
|
|
|
|
|
//查询待同步的数据
|
|
|
|
|
List<MesProduceSn> produceSnList = mesCorssOrganizeErrorProofingDao.findMesProduceSnByOrganizeCodeAndPart(organizeErrorProofing, pageSize);
|
|
|
|
|
int transSize = 0;
|
|
|
|
|
if (!CollectionUtils.isEmpty(produceSnList)) {
|
|
|
|
|
//插入条码
|
|
|
|
|
insertMesProduceSn(organizeErrorProofing, produceSnList);
|
|
|
|
|
//最后同步条码创建时间
|
|
|
|
|
String createDatetime = produceSnList.get(produceSnList.size() - 1).getCreateDatetime();
|
|
|
|
|
organizeErrorProofing.setLastCreateDatetime(TimeTool.pareDateToString(DateUtil.addMinutes(TimeTool.parseDate(createDatetime), -10)));
|
|
|
|
|
transSize = produceSnList.size();
|
|
|
|
|
}
|
|
|
|
|
organizeErrorProofing.setLastExeTime(TimeTool.getNowTime(true));
|
|
|
|
|
//更新数据
|
|
|
|
|
baseRDao.update(organizeErrorProofing);
|
|
|
|
|
//保存记录
|
|
|
|
|
saveLog(userName, organizeErrorProofing, transSize);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkData(MesCorssOrganizeErrorProofing item) {
|
|
|
|
|
ValidatorBean.checkNotNull(item.getSrcOrganizeCode(), "源工厂代码不能为空");
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
|
|
|
|
|
if (item.getSrcOrganizeCode().equalsIgnoreCase(item.getOrganizeCode())) {
|
|
|
|
|
MesException.throwMesBusiException("源工厂代码不能和目标工厂代码一样");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void saveLog(String userName, MesCorssOrganizeErrorProofing organizeErrorProofing, int transSize) {
|
|
|
|
|
MesCorssOrganizeErrorProofingLog mesCorssOrganizeErrorProofingLog = new MesCorssOrganizeErrorProofingLog();
|
|
|
|
|
BeanUtils.copyProperties(organizeErrorProofing, mesCorssOrganizeErrorProofingLog, "id");
|
|
|
|
|
mesCorssOrganizeErrorProofingLog.setTransSize(transSize);
|
|
|
|
|
ConvertBean.serviceModelInitialize(mesCorssOrganizeErrorProofingLog, userName);
|
|
|
|
|
mesCorssOrganizeErrorProofingLogRepository.insert(mesCorssOrganizeErrorProofingLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void insertMesProduceSn(MesCorssOrganizeErrorProofing organizeErrorProofing, List<MesProduceSn> produceSnList) {
|
|
|
|
|
//数据持久化
|
|
|
|
|
for (MesProduceSn produceSn : produceSnList) {
|
|
|
|
|
MesProduceSn saveDbProduceSn = new MesProduceSn();
|
|
|
|
|
BeanUtils.copyProperties(produceSn, saveDbProduceSn, "id");
|
|
|
|
|
saveDbProduceSn.setOrganizeCode(organizeErrorProofing.getOrganizeCode());
|
|
|
|
|
saveDbProduceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.CORSS_ORGANIZE.getValue());
|
|
|
|
|
saveDbProduceSn.setDescription(produceSn.getOrganizeCode());
|
|
|
|
|
saveDbProduceSn.setSystemSyncStatus(CommonEnumUtil.FALSE);
|
|
|
|
|
mesProduceSnRepository.insert(saveDbProduceSn);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|