|
|
|
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.enums.ResultEnum;
|
|
|
|
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.auth.InvBusUserEntity;
|
|
|
|
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
|
|
|
|
import com.glxp.api.entity.basic.EntrustReceEntity;
|
|
|
|
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.auth.FilterInvBusUserRequest;
|
|
|
|
import com.glxp.api.req.basic.BasicEntrustRecRequest;
|
|
|
|
import com.glxp.api.req.inout.AddOrderRequest;
|
|
|
|
import com.glxp.api.req.inout.FilterOrderDetailBizRequest;
|
|
|
|
import com.glxp.api.req.inout.FilterOrderRequest;
|
|
|
|
import com.glxp.api.req.inout.OrderEditRequest;
|
|
|
|
import com.glxp.api.req.system.DeleteRequest;
|
|
|
|
import com.glxp.api.res.PageSimpleResponse;
|
|
|
|
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
|
|
|
|
import com.glxp.api.res.inout.IoOrderResponse;
|
|
|
|
import com.glxp.api.res.inout.PdaBusOrderResponse;
|
|
|
|
import com.glxp.api.service.auth.InvBusUserService;
|
|
|
|
import com.glxp.api.service.basic.EntrustReceService;
|
|
|
|
import com.glxp.api.service.basic.IBasicBussinessTypeService;
|
|
|
|
import com.glxp.api.service.inout.*;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
import org.springframework.validation.BindingResult;
|
|
|
|
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.ArrayList;
|
|
|
|
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(Long.valueOf(orderEntityList.size()));
|
|
|
|
pageSimpleResponse.setList(orderEntityList);
|
|
|
|
return ResultVOUtils.success(pageSimpleResponse);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//处理单据提交,草稿保存
|
|
|
|
@AuthRuleAnnotation("")
|
|
|
|
@PostMapping("warehouse/inout/saveOrderWeb")
|
|
|
|
public BaseResponse saveOrderWeb(@RequestBody AddOrderRequest addOrderRequest) {
|
|
|
|
IoOrderEntity orderEntity = new IoOrderEntity();
|
|
|
|
if (StrUtil.isEmpty(addOrderRequest.getAction()))
|
|
|
|
return ResultVOUtils.error(500, "单据类型不能为空");
|
|
|
|
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, "单据未校验完成,请检查后重新提交!");
|
|
|
|
}
|
|
|
|
errMsg = checkInoutService.codeOrderCheck(orderDetailCodeEntities, orderDetailBizEntities);
|
|
|
|
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("删除成功!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//手持终端获取未处理业务单据进行校验
|
|
|
|
@AuthRuleAnnotation("")
|
|
|
|
@GetMapping("/udiwms/erpOrder/filter")
|
|
|
|
public BaseResponse filterErpOrder(FilterOrderRequest filterOrderRequest,
|
|
|
|
BindingResult bindingResult) {
|
|
|
|
|
|
|
|
if (bindingResult.hasErrors()) {
|
|
|
|
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
|
|
|
|
}
|
|
|
|
if (StrUtil.isEmpty(filterOrderRequest.getAction()))
|
|
|
|
return ResultVOUtils.error(500, "单据类型不能为空!");
|
|
|
|
List<IoOrderResponse> orderResponses = orderService.filterList(filterOrderRequest);
|
|
|
|
List<PdaBusOrderResponse> erpOrderResponses = new ArrayList<>();
|
|
|
|
if (CollUtil.isNotEmpty(orderResponses)) {
|
|
|
|
for (IoOrderResponse orderResponse : orderResponses) {
|
|
|
|
PdaBusOrderResponse pdaBusOrderResponse = new PdaBusOrderResponse();
|
|
|
|
BeanUtils.copyProperties(orderResponse, pdaBusOrderResponse);
|
|
|
|
FilterOrderDetailBizRequest filterOrderDetailBizRequest = new FilterOrderDetailBizRequest();
|
|
|
|
filterOrderDetailBizRequest.setOrderIdFk(orderResponse.getBillNo());
|
|
|
|
List<IoOrderDetailBizResponse> orderDetailBizEntities = orderDetailBizService.filterList(filterOrderDetailBizRequest);
|
|
|
|
pdaBusOrderResponse.setOrderDetailBizResponses(orderDetailBizEntities);
|
|
|
|
erpOrderResponses.add(pdaBusOrderResponse);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
PageInfo<IoOrderResponse> pageInfo;
|
|
|
|
pageInfo = new PageInfo<>(orderResponses);
|
|
|
|
PageSimpleResponse<PdaBusOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
|
|
|
|
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
|
|
|
pageSimpleResponse.setList(erpOrderResponses);
|
|
|
|
return ResultVOUtils.success(pageSimpleResponse);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
EntrustReceService entrustReceService;
|
|
|
|
@Resource
|
|
|
|
InvBusUserService invBusUserService;
|
|
|
|
|
|
|
|
//手持终端下载扫码单据进行审核
|
|
|
|
@AuthRuleAnnotation("")
|
|
|
|
@GetMapping("/udiwms/inout/order/download")
|
|
|
|
public BaseResponse downloadOrder(FilterOrderRequest filterOrderRequest,
|
|
|
|
BindingResult bindingResult) {
|
|
|
|
|
|
|
|
if (bindingResult.hasErrors()) {
|
|
|
|
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
|
|
|
|
}
|
|
|
|
Long userId = null;
|
|
|
|
if (filterOrderRequest.getWmsUserId() != null) {
|
|
|
|
userId = filterOrderRequest.getWmsUserId();
|
|
|
|
} else userId = getUserId();
|
|
|
|
|
|
|
|
List<EntrustReceEntity> entrustReceEntities;
|
|
|
|
List<InvBusUserEntity> warehouseUserEntities = null;
|
|
|
|
IoOrderEntity stockOrderEntity = orderService.findByBillNo(filterOrderRequest.getBillNo());
|
|
|
|
if (stockOrderEntity == null) {
|
|
|
|
return ResultVOUtils.error(500, "单据未找到!");
|
|
|
|
} else if (stockOrderEntity.getStatus() == ConstantStatus.ORDER_STATUS_CHECK_SUCCESS) {
|
|
|
|
|
|
|
|
//1.校验是否为委托验收人
|
|
|
|
if (!stockOrderEntity.isEntrustEnd()) {
|
|
|
|
BasicEntrustRecRequest basicEntrustRecRequest = new BasicEntrustRecRequest();
|
|
|
|
basicEntrustRecRequest.setAction(stockOrderEntity.getAction());
|
|
|
|
basicEntrustRecRequest.setEntrustUser(userId);
|
|
|
|
basicEntrustRecRequest.setCurInv(stockOrderEntity.getInvCode());
|
|
|
|
entrustReceEntities = entrustReceService.filterEntrustRec(basicEntrustRecRequest);
|
|
|
|
} else {
|
|
|
|
return ResultVOUtils.error(500, "单据已委托验收完成!");
|
|
|
|
}
|
|
|
|
|
|
|
|
//2.校验是否为用户所属单据类型
|
|
|
|
if (StrUtil.isNotEmpty(stockOrderEntity.getDeptCode())) {
|
|
|
|
FilterInvBusUserRequest filterInvBusUserRequest = new FilterInvBusUserRequest();
|
|
|
|
filterInvBusUserRequest.setSubInvCode(stockOrderEntity.getInvCode());
|
|
|
|
filterInvBusUserRequest.setUserId(userId + "");
|
|
|
|
filterInvBusUserRequest.setScAction(stockOrderEntity.getAction());
|
|
|
|
warehouseUserEntities = invBusUserService.filterInvBusUser(filterInvBusUserRequest);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(warehouseUserEntities) && CollUtil.isEmpty(entrustReceEntities)) {
|
|
|
|
return ResultVOUtils.error(500, "权限不足,无法验收!");
|
|
|
|
}
|
|
|
|
} else if (stockOrderEntity.getStatus() == ConstantStatus.ORDER_STATUS_AUDITED) {
|
|
|
|
return ResultVOUtils.error(500, "单据已审核!");
|
|
|
|
} else {
|
|
|
|
return ResultVOUtils.error(500, "非未审核单据!");
|
|
|
|
}
|
|
|
|
|
|
|
|
List<IoOrderResponse> orderEntityList = orderService.filterList(filterOrderRequest);
|
|
|
|
PageInfo<IoOrderResponse> pageInfo;
|
|
|
|
pageInfo = new PageInfo<>(orderEntityList);
|
|
|
|
PageSimpleResponse<IoOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
|
|
|
|
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
|
|
|
pageSimpleResponse.setList(orderEntityList);
|
|
|
|
return ResultVOUtils.success(pageSimpleResponse);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 单据编辑页面查询单据接口
|
|
|
|
*
|
|
|
|
* @param billNo
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
@GetMapping("udiwms/inout/order/filterOrderTrace")
|
|
|
|
public BaseResponse filterOrderTrace(String billNo) {
|
|
|
|
if (StrUtil.isBlank(billNo)) {
|
|
|
|
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
|
|
|
|
}
|
|
|
|
List<IoOrderEntity> list = orderService.filterOrderTrace(billNo);
|
|
|
|
List<IoOrderResponse> responses = orderService.findResponse(list);
|
|
|
|
return ResultVOUtils.success(responses);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 批量修改单据信息
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
@PostMapping("/udiwms/inout/order/updateOrderInfo")
|
|
|
|
public BaseResponse updateOrderInfo(@RequestBody OrderEditRequest orderEditRequest) {
|
|
|
|
if (null == orderEditRequest || CollUtil.isEmpty(orderEditRequest.getOrderIds())) {
|
|
|
|
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
|
|
|
|
}
|
|
|
|
orderService.updateOrderInfo(orderEditRequest);
|
|
|
|
return ResultVOUtils.success();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|