瀏覽代碼

Merge branch 'master' of huangrui/CostAccount into dev

huangrui 4 年之前
父節點
當前提交
9ab2f0df83

+ 1 - 1
src/main/java/com/imed/costaccount/model/CostShareParam.java

@@ -41,7 +41,7 @@ public class CostShareParam implements Serializable {
 	/**
 	 * 关联的会计成本的科目的Id
 	 */
-	private String accoutingId;
+	private String accountingId;
 	/**
 	 * 医院Id
 	 */

+ 22 - 0
src/main/java/com/imed/costaccount/model/dto/AccountingEditDTO.java

@@ -0,0 +1,22 @@
+package com.imed.costaccount.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class AccountingEditDTO {
+
+    @NotNull(message = "id不能为空")
+    private Integer id;
+
+    @NotEmpty(message = "科目代码不能为空")
+    private String accountingCode;
+
+    @NotEmpty(message = "科目名称不能为空")
+    private String accountingName;
+
+    @NotNull(message = "会计科目类型不能为空")
+    private Integer accountingType;
+}

+ 25 - 0
src/main/java/com/imed/costaccount/model/dto/CostShareParamAccountDto.java

@@ -0,0 +1,25 @@
+package com.imed.costaccount.model.dto;
+
+import lombok.Data;
+
+/**
+ * @author 李加喜
+ * @Package com.imed.costaccount.model.dto
+ * @date 2021-07-28 16:34
+ */
+@Data
+public class CostShareParamAccountDto {
+    /**
+     * 传递的会计科目Id集合
+     */
+    private String[] accountIds;
+
+    /**
+     * 要修改的成本参数
+     */
+    private Integer costShareParamId;
+    /**
+     * 关联的医院的Id
+     */
+    private Integer hospId;
+}

+ 8 - 0
src/main/java/com/imed/costaccount/service/AccountingService.java

@@ -2,6 +2,7 @@ package com.imed.costaccount.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.AccountingEditDTO;
 import com.imed.costaccount.model.dto.AccountingSaveDTO;
 import com.imed.costaccount.model.vo.AccountVO;
 import com.imed.costaccount.model.Accounting;
@@ -39,5 +40,12 @@ public interface AccountingService extends IService<Accounting> {
      * @return
      */
     List<SelectAccountingVO> selectAccounting(User user);
+
+    /**
+     * 编辑科目代码
+     * @param accountingEditDTO
+     * @param user
+     */
+    void updateAccount(AccountingEditDTO accountingEditDTO, User user);
 }
 

+ 8 - 0
src/main/java/com/imed/costaccount/service/CostShareParamService.java

@@ -3,6 +3,7 @@ package com.imed.costaccount.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.model.CostShareParam;
+import com.imed.costaccount.model.dto.CostShareParamAccountDto;
 import com.imed.costaccount.model.dto.CostShareParamEditDto;
 import com.imed.costaccount.model.dto.CostShareParamSaveDto;
 
@@ -34,5 +35,12 @@ public interface CostShareParamService extends IService<CostShareParam> {
      * @param costShareParamEditDto
      */
     void updateCostShareParam(CostShareParamEditDto costShareParamEditDto);
+
+    /**
+     * 为按照科目的计算方式添加成本科目
+     * @param costShareParamAccountDto
+     * @return
+     */
+    CostShareParam updateCostShareParamByAccountId(CostShareParamAccountDto costShareParamAccountDto);
 }
 

+ 45 - 5
src/main/java/com/imed/costaccount/service/impl/AccountingServiceImpl.java

@@ -8,23 +8,22 @@ import com.imed.costaccount.common.exception.CostException;
 import com.imed.costaccount.mapper.AccountingMapper;
 import com.imed.costaccount.model.Accounting;
 import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.AccountingEditDTO;
 import com.imed.costaccount.model.dto.AccountingSaveDTO;
 import com.imed.costaccount.model.vo.AccountVO;
 import com.imed.costaccount.model.vo.SelectAccountingVO;
 import com.imed.costaccount.service.AccountingService;
 import com.imed.costaccount.utils.BeanUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.beanutils.BeanUtilsBean;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
-
+@Slf4j
 @Service("accountingService")
 public class AccountingServiceImpl extends ServiceImpl<AccountingMapper, Accounting> implements AccountingService {
 
@@ -180,4 +179,45 @@ public class AccountingServiceImpl extends ServiceImpl<AccountingMapper, Account
         }
         return accountVOS;
     }
