|
|
|
@ -111,7 +111,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
log.info("出货检验主数据 --- result[{}] --- 线程ID[{}]", result.toBaseString(), Thread.currentThread().getName());
|
|
|
|
|
|
|
|
|
|
//初始化界面
|
|
|
|
|
if (StringUtils.isEmpty(result.getSn()) && StringUtils.isEmpty(result.getSerialNumber()) && StringUtils.isEmpty(result.getIdStr())) return noDetailResult(result, model);
|
|
|
|
|
if (StringUtils.isEmpty(result.getSn()) && StringUtils.isEmpty(result.getProductSn()) && StringUtils.isEmpty(result.getIdStr())) return noDetailResult(result, model);
|
|
|
|
|
|
|
|
|
|
//组件
|
|
|
|
|
if (!StringUtils.isEmpty(result.getIdStr())) return queryOqcManageDataById(result, lastScanInfo, key, model);
|
|
|
|
@ -150,7 +150,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
if (!StringUtils.isEmpty(lastScanInfo)) {
|
|
|
|
|
if (lastScanInfo instanceof String) {
|
|
|
|
|
String[] snArr = lastScanInfo.toString().split(MesPcnExtConstWords.COMMA);
|
|
|
|
|
result.setSerialNumber(snArr[0]);
|
|
|
|
|
//result.setSerialNumber(snArr[0]);
|
|
|
|
|
result.setProductSn(snArr[0]);
|
|
|
|
|
if (snArr.length > 1) {
|
|
|
|
|
result.setGoodsCode(snArr[1]);
|
|
|
|
@ -165,7 +165,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
result.setIdStr(lastScanInfo.toString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(result.getSn()) && StringUtils.isEmpty(result.getSerialNumber()) && StringUtils.isEmpty(result.getIdStr())) {
|
|
|
|
|
if (StringUtils.isEmpty(result.getSn()) && StringUtils.isEmpty(result.getProductSn()) && StringUtils.isEmpty(result.getIdStr())) {
|
|
|
|
|
result.setMsg("请扫描产品条码");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -299,7 +299,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
private void checkSnIsNull(JxOqcManageModel result, String oqcNo) {
|
|
|
|
|
if (StringUtils.isEmpty(result.getSn())) {
|
|
|
|
|
if (StringUtils.isEmpty(result.getGoodsCode())) {
|
|
|
|
|
result.setMsg(String.format("继上次扫描,产品条码[%s],请继续扫描商品码", result.getSerialNumber()));
|
|
|
|
|
result.setMsg(String.format("继上次扫描,产品条码[%s],请继续扫描商品码", result.getProductSn()));
|
|
|
|
|
}
|
|
|
|
|
//else if (StringUtils.isEmpty(result.getPackageNo())) {
|
|
|
|
|
// result.setMsg(String.format("继上次扫描,产品条码[%s]商品码[%s],请继续扫描包装条码", result.getSerialNumber(), result.getGoodsCode()));
|
|
|
|
@ -307,9 +307,9 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
// result.setMsg(String.format("继上次扫描,产品条码[%s]商品码[%s]包装条码[%s],请继续扫描商品码", result.getSerialNumber(), result.getGoodsCode(), result.getPackageNo()));
|
|
|
|
|
//}
|
|
|
|
|
} else {
|
|
|
|
|
if (!StringUtils.isEmpty(result.getGoodsCode2())) {
|
|
|
|
|
result.setMsg("请先点击重置,再重新扫描");
|
|
|
|
|
}
|
|
|
|
|
//if (!StringUtils.isEmpty(result.getGoodsCode2())) {
|
|
|
|
|
// result.setMsg("请先点击重置,再重新扫描");
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(result.getMsg())) result.setOqcNo(oqcNo);
|
|
|
|
@ -323,7 +323,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
params.put(MesPcnExtConstWords.CLASS_NAME, clazz);
|
|
|
|
|
if (StringUtils.isEmpty(result.getIdStr())) {
|
|
|
|
|
//成品
|
|
|
|
|
params.put(MesPcnExtConstWords.VALUE, !StringUtils.isEmpty(result.getSerialNumber()) ? result.getSerialNumber() : result.getSn());
|
|
|
|
|
params.put(MesPcnExtConstWords.VALUE, !StringUtils.isEmpty(result.getProductSn()) ? result.getProductSn() : result.getSn());
|
|
|
|
|
params.put(MesPcnExtConstWords.DATA_TYPE,
|
|
|
|
|
(MesPcnExtEnumUtil.OQC_CHECK_TYPE.TEARDOWN_INSPECTION.getValue() == result.getOqcNoType() || !StringUtils.isEmpty(result.getOqcNo())) ? MesPcnExtEnumUtil.TRUE_OR_FALSE.FALSE.getValueStr() : MesPcnExtEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr());
|
|
|
|
|
} else {
|
|
|
|
@ -335,9 +335,9 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkScanIsFinish(JxOqcManageModel result, SxBuOqcDataModel dataFromPcn, Object lastScanInfo, String key) {
|
|
|
|
|
if (StringUtils.isEmpty(result.getSerialNumber())) {
|
|
|
|
|
result.setSerialNumber(result.getSn());
|
|
|
|
|
result.setMsg(String.format("产品条码[%s]扫描成功,请继续扫描商品码", result.getSerialNumber()));
|
|
|
|
|
if (StringUtils.isEmpty(result.getProductSn())) {
|
|
|
|
|
result.setProductSn(result.getSn());
|
|
|
|
|
result.setMsg(String.format("产品条码[%s]扫描成功,请继续扫描商品码", result.getProductSn()));
|
|
|
|
|
} else {
|
|
|
|
|
result.setGoodsCode(result.getSn());
|
|
|
|
|
}
|
|
|
|
@ -345,7 +345,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
//验证物料
|
|
|
|
|
MesPartExt partDb = checkPartValidBySn(result, dataFromPcn.getPartNo(), lastScanInfo);
|
|
|
|
|
//验证商品码
|
|
|
|
|
checkGoodsCodeValid(partDb, result.getGoodsCode(), result.getSerialNumber());
|
|
|
|
|
checkGoodsCodeValid(partDb, result.getGoodsCode(), result.getProductSn());
|
|
|
|
|
|
|
|
|
|
//缓存用户扫描信息
|
|
|
|
|
if (!StringUtils.isEmpty(result.getSn())) redisMesPcn.putHash(key, result.getUserId(),
|
|
|
|
@ -368,28 +368,28 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("出货检验:产品条码[%s]关联的物料编码[%s]不存在%s", result.getSerialNumber(), partNo, msg)
|
|
|
|
|
.setErrorDetail("出货检验:产品条码[%s]关联的物料编码[%s]不存在%s", result.getProductSn(), partNo, msg)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(partDb.getCategoryCode3()) || !partDb.getCategoryCode3().equals(MesPcnExtEnumUtil.OQC_MANAGE_ACTION_TYPE.SERIAL_NUMBER.getValue())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("出货检验:产品条码[%s]关联的物料编码[%s]的产品类型不是成品%s", result.getSerialNumber(), partNo, msg)
|
|
|
|
|
.setErrorDetail("出货检验:产品条码[%s]关联的物料编码[%s]的产品类型不是成品%s", result.getProductSn(), partNo, msg)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(partDb.getIsOqc()) || CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == partDb.getIsOqc()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("出货检验:产品条码[%s]关联的物料编码[%s]不支持出货检验%s", result.getSerialNumber(), partNo, msg)
|
|
|
|
|
.setErrorDetail("出货检验:产品条码[%s]关联的物料编码[%s]不支持出货检验%s", result.getProductSn(), partNo, msg)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(partDb.getGoodsCode())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("出货检验:产品条码[%s]关联的物料编码[%s]未维护商品码%s", result.getSerialNumber(), partNo, msg)
|
|
|
|
|
.setErrorDetail("出货检验:产品条码[%s]关联的物料编码[%s]未维护商品码%s", result.getProductSn(), partNo, msg)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
return partDb;
|
|
|
|
@ -439,6 +439,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
result.setCompleteQty(dataFromPcn.getCompleteQty());
|
|
|
|
|
result.setIdStr(dataFromPcn.getIdStr());
|
|
|
|
|
result.setSerialNumber(dataFromPcn.getSerialNumber());
|
|
|
|
|
result.setProductSn(dataFromPcn.getProductSn());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private JxOqcManageModel queryOqcManageDataBySn(JxOqcManageModel result, JxOqcManageParamModel model, SxBuOqcDataModel dataFromPcn) {
|
|
|
|
@ -448,7 +449,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
MesOutPutStatisticsOqc outPutStatisticsOqcDb = getOutPutStatisticsOqcBySn(result, "出货检验");
|
|
|
|
|
|
|
|
|
|
//获取出货检验单据集合
|
|
|
|
|
List<MesOqcCheck> oqcCheckList = oqcCheckService.getOqcCheckListBySn(result.getOrganizeCode(), result.getWorkOrderNo(), result.getSerialNumber());
|
|
|
|
|
List<MesOqcCheck> oqcCheckList = oqcCheckService.getOqcCheckListByProductSn(result.getOrganizeCode(), result.getWorkOrderNo(), result.getProductSn());
|
|
|
|
|
|
|
|
|
|
log.info("MES_PCN出货检验主数据 --- 成品出货检验 --- oqcCheckList.size[{}] --- 线程ID[{}]", CollectionUtils.isEmpty(oqcCheckList) ? 0 : oqcCheckList.size(), Thread.currentThread().getName());
|
|
|
|
|
|
|
|
|
@ -472,7 +473,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("%s:产品条码[%s]作业时间[%s]班次代码[%s]关联的%s[%s]未查询到产量统计出货检验关联数据",
|
|
|
|
|
msg, result.getSerialNumber(), result.getWorkTime(), result.getShiftCode(), result.getWorkOrderTypeName(), result.getWorkOrderNo())
|
|
|
|
|
msg, result.getProductSn(), result.getWorkTime(), result.getShiftCode(), result.getWorkOrderTypeName(), result.getWorkOrderNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
return outPutStatisticsOqcDb;
|
|
|
|
@ -487,7 +488,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
private MesOqcCheck getOqcCheckBySn(JxOqcManageModel result, List<MesOqcCheck> oqcCheckList, String oqcNo) {
|
|
|
|
|
if (CollectionUtils.isEmpty(oqcCheckList)) {
|
|
|
|
|
//验证是否已关联检验单
|
|
|
|
|
checkSnIsChecked(result.getOrganizeCode(), result.getWorkOrderNo(), result.getSerialNumber(), "出货检验");
|
|
|
|
|
checkSnIsChecked(result.getOrganizeCode(), result.getWorkOrderNo(), result.getProductSn(), "出货检验");
|
|
|
|
|
} else {
|
|
|
|
|
if (StringUtils.isEmpty(oqcNo)) {
|
|
|
|
|
List<MesOqcCheck> unFinishOqcCheckList = oqcCheckList.stream().filter(o -> (null != o &&
|
|
|
|
@ -512,22 +513,22 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkSnIsChecked(String organizeCode, String workOrderNo, String serialNumber, String msg) {
|
|
|
|
|
MesOqcCheckPackageDetail oqcCheckPackageDetail = oqcCheckService.getOqcCheckPackageDetailByOrderNoAndSn(organizeCode, workOrderNo, serialNumber);
|
|
|
|
|
private void checkSnIsChecked(String organizeCode, String workOrderNo, String productSn, String msg) {
|
|
|
|
|
MesOqcCheckPackageDetail oqcCheckPackageDetail = oqcCheckService.getOqcCheckPackageDetailByOrderNoAndProductSn(organizeCode, workOrderNo, productSn);
|
|
|
|
|
if (null != oqcCheckPackageDetail) {
|
|
|
|
|
MesOqcCheck oqcCheck = oqcCheckService.getOqcCheckByOqcNo(organizeCode, oqcCheckPackageDetail.getOqcNo());
|
|
|
|
|
if (null == oqcCheck) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("%s:产品条码[%s]已关联到出货检验单[%s],但是单据信息不存在", msg, serialNumber, oqcCheckPackageDetail.getOqcNo())
|
|
|
|
|
.setErrorDetail("%s:产品条码[%s]已关联到出货检验单[%s],但是单据信息不存在", msg, productSn, oqcCheckPackageDetail.getOqcNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("%s:产品条码[%s]已关联到%s出货检验单[%s],可以扫描产品条码[%s]查询详情",
|
|
|
|
|
msg, serialNumber, MesPcnExtEnumUtil.OQC_TYPE.NORMAL.getValue() == oqcCheck.getOqcType() ? "" : "手动检验", oqcCheckPackageDetail.getOqcNo(), oqcCheck.getSerialNumber())
|
|
|
|
|
msg, productSn, MesPcnExtEnumUtil.OQC_TYPE.NORMAL.getValue() == oqcCheck.getOqcType() ? "" : "手动检验", oqcCheckPackageDetail.getOqcNo(), oqcCheck.getProductSn())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -585,9 +586,9 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
|
|
|
|
|
private void packInitResultBySn(JxOqcManageModel result, SxBuOqcDataModel dataFromPcn) {
|
|
|
|
|
if (!StringUtils.isEmpty(result.getSn())) {
|
|
|
|
|
result.setMsg(String.format("商品码[%s]扫描成功,产品条码[%s]可生成出货检验单", result.getSn(), result.getSerialNumber()));
|
|
|
|
|
result.setMsg(String.format("商品码[%s]扫描成功,产品条码[%s]可生成出货检验单", result.getSn(), result.getProductSn()));
|
|
|
|
|
} else {
|
|
|
|
|
result.setMsg(String.format("继上次扫描,产品条码[%s]商品码[%s],可生成出货检验单", result.getSerialNumber(), result.getGoodsCode()));
|
|
|
|
|
result.setMsg(String.format("继上次扫描,产品条码[%s]商品码[%s],可生成出货检验单", result.getProductSn(), result.getGoodsCode()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<MesOqcCheckPackageDetail> oqcCheckPackageDetailList = oqcCheckService.getOqcCheckPackageDetailListByOrderNoAndWorkTime(result.getOrganizeCode(), result.getWorkOrderNo(), result.getWorkTime(), result.getShiftCode());
|
|
|
|
@ -617,7 +618,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Double getProdMapListSizeWithoutChecked(List<Map<String, String>> prodMapList, List<MesOqcCheckPackageDetail> oqcCheckPackageDetailList) {
|
|
|
|
|
List<String> snList = oqcCheckPackageDetailList.stream().filter(o -> null != o).map(MesOqcCheckPackageDetail::getSerialNumber).collect(Collectors.toList());
|
|
|
|
|
List<String> snList = oqcCheckPackageDetailList.stream().filter(o -> null != o).map(MesOqcCheckPackageDetail::getProductSn).collect(Collectors.toList());
|
|
|
|
|
//boolean isNeedBigPackFlag = false;
|
|
|
|
|
//if(!CollectionUtils.isEmpty(prodMapList.stream().filter(o -> (null != o && o.get(MesPcnExtConstWords.IS_NEED_BIG_PACK_NO) != null)).collect(Collectors.toList()))){
|
|
|
|
|
// isNeedBigPackFlag = true;
|
|
|
|
@ -972,11 +973,11 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
if (!StringUtils.isEmpty(result.getIdStr())) insertOqcManageDataNormalById(result, model);
|
|
|
|
|
|
|
|
|
|
//成品
|
|
|
|
|
if (!StringUtils.isEmpty(result.getSerialNumber())) insertOqcManageDataNormalBySn(result, model);
|
|
|
|
|
if (!StringUtils.isEmpty(result.getProductSn())) insertOqcManageDataNormalBySn(result, model);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkCachedDataIsWhole(JxOqcManageModel result) {
|
|
|
|
|
if (StringUtils.isEmpty(result.getIdStr()) && (StringUtils.isEmpty(result.getSerialNumber()) ||
|
|
|
|
|
if (StringUtils.isEmpty(result.getIdStr()) && (StringUtils.isEmpty(result.getProductSn()) ||
|
|
|
|
|
StringUtils.isEmpty(result.getGoodsCode()))) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
@ -1147,7 +1148,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
log.info("MES_PCN出货检验生成检验单 --- 成品出货检验 --- result[{}] --- 线程ID[{}]", result.toString(), Thread.currentThread().getName());
|
|
|
|
|
|
|
|
|
|
//获取出货检验单据集合
|
|
|
|
|
List<MesOqcCheck> oqcCheckList = oqcCheckService.getOqcCheckListBySn(result.getOrganizeCode(), result.getWorkOrderNo(), result.getSerialNumber());
|
|
|
|
|
List<MesOqcCheck> oqcCheckList = oqcCheckService.getOqcCheckListByProductSn(result.getOrganizeCode(), result.getWorkOrderNo(), result.getProductSn());
|
|
|
|
|
|
|
|
|
|
//验证当前条码是否可以生成单据
|
|
|
|
|
checkSnIsAllowGenOqc(result, oqcCheckList);
|
|
|
|
@ -1170,14 +1171,14 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]不存在,请点击重置", result.getSerialNumber(), dataFromPcn.getPartNo())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]不存在,请点击重置", result.getProductSn(), dataFromPcn.getPartNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(partDb.getCategoryCode3()) || !partDb.getCategoryCode3().equals(MesPcnExtEnumUtil.OQC_MANAGE_ACTION_TYPE.SERIAL_NUMBER.getValue())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]的产品类型不是成品,请点击重置", result.getSerialNumber(), dataFromPcn.getPartNo())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]的产品类型不是成品,请点击重置", result.getProductSn(), dataFromPcn.getPartNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1185,14 +1186,14 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]不支持出货检验,请点击重置", result.getSerialNumber(), dataFromPcn.getPartNo())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]不支持出货检验,请点击重置", result.getProductSn(), dataFromPcn.getPartNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(partDb.getGoodsCode())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]未维护商品码,请点击重置", result.getSerialNumber(), dataFromPcn.getPartNo())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]未维护商品码,请点击重置", result.getProductSn(), dataFromPcn.getPartNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (!partDb.getGoodsCode().equals(result.getGoodsCode())) {
|
|
|
|
@ -1200,7 +1201,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的物料编码[%s]当前维护的商品码[%s]与上次扫描的商品码[%s]不一致,请点击重置",
|
|
|
|
|
result.getSerialNumber(), dataFromPcn.getPartNo(), partDb.getGoodsCode(), result.getGoodsCode())
|
|
|
|
|
result.getProductSn(), dataFromPcn.getPartNo(), partDb.getGoodsCode(), result.getGoodsCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
return partDb;
|
|
|
|
@ -1211,7 +1212,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]已经重新关联返工工单号[%s],请点击重置", result.getSerialNumber(), result.getWorkOrderNo())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]已经重新关联返工工单号[%s],请点击重置", result.getProductSn(), result.getWorkOrderNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1233,7 +1234,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
private void checkSnIsAllowGenOqc(JxOqcManageModel result, List<MesOqcCheck> oqcCheckList) {
|
|
|
|
|
|
|
|
|
|
//验证是否已关联检验单
|
|
|
|
|
if (CollectionUtils.isEmpty(oqcCheckList)) checkSnIsChecked(result.getOrganizeCode(), result.getWorkOrderNo(), result.getSerialNumber(), "生成检验单");
|
|
|
|
|
if (CollectionUtils.isEmpty(oqcCheckList)) checkSnIsChecked(result.getOrganizeCode(), result.getWorkOrderNo(), result.getProductSn(), "生成检验单");
|
|
|
|
|
|
|
|
|
|
//根据工单号查询出货检验单据主表非拆机的一条数据
|
|
|
|
|
MesOqcCheck oqcCheckDb = oqcCheckService.getUnTeardownOqcCheckByWorkOrderNo(result.getOrganizeCode(), result.getWorkOrderNo());
|
|
|
|
@ -1244,14 +1245,14 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]还未生成%s类型的检验单,操作失败",
|
|
|
|
|
result.getSerialNumber(), null == oqcCheckDb ? "日常检验或空洞检验" : MesPcnExtEnumUtil.OQC_CHECK_TYPE.valueOfDescription(oqcCheckDb.getOqcNoType()))
|
|
|
|
|
result.getProductSn(), null == oqcCheckDb ? "日常检验或空洞检验" : MesPcnExtEnumUtil.OQC_CHECK_TYPE.valueOfDescription(oqcCheckDb.getOqcNoType()))
|
|
|
|
|
.build();
|
|
|
|
|
} else {
|
|
|
|
|
if (oqcCheckList.size() > 1) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]已存在拆机检验类型的检验单,操作失败", result.getSerialNumber())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]已存在拆机检验类型的检验单,操作失败", result.getProductSn())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1261,7 +1262,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]已存在%s类型的检验单,操作失败",
|
|
|
|
|
result.getSerialNumber(), MesPcnExtEnumUtil.OQC_CHECK_TYPE.valueOfDescription(oqcCheckList.get(0).getOqcNoType()))
|
|
|
|
|
result.getProductSn(), MesPcnExtEnumUtil.OQC_CHECK_TYPE.valueOfDescription(oqcCheckList.get(0).getOqcNoType()))
|
|
|
|
|
.build();
|
|
|
|
|
} else {
|
|
|
|
|
if (null != oqcCheckDb && oqcCheckDb.getOqcNoType().compareTo(result.getOqcNoType()) != 0) {
|
|
|
|
@ -1269,7 +1270,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]不能生成%s类型的检验单,操作失败",
|
|
|
|
|
result.getSerialNumber(), MesPcnExtEnumUtil.OQC_CHECK_TYPE.valueOfDescription(result.getOqcNoType()))
|
|
|
|
|
result.getProductSn(), MesPcnExtEnumUtil.OQC_CHECK_TYPE.valueOfDescription(result.getOqcNoType()))
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1283,7 +1284,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]当前剩余未抽检批次范围为[0],操作失败", result.getSerialNumber())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]当前剩余未抽检批次范围为[0],操作失败", result.getProductSn())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1327,7 +1328,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
private List<String> getOqcCheckedSnList(String organizeCode, String workOrderNo, String workTime, String shiftCode) {
|
|
|
|
|
List<MesOqcCheckPackageDetail> oqcCheckPackageDetailList = oqcCheckService.getOqcCheckPackageDetailListByOrderNoAndWorkTime(organizeCode, workOrderNo, workTime, shiftCode);
|
|
|
|
|
return CollectionUtils.isEmpty(oqcCheckPackageDetailList) ? null :
|
|
|
|
|
oqcCheckPackageDetailList.stream().filter(o -> null != o).map(MesOqcCheckPackageDetail::getSerialNumber).collect(Collectors.toList());
|
|
|
|
|
oqcCheckPackageDetailList.stream().filter(o -> null != o).map(MesOqcCheckPackageDetail::getProductSn).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkProdMapListBySn(List<Map<String, String>> prodMapList, JxOqcManageModel result) {
|
|
|
|
@ -1335,19 +1336,19 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的生产工单[%s]下已无可抽检的产品,请点击重置", result.getSerialNumber(), result.getWorkOrderNo())
|
|
|
|
|
.setErrorDetail("生成检验单:产品条码[%s]关联的生产工单[%s]下已无可抽检的产品,请点击重置", result.getProductSn(), result.getWorkOrderNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
Optional<Map<String, String>> snOp = prodMapList.stream().filter(o -> (null != o && result.getSerialNumber().equals(o.get(MesPcnExtConstWords.PRODUCT_SN)))).findFirst();
|
|
|
|
|
Optional<Map<String, String>> snOp = prodMapList.stream().filter(o -> (null != o && result.getProductSn().equals(o.get(MesPcnExtConstWords.PRODUCT_SN)))).findFirst();
|
|
|
|
|
if (null == snOp || !snOp.isPresent()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生成检验单:工单[%s]筛除已经抽检完成的批次条码后不包含当前扫描的产品条码[%s],操作失败", result.getWorkOrderNo(), result.getSerialNumber())
|
|
|
|
|
.setErrorDetail("生成检验单:工单[%s]筛除已经抽检完成的批次条码后不包含当前扫描的产品条码[%s],操作失败", result.getWorkOrderNo(), result.getProductSn())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
prodMapList = prodMapList.stream().filter(o -> (null != o && !result.getSerialNumber().equals(o.get(MesPcnExtConstWords.SERIAL_NUMBER)))).collect(Collectors.toList());
|
|
|
|
|
prodMapList = prodMapList.stream().filter(o -> (null != o && !result.getProductSn().equals(o.get(MesPcnExtConstWords.PRODUCT_SN)))).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(prodMapList)) prodMapList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
@ -1359,15 +1360,15 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("检验单不合格:产品条码[%s]关联的生产工单[%s]下已无可抽检的产品,操作失败", result.getSerialNumber(), result.getWorkOrderNo())
|
|
|
|
|
.setErrorDetail("检验单不合格:产品条码[%s]关联的生产工单[%s]下已无可抽检的产品,操作失败", result.getProductSn(), result.getWorkOrderNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
Optional<Map<String, String>> snOp = prodMapList.stream().filter(o -> (null != o && result.getSerialNumber().equals(o.get(MesPcnExtConstWords.PRODUCT_SN)))).findFirst();
|
|
|
|
|
Optional<Map<String, String>> snOp = prodMapList.stream().filter(o -> (null != o && result.getProductSn().equals(o.get(MesPcnExtConstWords.PRODUCT_SN)))).findFirst();
|
|
|
|
|
if (null == snOp || !snOp.isPresent()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("检验单不合格:工单[%s]筛除已经抽检完成的批次条码后不包含当前扫描的产品条码[%s],操作失败", result.getWorkOrderNo(), result.getSerialNumber())
|
|
|
|
|
.setErrorDetail("检验单不合格:工单[%s]筛除已经抽检完成的批次条码后不包含当前扫描的产品条码[%s],操作失败", result.getWorkOrderNo(), result.getProductSn())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1375,11 +1376,11 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("检验单不合格:工单[%s]当前扫描条码[%s]工单号与当前工单号不一致,操作失败", result.getWorkOrderNo(), result.getSerialNumber())
|
|
|
|
|
.setErrorDetail("检验单不合格:工单[%s]当前扫描条码[%s]工单号与当前工单号不一致,操作失败", result.getWorkOrderNo(), result.getProductSn())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
prodMapList = prodMapList.stream().filter(o -> (null != o && !result.getSerialNumber().equals(o.get(MesPcnExtConstWords.SERIAL_NUMBER)))).collect(Collectors.toList());
|
|
|
|
|
prodMapList = prodMapList.stream().filter(o -> (null != o && !result.getProductSn().equals(o.get(MesPcnExtConstWords.PRODUCT_SN)))).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
prodMapList = prodMapList.stream().filter(o -> (null != o && snOp.get().get(MesPcnExtConstWords.OUT_WC_TIME).compareTo(o.get(MesPcnExtConstWords.OUT_WC_TIME)) >= 0)).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
@ -1461,6 +1462,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
outPutStatisticsOqcDb.setSpotCheckQty(
|
|
|
|
|
MathOperation.add(StringUtils.isEmpty(outPutStatisticsOqcDb.getSpotCheckQty()) ? new Double(0) : outPutStatisticsOqcDb.getSpotCheckQty(), oqcCheck.getSpotCheckQty()));
|
|
|
|
|
ConvertBean.serviceModelUpdate(outPutStatisticsOqcDb, oqcCheck.getModifyUser());
|
|
|
|
|
outPutStatisticsOqcDb.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
|
|
|
|
|
outPutStatisticsOqcRepository.save(outPutStatisticsOqcDb);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1492,7 +1494,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
List<MesOqcCheckPackageDetail> oqcCheckPackageDetailList = oqcCheckService.getOqcCheckPackageDetailListByOqcNo(model.getOrganizeCode(), model.getOqcNo());
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(model.getSn())) {
|
|
|
|
|
oqcCheckPackageDetailList.stream().map(MesOqcCheckPackageDetail::getSerialNumber).collect(Collectors.toList());
|
|
|
|
|
oqcCheckPackageDetailList.stream().map(MesOqcCheckPackageDetail::getProductSn).collect(Collectors.toList());
|
|
|
|
|
model.getSn();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1529,7 +1531,7 @@ public class JxOqcManageService implements IJxOqcManageService {
|
|
|
|
|
|
|
|
|
|
//获取当前班次作业时间内已经关联出货检验的条码集合
|
|
|
|
|
List<String> snList = CollectionUtils.isEmpty(oqcCheckPackageDetailList) ? null :
|
|
|
|
|
oqcCheckPackageDetailList.stream().filter(o -> null != o).map(MesOqcCheckPackageDetail::getSerialNumber).collect(Collectors.toList());
|
|
|
|
|
oqcCheckPackageDetailList.stream().filter(o -> null != o).map(MesOqcCheckPackageDetail::getProductSn).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
//获取当前班次作业时间内未关联出货检验的条码集合
|
|
|
|
|
List<Map<String, String>> prodMapList = dataFromPcn.getProdMapList();
|
|
|
|
|