|
|
|
@ -1,12 +1,9 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesProdRuleNosortCfgService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pojo.util.OverwriteStringJoin;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.ListPager;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.common.Pager;
|
|
|
|
@ -14,11 +11,11 @@ import cn.estsh.i3plus.pojo.base.common.PagerHelper;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.util.StringUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProdRuleNoSortCfgRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.hibernate.SQLQuery;
|
|
|
|
@ -33,6 +30,8 @@ import javax.persistence.Query;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description : 设备加工记录表
|
|
|
|
@ -50,6 +49,9 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesProdRuleNosortCfgDao mesProdRuleNosortCfgDao;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesProduceSnRepository mesProduceSnRepository;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesProductionRecord> findMesProductionRecord(String organizeCode, String sn) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
@ -72,23 +74,45 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
|
|
|
|
|
public ListPager<MesProductionRecordModel> queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel, Pager pager) {
|
|
|
|
|
List<MesProdRuleNosortCfg> mesProdRuleNosortCfgs = mesProdRuleNosortCfgDao.findMesProdRuleNosortCfgByWorkCellCode(mesProductionRecordModel.getOnLineWorkCellCode(), mesProductionRecordModel.getPartNo(), mesProductionRecordModel.getOrganizeCode());
|
|
|
|
|
if(CollectionUtils.isEmpty(mesProdRuleNosortCfgs) || StringUtil.isEmpty(mesProdRuleNosortCfgs.iterator().next().getOutPartNo())) return new ListPager<>(new ArrayList<>(),pager);
|
|
|
|
|
//筛选下线工位的当前零件的产成条码
|
|
|
|
|
List<MesProduceSn> mesProduceSnList = getMesProduceSnList(mesProductionRecordModel);
|
|
|
|
|
if(CollectionUtils.isEmpty(mesProduceSnList)) return new ListPager<>(new ArrayList<>(),pager);
|
|
|
|
|
//在上线工位消耗进料条码且没有报工
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getInPackArray(new Object[]{mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),mesProductionRecordModel.getPartNo()},"partNo",packBean);
|
|
|
|
|
DdlPreparedPack.getInPackArray(new Object[]{mesProductionRecordModel.getOffLineWorkCellCode(),mesProductionRecordModel.getOnLineWorkCellCode()},"workCellCode",packBean);
|
|
|
|
|
DdlPreparedPack.getStringBiggerPack(mesProductionRecordModel.getCreateDateTimeStart(),"createDatetime",packBean);
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(mesProductionRecordModel.getCreateDateTimeEnd(),"createDatetime",packBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack( MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(),"reportStatus",packBean);
|
|
|
|
|
pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean));
|
|
|
|
|
List<MesProductionRecord> productionRecordList = baseRDao.findByHqlWherePage(packBean,pager);
|
|
|
|
|
if(CollectionUtils.isEmpty(productionRecordList)) return new ListPager<>(new ArrayList<>(),pager);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),"partNo",packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getOnLineWorkCellCode(),"workCellCode",packBean);
|
|
|
|
|
DdlPreparedPack.getInPackList(mesProduceSnList.stream().map(MesProduceSn::getProductSn).distinct().collect(Collectors.toList()),"productSn",packBean);
|
|
|
|
|
List<MesProductionRecord> productionRecordList = baseRDao.findByHqlWhere(packBean);
|
|
|
|
|
Map<String,MesProductionRecord> productionRecordMap = new HashMap<>();
|
|
|
|
|
if(!CollectionUtils.isEmpty(productionRecordList)){
|
|
|
|
|
for (MesProductionRecord productionRecord : productionRecordList) {
|
|
|
|
|
productionRecordMap.put(productionRecord.getProductSn(),productionRecord);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//数据组装
|
|
|
|
|
List<MesProductionRecordModel> mesProductionRecordModelList = new ArrayList<>();
|
|
|
|
|
MesProductionRecordModel model;
|
|
|
|
|
for (MesProductionRecord mesProductionRecord : productionRecordList) {
|
|
|
|
|
for (MesProduceSn mesProduceSn : mesProduceSnList) {
|
|
|
|
|
model = new MesProductionRecordModel();
|
|
|
|
|
BeanUtils.copyProperties(mesProductionRecord,model);
|
|
|
|
|
model.setOffLineWorkCellCode(mesProductionRecord.getWorkCellCode());
|
|
|
|
|
BeanUtils.copyProperties(mesProduceSn,model);
|
|
|
|
|
if(!productionRecordMap.containsKey(mesProduceSn.getProductSn()) || (productionRecordMap.containsKey(mesProduceSn.getProductSn()) && MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue() == productionRecordMap.get(mesProduceSn.getProductSn()).getReportStatus())){
|
|
|
|
|
model.setOffLineWorkCellCode(mesProduceSn.getWorkCellCode());
|
|
|
|
|
mesProductionRecordModelList.add(model);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return new ListPager<>(mesProductionRecordModelList, pager);
|
|
|
|
|
pager = PagerHelper.getPager(pager, mesProductionRecordModelList.size());
|
|
|
|
|
return new ListPager<>(mesProductionRecordModelList.subList(pager.getStartRow(),
|
|
|
|
|
Math.min(pager.getPageSize() * pager.getCurrentPage(), mesProductionRecordModelList.size())), pager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesProduceSn> getMesProduceSnList(MesProductionRecordModel mesProductionRecordModel) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getPartNo(),"partNo",packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getOffLineWorkCellCode(),"workCellCode",packBean);
|
|
|
|
|
DdlPreparedPack.getStringBiggerPack(mesProductionRecordModel.getCreateDateTimeStart(),"createDatetime",packBean);
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(mesProductionRecordModel.getCreateDateTimeEnd(),"createDatetime",packBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue(),"snStatus",packBean);
|
|
|
|
|
return mesProduceSnRepository.findByHqlWhere(packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ListPager<MesProductionRecord> queryERPMaterialStockHqlPager(MesProductionRecord mesProductionRecord, Pager pager) {
|
|
|
|
|