|
|
|
@ -0,0 +1,169 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPullingOrderInfoService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
|
|
|
|
|
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;
|
|
|
|
|
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.*;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.*;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
|
|
|
|
|
public static final Logger LOGGER = LoggerFactory.getLogger(MesPullingOrderInfoService.class);
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPullingOrderInfoRepository mesPullingOrderInfoRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPullingOrderPartInfoRepository mesPullingOrderPartInfoRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPartPullRepository mesPartPullRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPartPullDetailRepository mesPartPullDetailRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesWorkOrderPartRepository workOrderPartRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesWorkCenterRepository mesWorkCenterRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPullingOrderExtendsRepository mesPullingOrderExtendsRepository;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ListPager<MesPullingOrderInfo> queryMesPullingOrderInfoByPager(MesPullingOrderInfo bean, Pager pager) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
setPackQueryBean(bean, packBean);
|
|
|
|
|
if (!StringUtil.isEmpty(bean.orderBy())) {
|
|
|
|
|
packBean.setOrderByStr(bean.orderBy());
|
|
|
|
|
} else {
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
|
|
|
|
|
}
|
|
|
|
|
//
|
|
|
|
|
if (!StringUtil.isEmpty(bean.getCreateDatetime())) {
|
|
|
|
|
DdlPreparedPack.getStringBiggerPack(bean.getCreateDatetime(), "createDatetime", packBean);
|
|
|
|
|
}
|
|
|
|
|
pager = PagerHelper.getPager(pager, mesPullingOrderInfoRepository.findByHqlWhereCount(packBean));
|
|
|
|
|
|
|
|
|
|
List<MesPullingOrderInfo> resultList = mesPullingOrderInfoRepository.findByHqlWherePage(packBean, pager);
|
|
|
|
|
|
|
|
|
|
return new ListPager<>(resultList, pager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void setPackQueryBean(MesPullingOrderInfo bean, DdlPackBean packBean) {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getPullOrderType(), "pullOrderType", packBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getPrintStatus(), "printStatus", packBean);
|
|
|
|
|
//已确认、已扫描、已发送设备
|
|
|
|
|
if (StringUtil.isEmpty(bean.getPullOrderStatus())) {
|
|
|
|
|
DdlPreparedPack.getInPackList(Arrays.asList(
|
|
|
|
|
MesExtEnumUtil.PULL_ORDER_STATUS.KITTING_PULL.getValue(),
|
|
|
|
|
MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue(),
|
|
|
|
|
MesExtEnumUtil.PULL_ORDER_STATUS.SPS_PULL.getValue()), "pullOrderStatus", packBean);
|
|
|
|
|
} else {
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getPullOrderStatus(), "pullOrderStatus", packBean);
|
|
|
|
|
}
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getWorkOrderNo(), "workOrderNo", packBean);
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doMesPullingOrderInfoScan(MesPullingOrderInfo bean, String userName) {
|
|
|
|
|
//校验是不是第一行数据
|
|
|
|
|
DdlPackBean packBeanOne = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBeanOne);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBeanOne);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBeanOne);
|
|
|
|
|
// DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PULL_ORDER_STATUS.KITTING_PULL.getValue(), "pullOrderStatus", packBeanOne);
|
|
|
|
|
MesPullingOrderInfo mesPullingOrderInfo = mesPullingOrderInfoRepository.getByProperty(packBeanOne);
|
|
|
|
|
if (StringUtil.isEmpty(mesPullingOrderInfo)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("扫描拉动单号【%s】查询数据为空", bean.getPullingOrderNo());
|
|
|
|
|
}
|
|
|
|
|
if (mesPullingOrderInfo.getPullOrderStatus() != MesExtEnumUtil.PULL_ORDER_STATUS.KITTING_PULL.getValue()) {
|
|
|
|
|
MesPcnException.throwMesBusiException("扫描拉动单号【%s】拉动单状态不是【已确认】", bean.getPullingOrderNo());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//强过码 如果强过为true 不校验顺序 直接扫描完成修改状态为已扫描 todo
|
|
|
|
|
if ((!Objects.isNull(bean.getIsPass()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == bean.getIsPass())) {
|
|
|
|
|
mesPullingOrderInfo.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(mesPullingOrderInfo, userName);
|
|
|
|
|
mesPullingOrderInfoRepository.update(mesPullingOrderInfo);
|
|
|
|
|
} else {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PULL_ORDER_STATUS.KITTING_PULL.getValue(), "pullOrderStatus", packBean);
|
|
|
|
|
// if (!StringUtil.isEmpty(bean.orderBy())) {
|
|
|
|
|
// packBean.setOrderByStr(bean.orderBy());
|
|
|
|
|
// } else {
|
|
|
|
|
//顺序校验 根据未扫描单号 1 、2 、3,如果没有强过码 必须先扫1 再扫2
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"pullingOrderNo"}, packBean);
|
|
|
|
|
// }
|
|
|
|
|
List<MesPullingOrderInfo> pullingOrderInfos = mesPullingOrderInfoRepository.findByHqlWhere(packBean);
|
|
|
|
|
if (!CollectionUtils.isEmpty(pullingOrderInfos)) {
|
|
|
|
|
//按照排序 依次扫描,如果扫描不按照顺序 报错
|
|
|
|
|
MesPullingOrderInfo pullingOrderInfo = pullingOrderInfos.get(0);
|
|
|
|
|
if (pullingOrderInfo.getPullOrderStatus().equals(mesPullingOrderInfo.getPullOrderStatus())) {
|
|
|
|
|
mesPullingOrderInfo.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(mesPullingOrderInfo, userName);
|
|
|
|
|
mesPullingOrderInfoRepository.update(mesPullingOrderInfo);
|
|
|
|
|
} else {
|
|
|
|
|
MesPcnException.throwMesBusiException("扫描拉动单号【%s】SPS排序单校验顺序错误", bean.getPullingOrderNo());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
MesPcnException.throwMesBusiException("扫描拉动单号产线拉动组【%s】数据为空", bean.getPullingOrderNo());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesPullingOrderInfo> doMesPullingOrderInfoPrint(MesPullingOrderInfo bean, String userName) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
//多选
|
|
|
|
|
if(!StringUtil.isEmpty(bean.getPullCode())){
|
|
|
|
|
DdlPreparedPack.getInPackList(Arrays.asList(bean.getPullCode().split(",")), "pullCode", packBean);
|
|
|
|
|
}
|
|
|
|
|
if(!StringUtil.isEmpty(bean.getWorkCenterCode())){
|
|
|
|
|
DdlPreparedPack.getInPackList(Arrays.asList(bean.getWorkCenterCode().split(",")), "workCenterCode", packBean);
|
|
|
|
|
}
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue(), "printStatus", packBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
|
|
|
|
|
List<MesPullingOrderInfo> pullingOrderInfos = mesPullingOrderInfoRepository.findByHqlWhere(packBean);
|
|
|
|
|
if (!CollectionUtils.isEmpty(pullingOrderInfos)) {
|
|
|
|
|
//把查出来的拉动单打印并修改打印状态为已打印
|
|
|
|
|
for (MesPullingOrderInfo pullingOrderInfo : pullingOrderInfos) {
|
|
|
|
|
//查询拉动组明细
|
|
|
|
|
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(pullingOrderInfo.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(pullingOrderInfo.getPullingOrderNo(), "pullingOrderNo", partPackBean);
|
|
|
|
|
List<MesPullingOrderPartInfo> pullingOrderPartInfos = mesPullingOrderPartInfoRepository.findByHqlWhere(partPackBean);
|
|
|
|
|
if (!CollectionUtils.isEmpty(pullingOrderPartInfos)) {
|
|
|
|
|
pullingOrderInfo.setPartCount(pullingOrderPartInfos.size());
|
|
|
|
|
pullingOrderInfo.setPullingOrderPartInfos(pullingOrderPartInfos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pullingOrderInfo.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(pullingOrderInfo, userName);
|
|
|
|
|
}
|
|
|
|
|
mesPullingOrderInfoRepository.saveAll(pullingOrderInfos);
|
|
|
|
|
}
|
|
|
|
|
return pullingOrderInfos;
|
|
|
|
|
}
|
|
|
|
|
}
|