装箱防错演示功能修改

tags/yfai-pcn-ext-v1.0
jun 1 year ago
parent 71375033f9
commit e4ab2342b1

@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesPackage;
import cn.estsh.i3plus.pojo.mes.bean.MesPackageDetail;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.ApiOperation;
import java.util.List;
@ -28,7 +29,7 @@ public interface IMesBoxingErrorProofingService {
void saveMesPackageDetails(List<MesPackageDetail> mesPackage, String userName);
@ApiOperation(value = "更新包装表")
void updateMesPackage(MesPackage mesPackage);
ResultBean updateMesPackage(MesPackage mesPackage);
@ApiOperation(value = "更新包装明细")
void updateMesPackageDetails(MesPackageDetail mesPackage);

@ -96,8 +96,7 @@ public class MesBoxingErrorProofingController {
mesPackage.setOrganizeCode(AuthUtil.getOrganizeCode());
ConvertBean.serviceModelUpdate(mesPackage, AuthUtil.getSessionUser().getUserName());
mesBoxingErrorProofingService.updateMesPackage(mesPackage);
return ResultBean.success("保存成功");
return mesBoxingErrorProofingService.updateMesPackage(mesPackage);
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {

@ -17,6 +17,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.impp.framework.boot.util.ResultBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -104,28 +105,12 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
}
//校验包装条码信息
MesPackage mesPackage = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode());
//校验是否重复扫描
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), "packageNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), "serialNumber", ddlPackBean);
if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) {
MesPcnException.throwMesBusiException("零件条码【%s】已存在该箱不允许重复扫描", mesPackageDetail.getSerialNumber());
}
//校验是否已关闭
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) {
MesPcnException.throwMesBusiException("箱条码已封箱,不允许扫描零件条码");
}
//获取包装定义明细
ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesPackage.getPackageSn(), "packCode", ddlPackBean);
List<MesPackingDefineDetails> defineDetails = mesPackingDefineDetailsRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(defineDetails)) {
MesPcnException.throwMesBusiException("箱类别代号【%s】包装定义明细未维护", mesPackage.getPackageSn());
}
//校验是否包含
String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails);
//物料信息
MesPart mesPart = getPart(mesPackageDetail.getOrganizeCode(), partNo);
//校验条码规则
MesPart mesPart = getMesPart(mesPackageDetail, mesPackage);
//包装规格明细
MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart);
if (mesPackageDetail.getIsMemoryBoolean()) {
@ -139,7 +124,6 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
}
}
@Override
public void saveMesPackageDetails(List<MesPackageDetail> mesPackageDetailList, String userName) {
MesPackageDetail packageDetail = mesPackageDetailList.iterator().next();
@ -147,15 +131,18 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
//校验包装条码信息
MesPackage mesPackage = getMesPackageAndCheck(packageDetail.getPackageNo(), packageDetail.getOrganizeCode());
//去掉重复零件条码
checkSerialNumber(mesPackageDetailList, packageDetail, userName);
List<MesPackageDetail> saveMesPackageDetailList = new ArrayList<>();
checkSerialNumber(saveMesPackageDetailList,mesPackageDetailList, packageDetail, userName);
//保存包装明细
mesPackageDetailRDao.saveAll(mesPackageDetailList);
if(!CollectionUtils.isEmpty(saveMesPackageDetailList)){
mesPackageDetailRDao.saveAll(saveMesPackageDetailList);
}
//更新包装表
updateMesPackage(mesPackage, userName, qty, false);
}
@Override
public void updateMesPackage(MesPackage mesPackage) {
public ResultBean updateMesPackage(MesPackage mesPackage) {
String userName = mesPackage.getModifyUser();
if (Objects.isNull(CommonEnumUtil.TRUE_OR_FALSE.valueOfDescription(mesPackage.getIsSealed()))) {
MesPcnException.throwMesBusiException("是否封箱不能为空");
@ -164,16 +151,24 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
MesPackage mesPackageDb = getMesPackageAndCheck(mesPackage.getPackageNo(), mesPackage.getOrganizeCode());
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) {
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackageDb.getIsSealed()) {
MesPcnException.throwMesBusiException("包装条码【%s】状态为已关箱请勿重复操作", mesPackage.getPackageNo());
MesPcnException.throwMesBusiException("箱条码【%s】状态为已关箱请勿重复操作", mesPackage.getPackageNo());
}
//校验是否存在包装明细
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackage.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesPackage.getPackageNo(), "packageNo", ddlPackBean);
if (!mesPackageDetailRDao.isExitByHql(ddlPackBean)) {
MesPcnException.throwMesBusiException("箱条码【%s】下不存在零件条码不允许关箱", mesPackage.getPackageNo());
}
//关箱
updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true);
} else if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackage.getIsSealed()) {
return ResultBean.success("关箱成功");
} else {
if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackageDb.getIsSealed()) {
MesPcnException.throwMesBusiException("包装条码【%s】状态不为已关箱不需要拆箱", mesPackage.getPackageNo());
MesPcnException.throwMesBusiException("条码【%s】状态不为已关箱不需要拆箱", mesPackage.getPackageNo());
}
//拆箱
unboxing(mesPackage, userName, mesPackageDb);
return ResultBean.success("拆箱成功");
}
}
@ -182,11 +177,13 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
//查询包装条码信息
MesPackage mesPackageDb = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode());
if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackageDb.getIsSealed()) {
MesPcnException.throwMesBusiException("包装条码【%s】不为已关箱状态不允许操作替换条码", mesPackageDetail.getPackageNo());
MesPcnException.throwMesBusiException("条码【%s】不为已关箱状态不允许操作替换条码", mesPackageDetail.getPackageNo());
}
//校验是否重复扫描
List<MesPackageDetail> mesPackageDetails = getMesPackageDetailList(mesPackageDetail);
//校验条码是否符合规则
MesPart mesPart = getMesPart(mesPackageDetail, mesPackageDb);
boolean exist = false;
for (MesPackageDetail packageDetail : mesPackageDetails) {
//替换条码是否已经存在
if (packageDetail.getSerialNumber().equals(mesPackageDetail.getSerialNumber())) {
@ -196,9 +193,15 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
if (packageDetail.getSerialNumber().equals(mesPackageDetail.getOldSerialNumber())) {
packageDetail.setSerialNumber(mesPackageDetail.getSerialNumber());
packageDetail.setOldSerialNumber(mesPackageDetail.getOldSerialNumber());
packageDetail.setPartNo(mesPart.getPartNo());
packageDetail.setPartName(mesPart.getPartName());
ConvertBean.serviceModelUpdate(packageDetail, mesPackageDetail.getModifyUser());
exist = true;
}
}
if(!exist){
MesPcnException.throwMesBusiException("原零件条码【%s】不存在", mesPackageDetail.getOldSerialNumber());
}
mesPackageDetailRDao.saveAll(mesPackageDetails);
}
@ -222,6 +225,37 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
}
}
private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage) {
//校验是否重复扫描
checkSerialNumber(mesPackageDetail);
//获取包装定义明细
List<MesPackingDefineDetails> defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn());
//校验是否包含
String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails);
//物料信息
return getPart(mesPackageDetail.getOrganizeCode(), partNo);
}
private void checkSerialNumber(MesPackageDetail mesPackageDetail) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), "packageNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), "serialNumber", ddlPackBean);
if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) {
MesPcnException.throwMesBusiException("零件条码【%s】已存在该箱不允许重复扫描", mesPackageDetail.getSerialNumber());
}
}
private List<MesPackingDefineDetails> getMesPackingDefineDetails(String organizeCode, String packCode) {
DdlPackBean ddlPackBean;
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(packCode, "packCode", ddlPackBean);
List<MesPackingDefineDetails> defineDetails = mesPackingDefineDetailsRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(defineDetails)) {
MesPcnException.throwMesBusiException("箱类别代号【%s】包装定义明细未维护", packCode);
}
return defineDetails;
}
private void unboxing(MesPackage mesPackage, String userName, MesPackage mesPackageDb) {
//更新包装表
mesPackageDb.setQty(0d);
@ -241,20 +275,21 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
private MesPackage getMesPackageAndCheck(String packageNo, String organizeCode) {
MesPackage mesPackageDb = getMesPackage(organizeCode, packageNo);
if (Objects.isNull(mesPackageDb)) {
MesPcnException.throwMesBusiException("包装条码【%s】信息不存在", packageNo);
MesPcnException.throwMesBusiException("条码【%s】信息不存在", packageNo);
}
return mesPackageDb;
}
private void checkSerialNumber(List<MesPackageDetail> mesPackageDetailList, MesPackageDetail packageDetail, String userName) {
private void checkSerialNumber(List<MesPackageDetail> saveMesPackageDetailList,List<MesPackageDetail> mesPackageDetailList, MesPackageDetail packageDetail, String userName) {
List<MesPackageDetail> mesPackageDetails = getMesPackageDetailList(packageDetail.getOrganizeCode(), packageDetail.getPackageNo());
if (!CollectionUtils.isEmpty(mesPackageDetails)) {
List<String> serialNumberList = mesPackageDetails.stream().map(MesPackageDetail::getSerialNumber).collect(Collectors.toList());
for (MesPackageDetail mesPackageDetail : mesPackageDetailList) {
if (serialNumberList.contains(mesPackageDetail.getSerialNumber())) {
mesPackageDetailList.remove(mesPackageDetail);
}
ConvertBean.serviceModelInitialize(mesPackageDetail, userName);
if (!serialNumberList.contains(mesPackageDetail.getSerialNumber())) {
//校验零件规则
saveMesPackageDetailList.add(mesPackageDetail);
}
}
}
}
@ -319,7 +354,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
}
}
if (Objects.isNull(partNo)) {
MesPcnException.throwMesBusiException("零件条码【%s】未匹配到符合条码规则的数据", mesPackage.getSerialNumber());
MesPcnException.throwMesBusiException("零件条码【%s】未匹配到符合条码规则的数据", mesPackageDetail.getSerialNumber());
}
return partNo;
}

Loading…
Cancel
Save