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;
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.model.MesShippingOrderManagementDetailModel;
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.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
@Api("发运单管理明细")
@RestController
@ -55,8 +56,9 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle
@ApiOperation(value = "发运退回", notes = "发运退回")
@PutMapping("/doShippingBack")
public ResultBean doShippingBack(Long[] idList) {
public ResultBean doShippingBack(@RequestBody Long[] idList) {
try {
if(Objects.isNull(idList) || idList.length <= 0) MesException.throwMesBusiException("选择数据无效,请检查");
shippingOrderManagementDetailService.doShippingBack(idList,AuthUtil.getOrganizeCode(),AuthUtil.getSessionUser().getUserName());
return ResultBean.success("退回成功");
} catch (ImppBusiException e) {

@ -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) {

@ -67,7 +67,7 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
@Override
public void doShippingBack(Long[] idList, String organizeCode, String 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);
List<MesProduceSn> updateMesProduceSn = new ArrayList<>();
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) {
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("发运单条码信息不存在");
List<MesProduceSn> mesProduceSnList = mesProduceSnService.findMesProduceSnList(organizeCode, snList);
return mesProduceSnList.stream().collect(Collectors.groupingBy(MesProduceSn::getProductSn));

Loading…
Cancel
Save