+
+    /**
+     * 编辑科目代码
+     *
+     * @param accountingEditDTO
+     * @param user
+     */
+    @Override
+    public void updateAccount(AccountingEditDTO accountingEditDTO, User user) {
+        Integer id = accountingEditDTO.getId();
+        List<Accounting> accounts = new ArrayList<>();
+        Accounting byId = this.getById(id);
+        // TODO: 2021/7/28 校验
+        accounts.add(byId);
+        // 如果是顶层的修改
+        getAndAllChild(Arrays.asList(id), user.getHospId(), accounts);
+        log.info("得到所有的这个下面的列表:{}", accounts);
+        Map<Integer, List<Accounting>> map = accounts.stream().collect(Collectors.groupingBy(Accounting::getId));
+        // 删除所有的列表
+//        this.remove
+    }
+
+    /**
+     * 得到自己还有所有的子节点
+     * @param ids
+     * @param accounts
+     * @return
+     */
+    private List<Accounting> getAndAllChild(List<Integer> ids, Integer hospId, List<Accounting> accounts) {
+
+        List<Accounting> list = this.list(
+                new LambdaQueryWrapper<Accounting>()
+                        .in(Accounting::getParentId, ids).eq(Accounting::getHospId,hospId)
+        );
+        if (CollUtil.isEmpty(list)) {
+            return accounts;
+        }
+        accounts.addAll(list);
+        this.getAndAllChild(list.stream().map(Accounting::getId).collect(Collectors.toList()), hospId, accounts);
+        return accounts;
+    }
 }

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

@@ -1,13 +1,16 @@
 package com.imed.costaccount.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.imed.costaccount.common.exception.CostException;
 import com.imed.costaccount.common.util.BeanUtil;
 import com.imed.costaccount.common.util.PageUtils;
+import com.imed.costaccount.constants.NumberConstant;
 import com.imed.costaccount.mapper.CostShareParamMapper;
 import com.imed.costaccount.model.CostShareParam;
+import com.imed.costaccount.model.dto.CostShareParamAccountDto;
 import com.imed.costaccount.model.dto.CostShareParamEditDto;
 import com.imed.costaccount.model.dto.CostShareParamSaveDto;
 import com.imed.costaccount.model.vo.CostShareParamVO;
@@ -18,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -98,9 +102,37 @@ public class CostShareParamServiceImpl extends ServiceImpl<CostShareParamMapper,
         if (!CollectionUtils.isEmpty(map.get(costShareParamEditDto.getShareParamCode()))){
             throw new CostException(500,"对不起分摊参数代码已存在");
         }
-        // TODO 如果修改的是按对应科目 修改对应的科目需要补充
         CostShareParam costShareParamRequest = BeanUtil.convertObj(costShareParamEditDto, CostShareParam.class);
         costShareParamRequest.setCreateTime(System.currentTimeMillis());
+        if (NumberConstant.TWO.equals( costShareParamEditDto.getShareParamCode()) && NumberConstant.TWO.equals(costShareParamEditDto.getShareParamCode())){
+            costShareParamRequest.setAccountingId(costShareParam.getAccountingId());
+        }
         baseMapper.insert(costShareParamRequest);
     }
