单据流程梳理

master
anthonywj 2 years ago
parent 5cb6c3ebbc
commit 38c5001097

@ -156,6 +156,17 @@ public class Constant {
//-------------前端页面查询单据列表标识类型------------------
/**
* --
*/
public static final String ORDER_STATUS_SCAN_CODEE = "scan_code";
/**
* --
*/
public static final String ORDER_STATUS_NEW_BIZ = "new_biz";
/**
* -稿
*/

@ -54,10 +54,10 @@ public class ConstantStatus {
/**
* 1.23
* 2.13
*/
public static final Integer ORDER_TYPE_SCAN = 1;
public static final Integer ORDER_TYPE_BIZ = 2;
public static final Integer ORDER_TYPE_BIZ = 1;
public static final Integer ORDER_TYPE_SCAN = 2;
public static final Integer ORDER_TYPE_NORMAL = 3;

@ -584,6 +584,7 @@ public class IoCodeTempController extends BaseController {
orderEntity.setCustomerId(authAdmin.getCustomerId() + "");
orderEntity.setDeptCode(invWarehouseEntity.getParentId());
orderEntity.setInvCode(addOrderRequest.getInvCode());
orderEntity.setOrderType(addOrderRequest.getOrderType());
orderService.insertOrder(orderEntity);
}

@ -6,6 +6,8 @@ import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.controller.BaseController;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
@ -25,12 +27,13 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Slf4j
@RestController
public class IoOrderController {
public class IoOrderController extends BaseController {
@Resource
private IoOrderService orderService;
@ -49,7 +52,6 @@ public class IoOrderController {
*
*
* @param filterOrderRequest
* @param bindingResult
* @return
*/
@GetMapping("/udiwms/inout/order/filter")
@ -101,8 +103,63 @@ public class IoOrderController {
@Resource
IoAddInoutService ioAddInoutService;
@Resource
IoCheckInoutService ioCheckInoutService;
//新增业务单据提交
@AuthRuleAnnotation("")
@PostMapping("warehouse/inout/submitBiz")
public BaseResponse submitBiz(@RequestBody AddOrderRequest addOrderRequest) {
//校验单据是否已完成
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(addOrderRequest.getBillNo());
if (CollUtil.isEmpty(orderDetailBizEntities)) {
return ResultVOUtils.error(500, "请先录入产品!");
}
for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) {
if (orderDetailBizEntity.getBindRlFk() == null) {
return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定唯一耗材编码!");
}
if (StrUtil.isEmpty(orderDetailBizEntity.getSupId())) {
return ResultVOUtils.error(500, orderDetailBizEntity.getCoName() + "该产品未指定供应商!");
}
}
IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo());
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK);
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST);
orderEntity.setUpdateTime(new Date());
orderEntity.setUpdateUser(getUserId() + "");
orderService.update(orderEntity);
return ResultVOUtils.success("提交成功!");
}
//单据提交
//新增扫码单据提交
@AuthRuleAnnotation("")
@PostMapping("warehouse/inout/submitCodes")
public BaseResponse submitCodes(@RequestBody AddOrderRequest addOrderRequest) {
//校验单据是否已完成
List<IoOrderDetailCodeEntity> orderDetailCodeEntities = orderDetailCodeService.findByOrderId(addOrderRequest.getBillNo());
if (CollUtil.isEmpty(orderDetailCodeEntities)) {
return ResultVOUtils.error(500, "单据还未扫码!");
}
IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo());
ioAddInoutService.dealProcess(orderEntity);
//不需要手动校验,则走正常单据校验处理流程
if (!ioCheckInoutService.checkManual(orderEntity.getBillNo())) {
ioCheckInoutService.check(orderEntity.getBillNo());
}
return ResultVOUtils.success("提交成功,等待处理!");
}
//处理后单据提交
@AuthRuleAnnotation("")
@PostMapping("warehouse/inout/submitOrderWeb")
public BaseResponse submitOrderWeb(@RequestBody AddOrderRequest addOrderRequest) {
@ -115,19 +172,24 @@ public class IoOrderController {
return ResultVOUtils.error(500, "单据还未扫码!");
}
if (CollUtil.isNotEmpty(orderDetailBizEntities)) {
String errMsg = checkInoutService.bizOrderCheck(orderDetailBizEntities, orderDetailCodeEntities);
if (StrUtil.isNotEmpty(errMsg)) {
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, "单据未校验完成,请检查后重新提交!");
}
saveOrderWeb(addOrderRequest);
checkInoutService.check(addOrderRequest.getBillNo());
} else {
return ResultVOUtils.error(500, "单据未校验完成,请先录入业务单据!");
}
saveOrderWeb(addOrderRequest);
checkInoutService.check(addOrderRequest.getBillNo());
} else {
IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo());
ioAddInoutService.dealProcess(orderEntity);
checkInoutService.check(addOrderRequest.getBillNo());
return ResultVOUtils.success("提交成功!");
}
return ResultVOUtils.success("提交成功!");
}

