You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java

500 lines
22 KiB
Java

package com.glxp.api.controller.collect;
import cn.hutool.core.collection.CollUtil;
10 months ago
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageInfo;
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.WorkOperType;
import com.glxp.api.controller.BaseController;
11 months ago
import com.glxp.api.entity.basic.BasicSkPrescribeEntity;
import com.glxp.api.entity.basic.SysWorkplaceDocumentEntity;
import com.glxp.api.entity.collect.*;
import com.glxp.api.entity.dev.DeviceCheckDetailItemEntity;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.basic.BasicCollectUserRequest;
11 months ago
import com.glxp.api.req.basic.PrescribeBindWorkRequest;
10 months ago
import com.glxp.api.req.basic.WorkBindBusTypeRequest;
import com.glxp.api.req.collect.CollectOrderBindWorkRequest;
import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.req.collect.CollectOrderRequest;
import com.glxp.api.req.collect.CollectOrderSaveRequest;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.PageSimpleResponse;
10 months ago
import com.glxp.api.res.basic.SysWorkplaceDocumentResponse;
import com.glxp.api.res.basic.UserWorkResponse;
import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.res.collect.IoCollectOrderResponse;
import com.glxp.api.service.basic.BasicCollectUserService;
import com.glxp.api.service.basic.SysWorkplaceDocumentService;
10 months ago
import com.glxp.api.service.collect.*;
11 months ago
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.MsDateUtil;
11 months ago
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
10 months ago
import org.springframework.transaction.annotation.Transactional;
11 months ago
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;
11 months ago
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
10 months ago
import java.util.*;
import java.util.stream.Collectors;
11 months ago
@RestController
public class IoCollectOrderController extends BaseController {
@Resource
IoCollectOrderService collectOrderService;
@Resource
IoCollectOrderOriginService collectOrderOriginService;
@Resource
IoCollectOrderBizOriginService collectOrderBizOriginService;
@Resource
IoCollectOrderBizService collectOrderBizService;
10 months ago
@Resource
IoCollectOrderBizBackupService collectOrderBizBackupService;
@Resource
private BasicCollectUserService basicCollectUserService;
10 months ago
@PostMapping("/udiwms/basic/collect/order/filter")
public BaseResponse filterOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
List<Long> workPlaceCodes = null;
10 months ago
List<SysWorkplaceDocumentResponse> sysWorkplaceDocumentResponses = null;
List<UserWorkResponse> page;
10 months ago
WorkBindBusTypeRequest workBindBusTypeRequest = new WorkBindBusTypeRequest();
10 months ago
if (collectOrderRequest.getWorkPlaceCode() == null) {
Long userId = getUserId();
BasicCollectUserRequest request = new BasicCollectUserRequest();
request.setPage(1);
request.setLimit(100);
request.setUserId(userId.toString());
page = basicCollectUserService.filterList(request);
if (page != null && page.size() > 0) {
workPlaceCodes = page.stream()
.map(UserWorkResponse::getWorkplaceId)
.collect(Collectors.toList());
}
10 months ago
//通过工位列表 获取出 业务列表
workBindBusTypeRequest.setWorkPlaceCodes(workPlaceCodes);
sysWorkplaceDocumentResponses = sysWorkplaceDocumentService.filterListByWorkplace(workBindBusTypeRequest);
10 months ago
} else {
10 months ago
workBindBusTypeRequest.setWorkplaceCode(collectOrderRequest.getWorkPlaceCode());
sysWorkplaceDocumentResponses = sysWorkplaceDocumentService.filterListByWorkplace(workBindBusTypeRequest);
10 months ago
// collectOrderRequest.setWorkPlaceCode(null);
}
if (collectOrderRequest.getTagStatus() != null && collectOrderRequest.getTagStatus() == -2) {
// collectOrderRequest.setExcludeWorkCode(String.valueOf(collectOrderRequest.getWorkPlaceCode()));
10 months ago
collectOrderRequest.setWorkPlaceCode(null);
10 months ago
collectOrderRequest.setTagStatus(1);
}
10 months ago
10 months ago
if (CollUtil.isNotEmpty(sysWorkplaceDocumentResponses)) {
10 months ago
Set<String> uniqueDocumentTypeCodesLinkedHashSet = sysWorkplaceDocumentResponses.stream()
.map(SysWorkplaceDocumentResponse::getDocumentTypeCode)
.collect(Collectors.toCollection(LinkedHashSet::new));
List<String> documentTypeCodes = new ArrayList<>(uniqueDocumentTypeCodesLinkedHashSet);
collectOrderRequest.setDocumentTypeCodes(documentTypeCodes);
}
List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(collectOrderRequest);
PageInfo<IoCollectOrderResponse> pageInfo = new PageInfo<>(orderResponses);
PageSimpleResponse<IoCollectOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(orderResponses);
return ResultVOUtils.success(pageSimpleResponse);
}
/**
*
*
* @param collectOrderRequest
* @return
*/
@GetMapping("/udiwms/basic/collect/order/next")
public BaseResponse getNextOrder(CollectOrderRequest collectOrderRequest) {
// if (collectOrderRequest.getWorkPlaceCode() == null) {
// return ResultVOUtils.error(500, "工位不能为空!");
// }
CollectOrderRequest request = new CollectOrderRequest();
request.setLimit(1);
request.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode());
request.setBusType(collectOrderRequest.getBusType());
request.setTagStatusList(List.of(1));
List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses))
return ResultVOUtils.success(orderResponses.get(0));
10 months ago
return ResultVOUtils.error(500, "该工位已无待处理单据");
}
10 months ago
@Resource
IoCollectSetService collectSetService;
11 months ago
/**
*
*
* @param collectOrderRequest
* @return
*/
@GetMapping("/udiwms/basic/collect/order/current")
public BaseResponse getCurrentOrder(CollectOrderRequest collectOrderRequest) {
// if (collectOrderRequest.getWorkPlaceCode() == null) {
// return ResultVOUtils.error(500, "工位不能为空!");
// }
11 months ago
CollectOrderRequest request = new CollectOrderRequest();
request.setPage(1);
request.setLimit(1);
request.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode());
request.setBusType(collectOrderRequest.getBusType());
//根据更改用户查询单据 防止两个用户分配同一单据
request.setUpdateUser(getUserId());
11 months ago
request.setTagStatus(2);
List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses))
return ResultVOUtils.success(orderResponses.get(0));
else {
request.setTagStatus(-1);
orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses))
return ResultVOUtils.success(orderResponses.get(0));
10 months ago
else {
IoCollectSet collectSet = collectSetService.getSet();
if (IntUtil.value(collectSet.getAutoAllotOrder())) {
10 months ago
request.setTagStatus(1);
orderResponses = collectOrderService.filterList(request);
return ResultVOUtils.success(orderResponses.get(0));
}
}
11 months ago
}
return ResultVOUtils.error(500, "未查到待处理单据");
}
11 months ago
/**
*
*
* @param collectOrderRequest
* @return
*/
@GetMapping("/udiwms/basic/collect/order/findByBill")
public BaseResponse findByBill(CollectOrderRequest collectOrderRequest) {
if (collectOrderRequest.getWorkPlaceCode() == null) {
return ResultVOUtils.error(500, "工位不能为空!");
}
CollectOrderRequest request = new CollectOrderRequest();
request.setPage(1);
request.setLimit(1);
request.setBillNo(collectOrderRequest.getBillNo());
List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses))
11 months ago
return ResultVOUtils.success(orderResponses.get(0));
else {
11 months ago
request.setTagStatus(-1);
orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses))
11 months ago
return ResultVOUtils.success(orderResponses.get(0));
}
return ResultVOUtils.error(500, "未查到待处理单据");
}
@GetMapping("/udiwms/basic/collect/order/detail")
public BaseResponse detail(CollectOrderBizRequest collectOrderBizRequest) {
if (StrUtil.isBlank(collectOrderBizRequest.getOrderIdFk())) {
return ResultVOUtils.error(500, "单据号不能为空");
}
IoCollectOrder collectOrder = collectOrderService.getByBillNo(collectOrderBizRequest.getOrderIdFk());
if (collectOrder == null) {
return ResultVOUtils.error(500, "未找到单据");
}
List<CollectOrderBizResponse> list = collectOrderBizService.filterList(collectOrderBizRequest);
PageInfo<CollectOrderBizResponse> pageInfo = new PageInfo<>(list);
PageSimpleResponse<CollectOrderBizResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(list);
return ResultVOUtils.success(pageSimpleResponse);
}
11 months ago
@GetMapping("/udiwms/basic/collect/order/allDetail")
public BaseResponse allDetail(CollectOrderBizRequest collectOrderBizRequest) {
if (StrUtil.isBlank(collectOrderBizRequest.getOrderIdFk())) {
return ResultVOUtils.error(500, "单据号不能为空");
}
IoCollectOrder collectOrder = collectOrderService.getByBillNo(collectOrderBizRequest.getOrderIdFk());
if (collectOrder == null) {
return ResultVOUtils.error(500, "未找到单据");
}
10 months ago
List<CollectOrderBizResponse> collectOrderBizResponses = collectOrderService.combieOrderDetail(collectOrderBizRequest);
11 months ago
PageInfo<CollectOrderBizResponse> pageInfo = new PageInfo<>(collectOrderBizResponses);
PageSimpleResponse<CollectOrderBizResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(collectOrderBizResponses);
return ResultVOUtils.success(pageSimpleResponse);
}
@PostMapping("/udiwms/basic/collect/order/deleteOrder")
public BaseResponse deleteOrder(@RequestBody DeleteRequest deleteRequest) {
String billNo = deleteRequest.getBillNo();
if (StrUtil.isBlank(billNo)) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
collectOrderService.remove(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, billNo));
collectOrderBizService.remove(new LambdaQueryWrapper<IoCollectOrderBiz>().eq(IoCollectOrderBiz::getOrderIdFk, billNo));
//更改 原始单据表 为未处理
collectOrderOriginService.update(new LambdaUpdateWrapper<IoCollectOrderOrigin>().eq(IoCollectOrderOrigin::getBillNo, billNo).set(IoCollectOrderOrigin::getTagStatus, 0));
return ResultVOUtils.success();
}
@PostMapping("/udiwms/basic/collect/order/deleteOriginOrder")
public BaseResponse deleteOrderOrigin(@RequestBody DeleteRequest deleteRequest) {
String billNo = deleteRequest.getBillNo();
if (StrUtil.isBlank(billNo)) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
collectOrderOriginService.remove(new LambdaQueryWrapper<IoCollectOrderOrigin>().eq(IoCollectOrderOrigin::getBillNo, billNo));
collectOrderBizOriginService.remove(new LambdaQueryWrapper<IoCollectOrderBizOrigin>().eq(IoCollectOrderBizOrigin::getOrderIdFk, billNo));
return ResultVOUtils.success();
}
/**
*
*
* @return
*/
@GetMapping("/udiwms/basic/collect/order/save")
public BaseResponse saveOrder(@RequestBody CollectOrderSaveRequest collectOrderSaveRequest) {
List<IoCollectOrder> list = collectOrderSaveRequest.getList();
collectOrderService.saveOrUpdateBatch(list);
return ResultVOUtils.success();
}
/**
* biz
*
* @return
*/
@PostMapping("/udiwms/basic/collect/order/biz/save")
10 months ago
public BaseResponse saveOrderBiz(@RequestBody IoCollectOrderBizBackup collectOrderBiz) {
collectOrderBizBackupService.updateById(collectOrderBiz);
return ResultVOUtils.success("更新成功");
}
11 months ago
/**
*
*
* @return
*/
11 months ago
@PostMapping("/udiwms/basic/collect/order/update")
public BaseResponse updateOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
IoCollectOrder collectOrder = new IoCollectOrder();
BeanUtils.copyProperties(collectOrderRequest, collectOrder);
collectOrder.setUpdateTime(new Date());
collectOrder.setUpdateUser(getUserId());
collectOrderService.updateById(collectOrder);
if (collectOrder.getTagStatus() == 2) {
collectOrderOriginService.update(new LambdaUpdateWrapper<IoCollectOrderOrigin>().eq(IoCollectOrderOrigin::getBillNo, collectOrder.getBillNo())
.set(IoCollectOrderOrigin::getTagStatus, 2));
}
11 months ago
return ResultVOUtils.success();
}
/**
*
*
* @return
*/
@PostMapping("/udiwms/basic/collect/order/draft")
11 months ago
public BaseResponse saveDraftOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
IoCollectOrder collectOrder = new IoCollectOrder();
BeanUtils.copyProperties(collectOrderRequest, collectOrder);
collectOrder.setTagStatus(-1);
collectOrder.setUpdateTime(new Date());
collectOrder.setUpdateUser(getUserId());
collectOrderService.updateById(collectOrder);
return ResultVOUtils.success();
}
@Resource
IoCollectOrderCodeManService collectOrderCodeManService;
10 months ago
/**
*
*
* @param collectOrderRequest
* @return
*/
@PostMapping("/udiwms/basic/collect/order/cancel")
public BaseResponse cancelOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
IoCollectOrder collectOrder = new IoCollectOrder();
BeanUtils.copyProperties(collectOrderRequest, collectOrder);
collectOrder.setTagStatus(1);
collectOrder.setUpdateTime(new Date());
collectOrder.setUpdateUser(getUserId());
// collectOrderService.list(Wrappers.lambdaQuery(IoCollectOrder.class)
// .eq(IoCollectOrder::getBusType, collectOrder.getBusType())
// .eq(IoCollectOrder::getTagStatus, 1)
// .orderByAsc(true,"orderTime").last("limit 1"));
10 months ago
collectOrderService.updateById(collectOrder);
collectOrderCodeManService.removeByBillNo(collectOrder.getBillNo());
SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByWorkplaceCode(null, collectOrderRequest.getBusType());
if (IntUtil.value(sysWorkplaceDocumentEntity.getScanType()) == WorkOperType.TYPE_GEN_ORDER) {
collectOrderBizService.removeByBillNo(collectOrder.getBillNo());
} else {
List<IoCollectOrderBiz> collectOrderBizs = collectOrderBizService.listByBillNo(collectOrderRequest.getBillNo());
for (IoCollectOrderBiz collectOrderBiz : collectOrderBizs) {
collectOrderBiz.setScanCount(0);
collectOrderBiz.setScanActCount(0);
collectOrderBiz.setTempSplitCount(0);
collectOrderBiz.setSplitUnCheck(false);
collectOrderBiz.setTempWorkPlaceCount(0);
if (collectOrderBiz.getCount() == 0) {
collectOrderBizService.removeById(collectOrderBiz.getId());
}
}
collectOrderBizService.updateBatchById(collectOrderBizs);
}
return ResultVOUtils.success("取消成功");
10 months ago
}
@Resource
SysWorkplaceDocumentService sysWorkplaceDocumentService;
11 months ago
/**
*
11 months ago
*
* @return
*/
11 months ago
@PostMapping("/udiwms/basic/collect/order/finish")
10 months ago
@Transactional(rollbackFor = Exception.class)
11 months ago
public BaseResponse saveFinishOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
10 months ago
if (!IntUtil.value(collectOrderRequest.getConfirmFinish())) {
//1.校验是否全部自动赋码
CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest();
collectOrderBizRequest.setOrderIdFk(collectOrderRequest.getBillNo());
List<CollectOrderBizResponse> collectOrderBizResponses = collectOrderService.combieOrderDetail(collectOrderBizRequest);
boolean isAllTag = collectOrderBizResponses.stream()
10 months ago
.allMatch(obj -> StrUtil.isNotEmpty(obj.getFinishUdiCode()) || obj.getAutoTagStatus() == 2);
10 months ago
if (!isAllTag) {
9 months ago
// SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(collectOrderRequest.getBusType());
// if (IntUtil.value(sysWorkplaceDocumentEntity.getOrderFinishVerify()) == 1) {
//
// } else {
// return ResultVOUtils.error(503, "该业务单据未全部赋码,无法完成单据?");
// }
return ResultVOUtils.error(502, "该业务单据未全部赋码,是否强制完成单据?");
10 months ago
}
}
collectOrderRequest.setUpdateUser(getUserId());
collectOrderService.finishOrder(collectOrderRequest, getUser());
11 months ago
return ResultVOUtils.success();
}
10 months ago
@PostMapping("/udiwms/basic/collect/order/vailFinish")
public BaseResponse vailOrderFinish(@RequestBody CollectOrderRequest collectOrderRequest) {
if (StrUtil.isEmpty(collectOrderRequest.getBillNo()))
return ResultVOUtils.error(500, "单据号不能为空!");
CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest();
collectOrderBizRequest.setOrderIdFk(collectOrderRequest.getBillNo());
List<CollectOrderBizResponse> collectOrderBizResponses = collectOrderService.combieOrderDetail(collectOrderBizRequest);
boolean isAllTag = collectOrderBizResponses.stream()
.allMatch(obj -> obj.getAutoTagStatus() == 2);
// StrUtil.isNotEmpty(obj.getFinishUdiCode()) ||
10 months ago
boolean isAllTag2 = collectOrderBizResponses.stream()
.allMatch(obj -> IntUtil.value(obj.getScanActCount()) >= IntUtil.value(obj.getCount()));
return ResultVOUtils.success(isAllTag || isAllTag2);
10 months ago
}
@PostMapping("/udiwms/basic/collect/order/bindWork")
public BaseResponse bindWork(@RequestBody CollectOrderBindWorkRequest bindWorkRequest) {
11 months ago
if (bindWorkRequest.getCollOrder() != null) {
IoCollectOrder collectOrder = bindWorkRequest.getCollOrder();
collectOrder.setWorkPlaceCode(bindWorkRequest.getWorkplaceCode());
11 months ago
collectOrder.setTagStatus(1);
11 months ago
collectOrderService.updateById(collectOrder);
} else {
for (IoCollectOrder collectOrder : bindWorkRequest.getList()) {
11 months ago
collectOrder.setTagStatus(1);
11 months ago
collectOrder.setWorkPlaceCode(bindWorkRequest.getWorkplaceCode());
}
collectOrderService.updateBatchById(bindWorkRequest.getList());
}
11 months ago
return ResultVOUtils.success("绑定成功");
}
11 months ago
@GetMapping("/udiwms/collect/order/import")
public BaseResponse importOrder() {
collectOrderService.importOrder();
return ResultVOUtils.success();
}
11 months ago
@GetMapping("/udiwms/collect/order/clearAll")
public BaseResponse clearAll() {
collectOrderService.clearOrder();
return ResultVOUtils.success();
}
11 months ago
10 months ago
/**
*
*
10 months ago
* @param collectOrderRequest
* @return
*/
@PostMapping("/udiwms/basic/collect/order/orderTop")
public BaseResponse orderTop(@RequestBody CollectOrderRequest collectOrderRequest) {
collectOrderService.orderTop(collectOrderRequest);
return ResultVOUtils.success();
}
11 months ago
/**
*
*
* @param
* @return
*/
// @PostMapping("/udiwms/basic/collect/order/upload")
// public BaseResponse orderUpload(@RequestBody CollectOrderRequest collectOrderRequest) {
// if (StrUtil.isEmpty(collectOrderRequest.getBillNo()))
// return ResultVOUtils.error(500, "单据号不能为空");
// collectOrderService.orderUpload(collectOrderRequest.getBillNo());
// return ResultVOUtils.success();
// }
@PostMapping("/udiwms/basic/collect/decideOrder")
public BaseResponse decideOrder(@RequestBody CollectOrderRequest request) {
Boolean isExis = collectOrderService.decideOrder(request, getUserId());
if (!isExis) {
return ResultVOUtils.error("当前工位存在正在处理单据!");
}
return ResultVOUtils.success();
}
}