+
+    /**
+     * 为按照科目的计算方式添加成本科目
+     *
+     * @param costShareParamAccountDto
+     * @return
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
+    public CostShareParam updateCostShareParamByAccountId(CostShareParamAccountDto costShareParamAccountDto) {
+        Integer costShareParamId = costShareParamAccountDto.getCostShareParamId();
+        CostShareParam costShareParam = baseMapper.selectById(costShareParamId);
+        //  判断当前操作的分层参数的计算方式是不是按科目计算
+        if (NumberConstant.TWO.equals(costShareParam.getCalcType())){
+            String[] accountIds = costShareParamAccountDto.getAccountIds();
+            List<String> accountList = Arrays.asList(accountIds);
+            if (!CollectionUtil.isEmpty(accountList)){
+                String accounds = accountList.stream().map(String::valueOf).collect(Collectors.joining(","));
+                costShareParam.setAccountingId(accounds);
+                baseMapper.updateById(costShareParam);
+            }
+        }else {
+            throw new CostException(500,"计算方式不是按会计科目计算");
+        }
+        return null;
+    }
 }

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

@@ -43,7 +43,11 @@ public class ResponsibilityDepartmentServiceImpl
     public List<CenterDepartmentVO> getCenterDepart(User user) {
         List<CenterDepartmentVO> list = responsibilityService.getParentSon(user);
         for (CenterDepartmentVO centerDepartmentVO : list) {
-            for (CenterDepartmentVO departmentVO : centerDepartmentVO.getChild()) {
+            List<CenterDepartmentVO> child = centerDepartmentVO.getChild();
+            if (CollUtil.isEmpty(child)) {
+                child = new ArrayList<>();
+            }
+            for (CenterDepartmentVO departmentVO : child) {
                 List<DepartVO> departVOS = baseMapper.getDepartByCenterId(departmentVO.getResponsibilityId());
                 departmentVO.setDepartments(departVOS);
             }

+ 9 - 14
src/main/java/com/imed/costaccount/web/AccountingController.java

@@ -1,27 +1,22 @@
 package com.imed.costaccount.web;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
 import com.imed.costaccount.common.util.Result;
+import com.imed.costaccount.model.Accounting;
 import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.AccountingEditDTO;
 import com.imed.costaccount.model.dto.AccountingSaveDTO;
 import com.imed.costaccount.model.vo.AccountVO;
-import com.imed.costaccount.model.vo.SelectAccountingVO;
+import com.imed.costaccount.service.AccountingService;
+import com.imed.costaccount.utils.PageUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import com.imed.costaccount.model.Accounting;
-import com.imed.costaccount.service.AccountingService;
-import com.imed.costaccount.utils.PageUtils;
-
 import javax.validation.Valid;
+import java.util.Arrays;
+import java.util.List;
 
 
 /**
@@ -73,10 +68,10 @@ public class AccountingController {
     /**
      * 修改
      */
-    @RequestMapping("/update")
-    public Result update(@RequestBody Accounting accounting){
+    @RequestMapping("/edit")
+    public Result update(@RequestBody @Valid AccountingEditDTO accountingEditDTO){
         User user = (User) SecurityUtils.getSubject().getPrincipal();
-//		accountingService.updateById(accounting,user);
+		accountingService.updateAccount(accountingEditDTO,user);
         return Result.ok();
     }
 

+ 9 - 3
src/main/java/com/imed/costaccount/web/CostShareParamController.java

@@ -4,6 +4,7 @@ import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.CostShareParam;
 import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.CostShareParamAccountDto;
 import com.imed.costaccount.model.dto.CostShareParamEditDto;
 import com.imed.costaccount.model.dto.CostShareParamSaveDto;
 import com.imed.costaccount.service.CostShareParamService;
@@ -46,10 +47,15 @@ public class CostShareParamController {
 
     /**
      * 添加对应成本科目
+     * 接受传递过来的数组集合
      */
-    @GetMapping("/info/{id}")
-    public Result info(@PathVariable("id") Integer id){
-		CostShareParam costShareParam = costShareParamService.getById(id);
+    @PostMapping("/updateCostShareParamByAccountId")
+    @ApiOperation("添加对应科目信息")
+    public Result updateCostShareParamByAccountId(@RequestBody CostShareParamAccountDto costShareParamAccountDto){
+        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        Integer hospId = user.getHospId();
+        costShareParamAccountDto.setHospId(hospId);
+		CostShareParam costShareParam = costShareParamService.updateCostShareParamByAccountId(costShareParamAccountDto);
         return Result.ok(costShareParam);
     }
 

+ 1 - 0
src/main/resources/mapper/CostShareParamMapper.xml

@@ -8,6 +8,7 @@
         <result property="id" column="id"/>
         <result property="shareParamName" column="share_param_name"/>
         <result property="shareParamCode" column="share_param_code"/>
+        <result property="accountingId" column="accounting_id"/>
         <result property="hospId" column="hosp_id"/>
         <result property="calcType" column="calc_type"/>
         <result property="createTime" column="create_time"/>