料包绑定功能开发

tags/yfai-pcn-ext-v2.3
jun 8 months ago
parent b2325f6ce0
commit 2ef4f1e2f0

@ -0,0 +1,37 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesRecyclablePackageBindingModel;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBinding;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBindingDetail;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/9/7 10:27
* @Modify:
**/
public interface IMesRecyclablePackageBindingService {
@ApiOperation("查询回收包装绑定明细")
List<MesRecyclablePackageBindingDetail> findMesRecyclablePackageBindingDetailByPid(String organizeCode, long pid);
@ApiOperation("查询回收包装绑定明细数量")
int findMesRecyclablePackageBindingDetailByPidCount(String organizeCode, long pid);
@ApiOperation("查询回收包装绑定明细")
List<MesRecyclablePackageBindingDetail> findMesRecyclablePackageBindingDetailByProductSn(String organizeCode, String productSn);
@ApiOperation("查询回收包装绑定")
MesRecyclablePackageBinding getMesRecyclablePackageBindingByPackageSn(String organizeCode, String packageSn);
@ApiOperation("查询回收包装绑定明细")
List<MesRecyclablePackageBindingDetail> findMesRecyclablePackageBindingDetail(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel);
@ApiOperation("扫描信息")
MesRecyclablePackageBinding doScan(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel);
}

@ -0,0 +1,34 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackage;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackagePart;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageType;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/9/7 10:27
* @Modify:
**/
public interface IMesRecyclablePackageService {
@ApiOperation("查询回收包装")
MesRecyclablePackage getMesRecyclablePackageByPackageSn(String organizeCode, String packageSn);
@ApiOperation("校验回收包装")
MesRecyclablePackage checkMesRecyclablePackage(String organizeCode, String packageSn);
@ApiOperation("查询回收包装零件")
List<MesRecyclablePackagePart> findMesRecyclablePackagePartByPackageTypeCode(String organizeCode, String packageTypeCode);
@ApiOperation("查询回收包装零件")
MesRecyclablePackagePart getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(String organizeCode, String packageTypeCode, String partNo);
@ApiOperation("查询回收包装类型")
MesRecyclablePackageType getMesRecyclablePackageTypeByPackageTypeCode(String organizeCode, String packageTypeCode);
}

