2
0
Эх сурвалжийг харах

08 18 01 成本分摊参数值提交

hr 4 жил өмнө
parent
commit
31f69ea0a5

+ 5 - 2
src/main/java/com/imed/costaccount/common/util/RedisLock.java

@@ -8,8 +8,11 @@ import org.springframework.stereotype.Component;
 
 @Component
 public class RedisLock {
-    @Autowired
-    private StringRedisTemplate stringRedisTemplate;
+    private final StringRedisTemplate stringRedisTemplate;
+
+    public RedisLock(StringRedisTemplate stringRedisTemplate) {
+        this.stringRedisTemplate = stringRedisTemplate;
+    }
 
     /**
      * 加锁

+ 30 - 0
src/main/java/com/imed/costaccount/common/util/ThreadUtil.java

@@ -0,0 +1,30 @@
+package com.imed.costaccount.common.util;
+
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.concurrent.*;
+
+/**
+ * 线程池通用
+ */
+@Slf4j
+public class ThreadUtil {
+
+    private static ExecutorService executorService;
+    public static final int CPU_NUM = Runtime.getRuntime().availableProcessors();
+
+    public static synchronized ExecutorService getInstance() {
+        if (executorService == null) {
+            executorService = new ThreadPoolExecutor(
+                    CPU_NUM + 1,
+                    CPU_NUM * 2,
+                    10000,
+                    TimeUnit.MILLISECONDS,
+                    new LinkedBlockingQueue<Runnable>(),
+                    Executors.defaultThreadFactory()
+            );
+        }
+        return executorService;
+    }
+}

+ 31 - 1
src/main/java/com/imed/costaccount/mapper/ShareParamValueMapper.java

@@ -1,8 +1,13 @@
 package com.imed.costaccount.mapper;
 
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.model.ShareParamValue;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.imed.costaccount.model.dto.ShareParamValueVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 成本分摊参数值设置
@@ -12,5 +17,30 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface ShareParamValueMapper extends BaseMapper<ShareParamValue> {
-	
+
+    /**
+     * 分摊参数值列表
+     *
+     * @param current            当前页
+     * @param pageSize           每页数据量大小
+     * @param date               日期
+     * @param shareParamCode     分摊参数代码
+     * @param responsibilityCode 责任中心代码
+     * @param hospId             医院id
+     * @return List
+     */
+    List<ShareParamValueVO> getValues(@Param("current") Integer current, @Param("pageSize") Integer pageSize, @Param("date") String date, @Param("shareParamCode") String shareParamCode, @Param("responsibilityCode") String responsibilityCode, @Param("hospId") Long hospId);
+
+    /**
+     * 总数
+     *
+     * @param current            当前页
+     * @param pageSize           每页数据量大小
+     * @param date               日期
+     * @param shareParamCode     分摊参数代码
+     * @param responsibilityCode 责任中心代码
+     * @param hospId             医院id
+     * @return List
+     */
+    int getValuesCount(@Param("current") Integer current, @Param("pageSize") Integer pageSize, @Param("date") String date, @Param("shareParamCode") String shareParamCode, @Param("responsibilityCode") String responsibilityCode, @Param("hospId") Long hospId);
 }

+ 27 - 0
src/main/java/com/imed/costaccount/model/dto/CopyShareParamValueDTO.java

@@ -0,0 +1,27 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+@Data
+@ApiModel("成本分摊参数值复制入参")
+public class CopyShareParamValueDTO {
+
+    @ApiModelProperty(name = "fromDate",value="复制的年月yyyyMM")
+    @NotBlank(message = "复制的年月不能为空")
+    private String fromDate;
+
+    @ApiModelProperty(name = "toDate",value="复制到的年月yyyyMM")
+    @NotBlank(message = "复制到的年月不能为空")
+    private String toDate;
+
+    @ApiModelProperty(name = "dataSourceType",value="数据来源类型 0.手动输入,1.文件导入,2.全部")
+    @NotNull(message = "复制到的年月不能为空")
+    private Integer dataSourceType;
+
+}

+ 34 - 0
src/main/java/com/imed/costaccount/model/dto/ShareParamValueEditDTO.java

@@ -0,0 +1,34 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("编辑成本分摊参数值入参")
+public class ShareParamValueEditDTO {
+
+    @ApiModelProperty(name = "id",value = "主键")
+    @NotNull(message = "主键id不能为空")
+    private Long id;
+
+    @ApiModelProperty(name = "date",value = "时间")
+    @NotBlank(message = "时间不能为空")
+    private String date;
+
+    @ApiModelProperty(name = "shareParamCode",value = "分摊参数代码")
+    @NotNull(message = "分摊参数代码不能为空")
+    private String shareParamCode;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
+    @NotNull(message = "责任中心代码不能为空")
+    private String responsibilityCode;
+
+    @ApiModelProperty(name = "valueNum",value = "数值")
+    @NotNull(message = "数值不能为空")
+    private BigDecimal valueNum;
+}

+ 31 - 0
src/main/java/com/imed/costaccount/model/dto/ShareParamValueSaveDTO.java

@@ -0,0 +1,31 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("保存分摊参数值")
+public class ShareParamValueSaveDTO {
+
+    @ApiModelProperty(name = "date",value = "年月,yyyyMM")
+    @NotBlank(message = "时间不为空")
+    private String date;
+
+    @ApiModelProperty(name = "shareParamCode",value = "分摊参数代码")
+    @NotBlank(message = "分摊参数代码不为空")
+    private String shareParamCode;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心代码")
+    @NotBlank(message = "责任中心代码不为空")
+    private String responsibilityCode;
+
+    @ApiModelProperty(name = "valueNum",value = "数值")
+    @NotNull(message = "数值不为空")
+    private BigDecimal valueNum;
+
+}

+ 36 - 0
src/main/java/com/imed/costaccount/model/dto/ShareParamValueVO.java

@@ -0,0 +1,36 @@
+package com.imed.costaccount.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("分摊参数值视图对象")
+public class ShareParamValueVO {
+
+    @ApiModelProperty(name = "id",value = "主键")
+    private Long id;
+
+    @ApiModelProperty(name = "dateYear",value = "年")
+    private Integer dateYear;
+
+    @ApiModelProperty(name = "dateMonth",value = "月")
+    private Integer dateMonth;
+
+    @ApiModelProperty(name = "shareParamCode",value = "参数code")
+    private String shareParamCode;
+
+    @ApiModelProperty(name = "shareParamName",value = "参数名称")
+    private String shareParamName;
+
+    @ApiModelProperty(name = "responsibilityCode",value = "责任中心code")
+    private String responsibilityCode;
+
+    @ApiModelProperty(name = "responsibilityName",value = "责任中心名称")
+    private String responsibilityName;
+
+    @ApiModelProperty(name = "valueNum",value = "数值")
+    private BigDecimal valueNum;
+}

+ 0 - 21
src/main/java/com/imed/costaccount/model/dto/tets.json

@@ -1,21 +0,0 @@
-{
-  "status": 200,
-  "msg": "success",
-  "data": {
-    "code": "a001",
-    "name": "hhhh",
-    "relation": 1,
-    "isSelect": true
-  }
-}
-
-{
-  "roleId": 1,
-  "userIds": [1,2,3]
-}
-
-[{
-  "id": 1,
-  "name": "zhangsan",
-  "isSelect": true
-}]

+ 39 - 1
src/main/java/com/imed/costaccount/service/ShareParamValueService.java

@@ -1,13 +1,16 @@
 package com.imed.costaccount.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.ShareParamValue;
+import com.imed.costaccount.model.dto.CopyShareParamValueDTO;
+import com.imed.costaccount.model.dto.ShareParamValueEditDTO;
+import com.imed.costaccount.model.dto.ShareParamValueSaveDTO;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * 成本分摊参数值设置
@@ -29,5 +32,40 @@ public interface ShareParamValueService extends IService<ShareParamValue> {
      */
     Result importShareParamGroup(List<List<Object>> read, User user, MultipartFile file, String dateTime, Integer fileType);
 
+    /**
+     * 添加分摊参数值
+     * @param shareParamValueSaveDTO
+     * @param hospId
+     */
+    public void addData(ShareParamValueSaveDTO shareParamValueSaveDTO, Long hospId);
+
+    /**
+     * 分摊参数值列表
+     *
+     * @param current 当前页
+     * @param pageSize 每页数据量大小
+     * @param date 日期
+     * @param shareParamCode 分摊参数代码
+     * @param responsibilityCode 责任中心代码
+     * @param hospId 医院id
+     * @return {@link PageUtils} 分页对象
+     */
+    PageUtils selectList(Integer current, Integer pageSize, String date, String shareParamCode, String responsibilityCode, Long hospId);
+
+    /**
+     * 复制数据从某年月到某年月
+     * @param copyShareParamValueDTO {@link CopyShareParamValueDTO}
+     * @param hospId 医院id
+     */
+    void copyData(CopyShareParamValueDTO copyShareParamValueDTO, Long hospId) ;
+
+    /**
+     * 编辑某条数据
+     * @param shareParamValueEditDTO {@link ShareParamValueEditDTO}
+     * @param hospId
+     */
+    void editParamValue(ShareParamValueEditDTO shareParamValueEditDTO, Long hospId);
+
+
 }
 

+ 192 - 6
src/main/java/com/imed/costaccount/service/impl/ShareParamValueServiceImpl.java

@@ -1,23 +1,30 @@
 package com.imed.costaccount.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.druid.util.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.DateUtils;
-import com.imed.costaccount.common.util.Result;
-import com.imed.costaccount.common.util.UserContext;
+import com.imed.costaccount.common.util.*;
 import com.imed.costaccount.constants.NumberConstant;
 import com.imed.costaccount.enums.DateStyleEnum;
 import com.imed.costaccount.mapper.ShareParamValueMapper;
 import com.imed.costaccount.model.*;
+import com.imed.costaccount.model.dto.CopyShareParamValueDTO;
+import com.imed.costaccount.model.dto.ShareParamValueEditDTO;
+import com.imed.costaccount.model.dto.ShareParamValueSaveDTO;
+import com.imed.costaccount.model.dto.ShareParamValueVO;
 import com.imed.costaccount.model.vo.IncomeErrorMessage;
 import com.imed.costaccount.service.CostIncomeFileService;
 import com.imed.costaccount.service.CostShareParamService;
+import com.imed.costaccount.service.ResponsibilityService;
 import com.imed.costaccount.service.ShareParamValueService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -29,6 +36,8 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static cn.hutool.core.date.DatePattern.PURE_DATE_PATTERN;
+
 
 @Service("shareParamValueService")
 public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMapper, ShareParamValue> implements ShareParamValueService {
@@ -39,15 +48,192 @@ public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMappe
 
     private final CostIncomeFileService costIncomeFileService;
 
+    private final ResponsibilityService responsibilityService;
+
 
     public ShareParamValueServiceImpl(CostIncomeGroupServiceImpl costIncomeGroupService,
                                       CostShareParamService costShareParamService,
-                                      CostIncomeFileService costIncomeFileService) {
+                                      CostIncomeFileService costIncomeFileService, ResponsibilityService responsibilityService) {
         this.costIncomeGroupService = costIncomeGroupService;
         this.costShareParamService = costShareParamService;
         this.costIncomeFileService = costIncomeFileService;
+        this.responsibilityService = responsibilityService;
+    }
+
+
+    /**
+     * 添加分摊参数值
+     *
+     * @param shareParamValueSaveDTO {@link ShareParamValueSaveDTO}
+     * @param hospId                 医院id
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public void addData(ShareParamValueSaveDTO shareParamValueSaveDTO, Long hospId) {
+        ShareParamValue paramValue = BeanUtil.convertObj(shareParamValueSaveDTO, ShareParamValue.class);
+        DateTime dateTime = DateUtil.parse(shareParamValueSaveDTO.getDate(), PURE_DATE_PATTERN);
+        // 校验是否唯一
+        Boolean flag = checkUniq(shareParamValueSaveDTO.getShareParamCode(), shareParamValueSaveDTO.getResponsibilityCode(), hospId, dateTime);
+        if (flag) {
+            throw new CostException("本月已存在对应责任中心和分摊参数中心,请直接修改");
+        }
+        // 校验两个code是否存在
+        checkCodeIsExist(shareParamValueSaveDTO.getShareParamCode(), shareParamValueSaveDTO.getResponsibilityCode(),hospId);
+        paramValue.setCreateTime(System.currentTimeMillis())
+                .setDateYear(DateUtil.year(dateTime))
+                .setDateMonth(DateUtil.month(dateTime) + 1)
+                .setHospId(hospId)
+                .setDataSourceType(0);
+        this.save(paramValue);
     }
 
+    /**
+     * 校验两个code是否存在
+     * @param shareParamCode
+     * @param responsibilityCode
+     * @param hospId
+     */
+    @Transactional(rollbackFor = Throwable.class,propagation = Propagation.REQUIRED)
+    public void checkCodeIsExist(String shareParamCode, String responsibilityCode, Long hospId) {
+        List<CostShareParam> shareParams = costShareParamService.list(new LambdaQueryWrapper<CostShareParam>().select(CostShareParam::getId)
+                .eq(CostShareParam::getShareParamCode, shareParamCode).eq(CostShareParam::getHospId, hospId));
+        if (shareParams.isEmpty()) {
+            throw new CostException("分摊参数code非法");
+        }
+        List<Responsibility> responsibilities = responsibilityService.list(
+                new LambdaQueryWrapper<Responsibility>().select(Responsibility::getId)
+                        .eq(Responsibility::getResponsibilityCode, responsibilityCode).eq(Responsibility::getHospId, hospId)
+        );
+        if (responsibilities.isEmpty()) {
+            throw new CostException("责任中心code非法");
+        }
+    }
+
+    /**
+     * 校验是否已存在
+     *
+     * @param shareParamCode     分摊参数代码
+     * @param responsibilityCode 责任中心代码
+     * @param hospId             医院id
+     * @param date               时间
+     */
+    private Boolean checkUniq(String shareParamCode, String responsibilityCode, Long hospId, DateTime date) {
+        List<ShareParamValue> list = this.list(
+                new LambdaQueryWrapper<ShareParamValue>()
+                        .eq(ShareParamValue::getHospId, hospId)
+                        .eq(ShareParamValue::getShareParamCode, shareParamCode)
+                        .eq(ShareParamValue::getResponsibilityCode, responsibilityCode)
+                        .eq(ShareParamValue::getDateYear, DateUtil.year(date))
+                        .eq(ShareParamValue::getDateMonth, DateUtil.month(date) + 1)
+        );
+        if (!list.isEmpty()) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 分摊参数值列表
+     *
+     * @param current            当前页
+     * @param pageSize           每页数据量大小
+     * @param date               日期
+     * @param shareParamCode     分摊参数代码
+     * @param responsibilityCode 责任中心代码
+     * @param hospId             医院id
+     * @return {@link PageUtils} 分页对象
+     */
+    @Override
+    public PageUtils selectList(Integer current, Integer pageSize, String date, String shareParamCode, String responsibilityCode, Long hospId) {
+        Integer startIndex = (current - 1) * pageSize;
+        if (startIndex < 0) {
+            startIndex = 0;
+        }
+        List<ShareParamValueVO> list = baseMapper.getValues(startIndex, pageSize, date, shareParamCode, responsibilityCode, hospId);
+        int count = baseMapper.getValuesCount(startIndex, pageSize, date, shareParamCode, responsibilityCode, hospId);
+        return new PageUtils(list, count, pageSize, current);
+    }
+
+    /**
+     * 复制数据从某年月到某年月
+     *
+     * @param copyShareParamValueDTO {@link CopyShareParamValueDTO}
+     * @param hospId                 医院id
+     */
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public void copyData(CopyShareParamValueDTO copyShareParamValueDTO, Long hospId) {
+        // 复制数据 多个医院同时使用的情况下启用线程池处理
+        String fromDate = copyShareParamValueDTO.getFromDate();
+        String toDate = copyShareParamValueDTO.getToDate();
+        Integer dataSourceType = copyShareParamValueDTO.getDataSourceType();
+
+        LambdaQueryWrapper<ShareParamValue> wrapper = new LambdaQueryWrapper<ShareParamValue>()
+                .eq(ShareParamValue::getDateYear, DateUtil.year(DateUtil.parse(fromDate, PURE_DATE_PATTERN)))
+                .eq(ShareParamValue::getDateMonth, DateUtil.month(DateUtil.parse(fromDate, PURE_DATE_PATTERN)) + 1);
+        if (dataSourceType == 0) {
+            wrapper.eq(ShareParamValue::getDataSourceType, 0);
+        } else if (dataSourceType == 1) {
+            wrapper.eq(ShareParamValue::getDataSourceType, 1);
+        } else {
+            wrapper.in(ShareParamValue::getDataSourceType, CollUtil.newArrayList(0, 1));
+        }
+        // 拿到复制的数据
+        List<ShareParamValue> list = this.list(wrapper);
+        if (list.isEmpty()) {
+            throw new CostException("复制日期" + fromDate + "数据不存在");
+        }
+        DateTime toDateTime = DateUtil.parse(toDate, PURE_DATE_PATTERN);
+        int year = DateUtil.year(toDateTime);
+        int month = DateUtil.month(toDateTime) + 1;
+        // 删除之前的数据
+        wrapper.clear();
+        this.remove(
+                wrapper.eq(ShareParamValue::getDateYear, year)
+                        .eq(ShareParamValue::getDateMonth, month)
+                        .eq(ShareParamValue::getHospId, hospId)
+        );
+        list.forEach(i -> {
+            i.setId(null);
+            i.setCreateTime(System.currentTimeMillis());
+            i.setHospId(hospId);
+            i.setDateYear(year);
+            i.setDateMonth(month);
+        });
+        this.saveBatch(list);
+    }
+
+    /**
+     * 编辑某条数据
+     *
+     * @param shareParamValueEditDTO {@link ShareParamValueEditDTO}
+     * @param hospId                 医院id
+     */
+    @Override
+    @Transactional(rollbackFor = Throwable.class, propagation = Propagation.REQUIRED)
+    public void editParamValue(ShareParamValueEditDTO shareParamValueEditDTO, Long hospId) {
+        Long id = shareParamValueEditDTO.getId();
+        this.removeById(id);
+
+        DateTime dateTime = DateUtil.parse(shareParamValueEditDTO.getDate(), PURE_DATE_PATTERN);
+
+        Boolean flag = checkUniq(shareParamValueEditDTO.getShareParamCode(), shareParamValueEditDTO.getResponsibilityCode(), hospId, dateTime);
+        if (flag) {
+            throw new CostException("本月已存在对应责任中心和分摊参数中心,请直接修改");
+        }
+        checkCodeIsExist(shareParamValueEditDTO.getShareParamCode(), shareParamValueEditDTO.getResponsibilityCode(), hospId);
+
+        ShareParamValue shareParamValue = BeanUtil.convertObj(shareParamValueEditDTO, ShareParamValue.class);
+        shareParamValue
+                .setId(null)
+                .setCreateTime(System.currentTimeMillis())
+                .setDateYear(DateUtil.year(DateUtil.parse(shareParamValueEditDTO.getDate(), PURE_DATE_PATTERN)))
+                .setDateMonth(DateUtil.month(DateUtil.parse(shareParamValueEditDTO.getDate(), PURE_DATE_PATTERN)) + 1)
+                .setHospId(hospId)
+                .setDataSourceType(0);
+
+        this.save(shareParamValue);
+    }
 
     /**
      * 成本分摊参数导入
@@ -215,7 +401,7 @@ public class ShareParamValueServiceImpl extends ServiceImpl<ShareParamValueMappe
                             incomeErrorMessage.setErrMessage("第" + j + "列科室信息不存在");
                             incomeErrorMessageList.add(incomeErrorMessage);
                         }
-                        shareParamValue.setValueNum(new BigDecimal(("0".equals(data.get(j).toString()) || StrUtil.isBlank(data.get(j).toString())) ? "0.00" : data.get(j).toString()));
+                        shareParamValue.setValueNum(BigDecimal.valueOf(Double.parseDouble(("0".equals(data.get(j).toString()) || StrUtil.isBlank(data.get(j).toString())) ? "0.00" : data.get(j).toString())));
                         shareParamValue.setHospId(UserContext.getHospId());
                         shareParamValue.setCreateTime(System.currentTimeMillis());
                         shareParamValue.setDateYear(year);

+ 6 - 6
src/main/java/com/imed/costaccount/web/ExcelController.java

@@ -41,7 +41,7 @@ import java.util.stream.Collectors;
 @Api(tags = "excel导入导出")
 @RestController
 @RequestMapping("/costAccount/excel")
-public class ExcelController {
+public class ExcelController extends AbstractController{
     private final JwtUtil jwtUtil;
     private final UserService userService;
 
@@ -85,7 +85,7 @@ public class ExcelController {
     @ApiOperation("用户导出模板设置")
     @GetMapping("/getcurrentTemplate")
     public void getImportUserTemplate(HttpServletResponse response) throws IOException {
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+
         // TODO: 2021/7/26 暂时没有登录
         String uuid = UUID.randomUUID().toString();
         String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
@@ -137,7 +137,7 @@ public class ExcelController {
     @ApiOperation("科室导出模板设置")
     @GetMapping("/getDepartmentTemplate")
     public void getImportDepartmentTemplate(HttpServletResponse response) throws IOException {
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        User user = getUser();
         String uuid = UUID.randomUUID().toString();
         String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
         FileUtil.del(FileUtil.file(url));
@@ -180,7 +180,7 @@ public class ExcelController {
             List<List<Object>> read = reader.read();
             log.info("最开始:read={}", read);
             log.info("-------------------------------------------------------------------");
-            User user = (User) SecurityUtils.getSubject().getPrincipal();
+            User user = getUser();
             Long hospId = user.getHospId();
             return departmentService.importDepartment(read, hospId);
         } catch (IOException e) {
@@ -196,7 +196,7 @@ public class ExcelController {
     @ApiOperation("成本项目导出模板设置")
     @GetMapping("/getImportProductTemplate")
     public void getImportProductTemplate(HttpServletResponse response) throws IOException {
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+        User user = getUser();
         String uuid = UUID.randomUUID().toString();
         String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
         FileUtil.del(FileUtil.file(url));
@@ -239,7 +239,7 @@ public class ExcelController {
             List<List<Object>> read = reader.read();
             log.info("最开始:read={}", read);
             log.info("-------------------------------------------------------------------");
-            User user = (User) SecurityUtils.getSubject().getPrincipal();
+            User user = getUser();
             Long hospId = user.getHospId();
             return productService.importProduct(read, hospId);
         } catch (IOException e) {

+ 45 - 34
src/main/java/com/imed/costaccount/web/ShareParamValueController.java

@@ -1,13 +1,19 @@
 package com.imed.costaccount.web;
 
+import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.ShareParamValue;
 import com.imed.costaccount.model.User;
+import com.imed.costaccount.model.dto.CopyShareParamValueDTO;
+import com.imed.costaccount.model.dto.ShareParamValueEditDTO;
+import com.imed.costaccount.model.dto.ShareParamValueSaveDTO;
 import com.imed.costaccount.service.ShareParamValueService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.util.Arrays;
 
 
@@ -20,7 +26,7 @@ import java.util.Arrays;
 @Api(tags = "成本分摊参数值管理")
 @RestController
 @RequestMapping("/costAccount/shareParamValue")
-public class ShareParamValueController {
+public class ShareParamValueController extends AbstractController {
 
     private final ShareParamValueService shareParamValueService;
 
@@ -28,50 +34,55 @@ public class ShareParamValueController {
         this.shareParamValueService = shareParamValueService;
     }
 
-    /**
-     * 分页查询列表
-     */
-    @RequestMapping("/list")
-    public Result list(@RequestParam(value = "current", defaultValue = "1") Integer current,
-                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize){
-        User user = (User) SecurityUtils.getSubject().getPrincipal();
+    @ApiOperation("添加分摊参数值")
+    @PostMapping("/addData")
+    public Result addData(@RequestBody @Valid ShareParamValueSaveDTO shareParamValueSaveDTO) {
+        if (shareParamValueSaveDTO.getDate().length() == 6) {
+            shareParamValueSaveDTO.setDate(shareParamValueSaveDTO.getDate()+"01");
+        }
+        shareParamValueService.addData(shareParamValueSaveDTO, getHospId());
         return Result.ok();
     }
 
-
-    /**
-     * 信息
-     */
-    @RequestMapping("/info/{id}")
-    public Result info(@PathVariable("id") Long id){
-		ShareParamValue shareParamValue = shareParamValueService.getById(id);
-        return Result.ok(shareParamValue);
+    @ApiOperation("成本分摊参数值列表")
+    @GetMapping("/list")
+    public Result list(@RequestParam(value = "current", defaultValue = "1") Integer current,
+                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+                       @RequestParam(value = "date") String date,
+                       @RequestParam(value = "shareParamCode", required = false) String shareParamCode,
+                       @RequestParam(value = "responsibilityCode", required = false) String responsibilityCode) {
+        PageUtils pageUtils = shareParamValueService.selectList(current, pageSize, date + "01", shareParamCode, responsibilityCode, getHospId());
+        return Result.ok(pageUtils);
     }
 
-    /**
-     * 保存
-     */
-    @RequestMapping("/save")
-    public Result save(@RequestBody ShareParamValue shareParamValue){
-		shareParamValueService.save(shareParamValue);
+    @ApiOperation("复制数据")
+    @PostMapping("/copyData")
+    public Result copyData(@RequestBody @Valid CopyShareParamValueDTO copyShareParamValueDTO) {
+        if (copyShareParamValueDTO.getFromDate().length() == 6) {
+            copyShareParamValueDTO.setFromDate(copyShareParamValueDTO.getFromDate() + "01");
+        }
+        if (copyShareParamValueDTO.getToDate().length() == 6) {
+            copyShareParamValueDTO.setToDate(copyShareParamValueDTO.getToDate() + "01");
+        }
+        shareParamValueService.copyData(copyShareParamValueDTO, getHospId());
         return Result.ok();
     }
 
-    /**
-     * 修改
-     */
-    @RequestMapping("/update")
-    public Result update(@RequestBody ShareParamValue shareParamValue){
-		shareParamValueService.updateById(shareParamValue);
+
+    @ApiOperation("修改")
+    @PostMapping("/edit")
+    public Result update(@RequestBody @Valid ShareParamValueEditDTO shareParamValueEditDTO) {
+        if (shareParamValueEditDTO.getDate().length() == 6) {
+            shareParamValueEditDTO.setDate(shareParamValueEditDTO.getDate() + "01");
+        }
+        shareParamValueService.editParamValue(shareParamValueEditDTO,getHospId());
         return Result.ok();
     }
 
-    /**
-     * 删除
-     */
-    @RequestMapping("/delete")
-    public Result delete(@RequestBody Long[] ids){
-		shareParamValueService.removeByIds(Arrays.asList(ids));
+    @ApiOperation("删除某条数据")
+    @PostMapping("/delete")
+    public Result delete(@RequestBody Long[] ids) {
+        shareParamValueService.removeByIds(Arrays.asList(ids));
         return Result.ok();
     }
 

+ 44 - 2
src/main/resources/mapper/ShareParamValueMapper.xml

@@ -3,7 +3,7 @@
 
 <mapper namespace="com.imed.costaccount.mapper.ShareParamValueMapper">
 
-	<!-- 可根据自己的需求,是否要使用 -->
+    <!-- 可根据自己的需求,是否要使用 -->
     <resultMap type="com.imed.costaccount.model.ShareParamValue" id="shareParamValueMap">
         <result property="id" column="id"/>
         <result property="dateYear" column="date_year"/>
@@ -12,11 +12,53 @@
         <result property="responsibilityCode" column="responsibility_code"/>
         <result property="valueNum" column="value_num"/>
         <result property="hospId" column="hosp_id"/>
-        <result property="fileId" column="fileId" />
+        <result property="fileId" column="fileId"/>
         <result property="dataSourceType" column="data_source_type"/>
         <result property="createTime" column="create_time"/>
         <result property="deleteTime" column="delete_time"/>
     </resultMap>
+    <select id="getValues" resultType="com.imed.costaccount.model.dto.ShareParamValueVO">
+        select cspv.*, csp.share_param_name, cr.responsibility_name
+        from cost_share_param_value cspv
+        left join cost_share_param csp
+        on csp.share_param_code = cspv.share_param_code and csp.hosp_id = cspv.hosp_id
+        left join cost_responsibility cr
+        on cspv.responsibility_code = cr.responsibility_code and cspv.hosp_id = cr.hosp_id
+        where cspv.hosp_id = #{hospId}
+        and cspv.delete_time = 0
+        and csp.delete_time = 0
+        and cr.delete_time = 0
+        and cspv.date_month = month(#{date})
+        and cspv.date_year = year(#{date})
+        <if test="shareParamCode != null and shareParamCode != ''">
+            and cspv.share_param_code = #{shareParamCode}
+        </if>
+        <if test="responsibilityCode != null and responsibilityCode != ''">
+            and cspv.responsibility_code = #{responsibilityCode}
+        </if>
+        limit #{current},#{pageSize}
+
+    </select>
+    <select id="getValuesCount" resultType="java.lang.Integer">
+        select count(*)
+        from cost_share_param_value cspv
+        left join cost_share_param csp
+        on csp.share_param_code = cspv.share_param_code and csp.hosp_id = cspv.hosp_id
+        left join cost_responsibility cr
+        on cspv.responsibility_code = cr.responsibility_code and cspv.hosp_id = cr.hosp_id
+        where cspv.hosp_id = #{hospId}
+        and cspv.delete_time = 0
+        and csp.delete_time = 0
+        and cr.delete_time = 0
+        and cspv.date_month = month(#{date})
+        and cspv.date_year = year(#{date})
+        <if test="shareParamCode != null and shareParamCode != ''">
+            and cspv.share_param_code = #{shareParamCode}
+        </if>
+        <if test="responsibilityCode != null and responsibilityCode != ''">
+            and cspv.responsibility_code = #{responsibilityCode}
+        </if>
+    </select>
 
 
 </mapper>