فهرست منبع

兴光评估后台代码开发

user5 3 سال پیش
والد
کامیت
60b2c737da
38فایلهای تغییر یافته به همراه4612 افزوده شده و 83 حذف شده
  1. 1 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAccountant/service/impl/AccountantReimbursementSysServiceImpl.java
  2. 6 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAccountant/service/impl/AccountantReimbursementUserServiceImpl.java
  3. 134 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/controller/AssessReimbursementBusinessController.java
  4. 98 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/controller/AssessReimbursementBusinessTwoController.java
  5. 261 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/controller/AssessReimbursementSysController.java
  6. 247 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/controller/AssessReimbursementUserController.java
  7. 53 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementBusinessDTO.java
  8. 52 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementBusinessReturnDTO.java
  9. 31 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementBusinessTwoDTO.java
  10. 92 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementDTO.java
  11. 64 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementUserDTO.java
  12. 121 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/AssessReimbursementBusinessMapper.java
  13. 55 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/AssessReimbursementBusinessTwoMapper.java
  14. 238 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/AssessReimbursementSysMapper.java
  15. 90 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/AssessReimbursementUserMapper.java
  16. 264 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/xml/AssessReimbursementBusinessMapper.xml
  17. 143 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/xml/AssessReimbursementBusinessTwoMapper.xml
  18. 544 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/xml/AssessReimbursementSysMapper.xml
  19. 255 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/xml/AssessReimbursementUserMapper.xml
  20. 81 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/AssessReimbursementBusinessService.java
  21. 34 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/AssessReimbursementBusinessTwoService.java
  22. 102 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/AssessReimbursementSysService.java
  23. 86 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/AssessReimbursementUserService.java
  24. 296 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/impl/AssessReimbursementBusinessServiceImpl.java
  25. 90 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/impl/AssessReimbursementBusinessTwoServiceImpl.java
  26. 609 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/impl/AssessReimbursementSysServiceImpl.java
  27. 435 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/impl/AssessReimbursementUserServiceImpl.java
  28. 1 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/ProjectReimbursementBusinessTwoMapper.java
  29. 16 16
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/xml/ProjectReimbursementBusinessMapper.xml
  30. 13 13
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/xml/ProjectReimbursementBusinessTwoMapper.xml
  31. 38 38
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/xml/ProjectReimbursementSysMapper.xml
  32. 9 9
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/xml/ProjectReimbursementUserMapper.xml
  33. 4 4
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/service/impl/ProjectReimbursementSysServiceImpl.java
  34. 5 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/service/impl/ProjectReimbursementUserServiceImpl.java
  35. 12 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementsys/mapper/ReimbursementSysMapper.java
  36. 14 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementsys/mapper/xml/ReimbursementSysMapper.xml
  37. 11 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementsys/service/impl/ReimbursementSysServiceImpl.java
  38. 7 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementsys/service/impl/ReimbursementUserServiceImpl.java

+ 1 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAccountant/service/impl/AccountantReimbursementSysServiceImpl.java

@@ -51,7 +51,7 @@ public class AccountantReimbursementSysServiceImpl implements AccountantReimburs
         //根据发票id查询业务具体信息
         AccountantReimbursementDTO accountantReimbursementDTO = mapper.queryBusinessByInvoiceId(id);
         //如果没有随即类型,则将随即类型默认为非随机(即指定业务编码)
-        if(StringUtils.isBlank(accountantReimbursementDTO.getRandomType())){
+        if(null != accountantReimbursementDTO && StringUtils.isBlank(accountantReimbursementDTO.getRandomType())){
             accountantReimbursementDTO.setRandomType("0");
         }
         return accountantReimbursementDTO;

+ 6 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAccountant/service/impl/AccountantReimbursementUserServiceImpl.java

@@ -16,6 +16,7 @@ import com.jeeplus.test.reimbursementAccountant.domain.dto.AccountantReimburseme
 import com.jeeplus.test.reimbursementAccountant.mapper.AccountantReimbursementBusinessMapper;
 import com.jeeplus.test.reimbursementAccountant.mapper.AccountantReimbursementUserMapper;
 import com.jeeplus.test.reimbursementAccountant.service.AccountantReimbursementUserService;
+import com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementBusinessDTO;
 import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementUserDTO;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -206,6 +207,11 @@ public class AccountantReimbursementUserServiceImpl implements AccountantReimbur
             }
             info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
         }
+        if(null != reimbursementBusinessReturn.getBeginDate() || null != reimbursementBusinessReturn.getEndDate() || StringUtils.isNotBlank(reimbursementBusinessReturn.getBeginReimbursementQuota()) || StringUtils.isNotBlank(reimbursementBusinessReturn.getEndReimbursementQuota())){
+            for (AccountantReimbursementBusinessDTO info : showList) {
+                info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
+            }
+        }
         //剩余报销额度
         reimbursementBusinessReturnDTO.setSurplusReimbursementAmount(new BigDecimal(reimbursementBusinessReturnDTO.getReimbursementQuota()).subtract(alreadyReimbursementAmount).toString());
         //计算出可报销总天数

+ 134 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/controller/AssessReimbursementBusinessController.java

@@ -0,0 +1,134 @@
+package com.jeeplus.test.reimbursementAssess.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.demo.annotation.DemoMode;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessReturnDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementBusinessService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * @author 徐滕
+ * @version 1.0.0
+ * @ClassName ReimbursementUserController.java
+ * @Description TODO 报销人员年份金额信息
+ * @createTime 2022年05月16日 10:35:21
+ */
+@RestController
+@RequestMapping("/assess/reimbursementBusiness")
+public class AssessReimbursementBusinessController {
+
+    @Autowired
+    private AssessReimbursementBusinessService service;
+
+    /**
+     * 根据id报销人员信息
+     * @param id
+     * @return
+     */
+    @ApiLog("根据id报销人员信息")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam String id) {
+        AssessReimbursementBusinessDTO reimbursementDTO = service.queryById (id);
+        return ResponseEntity.ok (reimbursementDTO);
+    }
+
+    /**
+     * 根据id报销人员信息
+     * @param id
+     * @return
+     */
+    @ApiLog("根据id报销人员信息")
+    @PreAuthorize("hasAnyAuthority('assess:reimbursementBusiness:add')")
+    @GetMapping("getBusinessById")
+    public ResponseEntity getBusinessById(@RequestParam String id) {
+        AssessReimbursementDTO reimbursementDTO = service.getBusinessById (id);
+        return ResponseEntity.ok (reimbursementDTO);
+    }
+
+    /**
+     * 根据人员id查询报销年份信息
+     * @param reimbursementUser
+     * @param page
+     * @return
+     */
+    @ApiLog("查询角色列表")
+    @GetMapping("getYearList")
+    public ResponseEntity<IPage<AssessReimbursementUserDTO>> getYearList(AssessReimbursementUserDTO reimbursementUser, Page<AssessReimbursementUserDTO> page) {
+        IPage<AssessReimbursementUserDTO> list = service.getYearList(page,reimbursementUser);
+        return ResponseEntity.ok (list);
+    }
+
+
+    /**
+     * 查询报销信息
+     * @return
+     */
+    @ApiLog("查询报销人员信息列表")
+    @GetMapping("findList")
+    public ResponseEntity findList(AssessReimbursementUserDTO reimbursementUser, Page<AssessReimbursementUserDTO> page) {
+        IPage<AssessReimbursementUserDTO> list = service.findList(page,reimbursementUser);
+        return ResponseEntity.ok(list);
+    }
+
+    /**
+     * 保存业务报销编码
+     * @return
+     */
+    @ApiLog("保存报销人员信息")
+    @PostMapping("save")
+    public ResponseEntity save(@RequestBody AssessReimbursementBusinessDTO reimbursementUser) {
+        Map<String, Object> result = service.save(reimbursementUser);
+        Boolean success = (Boolean) result.get("success");
+        if(success){
+            return ResponseEntity.ok(result.get("message"));
+        }
+        return ResponseEntity.badRequest ().body (result.get("message"));
+    }
+
+    /**
+     * 批量删除
+     * @param ids
+     * @return
+     */
+    @DemoMode
+    @ApiLog("批量删除")
+    @PreAuthorize("hasAuthority('assess:reimbursementBusiness:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        String idArray[] =ids.split(",");
+        service.delete ( Lists.newArrayList (idArray) );
+        return ResponseEntity.ok ("删除成功!");
+    }
+
+
+
+
+    /**
+     * 查询报销信息
+     * @return
+     */
+    @ApiLog("查询业务报销信息列表")
+    @PreAuthorize("hasAuthority('assess:reimbursementBusiness:view')")
+    @GetMapping("findListByBusinessCodeId")
+    public ResponseEntity findListByBusinessCodeId(String id) {
+        if(StringUtils.isBlank(id)){
+            return ResponseEntity.badRequest ().body ("请先选择业务信息");
+        }
+        AssessReimbursementBusinessDTO reimbursementBusiness = new AssessReimbursementBusinessDTO();
+        reimbursementBusiness.setBusinessCodeId(id);
+        AssessReimbursementBusinessReturnDTO info = service.findListByBusinessCodeId(reimbursementBusiness);
+        return ResponseEntity.ok(info);
+    }
+}

+ 98 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/controller/AssessReimbursementBusinessTwoController.java

@@ -0,0 +1,98 @@
+package com.jeeplus.test.reimbursementAssess.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessTwoDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementBusinessService;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementBusinessTwoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+
+@RestController
+@RequestMapping("/assess/reimbursementBusinessTwo")
+public class AssessReimbursementBusinessTwoController {
+
+    @Autowired
+    private AssessReimbursementBusinessTwoService AssessReimbursementBusinessTwoService;
+    @Autowired
+    private AssessReimbursementBusinessService reimbursementBusinessService;
+
+    @ApiLog("查询无票报销列表")
+    @RequestMapping("findListPage")
+    public ResponseEntity findListPage(AssessReimbursementBusinessTwoDTO AssessReimbursementBusinessTwoDTO,Page<AssessReimbursementBusinessTwoDTO> page){
+        IPage<AssessReimbursementBusinessTwoDTO> listPage = AssessReimbursementBusinessTwoService.findListPage(page, AssessReimbursementBusinessTwoDTO);
+        return ResponseEntity.ok(listPage);
+    }
+
+    @ApiLog("根据id物理删除")
+    @RequestMapping("delById/{id}")
+    @PreAuthorize("hasAuthority('assess:reimbursementBusinessTwo:del')")
+    public ResponseEntity delById(@PathVariable("id")String ids){
+        String idArray[] =ids.split(",");
+        AssessReimbursementBusinessTwoService.deleteByList ( Lists.newArrayList (idArray) );
+        return ResponseEntity.ok("删除成功!");
+    }
+
+    @ApiLog("新增")
+    @RequestMapping("addData")
+    @PreAuthorize("hasAuthority('assess:reimbursementBusinessTwo:add')")
+    public ResponseEntity addData(@RequestBody AssessReimbursementBusinessTwoDTO AssessReimbursementBusinessTwoDTO){
+        AssessReimbursementBusinessTwoService.addData(AssessReimbursementBusinessTwoDTO);
+        return ResponseEntity.ok("添加成功");
+    }
+
+    @ApiLog("下拉列表")
+    @RequestMapping("findSelectList")
+    public ResponseEntity findSelectList(){
+        return ResponseEntity.ok(AssessReimbursementBusinessTwoService.findSelectList());
+    }
+
+    @ApiLog("绑定")
+    @RequestMapping("modifyBindCode")
+    @PreAuthorize("hasAuthority('assess:reimbursementBusinessTwo:binding')")
+    public ResponseEntity modifyBindCode(@RequestParam("ids")String ids,@RequestParam("businessCode")String businessCode,@RequestParam("money")String money){
+        String[] split = ids.split(",");
+        BigDecimal sum = new BigDecimal(0);
+        if(split.length!=0){
+            for (int i = 0; i < split.length; i++) {
+                AssessReimbursementBusinessTwoDTO dataById = AssessReimbursementBusinessTwoService.findDataById(split[i]);
+                sum = sum.add(new BigDecimal(dataById.getReimbursementAmount()));
+            }
+        }else{
+            AssessReimbursementBusinessTwoDTO dataById = AssessReimbursementBusinessTwoService.findDataById(ids);
+            sum = new BigDecimal(dataById.getReimbursementAmount());
+        }
+        AssessReimbursementDTO businessById = reimbursementBusinessService.getBusinessById(businessCode);
+        if(new BigDecimal(businessById.getSurplusReimbursementAmount()).compareTo(sum)<0){
+            return ResponseEntity.ok(false);
+        }
+        if(split.length!=0){
+            for (int i = 0; i < split.length; i++) {
+                AssessReimbursementBusinessTwoService.modifyBindCode(split[i],businessCode);
+            }
+        }else{
+            AssessReimbursementBusinessTwoService.modifyBindCode(ids,businessCode);
+        }
+
+        return ResponseEntity.ok("成功");
+    }
+
+    @ApiLog("展示下拉列表所有年份")
+    @RequestMapping("findSelectYearList")
+    public ResponseEntity findSelectYearList(){
+        return ResponseEntity.ok(AssessReimbursementBusinessTwoService.findSelectYearList());
+    }
+
+    @ApiLog("根据年份展示所有编号")
+    @RequestMapping("findSelectCodeListByYear/{year}")
+    public ResponseEntity findSelectCodeListByYear(@PathVariable("year")String year){
+        return ResponseEntity.ok(AssessReimbursementBusinessTwoService.findSelectCodeListByYear(year));
+    }
+}

+ 261 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/controller/AssessReimbursementSysController.java

@@ -0,0 +1,261 @@
+package com.jeeplus.test.reimbursementAssess.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.demo.annotation.DemoMode;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.utils.EasyPoiUtil;
+import com.jeeplus.sys.service.dto.RoleDTO;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementSysService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysController.java
+ * @Description TODO 发票信息
+ * @createTime 2022年05月05日 20:41:00
+ */
+@RestController
+@RequestMapping("/assess/reimbursement")
+public class AssessReimbursementSysController {
+
+    @Autowired
+    private AssessReimbursementSysService service;
+
+    /**
+     * 根据id查询业务信息
+     * @param id
+     * @return
+     */
+    @ApiLog("查询业务具体信息")
+    @PreAuthorize("hasAnyAuthority('assess:reimbursement:view','assess:reimbursement:add','assess:reimbursement:edit')")
+    @GetMapping("queryBusinessById")
+    public ResponseEntity queryBusinessById(@RequestParam String id) {
+        AssessReimbursementDTO reimbursementDTO = service.queryBusinessById (id);
+        return ResponseEntity.ok (reimbursementDTO);
+    }
+
+    /**
+     * 根据发票id查询业务信息
+     * @param id
+     * @return
+     */
+    @ApiLog("根据发票id查询业务具体信息")
+    @PreAuthorize("hasAnyAuthority('assess:reimbursement:view','assess:reimbursement:add','assess:reimbursement:edit')")
+    @GetMapping("queryBusinessByInvoiceId")
+    public ResponseEntity queryBusinessByInvoiceId(@RequestParam String id) {
+        AssessReimbursementDTO reimbursementDTO = service.queryBusinessByInvoiceId (id);
+        return ResponseEntity.ok (reimbursementDTO);
+    }
+    /**
+     * 根据id查询部门
+     * @param id
+     * @return
+     */
+    @ApiLog("查询发票具体信息")
+    @PreAuthorize("hasAnyAuthority('assess:reimbursement:view','assess:reimbursement:add','assess:reimbursement:edit')")
+    @GetMapping("queryInvoiceById")
+    public ResponseEntity queryInvoiceById(@RequestParam String id) {
+        AssessReimbursementDTO reimbursementDTO = service.queryInvoiceById (id);
+        return ResponseEntity.ok (reimbursementDTO);
+    }
+
+
+    /**
+     * 查询报销信息
+     * @return
+     */
+    @ApiLog("查询未进行报销流程的发票信息集合")
+    @GetMapping("list")
+    public ResponseEntity list(AssessReimbursementDTO reimbursementDTO,  Page<AssessReimbursementDTO> page) {
+        IPage<AssessReimbursementDTO> list = service.findList(page,reimbursementDTO);
+        return ResponseEntity.ok(list);
+    }
+
+
+    /**
+     * 查询报销信息
+     * @return
+     */
+    @ApiLog("查询业务报销信息")
+    @GetMapping("treeData")
+    public ResponseEntity treeData(AssessReimbursementDTO reimbursementDTO,  Page<AssessReimbursementDTO> page) {
+        IPage<AssessReimbursementDTO> list = service.treeData(page,reimbursementDTO);
+        return ResponseEntity.ok(list);
+    }
+
+    /**
+     * 上传文件
+     * @return
+     * @throws IOException
+     */
+    @ApiLog("上传文件")
+    @RequestMapping("uploadFile")
+    public Map<String,Object> uploadFile(HttpServletRequest request, MultipartFile file) {
+        Map<String,Object> map = new HashMap<>();
+        try {
+            List <AssessReimbursementDTO> list = EasyPoiUtil.importExcel ( file, 0, 1, AssessReimbursementDTO.class );
+            /*ImportExcel ei = new ImportExcel(file, 0, 0);
+            List<AssessReimbursementDTO> list = ei.getDataList(AssessReimbursementDTO.class);*/
+            map = service.save(list);
+            return map;
+        } catch (Exception e) {
+            map.put("message", "文件上传失败。失败原因:"+ e.getMessage());
+            map.put("success", false);
+            return map;
+        }
+    }
+
+
+    /**
+     * 保存业务报销编码
+     * @return
+     */
+    @ApiLog("保存业务报销编码")
+    @PostMapping("saveBusiness")
+    public ResponseEntity saveBusiness(@Valid @RequestBody AssessReimbursementDTO reimbursementDTO) {
+        if(!"1".equals(reimbursementDTO.getRandomType()) && StringUtils.isBlank(reimbursementDTO.getBusinessCode())){
+            return ResponseEntity.badRequest ().body ("业务编码不可为空,请重新填写!");
+        }
+        service.saveBusiness(reimbursementDTO);
+        return ResponseEntity.ok("保存业务编码" + reimbursementDTO.getBusinessCode() + "成功");
+    }
+    /**
+     * 保存业务报销编码
+     * @return
+     */
+    @ApiLog("保存业务报销比例")
+    @PostMapping("updateReimbursementRatio")
+    public ResponseEntity updateReimbursementRatio(@Valid @RequestBody AssessReimbursementDTO reimbursementDTO) {
+        if(StringUtils.isBlank(reimbursementDTO.getReimbursementRatio())){
+            return ResponseEntity.badRequest ().body ("报销比例不可为空,请重新填写!");
+        }
+        service.updateReimbursementRatio(reimbursementDTO);
+        return ResponseEntity.ok("保存业务编码" + reimbursementDTO.getBusinessCode() + "成功");
+    }
+
+
+    /**
+     * 保存发票收款时间
+     * @return
+     */
+    @ApiLog("保存发票收款时间")
+    @PostMapping("saveInvoice")
+    public ResponseEntity saveInvoice(@Valid @RequestBody AssessReimbursementDTO reimbursementDTO) {
+        service.saveInvoice(reimbursementDTO);
+        return ResponseEntity.ok("保存发票收款时间成功");
+    }
+
+
+    /**
+     * 保存发票收款时间
+     * @return
+     */
+    @ApiLog("修改发票信息")
+    @PostMapping("modifyInvoice")
+    public ResponseEntity modifyInvoice(@Valid @RequestBody AssessReimbursementDTO reimbursementDTO) {
+        service.modifyInvoice(reimbursementDTO);
+        return ResponseEntity.ok("修改发票信息成功");
+    }
+
+    /**
+     * 批量删除
+     * @param ids
+     * @return
+     */
+    @DemoMode
+    @ApiLog("批量删除")
+    @PreAuthorize("hasAuthority('assess:reimbursement:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        String idArray[] =ids.split(",");
+        service.removeBusinessByIds ( Lists.newArrayList (idArray) );
+        return ResponseEntity.ok ("删除成功!");
+    }
+
+    /**
+     * 保存业务报销编码
+     * @return
+     */
+    @ApiLog("保存收款时间信息")
+    @PostMapping("saveGatheringTime")
+    public ResponseEntity saveGatheringTime(@Valid @RequestBody AssessReimbursementDTO reimbursementDTO) {
+        if(StringUtils.isBlank(reimbursementDTO.getId())){
+            return ResponseEntity.badRequest ().body ("未选择发票信息!");
+        }
+        if(null == reimbursementDTO.getGatheringTime()){
+            return ResponseEntity.badRequest ().body ("未选择收款时间!");
+        }
+        Map<String, Object> map = service.saveGatheringTime(reimbursementDTO);
+        Boolean success = (Boolean) map.get("success");
+        if(success){
+            return ResponseEntity.ok("保存业务编码" + reimbursementDTO.getBusinessCode() + "成功");
+        }
+        return ResponseEntity.badRequest().body ( map.get("message"));
+    }
+
+    /**
+     * 删除业务信息
+     * @param ids
+     * @return
+     */
+    @DemoMode
+    @ApiLog("删除业务信息")
+    @PreAuthorize("hasAuthority('assess:reimbursement:del')")
+    @DeleteMapping("deleteBusiness")
+    public ResponseEntity deleteBusiness(String ids) {
+        String idArray[] =ids.split(",");
+        service.removeBusinessByIds ( Lists.newArrayList (idArray) );
+        return ResponseEntity.ok ("删除成功!");
+    }
+
+    /**
+     * 删除发票信息
+     * @param ids
+     * @return
+     */
+    @DemoMode
+    @ApiLog("删除发票信息")
+    @PreAuthorize("hasAuthority('assess:reimbursement:del')")
+    @DeleteMapping("deleteInvoice")
+    public ResponseEntity deleteInvoice(String ids) {
+        String idArray[] =ids.split(",");
+        service.removeInvoiceByIds ( Lists.newArrayList (idArray) );
+        return ResponseEntity.ok ("删除成功!");
+    }
+
+    /**
+     * 批次报销
+     * @param invoiceNumbers
+     * @return
+     */
+    @DemoMode
+    @ApiLog("批次报销")
+    @PreAuthorize("hasAuthority('assess:reimbursement:addBatchReimbursement')")
+    @PutMapping("addBatchReimbursement")
+    public ResponseEntity addBatchReimbursement(String[] invoiceNumbers) {
+        ArrayList<String> invoiceIdList = Lists.newArrayList(invoiceNumbers);
+        if(invoiceIdList.size()<=0){
+            return ResponseEntity.badRequest().body ("请选择需要批量报销的发票信息");
+        }
+        service.addBatchReimbursement (invoiceIdList);
+        return ResponseEntity.ok ("批量报销操作成功");
+    }
+}

+ 247 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/controller/AssessReimbursementUserController.java