@ -0,0 +1,65 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi.recyclablepackage;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageBindingService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesRecyclablePackageBindingModel;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/9/6 16:35
* @Modify:
**/
@RestController
@Api(tags = "料箱绑定")
@RequestMapping(MesCommonConstant.MES_YANFEN + "/recyclable-package-binding")
@Slf4j
public class MesRecyclablePackageBindingController {
@Autowired
private IMesRecyclablePackageBindingService mesRecyclablePackageBindingService;
@GetMapping("/recyclable-package-binding-detail/query")
@ApiOperation(value = "查询绑定信息")
public ResultBean findMesRecyclablePackageBindingDetail(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
try {
ValidatorBean.checkNotNull(mesRecyclablePackageBindingModel.getPackageSn(), "包条码不能为空");
ValidatorBean.checkNotNull(mesRecyclablePackageBindingModel.getOrganizeCode(), "工厂代码不能为空");
return ResultBean.success("查询成功").setResultList(mesRecyclablePackageBindingService.findMesRecyclablePackageBindingDetail(mesRecyclablePackageBindingModel));
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping("/doScan")
@ApiOperation(value = "扫描信息")
public ResultBean doScan(@RequestBody MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
try {
ValidatorBean.checkNotNull(mesRecyclablePackageBindingModel.getPackageSn(), "包条码不能为空");
ValidatorBean.checkNotNull(mesRecyclablePackageBindingModel.getOrganizeCode(), "工厂代码不能为空");
ValidatorBean.checkNotNull(mesRecyclablePackageBindingModel.getType(), "操作类型不能为空");
ValidatorBean.checkNotNull(mesRecyclablePackageBindingModel.getUserName(), "操作人不能为空");
return ResultBean.success("操作成功").setResultObject(mesRecyclablePackageBindingService.doScan(mesRecyclablePackageBindingModel));
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -0,0 +1,275 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.recyclablepackage;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageBindingService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesRecyclablePackageBindingModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
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.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPartSap;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackage;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBinding;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBindingDetail;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackagePart;
import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/9/7 10:20
* @Modify:
**/
@Service
@Slf4j
public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePackageBindingService {
@Autowired
private IMesRecyclablePackageService mesRecyclablePackageService;
@Autowired
private MesRecyclablePackageBindingRepository mesRecyclablePackageBindingRepository;
@Autowired
private MesRecyclablePackageBindingDetailRepository mesRecyclablePackageBindingDetailRepository;
@Autowired
private IMesProduceSnExtService mesProduceSnExtService;
@Autowired
private IMesPartService mesPartService;
@Override
public List<MesRecyclablePackageBindingDetail> findMesRecyclablePackageBindingDetailByPid(String organizeCode, long pid) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(pid)) {
return null;
}
return mesRecyclablePackageBindingDetailRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PID},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), pid});
}
@Override
public int findMesRecyclablePackageBindingDetailByPidCount(String organizeCode, long pid) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(pid)) {
return MesPcnExtConstWords.ZERO;
}
return mesRecyclablePackageBindingDetailRepository.findByPropertyCount(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PID},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), pid});
}
@Override
public List<MesRecyclablePackageBindingDetail> findMesRecyclablePackageBindingDetailByProductSn(String organizeCode, String productSn) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(productSn)) {
return null;
}
return mesRecyclablePackageBindingDetailRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PRODUCT_SN},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), productSn});
}
@Override
public MesRecyclablePackageBinding getMesRecyclablePackageBindingByPackageSn(String organizeCode, String packageSn) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(packageSn)) {
return null;
}
return mesRecyclablePackageBindingRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACKAGE_SN},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packageSn});
}
@Override
public List<MesRecyclablePackageBindingDetail> findMesRecyclablePackageBindingDetail(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
//回收包装绑定
MesRecyclablePackageBinding mesRecyclablePackageBinding = getMesRecyclablePackageBindingByPackageSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
if (Objects.isNull(mesRecyclablePackageBinding)) {
return null;
}
//回收包装绑定明细
return findMesRecyclablePackageBindingDetailByPid(mesRecyclablePackageBinding.getOrganizeCode(), mesRecyclablePackageBinding.getId());
}
@Override
public MesRecyclablePackageBinding doScan(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
MesRecyclablePackageBinding mesRecyclablePackageBinding = null;
switch (mesRecyclablePackageBindingModel.getType()) {
//扫描包条码
case 10:
mesRecyclablePackageBinding = doScanPackageSn(mesRecyclablePackageBindingModel);
break;
//扫描零件条码
case 20:
mesRecyclablePackageBinding = doScanProductSn(mesRecyclablePackageBindingModel);
break;
//清空
case 30:
mesRecyclablePackageBinding = deletedMesRecyclablePackageBindingDetail(mesRecyclablePackageBindingModel, true);
break;
//删除
case 40:
mesRecyclablePackageBinding = deletedMesRecyclablePackageBindingDetail(mesRecyclablePackageBindingModel, false);
break;
//关箱
case 50:
mesRecyclablePackageBinding = updateClosePackageBinding(mesRecyclablePackageBindingModel);
break;
default:
MesPcnException.throwMesBusiException("扫描类型【%s】不存在", mesRecyclablePackageBindingModel.getType());
break;
}
return mesRecyclablePackageBinding;
}
private MesRecyclablePackageBinding doScanPackageSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
//校验包装
MesRecyclablePackage mesRecyclablePackage = mesRecyclablePackageService.checkMesRecyclablePackage(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
//绑定主表信息
MesRecyclablePackageBinding mesRecyclablePackageBinding = getMesRecyclablePackageBindingByPackageSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
if (Objects.isNull(mesRecyclablePackageBinding)) {
//保存包装
mesRecyclablePackageBinding = insertMesRecyclablePackageBinding(mesRecyclablePackageBindingModel, mesRecyclablePackage.getPackageTypeCode());
}
return mesRecyclablePackageBinding;
}
private MesRecyclablePackageBinding doScanProductSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
ValidatorBean.checkNotNull(mesRecyclablePackageBindingModel.getProductSn(), "零件条码不能为空");
//校验箱
MesRecyclablePackageBinding mesRecyclablePackageBinding = getPackageBinding(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
if (MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.CLOSED.getValue() == mesRecyclablePackageBinding.getStatus()) {
MesPcnException.throwMesBusiException("包条码【%s】已关箱", mesRecyclablePackageBinding.getPackageSn());
}
//校验零件条码是否扫描
checkIsScan(mesRecyclablePackageBindingModel);
//条码信息
MesProduceSn mesProduceSn = getMesProduceSn(mesRecyclablePackageBindingModel);
//记录绑定明细
insertMesRecyclablePackageBindingDetail(mesRecyclablePackageBindingModel.getUserName(), mesRecyclablePackageBinding, mesProduceSn);
//更新数量
mesRecyclablePackageBinding.setTotalQty(findMesRecyclablePackageBindingDetailByPidCount(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBinding.getId()));
//自动关箱
if (getRecyclablePackagePart(mesRecyclablePackageBindingModel, mesRecyclablePackageBinding.getPackageTypeCode(), mesProduceSn.getPartNo()).getQty().intValue() <= mesRecyclablePackageBinding.getTotalQty()) {
mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.CLOSED.getValue());
}
ConvertBean.serviceModelUpdate(mesRecyclablePackageBinding, mesRecyclablePackageBindingModel.getUserName());
mesRecyclablePackageBindingRepository.update(mesRecyclablePackageBinding);
return mesRecyclablePackageBinding;
}
private void checkIsScan(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
List<MesRecyclablePackageBindingDetail> detailByProductSn = findMesRecyclablePackageBindingDetailByProductSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn());
if (!CollectionUtils.isEmpty(detailByProductSn)) {
MesPcnException.throwMesBusiException("零件条码【%s】已绑定请勿重复绑定", mesRecyclablePackageBindingModel.getProductSn());
}
}
private MesProduceSn getMesProduceSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
List<MesProduceSn> produceSnList = mesProduceSnExtService.getProduceSnList(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn());
if (CollectionUtils.isEmpty(produceSnList)) {
MesPcnException.throwMesBusiException("条码【%s】信息不存在", mesRecyclablePackageBindingModel.getProductSn());
}
return produceSnList.stream().sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()).iterator().next();
}
private MesRecyclablePackagePart getRecyclablePackagePart(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, String packageTypeCode, String partNo) {
MesPartSap mesPartSapByPartNo = mesPartService.getMesPartSapByPartNo(partNo, mesRecyclablePackageBindingModel.getOrganizeCode());
MesRecyclablePackagePart recyclablePackagePart = mesRecyclablePackageService.getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(mesRecyclablePackageBindingModel.getOrganizeCode(), packageTypeCode, mesPartSapByPartNo.getPartNo());
if (Objects.isNull(recyclablePackagePart)) {
MesPcnException.throwMesBusiException("条码【%s】找不到对应的零件", mesRecyclablePackageBindingModel.getProductSn());
}
return recyclablePackagePart;
}
private void insertMesRecyclablePackageBindingDetail(String userName, MesRecyclablePackageBinding mesRecyclablePackageBinding, MesProduceSn mesProduceSn) {
MesRecyclablePackageBindingDetail mesRecyclablePackageBindingDetail = new MesRecyclablePackageBindingDetail();
mesRecyclablePackageBindingDetail.setOrganizeCode(mesRecyclablePackageBinding.getOrganizeCode());
mesRecyclablePackageBindingDetail.setPid(mesRecyclablePackageBinding.getId());
mesRecyclablePackageBindingDetail.setProductSn(mesProduceSn.getProductSn());
mesRecyclablePackageBindingDetail.setPartNo(mesProduceSn.getPartNo());
mesRecyclablePackageBindingDetail.setPartName(mesProduceSn.getPartName());
mesRecyclablePackageBindingDetail.setQty(MesPcnExtConstWords.ONE);
mesRecyclablePackageBindingDetail.setStatus(MesPcnExtConstWords.ZERO);
mesRecyclablePackageBindingDetail.setLotNumber(mesProduceSn.getLotNo());
ConvertBean.serviceModelInitialize(mesRecyclablePackageBindingDetail, userName);
mesRecyclablePackageBindingDetailRepository.insert(mesRecyclablePackageBindingDetail);
}
private MesRecyclablePackageBinding insertMesRecyclablePackageBinding(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, String packageTypeCode) {
MesRecyclablePackageBinding mesRecyclablePackageBinding = new MesRecyclablePackageBinding();
mesRecyclablePackageBinding.setOrganizeCode(mesRecyclablePackageBindingModel.getOrganizeCode());
mesRecyclablePackageBinding.setPackageSn(mesRecyclablePackageBindingModel.getPackageSn());
mesRecyclablePackageBinding.setHangerPackageSn(mesRecyclablePackageBindingModel.getPackageSn());
mesRecyclablePackageBinding.setPackageTypeCode(packageTypeCode);
mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.UNCLOSED.getValue());
mesRecyclablePackageBinding.setTotalQty(MesPcnExtConstWords.ZERO);
mesRecyclablePackageBinding.setFid(UUID.randomUUID().toString());
ConvertBean.serviceModelInitialize(mesRecyclablePackageBinding, mesRecyclablePackageBindingModel.getUserName());
return mesRecyclablePackageBindingRepository.insert(mesRecyclablePackageBinding);
}
private MesRecyclablePackageBinding deletedMesRecyclablePackageBindingDetail(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, boolean deleteAll) {
if (!deleteAll && (Objects.isNull(mesRecyclablePackageBindingModel.getDetailsIds()) || mesRecyclablePackageBindingModel.getDetailsIds().length <= 0)) {
MesPcnException.throwMesBusiException("请选择要删除的数据");
}
//删除数据
MesRecyclablePackageBinding mesRecyclablePackageBinding = getPackageBinding(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesRecyclablePackageBindingModel.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(mesRecyclablePackageBinding.getId(), "pid", packBean);
DdlPreparedPack.getInPackArray(mesRecyclablePackageBindingModel.getDetailsIds(), "id", packBean);
mesRecyclablePackageBindingDetailRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "isDeleted"},
new Object[]{mesRecyclablePackageBindingModel.getUserName(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}, packBean);
//更新数量
mesRecyclablePackageBinding.setTotalQty(findMesRecyclablePackageBindingDetailByPidCount(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBinding.getId()));
ConvertBean.serviceModelUpdate(mesRecyclablePackageBinding, mesRecyclablePackageBindingModel.getUserName());
mesRecyclablePackageBindingRepository.update(mesRecyclablePackageBinding);
return mesRecyclablePackageBinding;
}
private MesRecyclablePackageBinding updateClosePackageBinding(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) {
MesRecyclablePackageBinding mesRecyclablePackageBinding = getPackageBinding(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn());
if (MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.CLOSED.getValue() == mesRecyclablePackageBinding.getStatus()) {
MesPcnException.throwMesBusiException("包条码【%s】已关不能重复关箱请重新扫描", mesRecyclablePackageBinding.getPackageSn());
}
if (findMesRecyclablePackageBindingDetailByPidCount(mesRecyclablePackageBinding.getOrganizeCode(), mesRecyclablePackageBinding.getId()) <= MesPcnExtConstWords.ZERO) {
MesPcnException.throwMesBusiException("包条码【%s】明细不能为空请扫描零件明细", mesRecyclablePackageBinding.getPackageSn());
}
//更新未关箱状态
mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.CLOSED.getValue());
ConvertBean.serviceModelUpdate(mesRecyclablePackageBinding, mesRecyclablePackageBindingModel.getUserName());
mesRecyclablePackageBindingRepository.update(mesRecyclablePackageBinding);
return mesRecyclablePackageBinding;
}
private MesRecyclablePackageBinding getPackageBinding(String organizeCode, String packageSn) {
MesRecyclablePackageBinding mesRecyclablePackageBinding = getMesRecyclablePackageBindingByPackageSn(organizeCode, packageSn);
if (Objects.isNull(mesRecyclablePackageBinding)) {
MesPcnException.throwMesBusiException("回收包装【%s】绑定信息不存在", packageSn);
}
return mesRecyclablePackageBinding;
}
}

