package com.glxp.api.controller.collect; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.controller.BaseController; import com.glxp.api.entity.basic.BasicSkPrescribeEntity; import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderCodeAuto; import com.glxp.api.entity.collect.IoCollectOrderCodeMan; import com.glxp.api.req.basic.PrescribeBindWorkRequest; 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; import com.glxp.api.res.collect.CollectOrderBizResponse; import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.service.collect.IoCollectOrderBizService; import com.glxp.api.service.collect.IoCollectOrderCodeAutoService; import com.glxp.api.service.collect.IoCollectOrderCodeManService; import com.glxp.api.service.collect.IoCollectOrderService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; 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.Arrays; import java.util.Date; import java.util.List; @RestController public class IoCollectOrderController extends BaseController { @Resource IoCollectOrderService collectOrderService; @Resource IoCollectOrderBizService collectOrderBizService; @GetMapping("/udiwms/basic/collect/order/filter") public BaseResponse filterOrder(CollectOrderRequest collectOrderRequest) { List orderResponses = collectOrderService.filterList(collectOrderRequest); PageInfo pageInfo = new PageInfo<>(orderResponses); PageSimpleResponse 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.setTagStatusList(List.of(1)); List orderResponses = collectOrderService.filterList(request); if (CollUtil.isNotEmpty(orderResponses)) return ResultVOUtils.success(orderResponses.get(0)); return ResultVOUtils.error(500, "未查到待处理单据"); } /** * 获取当前正在处理的单据 * * @param collectOrderRequest * @return */ @GetMapping("/udiwms/basic/collect/order/current") public BaseResponse getCurrentOrder(CollectOrderRequest collectOrderRequest) { if (collectOrderRequest.getWorkPlaceCode() == null) { return ResultVOUtils.error(500, "工位不能为空!"); } CollectOrderRequest request = new CollectOrderRequest(); request.setPage(1); request.setLimit(1); request.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); request.setTagStatus(2); List 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)); } 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 list = collectOrderBizService.filterList(collectOrderBizRequest); PageInfo pageInfo = new PageInfo<>(list); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(list); return ResultVOUtils.success(pageSimpleResponse); } @Resource IoCollectOrderCodeAutoService collectOrderCodeAutoService; @Resource IoCollectOrderCodeManService collectOrderCodeManService; @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, "未找到单据"); } List list = collectOrderBizService.filterList(collectOrderBizRequest); List splitCodes = collectOrderCodeAutoService.listByBillNo(collectOrderBizRequest.getOrderIdFk(), 1); List unSplitCodes = collectOrderCodeAutoService.listByBillNo(collectOrderBizRequest.getOrderIdFk(), 2); List manList = collectOrderCodeManService.listByBillNo(collectOrderBizRequest.getOrderIdFk()); List collectOrderBizResponses = new ArrayList<>(); for (CollectOrderBizResponse collectOrderBiz : list) { CollectOrderBizResponse collectOrderBizResponse = new CollectOrderBizResponse(); BeanUtils.copyProperties(collectOrderBiz, collectOrderBizResponse); //拆零 for (IoCollectOrderCodeAuto collectOrderCodeAuto : splitCodes) { if (collectOrderCodeAuto.getRelId().equals(collectOrderBiz.getRelId()) && (StrUtil.isNotEmpty(collectOrderCodeAuto.getBatchNo()) && StrUtil.trimToEmpty(collectOrderBiz.getBatchNo()).equals(collectOrderCodeAuto.getBatchNo()))) { collectOrderBizResponse.setSplitUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getSplitUdiCode()) + "," + collectOrderCodeAuto.getUdiCode()); } else if (collectOrderCodeAuto.getRelId().equals(collectOrderBiz.getRelId())) { collectOrderBizResponse.setSplitUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getSplitUdiCode()) + "," + collectOrderCodeAuto.getUdiCode()); } } if (StrUtil.isNotEmpty(collectOrderBizResponse.getSplitUdiCode())) { collectOrderBizResponse.setSplitUdiCode(collectOrderBizResponse.getSplitUdiCode().substring(1)); } //整取 for (IoCollectOrderCodeAuto collectOrderCodeAuto : unSplitCodes) { if (collectOrderCodeAuto.getRelId().equals(collectOrderBiz.getRelId()) && (StrUtil.isNotEmpty(collectOrderCodeAuto.getBatchNo()) && StrUtil.trimToEmpty(collectOrderBiz.getBatchNo()).equals(collectOrderCodeAuto.getBatchNo()))) { collectOrderBizResponse.setUnSplitUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getUnSplitUdiCode()) + "," + collectOrderCodeAuto.getUdiCode()); } else if (collectOrderCodeAuto.getRelId().equals(collectOrderBiz.getRelId())) { collectOrderBizResponse.setUnSplitUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getUnSplitUdiCode()) + "," + collectOrderCodeAuto.getUdiCode()); } } if (StrUtil.isNotEmpty(collectOrderBizResponse.getUnSplitUdiCode())) { collectOrderBizResponse.setUnSplitUdiCode(collectOrderBizResponse.getUnSplitUdiCode().substring(1)); } //手动 for (IoCollectOrderCodeMan collectOrderCodeAuto : manList) { if (collectOrderCodeAuto.getRelId().equals(collectOrderBiz.getRelId()) && (StrUtil.isNotEmpty(collectOrderCodeAuto.getBatchNo()) && StrUtil.trimToEmpty(collectOrderBiz.getBatchNo()).equals(collectOrderCodeAuto.getBatchNo()))) { collectOrderBizResponse.setScanUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getScanUdiCode()) + "," + collectOrderCodeAuto.getUdiCode()); } else if (collectOrderCodeAuto.getRelId().equals(collectOrderBiz.getRelId())) { collectOrderBizResponse.setScanUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getScanUdiCode()) + "," + collectOrderCodeAuto.getUdiCode()); } } if (StrUtil.isNotEmpty(collectOrderBizResponse.getScanUdiCode())) { collectOrderBizResponse.setUnSplitUdiCode(collectOrderBizResponse.getScanUdiCode().substring(1)); } collectOrderBizResponses.add(collectOrderBizResponse); } PageInfo pageInfo = new PageInfo<>(collectOrderBizResponses); PageSimpleResponse 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().eq(IoCollectOrder::getBillNo, billNo)); return ResultVOUtils.success(); } /** * 保存前端处方信息 * * @return */ @GetMapping("/udiwms/basic/collect/order/save") public BaseResponse saveOrder(@RequestBody CollectOrderSaveRequest collectOrderSaveRequest) { List list = collectOrderSaveRequest.getList(); collectOrderService.saveOrUpdateBatch(list); return ResultVOUtils.success(); } /** * 单据挂起 * * @return */ @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); return ResultVOUtils.success(); } /** * 单据挂起 * * @return */ @PostMapping("/udiwms/basic/collect/order/draft") 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(); } /** * 单据挂起 * * @return */ @PostMapping("/udiwms/basic/collect/order/finish") public BaseResponse saveFinishOrder(@RequestBody CollectOrderRequest collectOrderRequest) { //1.校验是否全部自动赋码 //2.校验扫码是否完成 IoCollectOrder collectOrder = new IoCollectOrder(); BeanUtils.copyProperties(collectOrderRequest, collectOrder); collectOrder.setTagStatus(3); collectOrder.setUpdateTime(new Date()); collectOrder.setUpdateUser(getUserId()); collectOrderService.updateByBillNo(collectOrder); return ResultVOUtils.success(); } @PostMapping("/udiwms/basic/collect/order/bindWork") public BaseResponse bindWork(@RequestBody CollectOrderBindWorkRequest bindWorkRequest) { if (bindWorkRequest.getCollOrder() != null) { IoCollectOrder collectOrder = bindWorkRequest.getCollOrder(); collectOrder.setWorkPlaceCode(bindWorkRequest.getWorkplaceCode()); collectOrder.setTagStatus(1); collectOrderService.updateById(collectOrder); } else { for (IoCollectOrder collectOrder : bindWorkRequest.getList()) { collectOrder.setTagStatus(1); collectOrder.setWorkPlaceCode(bindWorkRequest.getWorkplaceCode()); } collectOrderService.updateBatchById(bindWorkRequest.getList()); } return ResultVOUtils.success("绑定成功"); } @GetMapping("/udiwms/collect/order/import") public BaseResponse importOrder() { collectOrderService.importOrder(); return ResultVOUtils.success(); } @GetMapping("/udiwms/collect/order/clearAll") public BaseResponse clearAll() { collectOrderService.clearOrder(); return ResultVOUtils.success(); } }