Forráskód Böngészése

Merge branch 'master' of huangrui/CostAccount into role_test

lijiaxi 4 éve
szülő
commit
6c1d39889c

+ 3 - 0
src/main/java/com/imed/costaccount/common/swagger/SwaggerConfig.java

@@ -4,6 +4,7 @@ import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrap
 import io.swagger.annotations.ApiOperation;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 import springfox.documentation.builders.ApiInfoBuilder;
 import springfox.documentation.builders.PathSelectors;
@@ -18,6 +19,8 @@ import java.util.List;
 
 import static com.google.common.collect.Lists.newArrayList;
 
+
+@Profile({"dev"})
 @Configuration
 @EnableSwagger2
 @EnableSwaggerBootstrapUI

+ 22 - 0
src/main/java/com/imed/costaccount/model/vo/IncomeErrorMessage.java

@@ -0,0 +1,22 @@
+package com.imed.costaccount.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model.vo
+ * @date 2021-08-06 14:18
+ */
+@Data
+@ApiModel("收集错误信息的记录")
+public class IncomeErrorMessage {
+    /**
+     * 错误行号
+     */
+    private Integer total;
+    /**
+     * 错误信息
+     */
+    private String errMessage;
+}

+ 2 - 1
src/main/java/com/imed/costaccount/service/MenuService.java

