ljx před 4 roky
rodič
revize
82c12b239a

+ 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);
 
     /**
      * 编辑某个菜单

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

@@ -13,9 +13,12 @@ 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.*;
@@ -33,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;
     }
 
     /**
@@ -98,8 +106,9 @@ 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));
@@ -107,15 +116,66 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
         }
         log.info("读取的数据为:{}", list);
         List<CostIncomeGroup> costIncomeGroupList = new ArrayList<>();
-        List<String> errRowNums = 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);
-            CostIncomeGroup costIncomeGroup = new CostIncomeGroup();
-            costIncomeGroup.setCreateTime(System.currentTimeMillis());
-            costIncomeGroup.setHospId(hospId);
+            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 - 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 -> {

+ 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);
     }