|
|
|
package com.glxp.api.controller.inout;
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
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;
|
|
|
|
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
|
|
|
|
import com.glxp.api.entity.inout.IoOrderEntity;
|
|
|
|
import com.glxp.api.req.inout.AddOrderRequest;
|
|
|
|
import com.glxp.api.req.inout.FilterOrderRequest;
|
|
|
|
import com.glxp.api.req.system.DeleteRequest;
|
|
|
|
import com.glxp.api.res.PageSimpleResponse;
|
|
|
|
import com.glxp.api.res.inout.IoOrderResponse;
|
|
|
|
import com.glxp.api.service.basic.IBasicBussinessTypeService;
|
|
|
|
import com.glxp.api.service.inout.*;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
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 extends BaseController {
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
private IoOrderService orderService;
|
|
|
|
@Resource
|
|
|
|
private IBasicBussinessTypeService basicBussinessTypeService;
|
|
|
|
@Resource
|
|
|
|
private IoCodeTempService codeTempService;
|
|
|
|
@Resource
|
|
|
|
private IoCheckInoutService checkInoutService;
|
|
|
|
@Resource
|
|
|
|
IoOrderDetailBizService orderDetailBizService;
|
|
|
|
@Resource
|
|
|
|
IoOrderDetailCodeService orderDetailCodeService;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 查询单据列表
|
|
|
|
*
|
|
|
|
* @param filterOrderRequest
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
@GetMapping("/udiwms/inout/order/filter")
|
|
|
|
public BaseResponse filterOrder(FilterOrderRequest filterOrderRequest) {
|
|
|
|
if (StrUtil.isNotBlank(filterOrderRequest.getStatusType())) {
|
|
|
|
orderService.setFilterStatus(filterOrderRequest);
|
|
|
|
}
|
|
|
|
List<IoOrderResponse> list = orderService.filterList(filterOrderRequest);
|
|
|
|
PageInfo<IoOrderResponse> pageInfo = new PageInfo<>(list);
|
|
|
|
return ResultVOUtils.page(pageInfo);
|
|
|
|
}
|
|
|
|
|
|
|
|
@AuthRuleAnnotation("")
|
|
|
|
@GetMapping("udiwms/inout/order/draft")
|
|
|
|
public BaseResponse getDrafts() {
|
|
|
|
List<IoOrderEntity> orderEntityList = orderService.selectAll();
|
|
|
|
PageSimpleResponse<IoOrderEntity> pageSimpleResponse = new PageSimpleResponse<>();
|
|
|
|
pageSimpleResponse.setTotal(100l);
|
|
|
|
pageSimpleResponse.setList(orderEntityList);
|
|
|
|
return ResultVOUtils.success(pageSimpleResponse);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//草稿保存
|
|
|
|
@AuthRuleAnnotation("")
|
|
|
|
@PostMapping("warehouse/inout/saveOrderWeb")
|
|
|
|
public BaseResponse saveOrderWeb(@RequestBody AddOrderRequest addOrderRequest) {
|
|
|
|
IoOrderEntity orderEntity = new IoOrderEntity();
|
|
|
|
orderEntity.setAction(addOrderRequest.getAction());
|
|
|
|
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction());
|
|
|
|
orderEntity.setMainAction(bussinessTypeEntity.getMainAction());
|
|
|
|
orderEntity.setFromCorp(addOrderRequest.getFromCorp());
|
|
|
|
orderEntity.setFromInvCode(addOrderRequest.getFromInvCode());
|
|
|
|
orderEntity.setDeptCode(addOrderRequest.getDeptCode());
|
|
|
|
orderEntity.setInvCode(addOrderRequest.getInvCode());
|
|
|
|
orderService.updateByBillNo(orderEntity);
|
|
|
|
|
|
|
|
|
|
|
|
IoCodeTempEntity warehouseEntity = new IoCodeTempEntity();
|
|
|
|
warehouseEntity.setOrderId(orderEntity.getBillNo());
|
|
|
|
warehouseEntity.setAction(orderEntity.getAction());
|
|
|
|
warehouseEntity.setMainAction(orderEntity.getMainAction());
|
|
|
|
warehouseEntity.setDeptCode(orderEntity.getDeptCode());
|
|
|
|
warehouseEntity.setInvCode(orderEntity.getInvCode());
|
|
|
|
codeTempService.updateByOrderId(warehouseEntity);
|
|
|
|
return ResultVOUtils.success("保存成功!");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@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) {
|
|
|
|
|
|
|
|
//校验单据是否已完成
|
|
|
|
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, "单据未校验完成,请检查后重新提交!");
|
|
|
|
}
|
|
|
|
saveOrderWeb(addOrderRequest);
|
|
|
|
checkInoutService.check(addOrderRequest.getBillNo());
|
|
|
|
} else {
|
|
|
|
return ResultVOUtils.error(500, "单据未校验完成,请先录入业务单据!");
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo());
|
|
|
|
ioAddInoutService.dealProcess(orderEntity);
|
|
|
|
checkInoutService.check(addOrderRequest.getBillNo());
|
|
|
|
return ResultVOUtils.success("提交成功!");
|
|
|
|
}
|
|
|
|
|
|
|
|
return ResultVOUtils.success("提交成功!");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//未校验单据删除
|
|
|
|
@AuthRuleAnnotation("")
|
|
|
|
@PostMapping("udiwms/inout/order/delete")
|
|
|
|
public BaseResponse deletById(@RequestBody DeleteRequest deleteRequest) {
|
|
|
|
orderService.deleteByBillNo(deleteRequest.getBillNo());
|
|
|
|
orderDetailBizService.deleteByOrderId(deleteRequest.getBillNo());
|
|
|
|
orderDetailCodeService.deleteByOrderId(deleteRequest.getBillNo());
|
|
|
|
codeTempService.deleteByBillNo(deleteRequest.getBillNo());
|
|
|
|
return ResultVOUtils.success("删除成功!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|