常熟上料功能

uat-temp-nht-2506120000-jialiao
jason 1 month ago
parent 6233a5f31a
commit 49cee1361f

@ -18,4 +18,7 @@ public interface IMesContainerSnBindService {
@ApiOperation("强制关箱")
MesContainerSnBindModel doClosePackage(MesContainerSnBindModel model);
@ApiOperation("开箱")
MesContainerSnBindModel doOpenPackage(MesContainerSnBindModel model);
}

@ -115,4 +115,20 @@ public class MesContainerSnBindController {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping("/open-package")
@ApiOperation(value = "开箱")
public ResultBean doOpenPackage(@RequestBody MesContainerSnBindModel model) {
try {
ValidatorBean.checkNotNull(model.getContainerSn(), "容器条码不能为空");
ValidatorBean.checkNotNull(model.getOrganizeCode(), "工厂代码不能为空");
ValidatorBean.checkNotNull(model.getUserName(), "操作人不能为空");
containerSnBindService.doOpenPackage(model);
return ResultBean.success("开箱成功");
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesContainerSnBindService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesContainerSnService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPackageContainerSnService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.MesNumberRuleMatchRegularExpressionService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.containerbind.ContainerBindManager;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch.containerbind.checkqty.MesAbstractContainerBindCheckQtyService;
@ -19,6 +20,7 @@ import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBindi
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -50,6 +52,8 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
private MesContainerPackageDetailBindingRepository detailBindingRDao;
@Autowired
private MesNumberRuleMatchRegularExpressionService matchRegularService;
@Autowired
private IMesPackageContainerSnService packageContainerSnService;
private MesContainerType getMesContainerType(String organizeCode, String containerTypeCode) {
MesContainerType containerType = null;
@ -242,6 +246,8 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
if (containerType.getMixType() == null) {
MesPcnException.throwMesBusiException("容器类型代码【%s】未配置混包类型请检查容器类型主数据", containerSn.getContainerTypeCode());
}
// ResultBean containerResult = packageContainerSnService.packageContain(model.getOrganizeCode(), model.getUserName(), model.getContainerSn(), model.getBarCode());
// if (containerResult )
List<MesContainerPackageDetail> packageDetails;
MesContainerPackage containerPackage = containerPackageRDao.getByProperty(
@ -299,6 +305,11 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
containerPackageRDao.save(containerPackage);
}
if (!CollectionUtils.isEmpty(model.getPackageDetails())) {
if (containerPackage != null) {
for (MesContainerPackageDetail packageDetail : model.getPackageDetails()) {
packageDetail.setPid(containerPackage.getId());
}
}
containerPackageDetailRDao.saveAll(model.getPackageDetails());
}
if (!CollectionUtils.isEmpty(model.getBindingList())) {
@ -324,6 +335,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
containerPackageDetailRDao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "isDeleted"},
new Object[]{model.getUserName(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}, ddlPackBean);
containerPackage.setQty(0);
containerPackage.setPackageStatus(MesExtEnumUtil.CONTAINER_PACKAGE_STATUS.STATUS_30.getValue());
ConvertBean.serviceModelUpdate(containerPackage, model.getUserName());
containerPackageRDao.update(containerPackage);
@ -397,6 +409,24 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
return model;
}
@Override
public MesContainerSnBindModel doOpenPackage(MesContainerSnBindModel model) {
//校验容器条码
MesContainerSn containerSn = containerSnService.checkContainerSn(model.getOrganizeCode(), model.getContainerSn());
MesContainerPackage containerPackage = getContainerPackage(model, containerSn);
if (containerPackage == null) {
MesPcnException.throwMesBusiException("容器条码【%s】未生成容器条码上料主表请检查数据", containerSn.getContainerSn());
}
if (!Objects.equals(containerPackage.getPackageStatus(), MesExtEnumUtil.CONTAINER_PACKAGE_STATUS.STATUS_20.getValue())) {
MesPcnException.throwMesBusiException("容器条码【%s】未关箱不能执行开箱操作", containerSn.getContainerSn());
}
containerPackage.setPackageStatus(MesExtEnumUtil.CONTAINER_PACKAGE_STATUS.STATUS_10.getValue());
ConvertBean.serviceModelUpdate(containerPackage, model.getUserName());
containerPackageRDao.update(containerPackage);
return model;
}
private MesContainerPartsModel checkProduceSn(String organizeCode, MesContainerSn containerSn, String barCode, String partNo) {
MesContainerPartsModel model;
MesProduceSn produceSn = produceSnRDao.getByProperty(

@ -0,0 +1,93 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService;
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel;
import cn.estsh.i3plus.pojo.mes.model.StationCustomDialogBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
**/
@Service
@Slf4j
public class MesFunctionDialogContainerSnBindService extends BaseSwsService implements IFsmModuleFunctionService {
@Autowired
private IShippingDispatchService shippingDispatchService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Override
public Boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) {
// this.sendMessage(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(buttonDynamicModel.getFunctionValue()),
// String.format("生产线[%s]工位[%s]电子化检验弹框提交信息成功!提交信息[%s]", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), StringUtils.isEmpty(buttonDynamicModel.getFunctionValue()) ? "合格" : "可疑:" + buttonDynamicModel.getFunctionValue()),
// MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
//
// //functionValue=电子化检验的判断结果
// List<String> inspectionList = StringUtils.isEmpty(buttonDynamicModel.getFunctionValue()) ? null : Arrays.asList(buttonDynamicModel.getFunctionValue().split(MesPcnExtConstWords.COMMA));
//
// Boolean isSaveFlag = false;
// //获取上下文产出条码数据信息集合
// if (!CollectionUtils.isEmpty(inspectionList)) {
// List<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
// if (!CollectionUtils.isEmpty(productionPsOutContextList)) {
// for (MesProductionPsOutContext productionPsOutContext : productionPsOutContextList) {
// if (null == productionPsOutContext) continue;
// if (productionPsOutContext.getQcStatus().compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) != 0
// || !inspectionList.contains(productionPsOutContext.getProductSn())) continue;
// //电子化检验弹框判可疑
// productionPsOutContext.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue());
// isSaveFlag = true;
// }
// //保存上下文产出条码数据信息集合
// if (isSaveFlag) productionDispatchContextStepService.dispatchProductionPsOutContext(reqBean, productionPsOutContextList);
// }
// }
reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean));
reqBean.setInterfaceType(MesPcnConstWords.SHIPPING);
reqBean.setBusiType(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_DO_SCAN.getCode());
reqBean.setButtonCode(buttonDynamicModel.getButtonCode());
reqBean.setStepDialogStatus(true);
shippingDispatchService.sendScanQueueNextExec(reqBean);
return true;
}
@Override
public StationCustomDialogBean stepDialogDispatch(StationRequestBean reqBean, StationCustomDialogBean dialogBean) {
return dialogBean;
//获取上下文产出条码数据信息集合
// List<MesProductionPsOutContext> productionPsOutContext = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
//
// //如果当前存在产出条码列表则返回条码集合
// if (!CollectionUtils.isEmpty(productionPsOutContext)) {
// List<String> snList = productionPsOutContext.stream().filter(o -> !StringUtils.isEmpty(o.getProductSn())).map(MesProductionPsOutContext::getProductSn).distinct().collect(Collectors.toList());
// // 条码列表为空则表示不需要弹框
// if (CollectionUtils.isEmpty(snList)) return dialogBean.unDialog();
// else return dialogBean.obj(snList);
// } else return dialogBean.unDialog();
}
}
Loading…
Cancel
Save