42582 线边库存报表

tags/yfai-mes-ext-v1.6
jun 9 months ago
parent dac6a8f9ec
commit 95759dd876

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base; package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService; import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel;
import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.Pager;
@ -15,7 +16,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.Objects;
@Api("发运单管理明细") @Api("发运单管理明细")
@RestController @RestController
@ -55,8 +56,9 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle
@ApiOperation(value = "发运退回", notes = "发运退回") @ApiOperation(value = "发运退回", notes = "发运退回")
@PutMapping("/doShippingBack") @PutMapping("/doShippingBack")
public ResultBean doShippingBack(Long[] idList) { public ResultBean doShippingBack(@RequestBody Long[] idList) {
try { try {
if(Objects.isNull(idList) || idList.length <= 0) MesException.throwMesBusiException("选择数据无效,请检查");
shippingOrderManagementDetailService.doShippingBack(idList,AuthUtil.getOrganizeCode(),AuthUtil.getSessionUser().getUserName()); shippingOrderManagementDetailService.doShippingBack(idList,AuthUtil.getOrganizeCode(),AuthUtil.getSessionUser().getUserName());
return ResultBean.success("退回成功"); return ResultBean.success("退回成功");
} catch (ImppBusiException e) { } catch (ImppBusiException e) {

@ -1,12 +1,9 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; 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.api.base.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao; 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.BeanUtil;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; 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.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager; 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.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil; 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.MesProdRuleNosortCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel; 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 cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
@ -33,6 +30,8 @@ import javax.persistence.Query;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Description : * @Description :
@ -50,6 +49,9 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
@Autowired @Autowired
private IMesProdRuleNosortCfgDao mesProdRuleNosortCfgDao; private IMesProdRuleNosortCfgDao mesProdRuleNosortCfgDao;
@Autowired
private MesProduceSnRepository mesProduceSnRepository;
@Override @Override
public List<MesProductionRecord> findMesProductionRecord(String organizeCode, String sn) { public List<MesProductionRecord> findMesProductionRecord(String organizeCode, String sn) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
@ -72,23 +74,45 @@ public class MesProductionRecordServiceImpl extends BaseMesService<MesProduction
public ListPager<MesProductionRecordModel> queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel, Pager pager) { public ListPager<MesProductionRecordModel> queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel, Pager pager) {
List<MesProdRuleNosortCfg> mesProdRuleNosortCfgs = mesProdRuleNosortCfgDao.findMesProdRuleNosortCfgByWorkCellCode(mesProductionRecordModel.getOnLineWorkCellCode(), mesProductionRecordModel.getPartNo(), mesProductionRecordModel.getOrganizeCode()); 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); 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()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode());
DdlPreparedPack.getInPackArray(new Object[]{mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),mesProductionRecordModel.getPartNo()},"partNo",packBean); DdlPreparedPack.getStringEqualPack(mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),"partNo",packBean);
DdlPreparedPack.getInPackArray(new Object[]{mesProductionRecordModel.getOffLineWorkCellCode(),mesProductionRecordModel.getOnLineWorkCellCode()},"workCellCode",packBean); DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getOnLineWorkCellCode(),"workCellCode",packBean);
DdlPreparedPack.getStringBiggerPack(mesProductionRecordModel.getCreateDateTimeStart(),"createDatetime",packBean); DdlPreparedPack.getInPackList(mesProduceSnList.stream().map(MesProduceSn::getProductSn).distinct().collect(Collectors.toList()),"productSn",packBean);
DdlPreparedPack.getStringSmallerPack(mesProductionRecordModel.getCreateDateTimeEnd(),"createDatetime",packBean); List<MesProductionRecord> productionRecordList = baseRDao.findByHqlWhere(packBean);
DdlPreparedPack.getNumEqualPack( MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(),"reportStatus",packBean); Map<String,MesProductionRecord> productionRecordMap = new HashMap<>();
pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean)); if(!CollectionUtils.isEmpty(productionRecordList)){
List<MesProductionRecord> productionRecordList = baseRDao.findByHqlWherePage(packBean,pager); for (MesProductionRecord productionRecord : productionRecordList) {
if(CollectionUtils.isEmpty(productionRecordList)) return new ListPager<>(new ArrayList<>(),pager); productionRecordMap.put(productionRecord.getProductSn(),productionRecord);
}
}
//数据组装
List<MesProductionRecordModel> mesProductionRecordModelList = new ArrayList<>(); List<MesProductionRecordModel> mesProductionRecordModelList = new ArrayList<>();
MesProductionRecordModel model; MesProductionRecordModel model;
for (MesProductionRecord mesProductionRecord : productionRecordList) { for (MesProduceSn mesProduceSn : mesProduceSnList) {
model = new MesProductionRecordModel(); model = new MesProductionRecordModel();
BeanUtils.copyProperties(mesProductionRecord,model); BeanUtils.copyProperties(mesProduceSn,model);
model.setOffLineWorkCellCode(mesProductionRecord.getWorkCellCode()); 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) { private ListPager<MesProductionRecord> queryERPMaterialStockHqlPager(MesProductionRecord mesProductionRecord, Pager pager) {

@ -67,7 +67,7 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
@Override @Override
public void doShippingBack(Long[] idList, String organizeCode, String userName) { public void doShippingBack(Long[] idList, String organizeCode, String userName) {
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(idList, organizeCode, userName); List<MesShippingOrderManagementDetail> detailList = getManagementDetails(idList, organizeCode, userName);
if (CollectionUtils.isEmpty(detailList)) return; if (CollectionUtils.isEmpty(detailList)) MesException.throwMesBusiException("选择数据无效,请检查");
Map<String, List<MesProduceSn>> mesProduceSnMap = getMesProduceSnMap(organizeCode, detailList); Map<String, List<MesProduceSn>> mesProduceSnMap = getMesProduceSnMap(organizeCode, detailList);
List<MesProduceSn> updateMesProduceSn = new ArrayList<>(); List<MesProduceSn> updateMesProduceSn = new ArrayList<>();
for (MesShippingOrderManagementDetail detail : detailList) { for (MesShippingOrderManagementDetail detail : detailList) {
@ -91,7 +91,7 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
} }
private Map<String, List<MesProduceSn>> getMesProduceSnMap(String organizeCode, List<MesShippingOrderManagementDetail> detailList) { private Map<String, List<MesProduceSn>> getMesProduceSnMap(String organizeCode, List<MesShippingOrderManagementDetail> detailList) {
List<String> snList = detailList.stream().map(MesShippingOrderManagementDetail::getBarcode).filter(StringUtils::isEmpty).collect(Collectors.toList()); List<String> snList = detailList.stream().map(MesShippingOrderManagementDetail::getBarcode).collect(Collectors.toList());
if (CollectionUtils.isEmpty(snList)) MesException.throwMesBusiException("发运单条码信息不存在"); if (CollectionUtils.isEmpty(snList)) MesException.throwMesBusiException("发运单条码信息不存在");
List<MesProduceSn> mesProduceSnList = mesProduceSnService.findMesProduceSnList(organizeCode, snList); List<MesProduceSn> mesProduceSnList = mesProduceSnService.findMesProduceSnList(organizeCode, snList);
return mesProduceSnList.stream().collect(Collectors.groupingBy(MesProduceSn::getProductSn)); return mesProduceSnList.stream().collect(Collectors.groupingBy(MesProduceSn::getProductSn));

Loading…
Cancel
Save