@ -5,10 +5,13 @@ import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.dao.inout.IoOrderDetailCodeDao;
import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.req.inout.FilterOrderDetailCodeRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
import com.glxp.api.service.inout.IoCheckInoutService;
import com.glxp.api.service.inout.IoOrderDetailBizService;
import com.glxp.api.service.inout.IoOrderDetailCodeService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@ -22,12 +25,12 @@ import java.util.List;
@RestController
public class IoOrderDetailCodeController {
@Resource
IoOrderDetailCodeDao ioOrderDetailCodeDao;
@Resource
private IoOrderDetailCodeService ioOrderDetailCodeService;
@Resource
private IoCheckInoutService ioCheckInoutService;
@Resource
private IoOrderDetailBizService orderDetailBizService;
//获取新增扫码单据详情---临时接口查询
@ -50,6 +53,8 @@ public class IoOrderDetailCodeController {
@GetMapping("udiwms/inout/codeDetail/filterList")
public BaseResponse filterList(FilterOrderDetailCodeRequest detailCodeRequest) {
List<IoOrderDetailCodeResponse> list = ioOrderDetailCodeService.filterList(detailCodeRequest);
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(detailCodeRequest.getOrderIdFk());
ioCheckInoutService.codeOrderCheck2(list, orderDetailBizEntities);
PageInfo<IoOrderDetailCodeResponse> pageInfo = new PageInfo<>(list);
return ResultVOUtils.page(pageInfo);
}

@ -119,15 +119,18 @@ public class FilterOrderRequest extends ListPageRequest {
/**
*
* 稿draft
* processedError
* unCheck
* checkedError
* checkSuccess
* audited
* 稿draft
* processedError
* unCheck
* checkedError
* checkSuccess
* audited
*/
private String statusType;
private Integer orderType;
/**
*
*/

@ -1,5 +1,6 @@
package com.glxp.api.res.inout;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.math.BigDecimal;
@ -159,4 +160,6 @@ public class IoOrderDetailCodeResponse {
*/
private String supName;
private Integer orderCount;
}

@ -1,6 +1,7 @@
package com.glxp.api.res.inout;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.util.Date;
@ -199,7 +200,10 @@ public class IoOrderResponse {
*
*/
private String fromName;
/**
* 1.2:,3. 稿
*/
private Integer orderType;
//是否可以补单
private boolean enableSupplementOrder;

@ -213,8 +213,15 @@ public class IoAddInoutService {
genOrderDetailCode(orderEntity, codeTempEntity);
}
}
//进行单据校验
ioCheckInoutService.check(orderEntity.getBillNo());
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK);
orderEntity.setUpdateTime(new Date());
orderEntity.setRemark("");
orderService.update(orderEntity);
} else {
orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR);
orderEntity.setUpdateTime(new Date());
orderEntity.setRemark("未添加UDI码");
orderService.update(orderEntity);
}
}
@ -301,6 +308,9 @@ public class IoAddInoutService {
orderService.update(order);
codeTempService.insertBatch(supplementCodes);
dealProcess(supplementOrder);
if (!ioCheckInoutService.checkManual(order.getBillNo())) {
ioCheckInoutService.check(order.getBillNo());
}
return ResultVOUtils.success();
}

