BOM反向查询报表,通用发运报表开发

tags/yfai-mes-ext-v2.3
jun 6 months ago
parent 478aada794
commit 0da05f6daf

@ -63,5 +63,6 @@ public interface IMesBomService extends IBaseMesService<MesBom> {
*/ */
MesBom findBom(String organizeCode, String bomVersion,String partNo); MesBom findBom(String organizeCode, String bomVersion,String partNo);
@ApiOperation(value = "bom反向查询")
List<MesBom> queryMesBomReverse(MesBom mesBom);
} }

@ -9,6 +9,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCokpitKanbanData;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; 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.report.MesGeneralExportReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel;
import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -56,4 +57,7 @@ public interface IMesYfReportService {
@ApiOperation("通用导出报表") @ApiOperation("通用导出报表")
ListPager<MesGeneralExportReportModel> queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager); ListPager<MesGeneralExportReportModel> queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager);
@ApiOperation("通用发运报表查询")
ListPager<MesGeneralShippingReportModel> queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager);
} }

@ -13,6 +13,7 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.ApiOperation; 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.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -108,4 +109,21 @@ public class MesBomController extends BaseMesController<MesBom> {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
@PostMapping(value = "/reverseQuery")
@ApiOperation(value = "bom反向查询")
public ResultBean queryMesBomReverse(MesBom bom) {
try {
ValidatorBean.checkNotNull(bom.getPartNo(), "父零件号不能为空");
ValidatorBean.checkNotNull(bom.getEffStartTime(), "生效时间不能为空");
ValidatorBean.checkNotNull(bom.getNum(), "层数不能为空");
bom.setOrganizeCode(AuthUtil.getOrganizeCode());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(bomService.queryMesBomReverse(bom));
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
} }

@ -12,10 +12,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesDowntimeRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; 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.model.report.MesDowntimeRecordResModel; import cn.estsh.i3plus.pojo.mes.model.report.*;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel;
import cn.estsh.impp.framework.base.controller.MesBaseController; import cn.estsh.impp.framework.base.controller.MesBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -181,5 +178,19 @@ public class MesBusiReportController extends MesBaseController {
} }
} }
@ApiOperation(value = "通用发运报表查询", notes = "通用发运报表查询")
@PostMapping("/generalShipping/query")
public ResultBean queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager) {
try {
ValidatorBean.beginValid(model)
.notNull("organizeCode", model.getOrganizeCode());
return ResultBean.success("查询成功").setListPager(mesYfReportService.queryGeneralShipping(model,pager));
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
} }

