package com.glxp.api.controller.collect; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.dao.collect.IoCollectOrderBackupMapper; import com.glxp.api.entity.collect.IoCollectOrderBackup; import com.glxp.api.entity.collect.IoCollectOrderBizBackup; import com.glxp.api.entity.collect.IoCollectOrderCodeMan; import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.basic.BasicCollectUserRequest; import com.glxp.api.req.collect.*; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UserWorkResponse; import com.glxp.api.res.collect.CollectOrderBizResponse; import com.glxp.api.res.collect.CollectOrderUploadCountResponse; import com.glxp.api.res.collect.IoCollectCodeResponse; import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.service.basic.BasicCollectUserService; import com.glxp.api.service.collect.IoCollectOrderBackupService; import com.glxp.api.service.collect.IoCollectOrderBizBackupService; import lombok.extern.slf4j.Slf4j; import org.aspectj.weaver.ast.Var; 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.List; import java.util.Map; import java.util.stream.Collectors; /** * @author : zhu * @date : 2024/9/11 10:36 * @modyified By : */ @RestController @Slf4j public class IoCollectOrderBackupController extends BaseController { @Resource private IoCollectOrderBackupService ioCollectOrderBackupService; @Resource private BasicCollectUserService basicCollectUserService; @Resource private IoCollectOrderBizBackupService ioCollectOrderBizBackupService; @PostMapping("/udiwms/basic/collect/orderFinish/filter") public BaseResponse filterOrder(@RequestBody CollectOrderRequest collectOrderRequest) { List workPlaceCodes = null; List page; // 上传医保不做登录权限限制 // 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) { // workPlaceCodes = page.stream() // .map(UserWorkResponse::getWorkplaceId) // .collect(Collectors.toList()); // } // collectOrderRequest.setWorkPlaceCodes(workPlaceCodes); // } log.error("collectOrderRequest"+collectOrderRequest); List orderResponses = ioCollectOrderBackupService.filterList(collectOrderRequest); PageInfo pageInfo = new PageInfo<>(orderResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(orderResponses); return ResultVOUtils.success(pageSimpleResponse); } @GetMapping("/udiwms/basic/collect/orderFinish/detail") public BaseResponse allDetail(CollectOrderBizRequest collectOrderBizRequest) { if (StrUtil.isBlank(collectOrderBizRequest.getOrderIdFk())) { return ResultVOUtils.error(500, "单据号不能为空"); } IoCollectOrderBackup collectOrder = ioCollectOrderBackupService.getByBillNo(collectOrderBizRequest.getOrderIdFk()); if (collectOrder == null) { return ResultVOUtils.error(500, "未找到单据"); } List collectOrderBizResponses = ioCollectOrderBackupService.setScanCodeOrderDetail(collectOrderBizRequest); for (CollectOrderBizResponse response : collectOrderBizResponses) { if (response.getGgxh() == null) { response.setGgxh(response.getSpec()); } } List collectOrderBizResponses1 = collectOrderBizResponses.stream().skip((collectOrderBizRequest.getPage() - 1) * collectOrderBizRequest.getLimit()).limit(collectOrderBizRequest.getLimit()). collect(Collectors.toList()); PageInfo pageInfo = new PageInfo<>(collectOrderBizResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(collectOrderBizResponses1); return ResultVOUtils.success(pageSimpleResponse); } /** * 已完成单据上传 * * @param collectOrderRequest * @return */ @PostMapping("/udiwms/basic/collect/order/upload") public BaseResponse orderUpload(@RequestBody CollectOrderRequest collectOrderRequest) { if (StrUtil.isEmpty(collectOrderRequest.getBillNo())) return ResultVOUtils.error(500, "单据号不能为空"); Boolean aBoolean = ioCollectOrderBackupService.orderUpload(collectOrderRequest.getBillNo(), getUser()); if (!aBoolean) { return ResultVOUtils.error("上传失败"); } return ResultVOUtils.success(); } @Resource private ErpBasicClient erpBasicClient; /** * 医保单据删除 * * @param collectOrderRequest * @return */ @Resource private IoCollectOrderBackupMapper ioCollectOrderBackupMapper; @PostMapping("/udiwms/basic/collect/order/orderMedicalDelete") public BaseResponse orderMedicalDelete(@RequestBody CollectOrderRequest collectOrderRequest) { PostOrderMedicalDeleteRequest postOrderMedicalDeleteRequest = new PostOrderMedicalDeleteRequest(); postOrderMedicalDeleteRequest.setThirdSys("thirdId"); postOrderMedicalDeleteRequest.setBillNo(collectOrderRequest.getBillNo()); postOrderMedicalDeleteRequest.setBusType(collectOrderRequest.getBusType()); BaseResponse baseResponse = erpBasicClient.orderMedicalDelete(postOrderMedicalDeleteRequest); if (baseResponse.getCode() == 20000) { IoCollectOrderBackup ioCollectOrderBackup = new IoCollectOrderBackup(); ioCollectOrderBackup.setUploadStatus(4); ioCollectOrderBackupMapper.update( ioCollectOrderBackup,new QueryWrapper().eq("billNo",collectOrderRequest.getBillNo()) ); } return baseResponse; } /** * 通过业务外键获取码明细 * * @param collectOrderBizRequest * @return */ @GetMapping("/udiwms/basic/collect/orderFinish/codeDetail") public BaseResponse codeDetail(CollectOrderBizRequest collectOrderBizRequest) { if (collectOrderBizRequest.getId() == null) { return ResultVOUtils.error(500, "业务外键不能为空"); } List list = ioCollectOrderBackupService.codeDetail(collectOrderBizRequest.getId()); return ResultVOUtils.success(list); } /** * 获取单据上传医保统计信息 * * @param collectOrderUploadCountRequest * @return */ @PostMapping("/udiwms/basic/collect/orderFinish/uploadCount") public BaseResponse uploadCount(@RequestBody CollectOrderUploadCountRequest collectOrderUploadCountRequest) { CollectOrderUploadCountResponse collectOrderUploadCountResponse = new CollectOrderUploadCountResponse(); if (collectOrderUploadCountRequest.getStartTime() != null && collectOrderUploadCountRequest.getEndTime() != null) { collectOrderUploadCountRequest.setStartTime(collectOrderUploadCountRequest.getStartTime() + " 00:00:00"); collectOrderUploadCountRequest.setEndTime(collectOrderUploadCountRequest.getEndTime() + " 23:59:59"); } List> list = ioCollectOrderBackupService.listMaps(new QueryWrapper() .groupBy("uploadStatus") .between(collectOrderUploadCountRequest.getStartTime() != null && collectOrderUploadCountRequest.getEndTime() != null , "updateTime", collectOrderUploadCountRequest.getStartTime(), collectOrderUploadCountRequest.getEndTime()) .select("uploadStatus", "count(1) as count") ); Long notUploadingCount = 0L; Long alreadyUploadingCount = 0L; Long uploadingFailCount = 0L; if (list != null && list.size() > 0) { for (Map stringObjectMap : list) { if (1 == (Integer) stringObjectMap.get("uploadStatus")) { notUploadingCount += (Long) stringObjectMap.get("count"); } else if (2 == (Integer) stringObjectMap.get("uploadStatus")) { alreadyUploadingCount += (Long) stringObjectMap.get("count"); } else if (3 == (Integer) stringObjectMap.get("uploadStatus")) { uploadingFailCount += (Long) stringObjectMap.get("count"); } } } collectOrderUploadCountResponse.setNotUploadingCount(notUploadingCount); collectOrderUploadCountResponse.setAlreadyUploadingCount(alreadyUploadingCount); collectOrderUploadCountResponse.setUploadingFailCount(uploadingFailCount); // 总上传码数量 获取采购上传率 销售上传率 计算 ioCollectOrderBackupService.calculatedUploadRate(collectOrderUploadCountRequest, collectOrderUploadCountResponse); return ResultVOUtils.success(collectOrderUploadCountResponse); } @GetMapping("/udiwms/basic/collect/ioCollectCodeBackup/getOrderDetails") public BaseResponse getOrderDetails(CollectOrderRequest collectOrderRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest(); collectOrderBizRequest.setOrderIdFk(collectOrderRequest.getBillNo()); List collectOrderBizResponses = ioCollectOrderBizBackupService.filterList(collectOrderBizRequest); PageInfo pageInfo = new PageInfo<>(collectOrderBizResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(collectOrderBizResponses); return ResultVOUtils.success(pageSimpleResponse); } @PostMapping("/udiwms/basic/collect/orderFinish/orderStats") public BaseResponse orderStats(@RequestBody CollectOrderRequest collectOrderRequest) { List workPlaceCodes = null; List page; // 上传医保不做登录权限限制 log.error("collectOrderRequest"+collectOrderRequest); Page orderResponses = ioCollectOrderBackupService.filterorderStatsList(collectOrderRequest); return ResultVOUtils.success(orderResponses); } }