@@ -31,9 +31,10 @@ public interface MenuService extends IService<Menu> {
      * @param page 页码
      * @param pageSize 每页数据大小
      * @param user 当前登录用户
+     * @param name
      * @return 菜单分页列表
      */
-    PageUtils selectList(Integer page, Integer pageSize, User user);
+    PageUtils selectList(Integer page, Integer pageSize, User user, String name);
 
     /**
      * 编辑某个菜单

+ 74 - 6
src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupServiceImpl.java

@@ -13,15 +13,15 @@ import com.imed.costaccount.mapper.CostIncomeGroupMapper;
 import com.imed.costaccount.model.*;
 import com.imed.costaccount.model.vo.CostIncomeGroupAllAmountVO;
 import com.imed.costaccount.model.vo.CostIncomeGroupBeforeVO;
+import com.imed.costaccount.model.vo.IncomeErrorMessage;
 import com.imed.costaccount.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -36,12 +36,17 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
 
     private final AccountingService accountingService;
 
+    private final ResponsibilityDepartmentService responsibilityDepartmentService;
 
-    public CostIncomeGroupServiceImpl(DepartmentService departmentService, ResponsibilityService responsibilityService, ProductService productService, AccountingService accountingService) {
+    private final AccountingProductService accountingProductService;
+
+    public CostIncomeGroupServiceImpl(DepartmentService departmentService, ResponsibilityService responsibilityService, ProductService productService, AccountingService accountingService, ResponsibilityDepartmentService responsibilityDepartmentService, AccountingProductService accountingProductService) {
         this.departmentService = departmentService;
         this.responsibilityService = responsibilityService;
         this.productService = productService;
         this.accountingService = accountingService;
+        this.responsibilityDepartmentService = responsibilityDepartmentService;
+        this.accountingProductService = accountingProductService;
     }
 
     /**
@@ -101,14 +106,77 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
      * @return
      */
     @Override
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
     public Result importIncomeGroup(List<List<Object>> list, Long hospId) {
-        // 移除前几行的抬头内容
+        // 移除前几行的抬头内容  list的大小对应的就是行数的大小
         for (int i = list.size() - 1; i >= 0; i--) {
             if (i == NumberConstant.ZERO || i == NumberConstant.ONE || i == NumberConstant.TWO || i == NumberConstant.THREE) {
                 list.remove(list.get(i));
             }
         }
         log.info("读取的数据为:{}", list);
+        List<CostIncomeGroup> costIncomeGroupList = new ArrayList<>();
+        List<IncomeErrorMessage> incomeErrorMessageList = new ArrayList<>();
+        //获取所有的科室 成本项目 责任中心 会计科目
+        Map<String, Department> departmentMap = departmentService.list(new QueryWrapper<Department>().lambda().eq(Department::getHospId, hospId)).stream().collect(Collectors.toMap(k -> k.getDepartmentCode() + k.getDepartmentName(), synOe -> synOe));
+        Map<String,Product> productMap= productService.list(new QueryWrapper<Product>().lambda().eq(Product::getHospId, hospId)).stream().collect(Collectors.toMap(k -> k.getProductCode() + k.getProductName(), synOe -> synOe));
+        Map<Long, Responsibility> responsibilityMap = responsibilityService.list(new QueryWrapper<Responsibility>().lambda().eq(Responsibility::getHospId, hospId)).stream().collect(Collectors.toMap(Responsibility::getId,synOe->synOe));
+        Map<Long, Accounting> accountingMap = accountingService.list(new QueryWrapper<Accounting>().lambda().eq(Accounting::getHospId, hospId)).stream().collect(Collectors.toMap(Accounting::getId, synOe -> synOe));
+
+        for (int i = 0; i < list.size(); i++) {
+            // 用来检验数据合理性的循环
+            IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
+            List<Object> data = list.get(i);
+            log.info("用户输入的数据是{}",data);
+            Object money = data.get(data.size() - 1);
+            if (!Objects.isNull(money) && !NumberConstant.ZERO.equals(Integer.parseInt(money.toString()))){
+                // 要求这一行的数据必须全部填写
+                for (int j=0;j<data.size();j++){
+                    if (Objects.isNull(data.get(j))){
+                        incomeErrorMessage.setTotal(i);
+                        int row=i+1;
+                        int column=j+1;
+                        incomeErrorMessage.setErrMessage("第{"+row+"}行第{"+column+"}列数据为空");
+                        incomeErrorMessageList.add(incomeErrorMessage);
+                    }
+                }
+                // TODO 暂时不走循环  直接获取数据的处理
+                // 成本项目的代码和名称
+                String productCode = data.get(0).toString();
+                String productName = data.get(1).toString();
+                // 开单科室 执行科室的代码和名称
+                String openDepartmentName = data.get(2).toString();
+                String openDepartmentCode = data.get(3).toString();
+                String startDepartmentName = data.get(4).toString();
+                String startDepartmentCode = data.get(5).toString();
+                // 检验数据是否存在
+                Product product = productMap.get(productCode + productName);
+                Department department = departmentMap.get(openDepartmentCode + openDepartmentName);
+                Department department1 = departmentMap.get(startDepartmentCode + startDepartmentName);
+                if (Objects.isNull(product)){
+                    incomeErrorMessage.setTotal(i);
+                    incomeErrorMessage.setErrMessage("代码:"+productCode+" 名称:"+productName+"成本项目不存在");
+                    incomeErrorMessageList.add(incomeErrorMessage);
+                }else {
+                    // 检验对应的会计科目是否存在
+                    Long id = product.getId();
+
+                }
+                if (Objects.isNull(department)){
+                    incomeErrorMessage.setTotal(i);
+                    incomeErrorMessage.setErrMessage("代码:"+productCode+" 名称:"+productName+"开单科室不存在");
+                    incomeErrorMessageList.add(incomeErrorMessage);
+                }
+                if (Objects.isNull(department1)){
+                    incomeErrorMessage.setTotal(i);
+                    incomeErrorMessage.setErrMessage("代码:"+productCode+" 名称:"+productName+"执行科室不存在");
+                    incomeErrorMessageList.add(incomeErrorMessage);
+                }
+                // 检验科室对应的责任中心是否存在
+                // 检验成本项目对应的会计科目是否存在
+
+            }
+        }
         return Result.ok();
     }
 

+ 6 - 3
src/main/java/com/imed/costaccount/service/impl/CostIncomeGroupSetServiceImpl.java

@@ -65,13 +65,16 @@ public class CostIncomeGroupSetServiceImpl extends ServiceImpl<CostIncomeGroupSe
         if (!CollectionUtils.isEmpty(responsibilityList)) {
             final Map<String, String> listMap = responsibilityList.stream().collect(Collectors.toMap(Responsibility::getResponsibilityCode, Responsibility::getResponsibilityName));
             costIncomeGroupSetVOList.forEach(i -> {
+                List<String> responsibilityNameList = new LinkedList<>();
                 String responsibilityCode = i.getResponsibilityCodes();
                 if (!StringUtils.isEmpty(responsibilityCode)){
                     List<String> responsibilityCodeList = Arrays.asList(responsibilityCode.split(StrUtil.SLASH));
-                    if (CollectionUtils.isEmpty(responsibilityCodeList)) {
-                        String responsibilityName = listMap.get(responsibilityCodeList.get(responsibilityCodeList.size()-1));
-                        i.setResponsibilityName(responsibilityName);
+                    if (!CollectionUtils.isEmpty(responsibilityCodeList)) {
+                        responsibilityCodeList.forEach(m->{
+                            responsibilityNameList.add(listMap.get(m));
+                        });
                     }
+                    i.setResponsibilityName(String.join("/", responsibilityNameList));
                 }
                 if (NumberConstant.ONE.equals(i.getOpenDepartmentStatus()) && NumberConstant.ONE.equals(i.getStartDepartmentStatus())){
                     i.setAccountStatus(NumberConstant.ONE);

+ 6 - 2
src/main/java/com/imed/costaccount/service/impl/MenuServiceImpl.java

@@ -2,6 +2,7 @@ package com.imed.costaccount.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.constants.Constant;
@@ -64,12 +65,15 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
      * @param page     页码
      * @param pageSize 每页数据大小
      * @param user     当前登录用户
+     * @param name
      * @return 菜单伪列表
      */
     @Override
-    public PageUtils selectList(Integer page, Integer pageSize, User user) {
+    public PageUtils selectList(Integer page, Integer pageSize, User user, String name) {
         List<Menu> list = this.list(
-                new LambdaQueryWrapper<Menu>().eq(Menu::getHospId, user.getHospId()).orderByAsc(Menu::getOrderNum)
+                new LambdaQueryWrapper<Menu>().eq(Menu::getHospId, user.getHospId())
+                        .like(StrUtil.isNotBlank(name),Menu::getName,name)
+                        .orderByAsc(Menu::getOrderNum)
         );
 
         List<MenuVO> menuVOS = list.stream().map(i -> {

+ 1 - 1
src/main/java/com/imed/costaccount/service/impl/RoleMenuServiceImpl.java

@@ -118,7 +118,7 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public void saveRoleMenu(RoleMenuDTO roleMenuDTO, Long hospId) {
         Long roleId = roleMenuDTO.getRoleId();
-        this.removeById(roleId);
+        this.removeById(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, roleId).eq(RoleMenu::getHospId, hospId));
         List<Long> menuIds = roleMenuDTO.getMenuIds();
         if (CollUtil.isNotEmpty(menuIds)) {
             List<RoleMenu> roleMenus = menuIds.stream().map(i -> {

+ 3 - 4
src/main/java/com/imed/costaccount/web/MenuController.java

@@ -2,14 +2,12 @@ package com.imed.costaccount.web;
 
 import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
-import com.imed.costaccount.model.Menu;
 import com.imed.costaccount.model.dto.MenuEditDTO;
 import com.imed.costaccount.model.dto.MenuSaveDTO;
 import com.imed.costaccount.model.vo.NavVO;
 import com.imed.costaccount.service.MenuService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -48,8 +46,9 @@ public class MenuController extends AbstractController {
     @ApiOperation("菜单列表")
     @GetMapping("/list")
     public Result list(@RequestParam(defaultValue = "1", value = "current") Integer page,
-                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
-        PageUtils pageUtils = menuService.selectList(page, pageSize, getUser());
+                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+                       @RequestParam(value = "name",required = false) String name) {
+        PageUtils pageUtils = menuService.selectList(page, pageSize, getUser(),name);
         return Result.ok(pageUtils);
     }