@ -5,8 +5,11 @@ import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultM
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;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List;
/** /**
* @Description : - * @Description : -
* @Reference : * @Reference :
@ -27,4 +30,7 @@ public interface IMesYfReportDao {
@ApiOperation("通用导出报表") @ApiOperation("通用导出报表")
ListPager<MesGeneralExportReportModel> queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager); ListPager<MesGeneralExportReportModel> queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager);
@ApiOperation("通用发运报表查询")
ListPager<MesGeneralShippingReportModel> queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager, List<String> shippingGroupList);
} }

@ -8,9 +8,11 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper; 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.mes.model.report.MesGeneralExportReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
@ -118,13 +120,13 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
StringBuilder dataHql = new StringBuilder(); StringBuilder dataHql = new StringBuilder();
dataHql.append(" select new ").append(MesGeneralExportReportModel.class.getName()).append("(workOrder.organizeCode,workOrder.workCenterCode,workOrder.id,workOrder.workOrderNo,workOrder.custSn,partType.partTypeName,assembly.assemblySn,assembly.createDatetime,workOrder.shippingTime)"); dataHql.append(" select new ").append(MesGeneralExportReportModel.class.getName()).append("(workOrder.organizeCode,workOrder.workCenterCode,workOrder.id,workOrder.workOrderNo,workOrder.custSn,partType.partTypeName,assembly.assemblySn,assembly.createDatetime,workOrder.shippingTime)");
//共用HQL //共用HQL
String commonHql = getCommonHql(mesGeneralExportReportModel); String commonHql = getGeneralExportCommonHql(mesGeneralExportReportModel);
//行数 //行数
Query countQuery = entityManager.createQuery("select count(1) " + commonHql); Query countQuery = entityManager.createQuery("select count(1) " + commonHql);
setParameter(mesGeneralExportReportModel, countQuery); setGeneralExportParameter(mesGeneralExportReportModel, countQuery);
//数据 //数据
Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getOrderBy(mesGeneralExportReportModel)).toString(), MesGeneralExportReportModel.class); Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getGeneralExportOrderBy(mesGeneralExportReportModel)).toString(), MesGeneralExportReportModel.class);
setParameter(mesGeneralExportReportModel, dataQuery); setGeneralExportParameter(mesGeneralExportReportModel, dataQuery);
if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager); if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager);
int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult())); int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult()));
@ -134,7 +136,29 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
return new ListPager<>(dataQuery.getResultList(), pager); return new ListPager<>(dataQuery.getResultList(), pager);
} }
private void setParameter(MesGeneralExportReportModel model, Query query) {
@Override
public ListPager<MesGeneralShippingReportModel> queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager, List<String> shippingGroupList) {
StringBuilder dataHql = new StringBuilder();
dataHql.append(" select new ").append(MesGeneralShippingReportModel.class.getName()).append("(s.id,s.status,s.shippingCode,wo.workCenterCode,s.seq,wo.custOrderNo,sd.partNo,wo.custPartNo,wo.carModelCode,cgg.upperColour,s.endScanTime,sr.startCarNo,sr.endCarNo,sr.expectedArrivalTime,sr.createDatetime)");
//共用HQL
String commonHql = getGeneralShippingCommonHql(model, shippingGroupList);
//行数
Query countQuery = entityManager.createQuery("select count(1) " + commonHql);
setGeneralShippingParameter(model, countQuery, shippingGroupList);
//数据
Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getGeneralShippingOrderBy(model)).toString(), MesGeneralShippingReportModel.class);
setGeneralShippingParameter(model, dataQuery, shippingGroupList);
if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager);
int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult()));
if (count <= 0) return new ListPager<>(new ArrayList<>(), pager);
pager = PagerHelper.getPager(pager, count);
dataQuery.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize());
return new ListPager<>(dataQuery.getResultList(), pager);
}
private void setGeneralExportParameter(MesGeneralExportReportModel model, Query query) {
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("organizeCode", model.getOrganizeCode()); query.setParameter("organizeCode", model.getOrganizeCode());
@ -143,7 +167,7 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
if (!StringUtils.isEmpty(model.getShippingTimeEnd())) query.setParameter("shippingTimeEnd", model.getShippingTimeEnd()); if (!StringUtils.isEmpty(model.getShippingTimeEnd())) query.setParameter("shippingTimeEnd", model.getShippingTimeEnd());
} }
private String getOrderBy(MesGeneralExportReportModel model) { private String getGeneralExportOrderBy(MesGeneralExportReportModel model) {
StringBuilder orderBy = new StringBuilder(); StringBuilder orderBy = new StringBuilder();
if (StringUtils.isEmpty(model.getOrderByParam()) || StringUtils.isEmpty(model.getAscOrDesc())) { if (StringUtils.isEmpty(model.getOrderByParam()) || StringUtils.isEmpty(model.getAscOrDesc())) {
model.setOrderByParam("createDatetime"); model.setOrderByParam("createDatetime");
@ -152,7 +176,7 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
return orderBy.append(" order by assembly.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString(); return orderBy.append(" order by assembly.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString();
} }
private String getCommonHql(MesGeneralExportReportModel model) { private String getGeneralExportCommonHql(MesGeneralExportReportModel model) {
StringBuilder commonHql = new StringBuilder(); StringBuilder commonHql = new StringBuilder();
commonHql.append(" from MesWorkOrderAssembly orderAssembly left join MesWorkOrder workOrder on orderAssembly.workOrderNo = workOrder.workOrderNo and workOrder.organizeCode = :organizeCode and workOrder.isDeleted=:isDeleted and workOrder.isValid=:isValid"); commonHql.append(" from MesWorkOrderAssembly orderAssembly left join MesWorkOrder workOrder on orderAssembly.workOrderNo = workOrder.workOrderNo and workOrder.organizeCode = :organizeCode and workOrder.isDeleted=:isDeleted and workOrder.isValid=:isValid");
commonHql.append(" left join MesProductionAssembly assembly on workOrder.custSn = assembly.custSn and orderAssembly.organizeCode=:organizeCode and orderAssembly.isDeleted=:isDeleted and orderAssembly.isValid=:isValid "); commonHql.append(" left join MesProductionAssembly assembly on workOrder.custSn = assembly.custSn and orderAssembly.organizeCode=:organizeCode and orderAssembly.isDeleted=:isDeleted and orderAssembly.isValid=:isValid ");
@ -171,4 +195,55 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
return commonHql.toString(); return commonHql.toString();
} }
private void setGeneralShippingParameter(MesGeneralShippingReportModel model, Query query, List<String> shippingGroupList) {
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("organizeCode", model.getOrganizeCode());
if(!CollectionUtils.isEmpty(shippingGroupList)) query.setParameter("shippingGroupList", shippingGroupList);
if (!StringUtils.isEmpty(model.getShippingTimeStart())) query.setParameter("shippingTimeStart", model.getShippingTimeStart());
if (!StringUtils.isEmpty(model.getShippingTimeEnd())) query.setParameter("shippingTimeEnd", model.getShippingTimeEnd());
if (!StringUtils.isEmpty(model.getArrivalTimeStart())) query.setParameter("arrivalTimeStart", model.getArrivalTimeStart());
if (!StringUtils.isEmpty(model.getArrivalTimeEnd())) query.setParameter("arrivalTimeEnd", model.getArrivalTimeEnd());
if (!StringUtils.isEmpty(model.getReceivingTimeStart())) query.setParameter("receivingTimeStart", model.getReceivingTimeStart());
if (!StringUtils.isEmpty(model.getReceivingTimeEnd())) query.setParameter("receivingTimeEnd", model.getReceivingTimeEnd());
}
private String getGeneralShippingOrderBy(MesGeneralShippingReportModel model) {
StringBuilder orderBy = new StringBuilder();
if (StringUtils.isEmpty(model.getOrderByParam()) || StringUtils.isEmpty(model.getAscOrDesc())) {
model.setOrderByParam("createDatetime");
model.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue());
}
return orderBy.append(" order by s.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString();
}
private String getGeneralShippingCommonHql(MesGeneralShippingReportModel model, List<String> shippingGroupList) {
StringBuilder commonHql = new StringBuilder();
commonHql.append(" from MesShippingOrderManagement s left join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
commonHql.append(" left join MesWorkOrder wo on sd.logicSeq = wo.workOrderSeq and wo.organizeCode = :organizeCode and wo.isDeleted=:isDeleted and wo.isValid=:isValid ");
commonHql.append(" left join MesCimGmGepics cgg on cgg.csnNo = wo.custOrderNo and cgg.organizeCode = :organizeCode and cgg.isDeleted=:isDeleted and cgg.isValid=:isValid and cgg.barcode !='' and cgg.barcode is not null ");
commonHql.append(" left join MesSupplyclientRunsheet sr on s.shippingCode = sr.runSheetNo and sr.organizeCode = :organizeCode and sr.isDeleted=:isDeleted and sr.isValid=:isValid ");
commonHql.append(" where s.organizeCode = :organizeCode and s.isDeleted=:isDeleted and s.isValid=:isValid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid and wo.organizeCode = :organizeCode and wo.isDeleted=:isDeleted and wo.isValid=:isValid");
if(!CollectionUtils.isEmpty(shippingGroupList)) commonHql.append(" and s.shippingGroupCode in (:shippingGroupList)");
if (!StringUtils.isEmpty(model.getShippingCode())) commonHql.append(" and s.shippingCode like '%").append(model.getShippingCode()).append("%' ");
if (!StringUtils.isEmpty(model.getWorkCenterCode())) commonHql.append(" and wo.workCenterCode like '%").append(model.getWorkCenterCode()).append("%' ");
if (!StringUtils.isEmpty(model.getSeq())) commonHql.append(" and s.seq like '%").append(model.getSeq()).append("%' ");
if (!StringUtils.isEmpty(model.getCustOrderCode())) commonHql.append(" and wo.custOrderNo like '%").append(model.getCustOrderCode()).append("%' ");
if (!StringUtils.isEmpty(model.getPartNo())) commonHql.append(" and sd.partNo like '%").append(model.getPartNo()).append("%' ");
if (!StringUtils.isEmpty(model.getCustPartNo())) commonHql.append(" and wo.custPartNo like '%").append(model.getCustPartNo()).append("%' ");
if (!StringUtils.isEmpty(model.getVehicleNo())) commonHql.append(" and wo.carModelCode like '%").append(model.getVehicleNo()).append("%' ");
if (!StringUtils.isEmpty(model.getUpperColour())) commonHql.append(" and cgg.upperColour like '%").append(model.getUpperColour()).append("%' ");
if (!StringUtils.isEmpty(model.getShippingTimeStart())) commonHql.append(" and s.endScanTime >= :shippingTimeStart ");
if (!StringUtils.isEmpty(model.getShippingTimeEnd())) commonHql.append(" and s.endScanTime <= :shippingTimeEnd ");
if (!StringUtils.isEmpty(model.getStartCarNo())) commonHql.append(" and sr.startCarNo like '%").append(model.getStartCarNo()).append("%' ");
if (!StringUtils.isEmpty(model.getEndCarNo())) commonHql.append(" and sr.endCarNo like '%").append(model.getEndCarNo()).append("%' ");
if (!StringUtils.isEmpty(model.getArrivalTimeStart())) commonHql.append(" and sr.expectedArrivalTime >= :arrivalTimeStart ");
if (!StringUtils.isEmpty(model.getArrivalTimeEnd())) commonHql.append(" and sr.expectedArrivalTime <= :arrivalTimeEnd ");
if (!StringUtils.isEmpty(model.getShippingTimeStart())) commonHql.append(" and s.endScanTime >= :shippingTimeStart ");
if (!StringUtils.isEmpty(model.getShippingTimeEnd())) commonHql.append(" and s.endScanTime <= :shippingTimeEnd ");
if (!StringUtils.isEmpty(model.getReceivingTimeStart())) commonHql.append(" and sr.createDatetime >= :receivingTimeStart ");
if (!StringUtils.isEmpty(model.getReceivingTimeEnd())) commonHql.append(" and sr.createDatetime <= :receivingTimeEnd ");
return commonHql.toString();
}
} }

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesBomService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesBomDao; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesBomDao;
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.model.MesBomTreeModel; import cn.estsh.i3plus.ext.mes.pojo.model.MesBomTreeModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.tool.MathOperation; import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.MesConstWords; import cn.estsh.i3plus.platform.common.util.MesConstWords;
@ -207,6 +208,45 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
return bomList.isEmpty() ? null : bomList.get(0); return bomList.isEmpty() ? null : bomList.get(0);
} }
@Override
public List<MesBom> queryMesBomReverse(MesBom mesBom) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesBom.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesBom.getPartNo(), "itemPartNo", packBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", packBean);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), packBean);
List<MesBom> mesBomList = baseRDao.findByHqlWhere(packBean);
if(CollectionUtils.isEmpty(mesBomList)){
return new ArrayList<>();
}
List<MesBom> resultMesBomList = new ArrayList<>();
Map<String, List<MesBom>> mesBomMap = mesBomList.stream().collect(Collectors.groupingBy(bom -> bom.getPartNo() + bom.getItemPartNo()));
for (String partNoKey : mesBomMap.keySet()) {
MesBom bom = mesBomMap.get(partNoKey).get(MesExtConstWords.ZERO);
resultMesBomList.add(bom);
//按照层数递归上一次
bomReverse(resultMesBomList,bom.getPartNo(),bom.getOrganizeCode(),mesBom.getNum()-1);
}
return resultMesBomList;
}
private void bomReverse(List<MesBom> resultMesBomList,String partNo,String organizeCode, Integer num) {
if(num == MesExtConstWords.ZERO) return;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "itemPartNo", packBean);
DdlPreparedPack.getStringEqualPack("X", "partType", packBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", packBean);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), packBean);
List<MesBom> mesBomList = baseRDao.findByHqlWhere(packBean);
if(CollectionUtils.isEmpty(mesBomList)) return;
Map<String, List<MesBom>> mesBomMap = mesBomList.stream().collect(Collectors.groupingBy(bom -> bom.getPartNo() + bom.getItemPartNo()));
for (String partNoKey : mesBomMap.keySet()) {
MesBom bom = mesBomMap.get(partNoKey).get(MesExtConstWords.ZERO);
resultMesBomList.add(bom);
//按照层数递归上一次
bomReverse(resultMesBomList,bom.getPartNo(),bom.getOrganizeCode(),num-1);
}
}
/** /**
* BOM * BOM
* *

@ -24,6 +24,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportDataModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportDataModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel;
import cn.estsh.i3plus.pojo.mes.repository.*; import cn.estsh.i3plus.pojo.mes.repository.*;
@ -274,6 +275,16 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
return mesYfReportDao.queryGeneralExport(mesGeneralExportReportModel,pager); return mesYfReportDao.queryGeneralExport(mesGeneralExportReportModel,pager);
} }
@Override
public ListPager<MesGeneralShippingReportModel> queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager) {
MesConfig groupCfg = mesConfigService.getCfgValueByCode(model.getOrganizeCode(), MesExtConstWords.GENERAL_SHIPPING_PART_GROUP);
List<String> shippingGroupList = null;
if (!Objects.isNull(groupCfg) && !StringUtil.isEmpty(groupCfg.getCfgValue())) {
shippingGroupList = Arrays.asList(groupCfg.getCfgValue().split(MesExtConstWords.COMMA));
}
return mesYfReportDao.queryGeneralShipping(model, pager, shippingGroupList);
}
private DdlPackBean getDdlPackBeanMesProductionRecord(MesProductionRecord mesProductionRecord) { private DdlPackBean getDdlPackBeanMesProductionRecord(MesProductionRecord mesProductionRecord) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecord.getOrganizeCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecord.getOrganizeCode());
DdlPreparedPack.getStringLikerPack(mesProductionRecord.getProductSn(), "productSn", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getProductSn(), "productSn", packBean);

@ -327,4 +327,11 @@ public class MesExtConstWords {
public static final String PART_PROD_GROUP_CODE = "partProdGroupCode"; public static final String PART_PROD_GROUP_CODE = "partProdGroupCode";
/**
*
*/
//通用发运报表,发运组
public static final String GENERAL_SHIPPING_PART_GROUP = "GENERAL_SHIPPING_PART_GROUP";
} }

Loading…
Cancel
Save