package com.glxp.api.controller.collect; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; 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.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderBiz; import com.glxp.api.entity.collect.IoCollectOrderCodeMan; import com.glxp.api.exception.JsonException; import com.glxp.api.req.collect.CollectOrderCodeManRequest; import com.glxp.api.req.inout.AddTagCodeReqeust; import com.glxp.api.req.inout.DeleteTageCodeRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.collect.CollectOrderCodeManResponse; import com.glxp.api.res.inout.VailCodeResultResponse; import com.glxp.api.res.inout.VailTagResultResponse; import com.glxp.api.service.collect.IoCollectOrderBizService; import com.glxp.api.service.collect.IoCollectOrderCodeManService; import com.glxp.api.service.collect.IoCollectOrderService; import com.glxp.api.util.IntUtil; import lombok.extern.slf4j.Slf4j; 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 javax.validation.Valid; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Slf4j @RestController public class IoCollectOrderCodeManController extends BaseController { @Resource IoCollectOrderService collectOrderService; @Resource IoCollectOrderCodeManService collectOrderCodeManService; /** * 器械拆零处方赋码明细 * * @return */ @GetMapping("/udiwms/ioSplit/collect/manual/code/list") public BaseResponse manuCodeList(CollectOrderCodeManRequest collectOrderCodeManRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } List collectOrderCodeManResponses = collectOrderCodeManService.filterList(collectOrderCodeManRequest); PageInfo pageInfo = new PageInfo<>(collectOrderCodeManResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(collectOrderCodeManResponses); return ResultVOUtils.success(pageSimpleResponse); } /** * 器械拆零处方赋码(手动赋码) * * @return */ @PostMapping("/udiwms/ioSplit/collect/order/tagCode") public BaseResponse prescribeTagCode(@RequestBody @Valid AddTagCodeReqeust addTagCodeReqeust, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } IoCollectOrder collectOrder = collectOrderCodeManService.prescribeTagCode(addTagCodeReqeust); return ResultVOUtils.success(collectOrder); } /** * 器械拆零处方赋码(批量赋码) * * @return */ @PostMapping("/udiwms/ioSplit/collect/order/batchAddCode") public BaseResponse batchAddCode(@RequestBody @Valid AddTagCodeReqeust addTagCodeReqeust, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } IoCollectOrder collectOrder = null; VailTagResultResponse vailTagResultResponse = new VailTagResultResponse(); List vailCodeResultResponses = new ArrayList<>(); List vailCodesList = new ArrayList(); if (CollUtil.isNotEmpty(addTagCodeReqeust.getCodeList())) { for (String code : addTagCodeReqeust.getCodeList()) { VailCodeResultResponse vailCodeResultResponse = new VailCodeResultResponse(); addTagCodeReqeust.setCode(code); vailCodeResultResponse.setCode(code); vailCodeResultResponse.setStatus(1); try { collectOrder = collectOrderCodeManService.prescribeTagCode(addTagCodeReqeust); } catch (JsonException e) { vailCodeResultResponse.setErrMsg(e.getMessage()); if (e.getCode() == 502) { vailCodeResultResponse.setStatus(3); } else if (e.getCode() == 503) { // 单据扫码数量大于1 的需要拆零确认 String msg = e.getMessage(); String[] data = msg.split(";"); String count = data[1]; if (IntUtil.value(count) > 1) { vailCodeResultResponse.setStatus(4); vailCodeResultResponse.setBizId(data[0]); vailCodeResultResponse.setCpmctymc(data[2]); vailCodeResultResponse.setErrMsg(data[3]); } vailCodesList.add(code); } else { vailCodeResultResponse.setStatus(2); } } vailCodeResultResponses.add(vailCodeResultResponse); } } vailTagResultResponse.setCollectOrder(collectOrder); vailTagResultResponse.setVailCodeResultResponses(vailCodeResultResponses); String errMsg = countSameErrMsg(vailCodeResultResponses); if (StrUtil.isNotEmpty(errMsg)) { return ResultVOUtils.error(500, errMsg); } else { addTagCodeReqeust.setCodeList(vailCodesList); addTagCodeReqeust.setInsert(true); for (String code : vailCodesList) { addTagCodeReqeust.setCode(code); collectOrderCodeManService.prescribeTagCode(addTagCodeReqeust); } } return ResultVOUtils.success(vailTagResultResponse); } @Resource IoCollectOrderBizService collectOrderBizService; /** * 拆零确认 * * @param * @return */ @PostMapping("/udiwms/ioSplit/collect/order/batchUpdateCode") public BaseResponse batchUpdate(@RequestBody AddTagCodeReqeust addTagCodeReqeust, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } List collectOrderCodeMEN = addTagCodeReqeust.getCollectOrderCodeManList(); if (CollUtil.isNotEmpty(collectOrderCodeMEN)) { for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodeMEN) { collectOrderCodeManService.updateById(collectOrderCodeMan); IoCollectOrderBiz collectiveOrderBiz = new IoCollectOrderBiz(); collectiveOrderBiz.setId(collectOrderCodeMan.getBizIdFk()); collectiveOrderBiz.setSplitUnCheck(false); collectOrderBizService.updateById(collectiveOrderBiz); } return ResultVOUtils.success("更新成功!"); } else { return ResultVOUtils.error("数据不能为空"); } } public String countSameErrMsg(List vailCodeResultResponses) { Map errMsgCountMap = new HashMap<>(); for (VailCodeResultResponse response : vailCodeResultResponses) { String errMsg = response.getCode().substring(0, 7) + ";" + response.getErrMsg(); if (errMsgCountMap.containsKey(errMsg)) { errMsgCountMap.put(errMsg, errMsgCountMap.get(errMsg) + 1); } else { errMsgCountMap.put(errMsg, 1); } } for (Map.Entry entry : errMsgCountMap.entrySet()) { String key = entry.getKey(); Integer value = entry.getValue(); if (value > 1) { return key.substring(8); } } return null; } @PostMapping("/udiwms/ioSplit/collect/code/remove") public BaseResponse removeCode(@RequestBody @Valid DeleteTageCodeRequest deleteTageCodeRequest, BindingResult bindingResult) { if (CollUtil.isNotEmpty(deleteTageCodeRequest.getCodeManIds())) { for (Long codeManId : deleteTageCodeRequest.getCodeManIds()) { deleteTageCodeRequest.setCodeManId(codeManId); collectOrderService.removeCode(deleteTageCodeRequest); } } else { collectOrderService.removeCode(deleteTageCodeRequest); } return ResultVOUtils.success("操作成功!"); } @PostMapping("/udiwms/ioSplit/collect/code/removeByScanCode") public BaseResponse removeByScanCode(@RequestBody @Valid DeleteTageCodeRequest deleteTageCodeRequest, BindingResult bindingResult) { //codes orderId String orderId = deleteTageCodeRequest.getOrderId(); IoCollectOrder ioCollectOrder = collectOrderService.getByBillNo(orderId); if (ioCollectOrder == null) return ResultVOUtils.error(500, "单据不存在"); if (CollUtil.isNotEmpty(deleteTageCodeRequest.getCodeList())) { List ioCollectOrderCodes = collectOrderCodeManService.selectByCodeAndOrderId(deleteTageCodeRequest.getCodeList(), orderId); for (IoCollectOrderCodeMan ioCollectOrderCode : ioCollectOrderCodes) { deleteTageCodeRequest.setDelType(1); deleteTageCodeRequest.setCodeManId(Long.valueOf(ioCollectOrderCode.getId())); collectOrderService.removeCode(deleteTageCodeRequest); } } else return ResultVOUtils.error("无效条码"); return ResultVOUtils.success("剔除成功!"); } }