单据带校验比对逻辑修改

dev
anthonywj 2 years ago
parent 6e38f6e9a3
commit ce801cd27c

@ -1062,7 +1062,6 @@ public class IoCodeTempController extends BaseController {
if (StrUtil.isEmpty(filterCodeRequest.getOrderId())) {
return ResultVOUtils.error(500, "单据号不能为空!");
}
List<IoCodeTempResponse> list = codeTempService.findCodeList(filterCodeRequest);
PageInfo<IoCodeTempResponse> pageInfo = new PageInfo<>(list);
PageSimpleResponse<IoCodeTempResponse> pageSimpleResponse = new PageSimpleResponse<>();
@ -1071,9 +1070,16 @@ public class IoCodeTempController extends BaseController {
return ResultVOUtils.success(pageSimpleResponse);
}
@AuthRuleAnnotation("")
@PostMapping("/udiwms/addCode/updateBindSup")
@Log(title = "单据管理", businessType = BusinessType.UPDATE)
public BaseResponse updateBindSup(@RequestBody IoCodeTempEntity codeSaveRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {

@ -28,6 +28,7 @@ import com.glxp.api.req.basic.BasicEntrustRecRequest;
import com.glxp.api.req.inout.*;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inout.IoCodeTempResponse;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
import com.glxp.api.res.inout.IoOrderResponse;
import com.glxp.api.res.inout.PdaBusOrderResponse;
@ -371,40 +372,15 @@ public class IoOrderController extends BaseController {
return tempResponse;
//校验单据是否已完成
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(addOrderRequest.getBillNo());
List<IoOrderDetailCodeEntity> orderDetailCodeEntities = orderDetailCodeService.findByOrderId(addOrderRequest.getBillNo());
if (CollUtil.isEmpty(orderDetailCodeEntities)) {
return ResultVOUtils.error(500, "单据还未扫码或和扫码校验存在异常无法提交!");
}
if (checkInoutService.checkManual(addOrderRequest.getBillNo())) {
if (CollUtil.isNotEmpty(orderDetailBizEntities)) {
String errMsg = checkInoutService.bizOrderCheck(orderDetailBizEntities, orderDetailCodeEntities);
if (StrUtil.isNotEmpty(errMsg)) {
return ResultVOUtils.error(500, errMsg);
}
errMsg = checkInoutService.codeOrderCheck(orderDetailCodeEntities, orderDetailBizEntities);
if (StrUtil.isNotEmpty(errMsg)) {
return ResultVOUtils.error(500, errMsg);
}
saveOrderWeb(addOrderRequest);
orderEntity.setStatus(ORDER_STATUS_CHECK_PROCESS);
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST);
orderService.update(orderEntity);
checkInoutService.check(addOrderRequest.getBillNo());
} else {
return ResultVOUtils.error(500, "单据校验提交失败,请先录入业务单据!");
}
} else {
orderEntity.setStatus(ORDER_STATUS_CHECK_PROCESS);
ioAddInoutService.dealProcess(orderEntity);
checkInoutService.check(addOrderRequest.getBillNo());
return ResultVOUtils.success("提交成功!");
}
saveOrderWeb(addOrderRequest);
orderEntity.setStatus(ORDER_STATUS_CHECK_PROCESS);
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST);
orderService.update(orderEntity);
checkInoutService.checkCodeResult(addOrderRequest.getBillNo());
return ResultVOUtils.success("提交成功!");
}
@ -412,7 +388,7 @@ public class IoOrderController extends BaseController {
//待校验提交,以比对结果提交
@RepeatSubmit()
@AuthRuleAnnotation("")
@PostMapping("warehouse/inout/codeResult/submitOrderWeb")
@PostMapping("warehouse/inout/codeCheck/submitOrderWeb")
@Log(title = "单据管理", businessType = BusinessType.UPDATE)
public BaseResponse submitByCheckResult(@RequestBody AddOrderRequest addOrderRequest) {
@ -422,41 +398,28 @@ public class IoOrderController extends BaseController {
return tempResponse;
//校验单据是否已完成
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(addOrderRequest.getBillNo());
List<IoOrderDetailCodeEntity> orderDetailCodeEntities = orderDetailCodeService.findByOrderId(addOrderRequest.getBillNo());
if (CollUtil.isEmpty(orderDetailCodeEntities)) {
List<IoCodeTempEntity> codeEntities = codeTempService.findByOrderId(addOrderRequest.getBillNo());
if (CollUtil.isEmpty(codeEntities)) {
return ResultVOUtils.error(500, "单据还未扫码或和扫码校验存在异常无法提交!");
}
if (checkInoutService.checkManual(addOrderRequest.getBillNo())) {
if (CollUtil.isNotEmpty(orderDetailBizEntities)) {
String errMsg = checkInoutService.bizOrderCheck(orderDetailBizEntities, orderDetailCodeEntities);
if (StrUtil.isNotEmpty(errMsg)) {
return ResultVOUtils.error(500, errMsg);
}
errMsg = checkInoutService.codeOrderCheck(orderDetailCodeEntities, orderDetailBizEntities);
if (StrUtil.isNotEmpty(errMsg)) {
return ResultVOUtils.error(500, errMsg);
}
saveOrderWeb(addOrderRequest);
orderEntity.setStatus(ORDER_STATUS_CHECK_PROCESS);
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST);
orderService.update(orderEntity);
checkInoutService.check(addOrderRequest.getBillNo());
} else {
return ResultVOUtils.error(500, "单据校验提交失败,请先录入业务单据!");
List<IoCodeTempEntity> codeTempEntities = getCheckRusultCode(addOrderRequest.getBillNo(), codeEntities);
for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
if (codeTempEntity.getCheckStatus() == 2) {
return ResultVOUtils.error(501, "存在多余条码,请先剔除后重新提交!");
}
} else {
orderEntity.setStatus(ORDER_STATUS_CHECK_PROCESS);
ioAddInoutService.dealProcess(orderEntity);
checkInoutService.check(addOrderRequest.getBillNo());
return ResultVOUtils.success("提交成功!");
}
codeTempService.deleteByBillNo(addOrderRequest.getBillNo());
for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
if (codeTempEntity.getCheckStatus() == 0) {
codeTempService.insert(codeTempEntity);
}
}
orderEntity.setStatus(ORDER_STATUS_CHECK_PROCESS);
ioAddInoutService.dealProcess(orderEntity);
checkInoutService.check(addOrderRequest.getBillNo());
return ResultVOUtils.success("提交成功!");
}
public BaseResponse checkSubmitEnable(IoOrderEntity orderEntity) {
@ -474,6 +437,77 @@ public class IoOrderController extends BaseController {
return null;
}
@AuthRuleAnnotation("")
@GetMapping("admin/warehouse/inout/findCheckCode")
public BaseResponse findCheckCode(FilterCodeRequest filterCodeRequest) {
//校验单据是否已完成
List<IoCodeTempEntity> codeTempEntities = codeTempService.findByOrderId(filterCodeRequest.getOrderId());
List<IoCodeTempEntity> codeEntities = getCheckRusultCode(filterCodeRequest.getOrderId(), codeTempEntities);
PageSimpleResponse<IoCodeTempEntity> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(0l);
pageSimpleResponse.setList(codeEntities);
return ResultVOUtils.success(pageSimpleResponse);
}
public List<IoCodeTempEntity> getOtherCode(String billNo, List<IoCodeTempEntity> codeEntities) {
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(billNo);
for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) {
bizEntity.setCheckSuccess(false);
bizEntity.setScanCount(0);
}
for (IoCodeTempEntity codeTempEntity : codeEntities) {
codeTempEntity.setCheckSuccess(false);
}
List<IoCodeTempEntity> otherCodes = new ArrayList<>();
for (IoCodeTempEntity codeEntity : codeEntities) {
for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) {
if (checkId(bizEntity, codeEntity) == null
&& checkBatchNo(bizEntity, codeEntity) == null
&& checkProductDate(bizEntity, codeEntity) == null
&& checkExpireDate(bizEntity, codeEntity) == null) {
int curCount = IntUtil.value(codeEntity.getReCount()) + bizEntity.getScanCount();
if (bizEntity.getCount() < curCount) {
otherCodes.add(codeEntity);
} else {
bizEntity.setScanCount(curCount);
}
codeEntity.setCheckSuccess(true);
break;
}
}
if (!codeEntity.isCheckSuccess()) {
otherCodes.add(codeEntity);
}
}
return otherCodes;
}
public List<IoCodeTempEntity> getCheckRusultCode(String billNo, List<IoCodeTempEntity> codeEntities) {
List<IoCodeTempEntity> otherCodes = getOtherCode(billNo, codeEntities);
for (IoCodeTempEntity codeTempEntity : otherCodes) {
boolean isTure = false;
for (IoCodeTempEntity codeEntity : codeEntities) {
if (IntUtil.value(codeTempEntity.getId()) != IntUtil.value(codeEntity.getId())) {
if (StrUtil.nullToEmpty(codeTempEntity.getBatchNo()).equals(StrUtil.nullToEmpty(codeEntity.getBatchNo()))) {
codeEntity.setCheckStatus(2);
isTure = true;
}
} else {
if (IntUtil.value(codeTempEntity.getReCount()) != IntUtil.value(codeEntity.getReCount()) || isTure) {
codeEntity.setCheckStatus(2);
isTure = true;
}
}
}
if (!isTure)
codeTempEntity.setCheckStatus(1);
}
return codeEntities;
}
//带配货-立即提交
@RepeatSubmit()
@AuthRuleAnnotation("")
@ -954,4 +988,45 @@ public class IoOrderController extends BaseController {
}
public String checkId(IoOrderDetailBizEntity bizEntity, IoCodeTempEntity codeEntity) {
if (bizEntity.getBindRlFk().longValue() == codeEntity.getRelId().longValue()) {
return null;
} else {
return "产品ID不匹配";
}
}
public String checkBatchNo(IoOrderDetailBizEntity bizEntity, IoCodeTempEntity codeEntity) {
if (StrUtil.nullToEmpty(bizEntity.getBatchNo()).equals(StrUtil.nullToEmpty(codeEntity.getBatchNo()))) {
return null;
} else {
return bizEntity.getCoName() + "批次号不匹配";
}
}
public String checkProductDate(IoOrderDetailBizEntity bizEntity, IoCodeTempEntity codeEntity) {
if (StrUtil.nullToEmpty(bizEntity.getProductDate()).equals(StrUtil.nullToEmpty(codeEntity.getProduceDate()))) {
return null;
} else {
return bizEntity.getCoName() + "生产日期不匹配";
}
}
public String checkExpireDate(IoOrderDetailBizEntity bizEntity, IoCodeTempEntity codeEntity) {
if (StrUtil.nullToEmpty(bizEntity.getExpireDate()).equals(StrUtil.nullToEmpty(codeEntity.getExpireDate()))) {
return null;
} else {
return bizEntity.getCoName() + "失效日期不匹配";
}
}
public String checkCount(IoOrderDetailBizEntity bizEntity, IoCodeTempEntity codeEntity) {
if (bizEntity.getCount() == codeEntity.getReCount()) {
return null;
}
return bizEntity.getCoName() + "数量不匹配!";
}
}

@ -148,8 +148,14 @@ public class IoCodeTempEntity {
@TableField(exist = false)
private int status; //条码校验状态
@TableField(exist = false)
private int checkStatus; //1:多余条码2.同一产品条码超出
@TableField(exist = false)
private String mySupId; //更新供应商
@TableField(exist = false)
private boolean checkSuccess; //临时字段校验是否成功
public int getMyCount() {
if (count == null)
return 0;

@ -182,6 +182,44 @@ public class IoCheckInoutService {
}
}
//待校验 以扫码结果为准
public void checkCodeResult(String orderId) {
IoOrderEntity orderEntity = orderService.findByBillNo(orderId);
List<IoOrderDetailCodeEntity> orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo());
if (CollUtil.isEmpty(orderDetailCodeEntities)) {
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK_FAIL);
orderEntity.setUpdateTime(new Date());
orderEntity.setErrMsg("校验失败,扫码详情为空!");
orderService.update(orderEntity);
return;
}
orderDetailCodeEntities.forEach(orderDetailCodeEntity ->
{
//生成单据结果
IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity();
BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailResultEntity);
orderDetailResultEntity.setCount(orderDetailCodeEntity.getReCount());
orderDetailResultEntity.setReCount(orderDetailCodeEntity.getReCount());
orderDetailResultEntity.setId(null);
orderDetailResultService.insert(orderDetailResultEntity);
});
List<IoCodeTempEntity> codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo());
for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
IoCodeEntity codeEnttity = new IoCodeEntity();
BeanUtils.copyProperties(codeTempEntity, codeEnttity);
codeEnttity.setId(null);
codeService.insert(codeEnttity);
}
codeTempService.deleteByBillNo(orderEntity.getBillNo());
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK_SUCCESS);
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST);
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
genLostCode(orderEntity.getBillNo());
checkThird(orderEntity);
}
@Resource
IoCodeLostService codeLostService;

@ -21,8 +21,8 @@ import javax.annotation.Resource;
import java.util.Arrays;
@Component
@EnableScheduling
//@Component
//@EnableScheduling
public class SyncHeartTask implements SchedulingConfigurer {
final Logger logger = LoggerFactory.getLogger(SyncHeartTask.class);

Loading…
Cancel
Save