导入和报工

tags/yfai-mes-ext-v1.0
微笑着面对明天 10 months ago
parent a63d7f4fb1
commit 30d470f43c

@ -1,7 +1,10 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import java.util.List;
/**
* @Description : SAP
* @Reference :
@ -11,5 +14,5 @@ import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
**/
public interface IMesEquipmentVariableService extends IBaseMesService<MesEquipmentVariable> {
List<MesEquipmentVariable> validateReturnImport(List<MesEquipmentVariable> beanList);
}

@ -441,6 +441,7 @@ public abstract class BaseMesController<T extends BaseBean> extends BaseControll
// 校验导入数据
baseService.validateImport(beanList);
String userName = AuthUtil.getSessionUser().getUserName();
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
// 导入数据初始化

@ -1,16 +1,21 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesEquipmentVariableService;
import cn.estsh.i3plus.ext.mes.apiservice.schedulejob.MesWorkOrderProcessCcscTaskToSapJob;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
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.MesEquipment;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
import cn.estsh.i3plus.pojo.mes.bean.MesErpWorkCenter;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
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 java.util.List;
@ -26,6 +31,12 @@ import java.util.List;
@Slf4j
public class MesEquipmentVariableService extends BaseMesService<MesEquipmentVariable> implements IMesEquipmentVariableService {
public static final Logger LOGGER = LoggerFactory.getLogger(MesEquipmentVariableService.class);
@Autowired
private MesEquipmentRepository equipmentRepository;
protected void setPackQueryBean(MesEquipmentVariable bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getEquipmentCode(), "equipmentCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getCode(), "code", packBean);
@ -48,4 +59,33 @@ public class MesEquipmentVariableService extends BaseMesService<MesEquipmentVari
// }
}
}
@Override
public List<MesEquipmentVariable> validateReturnImport(List<MesEquipmentVariable> beanList) {
int i = 1;
for (MesEquipmentVariable item : beanList) {
// 数据校验
if(StringUtil.isEmpty(item.getEquipmentCode())){
LOGGER.info("第{}行,设备代码不能为空", i);
i++;
continue;
}
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备代码不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(), "equipmentCode", seriesPackBean);
MesEquipment itemFlg = equipmentRepository.getByProperty(seriesPackBean);
if (StringUtil.isEmpty(itemFlg)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】设备代码不存在请检查数据", item.getEquipmentCode())
.build();
}
item.setEquipId(itemFlg.getEquipId());
i++;
}
return beanList;
}
}

@ -856,6 +856,22 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty());
mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) {
//查询产线信息
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", packBean);
MesWorkCenter workCenter = mesWorkCenterRDao.getByProperty(packBean);
// 以下则是超工单逻辑
// 如果产线中没有配置超工单,则直接阻断
if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCenter.getIsCheckOrderQty())) {
MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
}
// 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断
double rate = (mesWorkOrder.getReportedQty() - mesWorkOrder.getQty())/mesWorkOrder.getQty();
if (rate > workCenter.getOrderRate()) {
MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), workCenter.getOrderRate());
}
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工",
mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty());
} else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) {

Loading…
Cancel
Save