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/inout/IoSplitController.java

207 lines
9.5 KiB
Java

package com.glxp.api.controller.inout;
11 months ago
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
11 months ago
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;
11 months ago
import com.glxp.api.entity.basic.BasicSkPrescribeDiEntity;
import com.glxp.api.entity.basic.BasicSkPrescribeEntity;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.basic.UdiProductEntity;
11 months ago
import com.glxp.api.entity.inout.IoSplitCodeEntity;
import com.glxp.api.entity.thrsys.BasicInsChdrugEntity;
11 months ago
import com.glxp.api.req.inout.AddTagCodeReqeust;
11 months ago
import com.glxp.api.req.inout.IoSplitCodeRequest;
import com.glxp.api.req.inout.IoSplitDetailCodeRequest;
import com.glxp.api.req.thrsys.ThrInsChDrugFeeRequest;
import com.glxp.api.res.PageSimpleResponse;
11 months ago
import com.glxp.api.res.basic.UdiRelevanceResponse;
11 months ago
import com.glxp.api.res.inout.IoSplitCodeDetailResponse;
11 months ago
import com.glxp.api.service.basic.BasicSkPrescribeDiService;
import com.glxp.api.service.basic.BasicSkPrescribeService;
import com.glxp.api.service.basic.UdiProductService;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.inout.IoSplitCodeDetailService;
import com.glxp.api.service.inout.IoSplitCodeService;
11 months ago
import com.glxp.api.service.inout.IoSplitFifoCodeService;
import com.glxp.api.util.udi.FilterUdiUtils;
import lombok.extern.slf4j.Slf4j;
11 months ago
import org.apache.commons.lang3.StringUtils;
11 months ago
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
11 months ago
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;
11 months ago
import javax.validation.Valid;
11 months ago
import java.util.List;
@Slf4j
@RestController
public class IoSplitController extends BaseController {
@Resource
IoSplitCodeService splitCodeService;
@Resource
IoSplitCodeDetailService splitCodeDetailService;
11 months ago
@Resource
BasicSkPrescribeDiService basicSkPrescribeDiService;
11 months ago
/**
*
*
* @return
*/
@GetMapping("/udiwms/ioSplit/material/code/filter")
public BaseResponse filterByCode(IoSplitCodeRequest splitCodeRequest,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
List<IoSplitCodeEntity> splitCodeEntities = splitCodeService.filterList(splitCodeRequest);
PageInfo<IoSplitCodeEntity> pageInfo = new PageInfo<>(splitCodeEntities);
PageSimpleResponse<IoSplitCodeEntity> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(splitCodeEntities);
return ResultVOUtils.success(pageSimpleResponse);
}
11 months ago
/**
11 months ago
*
11 months ago
*
* @return
*/
@GetMapping("/udiwms/ioSplit/material/prescribe/filter")
public BaseResponse filterByPrescribe(IoSplitDetailCodeRequest splitDetailCodeRequest,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
List<IoSplitCodeDetailResponse> splitCodeEntities = splitCodeDetailService.filterList(splitDetailCodeRequest);
PageInfo<IoSplitCodeDetailResponse> pageInfo = new PageInfo<>(splitCodeEntities);
PageSimpleResponse<IoSplitCodeDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(splitCodeEntities);
return ResultVOUtils.success(pageSimpleResponse);
}
11 months ago
/**
*
*
* @return
*/
@GetMapping("/udiwms/ioSplit/material/tagCode/filter")
public BaseResponse filterByTagCode(IoSplitDetailCodeRequest splitDetailCodeRequest,
11 months ago
BindingResult bindingResult) {
11 months ago
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
List<IoSplitCodeDetailResponse> splitCodeEntities = splitCodeDetailService.filterList(splitDetailCodeRequest);
PageInfo<IoSplitCodeDetailResponse> pageInfo = new PageInfo<>(splitCodeEntities);
PageSimpleResponse<IoSplitCodeDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(splitCodeEntities);
return ResultVOUtils.success(pageSimpleResponse);
}
11 months ago
@Resource
UdiRelevanceService udiRelevanceService;
@Resource
IoSplitFifoCodeService splitFifoCodeService;
@Resource
BasicSkPrescribeService basicSkPrescribeService;
/**
11 months ago
* )
11 months ago
*
* @return
*/
@PostMapping("/udiwms/ioSplit/material/prescribe/tagCode")
public BaseResponse prescribeTagCode(@RequestBody @Valid AddTagCodeReqeust addTagCodeReqeust,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
BasicSkPrescribeEntity basicSkPrescribeEntity = basicSkPrescribeService.getByCode(addTagCodeReqeust.getPrescribeNum());
if (basicSkPrescribeEntity == null)
return ResultVOUtils.error(500, "处方不存在!");
//1.校验UDI码完整性
String code = addTagCodeReqeust.getCode();
if (StringUtils.isBlank(code)) return ResultVOUtils.error(ResultEnum.DATA_ERROR);
if (code.endsWith("\u001D")) {
code = code.replace("\u001D", "");
}
UdiEntity udiEntity = FilterUdiUtils.getUdi(code);
if (udiEntity == null)
return ResultVOUtils.error(500, "无效条码!");
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(udiEntity.getUdi(), null);
if (CollUtil.isEmpty(udiRelevanceResponses))
return ResultVOUtils.error(500, "耗材字典不存在此产品!");
//2.校验是否处方单UDI码
List<BasicSkPrescribeDiEntity> basicSkPrescribeDiEntities = basicSkPrescribeDiService.findByPrescribe(addTagCodeReqeust.getPrescribeNum());
BasicSkPrescribeDiEntity basicSkPrescribeDiEntity = vailPrescribeProduct(udiRelevanceResponses, basicSkPrescribeDiEntities, udiEntity);
if (basicSkPrescribeDiEntity == null)
return ResultVOUtils.error(500, "非此处方单UDI码");
//3.校验该UDI码是否已经出库是否在预出库队列
Boolean b1 = splitFifoCodeService.isExitCode(code, basicSkPrescribeEntity.getWorkPlaceCode());
if (!b1) {
return ResultVOUtils.error(500, "该UDI码未出库无法使用");
}
// //3.判断收费项目是否已经赋码或是否满足该收费项目数量
// splitCodeService.
// List<IoSplitCodeDetailResponse> splitCodeEntities = splitCodeDetailService.filterList(splitDetailCodeRequest);
// PageInfo<IoSplitCodeDetailResponse> pageInfo = new PageInfo<>(splitCodeEntities);
// PageSimpleResponse<IoSplitCodeDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
// pageSimpleResponse.setTotal(pageInfo.getTotal());
// pageSimpleResponse.setList(splitCodeEntities);
return ResultVOUtils.success("赋码成功");
}
public BasicSkPrescribeDiEntity vailPrescribeProduct(List<UdiRelevanceResponse> udiRelevanceResponses, List<BasicSkPrescribeDiEntity> basicSkPrescribeDiEntities, UdiEntity udiEntity) {
for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) {
for (BasicSkPrescribeDiEntity basicSkPrescribeDiEntity : basicSkPrescribeDiEntities) {
if (udiRelevanceResponse.getId().equals(basicSkPrescribeDiEntity) &&
(StrUtil.isNotEmpty(basicSkPrescribeDiEntity.getBatchNo()) && basicSkPrescribeDiEntity.getBatchNo().equals(udiEntity.getBatchNo()))
) {
return basicSkPrescribeDiEntity;
}
}
}
return null;
}
/**
*
*
* @return
*/
@GetMapping("/udiwms/ioSplit/material/prescribe/tagCode/list")
public BaseResponse prescribeTagCodeList(IoSplitDetailCodeRequest splitDetailCodeRequest,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
List<IoSplitCodeDetailResponse> splitCodeEntities = splitCodeDetailService.filterList(splitDetailCodeRequest);
PageInfo<IoSplitCodeDetailResponse> pageInfo = new PageInfo<>(splitCodeEntities);
PageSimpleResponse<IoSplitCodeDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(splitCodeEntities);
return ResultVOUtils.success(pageSimpleResponse);
}
}