修改龙兴发运看板

uat-temp-nht-202502180000-shippingkanban
jason 3 months ago
parent d765e02a4b
commit 0dc14ff147

@ -7,6 +7,6 @@ import java.util.List;
public interface IMesShippingKanbanCfgService {
MesShippingKanbanCfgModel queryShippingKanbanCfg(String organizeCode);
void saveShippingKanbanCfg(String organizeCode, MesShippingKanbanCfgModel request);
void saveShippingKanbanCfg(MesShippingKanbanCfgModel request, String organizeCode, String username);
List<MesShippingKanbanViewModel> queryShippingKanbanContext(String organizeCode);
}

@ -43,7 +43,7 @@ public class MesShippingKanbanCfgController {
public ResultBean saveShippingKanbanCfg(@RequestBody MesShippingKanbanCfgModel request) {
try {
String organizeCode = !StringUtils.isEmpty(request.getOrganizeCode()) ? request.getOrganizeCode() : AuthUtil.getOrganize().getOrganizeCode();
shippingKanbanCfgService.saveShippingKanbanCfg(organizeCode, request);
shippingKanbanCfgService.saveShippingKanbanCfg(request, organizeCode, request.getUsername());
return ResultBean.success("保存成功");
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
@ -61,6 +61,7 @@ public class MesShippingKanbanCfgController {
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
e.printStackTrace();
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}

@ -4,19 +4,36 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesShippingKanbanCfgService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanCfgModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanViewModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.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.MesPartShippingGroup;
import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisVinOverPoint;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingKanbanCfg;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingKanbanCfgDetail;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesShippingKanbanCfgDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesShippingKanbanCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.seres.IMesCimSeresJisVinOverPointRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@ -26,25 +43,49 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
private MesShippingKanbanCfgRepository shippingKanbanCfgRDao;
@Autowired
private MesShippingKanbanCfgDetailRepository shippingKanbanCfgDetailRDao;
@Autowired
private MesPartShippingGroupRepository partShippingGroupRDao;
@Autowired
private IMesCimSeresJisVinOverPointRepository vinOverPointRDao;
@Autowired
private EntityManager entityManager;
@Override
public MesShippingKanbanCfgModel queryShippingKanbanCfg(String organizeCode) {
MesShippingKanbanCfgModel model = new MesShippingKanbanCfgModel();
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
MesShippingKanbanCfg kanbanCfg = shippingKanbanCfgRDao.getByProperty(packBean);
model.setConfig(kanbanCfg);
if (kanbanCfg != null) {
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(kanbanCfg.getId(), "configID", packBean);
List<MesShippingKanbanCfgDetail> details = shippingKanbanCfgDetailRDao.findByHqlWhere(detailPackBean);
model.setDetails(details);
} else {
kanbanCfg = new MesShippingKanbanCfg();
}
model.setConfig(kanbanCfg);
if (model.getDetails() == null) {
model.setDetails(new ArrayList<>());
}
Map<String, MesShippingKanbanCfgDetail> cfgDetailMap = model.getDetails().stream().collect(Collectors.toMap(MesShippingKanbanCfgDetail::getDetailCode, v -> v));
for (MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX index : MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX.values()) {
if (cfgDetailMap.containsKey(index.getValue())) {
continue;
}
MesShippingKanbanCfgDetail detail = new MesShippingKanbanCfgDetail();
detail.setConfigID(kanbanCfg.getId());
detail.setDetailCode(index.getValue());
detail.setDetailName(index.getDescription());
detail.setIsShow(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
model.getDetails().add(detail);
}
return model;
}
@Override
public void saveShippingKanbanCfg(String organizeCode, MesShippingKanbanCfgModel request) {
public void saveShippingKanbanCfg(MesShippingKanbanCfgModel request, String organizeCode, String username) {
if (request.getConfig() == null) {
return;
}
@ -53,6 +94,8 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
MesShippingKanbanCfg oldCfg = shippingKanbanCfgRDao.getByProperty(packBean);
if (oldCfg == null) {
cfg.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(cfg, username);
oldCfg = shippingKanbanCfgRDao.insert(cfg);
} else {
oldCfg.setShippingGroupCode(cfg.getShippingGroupCode());
@ -65,6 +108,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
oldCfg.setCustStartShift(cfg.getCustStartShift());
oldCfg.setInterStartShift(cfg.getInterStartShift());
oldCfg.setCustJph(cfg.getCustJph());
ConvertBean.serviceModelUpdate(oldCfg, username);
shippingKanbanCfgRDao.update(oldCfg);
shippingKanbanCfgDetailRDao.deleteByProperties(new String[]{"organizeCode", "configID"},
@ -73,7 +117,10 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
if (!CollectionUtils.isEmpty(request.getDetails())) {
for (MesShippingKanbanCfgDetail detail : request.getDetails()) {
detail.setId(null);
detail.setConfigID(oldCfg.getId());
detail.setOrganizeCode(oldCfg.getOrganizeCode());
ConvertBean.serviceModelInitialize(detail, username);
shippingKanbanCfgDetailRDao.insert(detail);
}
}
@ -84,13 +131,17 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
List<MesShippingKanbanViewModel> viewModels = new ArrayList<>();
Map<String, MesShippingKanbanCfgDetail> cfgDetailMap = null;
MesShippingKanbanCfgModel cfgModel = queryShippingKanbanCfg(organizeCode);
if (cfgModel != null && !CollectionUtils.isEmpty(cfgModel.getDetails())) {
MesShippingKanbanCfg cfg = cfgModel != null ? cfgModel.getConfig() : null;
if (cfg == null) {
return viewModels;
}
if (!CollectionUtils.isEmpty(cfgModel.getDetails())) {
cfgDetailMap = cfgModel.getDetails().stream().collect(Collectors.toMap(MesShippingKanbanCfgDetail::getDetailCode, v -> v));
}
for (MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX index : MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX.values()) {
MesShippingKanbanCfgDetail cfgDetail = cfgDetailMap != null ? cfgDetailMap.get(index.getValue()) : null;
if (cfgDetail == null || cfgDetail.getIsShow() == null || !cfgDetail.getIsShow() || cfgDetail.getOrderNumber() == null) {
if (cfgDetail == null || cfgDetail.getIsShow() == null || cfgDetail.getIsShow() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() || cfgDetail.getOrderNumber() == null) {
continue;
}
@ -111,54 +162,837 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer
List<String> values = null;
switch (index) {
case CLIENT_STOCK_QTY:
values = getClientStockQty(cfgDetail);
values = getClientStockQty(cfg, cfgDetail);
break;
case WAIT_SHIPPING_QTY:
values = getWaitShippingQty(cfgDetail);
values = getWaitShippingQty(cfg, cfgDetail);
break;
case CP_WAIT_SHIPPING_QTY:
values = getCPWaitShippingQty(cfg, cfgDetail);
break;
case WAIT_PRODUCT_QTY:
values = getWaitProductQty(cfg, cfgDetail);
break;
case LAST_SHIPPING_TIME:
values = getLastShippingTime(cfg, cfgDetail);
break;
case CP_LAST_SHIPPING_TIME:
values = getCPLastShippingTime(cfg, cfgDetail);
break;
case NEXT_SHIPPING_TIME:
values = getNextShippingTime(cfg, cfgDetail);
break;
case TREE_STOP_WARNING:
values = getTreeStopWarning(cfg, cfgDetail);
break;
case SHIPPING_VIN:
values = getShippingVin(cfg, cfgDetail);
break;
case CP_SHIPPING_VIN:
values = getCPShippingVin(cfg, cfgDetail);
break;
case TODAY_ONLINE:
values = getTodayOnline(cfg, cfgDetail);
break;
case TODAY_SHIPPING:
values = getTodayShipping(cfg, cfgDetail);
break;
case TODAY_CAR:
values = getTodayCar(cfg, cfgDetail);
break;
case CLIENT_JPH:
values = getClientJPH(cfg, cfgDetail);
break;
case PRODUCT_JPH:
values = getProductJPH(cfg, cfgDetail);
break;
}
if (values == null) {
values = new ArrayList<>();
}
model.setValues(values);
model.setColor(getColor(cfgDetail, values));
viewModels.add(model);
}
viewModels.sort(Comparator.comparing(MesShippingKanbanViewModel::getOrderNumber));
return viewModels;
}
private List<String> getClientStockQty(MesShippingKanbanCfgDetail cfgDetail) {
private String getColor(MesShippingKanbanCfgDetail cfgDetail, List<String> values) {
if (CollectionUtils.isEmpty(values)) {
return cfgDetail.getDefaultColor();
}
if (!StringUtils.isEmpty(cfgDetail.getRangValueLess())) {
String rangValue = cfgDetail.getRangValueLess();
for (String value : values) {
if (StringUtils.isEmpty(value)) {
continue;
}
if (NumberUtil.isNumber(value)) {
if (Integer.parseInt(value) < Integer.parseInt(rangValue)) {
return cfgDetail.getRangColorLess();
}
} else {
if (value.compareTo(rangValue) < 0) {
return cfgDetail.getRangColorLess();
}
}
}
}
if (!StringUtils.isEmpty(cfgDetail.getRangValueMore())) {
String rangValue = cfgDetail.getRangValueMore();
for (String value : values) {
if (StringUtils.isEmpty(value)) {
continue;
}
if (NumberUtil.isNumber(value)) {
if (Integer.parseInt(value) >= Integer.parseInt(rangValue)) {
return cfgDetail.getRangColorMore();
}
} else {
if (value.compareTo(rangValue) >= 0) {
return cfgDetail.getRangColorMore();
}
}
}
}
return cfgDetail.getDefaultColor();
}
private List<MesPartShippingGroup> getShippingGroups(MesShippingKanbanCfg cfg) {
List<MesPartShippingGroup> shippingGroups = new ArrayList<>();
if (StringUtils.isEmpty(cfg.getShippingGroupCode())) {
return shippingGroups;
}
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return shippingGroups;
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode());
DdlPreparedPack.getInPackList(strShippingGroupList, "shippingGroupCode", packBean);
return partShippingGroupRDao.findByHqlWhere(packBean);
}
private String getShippingVin(String organizeCode, List<String> shippingGroupCodes, List<Integer> status) {
StringBuilder hql = new StringBuilder();
hql.append("select sd.vin");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" ORDER BY sd.id desc");
return entityManager.createQuery(hql.toString(), String.class)
.setParameter("organizeCode", organizeCode)
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", status)
.setParameter("shippingGroupCode", shippingGroupCodes)
.setMaxResults(1)
.getSingleResult();
}
/**
* 线
* @param organizeCode
* @param shippingGroupCodes
* @return
*/
private String getMaxOffNumber(String organizeCode, List<String> shippingGroupCodes) {
String vinCode = getShippingVin(organizeCode, shippingGroupCodes, Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()));
StringBuilder offNumberHql = new StringBuilder();
offNumberHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName());
offNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid ");
offNumberHql.append(" and vin = :vin ");
return entityManager.createQuery(offNumberHql.toString(), String.class)
.setParameter("organizeCode", organizeCode)
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("vin", vinCode)
.getSingleResult();
}
private List<String> getClientStockQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return values;
}
// 获取赛力斯上线的最新流水号
String onNumber = "";
if (!StringUtils.isEmpty(cfg.getOnlinePoint())) {
StringBuilder onNumberHql = new StringBuilder();
onNumberHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName());
onNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid ");
onNumberHql.append(" and overPoint = :overPoint ");
onNumber = entityManager.createQuery(onNumberHql.toString(), String.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("overPoint", cfg.getOnlinePoint())
.getSingleResult();
}
if (StringUtils.isEmpty(onNumber)) {
onNumber = "0";
}
String offNumber = getMaxOffNumber(cfg.getOrganizeCode(), strShippingGroupList);
if (StringUtils.isEmpty(offNumber)) {
offNumber = "0";
}
int adjustValue = cfg.getAdjustValue() != null ? cfg.getAdjustValue() : 0;
int result = Integer.parseInt(offNumber) - Integer.parseInt(onNumber) + adjustValue;
values.add(String.valueOf(result));
return values;
}
private List<String> getWaitShippingQty(MesShippingKanbanCfgDetail cfgDetail) {
private List<String> getWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return values;
}
if (strShippingGroupList.stream().anyMatch(s -> s.contains("CK"))) {
// 获获取精排信息点的流水号
String refinedPointNumber = "";
if (!StringUtils.isEmpty(cfg.getRefinedPoint())) {
StringBuilder refinedPointHql = new StringBuilder();
refinedPointHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName());
refinedPointHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid ");
refinedPointHql.append(" and overPoint = :overPoint ");
refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("overPoint", cfg.getRefinedPoint())
.getSingleResult();
}
if (StringUtils.isEmpty(refinedPointNumber)) {
refinedPointNumber = "0";
}
String offNumber = getMaxOffNumber(cfg.getOrganizeCode(), strShippingGroupList);
if (StringUtils.isEmpty(offNumber)) {
offNumber = "0";
}
int result = Integer.parseInt(refinedPointNumber) - Integer.parseInt(offNumber);
values.add(String.valueOf(result));
} else {
StringBuilder hql = new StringBuilder();
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, COUNT(sd.id) as COUNT)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status = :status ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue())
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
shippingGroupCount.put(dd.get("shippingGroupCode").toString(), dd.get("COUNT").toString());
}
}
for (String shippingGroupCode : strShippingGroupList) {
values.add(shippingGroupCount.getOrDefault(shippingGroupCode, "0"));
}
}
return values;
}
private List<String> getCPWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return values;
}
if (strShippingGroupList.stream().anyMatch(s -> s.contains("CK"))) {
// 获获取精排信息点的流水号
String refinedPointNumber = "";
if (!StringUtils.isEmpty(cfg.getRefinedPoint())) {
StringBuilder refinedPointHql = new StringBuilder();
refinedPointHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName());
refinedPointHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid ");
refinedPointHql.append(" and overPoint = :overPoint ");
refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("overPoint", cfg.getRefinedPoint())
.getSingleResult();
}
if (StringUtils.isEmpty(refinedPointNumber)) {
refinedPointNumber = "0";
}
strShippingGroupList = strShippingGroupList.stream().filter(s -> s.contains("CK")).collect(Collectors.toList());
String offNumber = getMaxOffNumber(cfg.getOrganizeCode(), strShippingGroupList);
if (StringUtils.isEmpty(offNumber)) {
offNumber = "0";
}
int result = Integer.parseInt(refinedPointNumber) - Integer.parseInt(offNumber);
values.add(String.valueOf(result));
} else {
values.add("0");
}
return values;
}
/**
* /
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getWaitProductQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return values;
}
if (strShippingGroupList.stream().anyMatch(s -> s.contains("CK"))) {
values.add("0");
} else {
// 获获取精排信息点的流水号
String refinedPointNumber = "";
if (!StringUtils.isEmpty(cfg.getRefinedPoint())) {
StringBuilder refinedPointHql = new StringBuilder();
refinedPointHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName());
refinedPointHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid ");
refinedPointHql.append(" and overPoint = :overPoint ");
refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("overPoint", cfg.getRefinedPoint())
.getSingleResult();
}
if (StringUtils.isEmpty(refinedPointNumber)) {
refinedPointNumber = "0";
}
StringBuilder hql = new StringBuilder();
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(sd.custInfoSeq) as custInfoSeq)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
Object custInfoSeq = dd.get("custInfoSeq");
if (custInfoSeq != null) {
shippingGroupCount.put(dd.get("shippingGroupCode").toString(), custInfoSeq.toString());
}
}
}
for (String shippingGroupCode : strShippingGroupList) {
if (shippingGroupCount.containsKey(shippingGroupCode)) {
values.add(Integer.parseInt(refinedPointNumber) - Integer.parseInt(shippingGroupCount.get(shippingGroupCode)) + "");
} else {
values.add("0");
}
}
}
return values;
}
/**
* (Min)
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getLastShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return values;
}
if (strShippingGroupList.stream().anyMatch(s -> s.contains("CK"))) {
StringBuilder hql = new StringBuilder();
hql.append("select max(s.endScanTime)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
String strScanEndTime = entityManager.createQuery(hql.toString(), String.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getSingleResult();
if (!StringUtils.isEmpty(strScanEndTime)) {
Date scanEndTime = DateUtil.parse(strScanEndTime);
values.add(DateUtil.formatDate(DateUtil.SHORT_FORMAT_HOUR, scanEndTime));
}
} else {
StringBuilder hql = new StringBuilder();
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(l.endScanTime) as endScanTime)");
hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid ");
hql.append(" and l.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.LOADING_ORDER_STATUS.LOADED.getValue(), MesExtEnumUtil.LOADING_ORDER_STATUS.SHIPPING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
Object endScanTime = dd.get("endScanTime");
if (endScanTime != null) {
shippingGroupCount.put(dd.get("shippingGroupCode").toString(), endScanTime.toString());
}
}
}
for (String shippingGroupCode : strShippingGroupList) {
if (shippingGroupCount.containsKey(shippingGroupCode)) {
String strScanEndTime = shippingGroupCount.get(shippingGroupCode);
if (!StringUtils.isEmpty(strScanEndTime)) {
Date scanEndTime = DateUtil.parse(strScanEndTime);
values.add(DateUtil.formatDate(DateUtil.SHORT_FORMAT_HOUR, scanEndTime));
}
} else {
values.add("");
}
}
}
return values;
}
private List<String> getCPLastShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode());
List<MesPartShippingGroup> shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean);
if (CollectionUtils.isEmpty(shippingGroups)) {
return values;
}
List<String> strShippingGroupList = shippingGroups.stream().map(MesPartShippingGroup::getShippingGroupCode).collect(Collectors.toList());
if (strShippingGroupList.stream().anyMatch(s -> s.contains("CK"))) {
strShippingGroupList = strShippingGroupList.stream().filter(s -> s.contains("CK")).collect(Collectors.toList());
StringBuilder hql = new StringBuilder();
hql.append("select max(s.endScanTime)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
String strScanEndTime = entityManager.createQuery(hql.toString(), String.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getSingleResult();
if (!StringUtils.isEmpty(strScanEndTime)) {
Date scanEndTime = DateUtil.parse(strScanEndTime);
values.add(DateUtil.formatDate(DateUtil.SHORT_FORMAT_HOUR, scanEndTime));
}
} else {
values.add("0");
}
return values;
}
/**
*
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getNextShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
Date nowTime = DateUtil.now();
//获取客户端库存
List<String> clientStockValue = getClientStockQty(cfg, cfgDetail);
if (StringUtils.isEmpty(clientStockValue)) {
return values;
}
//获取客户JPH
List<String> customerJPHValue = getClientJPH(cfg, cfgDetail);
if (CollectionUtils.isEmpty(customerJPHValue)) {
return values;
}
double clientStock = Double.parseDouble(clientStockValue.get(0));
double customerJPH = Double.parseDouble(customerJPHValue.get(0));
//获取在途时间
int onTheWayDate = cfg.getOnWayDate() != null ? cfg.getOnWayDate() : 0;
//客户端库存除以客户JPH
double customerJPHInt = clientStock / customerJPH;
BigDecimal b = new BigDecimal(customerJPHInt);
customerJPHInt = b.setScale(1, RoundingMode.HALF_UP).doubleValue();
int minutes = (int)(customerJPHInt * 60);
Date newDate = DateUtil.addMinutes(nowTime, minutes - onTheWayDate);
values.add(DateUtil.formatDate(DateUtil.BASE_FORMAT3, newDate));
return values;
}
/**
* 线(Min)
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getTreeStopWarning(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
//获取客户端库存
List<String> nextShippingTimeValue = getNextShippingTime(cfg, cfgDetail);
if (StringUtils.isEmpty(nextShippingTimeValue)) {
return values;
}
Date nowTime = DateUtil.parse(DateUtil.formatDate(DateUtil.BASE_FORMAT3, DateUtil.now()), DateUtil.BASE_FORMAT3);
Date nextShippingTime = DateUtil.parse(nextShippingTimeValue.get(0), DateUtil.BASE_FORMAT3);
long minutes = DateUtil.minutesBetweenTwoTime(nextShippingTime, nowTime);
values.add(String.valueOf(minutes));
return values;
}
private List<String> getShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return values;
}
if (strShippingGroupList.stream().anyMatch(s -> s.contains("CK"))) {
StringBuilder hql = new StringBuilder();
hql.append("select sd.custInfoSeq");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" ORDER BY sd.id DESC");
Long custInfoSeq = entityManager.createQuery(hql.toString(), Long.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getSingleResult();
String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : "";
if (strCustInfoSeq.length() >= 6) {
values.add(strCustInfoSeq.substring(strCustInfoSeq.length() - 6));
} else {
values.add(strCustInfoSeq);
}
} else {
StringBuilder hql = new StringBuilder();
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(sd.custInfoSeq) as custInfoSeq)");
hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid ");
hql.append(" and l.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.LOADING_ORDER_STATUS.LOADED.getValue(), MesExtEnumUtil.LOADING_ORDER_STATUS.SHIPPING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
Object custInfoSeq = dd.get("custInfoSeq");
if (custInfoSeq != null) {
shippingGroupCount.put(dd.get("shippingGroupCode").toString(), custInfoSeq.toString());
}
}
}
for (String shippingGroupCode : strShippingGroupList) {
if (shippingGroupCount.containsKey(shippingGroupCode)) {
String strCustInfoSeq = shippingGroupCount.get(shippingGroupCode);
if (StringUtils.isEmpty(strCustInfoSeq)) {
strCustInfoSeq = "0";
}
if (strCustInfoSeq.length() >= 6) {
values.add(strCustInfoSeq.substring(strCustInfoSeq.length() - 6));
} else {
values.add(strCustInfoSeq);
}
} else {
values.add("0");
}
}
}
return values;
}
private List<String> getCPShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode());
List<MesPartShippingGroup> shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean);
if (CollectionUtils.isEmpty(shippingGroups)) {
return values;
}
List<String> strShippingGroupList = shippingGroups.stream().map(MesPartShippingGroup::getShippingGroupCode).collect(Collectors.toList());
if (strShippingGroupList.stream().anyMatch(s -> s.contains("CK"))) {
strShippingGroupList = strShippingGroupList.stream().filter(s -> s.contains("CK")).collect(Collectors.toList());
StringBuilder hql = new StringBuilder();
hql.append("select sd.custInfoSeq");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" ORDER BY sd.id DESC");
Long custInfoSeq = entityManager.createQuery(hql.toString(), Long.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("shippingGroupCode", strShippingGroupList)
.getSingleResult();
String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : "";
if (strCustInfoSeq.length() >= 6) {
values.add(strCustInfoSeq.substring(strCustInfoSeq.length() - 6));
} else {
values.add(strCustInfoSeq);
}
} else {
values.add("0");
}
return values;
}
/**
* 线
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getTodayOnline(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
if (StringUtils.isEmpty(cfg.getCustStartShift()) || StringUtils.isEmpty(cfg.getOnlinePoint())) {
return values;
}
String startDateTime = "";
String endDateTime = "";
Date nowTime = DateUtil.now();
Date configTime = DateUtil.parse(cfg.getCustStartShift(), DateUtil.SHORT_FORMAT_HOUR);
Date currentTime = DateUtil.parse(DateUtil.formatDate(DateUtil.SHORT_FORMAT_HOUR, nowTime), DateUtil.SHORT_FORMAT_HOUR);
if (!configTime.after(currentTime)) {
startDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, nowTime) + " " + cfg.getCustStartShift();
endDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, DateUtil.addDays(nowTime, 1)) + " " + cfg.getCustStartShift();
} else {
//小于配置时间如凌晨1点则跨天需将当前时间减一天
startDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, DateUtil.addDays(nowTime, -1)) + " " + cfg.getCustStartShift();
endDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, nowTime) + " " + cfg.getCustStartShift();
}
StringBuilder onNumberHql = new StringBuilder();
onNumberHql.append("select count(1) from " + MesCimSeresJisVinOverPoint.class.getName());
onNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid ");
onNumberHql.append(" and overPoint = :overPoint ");
onNumberHql.append(" and createDatetime BETWEEN :startDateTime AND :endDateTime ");
Long onNumber = entityManager.createQuery(onNumberHql.toString(), Long.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("overPoint", cfg.getOnlinePoint())
.setParameter("startDateTime", startDateTime)
.setParameter("endDateTime", endDateTime)
.getSingleResult();
values.add(String.valueOf(onNumber != null ? onNumber : 0));
return values;
}
/**
*
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getTodayShipping(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) {
return values;
}
String startDateTime = "";
String endDateTime = "";
Date nowTime = DateUtil.now();
Date configTime = DateUtil.parse(cfg.getInterStartShift(), DateUtil.SHORT_FORMAT_HOUR);
Date currentTime = DateUtil.parse(DateUtil.formatDate(DateUtil.SHORT_FORMAT_HOUR, nowTime), DateUtil.SHORT_FORMAT_HOUR);
if (!configTime.after(currentTime)) {
startDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, nowTime) + " " + cfg.getInterStartShift();
endDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, DateUtil.addDays(nowTime, 1)) + " " + cfg.getCustStartShift();
} else {
//小于配置时间如凌晨1点则跨天需将当前时间减一天
startDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, DateUtil.addDays(nowTime, -1)) + " " + cfg.getCustStartShift();
endDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, nowTime) + " " + cfg.getInterStartShift();
}
StringBuilder hql = new StringBuilder();
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, count(sd.id) as totalCount)");
hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid ");
hql.append(" and s.status in (:status) ");
hql.append(" and s.modifyDatetime BETWEEN :startDateTime AND :endDateTime ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" group by s.shippingGroupCode");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue()))
.setParameter("startDateTime", startDateTime)
.setParameter("endDateTime", endDateTime)
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
Object totalCount = dd.get("totalCount");
if (totalCount != null) {
shippingGroupCount.put(dd.get("shippingGroupCode").toString(), totalCount.toString());
}
}
}
for (String shippingGroupCode : strShippingGroupList) {
values.add(shippingGroupCount.getOrDefault(shippingGroupCode, "0"));
}
return values;
}
/**
*
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getTodayCar(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) {
return values;
}
String startDateTime = "";
String endDateTime = "";
Date nowTime = DateUtil.now();
Date configTime = DateUtil.parse(cfg.getInterStartShift(), DateUtil.SHORT_FORMAT_HOUR);
Date currentTime = DateUtil.parse(DateUtil.formatDate(DateUtil.SHORT_FORMAT_HOUR, nowTime), DateUtil.SHORT_FORMAT_HOUR);
if (!configTime.after(currentTime)) {
startDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, nowTime) + " " + cfg.getInterStartShift();
endDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, DateUtil.addDays(nowTime, 1)) + " " + cfg.getCustStartShift();
} else {
//小于配置时间如凌晨1点则跨天需将当前时间减一天
startDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, DateUtil.addDays(nowTime, -1)) + " " + cfg.getCustStartShift();
endDateTime = DateUtil.formatDate(DateUtil.SHORT_FORMAT, nowTime) + " " + cfg.getInterStartShift();
}
StringBuilder hql = new StringBuilder();
hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, sum(sd.planQty) as totalCount)");
hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid ");
hql.append(" and l.status = :status ");
hql.append(" and l.modifyDatetime BETWEEN :startDateTime AND :endDateTime ");
hql.append(" and s.shippingGroupCode in (:shippingGroupCode) ");
hql.append(" group by s.shippingGroupCode ");
List<Map> ddd = entityManager.createQuery(hql.toString())
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("status", MesExtEnumUtil.LOADING_ORDER_STATUS.SHIPPING.getValue())
.setParameter("startDateTime", startDateTime)
.setParameter("endDateTime", endDateTime)
.setParameter("shippingGroupCode", strShippingGroupList)
.getResultList();
Map<String, String> shippingGroupCount = new HashMap<>();
if (!CollectionUtils.isEmpty(ddd)) {
for (Map dd : ddd) {
Object totalCount = dd.get("totalCount");
if (totalCount != null) {
shippingGroupCount.put(dd.get("shippingGroupCode").toString(), totalCount.toString());
}
}
}
for (String shippingGroupCode : strShippingGroupList) {
values.add(shippingGroupCount.getOrDefault(shippingGroupCode, "0"));
}
return values;
}
/**
* JPH
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getClientJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return values;
}
Date nowTime = DateUtil.now();
Date prevHourTime = DateUtil.addMinutes(nowTime, -60);
StringBuilder offNumberHql = new StringBuilder();
offNumberHql.append("select count(1) from " + MesCimSeresJisVinOverPoint.class.getName());
offNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid ");
offNumberHql.append(" and createDatetime BETWEEN :startDateTime AND :endDateTime ");
offNumberHql.append(" and overPoint = :overPoint ");
Long vpCount = entityManager.createQuery(offNumberHql.toString(), Long.class)
.setParameter("organizeCode", cfg.getOrganizeCode())
.setParameter("isValid", CommonEnumUtil.VALID)
.setParameter("isDeleted", CommonEnumUtil.FALSE)
.setParameter("startDateTime", DateUtil.formatDate(nowTime))
.setParameter("endDateTime", DateUtil.formatDate(prevHourTime))
.setParameter("overPoint", cfg.getOnlinePoint())
.getSingleResult();
if (vpCount == null || Objects.equals(vpCount, 0L)) {
values.add(cfg.getCustJph());
} else {
values.add(vpCount.toString());
}
return values;
}
/**
* JPH
* @param cfg
* @param cfgDetail
* @return
*/
private List<String> getProductJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) {
List<String> values = new ArrayList<>();
List<String> strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(","));
if (CollectionUtils.isEmpty(strShippingGroupList)) {
return values;
}
Date nowTime = DateUtil.now();
Date prevHourTime = DateUtil.addMinutes(nowTime, -60);
return values;
}
}

@ -12,6 +12,9 @@ public class MesShippingKanbanCfgModel {
@ApiParam("组织代码")
private String organizeCode;
@ApiParam("用户名")
private String username;
@ApiParam("看板配置项")
private MesShippingKanbanCfg config;

@ -20,4 +20,7 @@ public class MesShippingKanbanViewModel {
@ApiParam("范围描述")
private String rangDescription;
@ApiParam("颜色")
private String color;
}

Loading…
Cancel
Save