@@ -0,0 +1,247 @@
+package com.jeeplus.test.reimbursementAssess.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.demo.annotation.DemoMode;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.common.beanvalidator.BeanValidators;
+import com.jeeplus.core.excel.utils.EasyPoiUtil;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.DictUtils;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessReturnDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementUserService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.ConstraintViolationException;
+import java.time.LocalDate;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 徐滕
+ * @version 1.0.0
+ * @ClassName ReimbursementUserController.java
+ * @Description TODO 报销人员年份金额信息
+ * @createTime 2022年05月16日 10:35:21
+ */
+@RestController
+@RequestMapping("/assess/reimbursementUser")
+public class AssessReimbursementUserController {
+
+    @Autowired
+    private AssessReimbursementUserService service;
+
+    /**
+     * 根据id报销人员信息
+     * @param id
+     * @return
+     */
+    @ApiLog("根据id报销人员信息")
+    @PreAuthorize("hasAnyAuthority('assess:reimbursementUser:view','assess:reimbursementUser:add','assess:reimbursementUser:edit')")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam String id) {
+        AssessReimbursementUserDTO reimbursementDTO = service.queryById (id);
+        return ResponseEntity.ok (reimbursementDTO);
+    }
+
+    /**
+     * 根据id报销人员信息
+     * @return
+     */
+    @ApiLog("查询字典中日报销额度和年度假日天数")
+    @PreAuthorize("hasAnyAuthority('assess:reimbursementUser:add')")
+    @GetMapping("getReimbursementQuotaDay")
+    public ResponseEntity getReimbursementQuotaDay() {
+        AssessReimbursementUserDTO reimbursementDTO = new AssessReimbursementUserDTO();
+        //获取日报销额度
+        String reimbursementQuotaDay = DictUtils.getDictLabel("1", "reimbursement_quota_day", null);
+        //获取当年度的总天数
+        int yearDay = LocalDate.now().lengthOfYear();
+        //获取年度休假天数
+        String holidayDay = DictUtils.getDictLabel("1", "reimbursement_holiday_day", null);
+        Integer reimbursementAllDay = yearDay;
+        if(StringUtils.isNotBlank(holidayDay)){
+            int i = Integer.parseInt(holidayDay);
+            reimbursementAllDay = yearDay - Integer.parseInt(holidayDay);
+        }
+        reimbursementDTO.setReimbursementQuotaDay(reimbursementQuotaDay);
+        reimbursementDTO.setReimbursementAllDay(reimbursementAllDay);
+        return ResponseEntity.ok (reimbursementDTO);
+    }
+
+
+    /**
+     * 查询报销信息
+     * @return
+     */
+    @ApiLog("查询报销人员信息列表")
+    @GetMapping("findList")
+    public ResponseEntity findList(AssessReimbursementUserDTO reimbursementUser, Page<AssessReimbursementUserDTO> page) {
+        IPage<AssessReimbursementUserDTO> list = service.findList(page,reimbursementUser);
+        return ResponseEntity.ok(list);
+    }
+
+    /**
+     * 保存业务报销编码
+     * @return
+     */
+    @ApiLog("保存报销人员信息")
+    @PostMapping("save")
+    public ResponseEntity save(@RequestBody AssessReimbursementUserDTO reimbursementUser) {
+        Map<String, Object> result = service.save(reimbursementUser);
+        Boolean success = (Boolean) result.get("success");
+        if(success){
+            return ResponseEntity.ok(result.get("message"));
+        }
+        return ResponseEntity.badRequest ().body (result.get("message"));
+    }
+
+    /**
+     * 批量删除
+     * @param ids
+     * @return
+     */
+    @DemoMode
+    @ApiLog("批量删除")
+    @PreAuthorize("hasAuthority('assess:reimbursementUser:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        String idArray[] =ids.split(",");
+        Map<String, Object> result = service.delete(Lists.newArrayList(idArray));
+        if(!(Boolean) result.get("success")){
+            return ResponseEntity.badRequest ().body (result.get("message"));
+        }
+        return ResponseEntity.ok (result.get("message"));
+    }
+
+    /**
+     * 初始化部门人员报销数据信息(当年)
+     * @return
+     */
+    @ApiLog("初始化部门人员报销数据信息(当年)")
+    @PreAuthorize("hasAnyAuthority('assess:reimbursementUser:add')")
+    @PostMapping("initialize")
+    public ResponseEntity initialize() {
+        Map<String, Object> result = service.initialize("兴光评估");
+        Boolean success = (Boolean) result.get("success");
+        if(success){
+            return ResponseEntity.ok(result.get("message"));
+        }
+        return ResponseEntity.badRequest ().body (result.get("message"));
+    }
+
+
+    /**
+     * 查询报销信息
+     * @return
+     */
+    @ApiLog("查询业务报销信息列表")
+    @PreAuthorize("hasAuthority('assess:reimbursementBusiness:view')")
+    @GetMapping("findListByUserId")
+    public ResponseEntity findListByUserId(AssessReimbursementBusinessReturnDTO reimbursementBusinessReturnDTO) {
+        if(StringUtils.isBlank(reimbursementBusinessReturnDTO.getUserId())){
+            return ResponseEntity.badRequest ().body ("请先选择报销人员信息");
+        }
+
+        //根据id查询人员填报的报销信息
+        AssessReimbursementUserDTO reimbursementUserDTO = service.queryById(reimbursementBusinessReturnDTO.getUserId());
+        if(null == reimbursementUserDTO){
+            return ResponseEntity.badRequest ().body ("报销人员信息无效,请重新选择");
+        }
+        AssessReimbursementBusinessReturnDTO info = service.findListByUserId(reimbursementUserDTO,reimbursementBusinessReturnDTO);
+        info.setUserId(reimbursementBusinessReturnDTO.getUserId());
+        return ResponseEntity.ok(info);
+    }
+    /**
+     * 下载导入用户数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('assess:reimbursementUser:import')")
+    @GetMapping("import/template")
+    @ApiOperation(value = "下载模板")
+    public void importFileTemplate(HttpServletResponse response) {
+        String fileName = "报销人员数据导入模板.xlsx";
+        List<AssessReimbursementUserDTO> list = Lists.newArrayList();
+        EasyPoiUtil.exportExcel ( list, "报销人员数据",  "报销人员数据", AssessReimbursementUserDTO.class, fileName, response );
+    }
+
+    /**
+     * 导入用户数据
+     *
+     * @return
+     */
+    @DemoMode
+    @PreAuthorize("hasAnyAuthority('assess:reimbursementUser:import')")
+    @PostMapping("import")
+    @ApiOperation(value = "导入员工报销信息excel")
+    public ResponseEntity importFile(MultipartFile file) {
+        try {
+            int successNum = 0;
+            int failureNum = 0;
+            StringBuilder failureMsg = new StringBuilder ( );
+            List <AssessReimbursementUserDTO> list = EasyPoiUtil.importExcel ( file, 1, 1, AssessReimbursementUserDTO.class );
+            List<AssessReimbursementUserDTO> saveList = Lists.newArrayList();
+            Map<String, Object> resultMap = new HashMap<>();
+            for (AssessReimbursementUserDTO user : list) {
+                try {
+                    //根据部门和人员名称查询人员信息
+                    List<UserDTO> userByNameAndOfficeName = service.getUserByNameAndOfficeName(user);
+                    if(userByNameAndOfficeName.size()>1){
+                        failureMsg.append ( "。 " + user.getOfficeName() + " 部门下的员工 " + user.getUserName() + " 存在多个,无法进行导入;" );
+                        failureNum++;
+                    }else if(userByNameAndOfficeName.size() == 0){
+                        failureMsg.append ( "。 " + user.getOfficeName() + " 部门下的员工 " + user.getUserName() + " 不存在,无法进行导入;" );
+                        failureNum++;
+                    }else {
+                        user.setUserId(userByNameAndOfficeName.get(0).getId());
+                        user.setUser(userByNameAndOfficeName.get(0));
+                        user.setKeyFlag(user.getYear() + user.getUserId());
+                        saveList.add(user);
+                        successNum ++;
+                    }
+                } catch (ConstraintViolationException ex) {
+                    failureMsg.append ( "。 " + user.getOfficeName() + " 部门下的员工 " + user.getUserName() + " 导入失败:" );
+                    List <String> messageList = BeanValidators.extractPropertyAndMessageAsList ( ex, ": " );
+                    for (String message : messageList) {
+                        failureMsg.append ( message + "; " );
+                        failureNum++;
+                    }
+                } catch (Exception ex) {
+                    failureNum++;
+                    failureMsg.append ( "。 " + user.getOfficeName() + " 部门下的员工 " + user.getUserName() + " 导入失败:" + ex.getMessage ( ) );
+                }
+            }
+
+            if ( failureNum > 0 ) {
+                failureMsg.insert ( 0, ",失败 " + failureNum + " 条员工报销数据,导入信息如下:" );
+            }
+
+            if(saveList.size()>0){
+                resultMap = service.saveList(saveList);
+
+                Boolean success = (Boolean) resultMap.get("success");
+                if(!success){
+                    return ResponseEntity.badRequest().body ( resultMap.get("message"));
+                }
+                Object saveCount = resultMap.get("saveCount");
+                Object message = resultMap.get("message");
+                return ResponseEntity.ok ( "已成功导入 " + saveCount + " 条员工报销数据" + failureMsg+message );
+            }
+            return ResponseEntity.ok ( "已成功导入 " + successNum + " 条员工报销数据" + failureMsg );
+        } catch (Exception e) {
+            return ResponseEntity.badRequest().body ( "导入员工报销数据失败!失败信息:" + e.getMessage ( ) );
+        }
+    }
+}

+ 53 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementBusinessDTO.java

@@ -0,0 +1,53 @@
+package com.jeeplus.test.reimbursementAssess.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 报销信息表
+ * @author: 徐滕
+ * @version: 2022-05-16 11:06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("zs_reimbursement_business_info")
+public class AssessReimbursementBusinessDTO extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    private String businessCode;  //业务编号
+    private String businessCodeId;  //业务编号Id
+    private String userId;  //报销人id
+    private String userName;  //报销人
+    private String year;    //报销年份
+    private String reimbursementQuota;  //年报销额度
+    private String reimbursementQuotaDay;  //日报销额度
+    private String reimbursementDay;  //报销天数
+    private String surplusReimbursementDay;  //剩余报销天数
+    private String reimbursementType;  //报销类型(1:正常报销;2:补差)
+    private String reimbursementAmount;  //报销额度
+    private String remainReimbursementAmount;  //剩余报销额度
+    private String remarks; //备注
+    /**
+     * 报销开始日期
+     */
+    private Date beginDate;
+    /**
+     * 报销结束日期
+     */
+    private Date endDate;
+    /**
+     * 报销额度前区间
+     */
+    private String beginReimbursementQuota;
+    /**
+     * 报销额度后区间
+     */
+    private String endReimbursementQuota;
+
+
+}

+ 52 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementBusinessReturnDTO.java

@@ -0,0 +1,52 @@
+package com.jeeplus.test.reimbursementAssess.domain.dto;
+
+import com.jeeplus.test.reimbursementAccountant.domain.dto.AccountantReimbursementBusinessDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO;
+import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementAddressDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 报销信息表(返回信息表)
+ * @author: 徐滕
+ * @version: 2022-05-16 11:06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class AssessReimbursementBusinessReturnDTO {
+
+    private static final long serialVersionUID = 1L;
+
+    private String reimbursementQuotaDay;  //日报销额度
+    private String reimbursementDay;  //报销天数
+    private String alreadyReimbursementDay;  //已报销天数
+    private String surplusReimbursementDay;  //剩余报销天数
+    private String reimbursementQuota;  //报销额度
+    private String alreadyReimbursementAmount;  //已报销额度
+    private String surplusReimbursementAmount;  //剩余报销额度
+    private List<AssessReimbursementBusinessDTO> list;
+
+    private String userId;  //报销人员id
+    private String year; //报销年份
+
+    /**
+     * 报销开始日期
+     */
+    private Date beginDate;
+    /**
+     * 报销结束日期
+     */
+    private Date endDate;
+    /**
+     * 报销额度前区间
+     */
+    private String beginReimbursementQuota;
+    /**
+     * 报销额度后区间
+     */
+    private String endReimbursementQuota;
+
+}

+ 31 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementBusinessTwoDTO.java

@@ -0,0 +1,31 @@
+package com.jeeplus.test.reimbursementAssess.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Getter
+@Setter
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@TableName("zs_reimbursement_business_accountant_info")
+public class AssessReimbursementBusinessTwoDTO extends BaseEntity {
+
+    private String businessCode;  //业务编号
+    private String businessCodeId;  //业务编号Id
+    private String userId;  //报销人id
+    private String userName;  //报销人
+    private String year;    //报销年份
+    private String reimbursementQuota;  //年报销额度
+    private String reimbursementQuotaDay;  //日报销额度
+    private String reimbursementDay;  //报销天数
+    private String surplusReimbursementDay;  //剩余报销天数
+    private String reimbursementType;  //报销类型(1:正常报销;2:补差)
+    private String reimbursementAmount;  //报销额度
+    private String remainReimbursementAmount;  //剩余报销额度
+    private String remarks; //备注
+}

+ 92 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementDTO.java

@@ -0,0 +1,92 @@
+package com.jeeplus.test.reimbursementAssess.domain.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.TreeEntity;
+import com.jeeplus.sys.utils.StringUtils;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 中审报表数据表
+ * @author: 徐滕
+ * @version: 2022-05-11 10:31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("zs_reimbursement_info")
+public class AssessReimbursementDTO extends TreeEntity<AssessReimbursementDTO> {
+    private static final long serialVersionUID = 1L;
+    @Excel(name = "业务编号")
+    private String businessCode;    //业务编号
+    private String businessCodeId;    //业务编号id
+    @Excel(name = "发票代码")
+    private String invoiceCode;     //发票代码
+    @Excel(name = "发票号码")
+    private String invoiceNumber;   //发票号码
+    @Excel(name = "购方企业名称")
+    private String firmName;        //购方企业名称
+
+    @Excel(name = "开票日期",importFormat = "yyyy-MM-dd",exportFormat = "yyyy-MM-dd")
+    private String makeTime;          //开票日期
+    @Excel(name = "商品名称")
+    private String name;     //商品名称
+    @Excel(name = "金额")
+    private String money;       //金额
+    @Excel(name = "税额")
+    private String tax;         //税额
+    @Excel(name = "收入")
+    private String income;      //收入
+    @Excel(name = "申请人")
+    private String proposer;        //申请人
+    @Excel(name = "合伙人")
+    private String partner;         //合伙人
+    @Excel(name = "业务类型")
+    private String businessType;    //业务类型
+    private String remarks;    //备注
+    private Integer type;    //状态
+    private String reimbursementRatio;    //报销比例
+    private String allAlreadyReimbursementQuota;    //总报销额度(已报金额)
+    private String canReimbursementAmount;    //可报销额度
+    private String surplusReimbursementAmount;    //剩余报销额度
+    private String reimbursementType;    //报销比例
+    private String gatheringStatus;    //收款状态
+    private String reimbursementStatus;    //报销状态
+    private List<String> idList;
+    private String businessFlag;    //报销判定条件(1:表示该数据没有业务编码,即没有进行报销;0:表示该数据有业务编码)
+    private String batchFlag;    //批量报销状态(1:批量报销)(仅业务表中使用)
+    private String randomType;    //随机状态(1:随机业务编码,0:指定业务编码)(默认为指定业务编码仅业务表中使用)
+    private String year;    //业务编码年份(相同的业务编码根据年份不同生成不同的数据列)(仅业务表中使用)
+    private String randomBusinessCodeIndex;    //随即业务编码序号
+
+    @Excel(name = "收款日期",importFormat = "yyyy-MM-dd",exportFormat = "yyyy-MM-dd")
+    private String gatheringTime;     //收款日期
+
+
+    /**
+     * 开票开始日期
+     */
+    private Date beginDate;
+    /**
+     * 开票结束日期
+     */
+    private Date endDate;
+    /**
+     * 收入前区间
+     */
+    private String beginIncome;
+    /**
+     * 收入后区间
+     */
+    private String endIncome;
+
+    public String getReimbursementType() {
+        if(StringUtils.isBlank(this.reimbursementType)){
+            this.reimbursementType = "1";
+        }
+        return reimbursementType;
+    }
+}

+ 64 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/domain/dto/AssessReimbursementUserDTO.java

@@ -0,0 +1,64 @@
+package com.jeeplus.test.reimbursementAssess.domain.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.sys.service.dto.UserDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 报销人员表
+ * @author: 徐滕
+ * @version: 2022-05-16 11:06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("zs_reimbursement_user_info")
+public class AssessReimbursementUserDTO extends BaseEntity {
+
+    @Excel(name = "姓名")
+    @Length(min = 1, max = 100)
+    @NotNull(message = "姓名不能为空")
+    private String userName;//员工姓名
+    @Excel(name = "部门")
+    @Length(min = 1, max = 100)
+    @NotNull(message = "部门不能为空")
+    private String officeName;//部门名称
+
+    private String userId;  //报销人id
+    private UserDTO user;   //报销人员信息
+
+    @Excel(name = "报销年份")
+    @Length(min = 1, max = 100)
+    @NotNull(message = "报销年份不能为空")
+    private String year;    //报销年份
+    @Excel(name = "年报销额度")
+    @Length(min = 1, max = 100)
+    @NotNull(message = "年报销额度不能为空")
+    private String reimbursementQuota;  //年报销额度
+
+    @Excel(name = "年可报销天数")
+    @NotNull(message = "年可报销天数不能为空")
+    private Integer reimbursementAllDay;  //年可报销天数
+    @Excel(name = "日报销额度")
+    @Length(min = 1, max = 100)
+    @NotNull(message = "日报销额度不能为空")
+    private String reimbursementQuotaDay;  //日报销额度
+    private String reimbursementDay;  //报销天数
+    private String reimbursementAmount;  //报销额度
+    private String remainReimbursementAmount;  //剩余报销额度
+    private String alreadyReimbursementAmount;  //已报销额度
+    private String remarks; //备注
+
+
+    private String alreadyReimbursementDay;  //已报销天数
+    private String surplusReimbursementDay;  //剩余报销天数
+    private String surplusReimbursementAmount;  //剩余报销额度
+    private String keyFlag; //用于判断使用
+
+
+}

+ 121 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/AssessReimbursementBusinessMapper.java

