|
|
|
@ -18,6 +18,9 @@ import com.glxp.api.entity.inout.*;
|
|
|
|
|
import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity;
|
|
|
|
|
import com.glxp.api.entity.inv.InvPreinDetailEntity;
|
|
|
|
|
import com.glxp.api.entity.system.SystemParamConfigEntity;
|
|
|
|
|
import com.glxp.api.exception.JsonException;
|
|
|
|
|
import com.glxp.api.exception.ServiceException;
|
|
|
|
|
import com.glxp.api.res.inout.IoCodeResponse;
|
|
|
|
|
import com.glxp.api.res.inout.IoOrderCheckResultResponse;
|
|
|
|
|
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
|
|
|
|
|
import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
|
|
|
|
@ -156,63 +159,101 @@ public class IoCheckInoutService {
|
|
|
|
|
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST);
|
|
|
|
|
orderService.update(orderEntity);
|
|
|
|
|
|
|
|
|
|
List<IoCodeTempEntity> codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo());
|
|
|
|
|
//序列号唯一性校验
|
|
|
|
|
serialNoUniquenessVerification(codeTempEntities);
|
|
|
|
|
|
|
|
|
|
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
|
|
|
|
|
if (!bussinessTypeEntity.isCheckEnable()) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
} else {
|
|
|
|
|
if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDIMS) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckUdims() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_WEBNEW) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckWebNew() == 0 || bussinessTypeEntity.getCheckWebNew() == 4) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAED) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckPdaEd() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAUN) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckPdaUn() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PC) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckPc() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_CHANGE) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckChange() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PEACE_CHANGE) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckBalance() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDISP) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckSp() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_COPY) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckCopy() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_REVIEW) {
|
|
|
|
|
if (bussinessTypeEntity.getCheckReview() == 0) {
|
|
|
|
|
unCheckFirstFinish(orderEntity);
|
|
|
|
|
unCheckFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
checkFirstFinish(orderEntity);
|
|
|
|
|
checkFirstFinish(orderEntity,codeTempEntities);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* code列表中 有序列号的 进行唯一校验
|
|
|
|
|
* 1、查找出临时code中 有 序列号的 code集合
|
|
|
|
|
* 2、在正式code表里 对code分组sum库存 前提是 在待校验code集合中 校验出库存大于0抛出异常
|
|
|
|
|
*/
|
|
|
|
|
private void serialNoUniquenessVerification(List<IoCodeTempEntity> codeTempEntities) {
|
|
|
|
|
if (CollUtil.isNotEmpty(codeTempEntities)){
|
|
|
|
|
List<String> codes = new ArrayList<>(codeTempEntities.size());
|
|
|
|
|
codeTempEntities.stream().forEach( x -> {
|
|
|
|
|
if (StrUtil.isNotBlank(x.getSerialNo())){
|
|
|
|
|
codes.add(x.getCode());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(codes)){
|
|
|
|
|
//正式code表里 对code分组sum实际库存数量
|
|
|
|
|
List<IoCodeResponse> codeSumReCountList = codeService.findByCodeSumReCount(codes);
|
|
|
|
|
if (codeSumReCountList.size() > 0 ){
|
|
|
|
|
StringBuilder msg = new StringBuilder();
|
|
|
|
|
codeSumReCountList.forEach( x -> {
|
|
|
|
|
if (x.getReCount() > 0){
|
|
|
|
|
msg.append(x.getCode()+",");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (StrUtil.isNotEmpty(msg)){
|
|
|
|
|
msg.deleteCharAt(msg.length()-1);
|
|
|
|
|
throw new JsonException(500,"产品UDI码:" + msg + "存库唯一性校验不通过!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
@ -334,7 +375,7 @@ public class IoCheckInoutService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//一次校验(无需校验)完成
|
|
|
|
|
public void unCheckFirstFinish(IoOrderEntity orderEntity) {
|
|
|
|
|
public void unCheckFirstFinish(IoOrderEntity orderEntity,List<IoCodeTempEntity> codeTempEntities) {
|
|
|
|
|
|
|
|
|
|
List<IoOrderDetailCodeEntity> orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo());
|
|
|
|
|
|
|
|
|
@ -380,7 +421,6 @@ public class IoCheckInoutService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//临时表转正式表
|
|
|
|
|
List<IoCodeTempEntity> codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo());
|
|
|
|
|
for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
|
|
|
|
|
IoCodeEntity codeEnttity = new IoCodeEntity();
|
|
|
|
|
BeanUtils.copyProperties(codeTempEntity, codeEnttity);
|
|
|
|
@ -402,7 +442,7 @@ public class IoCheckInoutService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//一次校验完成
|
|
|
|
|
public void checkFirstFinish(IoOrderEntity orderEntity) {
|
|
|
|
|
public void checkFirstFinish(IoOrderEntity orderEntity,List<IoCodeTempEntity> codeTempEntities) {
|
|
|
|
|
List<IoOrderDetailCodeEntity> orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo());
|
|
|
|
|
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(orderEntity.getBillNo());
|
|
|
|
|
|
|
|
|
@ -502,7 +542,6 @@ public class IoCheckInoutService {
|
|
|
|
|
// orderDetailCodeDao.updateBatchById(orderDetailCodeEntities);
|
|
|
|
|
|
|
|
|
|
//临时表转正式表
|
|
|
|
|
List<IoCodeTempEntity> codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo());
|
|
|
|
|
for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
|
|
|
|
|
IoCodeEntity codeEnttity = new IoCodeEntity();
|
|
|
|
|
BeanUtils.copyProperties(codeTempEntity, codeEnttity);
|
|
|
|
|