@ -0,0 +1,91 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.recyclablepackage;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackage;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackagePart;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageType;
import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackagePartRepository;
import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageRepository;
import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageTypeRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/9/7 10:20
* @Modify:
**/
@Service
@Slf4j
public class MesRecyclablePackageServiceImpl implements IMesRecyclablePackageService {
@Autowired
private MesRecyclablePackageRepository mesRecyclablePackageRepository;
@Autowired
private MesRecyclablePackagePartRepository mesRecyclablePackagePartRepository;
@Autowired
private MesRecyclablePackageTypeRepository mesRecyclablePackageTypeRepository;
@Override
public MesRecyclablePackage getMesRecyclablePackageByPackageSn(String organizeCode, String packageSn) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(packageSn)) {
return null;
}
return mesRecyclablePackageRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACKAGE_SN},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packageSn});
}
@Override
public MesRecyclablePackage checkMesRecyclablePackage(String organizeCode, String packageSn) {
MesRecyclablePackage recyclablePackage = this.getMesRecyclablePackageByPackageSn(organizeCode, packageSn);
if (Objects.isNull(recyclablePackage)) {
MesPcnException.throwMesBusiException("包条码【%s】信息不存在", packageSn);
}
return recyclablePackage;
}
@Override
public List<MesRecyclablePackagePart> findMesRecyclablePackagePartByPackageTypeCode(String organizeCode, String packageTypeCode) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(packageTypeCode)) {
return null;
}
return mesRecyclablePackagePartRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACKAGE_TYPE_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packageTypeCode});
}
@Override
public MesRecyclablePackagePart getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(String organizeCode, String packageTypeCode, String partNo) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(packageTypeCode) || StringUtil.isEmptyAndNull(partNo)) {
return null;
}
return mesRecyclablePackagePartRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACKAGE_TYPE_CODE, MesPcnExtConstWords.PART_NO},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packageTypeCode, partNo});
}
@Override
public MesRecyclablePackageType getMesRecyclablePackageTypeByPackageTypeCode(String organizeCode, String packageTypeCode) {
if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(packageTypeCode)) {
return null;
}
return mesRecyclablePackageTypeRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACKAGE_TYPE_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packageTypeCode});
}
}

@ -0,0 +1,34 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import io.swagger.annotations.ApiParam;
import lombok.Builder;
import lombok.Data;
/**
* @Description :
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/9/6 16:37
* @Modify:
**/
@Data
@Builder
public class MesRecyclablePackageBindingModel {
@ApiParam("操作人")
private String userName;
@ApiParam("工厂代码")
private String organizeCode;
@ApiParam("包条码")
private String packageSn;
@ApiParam("零件条码")
private String productSn;
@ApiParam("操作类型")
private Integer type;
@ApiParam("删除明细ID")
private Long[] detailsIds;
}

@ -181,6 +181,11 @@ public class MesPcnExtConstWords {
public static final String CAR_MODEL_CODE = "carModelCode";
// 客户订单号
public static final String CUST_ORDER_NO = "custOrderNo";
//包条码
public static final String PACKAGE_SN = "packageSn";
//包类型
public static final String PACKAGE_TYPE_CODE = "packageTypeCode";
// 客制化条码长度:通用
public static final Integer CUSTOMER_SN_LENGTH_GM = 58;

Loading…
Cancel
Save