@ -7,6 +7,7 @@ import com.glxp.api.constant.ConstantType;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinOrderService;
@ -46,8 +47,60 @@ public class IoCheckInoutService {
@Resource
IoGenInvService genInvService;
//判断是否需要手动校验
public boolean checkManual(String billNo) {
IoOrderEntity orderEntity = orderService.findByBillNo(billNo);
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
if (!bussinessTypeEntity.isCheckEnable()) {
return false;
} else {
if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDIMS) {
if (!bussinessTypeEntity.isCheckUdims()) {
return false;
}
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_WEBNEW) {
if (!bussinessTypeEntity.isCheckWebNew()) {
return false;
}
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAED) {
if (!bussinessTypeEntity.isCheckPdaEd()) {
return false;
}
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAUN) {
if (!bussinessTypeEntity.isCheckPdaUn()) {
return false;
}
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PC) {
if (!bussinessTypeEntity.isCheckPc()) {
return false;
}
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_CHANGE) {
if (!bussinessTypeEntity.isCheckChange()) {
return false;
}
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PEACE_CHANGE) {
if (!bussinessTypeEntity.isCheckBalance()) {
return false;
}
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDISP) {
if (!bussinessTypeEntity.isCheckSp()) {
return false;
}
} else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_COPY) {
if (!bussinessTypeEntity.isCheckCopy()) {
return false;
}
}
return true;
}
}
//校验流程
public void check(String orderId) {
IoOrderEntity orderEntity = orderService.findByBillNo(orderId);
//过滤非未校验或校验异常
if (orderEntity.getStatus() != ConstantStatus.ORDER_STATUS_CHECK && orderEntity.getStatus() != ConstantStatus.ORDER_STATUS_CHECK_FAIL)
return;
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
if (!bussinessTypeEntity.isCheckEnable()) {
unCheckFirstFinish(orderEntity);
@ -324,6 +377,8 @@ public class IoCheckInoutService {
codeEntity.setOrderCount(bizEntity.getCount());
}
break;
} else {
codeEntity.setCheckSuccess(false);
}
}
}
@ -337,6 +392,34 @@ public class IoCheckInoutService {
return errMsg;
}
public void codeOrderCheck2(List<IoOrderDetailCodeResponse> orderDetailCodeEntities, List<IoOrderDetailBizEntity> orderDetailBizEntities) {
for (IoOrderDetailCodeResponse codeResponse : orderDetailCodeEntities) {
IoOrderDetailCodeEntity codeEntity = new IoOrderDetailCodeEntity();
BeanUtils.copyProperties(codeResponse, codeEntity);
for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) {
if (!bizEntity.isCheckSuccess() && !codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null
&& checkBatchNo(bizEntity, codeEntity) == null
&& checkProductDate(bizEntity, codeEntity) == null
&& checkExpireDate(bizEntity, codeEntity) == null
) {
if (checkCount(bizEntity, codeEntity) == null) {
bizEntity.setCheckSuccess(true);
codeResponse.setCheckSuccess(true);
codeResponse.setOrderCount(bizEntity.getCount());
} else {
codeResponse.setCheckSuccess(false);
codeResponse.setOrderCount(bizEntity.getCount());
}
break;
} else {
codeResponse.setCheckSuccess(false);
}
}
}
}
//二次校验
public void checkSecond(IoOrderEntity orderEntity) {
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());

@ -275,11 +275,16 @@ public class IoGenInvService {
}
codeTempService.insertBatch(codeTempEntities);
addInoutService.dealProcess(outOrder);
if (!ioCheckInoutService.checkManual(outOrder.getBillNo())) {
ioCheckInoutService.check(outOrder.getBillNo());
}
}
}
@Resource
IoAddInoutService addInoutService;
@Resource
IoCheckInoutService ioCheckInoutService;
//计算当前库存数量

@ -154,6 +154,18 @@ public class IoOrderServiceImpl implements IoOrderService {
@Override
public void setFilterStatus(FilterOrderRequest filterOrderRequest) {
switch (filterOrderRequest.getStatusType()) {
case Constant.ORDER_STATUS_SCAN_CODEE:
filterOrderRequest.setOrderType(ConstantStatus.ORDER_TYPE_SCAN);
filterOrderRequest.setStatuses(Arrays.asList(ConstantStatus.ORDER_STATUS_TEMP_SAVE, ConstantStatus.ORDER_STATUS_PROCESS, ConstantStatus.ORDER_STATS_ERROR));
break;
case Constant.ORDER_STATUS_NEW_BIZ:
filterOrderRequest.setOrderType(ConstantStatus.ORDER_TYPE_BIZ);
filterOrderRequest.setStatuses(Arrays.asList(ConstantStatus.ORDER_STATUS_TEMP_SAVE, ConstantStatus.ORDER_STATUS_PROCESS, ConstantStatus.ORDER_STATS_ERROR));
break;
case Constant.ORDER_STATUS_DRAFT:
filterOrderRequest.setStatuses(Arrays.asList(1, 2));
filterOrderRequest.setDealStatuses(Arrays.asList(1));
@ -163,7 +175,7 @@ public class IoOrderServiceImpl implements IoOrderService {
filterOrderRequest.setDealStatuses(Arrays.asList(2));
break;
case Constant.ORDER_STATUS_NEW_ORDER:
filterOrderRequest.setStatuses(Arrays.asList(1, 2, 4));
filterOrderRequest.setStatuses(Arrays.asList(1, 2, 3, 4, 6));
filterOrderRequest.setDealStatuses(Arrays.asList(1, 2));
break;
case Constant.ORDER_STATUS_UN_CHECK:

@ -1,6 +1,6 @@
spring:
profiles:
active: dev
active: pro
jmx:
enabled: true

@ -62,6 +62,9 @@
<if test="status != null">
AND status = #{status}
</if>
<if test="orderType != null">
AND orderType = #{orderType}
</if>
</where>
</select>
@ -122,4 +125,4 @@
OR supplementOrderType
!= '')
</select>
</mapper>
</mapper>

Loading…
Cancel
Save