@@ -0,0 +1,121 @@
+package com.jeeplus.test.reimbursementAssess.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysMapper.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:40:00
+ */
+@Mapper
+public interface AssessReimbursementBusinessMapper extends BaseMapper<AssessReimbursementUserDTO> {
+    /**
+     * 根据条件查询数据信息
+     * @param page
+     * @param reimbursementUser
+     * @return
+     */
+    IPage<AssessReimbursementUserDTO> findList(Page<AssessReimbursementUserDTO> page, @Param("reimbursementUser")AssessReimbursementUserDTO reimbursementUser);
+    /**
+     * 根据条件查询数据信息
+     * @param reimbursementBusiness
+     * @return
+     */
+    List<AssessReimbursementBusinessDTO> findListByBusinessCodeId(AssessReimbursementBusinessDTO reimbursementBusiness);
+    /**
+     * 根据条件查询数据信息
+     * @param reimbursementBusiness
+     * @return
+     */
+    List<AssessReimbursementBusinessDTO> findListByUserIdAndYear(AssessReimbursementBusinessDTO reimbursementBusiness);
+    /**
+     * 根据条件查询数据信息
+     * @param page
+     * @param reimbursementUser
+     * @return
+     */
+    IPage<AssessReimbursementUserDTO> getYearList(Page<AssessReimbursementUserDTO> page, @Param("reimbursementUser")AssessReimbursementUserDTO reimbursementUser);
+    /**
+     * 根据条件查询数据信息
+     * @param reimbursementUser
+     * @return
+     */
+    List<AssessReimbursementUserDTO> getReimbursementMoneyByYear(AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 保存人员报销信息
+     * @param reimbursementUser
+     */
+    void save(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 修改人员报销信息
+     * @param reimbursementUser
+     */
+    void update(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 查询业务信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementBusinessDTO queryById(String id);
+
+    /**
+     * 查询业务信息
+     * @param reimbursementUser
+     * @return
+     */
+    AssessReimbursementUserDTO reimbursementUserByUserIdAndYear(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 查询报销信息(根据人员id和年份)
+     * @param reimbursementUser
+     * @return
+     */
+    AssessReimbursementUserDTO queryByUserIdAndYear(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 根据id删除人员报销信息(物理删除)
+     * @param idList
+     */
+    void delete(@Param("idList") List<String> idList);
+
+    /**
+     * 根据人员id和年份查询该员工当年报销额度总额
+     * @param reimbursementUser
+     * @return
+     */
+    String getAlreadyReimbursementQuotaByUserIdAndYear(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 根据人员id和年份查询该员工当年报销额度总额
+     * @param reimbursementUser
+     * @return
+     */
+    String getAlreadyReimbursementQuotaByBusinessCodeId(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 根据业务id查询收款状态
+     * @param reimbursementUser
+     * @return
+     */
+    String getGatheringStatusById(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 修改业务报销是否完成状态
+     * @param reimbursementDTO
+     */
+    void updateReimbursementInfo(AssessReimbursementDTO reimbursementDTO);
+}

+ 55 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/AssessReimbursementBusinessTwoMapper.java

@@ -0,0 +1,55 @@
+package com.jeeplus.test.reimbursementAssess.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessTwoDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+@Mapper
+public interface AssessReimbursementBusinessTwoMapper extends BaseMapper<AssessReimbursementBusinessTwoDTO> {
+
+    /**
+     * 分页查询
+     */
+    IPage<AssessReimbursementBusinessTwoDTO> findListPage(Page<AssessReimbursementBusinessTwoDTO> page,
+                                                              @Param("assessReimbursementBusiness")AssessReimbursementBusinessTwoDTO AssessReimbursementBusiness);
+
+    /**
+     * 物理删除
+     * @param id
+     */
+    void delPhysicsById(@Param("id")String id);
+    /**
+     * 物理删除
+     * @param idList
+     */
+    void deleteByList(@Param("idList")List <String> idList);
+
+    /**
+     * 新增
+     */
+    void insertAssessReimbursementBusiness(AssessReimbursementBusinessTwoDTO AssessReimbursementBusiness);
+
+    /**
+     * 修改
+     */
+    void modifyBindCode(@Param("ids")String ids,@Param("businessCode")String businessCode);
+
+    /**
+     * 下拉菜单
+     */
+    List<AssessReimbursementDTO> findSelectList();
+
+
+    List<String> findSelectYearList();
+
+    List<AssessReimbursementDTO> findSelectCodeListByYear(String year);
+
+    AssessReimbursementBusinessTwoDTO findDataById(@Param("id")String id);
+}

+ 238 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/AssessReimbursementSysMapper.java

@@ -0,0 +1,238 @@
+package com.jeeplus.test.reimbursementAssess.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysMapper.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:40:00
+ */
+@Mapper
+public interface AssessReimbursementSysMapper extends BaseMapper<AssessReimbursementDTO> {
+    /**
+     * 根据条件查询数据信息
+     * @param page
+     * @param reimbursement
+     * @return
+     */
+    IPage<AssessReimbursementDTO> findList(Page<AssessReimbursementDTO> page, @Param("reimbursement")AssessReimbursementDTO reimbursement);
+
+    /**
+     * 根据条件查询数据信息
+     * @param page
+     * @param reimbursement
+     * @return
+     */
+    IPage<AssessReimbursementDTO> queryAllList(Page<AssessReimbursementDTO> page, @Param("reimbursement")AssessReimbursementDTO reimbursement);
+
+
+    List<AssessReimbursementDTO> getInvoiceList(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 根据父id查询已收款的发票信息的首款额度总和
+     * @param parentId
+     * @return
+     */
+    String getReceiptInvoiceIncomeByReimbursementId(String parentId);
+
+    /**
+     * 根据业务id查询报销比例
+     * @param id
+     * @return
+     */
+    String getReimbursementRatioByReimbursementId(String id);
+
+    /**
+     * 根据父节点id查询发票信息
+     * @param parentIdList
+     * @return
+     */
+    List<AssessReimbursementDTO> getInvoiceByParentIdList(@Param("parentIdList")List<String> parentIdList);
+
+    /**
+     * 查询是否存在需要保存的发票信息
+     * @param invoiceNumberList
+     * @return
+     */
+    List<String> selectOldInvoiceNumber(@Param("invoiceNumberList") List<String> invoiceNumberList);
+
+    /**
+     * 查询是否存在已有的业务编号信息
+     * @param businessCodeList
+     * @return
+     */
+    List<String> selectOldBusinessCode(@Param("businessCodeList") List<String> businessCodeList);
+
+    /**
+     * 查询是否存在已有的业务编号信息(业务编码和年份)
+     * @param businessCodeList
+     * @return
+     */
+    List<AssessReimbursementDTO> selectOldBusinessCodeByInfo(@Param("businessCodeList") List<String> businessCodeList,@Param("year") String year);
+
+    /**
+     * 保存业务编号信息
+     * @param businessCodeList
+     */
+    void insertBusinessCodeList(@Param("businessCodeList")List<AssessReimbursementDTO> businessCodeList);
+
+    /**
+     * 保存发票编号数据信息
+     * @param invoiceInfoList
+     */
+    void insertInvoiceList(@Param("invoiceInfoList")List<AssessReimbursementDTO> invoiceInfoList);
+
+    /**
+     * 查询业务信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementDTO queryBusinessById(String id);
+
+    /**
+     * 根据发票id查询业务具体信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementDTO queryBusinessByInvoiceId(String id);
+
+    /**
+     * 查询发票信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementDTO queryInvoiceById(String id);
+
+    /**
+     * 保存业务编码
+     * @param reimbursement
+     * @return
+     */
+    Integer saveBusiness(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 保存发票收款时间
+     * @param reimbursement
+     * @return
+     */
+    Integer saveInvoice(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 修改发票信息
+     * @param reimbursement
+     * @return
+     */
+    Integer modifyInvoice(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 根据业务编码查询业务信息
+     * @param reimbursement
+     * @return
+     */
+    AssessReimbursementDTO getInfoByBusinessCode(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 批量修改发票信息
+     * @param invoiceInfoList
+     */
+    void updateInvoiceList(@Param("invoiceInfoList")List<AssessReimbursementDTO> invoiceInfoList);
+
+    /**
+     * 根据id删除对应业务信息(物理删除)
+     * @param id
+     */
+    void deleteBusinessById(String id);
+
+    /**
+     * 根据id删除对应业务信息(物理删除)
+     * @param idList
+     */
+    void deleteBusinessByIdList(@Param("idList")List<String> idList);
+
+    /**
+     * 删除业务信息(逻辑删除)
+     * @param idList
+     */
+    void removeBusinessByIds(@Param("idList")List<String> idList);
+
+    /**
+     * 删除发票信息(逻辑删除)
+     * @param idList
+     */
+    void removeBusinessByParentIds(@Param("idList")List<String> idList);
+
+    /**
+     * 删除发票信息(逻辑删除)
+     * @param idList
+     */
+    void removeInvoiceByIds(@Param("idList")List<String> idList);
+
+    /**
+     * 查询该发票信息下是否存在有效的同级数据信息
+     * @param id
+     */
+    String getValidBusinessIdByInvoiceId(String id);
+
+    /**
+     * 修改业务报销比例
+     * @param reimbursement
+     */
+    void updateReimbursementRatio(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 修改业务信息
+     * @param reimbursement
+     */
+    int updateById(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 根据发票id查询是否已经填写收款时间
+     * @param idList
+     * @return
+     */
+    List<AssessReimbursementDTO> getGatheringTimeInvoiceList(@Param("idList") List<String> idList);
+
+    /**
+     * 根据发票id查询发票信息
+     * @param idList
+     * @return
+     */
+    List<AssessReimbursementDTO> getInvoiceByIdList(@Param("idList") List<String> idList);
+
+    /**
+     * 根据该条发票信息查询同业务编号下的没有收款的发票信息
+     * @param reimbursement
+     * @return
+     */
+    List<AssessReimbursementDTO> getNotGatheringTimeInvoice(AssessReimbursementDTO reimbursement);
+
+    void updateGatheringTime(@Param("idList") List<String> idList, @Param("reimbursement") AssessReimbursementDTO reimbursement);
+
+    /**
+     * 根据id修改业务信息的收款状态
+     * @param id
+     */
+    void updateGatheringStatusById(String id);
+
+    /**
+     * 根据该条发票信息查询同业务编号下的没有收款的发票信息
+     * @param reimbursement
+     * @return
+     */
+    List<AssessReimbursementDTO> getNotGatheringTimeInvoiceBybusinessCodeId(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 查询最后一个随机业务编码的编码序号
+     * @return
+     */
+    String getLastRandomBusinessCodeIndex(String year);
+}

+ 90 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/AssessReimbursementUserMapper.java

@@ -0,0 +1,90 @@
+package com.jeeplus.test.reimbursementAssess.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysMapper.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:40:00
+ */
+@Mapper
+public interface AssessReimbursementUserMapper extends BaseMapper<AssessReimbursementUserDTO> {
+    /**
+     * 根据条件查询数据信息
+     * @param page
+     * @param reimbursementUser
+     * @return
+     */
+    IPage<AssessReimbursementUserDTO> findList(Page<AssessReimbursementUserDTO> page, @Param("reimbursementUser")AssessReimbursementUserDTO reimbursementUser);
+    /**
+     * 根据条件查询数据信息
+     * @param page
+     * @param reimbursementUser
+     * @return
+     */
+    IPage<AssessReimbursementUserDTO> getYearList(Page<AssessReimbursementUserDTO> page, @Param("reimbursementUser")AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 保存人员报销信息
+     * @param reimbursementUser
+     */
+    void save(AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 保存人员报销信息
+     * @param reimbursementUserList
+     */
+    void saveList(@Param("reimbursementUserList")List<AssessReimbursementUserDTO> reimbursementUserList);
+
+    /**
+     * 修改人员报销信息
+     * @param reimbursementUser
+     */
+    void update(AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 查询业务信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementUserDTO queryById(String id);
+
+    /**
+     * 查询报销信息(根据人员id和年份)
+     * @param reimbursementUser
+     * @return
+     */
+    AssessReimbursementUserDTO queryByUserIdAndYear(AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 根据id删除人员报销信息(物理删除)
+     * @param idList
+     */
+    void delete(@Param("idList") List<String> idList);
+
+    /**
+     * 根据部门和人员名称查询人员信息
+     * @param reimbursementUserDTO
+     * @return
+     */
+    List<UserDTO> getUserByNameAndOfficeName(AssessReimbursementUserDTO reimbursementUserDTO);
+
+    /**
+     * 根据人员id集合和年份查询已存在的人员信息
+     * @param userIdList
+     * @param year
+     * @return
+     */
+    List<AssessReimbursementUserDTO> getExistReimbursementUserList(@Param("userIdList") List<String> userIdList, @Param("year") String year);
+
+}

+ 264 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/xml/AssessReimbursementBusinessMapper.xml

@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementBusinessMapper">
+    <sql id="reimbursementUserColumns">
+        a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.user_id AS "userId",
+        a.year AS "year",
+        a.reimbursement_quota AS "reimbursementQuota",
+        a.reimbursement_all_day AS "reimbursementAllDay",
+        a.reimbursement_quota_day AS "reimbursementQuotaDay",
+        su.id as "user.id",
+        su.name as "user.name"
+    </sql>
+
+    <sql id="reimbursementBusinessColumns">
+        a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.business_code_id as "businessCodeId",
+		a.user_id AS "userId",
+        su.name as "userName",
+        a.year AS "year",
+        a.reimbursement_day as "reimbursementDay",
+        a.reimbursement_type AS "reimbursementType",
+        a.reimbursement_amount as "reimbursementAmount"
+    </sql>
+
+    <sql id="reimbursementUserJoinColumns">
+        left join sys_user su on su.id = a.user_id
+    </sql>
+
+    <select id="findList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+            <include refid="reimbursementUserColumns"/>
+        FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            <if test="reimbursementUser.year != null and reimbursementUser.year != ''">
+                and a.year like concat('%',#{reimbursementUser.year},'%')
+            </if>
+            <if test="reimbursementUser.userId != null and reimbursementUser.userId != ''">
+                and a.user_id = #{reimbursementUser.userId}
+            </if>
+        </where>
+        order by a.update_date desc,a.year desc, a.user_id asc
+    </select>
+
+    <select id="getYearList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+            <include refid="reimbursementUserColumns"/>
+        FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            <if test="reimbursementUser.userId != null and reimbursementUser.userId != ''">
+                and a.user_id = #{reimbursementUser.userId}
+            </if>
+        </where>
+        order by a.year desc
+    </select>
+
+    <select id="getReimbursementMoneyByYear" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+            a.year as year,
+            ifnull(sum(a.reimbursement_amount),0) as alreadyReimbursementAmount,
+            ifnull(sum(a.reimbursement_day),0) as alreadyReimbursementDay
+        FROM zs_reimbursement_business_assess_info a
+        <where>
+            a.del_flag = 0
+            and a.user_id = #{userId}
+            and a.year in (${year})
+            and a.reimbursement_type = 1
+        </where>
+        group by a.year
+        order by a.year desc
+    </select>
+
+    <select id="reimbursementUserByUserIdAndYear" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+            <include refid="reimbursementUserColumns"/>
+        FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            and a.user_id = #{userId}
+            and a.year = #{year}
+        </where>
+    </select>
+
+    <insert id="save">
+        insert into zs_reimbursement_business_assess_info (
+            id,
+            create_by,
+            create_date,
+            update_by,
+            update_date,
+            remarks,
+            del_flag,
+            business_code_id,
+            user_id,
+            year,
+            <if test="reimbursementDay != null and reimbursementDay != ''">
+                reimbursement_day,
+            </if>
+            reimbursement_type,
+            reimbursement_amount
+        )
+        values
+        (
+            #{id},
+            #{createBy},
+            #{createDate},
+            #{updateBy},
+            #{updateDate},
+            #{remarks},
+            #{delFlag},
+            #{businessCodeId},
+            #{userId},
+            #{year},
+            <if test="reimbursementDay != null and reimbursementDay != ''">
+                #{reimbursementDay},
+            </if>
+            #{reimbursementType},
+            #{reimbursementAmount}
+        )
+    </insert>
+
+    <update id="update">
+        update zs_reimbursement_user_assess_info
+        set
+            update_by = #{updateBy}
+            ,update_date = #{updateDate}
+            <if test="year != null and year != ''">
+                ,year = #{year}
+            </if>
+            <if test="reimbursementQuota != null and reimbursementQuota != ''">
+                ,reimbursement_quota = #{reimbursementQuota}
+            </if>
+            <if test="reimbursementQuotaDay != null and reimbursementQuotaDay != ''">
+                ,reimbursement_quota_day = #{reimbursementQuotaDay}
+            </if>
+        <where>
+            id = #{id}
+        </where>
+    </update>
+
+    <select id="queryById" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO">
+        SELECT
+        <include refid="reimbursementUserColumns"/>
+            FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            and a.id = #{id}
+        </where>
+    </select>
+
+    <select id="queryByUserIdAndYear" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+        <include refid="reimbursementUserColumns"/>
+            FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            and a.user_id = #{userId}
+            and a.year = #{year}
+        </where>
+    </select>
+
+    <delete id="delete">
+        delete from zs_reimbursement_user_assess_info
+        <where>
+            <if test="idList != null and idList.size>0">
+                and id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </delete>
+
+    <select id="getAlreadyReimbursementQuotaByUserIdAndYear" resultType="java.lang.String">
+        select ifnull(sum(a.reimbursement_amount),0)
+        from zs_reimbursement_business_assess_info a
+        where a.del_flag = 0
+        and a.user_id= #{userId}
+        and a.year = #{year}
+        and a.reimbursement_type = 1
+    </select>
+
+    <select id="getAlreadyReimbursementQuotaByBusinessCodeId" resultType="java.lang.String">
+        select ifnull(sum(a.reimbursement_amount),0)
+        from zs_reimbursement_business_assess_info a
+        where a.del_flag = 0
+        and a.business_code_id= #{businessCodeId}
+    </select>
+
+    <select id="getGatheringStatusById" resultType="java.lang.String">
+        select a.gathering_status
+        from zs_reimbursement_assess_info a
+        where a.del_flag = 0
+        and a.id= #{businessCodeId}
+    </select>
+
+
+
+    <select id="findListByBusinessCodeId" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO">
+        SELECT
+        <include refid="reimbursementBusinessColumns"/>
+        FROM zs_reimbursement_business_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            and a.business_code_id = #{businessCodeId}
+        </where>
+        order by a.update_date desc,a.year desc, a.user_id asc
+    </select>
+
+
+    <select id="findListByUserIdAndYear" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO">
+        SELECT
+        <include refid="reimbursementBusinessColumns"/>
+        ,zri.business_code as "businessCode"
+        FROM zs_reimbursement_business_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        left join zs_reimbursement_assess_info zri on zri.id = a.business_code_id
+        <where>
+            a.del_flag = 0
+            and a.user_id = #{userId}
+            and a.year = #{year}
+
+            <if test="beginReimbursementQuota != null and beginReimbursementQuota != ''">
+                and a.reimbursement_amount >= #{beginReimbursementQuota}
+            </if>
+            <if test="endReimbursementQuota != null and endReimbursementQuota != ''">
+                and a.reimbursement_amount &lt;= #{endReimbursementQuota}
+            </if>
+            <if test="beginDate != null">
+                and a.create_date >= #{beginDate}
+            </if>
+            <if test="endDate != null">
+                and a.create_date &lt;= #{endDate}
+            </if>
+        </where>
+        order by a.update_date desc,a.year desc, a.user_id asc
+    </select>
+
+    <update id="updateReimbursementInfo">
+        update zs_reimbursement_assess_info
+        set reimbursement_status = #{reimbursementStatus}
+        where id = #{id}
+    </update>
+</mapper>

+ 143 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/xml/AssessReimbursementBusinessTwoMapper.xml

@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementBusinessTwoMapper">
+    <sql id="zsReimbursementBusinessAssessInfoColumns">
+        a.id as 'id',
+        a.create_by as 'createBy',
+        a.create_date as 'createDate',
+        a.update_by as 'updateBy',
+        a.update_date as 'updateDate',
+        a.remarks as 'remarks',
+        a.del_flag as 'delFlag',
+        a.business_code_id as 'businessCodeId',
+        a.user_id as 'userId',
+        a.year as 'year',
+        a.reimbursement_day as 'reimbursementDay',
+        a.reimbursement_amount as 'reimbursementAmount',
+        a.reimbursement_type as 'reimbursementType'
+    </sql>
+    <sql id="joinZsReimbursementBusinessAssessInfoColumns">
+        a.id as 'id',
+        a.create_by as 'createBy',
+        a.create_date as 'createDate',
+        a.update_by as 'updateBy',
+        a.update_date as 'updateDate',
+        a.remarks as 'remarks',
+        a.del_flag as 'delFlag',
+        a.business_code_id as 'businessCodeId',
+        a.user_id as 'userId',
+        a.year as 'year',
+        a.reimbursement_day as 'reimbursementDay',
+        a.reimbursement_amount as 'reimbursementAmount',
+        a.reimbursement_type as 'reimbursementType',
+        su.name as 'userName'
+    </sql>
+    <sql id="reimbursementUserJoinColumns">
+        left join sys_user su on su.id = a.user_id
+    </sql>
+    <insert id="insertAssessReimbursementBusiness">
+        insert into zs_reimbursement_business_assess_info
+        (
+                    id,
+            create_by,
+            create_date,
+            update_by,
+            update_date,
+            remarks,
+            del_flag,
+            business_code_id,
+            user_id,
+            year,
+            <if test="reimbursementDay != null and reimbursementDay != ''">
+                reimbursement_day,
+            </if>
+            reimbursement_amount,
+            reimbursement_type
+        )
+        values
+        (
+                    #{id},
+            #{createBy},
+            #{createDate},
+            #{updateBy},
+            #{updateDate},
+            #{remarks},
+            #{delFlag},
+            #{businessCodeId},
+            #{userId},
+            #{year},
+            <if test="reimbursementDay != null and reimbursementDay != ''">
+                #{reimbursementDay},
+            </if>
+            #{reimbursementAmount},
+            #{reimbursementType}
+        )
+    </insert>
+
+    <select id="findListPage"
+            resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessTwoDTO">
+        select
+        <include refid="joinZsReimbursementBusinessAssessInfoColumns"/>
+        from zs_reimbursement_business_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0 and (a.business_code_id='' or a.business_code_id=null)
+            <if test="assessReimbursementBusiness.year != null and assessReimbursementBusiness.year != ''">
+                and a.year like concat('%',#{assessReimbursementBusiness.year},'%')
+            </if>
+            <if test="assessReimbursementBusiness.userId != null and assessReimbursementBusiness.userId != ''">
+                and a.user_id = #{assessReimbursementBusiness.userId}
+            </if>
+        </where>
+        order by a.update_date desc,a.year desc, a.user_id asc
+    </select>
+    <select id="findSelectList"
+            resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+
+        select id,business_code as businessCode from zs_reimbursement_assess_info where business_code is not null and business_code != '' group by business_code
+    </select>
+    <select id="findSelectYearList" resultType="java.lang.String">
+        SELECT year FROM `zs_reimbursement_assess_info` GROUP BY `year` order by `year` desc
+    </select>
+    <select id="findSelectCodeListByYear"
+            resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        select id,business_code as businessCode
+        from zs_reimbursement_assess_info
+        where year = #{year} and business_code is not null and business_code != '' and reimbursement_ratio is not null and reimbursement_ratio !=''
+        group by business_code
+    </select>
+    <select id="findDataById"
+            resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessTwoDTO">
+        select
+        <include refid="zsReimbursementBusinessAssessInfoColumns"/>
+        from zs_reimbursement_business_assess_info a
+        where id=#{id}
+    </select>
+
+
+    <delete id="delPhysicsById">
+        delete from zs_reimbursement_business_assess_info
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteByList">
+        delete from zs_reimbursement_business_assess_info
+        <where>
+            <if test="idList != null and idList.size>0">
+                and id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </delete>
+
+    <update id="modifyBindCode">
+        update zs_reimbursement_business_assess_info
+        set
+                business_code_id=#{businessCode}
+        where id=#{ids}
+    </update>
+
+
+</mapper>

+ 544 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/xml/AssessReimbursementSysMapper.xml

@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementSysMapper">
+    <sql id="reimbursementColumns">
+        a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.parent_id AS "parent.id",
+		a.parent_id AS "parentId",
+		a.parent_ids AS "parentIds",
+        a.invoice_code AS "invoiceCode",
+        a.invoice_number AS "invoiceNumber",
+        a.firm_name AS "firmName",
+        DATE_FORMAT(a.make_time,'%Y-%m-%d') AS "makeTime",
+		a.name AS "name",
+        a.money AS "money",
+        a.tax AS "tax",
+        a.income AS "income",
+        a.business_code AS "businessCode",
+        DATE_FORMAT(a.gathering_time,'%Y-%m-%d') AS "gatheringTime",
+        a.proposer AS "proposer",
+        a.partner AS "partner",
+        a.business_type AS "businessType",
+        a.reimbursement_ratio AS "reimbursementRatio",
+        a.reimbursement_status AS "reimbursementStatus",
+        a.batch_flag as "batchFlag",
+        a.year AS "year",
+        a.random_type AS "randomType"
+    </sql>
+
+    <select id="findList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+        <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_invoice_assess_info a
+        left join zs_reimbursement_assess_info b on a.parent_id = b.id
+        <where>
+            a.del_flag = 0
+            and a.batch_flag = 0
+            and (b.business_code is null or b.business_code = '')
+            <if test="reimbursement.invoiceNumber != null and reimbursement.invoiceNumber != ''">
+                and a.invoice_number like concat('%',#{reimbursement.invoiceNumber},'%')
+            </if>
+            <if test="reimbursement.proposer != null and reimbursement.proposer != ''">
+                and a.proposer like concat('%',#{reimbursement.proposer},'%')
+            </if>
+            <if test="reimbursement.partner != null and reimbursement.partner != ''">
+                and a.partner like concat('%',#{reimbursement.partner},'%')
+            </if>
+        </where>
+    </select>
+
+    <select id="queryAllList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+            <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_assess_info a
+        <where>
+            a.del_flag = 0
+            <if test="reimbursement.businessCode != null and reimbursement.businessCode != ''">
+            and a.business_code like concat('%',#{reimbursement.businessCode},'%')
+            </if>
+            <if test="reimbursement.idList != null and reimbursement.idList.size>0">
+                and a.id in
+                <foreach collection="reimbursement.idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        order by a.business_code
+    </select>
+
+    <select id="getInvoiceList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+            <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            <if test="invoiceNumber != null and invoiceNumber != ''">
+                and a.invoice_number like concat('%',#{invoiceNumber},'%')
+            </if>
+            <if test="proposer != null and proposer != ''">
+                and a.proposer like concat('%',#{proposer},'%')
+            </if>
+            <if test="partner != null and partner != ''">
+                and a.partner like concat('%',#{partner},'%')
+            </if>
+        </where>
+        order by a.invoice_number
+    </select>
+
+    <select id="getInvoiceByIdList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+            <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            <if test="idList != null and idList.size>0">
+                and a.id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        order by a.invoice_number
+    </select>
+
+    <select id="getReceiptInvoiceIncomeByReimbursementId" resultType="java.lang.String">
+        SELECT
+            ifnull(sum(a.income),0) as "income"
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            and a.parent_id =#{parentId}
+            and a.gathering_time is not null
+        </where>
+        order by a.invoice_number
+    </select>
+
+    <select id="getReimbursementRatioByReimbursementId" resultType="java.lang.String">
+        SELECT
+            a.reimbursement_ratio as "reimbursementRatio"
+        FROM zs_reimbursement_assess_info a
+        <where>
+            a.del_flag = 0
+            and a.id =#{id}
+        </where>
+        order by a.invoice_number
+    </select>
+
+    <select id="getInvoiceByParentIdList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+            <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            <if test="parentIdList.size>0">
+                and a.parent_id in
+                <foreach collection="parentIdList" item="parentId" separator="," open="(" close=")">
+                    #{parentId}
+                </foreach>
+            </if>
+        </where>
+        order by a.invoice_number
+    </select>
+
+    <select id="selectOldInvoiceNumber" resultType="java.lang.String">
+        SELECT
+            a.invoice_number as "invoiceNumber"
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            <if test="invoiceNumberList.size>0">
+                and a.invoice_number in
+                <foreach collection="invoiceNumberList" item="invoiceNumber" separator="," open="(" close=")">
+                    #{invoiceNumber}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
+    <select id="selectOldBusinessCode" resultType="java.lang.String">
+        SELECT
+            a.business_code
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            <if test="businessCodeList.size>0">
+                and a.business_code in
+                <foreach collection="businessCodeList" item="businessCode" separator="," open="(" close=")">
+                    #{businessCode}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
+    <select id="selectOldBusinessCodeByInfo" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+            a.id,a.business_code
+        FROM zs_reimbursement_assess_info a
+        <where>
+            a.del_flag = 0
+            <if test="businessCodeList.size>0">
+                and a.business_code in
+                <foreach collection="businessCodeList" item="businessCode" separator="," open="(" close=")">
+                    #{businessCode}
+                </foreach>
+            </if>
+            and a.year = #{year}
+        </where>
+    </select>
+
+    <insert id="insertBusinessCodeList">
+        insert into zs_reimbursement_assess_info (
+          id,
+          create_by,
+          create_date,
+          update_by,
+          update_date,
+          remarks,
+          del_flag,
+          parent_id,
+          parent_ids,
+          business_code,
+          year
+        )
+        values
+        <foreach collection="businessCodeList" item="item" separator=",">
+            ( #{item.id},
+            #{item.createBy},
+            #{item.createDate},
+            #{item.updateBy},
+            #{item.updateDate},
+            #{item.remarks},
+            #{item.delFlag},
+            #{item.parentId},
+            #{item.parentIds},
+            #{item.businessCode},
+            #{item.year}
+            )
+        </foreach>
+    </insert>
+
+    <insert id="insertInvoiceList">
+        insert into zs_reimbursement_invoice_assess_info (
+            id,
+            create_by,
+            create_date,
+            update_by,
+            update_date,
+            remarks,
+            del_flag,
+            parent_id,
+            parent_ids,
+            invoice_code,
+            invoice_number,
+            firm_name,
+            make_time,
+            name,
+            money,
+            tax,
+            income,
+            business_code,
+            gathering_time,
+            proposer,
+            partner,
+            business_type
+        )
+        values
+        <foreach collection="invoiceInfoList" item="item" separator=",">
+            ( #{item.id},
+            #{item.createBy},
+            #{item.createDate},
+            #{item.updateBy},
+            #{item.updateDate},
+            #{item.remarks},
+            #{item.delFlag},
+            #{item.parentId},
+            #{item.parentIds},
+            #{item.invoiceCode},
+            #{item.invoiceNumber},
+            #{item.firmName},
+            #{item.makeTime},
+            #{item.name},
+            #{item.money},
+            #{item.tax},
+            #{item.income},
+            #{item.businessCode},
+            #{item.gatheringTime},
+            #{item.proposer},
+            #{item.partner},
+            #{item.businessType}
+            )
+        </foreach>
+    </insert>
+
+    <select id="queryBusinessById" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+        <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_assess_info a
+        <where>
+            a.del_flag = 0
+            and a.id = #{id}
+        </where>
+    </select>
+
+    <select id="queryBusinessByInvoiceId" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+        <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_assess_info a
+        <where>
+            a.del_flag = 0
+            and a.id = (select parent_id from zs_reimbursement_invoice_assess_info where id = #{id})
+        </where>
+    </select>
+
+    <select id="queryInvoiceById" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+        <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            and a.id = #{id}
+        </where>
+    </select>
+
+    <update id="saveBusiness">
+        update zs_reimbursement_assess_info
+        set
+            update_by = #{updateBy},
+            update_date = #{updateDate},
+            business_code = #{businessCode}
+            <if test="randomBusinessCodeIndex != null and randomBusinessCodeIndex != ''">
+                ,random_business_code_index = #{randomBusinessCodeIndex}
+            </if>
+            <if test="randomType != null and randomType != ''">
+                ,random_type = #{randomType}
+            </if>
+        where
+            id = #{id} and del_flag = 0
+    </update>
+
+    <update id="saveInvoice">
+        update zs_reimbursement_invoice_assess_info
+        set
+            update_by = #{updateBy},
+            update_date = #{updateDate},
+            gathering_time = #{gatheringTime}
+        where
+            id = #{id} and del_flag = 0
+    </update>
+
+    <update id="modifyInvoice">
+        update zs_reimbursement_invoice_assess_info
+        set
+            update_by = #{updateBy},
+            update_date = #{updateDate}
+        <if test="proposer != null and proposer != ''">
+            ,proposer = #{proposer}
+        </if>
+        <if test="partner != null and partner != ''">
+            ,partner = #{partner}
+        </if>
+        where
+            id = #{id} and del_flag = 0
+    </update>
+
+    <update id="updateById">
+        update zs_reimbursement_assess_info
+        set
+            update_by = #{updateBy},
+            update_date = #{updateDate}
+        <if test="batchFlag != null and batchFlag != ''">
+            ,batch_flag = #{batchFlag}
+        </if>
+        where
+            id = #{id} and del_flag = 0
+    </update>
+
+    <select id="getInfoByBusinessCode" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+        <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_assess_info a
+        <where>
+            a.del_flag = 0
+            and a.business_code = #{businessCode}
+            and year = #{year}
+            and a.random_type = 0
+        </where>
+        limit 1;
+    </select>
+
+    <update id="updateInvoiceList">
+        <foreach collection="invoiceInfoList" item="item" index="index" open="" close="" separator=";">
+            update zs_reimbursement_invoice_assess_info
+            <set >
+                    update_by = #{item.updateBy}
+                    ,update_date = #{item.updateDate}
+                <if test="item.businessCode != null and item.businessCode != ''">
+                    ,business_code = #{item.businessCode}
+                </if>
+                <if test="item.parentId != null and item.parentId != ''">
+                    ,parent_id = #{item.parentId}
+                </if>
+                <if test="item.parentIds != null and item.parentIds != ''">
+                    ,parent_ids = #{item.parentIds}
+                </if>
+                <if test="item.batchFlag != null and item.batchFlag != ''">
+                    ,batch_flag = #{item.batchFlag}
+                </if>
+            </set>
+            where id = #{item.id} and del_flag = 0
+        </foreach>
+    </update>
+
+    <delete id="deleteBusinessById">
+        delete from zs_reimbursement_assess_info
+        where
+            id = #{id}
+    </delete>
+
+    <delete id="deleteBusinessByIdList">
+        delete from zs_reimbursement_assess_info
+        <where>
+            <if test="idList != null and idList.size>0">
+                and id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </delete>
+
+    <update id="removeBusinessByIds">
+        update zs_reimbursement_assess_info
+        set
+            del_flag = 1
+        <where>
+            <if test="idList != null and idList.size>0">
+                and id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </update>
+
+    <update id="removeBusinessByParentIds">
+        update zs_reimbursement_invoice_assess_info
+        set
+        del_flag = 1
+        <where>
+            <if test="idList != null and idList.size>0">
+                and parent_id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </update>
+
+    <update id="removeInvoiceByIds">
+        update zs_reimbursement_invoice_assess_info
+        set
+        del_flag = 1
+        <where>
+            <if test="idList != null and idList.size>0">
+                and id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </update>
+
+    <select id="getValidBusinessIdByInvoiceId" resultType="java.lang.String">
+        select parent_id from zs_reimbursement_invoice_assess_info
+        where parent_id = (
+        select parent_id from zs_reimbursement_invoice_assess_info
+        where id = #{id}
+        ) and del_flag = 0 limit 1
+    </select>
+
+    <update id="updateReimbursementRatio">
+        update zs_reimbursement_assess_info
+        set
+        reimbursement_ratio = #{reimbursementRatio}
+        <where>
+            id = #{id}
+        </where>
+    </update>
+
+    <select id="getGatheringTimeInvoiceList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+        <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            <if test="idList != null and idList.size>0">
+                and a.id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+            and gathering_time is not null
+        </where>
+        order by a.invoice_number
+    </select>
+
+    <select id="getNotGatheringTimeInvoice" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+        <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            and business_code = (
+            select business_code from zs_reimbursement_invoice_assess_info where id = #{businessCode}
+            ) and gathering_time is null
+        </where>
+        order by a.invoice_number
+    </select>
+
+    <update id="updateGatheringTime">
+        <foreach collection="idList" item="id" index="index" open="" close="" separator=";">
+            update zs_reimbursement_invoice_assess_info
+            <set >
+                update_by = #{reimbursement.updateBy}
+                ,update_date = #{reimbursement.updateDate}
+                ,gathering_time = #{reimbursement.gatheringTime}
+            </set>
+            where id = #{id}
+        </foreach>
+    </update>
+
+    <update id="updateGatheringStatusById">
+        update zs_reimbursement_assess_info
+        set gathering_status = 1
+        where id = #{id}
+    </update>
+
+
+
+    <select id="getNotGatheringTimeInvoiceBybusinessCodeId" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO">
+        SELECT
+        <include refid="reimbursementColumns"/>
+        FROM zs_reimbursement_invoice_assess_info a
+        <where>
+            a.del_flag = 0
+            and parent_id = #{businessCodeId}
+            and gathering_time is null
+        </where>
+        order by a.invoice_number
+    </select>
+
+    <select id="getLastRandomBusinessCodeIndex" resultType="java.lang.String">
+        select ifnull(max(random_business_code_index),0) as randomBusinessCodeIndex
+        from zs_reimbursement_assess_info
+        <where>
+            year = #{year}
+        </where>
+    </select>
+</mapper>

+ 255 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/mapper/xml/AssessReimbursementUserMapper.xml

@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementUserMapper">
+    <sql id="reimbursementUserColumns">
+        a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.user_id AS "userId",
+        a.year AS "year",
+        a.reimbursement_quota AS "reimbursementQuota",
+        a.reimbursement_all_day AS "reimbursementAllDay",
+        a.reimbursement_quota_day AS "reimbursementQuotaDay",
+        su.id as "user.id",
+        su.name as "user.name"
+    </sql>
+
+    <sql id="reimbursementUserJoinColumns">
+        left join sys_user su on su.id = a.user_id
+    </sql>
+
+    <sql id="userColumns">
+    	a.id,
+    	a.company_id AS "companyDTO.id",
+    	a.office_id AS "officeDTO.id",
+    	a.login_name AS "loginName",
+		a.is_admin AS "isAdmin",
+    	a.password,
+    	a.no,
+		a.name,
+		a.email,
+		a.phone,
+		a.mobile,
+		a.login_ip AS "loginIp",
+		a.login_date AS "loginDate",
+		a.remarks,
+		a.login_flag,
+		a.photo,
+		a.qr_code,
+		a.sign,
+		a.create_by AS "createBy.id",
+		a.create_date,
+		a.update_by AS "updateBy.id",
+		a.update_date,
+    	c.name AS "companyDTO.name",
+    	c.parent_id AS "companyDTO.parent.id",
+    	c.parent_ids AS "companyDTO.parentIds",
+    	o.name AS "officeDTO.name",
+    	o.parent_id AS "officeDTO.parent.id",
+    	o.parent_ids AS "officeDTO.parentIds"
+    </sql>
+
+    <sql id="userJoins">
+		LEFT JOIN sys_office c ON c.id = a.company_id
+		LEFT JOIN sys_office o ON o.id = a.office_id
+    </sql>
+
+    <select id="findList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+            <include refid="reimbursementUserColumns"/>
+            ,
+        so.name as "officeName",
+        ifnull(sum(zrbi.reimbursement_day),0) as "alreadyReimbursementDay",
+        ifnull(sum(zrbi.reimbursement_amount),0) as "alreadyReimbursementAmount",
+        ifnull((a.reimbursement_quota - ifnull(sum(zrbi.reimbursement_amount),0)),0) as "remainReimbursementAmount",
+        ifnull(( CONVERT ( a.reimbursement_quota / a.reimbursement_quota_day, DECIMAL ( 15, 2 )) - ifnull(sum( zrbi.reimbursement_day ),0)), 0 ) AS "surplusReimbursementDay"
+        FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        left join sys_office so on so.id = su.office_id
+        LEFT JOIN zs_reimbursement_business_assess_info zrbi ON zrbi.user_id = a.user_id and zrbi.year = a.year
+        <where>
+            a.del_flag = 0
+            <if test="reimbursementUser.year != null and reimbursementUser.year != ''">
+                and a.year like concat('%',#{reimbursementUser.year},'%')
+            </if>
+            <if test="reimbursementUser.userId != null and reimbursementUser.userId != ''">
+                and a.user_id = #{reimbursementUser.userId}
+            </if>
+        </where>
+        group by a.user_id,a.year
+        order by a.update_date desc,a.year desc, a.user_id asc
+    </select>
+
+    <select id="getYearList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+            <include refid="reimbursementUserColumns"/>
+        FROM zs_reimbursement_user_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            <if test="reimbursementUser.userId != null and reimbursementUser.userId != ''">
+                and a.user_id = #{reimbursementUser.userId}
+            </if>
+        </where>
+        order by a.year desc
+    </select>
+
+    <insert id="save">
+        insert into zs_reimbursement_user_assess_info (
+            id,
+            create_by,
+            create_date,
+            update_by,
+            update_date,
+            remarks,
+            del_flag,
+            user_id,
+            year,
+            reimbursement_quota,
+            reimbursement_all_day,
+            reimbursement_quota_day
+        )
+        values
+        (
+            #{id},
+            #{createBy},
+            #{createDate},
+            #{updateBy},
+            #{updateDate},
+            #{remarks},
+            #{delFlag},
+            #{userId},
+            #{year},
+            #{reimbursementQuota},
+            #{reimbursementAllDay},
+            #{reimbursementQuotaDay}
+        )
+    </insert>
+
+    <insert id="saveList">
+        insert into zs_reimbursement_user_assess_info (
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        remarks,
+        del_flag,
+        user_id,
+        year,
+        reimbursement_quota,
+        reimbursement_all_day,
+        reimbursement_quota_day
+        )
+        values
+        <foreach collection="reimbursementUserList" item="item" separator=",">
+            ( #{item.id},
+            #{item.createBy},
+            #{item.createDate},
+            #{item.updateBy},
+            #{item.updateDate},
+            #{item.remarks},
+            #{item.delFlag},
+            #{item.userId},
+            #{item.year},
+            #{item.reimbursementQuota},
+            #{item.reimbursementAllDay},
+            #{item.reimbursementQuotaDay}
+            )
+        </foreach>
+    </insert>
+
+
+
+    <update id="update">
+        update zs_reimbursement_user_assess_info
+        set
+            update_by = #{updateBy}
+            ,update_date = #{updateDate}
+            <if test="year != null and year != ''">
+                ,year = #{year}
+            </if>
+            <if test="reimbursementQuota != null and reimbursementQuota != ''">
+                ,reimbursement_quota = #{reimbursementQuota}
+            </if>
+            <if test="reimbursementAllDay != null and reimbursementAllDay != ''">
+                ,reimbursement_all_day = #{reimbursementAllDay}
+            </if>
+            <if test="reimbursementQuotaDay != null and reimbursementQuotaDay != ''">
+                ,reimbursement_quota_day = #{reimbursementQuotaDay}
+            </if>
+        <where>
+            id = #{id}
+        </where>
+    </update>
+
+    <select id="queryById" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+        <include refid="reimbursementUserColumns"/>
+            FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            and a.id = #{id}
+        </where>
+    </select>
+
+    <select id="queryByUserIdAndYear" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+        <include refid="reimbursementUserColumns"/>
+            FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            and a.user_id = #{userId}
+            and a.year = #{year}
+        </where>
+        order by id limit 1
+    </select>
+
+    <delete id="delete">
+        delete from zs_reimbursement_user_assess_info
+        <where>
+            <if test="idList != null and idList.size>0">
+                and id in
+                <foreach collection="idList" item="id" separator="," open="(" close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </delete>
+
+    <select id="getUserByNameAndOfficeName" resultType="com.jeeplus.sys.service.dto.UserDTO">
+        SELECT
+        <include refid="userColumns"/>
+        FROM sys_user a
+        <include refid="userJoins"/>
+        <where>
+            a.del_flag = 0
+            and a.name = #{userName}
+            and o.name = #{officeName}
+        </where>
+
+    </select>
+
+    <select id="getExistReimbursementUserList" resultType="com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO">
+        SELECT
+        <include refid="reimbursementUserColumns"/>
+        FROM zs_reimbursement_user_assess_info a
+        <include refid="reimbursementUserJoinColumns"/>
+        <where>
+            a.del_flag = 0
+            <if test="userIdList != null and userIdList.size>0">
+                and user_id in
+                <foreach collection="userIdList" item="userId" separator="," open="(" close=")">
+                    #{userId}
+                </foreach>
+            </if>
+            and a.year = #{year}
+        </where>
+    </select>
+</mapper>

+ 81 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/AssessReimbursementBusinessService.java

@@ -0,0 +1,81 @@
+package com.jeeplus.test.reimbursementAssess.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessReturnDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysService.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:25:00
+ */
+
+public interface AssessReimbursementBusinessService {
+    /**
+     * 查询报销人员信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementBusinessDTO queryById(String id);
+    /**
+     * 查询业务报销额度相关信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementDTO getBusinessById(String id);
+    /**
+     * 查询报销信息(根据人员id和年份)
+     * @param reimbursementUser
+     * @return
+     */
+    AssessReimbursementUserDTO queryByUserIdAndYear(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 查询列表信息
+     * @param page
+     * @param reimbursementUser
+     * @return
+     */
+    IPage<AssessReimbursementUserDTO> findList(Page<AssessReimbursementUserDTO> page, AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 根据人员信息查询报销年份信息
+     * @param page
+     * @param reimbursementUser
+     * @return
+     */
+    IPage<AssessReimbursementUserDTO> getYearList(Page<AssessReimbursementUserDTO> page, AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 保存报销数据信息
+     * @param reimbursementUser
+     */
+    Map<String,Object> save(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 修改报销人员信息
+     * @param reimbursementUser
+     */
+    void update(AssessReimbursementBusinessDTO reimbursementUser);
+
+    /**
+     * 根据id删除人员报销信息(物理删除)
+     * @param idList
+     */
+    void delete(List<String> idList);
+
+    /**
+     * 查询列表信息
+     * @param reimbursementBusiness
+     * @return
+     */
+    AssessReimbursementBusinessReturnDTO findListByBusinessCodeId(AssessReimbursementBusinessDTO reimbursementBusiness);
+}

+ 34 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/AssessReimbursementBusinessTwoService.java

@@ -0,0 +1,34 @@
+package com.jeeplus.test.reimbursementAssess.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessTwoDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+
+import java.util.List;
+
+public interface AssessReimbursementBusinessTwoService {
+
+    IPage<AssessReimbursementBusinessTwoDTO> findListPage(Page<AssessReimbursementBusinessTwoDTO> page,
+                                                           AssessReimbursementBusinessTwoDTO AssessReimbursementBusiness);
+
+    void delPhysicsById(String id);
+
+    /**
+     * 根据发票id删除发票信息(逻辑删除)
+     * @param idList
+     */
+    void deleteByList(List <String> idList);
+
+    void addData(AssessReimbursementBusinessTwoDTO AssessReimbursementBusinessTwoDTO);
+
+    List<AssessReimbursementDTO> findSelectList();
+
+    void modifyBindCode(String ids,String businessCode);
+
+    List<String> findSelectYearList();
+
+    List<AssessReimbursementDTO> findSelectCodeListByYear(String year);
+
+    AssessReimbursementBusinessTwoDTO findDataById(String id);
+}

+ 102 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/AssessReimbursementSysService.java

@@ -0,0 +1,102 @@
+package com.jeeplus.test.reimbursementAssess.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.reimbursementAccountant.domain.dto.AccountantReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysService.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:25:00
+ */
+
+public interface AssessReimbursementSysService {
+    /**
+     * 查询业务具体信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementDTO queryBusinessById(String id);
+    /**
+     * 根据发票id查询业务具体信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementDTO queryBusinessByInvoiceId(String id);
+    /**
+     * 查询业务具体信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementDTO queryInvoiceById(String id);
+
+    IPage<AssessReimbursementDTO> findList(Page<AssessReimbursementDTO> page, AssessReimbursementDTO reimbursement);
+
+    IPage<AssessReimbursementDTO> treeData(Page<AssessReimbursementDTO> page, AssessReimbursementDTO reimbursement);
+
+    /**
+     * 保存方法
+     * @param reimbursementList
+     */
+    Map<String,Object> save(List<AssessReimbursementDTO> reimbursementList);
+
+    /**
+     * 保存业务编码
+     * @param reimbursement
+     */
+    void saveBusiness(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 保存收款时间信息
+     * @param reimbursement
+     */
+    Map<String,Object> saveGatheringTime(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 保存发票收款时间
+     * @param reimbursement
+     */
+    void saveInvoice(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 修改发票信息
+     * @param reimbursement
+     */
+    void modifyInvoice(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 批量删除(逻辑删除)
+     * @param idList
+     */
+    void removeByIds(List <String> idList);
+
+    /**
+     * 根据业务id删除对应的业务信息以及发票信息(逻辑删除)
+     * @param idList
+     */
+    void removeBusinessByIds(List <String> idList);
+
+    /**
+     * 根据发票id删除发票信息(逻辑删除)
+     * @param idList
+     */
+    void removeInvoiceByIds(List <String> idList);
+
+    /**
+     * 修改业务报销比例
+     * @param reimbursement
+     */
+    void updateReimbursementRatio(AssessReimbursementDTO reimbursement);
+
+    /**
+     * 根据发票id删除发票信息(逻辑删除)
+     * @param idList
+     */
+    Map<String,Object>  addBatchReimbursement(List <String> idList);
+}

+ 86 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/AssessReimbursementUserService.java

@@ -0,0 +1,86 @@
+package com.jeeplus.test.reimbursementAssess.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessReturnDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysService.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:25:00
+ */
+
+public interface AssessReimbursementUserService {
+    /**
+     * 查询报销人员信息
+     * @param id
+     * @return
+     */
+    AssessReimbursementUserDTO queryById(String id);
+    /**
+     * 查询报销信息(根据人员id和年份)
+     * @param reimbursementUser
+     * @return
+     */
+    AssessReimbursementUserDTO queryByUserIdAndYear(AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 查询列表信息
+     * @param page
+     * @param reimbursementUser
+     * @return
+     */
+    IPage<AssessReimbursementUserDTO> findList(Page<AssessReimbursementUserDTO> page, AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 保存方法
+     * @param reimbursementUser
+     */
+    Map<String,Object> save(AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 修改报销人员信息
+     * @param reimbursementUser
+     */
+    void update(AssessReimbursementUserDTO reimbursementUser);
+
+    /**
+     * 根据id删除人员报销信息(物理删除)
+     * @param idList
+     */
+    Map<String,Object> delete(List<String> idList);
+
+    /**
+     * 查询人员报销信息列表
+     * @param reimbursementUserDTO
+     * @return
+     */
+    AssessReimbursementBusinessReturnDTO findListByUserId(AssessReimbursementUserDTO reimbursementUserDTO, AssessReimbursementBusinessReturnDTO reimbursementBusinessReturnDTO);
+
+    /**
+     * 根据部门和人员名称查询人员信息
+     * @param reimbursementUserDTO
+     * @return
+     */
+    List<UserDTO> getUserByNameAndOfficeName(AssessReimbursementUserDTO reimbursementUserDTO);
+
+
+    /**
+     * 保存方法(批量导入)
+     * @param reimbursementUserList
+     */
+    Map<String,Object> saveList(List<AssessReimbursementUserDTO> reimbursementUserList);
+
+    /**
+     * 初始化部门人员报销数据信息(当年)
+     * @param officeName 部门名称
+     */
+    Map<String,Object> initialize(String officeName);
+}

+ 296 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/impl/AssessReimbursementBusinessServiceImpl.java

@@ -0,0 +1,296 @@
+package com.jeeplus.test.reimbursementAssess.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.DictUtils;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessReturnDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
+import com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementBusinessMapper;
+import com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementSysMapper;
+import com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementUserMapper;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementBusinessService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysServiceImpl.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:38:00
+ */
+@Service
+@Transactional(readOnly = true)
+public class AssessReimbursementBusinessServiceImpl implements AssessReimbursementBusinessService {
+
+    @Autowired
+    private AssessReimbursementBusinessMapper mapper;
+    @Autowired
+    private AssessReimbursementSysMapper reimbursementSysMapper;
+    @Autowired
+    private AssessReimbursementUserMapper reimbursementUserMapper;
+
+
+    @Override
+    public AssessReimbursementBusinessDTO queryById(String id) {
+        return mapper.queryById(id);
+    }
+
+    @Override
+    public AssessReimbursementDTO getBusinessById(String id) {
+        AssessReimbursementDTO reimbursement = new AssessReimbursementDTO();
+        reimbursement.setBusinessCodeId(id);
+        AssessReimbursementBusinessDTO reimbursementBusiness = new AssessReimbursementBusinessDTO();
+        reimbursementBusiness.setBusinessCodeId(id);
+        //根据业务id查询已收款的发票信息收款总额
+        String getReceiptInvoiceByReimbursementId = reimbursementSysMapper.getReceiptInvoiceIncomeByReimbursementId(id);
+        BigDecimal income = new BigDecimal(getReceiptInvoiceByReimbursementId);    //发票收入
+        //根据业务id查询报销比例
+        String getReimbursementRatioByReimbursementId = reimbursementSysMapper.getReimbursementRatioByReimbursementId(id);
+        if(StringUtils.isBlank(getReimbursementRatioByReimbursementId)){
+            getReimbursementRatioByReimbursementId = "0";
+            reimbursement.setReimbursementRatio("0");
+        }
+        BigDecimal reimbursementRatio = new BigDecimal(getReimbursementRatioByReimbursementId);    //报销比例
+        BigDecimal canReimbursementAmount = income.multiply(reimbursementRatio).divide(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP);    //该项目可报销额度计算
+        //查询该业务总报销额度
+        String alreadyReimbursementQuotaByBusinessCodeId = mapper.getAlreadyReimbursementQuotaByBusinessCodeId(reimbursementBusiness);
+        BigDecimal allAlreadyReimbursementQuota = new BigDecimal(alreadyReimbursementQuotaByBusinessCodeId);    //总报销额度
+        reimbursement.setAllAlreadyReimbursementQuota(allAlreadyReimbursementQuota.toString());
+        reimbursement.setCanReimbursementAmount(canReimbursementAmount.toString());
+        reimbursement.setSurplusReimbursementAmount(canReimbursementAmount.subtract(allAlreadyReimbursementQuota).toString());
+        return reimbursement;
+    }
+
+    @Override
+    public AssessReimbursementUserDTO queryByUserIdAndYear(AssessReimbursementBusinessDTO reimbursementUser) {
+        return mapper.queryByUserIdAndYear(reimbursementUser);
+    }
+
+
+    @Override
+    public IPage<AssessReimbursementUserDTO> findList(Page<AssessReimbursementUserDTO> page, AssessReimbursementUserDTO reimbursementUser) {
+        return mapper.findList (page, reimbursementUser);
+    }
+
+    @Override
+    public IPage<AssessReimbursementUserDTO> getYearList(Page<AssessReimbursementUserDTO> page, AssessReimbursementUserDTO reimbursementUser) {
+        IPage<AssessReimbursementUserDTO> yearList = mapper.getYearList(page, reimbursementUser);
+        List<AssessReimbursementUserDTO> list = yearList.getRecords();
+        if(list.size()>0){
+            List<String> yearStrList = Lists.newArrayList();
+            for (AssessReimbursementUserDTO info : list) {
+                yearStrList.add(info.getYear());
+            }
+            String years = StringUtils.join(yearStrList, ',');
+            reimbursementUser.setYear(years);
+            //根据人员和年份查询他的已报金额
+            List<AssessReimbursementUserDTO> reimbursementMoneyByYear = mapper.getReimbursementMoneyByYear(reimbursementUser);
+            for (AssessReimbursementUserDTO info : list) {
+                for (AssessReimbursementUserDTO yearInfo : reimbursementMoneyByYear) {
+                    if(info.getYear().equals(yearInfo.getYear())){
+                        //根据人员和年份查询报销人年度报销天数信息
+                        AssessReimbursementUserDTO reimbursementUserDTO = new AssessReimbursementUserDTO();
+                        reimbursementUserDTO.setUserId(reimbursementUser.getUserId());
+                        reimbursementUserDTO.setYear(info.getYear());
+                        AssessReimbursementUserDTO userInfo = reimbursementUserMapper.queryByUserIdAndYear(reimbursementUserDTO);
+                        if(null != userInfo.getReimbursementAllDay()){
+                            //计算剩余天数
+                            if(StringUtils.isBlank(yearInfo.getAlreadyReimbursementDay())){
+                                yearInfo.setAlreadyReimbursementDay("0");
+                            }
+                            int surplusReimbursementDay = userInfo.getReimbursementAllDay() - Integer.parseInt(yearInfo.getAlreadyReimbursementDay());
+                            info.setSurplusReimbursementDay(Integer.toString(surplusReimbursementDay));
+                        }else{
+                            info.setSurplusReimbursementDay("");
+                        }
+                        //获取当年总报销额度
+                        BigDecimal allAlreadyReimbursementQuota = new BigDecimal(info.getReimbursementQuota());
+                        //获取当年已报销额度
+                        BigDecimal alreadyReimbursementQuota = new BigDecimal(yearInfo.getAlreadyReimbursementAmount());
+                        info.setAlreadyReimbursementAmount(alreadyReimbursementQuota.toString());
+                        //计算出当年所剩报销额度
+                        info.setRemainReimbursementAmount(allAlreadyReimbursementQuota.subtract(alreadyReimbursementQuota).toString());
+                        break;
+                    }
+                }
+                //如果没有剩余报销天数 则将年报销天数添加到剩余报销天数中
+                if(StringUtils.isBlank(info.getSurplusReimbursementDay())){
+                    info.setSurplusReimbursementDay(info.getReimbursementAllDay().toString());
+                }
+            }
+
+        }
+        return yearList;
+    }
+
+    /**
+     * 保存
+     * @param reimbursementUser
+     */
+    @Override
+    @Transactional(readOnly = false)
+    public Map<String,Object> save(AssessReimbursementBusinessDTO reimbursementUser) {
+        Map<String,Object> map = new HashMap<>();
+
+        if(StringUtils.isBlank(reimbursementUser.getUserId())){
+            map.put("success", false);
+            map.put("message", "报销人员为空,无法进行添加报销信息!");
+            return map;
+        }
+        if(StringUtils.isBlank(reimbursementUser.getYear())){
+            map.put("success", false);
+            map.put("message", "报销年份不正确,请重新填写!");
+            return map;
+        }
+        if(StringUtils.isBlank(reimbursementUser.getReimbursementType())){
+            map.put("success", false);
+            map.put("message", "请选择报销类型!");
+            return map;
+        }else{
+            if("1".equals(reimbursementUser.getReimbursementType()) && (StringUtils.isBlank(reimbursementUser.getReimbursementDay()) || !StringUtils.isNumeric(reimbursementUser.getReimbursementDay()))){
+                map.put("success", false);
+                map.put("message", "报销天数不正确,请重新填写!");
+                return map;
+            }
+        }
+        //根据人员id和报销年份查询该年度的报销信息
+        AssessReimbursementUserDTO reimbursementUserByUserIdAndYear = mapper.reimbursementUserByUserIdAndYear(reimbursementUser);
+        if(null == reimbursementUserByUserIdAndYear){
+            map.put("success", false);
+            map.put("message", "该员工" + reimbursementUser.getYear() + "年度未添加报销信息,无法进行报销");
+            return map;
+        }
+        //查询该人员该年度已报销额度(正常报销额度)
+        String alreadyReimbursementQuota = mapper.getAlreadyReimbursementQuotaByUserIdAndYear(reimbursementUser);
+        //判断本地报销额度是否超过该年度所剩余报销额度,如果超过,则不允许报销,并抛出。否则进行报销并保存报销数据
+        BigDecimal alreadyReimbursementQuotaB = new BigDecimal(alreadyReimbursementQuota);    //已报销额度
+        BigDecimal reimbursementAmount = null;
+        if("1".equals(reimbursementUser.getReimbursementType())){
+            BigDecimal reimbursementQuotaDay = new BigDecimal(reimbursementUser.getReimbursementQuotaDay());    //日报销额度
+            BigDecimal reimbursementDay = new BigDecimal(reimbursementUser.getReimbursementDay());  //报销天数
+            reimbursementAmount = reimbursementQuotaDay.multiply(reimbursementDay).setScale(2, BigDecimal.ROUND_HALF_UP);    //报销额度
+
+            //往期加这次的总报销额度和当年的总报销额度进行比较,小于当年报销额度 则个人可以进行报销,否则,无法进行报销
+            if(alreadyReimbursementQuotaB.add(reimbursementAmount).compareTo(new BigDecimal(reimbursementUser.getReimbursementQuota())) == 1){
+                map.put("success", false);
+                map.put("message", "本次报销金额已超出当年报销额度所剩余额,无法进行报销");
+                return map;
+            }
+        }else{
+            reimbursementAmount = new BigDecimal(reimbursementUser.getReimbursementAmount());
+        }
+
+
+        //根据业务id查询已收款的发票信息收款总额
+        String getReceiptInvoiceByReimbursementId = reimbursementSysMapper.getReceiptInvoiceIncomeByReimbursementId(reimbursementUser.getBusinessCodeId());
+        BigDecimal income = new BigDecimal(getReceiptInvoiceByReimbursementId);    //发票收入
+        if(new BigDecimal("0").compareTo(income) == 0){
+            map.put("success", false);
+            map.put("message", "该业务可报销额度为0,无法进行报销");
+            return map;
+        }
+        //根据业务id查询报销比例
+        String getReimbursementRatioByReimbursementId = reimbursementSysMapper.getReimbursementRatioByReimbursementId(reimbursementUser.getBusinessCodeId());
+        if(StringUtils.isBlank(getReimbursementRatioByReimbursementId)){
+            map.put("success", false);
+            map.put("message", "该业务报销比例为0,无法进行报销");
+            return map;
+        }
+        BigDecimal reimbursementRatio = new BigDecimal(getReimbursementRatioByReimbursementId);    //报销比例
+        BigDecimal canReimbursementAmount = income.multiply(reimbursementRatio).divide(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP);    //该项目可报销额度计算
+        //查询该业务总报销额度
+        String alreadyReimbursementQuotaByBusinessCodeId = mapper.getAlreadyReimbursementQuotaByBusinessCodeId(reimbursementUser);
+        String gatheringStatus = mapper.getGatheringStatusById(reimbursementUser);
+        BigDecimal allAlreadyReimbursementQuota = new BigDecimal(alreadyReimbursementQuotaByBusinessCodeId);    //总报销额度
+        //往期加这次的总报销额度和当年的总报销额度进行比较,小于当年报销额度 则个人可以进行报销,否则,无法进行报销
+        if(allAlreadyReimbursementQuota.add(reimbursementAmount).compareTo(canReimbursementAmount) == 1 && "1".equals(reimbursementUser.getReimbursementType())){
+            map.put("success", false);
+            map.put("message", "本次报销金额已超出该业务可报销额度所剩余额,无法进行报销");
+            return map;
+        } else if (allAlreadyReimbursementQuota.add(reimbursementAmount).compareTo(canReimbursementAmount) == 0 && "1".equals(gatheringStatus)){
+            //如果报销额度和剩余报销额度相同
+            AssessReimbursementDTO reimbursementDTO = new AssessReimbursementDTO();
+            reimbursementDTO.setId(reimbursementUser.getBusinessCodeId());
+            reimbursementDTO.setReimbursementStatus("1");
+
+            mapper.updateReimbursementInfo(reimbursementDTO);
+        }
+
+        AssessReimbursementDTO reimbursement = new AssessReimbursementDTO();
+        reimbursement.setBusinessCodeId(reimbursementUser.getBusinessCodeId());
+        //根据该条发票信息查询同业务编号下的没有收款的发票信息
+        List<AssessReimbursementDTO> notGatheringTimeInvoice = reimbursementSysMapper.getNotGatheringTimeInvoiceBybusinessCodeId(reimbursement);
+        if(notGatheringTimeInvoice.size() == 0){
+            //查询该发票信息
+            //如果所有的发票均已收款,则将业务信息添加全部收款状态
+            reimbursementSysMapper.updateGatheringStatusById(reimbursementUser.getBusinessCodeId());
+        }
+
+        UserDTO user = UserUtils.get(reimbursementUser.getUserId());
+
+        reimbursementUser.setReimbursementAmount(reimbursementAmount.toString());
+        if(StringUtils.isNotBlank(reimbursementUser.getId())){
+            reimbursementUser.preUpdate();
+            //新增
+            mapper.update(reimbursementUser);
+        }else{
+            reimbursementUser.preInsert();
+            //新增
+            mapper.save(reimbursementUser);
+        }
+
+        map.put("success", true);
+        map.put("message", user.getName() + "报销" + reimbursementUser.getReimbursementAmount() + "金额成功");
+        return map;
+    }
+
+
+    @Override
+    @Transactional(readOnly = false)
+    public void update(AssessReimbursementBusinessDTO reimbursementUser) {
+        mapper.update(reimbursementUser);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void delete(List<String> idList) {
+        //删除发票信息
+        if(idList.size()>0){
+            mapper.delete(idList);
+        }
+    }
+
+
+    @Override
+    public AssessReimbursementBusinessReturnDTO findListByBusinessCodeId(AssessReimbursementBusinessDTO reimbursementBusiness) {
+        List<AssessReimbursementBusinessDTO> list = mapper.findListByBusinessCodeId(reimbursementBusiness);
+        for (AssessReimbursementBusinessDTO info : list) {
+            info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
+        }
+        AssessReimbursementBusinessReturnDTO reimbursementBusinessReturnDTO = new AssessReimbursementBusinessReturnDTO();
+        //获取业务报销信息
+        AssessReimbursementDTO business = this.getBusinessById(reimbursementBusiness.getBusinessCodeId());
+        reimbursementBusinessReturnDTO.setList(list);
+        //剩余报销额度
+        reimbursementBusinessReturnDTO.setSurplusReimbursementAmount(business.getSurplusReimbursementAmount());
+        //已报销额度
+        reimbursementBusinessReturnDTO.setAlreadyReimbursementAmount(business.getAllAlreadyReimbursementQuota());
+        //总报销额度
+        reimbursementBusinessReturnDTO.setReimbursementQuota(business.getCanReimbursementAmount());
+        return reimbursementBusinessReturnDTO;
+    }
+
+}

+ 90 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/impl/AssessReimbursementBusinessTwoServiceImpl.java

@@ -0,0 +1,90 @@
+package com.jeeplus.test.reimbursementAssess.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessTwoDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementBusinessTwoMapper;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementBusinessService;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementBusinessTwoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Service
+@Transactional(readOnly = true)
+public class AssessReimbursementBusinessTwoServiceImpl implements AssessReimbursementBusinessTwoService {
+
+    @Autowired
+    private AssessReimbursementBusinessTwoMapper assessReimbursementBusinessTwoMapper;
+    @Autowired
+    private AssessReimbursementBusinessService reimbursementBusinessService;
+
+
+    @Override
+    public IPage<AssessReimbursementBusinessTwoDTO> findListPage(Page<AssessReimbursementBusinessTwoDTO> page, AssessReimbursementBusinessTwoDTO AssessReimbursementBusiness) {
+        return assessReimbursementBusinessTwoMapper.findListPage(page,AssessReimbursementBusiness);
+    }
+
+    @Transactional(readOnly = false)
+    @Override
+    public void delPhysicsById(String id) {
+        assessReimbursementBusinessTwoMapper.delPhysicsById(id);
+    }
+
+    @Transactional(readOnly = false)
+    @Override
+    public void deleteByList(List <String> idList) {//删除发票信息
+        if(idList.size()>0){
+            assessReimbursementBusinessTwoMapper.deleteByList(idList);
+        }
+    }
+
+    @Transactional(readOnly = false)
+    @Override
+    public void addData(AssessReimbursementBusinessTwoDTO AssessReimbursementBusinessTwoDTO) {
+        AssessReimbursementBusinessTwoDTO.preInsert();
+        assessReimbursementBusinessTwoMapper.insertAssessReimbursementBusiness(AssessReimbursementBusinessTwoDTO);
+    }
+
+    @Override
+    public List<AssessReimbursementDTO> findSelectList() {
+        return assessReimbursementBusinessTwoMapper.findSelectList();
+    }
+
+    @Transactional(readOnly = false)
+    @Override
+    public void modifyBindCode(String ids,String businessCode) {
+        assessReimbursementBusinessTwoMapper.modifyBindCode(ids,businessCode);
+    }
+
+    @Override
+    public List<String> findSelectYearList() {
+        return assessReimbursementBusinessTwoMapper.findSelectYearList();
+    }
+
+    @Override
+    public List<AssessReimbursementDTO> findSelectCodeListByYear(String year) {
+        List<AssessReimbursementDTO> selectCodeListByYear = assessReimbursementBusinessTwoMapper.findSelectCodeListByYear(year);
+        selectCodeListByYear.forEach(s->{
+            AssessReimbursementDTO businessById = reimbursementBusinessService.getBusinessById(s.getId());
+            if(null != businessById){
+                s.setAllAlreadyReimbursementQuota(businessById.getAllAlreadyReimbursementQuota());
+                s.setCanReimbursementAmount(businessById.getCanReimbursementAmount());
+                s.setSurplusReimbursementAmount(businessById.getSurplusReimbursementAmount());
+            }
+        });
+        return selectCodeListByYear;
+    }
+
+    @Override
+    public AssessReimbursementBusinessTwoDTO findDataById(String id) {
+        return assessReimbursementBusinessTwoMapper.findDataById(id);
+    }
+}

+ 609 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/impl/AssessReimbursementSysServiceImpl.java

@@ -0,0 +1,609 @@
+package com.jeeplus.test.reimbursementAssess.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementDTO;
+import com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementSysMapper;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementBusinessService;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementSysService;
+import com.jeeplus.test.reimbursementAccountant.utils.MyBeanUtils;
+import com.jeeplus.test.reimbursementsys.utils.PublicUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysServiceImpl.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:38:00
+ */
+@Service
+@Transactional(readOnly = true)
+public class AssessReimbursementSysServiceImpl implements AssessReimbursementSysService {
+
+    @Autowired
+    private AssessReimbursementSysMapper mapper;
+    @Autowired
+    private AssessReimbursementBusinessService reimbursementBusinessService;
+
+
+    @Override
+    public AssessReimbursementDTO queryBusinessById(String id) {
+        //根据发票id查询业务具体信息
+        AssessReimbursementDTO reimbursementDTO = mapper.queryBusinessById(id);
+        //如果没有随即类型,则将随即类型默认为非随机(即指定业务编码)
+        if(StringUtils.isBlank(reimbursementDTO.getRandomType())){
+            reimbursementDTO.setRandomType("0");
+        }
+        return reimbursementDTO;
+    }
+
+    @Override
+    public AssessReimbursementDTO queryBusinessByInvoiceId(String id) {
+        //根据发票id查询业务具体信息
+        AssessReimbursementDTO assessReimbursementDTO = mapper.queryBusinessByInvoiceId(id);
+        //如果没有随即类型,则将随即类型默认为非随机(即指定业务编码)
+        if(null != assessReimbursementDTO && StringUtils.isBlank(assessReimbursementDTO.getRandomType())){
+            assessReimbursementDTO.setRandomType("0");
+        }
+        return assessReimbursementDTO;
+    }
+
+    @Override
+    public AssessReimbursementDTO queryInvoiceById(String id) {
+        return mapper.queryInvoiceById(id);
+    }
+
+    @Override
+    public IPage<AssessReimbursementDTO> findList(Page<AssessReimbursementDTO> page, AssessReimbursementDTO reimbursement) {
+        IPage<AssessReimbursementDTO> list = mapper.findList(page, reimbursement);
+        return list;
+    }
+
+
+    @Override
+    public IPage<AssessReimbursementDTO> treeData(Page<AssessReimbursementDTO> page, AssessReimbursementDTO reimbursement) {
+        IPage<AssessReimbursementDTO> pageList = new Page();
+        //如果筛选项含有发票号码,则需先查询对应的发票信息
+        if(StringUtils.isNotBlank(reimbursement.getInvoiceNumber()) ||
+                StringUtils.isNotBlank(reimbursement.getProposer()) ||
+                StringUtils.isNotBlank(reimbursement.getPartner()) ||
+                null != reimbursement.getBeginDate() ||
+                null != reimbursement.getEndDate() ||
+                StringUtils.isNotBlank(reimbursement.getBeginIncome()) ||
+                StringUtils.isNotBlank(reimbursement.getEndIncome()) ||
+                StringUtils.isNotBlank(reimbursement.getFirmName())){
+            List<AssessReimbursementDTO> invoiceList =  mapper.getInvoiceList(reimbursement);
+            //如果存在发票信息,则根据发票的父节点查询对应的业务信息
+            if(invoiceList.size()>0){
+                Set<String> idSet = new HashSet<String>();
+                for (AssessReimbursementDTO  info : invoiceList) {
+                    idSet.add(info.getParentId());
+                }
+                reimbursement.setIdList(new ArrayList<>(idSet));
+                pageList = mapper.queryAllList(page,reimbursement);
+
+                List<AssessReimbursementDTO> list =  pageList.getRecords();
+                if(list.size()>0){
+                    //将子节点信息进行分组
+                    Map<String, List<AssessReimbursementDTO>> invoiceListMap = dataMessageDispose(invoiceList);
+                    //将分组后的子节点信息通过遍历的方式添加到父节点中的children中
+                    for (AssessReimbursementDTO info:list) {
+                        for (String key : invoiceListMap.keySet()) {
+                            if (info.getId().equals(key)) {
+                                List<AssessReimbursementDTO> children = invoiceListMap.get(key);
+                                if(StringUtils.isNotBlank(info.getBusinessCode()) || "1".equals(info.getBatchFlag())){
+                                    info.setChildren(children);
+                                    info.setBusinessFlag("0");
+                                }else{
+                                    //空业务编码添加状态
+                                    info.setBusinessFlag("1");
+                                    MyBeanUtils.copyBeanNotNull2Bean(children.get(0), info);//将编辑表单中的非NULL值覆盖数据库记录中的值
+                                }
+                            }
+                        }
+                        AssessReimbursementDTO businessById = reimbursementBusinessService.getBusinessById(info.getId());
+                        if(null != businessById){
+                            info.setAllAlreadyReimbursementQuota(businessById.getAllAlreadyReimbursementQuota());
+                            info.setCanReimbursementAmount(businessById.getCanReimbursementAmount());
+                            info.setSurplusReimbursementAmount(businessById.getSurplusReimbursementAmount());
+                        }
+                    }
+                }
+            }else{
+                return page;
+            }
+        }else{
+            pageList = mapper.queryAllList(page,reimbursement);
+            List<AssessReimbursementDTO> list =  pageList.getRecords();
+            if(list.size()>0){
+                //获取所有发票信息表中的数据
+                List<String> parentIdList = Lists.newArrayList();
+                for (AssessReimbursementDTO info:list) {
+                    parentIdList.add(info.getId());
+                }
+                //根据查询的父节点信息查询对应的子节点信息
+                List<AssessReimbursementDTO> invoiceList =  mapper.getInvoiceByParentIdList(parentIdList);
+                if(invoiceList.size()>0){
+                    //将子节点信息进行分组
+                    Map<String, List<AssessReimbursementDTO>> invoiceListMap = dataMessageDispose(invoiceList);
+                    //将分组后的子节点信息通过遍历的方式添加到父节点中的children中
+                    for (AssessReimbursementDTO info:list) {
+                        for (String key : invoiceListMap.keySet()) {
+                            if (info.getId().equals(key)) {
+                                List<AssessReimbursementDTO> children = invoiceListMap.get(key);
+                                if(StringUtils.isNotBlank(info.getBusinessCode()) || "1".equals(info.getBatchFlag())){
+                                    info.setChildren(children);
+                                    info.setBusinessFlag("0");
+                                }else{
+                                    //空业务编码添加状态
+                                    info.setBusinessFlag("1");
+                                    MyBeanUtils.copyBeanNotNull2Bean(children.get(0), info);//将编辑表单中的非NULL值覆盖数据库记录中的值
+                                }
+                            }
+                        }
+                        AssessReimbursementDTO businessById = reimbursementBusinessService.getBusinessById(info.getId());
+                        if(null != businessById){
+                            info.setAllAlreadyReimbursementQuota(businessById.getAllAlreadyReimbursementQuota());
+                            info.setCanReimbursementAmount(businessById.getCanReimbursementAmount());
+                            info.setSurplusReimbursementAmount(businessById.getSurplusReimbursementAmount());
+                        }
+                    }
+                }
+            }
+        }
+
+        return pageList;
+    }
+
+    /**
+     * 文件数据分组
+     * @param dataList
+     * @return
+     */
+    public Map<String, List<AssessReimbursementDTO>> dataMessageDispose(List<AssessReimbursementDTO> dataList) {
+        //所有有效数据均添加到list中,下边将list中的数据根据店号和收银员的id进行分割处理
+        Map<String, List<AssessReimbursementDTO>> result = listGroup2Map(dataList);
+        return result;
+    }
+
+    private Map<String, List<AssessReimbursementDTO>> listGroup2Map(List<AssessReimbursementDTO> list) {
+        Map<String, List<AssessReimbursementDTO>> userSignSerialMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            // 分组
+            for (AssessReimbursementDTO vo : list) {
+                List<AssessReimbursementDTO> tempList = userSignSerialMap.get(vo.getParentId());
+                /*如果取不到数据,那么直接new一个空的ArrayList**/
+                if (tempList == null) {
+                    tempList = new ArrayList<>();
+                    tempList.add(vo);
+                    userSignSerialMap.put(vo.getParentId(), tempList);
+                }
+                else {
+                    /*某个vo之前已经存放过了,则直接追加数据到原来的List里**/
+                    tempList.add(vo);
+                }
+            }
+        }
+        return userSignSerialMap;
+    }
+
+    /**
+     * 保存
+     * @param reimbursementList
+     */
+    @Override
+    @Transactional(readOnly = false)
+    public Map<String,Object> save(List<AssessReimbursementDTO> reimbursementList) {
+        Map<String,Object> map = new HashMap<>();
+        Set<String> invoiceNumberSet = new HashSet<String>();
+        for (AssessReimbursementDTO info : reimbursementList) {
+            if(StringUtils.isBlank(info.getBusinessCode())){
+                info.setBusinessCode("");
+            }
+            invoiceNumberSet.add(info.getInvoiceNumber());
+        }
+        //如果发票编号数量不等于总数量,则表示所传数据中存在重复的发票编号,则进行抛出
+        if(invoiceNumberSet.size() != reimbursementList.size()){
+            map.put("success", false);
+            map.put("message", "数据中存在相同的发票号,请重新验证上传");
+            return map;
+        }
+        //set转list
+        List<String> invoiceNumberList = new ArrayList<String>(invoiceNumberSet);
+        //查询发票号是否存在,若含有已存在发票号,则直接进行抛出
+        List<String> oldInvoiceNumberList = mapper.selectOldInvoiceNumber(invoiceNumberList);
+        if(oldInvoiceNumberList.size()>0){
+            String oldInvoiceNumber = String.join(",", oldInvoiceNumberList);
+            map.put("success", false);
+            map.put("message", "发票号码:" + oldInvoiceNumber + " 已存在。无法再次上传");
+            return map;
+        }
+
+        //业务编号对应的数据集合
+        List<AssessReimbursementDTO> businessCodeInfoList = Lists.newArrayList();
+        List<AssessReimbursementDTO> businessCodeNullList = Lists.newArrayList();
+        List<String> businessCodeList = Lists.newArrayList();
+        //循环遍历reimbursementList 整理出相同的业务编号(null或者空字符串除外),并将这些业务编号进行去重,保存到数据库
+        Map<String, List<AssessReimbursementDTO>> businessCodeListMap = dataDisposeOnSaveByBusinessCode(reimbursementList);
+        for (String key : businessCodeListMap.keySet()) {
+            if("".equals(key)){
+                List<AssessReimbursementDTO> infoList = businessCodeListMap.get(key);
+                businessCodeNullList.addAll(infoList);
+            }else{
+                List<AssessReimbursementDTO> infoList = businessCodeListMap.get(key);
+                businessCodeInfoList.add(infoList.get(0));
+                businessCodeList.add(key);
+            }
+        }
+
+        //获取当前年份
+        Calendar date = Calendar.getInstance();
+        String year = String.valueOf(date.get(Calendar.YEAR));
+
+        //查询非空的业务编号数据在数据库中是否存在,若存在,返回已存在的业务编号集合
+        List<AssessReimbursementDTO> oldBusinessCodeList = mapper.selectOldBusinessCodeByInfo(businessCodeList,year);
+        if (oldBusinessCodeList.size()>0){
+            //如果数据库已存在部分业务编号信息,则去除该部分的业务编号信息
+            for (AssessReimbursementDTO oldBusinessCode: oldBusinessCodeList) {
+                Iterator iterator = businessCodeInfoList.iterator();
+                while (iterator.hasNext()) {
+                    AssessReimbursementDTO data = (AssessReimbursementDTO) iterator.next();
+                    if (oldBusinessCode.getBusinessCode().equals(data.getBusinessCode())){
+                        data.setId(oldBusinessCode.getId());
+                    }
+                }
+            }
+
+        }
+
+        //将空的业务编号 的信息添加到集合中
+        businessCodeInfoList.addAll(businessCodeNullList);
+        List<AssessReimbursementDTO> newBusinessCodeInfoList = Lists.newArrayList();
+        newBusinessCodeInfoList.addAll(businessCodeInfoList);
+
+        //对业务编号的数据进行新增保存
+        Iterator iterator = businessCodeInfoList.iterator();
+        while (iterator.hasNext()) {
+            AssessReimbursementDTO data = (AssessReimbursementDTO) iterator.next();
+            if (StringUtils.isBlank(data.getId())){
+                data.preInsert();
+                data.setParentId("0");
+                data.setParentIds("0,");
+                data.setYear(year);
+                data.setRandomType("0");
+            }else{
+                iterator.remove();
+            }
+        }
+        if(businessCodeInfoList.size()>0){
+            mapper.insertBusinessCodeList(businessCodeInfoList);
+        }
+
+
+        //业务编号对应的数据集合
+        List<AssessReimbursementDTO> invoiceInfoList = Lists.newArrayList();
+
+        for (AssessReimbursementDTO info : newBusinessCodeInfoList) {
+            if(StringUtils.isNotBlank(info.getBusinessCode())){
+                //处理业务编号不为空的数据
+                for (String key : businessCodeListMap.keySet()) {
+                    if(info.getBusinessCode().equals(key)){
+                        List<AssessReimbursementDTO> infoList = businessCodeListMap.get(key);
+                        for (AssessReimbursementDTO childrenInfo : infoList) {
+                            childrenInfo.setParentId(info.getId());
+                            String parentIds = "0," + info.getId() + ",";
+                            childrenInfo.setParentIds(parentIds);
+                            //childrenInfo.preInsert();
+                            invoiceInfoList.add(childrenInfo);
+                        }
+                    }
+                }
+
+            }else{
+                //处理业务编号为空的数据
+                info.setParentId(info.getId());
+                String parentIds = "0," + info.getId() + ",";
+                info.setParentIds(parentIds);
+                //info.preInsert();
+                invoiceInfoList.add(info);
+            }
+        }
+        for (AssessReimbursementDTO childrenInfo : invoiceInfoList) {
+            childrenInfo.preInsert();
+        }
+        //新增
+        mapper.insertInvoiceList(invoiceInfoList);
+
+        map.put("success", true);
+        map.put("message", "数据上传成功");
+        return map;
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void saveBusiness(AssessReimbursementDTO reimbursement) {
+        //获取当前年份
+        Calendar date = Calendar.getInstance();
+        String year = String.valueOf(date.get(Calendar.YEAR));
+        reimbursement.setYear(year);
+
+        if("1".equals(reimbursement.getRandomType())){
+
+            //根据id查询业务信息是否已经是随机生成的业务编码
+            AssessReimbursementDTO reimbursementInfo = mapper.queryBusinessById(reimbursement.getId());
+            if("1".equals(reimbursementInfo.getRandomType()) || StringUtils.isNotBlank(reimbursementInfo.getBusinessCode())){
+                return;
+            }
+
+            //根据id查询对应发票信息
+            List<String> parentIdList = Lists.newArrayList();
+            parentIdList.add(reimbursement.getId());
+            List<AssessReimbursementDTO> invoiceByParentIdList = mapper.getInvoiceByParentIdList(parentIdList);
+            if(invoiceByParentIdList.size()>0){
+                List<AssessReimbursementDTO> updateInvoiceData = Lists.newArrayList();
+                for (AssessReimbursementDTO invoiceInfo: invoiceByParentIdList) {
+                    synchronized (this){
+                        //生成随机业务编号
+                        //查询最后一个业务编号信息
+                        String lastRandomBusinessCodeIndex = mapper.getLastRandomBusinessCodeIndex(year);
+                        if(StringUtils.isBlank(lastRandomBusinessCodeIndex)){
+                            lastRandomBusinessCodeIndex = "0";
+                        }
+                        Integer randomBusinessCodeIndex = Integer.parseInt(lastRandomBusinessCodeIndex) + 1;
+                        reimbursement.setRandomBusinessCodeIndex(randomBusinessCodeIndex.toString());
+                        //将新的序列号进行向左补齐4位
+                        String padLeft = PublicUtil.padLeft(randomBusinessCodeIndex.toString(), 4, '0');
+                        //生成新的随机业务编号
+                        StringBuilder sbCode = new StringBuilder().append(year).append("-kjxm-").append(padLeft);
+                        reimbursement.setBusinessCode(sbCode.toString());
+                    }
+
+                    invoiceInfo.setBusinessCode(reimbursement.getBusinessCode());
+                    invoiceInfo.preUpdate();
+                    updateInvoiceData.add(invoiceInfo);
+                }
+                mapper.updateInvoiceList(updateInvoiceData);
+            }
+            reimbursement.preUpdate();
+            mapper.saveBusiness(reimbursement);
+        }else{
+            //查询该业务编码在数据库中是否存在(当年)
+            AssessReimbursementDTO infoByBusinessCode = mapper.getInfoByBusinessCode(reimbursement);
+            if(null != infoByBusinessCode){
+                //如果存在该业务编码 则将该业务编码对应的发票数据的父节点变更为已存在的业务编码的id信息
+                //根据id 查询对应的发票信息
+                List<String> parentIdList = Lists.newArrayList();
+                parentIdList.add(reimbursement.getId());
+                List<AssessReimbursementDTO> invoiceByParentIdList = mapper.getInvoiceByParentIdList(parentIdList);
+                if(invoiceByParentIdList.size()>0){
+                    List<AssessReimbursementDTO> updateInvoiceData = Lists.newArrayList();
+                    for (AssessReimbursementDTO invoiceInfo: invoiceByParentIdList) {
+                        invoiceInfo.setBusinessCode(infoByBusinessCode.getBusinessCode());
+                        invoiceInfo.setParentId(infoByBusinessCode.getId());
+                        invoiceInfo.setParentIds("0," + infoByBusinessCode.getId() + ",");
+                        invoiceInfo.preUpdate();
+                        updateInvoiceData.add(invoiceInfo);
+                    }
+                    mapper.updateInvoiceList(updateInvoiceData);
+                }
+                //删除该业务编码信息
+                mapper.deleteBusinessById(reimbursement.getId());
+            }else{
+                //根据id查询对应发票信息
+                List<String> parentIdList = Lists.newArrayList();
+                parentIdList.add(reimbursement.getId());
+                List<AssessReimbursementDTO> invoiceByParentIdList = mapper.getInvoiceByParentIdList(parentIdList);
+                if(invoiceByParentIdList.size()>0){
+                    List<AssessReimbursementDTO> updateInvoiceData = Lists.newArrayList();
+                    for (AssessReimbursementDTO invoiceInfo: invoiceByParentIdList) {
+                        invoiceInfo.setBusinessCode(reimbursement.getBusinessCode());
+                        invoiceInfo.preUpdate();
+                        updateInvoiceData.add(invoiceInfo);
+                    }
+                    mapper.updateInvoiceList(updateInvoiceData);
+                }
+                reimbursement.preUpdate();
+                mapper.saveBusiness(reimbursement);
+            }
+        }
+
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public Map<String,Object> saveGatheringTime(AssessReimbursementDTO reimbursement) {
+        Map<String,Object> map = new HashMap<String,Object>();
+        String[] idArray =reimbursement.getId().split(",");
+        ArrayList<String> idList = Lists.newArrayList(idArray);
+        //根据id查询发票是否已经填写过收款时间信息
+        List<AssessReimbursementDTO> invoiceList =  mapper.getGatheringTimeInvoiceList(idList);
+        if(invoiceList.size()>0){
+            List<String> invoiceNumber = Lists.newArrayList();
+            for (AssessReimbursementDTO invoice : invoiceList) {
+                invoiceNumber.add(invoice.getInvoiceNumber());
+            }
+            String invoiceNumberStr = StringUtils.join(invoiceNumber, ",");
+            map.put("message","发票号:" + invoiceNumberStr + " 已经填写过收款日期,无法重复填写。<br/> 本次收款操作失败");
+            map.put("success",false);
+            return map;
+        }
+        //修改发票收款时间
+        reimbursement.preUpdate();
+        mapper.updateGatheringTime(idList,reimbursement);
+
+        for (String id : idList) {
+            reimbursement.setBusinessCode(id);
+
+            //根据该条发票信息查询同业务编号下的没有收款的发票信息
+            List<AssessReimbursementDTO> notGatheringTimeInvoice = mapper.getNotGatheringTimeInvoice(reimbursement);
+            if(notGatheringTimeInvoice.size() == 0){
+                //查询该发票信息
+                AssessReimbursementDTO reimbursementDTO = mapper.queryInvoiceById(id);
+                //如果所有的发票均已收款,则将业务信息添加全部收款状态
+                if(null != reimbursementDTO){
+                    mapper.updateGatheringStatusById(reimbursementDTO.getParentId());
+                }
+            }
+        }
+
+
+        map.put("success",true);
+        map.put("message","收款成功");
+        return map;
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void saveInvoice(AssessReimbursementDTO reimbursement) {
+        reimbursement.preUpdate();
+        mapper.saveInvoice(reimbursement);
+        //根据该条发票信息查询同业务编号下的没有收款的发票信息
+        List<AssessReimbursementDTO> notGatheringTimeInvoice = mapper.getNotGatheringTimeInvoice(reimbursement);
+        if(notGatheringTimeInvoice.size() == 0){
+            //查询该发票信息
+            AssessReimbursementDTO reimbursementDTO = mapper.queryInvoiceById(reimbursement.getId());
+            //如果所有的发票均已收款,则将业务信息添加全部收款状态
+            mapper.updateGatheringStatusById(reimbursementDTO.getParentId());
+        }
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void modifyInvoice(AssessReimbursementDTO reimbursement) {
+        reimbursement.preUpdate();
+        mapper.modifyInvoice(reimbursement);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void removeByIds(List<String> idList) {
+        //删除业务信息
+        mapper.removeBusinessByIds(idList);
+        //删除发票信息
+        mapper.removeInvoiceByIds(idList);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void removeBusinessByIds(List<String> idList) {
+        if(idList.size()>0){
+            //删除业务信息
+            mapper.removeBusinessByIds(idList);
+            //删除发票信息
+            mapper.removeBusinessByParentIds(idList);
+            this.removeInvoiceByIds(idList);
+        }
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void removeInvoiceByIds(List<String> idList) {
+        //删除发票信息
+        if(idList.size()>0) {
+            mapper.removeInvoiceByIds(idList);
+            Set<String> set = new HashSet<>();
+            //遍历发票id查询对应得业务信息下是否存在有效的发票信息,若不存在,则将对应的业务信息同时删除
+            for (String id : idList) {
+                //查询该发票信息下是否存在有效的同级数据信息
+                String businessId = mapper.getValidBusinessIdByInvoiceId(id);
+
+                if (StringUtils.isBlank(businessId)) {
+                    AssessReimbursementDTO AssessReimbursementDTO = this.queryBusinessByInvoiceId(id);
+                    if (null != AssessReimbursementDTO) {
+                        set.add(AssessReimbursementDTO.getId());
+                    }
+                }
+            }
+            if (set.size() > 0) {
+                mapper.removeBusinessByIds(new ArrayList<>(set));
+            }
+        }
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public void updateReimbursementRatio(AssessReimbursementDTO reimbursement) {
+        mapper.updateReimbursementRatio(reimbursement);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public Map<String,Object> addBatchReimbursement(List<String> idList) {
+        Map<String,Object> map = new HashMap<String,Object>();
+        //根据发票id查询对应的发票信息
+        List<AssessReimbursementDTO> invoiceList = mapper.getInvoiceByIdList(idList);
+        if(invoiceList.size()>0){
+            String firstParentId = invoiceList.get(0).getParentId();
+            String firstParentIds = invoiceList.get(0).getParentIds();
+            Set<String> reimbursementIdSet = new HashSet<String>();
+            for (AssessReimbursementDTO info : invoiceList) {
+                reimbursementIdSet.add(info.getParentId());
+            }
+            reimbursementIdSet.remove(firstParentId);
+            //删除除第一个以外的所有业务信息
+            if(reimbursementIdSet.size()>0){
+                mapper.deleteBusinessByIdList(new ArrayList<>(reimbursementIdSet));
+            }
+            //将所有发票信息的父节点变更为存在的业务信息id
+            for (AssessReimbursementDTO info : invoiceList) {
+                info.setParentId(firstParentId);
+                info.setParentIds(firstParentIds);
+                info.setBatchFlag("1");
+                info.preUpdate();
+            }
+            //批量修改发票信息
+            mapper.updateInvoiceList(invoiceList);
+            //修改业务信息(添加状态)
+            AssessReimbursementDTO info = new AssessReimbursementDTO();
+            info.setId(firstParentId);
+            info.setBatchFlag("1");
+            info.preUpdate();
+            mapper.updateById(info);
+
+        } else {
+            map.put("success", false);
+            map.put("message", "未查询到符合条件的发票信息");
+        }
+        return map;
+    }
+
+    /**
+     * 文件数据分组
+     * @param dataList
+     * @return
+     */
+    public Map<String, List<AssessReimbursementDTO>> dataDisposeOnSaveByBusinessCode(List<AssessReimbursementDTO> dataList) {
+        Map<String, List<AssessReimbursementDTO>> result = listMapOnSaveByBusinessCode(dataList);
+        return result;
+    }
+
+    private Map<String, List<AssessReimbursementDTO>> listMapOnSaveByBusinessCode(List<AssessReimbursementDTO> list) {
+        Map<String, List<AssessReimbursementDTO>> userSignSerialMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            // 分组
+            for (AssessReimbursementDTO vo : list) {
+                List<AssessReimbursementDTO> tempList = userSignSerialMap.get(vo.getBusinessCode());
+                /*如果取不到数据,那么直接new一个空的ArrayList**/
+                if (tempList == null) {
+                    tempList = new ArrayList<>();
+                    tempList.add(vo);
+                    userSignSerialMap.put(vo.getBusinessCode(), tempList);
+                }
+                else {
+                    /*某个vo之前已经存放过了,则直接追加数据到原来的List里**/
+                    tempList.add(vo);
+                }
+            }
+        }
+        return userSignSerialMap;
+    }
+
+}

+ 435 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementAssess/service/impl/AssessReimbursementUserServiceImpl.java

@@ -0,0 +1,435 @@
+package com.jeeplus.test.reimbursementAssess.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.jeeplus.sys.service.OfficeService;
+import com.jeeplus.sys.service.UserService;
+import com.jeeplus.sys.service.dto.OfficeDTO;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.DictUtils;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.reimbursementAccountant.domain.dto.AccountantReimbursementBusinessDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessReturnDTO;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementUserDTO;
+import com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementBusinessMapper;
+import com.jeeplus.test.reimbursementAssess.mapper.AssessReimbursementUserMapper;
+import com.jeeplus.test.reimbursementAssess.service.AssessReimbursementUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.*;
+
+/**
+ * @author li-peike
+ * @version 1.0.0
+ * @ClassName ReimbursementSysServiceImpl.java
+ * @Description TODO
+ * @createTime 2022年05月06日 10:38:00
+ */
+@Service
+@Transactional(readOnly = true)
+public class AssessReimbursementUserServiceImpl implements AssessReimbursementUserService {
+
+    @Autowired
+    private AssessReimbursementUserMapper mapper;
+
+    @Autowired
+    private AssessReimbursementBusinessMapper businessMapper;
+
+    @Autowired
+    private OfficeService officeService;
+
+    @Autowired
+    private UserService userService;
+
+
+    @Override
+    public AssessReimbursementUserDTO queryById(String id) {
+        return mapper.queryById(id);
+    }
+
+    @Override
+    public AssessReimbursementUserDTO queryByUserIdAndYear(AssessReimbursementUserDTO reimbursementUser) {
+        return mapper.queryByUserIdAndYear(reimbursementUser);
+    }
+
+
+    @Override
+    public IPage<AssessReimbursementUserDTO> findList(Page<AssessReimbursementUserDTO> page, AssessReimbursementUserDTO reimbursementUser) {
+        IPage<AssessReimbursementUserDTO> pageList = mapper.findList(page, reimbursementUser);
+        List<AssessReimbursementUserDTO> list = pageList.getRecords();
+        pageList.setRecords(list);
+        return pageList;
+    }
+
+    /**
+     * 保存
+     * @param reimbursementUser
+     */
+    @Override
+    @Transactional(readOnly = false)
+    public Map<String,Object> save(AssessReimbursementUserDTO reimbursementUser) {
+        Map<String,Object> map = new HashMap<>();
+
+        if(StringUtils.isBlank(reimbursementUser.getUserId())){
+            map.put("success", false);
+            map.put("message", "报销人员为空,无法进行添加报销信息!");
+            return map;
+        }
+        if(StringUtils.isBlank(reimbursementUser.getYear())){
+            map.put("success", false);
+            map.put("message", "报销年份不正确,请重新填写!");
+            return map;
+        }
+
+        if(StringUtils.isBlank(reimbursementUser.getReimbursementQuotaDay())){
+            map.put("success", false);
+            map.put("message", "日报销额度填写不正确!");
+            return map;
+        }
+        if(null == reimbursementUser.getReimbursementAllDay()){
+            map.put("success", false);
+            map.put("message", "年可报销天数填写不正确!");
+            return map;
+        }
+        //日报销额度
+        BigDecimal reimbursementQuotaDay = new BigDecimal(reimbursementUser.getReimbursementQuotaDay());
+        //年可报销天数
+        BigDecimal reimbursementAllDay = new BigDecimal(reimbursementUser.getReimbursementAllDay());
+
+        //计算并赋值年报销额度
+        reimbursementUser.setReimbursementQuota(reimbursementQuotaDay.multiply(reimbursementAllDay).toString());
+
+        UserDTO user = UserUtils.get(reimbursementUser.getUserId());
+        if(StringUtils.isNotBlank(reimbursementUser.getId())){
+            reimbursementUser.preUpdate();
+            //新增
+            mapper.update(reimbursementUser);
+        }else{
+            //查询该用户该年度是否已经添加报销额度
+            AssessReimbursementUserDTO queryByUserIdAndYear = mapper.queryByUserIdAndYear(reimbursementUser);
+            if(null != queryByUserIdAndYear){
+                map.put("success", false);
+                map.put("message", user.getName() + " " + reimbursementUser.getYear() + "年度报销额度已添加,无法重复添加!");
+                return map;
+            }
+            reimbursementUser.preInsert();
+            //新增
+            mapper.save(reimbursementUser);
+        }
+
+        map.put("success", true);
+        map.put("message", user.getName() + " " + reimbursementUser.getYear() + "年度报销额度:" + reimbursementUser.getReimbursementQuota() +" 保存成功");
+        return map;
+    }
+
+
+    @Override
+    @Transactional(readOnly = false)
+    public void update(AssessReimbursementUserDTO reimbursementUser) {
+        mapper.update(reimbursementUser);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public Map<String,Object> delete(List<String> idList) {
+        Map<String, Object> map = new HashMap<>();
+        if(idList.size()>0) {
+            List<String> userName = Lists.newArrayList();
+            //删除发票信息
+            //判断该人员该年度是否已经存在报销情况,如存在则不可以删除
+            //根据id集合查询人员信息
+            for (String id : idList) {
+                AssessReimbursementUserDTO reimbursementUserDTO = mapper.queryById(id);
+                AssessReimbursementBusinessDTO reimbursementBusiness = new AssessReimbursementBusinessDTO();
+                reimbursementBusiness.setUserId(reimbursementUserDTO.getUserId());
+                reimbursementBusiness.setYear(reimbursementUserDTO.getYear());
+                List<AssessReimbursementBusinessDTO> list = businessMapper.findListByUserIdAndYear(reimbursementBusiness);
+                if (list.size() > 0) {
+                    userName.add(reimbursementUserDTO.getUser().getName());
+                }
+            }
+            if (userName.size() > 0) {
+                map.put("success", false);
+                String userNames = StringUtils.join(userName, "、");
+                map.put("message", "员工 " + userNames + " 存在已报销情况,本次删除失败");
+            } else {
+                mapper.delete(idList);
+                map.put("success", true);
+                map.put("message", "删除成功");
+            }
+        }else{
+            map.put("success", false);
+            map.put("message", "没有需要删除的数据");
+        }
+        return map;
+    }
+
+    @Override
+    public AssessReimbursementBusinessReturnDTO findListByUserId(AssessReimbursementUserDTO reimbursementUserDTO, AssessReimbursementBusinessReturnDTO reimbursementBusinessReturn) {
+        AssessReimbursementBusinessDTO reimbursementBusiness = new AssessReimbursementBusinessDTO();
+        reimbursementBusiness.setUserId(reimbursementUserDTO.getUserId());
+        reimbursementBusiness.setYear(reimbursementUserDTO.getYear());
+        List<AssessReimbursementBusinessDTO> list = businessMapper.findListByUserIdAndYear(reimbursementBusiness);
+
+        reimbursementBusiness.setBeginDate(reimbursementBusinessReturn.getBeginDate());
+        reimbursementBusiness.setEndDate(reimbursementBusinessReturn.getEndDate());
+        reimbursementBusiness.setBeginReimbursementQuota(reimbursementBusinessReturn.getBeginReimbursementQuota());
+        reimbursementBusiness.setEndReimbursementQuota(reimbursementBusinessReturn.getEndReimbursementQuota());
+
+        AssessReimbursementBusinessReturnDTO reimbursementBusinessReturnDTO = new AssessReimbursementBusinessReturnDTO();
+        List<AssessReimbursementBusinessDTO> showList = businessMapper.findListByUserIdAndYear(reimbursementBusiness);
+
+        //获取人员年度报销详情
+        AssessReimbursementUserDTO reimbursementUserInfo = mapper.queryByUserIdAndYear(reimbursementUserDTO);
+        reimbursementBusinessReturnDTO.setList(showList);
+        reimbursementBusinessReturnDTO.setReimbursementQuota(reimbursementUserInfo.getReimbursementQuota());
+
+        //已报销额度
+        BigDecimal alreadyReimbursementAmount = new BigDecimal("0");
+        //已报销天数
+        BigDecimal alreadyReimbursementDay = new BigDecimal("0");
+
+        for (AssessReimbursementBusinessDTO info : list) {
+            BigDecimal bigDecimal = new BigDecimal(info.getReimbursementAmount());
+            alreadyReimbursementAmount = alreadyReimbursementAmount.add(bigDecimal);
+            if("1".equals(info.getReimbursementType())){
+                alreadyReimbursementDay = alreadyReimbursementDay.add(new BigDecimal(info.getReimbursementDay()));
+            }
+            info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
+        }
+        if(null != reimbursementBusinessReturn.getBeginDate() || null != reimbursementBusinessReturn.getEndDate() || StringUtils.isNotBlank(reimbursementBusinessReturn.getBeginReimbursementQuota()) || StringUtils.isNotBlank(reimbursementBusinessReturn.getEndReimbursementQuota())){
+            for (AssessReimbursementBusinessDTO info : showList) {
+                info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
+            }
+        }
+        //剩余报销额度
+        reimbursementBusinessReturnDTO.setSurplusReimbursementAmount(new BigDecimal(reimbursementBusinessReturnDTO.getReimbursementQuota()).subtract(alreadyReimbursementAmount).toString());
+        //计算出可报销总天数
+        BigDecimal reimbursementDay = new BigDecimal("0");
+        if(null == reimbursementUserInfo.getReimbursementAllDay()){
+            reimbursementDay = new BigDecimal(reimbursementBusinessReturnDTO.getReimbursementQuota()).divide(new BigDecimal(reimbursementUserInfo.getReimbursementQuotaDay()),2, BigDecimal.ROUND_HALF_UP);
+        }else{
+            reimbursementDay = new BigDecimal(reimbursementUserInfo.getReimbursementAllDay());
+        }
+
+        //剩余报销天数
+        reimbursementBusinessReturnDTO.setSurplusReimbursementDay(reimbursementDay.subtract(alreadyReimbursementDay).toString());
+        //报销天数
+        reimbursementBusinessReturnDTO.setReimbursementDay(reimbursementDay.toString());
+        //已报销天数
+        reimbursementBusinessReturnDTO.setAlreadyReimbursementDay(alreadyReimbursementDay.toString());
+        //已报销额度
+        reimbursementBusinessReturnDTO.setAlreadyReimbursementAmount(alreadyReimbursementAmount.toString());
+        //日报销额度
+        reimbursementBusinessReturnDTO.setReimbursementQuotaDay(reimbursementUserInfo.getReimbursementQuotaDay());
+
+        return reimbursementBusinessReturnDTO;
+    }
+
+    @Override
+    public List<UserDTO> getUserByNameAndOfficeName(AssessReimbursementUserDTO reimbursementUserDTO) {
+        return mapper.getUserByNameAndOfficeName(reimbursementUserDTO);
+    }
+
+    @Override
+    @Transactional(readOnly = false)
+    public Map<String, Object> saveList(List<AssessReimbursementUserDTO> reimbursementUserList) {
+
+        List<AssessReimbursementUserDTO> saveList = Lists.newArrayList();
+        List<AssessReimbursementUserDTO> existList = Lists.newArrayList();
+        StringBuilder failureMsg = new StringBuilder ( );
+
+        Map<String,Object> map = new HashMap<>();
+        Map<String, List<AssessReimbursementUserDTO>> stringListMap = dataDispose(reimbursementUserList);
+        if(reimbursementUserList.size() != stringListMap.size()){
+            map.put("success", false);
+            map.put("message", "报销人员中存在重复项,无法进行导入!");
+            return map;
+        }
+
+
+        for (AssessReimbursementUserDTO reimbursementUser: reimbursementUserList) {
+            if(StringUtils.isBlank(reimbursementUser.getYear())){
+                map.put("success", false);
+                map.put("message", reimbursementUser.getUserName() + " 的报销年份不正确,请重新填写!");
+                return map;
+            }
+            if(StringUtils.isBlank(reimbursementUser.getReimbursementQuotaDay())){
+                map.put("success", false);
+                map.put("message", reimbursementUser.getUserName() + " 的日报销额度填写不正确!");
+                return map;
+            }
+            if(null == reimbursementUser.getReimbursementAllDay()){
+                map.put("success", false);
+                map.put("message", reimbursementUser.getUserName() + " 的年可报销天数填写不正确!");
+                return map;
+            }
+            //日报销额度
+            BigDecimal reimbursementQuotaDay = new BigDecimal(reimbursementUser.getReimbursementQuotaDay());
+            //年可报销天数
+            BigDecimal reimbursementAllDay = new BigDecimal(reimbursementUser.getReimbursementAllDay());
+
+            //计算并赋值年报销额度
+            reimbursementUser.setReimbursementQuota(reimbursementQuotaDay.multiply(reimbursementAllDay).toString());
+
+            //根据用户id和年份查询报数员工库表中是否存在数据
+            //如果有,则将其从list列表中剔除
+            AssessReimbursementUserDTO reimbursementUserDTOS = mapper.queryByUserIdAndYear(reimbursementUser);
+            if(null != reimbursementUserDTOS){
+                existList.add(reimbursementUser);
+            }else{
+                reimbursementUser.preInsert();
+                saveList.add(reimbursementUser);
+            }
+
+        }
+
+
+        //新增
+        if(saveList.size()>0){
+            mapper.saveList(saveList);
+        }
+
+        if(existList.size()>0){
+            for (AssessReimbursementUserDTO user : existList) {
+                failureMsg.append ( "。 " + user.getOfficeName() + " 部门下的员工 " + user.getUserName() + " 已添加,无法再次添加;" );
+            }
+        }
+
+        map.put("success", true);
+        map.put("saveCount", saveList.size());
+        map.put("message", failureMsg);
+
+        return map;
+    }
+
+
+
+
+    @Override
+    @Transactional(readOnly = false)
+    public Map<String, Object> initialize(String officeName) {
+        Map<String,Object> map = new HashMap<>();
+        //根据部门名称  查询所属部门
+        List<OfficeDTO> officeListByOfficeName = officeService.getOfficeAllByOfficeName(officeName);
+        //如果不存在该部门,则进行抛出
+        if(officeListByOfficeName.size() == 0){
+            map.put("success", false);
+            map.put("message", "未查询到部门信息。");
+            return map;
+        }
+        //查询部门下所有有效人员信息
+        List<String> officeIds = Lists.newArrayList();
+        for (OfficeDTO office : officeListByOfficeName) {
+            officeIds.add(office.getId());
+        }
+        List<UserDTO> officeUserList = userService.getUserByOfficeIds(officeIds);
+        //根据部门人员查询数据库中已存在的人员信息
+        if(officeUserList.size()>0){
+            List<String> userIdList = Lists.newArrayList();
+            for (UserDTO user : officeUserList) {
+                userIdList.add(user.getId());
+            }
+            //获取当前年份
+            Calendar date = Calendar.getInstance();
+            String year = String.valueOf(date.get(Calendar.YEAR));
+
+            //根据人员id集合和年份查询已存在的人员信息
+            List<AssessReimbursementUserDTO> existReimbursementUserList = mapper.getExistReimbursementUserList(userIdList, year);
+
+            //排除已存在的人员信息
+            for (AssessReimbursementUserDTO existReimbursementUser: existReimbursementUserList) {
+                Iterator iterator = officeUserList.iterator();
+                while (iterator.hasNext()) {
+                    UserDTO data = (UserDTO) iterator.next();
+                    if (existReimbursementUser.getUserId().equals(data.getId())){
+                        iterator.remove();
+                        break;
+                    }
+                }
+            }
+
+            if(officeUserList.size()>0){
+                //获取日报销额度
+                String reimbursementQuotaDay = DictUtils.getDictLabel("1", "reimbursement_quota_day", null);
+                //获取当年度的总天数
+                int yearDay = LocalDate.now().lengthOfYear();
+                //获取年度休假天数
+                String holidayDay = DictUtils.getDictLabel("1", "reimbursement_holiday_day", null);
+                Integer reimbursementAllDay = yearDay;
+                if(StringUtils.isNotBlank(holidayDay)){
+                    int i = Integer.parseInt(holidayDay);
+                    reimbursementAllDay = yearDay - Integer.parseInt(holidayDay);
+                }
+                //日报销额度
+                BigDecimal reimbursementQuotaDayB = new BigDecimal(reimbursementQuotaDay);
+                //年可报销天数
+                BigDecimal reimbursementAllDayB = new BigDecimal(reimbursementAllDay);
+                //计算并赋值年报销额度
+                BigDecimal reimbursementQuotaB = reimbursementQuotaDayB.multiply(reimbursementAllDayB);
+
+
+
+                List<AssessReimbursementUserDTO> userInfoList = Lists.newArrayList();
+
+                //将不存在数据库中的人员信息进行批量添加
+                for (UserDTO user : officeUserList) {
+                    AssessReimbursementUserDTO userInfo = new AssessReimbursementUserDTO();
+                    userInfo.setYear(year);
+                    userInfo.setUserId(user.getId());
+                    userInfo.setReimbursementQuotaDay(reimbursementQuotaDay);
+                    userInfo.setReimbursementAllDay(reimbursementAllDay);
+                    userInfo.setReimbursementQuota(reimbursementQuotaB.toString());
+                    userInfo.preInsert();
+                    userInfoList.add(userInfo);
+                }
+                mapper.saveList(userInfoList);
+            }
+        }
+        map.put("success", true);
+        map.put("message", "人员初始化成功");
+
+        return map;
+    }
+
+
+    /**
+     * 文件数据分组
+     * @param dataList
+     * @return
+     */
+    public Map<String, List<AssessReimbursementUserDTO>> dataDispose(List<AssessReimbursementUserDTO> dataList) {
+        Map<String, List<AssessReimbursementUserDTO>> result = listMap(dataList);
+        return result;
+    }
+
+    private Map<String, List<AssessReimbursementUserDTO>> listMap(List<AssessReimbursementUserDTO> list) {
+        Map<String, List<AssessReimbursementUserDTO>> userSignSerialMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            // 分组
+            for (AssessReimbursementUserDTO vo : list) {
+                List<AssessReimbursementUserDTO> tempList = userSignSerialMap.get(vo.getKeyFlag());
+                /*如果取不到数据,那么直接new一个空的ArrayList**/
+                if (tempList == null) {
+                    tempList = new ArrayList<>();
+                    tempList.add(vo);
+                    userSignSerialMap.put(vo.getKeyFlag(), tempList);
+                }
+                else {
+                    /*某个vo之前已经存放过了,则直接追加数据到原来的List里**/
+                    tempList.add(vo);
+                }
+            }
+        }
+        return userSignSerialMap;
+    }
+
+}

+ 1 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/ProjectReimbursementBusinessTwoMapper.java

@@ -18,7 +18,7 @@ public interface ProjectReimbursementBusinessTwoMapper extends BaseMapper<Projec
      * 分页查询
      */
     IPage<ProjectReimbursementBusinessTwoDTO> findListPage(Page<ProjectReimbursementBusinessTwoDTO> page,
-                                                              @Param("ProjectReimbursementBusiness")ProjectReimbursementBusinessTwoDTO ProjectReimbursementBusiness);
+                                                              @Param("projectReimbursementBusiness")ProjectReimbursementBusinessTwoDTO ProjectReimbursementBusiness);
 
     /**
      * 物理删除

+ 16 - 16
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/xml/ProjectReimbursementBusinessMapper.xml

@@ -42,7 +42,7 @@
     <select id="findList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementUserDTO">
         SELECT
             <include refid="reimbursementUserColumns"/>
-        FROM zs_reimbursement_user_Project_info a
+        FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0
@@ -59,7 +59,7 @@
     <select id="getYearList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementUserDTO">
         SELECT
             <include refid="reimbursementUserColumns"/>
-        FROM zs_reimbursement_user_Project_info a
+        FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0
@@ -75,7 +75,7 @@
             a.year as year,
             ifnull(sum(a.reimbursement_amount),0) as alreadyReimbursementAmount,
             ifnull(sum(a.reimbursement_day),0) as alreadyReimbursementDay
-        FROM zs_reimbursement_business_Project_info a
+        FROM zs_reimbursement_business_project_info a
         <where>
             a.del_flag = 0
             and a.user_id = #{userId}
@@ -89,7 +89,7 @@
     <select id="reimbursementUserByUserIdAndYear" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementUserDTO">
         SELECT
             <include refid="reimbursementUserColumns"/>
-        FROM zs_reimbursement_user_Project_info a
+        FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0
@@ -99,7 +99,7 @@
     </select>
 
     <insert id="save">
-        insert into zs_reimbursement_business_Project_info (
+        insert into zs_reimbursement_business_project_info (
             id,
             create_by,
             create_date,
@@ -137,7 +137,7 @@
     </insert>
 
     <update id="update">
-        update zs_reimbursement_user_Project_info
+        update zs_reimbursement_user_project_info
         set
             update_by = #{updateBy}
             ,update_date = #{updateDate}
@@ -158,7 +158,7 @@
     <select id="queryById" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementBusinessDTO">
         SELECT
         <include refid="reimbursementUserColumns"/>
-            FROM zs_reimbursement_user_Project_info a
+            FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0
@@ -169,7 +169,7 @@
     <select id="queryByUserIdAndYear" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementUserDTO">
         SELECT
         <include refid="reimbursementUserColumns"/>
-            FROM zs_reimbursement_user_Project_info a
+            FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0
@@ -179,7 +179,7 @@
     </select>
 
     <delete id="delete">
-        delete from zs_reimbursement_user_Project_info
+        delete from zs_reimbursement_user_project_info
         <where>
             <if test="idList != null and idList.size>0">
                 and id in
@@ -192,7 +192,7 @@
 
     <select id="getAlreadyReimbursementQuotaByUserIdAndYear" resultType="java.lang.String">
         select ifnull(sum(a.reimbursement_amount),0)
-        from zs_reimbursement_business_Project_info a
+        from zs_reimbursement_business_project_info a
         where a.del_flag = 0
         and a.user_id= #{userId}
         and a.year = #{year}
@@ -201,14 +201,14 @@
 
     <select id="getAlreadyReimbursementQuotaByBusinessCodeId" resultType="java.lang.String">
         select ifnull(sum(a.reimbursement_amount),0)
-        from zs_reimbursement_business_Project_info a
+        from zs_reimbursement_business_project_info a
         where a.del_flag = 0
         and a.business_code_id= #{businessCodeId}
     </select>
 
     <select id="getGatheringStatusById" resultType="java.lang.String">
         select a.gathering_status
-        from zs_reimbursement_Project_info a
+        from zs_reimbursement_project_info a
         where a.del_flag = 0
         and a.id= #{businessCodeId}
     </select>
@@ -218,7 +218,7 @@
     <select id="findListByBusinessCodeId" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementBusinessDTO">
         SELECT
         <include refid="reimbursementBusinessColumns"/>
-        FROM zs_reimbursement_business_Project_info a
+        FROM zs_reimbursement_business_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0
@@ -232,9 +232,9 @@
         SELECT
         <include refid="reimbursementBusinessColumns"/>
         ,zri.business_code as "businessCode"
-        FROM zs_reimbursement_business_Project_info a
+        FROM zs_reimbursement_business_project_info a
         <include refid="reimbursementUserJoinColumns"/>
-        left join zs_reimbursement_Project_info zri on zri.id = a.business_code_id
+        left join zs_reimbursement_project_info zri on zri.id = a.business_code_id
         <where>
             a.del_flag = 0
             and a.user_id = #{userId}
@@ -257,7 +257,7 @@
     </select>
 
     <update id="updateReimbursementInfo">
-        update zs_reimbursement_Project_info
+        update zs_reimbursement_project_info
         set reimbursement_status = #{reimbursementStatus}
         where id = #{id}
     </update>

+ 13 - 13
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/xml/ProjectReimbursementBusinessTwoMapper.xml

@@ -36,7 +36,7 @@
         left join sys_user su on su.id = a.user_id
     </sql>
     <insert id="insertProjectReimbursementBusiness">
-        insert into zs_reimbursement_business_Project_info
+        insert into zs_reimbursement_business_project_info
         (
                     id,
             create_by,
@@ -78,15 +78,15 @@
             resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementBusinessTwoDTO">
         select
         <include refid="joinZsReimbursementBusinessProjectInfoColumns"/>
-        from zs_reimbursement_business_Project_info a
+        from zs_reimbursement_business_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0 and (a.business_code_id='' or a.business_code_id=null)
-            <if test="ProjectReimbursementBusiness.year != null and ProjectReimbursementBusiness.year != ''">
-                and a.year like concat('%',#{ProjectReimbursementBusiness.year},'%')
+            <if test="projectReimbursementBusiness.year != null and projectReimbursementBusiness.year != ''">
+                and a.year like concat('%',#{projectReimbursementBusiness.year},'%')
             </if>
-            <if test="ProjectReimbursementBusiness.userId != null and ProjectReimbursementBusiness.userId != ''">
-                and a.user_id = #{ProjectReimbursementBusiness.userId}
+            <if test="projectReimbursementBusiness.userId != null and projectReimbursementBusiness.userId != ''">
+                and a.user_id = #{projectReimbursementBusiness.userId}
             </if>
         </where>
         order by a.update_date desc,a.year desc, a.user_id asc
@@ -94,15 +94,15 @@
     <select id="findSelectList"
             resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
 
-        select id,business_code as businessCode from zs_reimbursement_Project_info where business_code is not null and business_code != '' group by business_code
+        select id,business_code as businessCode from zs_reimbursement_project_info where business_code is not null and business_code != '' group by business_code
     </select>
     <select id="findSelectYearList" resultType="java.lang.String">
-        SELECT year FROM `zs_reimbursement_Project_info` GROUP BY `year` order by `year` desc
+        SELECT year FROM `zs_reimbursement_project_info` GROUP BY `year` order by `year` desc
     </select>
     <select id="findSelectCodeListByYear"
             resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         select id,business_code as businessCode
-        from zs_reimbursement_Project_info
+        from zs_reimbursement_project_info
         where year = #{year} and business_code is not null and business_code != '' and reimbursement_ratio is not null and reimbursement_ratio !=''
         group by business_code
     </select>
@@ -110,18 +110,18 @@
             resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementBusinessTwoDTO">
         select
         <include refid="zsReimbursementBusinessProjectInfoColumns"/>
-        from zs_reimbursement_business_Project_info a
+        from zs_reimbursement_business_project_info a
         where id=#{id}
     </select>
 
 
     <delete id="delPhysicsById">
-        delete from zs_reimbursement_business_Project_info
+        delete from zs_reimbursement_business_project_info
         where id = #{id}
     </delete>
 
     <delete id="deleteByList">
-        delete from zs_reimbursement_business_Project_info
+        delete from zs_reimbursement_business_project_info
         <where>
             <if test="idList != null and idList.size>0">
                 and id in
@@ -133,7 +133,7 @@
     </delete>
 
     <update id="modifyBindCode">
-        update zs_reimbursement_business_Project_info
+        update zs_reimbursement_business_project_info
         set
                 business_code_id=#{businessCode}
         where id=#{ids}

+ 38 - 38
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/xml/ProjectReimbursementSysMapper.xml

@@ -35,8 +35,8 @@
     <select id="findList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
         <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_invoice_Project_info a
-        left join zs_reimbursement_Project_info b on a.parent_id = b.id
+        FROM zs_reimbursement_invoice_project_info a
+        left join zs_reimbursement_project_info b on a.parent_id = b.id
         <where>
             a.del_flag = 0
             and a.batch_flag = 0
@@ -56,7 +56,7 @@
     <select id="queryAllList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
             <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_Project_info a
+        FROM zs_reimbursement_project_info a
         <where>
             a.del_flag = 0
             <if test="reimbursement.businessCode != null and reimbursement.businessCode != ''">
@@ -75,7 +75,7 @@
     <select id="getInvoiceList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
             <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             <if test="invoiceNumber != null and invoiceNumber != ''">
@@ -94,7 +94,7 @@
     <select id="getInvoiceByIdList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
             <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             <if test="idList != null and idList.size>0">
@@ -110,7 +110,7 @@
     <select id="getReceiptInvoiceIncomeByReimbursementId" resultType="java.lang.String">
         SELECT
             ifnull(sum(a.income),0) as "income"
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             and a.parent_id =#{parentId}
@@ -122,7 +122,7 @@
     <select id="getReimbursementRatioByReimbursementId" resultType="java.lang.String">
         SELECT
             a.reimbursement_ratio as "reimbursementRatio"
-        FROM zs_reimbursement_Project_info a
+        FROM zs_reimbursement_project_info a
         <where>
             a.del_flag = 0
             and a.id =#{id}
@@ -133,7 +133,7 @@
     <select id="getInvoiceByParentIdList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
             <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             <if test="parentIdList.size>0">
@@ -149,7 +149,7 @@
     <select id="selectOldInvoiceNumber" resultType="java.lang.String">
         SELECT
             a.invoice_number as "invoiceNumber"
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             <if test="invoiceNumberList.size>0">
@@ -164,7 +164,7 @@
     <select id="selectOldBusinessCode" resultType="java.lang.String">
         SELECT
             a.business_code
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             <if test="businessCodeList.size>0">
@@ -179,7 +179,7 @@
     <select id="selectOldBusinessCodeByInfo" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
             a.id,a.business_code
-        FROM zs_reimbursement_Project_info a
+        FROM zs_reimbursement_project_info a
         <where>
             a.del_flag = 0
             <if test="businessCodeList.size>0">
@@ -193,7 +193,7 @@
     </select>
 
     <insert id="insertBusinessCodeList">
-        insert into zs_reimbursement_Project_info (
+        insert into zs_reimbursement_project_info (
           id,
           create_by,
           create_date,
@@ -224,7 +224,7 @@
     </insert>
 
     <insert id="insertInvoiceList">
-        insert into zs_reimbursement_invoice_Project_info (
+        insert into zs_reimbursement_invoice_project_info (
             id,
             create_by,
             create_date,
@@ -279,7 +279,7 @@
     <select id="queryBusinessById" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
         <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_Project_info a
+        FROM zs_reimbursement_project_info a
         <where>
             a.del_flag = 0
             and a.id = #{id}
@@ -289,17 +289,17 @@
     <select id="queryBusinessByInvoiceId" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
         <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_Project_info a
+        FROM zs_reimbursement_project_info a
         <where>
             a.del_flag = 0
-            and a.id = (select parent_id from zs_reimbursement_invoice_Project_info where id = #{id})
+            and a.id = (select parent_id from zs_reimbursement_invoice_project_info where id = #{id})
         </where>
     </select>
 
     <select id="queryInvoiceById" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
         <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             and a.id = #{id}
@@ -307,7 +307,7 @@
     </select>
 
     <update id="saveBusiness">
-        update zs_reimbursement_Project_info
+        update zs_reimbursement_project_info
         set
             update_by = #{updateBy},
             update_date = #{updateDate},
@@ -323,7 +323,7 @@
     </update>
 
     <update id="saveInvoice">
-        update zs_reimbursement_invoice_Project_info
+        update zs_reimbursement_invoice_project_info
         set
             update_by = #{updateBy},
             update_date = #{updateDate},
@@ -333,7 +333,7 @@
     </update>
 
     <update id="modifyInvoice">
-        update zs_reimbursement_invoice_Project_info
+        update zs_reimbursement_invoice_project_info
         set
             update_by = #{updateBy},
             update_date = #{updateDate}
@@ -348,7 +348,7 @@
     </update>
 
     <update id="updateById">
-        update zs_reimbursement_Project_info
+        update zs_reimbursement_project_info
         set
             update_by = #{updateBy},
             update_date = #{updateDate}
@@ -362,7 +362,7 @@
     <select id="getInfoByBusinessCode" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
         <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_Project_info a
+        FROM zs_reimbursement_project_info a
         <where>
             a.del_flag = 0
             and a.business_code = #{businessCode}
@@ -374,7 +374,7 @@
 
     <update id="updateInvoiceList">
         <foreach collection="invoiceInfoList" item="item" index="index" open="" close="" separator=";">
-            update zs_reimbursement_invoice_Project_info
+            update zs_reimbursement_invoice_project_info
             <set >
                     update_by = #{item.updateBy}
                     ,update_date = #{item.updateDate}
@@ -396,13 +396,13 @@
     </update>
 
     <delete id="deleteBusinessById">
-        delete from zs_reimbursement_Project_info
+        delete from zs_reimbursement_project_info
         where
             id = #{id}
     </delete>
 
     <delete id="deleteBusinessByIdList">
-        delete from zs_reimbursement_Project_info
+        delete from zs_reimbursement_project_info
         <where>
             <if test="idList != null and idList.size>0">
                 and id in
@@ -414,7 +414,7 @@
     </delete>
 
     <update id="removeBusinessByIds">
-        update zs_reimbursement_Project_info
+        update zs_reimbursement_project_info
         set
             del_flag = 1
         <where>
@@ -428,7 +428,7 @@
     </update>
 
     <update id="removeBusinessByParentIds">
-        update zs_reimbursement_invoice_Project_info
+        update zs_reimbursement_invoice_project_info
         set
         del_flag = 1
         <where>
@@ -442,7 +442,7 @@
     </update>
 
     <update id="removeInvoiceByIds">
-        update zs_reimbursement_invoice_Project_info
+        update zs_reimbursement_invoice_project_info
         set
         del_flag = 1
         <where>
@@ -456,15 +456,15 @@
     </update>
 
     <select id="getValidBusinessIdByInvoiceId" resultType="java.lang.String">
-        select parent_id from zs_reimbursement_invoice_Project_info
+        select parent_id from zs_reimbursement_invoice_project_info
         where parent_id = (
-        select parent_id from zs_reimbursement_invoice_Project_info
+        select parent_id from zs_reimbursement_invoice_project_info
         where id = #{id}
         ) and del_flag = 0 limit 1
     </select>
 
     <update id="updateReimbursementRatio">
-        update zs_reimbursement_Project_info
+        update zs_reimbursement_project_info
         set
         reimbursement_ratio = #{reimbursementRatio}
         <where>
@@ -475,7 +475,7 @@
     <select id="getGatheringTimeInvoiceList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
         <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             <if test="idList != null and idList.size>0">
@@ -492,11 +492,11 @@
     <select id="getNotGatheringTimeInvoice" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
         <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             and business_code = (
-            select business_code from zs_reimbursement_invoice_Project_info where id = #{businessCode}
+            select business_code from zs_reimbursement_invoice_project_info where id = #{businessCode}
             ) and gathering_time is null
         </where>
         order by a.invoice_number
@@ -504,7 +504,7 @@
 
     <update id="updateGatheringTime">
         <foreach collection="idList" item="id" index="index" open="" close="" separator=";">
-            update zs_reimbursement_invoice_Project_info
+            update zs_reimbursement_invoice_project_info
             <set >
                 update_by = #{reimbursement.updateBy}
                 ,update_date = #{reimbursement.updateDate}
@@ -515,7 +515,7 @@
     </update>
 
     <update id="updateGatheringStatusById">
-        update zs_reimbursement_Project_info
+        update zs_reimbursement_project_info
         set gathering_status = 1
         where id = #{id}
     </update>
@@ -525,7 +525,7 @@
     <select id="getNotGatheringTimeInvoiceBybusinessCodeId" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO">
         SELECT
         <include refid="reimbursementColumns"/>
-        FROM zs_reimbursement_invoice_Project_info a
+        FROM zs_reimbursement_invoice_project_info a
         <where>
             a.del_flag = 0
             and parent_id = #{businessCodeId}
@@ -536,7 +536,7 @@
 
     <select id="getLastRandomBusinessCodeIndex" resultType="java.lang.String">
         select ifnull(max(random_business_code_index),0) as randomBusinessCodeIndex
-        from zs_reimbursement_Project_info
+        from zs_reimbursement_project_info
         <where>
             year = #{year}
         </where>

+ 9 - 9
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/mapper/xml/ProjectReimbursementUserMapper.xml

@@ -67,10 +67,10 @@
         ifnull(sum(zrbi.reimbursement_amount),0) as "alreadyReimbursementAmount",
         ifnull((a.reimbursement_quota - ifnull(sum(zrbi.reimbursement_amount),0)),0) as "remainReimbursementAmount",
         ifnull(( CONVERT ( a.reimbursement_quota / a.reimbursement_quota_day, DECIMAL ( 15, 2 )) - ifnull(sum( zrbi.reimbursement_day ),0)), 0 ) AS "surplusReimbursementDay"
-        FROM zs_reimbursement_user_Project_info a
+        FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         left join sys_office so on so.id = su.office_id
-        LEFT JOIN zs_reimbursement_business_Project_info zrbi ON zrbi.user_id = a.user_id and zrbi.year = a.year
+        LEFT JOIN zs_reimbursement_business_project_info zrbi ON zrbi.user_id = a.user_id and zrbi.year = a.year
         <where>
             a.del_flag = 0
             <if test="reimbursementUser.year != null and reimbursementUser.year != ''">
@@ -99,7 +99,7 @@
     </select>
 
     <insert id="save">
-        insert into zs_reimbursement_user_Project_info (
+        insert into zs_reimbursement_user_project_info (
             id,
             create_by,
             create_date,
@@ -131,7 +131,7 @@
     </insert>
 
     <insert id="saveList">
-        insert into zs_reimbursement_user_Project_info (
+        insert into zs_reimbursement_user_project_info (
         id,
         create_by,
         create_date,
@@ -166,7 +166,7 @@
 
 
     <update id="update">
-        update zs_reimbursement_user_Project_info
+        update zs_reimbursement_user_project_info
         set
             update_by = #{updateBy}
             ,update_date = #{updateDate}
@@ -190,7 +190,7 @@
     <select id="queryById" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementUserDTO">
         SELECT
         <include refid="reimbursementUserColumns"/>
-            FROM zs_reimbursement_user_Project_info a
+            FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0
@@ -201,7 +201,7 @@
     <select id="queryByUserIdAndYear" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementUserDTO">
         SELECT
         <include refid="reimbursementUserColumns"/>
-            FROM zs_reimbursement_user_Project_info a
+            FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0
@@ -212,7 +212,7 @@
     </select>
 
     <delete id="delete">
-        delete from zs_reimbursement_user_Project_info
+        delete from zs_reimbursement_user_project_info
         <where>
             <if test="idList != null and idList.size>0">
                 and id in
@@ -239,7 +239,7 @@
     <select id="getExistReimbursementUserList" resultType="com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementUserDTO">
         SELECT
         <include refid="reimbursementUserColumns"/>
-        FROM zs_reimbursement_user_Project_info a
+        FROM zs_reimbursement_user_project_info a
         <include refid="reimbursementUserJoinColumns"/>
         <where>
             a.del_flag = 0

+ 4 - 4
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/service/impl/ProjectReimbursementSysServiceImpl.java

@@ -48,12 +48,12 @@ public class ProjectReimbursementSysServiceImpl implements ProjectReimbursementS
     @Override
     public ProjectReimbursementDTO queryBusinessByInvoiceId(String id) {
         //根据发票id查询业务具体信息
-        ProjectReimbursementDTO ProjectReimbursementDTO = mapper.queryBusinessByInvoiceId(id);
+        ProjectReimbursementDTO projectReimbursementDTO = mapper.queryBusinessByInvoiceId(id);
         //如果没有随即类型,则将随即类型默认为非随机(即指定业务编码)
-        if(StringUtils.isBlank(ProjectReimbursementDTO.getRandomType())){
-            ProjectReimbursementDTO.setRandomType("0");
+        if(null != projectReimbursementDTO && StringUtils.isBlank(projectReimbursementDTO.getRandomType())){
+            projectReimbursementDTO.setRandomType("0");
         }
-        return ProjectReimbursementDTO;
+        return projectReimbursementDTO;
     }
 
     @Override

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementProject/service/impl/ProjectReimbursementUserServiceImpl.java

@@ -204,6 +204,11 @@ public class ProjectReimbursementUserServiceImpl implements ProjectReimbursement
             }
             info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
         }
+        if(null != reimbursementBusinessReturn.getBeginDate() || null != reimbursementBusinessReturn.getEndDate() || StringUtils.isNotBlank(reimbursementBusinessReturn.getBeginReimbursementQuota()) || StringUtils.isNotBlank(reimbursementBusinessReturn.getEndReimbursementQuota())){
+            for (ProjectReimbursementBusinessDTO info : showList) {
+                info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
+            }
+        }
         //剩余报销额度
         reimbursementBusinessReturnDTO.setSurplusReimbursementAmount(new BigDecimal(reimbursementBusinessReturnDTO.getReimbursementQuota()).subtract(alreadyReimbursementAmount).toString());
         //计算出可报销总天数

+ 12 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementsys/mapper/ReimbursementSysMapper.java

@@ -141,6 +141,7 @@ public interface ReimbursementSysMapper  extends BaseMapper<ReimbursementDTO> {
      */
     void removeBusinessByIds(@Param("idList")List<String> idList);
 
+
     /**
      * 删除发票信息(逻辑删除)
      * @param idList
@@ -193,4 +194,15 @@ public interface ReimbursementSysMapper  extends BaseMapper<ReimbursementDTO> {
      * @return
      */
     String getLastRandomBusinessCodeIndex(String year);
+
+    /**
+     * 查询该发票信息下是否存在有效的同级数据信息
+     * @param id
+     */
+    String getValidBusinessIdByInvoiceId(String id);
+    /**
+     * 删除业务信息(逻辑删除)
+     * @param id
+     */
+    void removeBusinessById(String id);
 }

+ 14 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementsys/mapper/xml/ReimbursementSysMapper.xml

@@ -472,4 +472,18 @@
             year = #{year}
         </where>
     </select>
+
+    <select id="getValidBusinessIdByInvoiceId" resultType="java.lang.String">
+        select parent_id from zs_reimbursement_invoice_info
+        where parent_id = (
+        select parent_id from zs_reimbursement_invoice_info
+        where id = #{id}
+        ) and del_flag = 0 limit 1
+    </select>
+
+    <update id="removeBusinessById">
+        update zs_reimbursement_info
+        set del_flag = 1
+        where id = (select parent_id from zs_reimbursement_invoice_info where id = #{id})
+    </update>
 </mapper>

+ 11 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementsys/service/impl/ReimbursementSysServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
 import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.reimbursementProject.domain.dto.ProjectReimbursementDTO;
 import com.jeeplus.test.reimbursementsys.domain.dto.ReimbursementDTO;
 import com.jeeplus.test.reimbursementsys.mapper.ReimbursementSysMapper;
 import com.jeeplus.test.reimbursementsys.service.ReimbursementBusinessService;
@@ -463,9 +464,18 @@ public class ReimbursementSysServiceImpl implements ReimbursementSysService {
     @Override
     public void removeInvoiceByIds(List<String> idList) {
 
+        //删除发票信息
         if(idList.size()>0) {
-            //删除发票信息
             mapper.removeInvoiceByIds(idList);
+            Set<String> set = new HashSet<>();
+            //遍历发票id查询对应得业务信息下是否存在有效的发票信息,若不存在,则将对应的业务信息同时删除
+            for (String id : idList) {
+                //查询该发票信息下是否存在有效的同级数据信息
+                String businessId = mapper.getValidBusinessIdByInvoiceId(id);
+                if(StringUtils.isBlank(businessId)){
+                    mapper.removeBusinessById(id);
+                }
+            }
         }
     }
 

+ 7 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/reimbursementsys/service/impl/ReimbursementUserServiceImpl.java

@@ -10,6 +10,7 @@ import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.utils.DictUtils;
 import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.reimbursementAssess.domain.dto.AssessReimbursementBusinessDTO;
 import com.jeeplus.test.reimbursementsys.domain.dto.*;
 import com.jeeplus.test.reimbursementsys.mapper.ReimbursementBusinessMapper;
 import com.jeeplus.test.reimbursementsys.mapper.ReimbursementUserMapper;
@@ -238,6 +239,12 @@ public class ReimbursementUserServiceImpl implements ReimbursementUserService {
             }
             info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
         }
+        if(null != reimbursementBusinessReturn.getBeginDate() || null != reimbursementBusinessReturn.getEndDate() || StringUtils.isNotBlank(reimbursementBusinessReturn.getReimbursementAddress()) ||
+                StringUtils.isNotBlank(reimbursementBusinessReturn.getBeginReimbursementQuota()) || StringUtils.isNotBlank(reimbursementBusinessReturn.getEndReimbursementQuota())){
+            for (ReimbursementBusinessDTO info : showList) {
+                info.setReimbursementType(DictUtils.getDictLabel(info.getReimbursementType(), "reimbursement_type", null));
+            }
+        }
         //剩余报销额度
         reimbursementBusinessReturnDTO.setSurplusReimbursementAmount(new BigDecimal(reimbursementBusinessReturnDTO.getReimbursementQuota()).subtract(alreadyReimbursementAmount).toString());
         //计算出可报销总天数