Browse Source

苏州报销

sangwenwei 1 year ago
parent
commit
ff3db5e25e

+ 21 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reimbursementApproval/approvalInfo/controller/CwReimbursementInfoController.java

@@ -78,6 +78,27 @@ public class CwReimbursementInfoController {
     }
 
     /**
+     * 列表查询(苏州分布杨忆湄报销列表)
+     * @param dto/reimbursementApproval/type/bxList
+     * @return
+     */
+    @ApiOperation(value = "列表查询")
+    @GetMapping("/list2")
+    public ResponseEntity<IPage<RetureListDto>> list2(Page<RetureListDto> page, QueryListDto dto) throws Exception{
+        IPage<RetureListDto> iPage = service.list2(page, dto);
+        iPage.getRecords().stream().forEach(i -> {
+            // 报销审批
+            if (StringUtils.isNotBlank(i.getTaskId()) && StringUtils.isNotBlank(i.getType())) {
+                if ("2".equals(i.getType())) { // “审核中”的数据要获取数据审核人
+                    i.setAuditUserIds(flowTaskService.getTaskAuditUsers(i.getTaskId()));  // 获取数据审核人
+                }
+            }
+        });
+        return ResponseEntity.ok(iPage);
+    }
+
+
+    /**
      * 项目登记列表
      * @param info
      * @param page

+ 2 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reimbursementApproval/approvalInfo/domain/CwReimbursementInfo.java

@@ -78,4 +78,6 @@ public class CwReimbursementInfo extends BaseEntity {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date approvalTime;
+
+    private String businessFlag;
 }

+ 2 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reimbursementApproval/approvalInfo/mapper/CwReimbursementInfoMapper.java

@@ -30,6 +30,8 @@ public interface CwReimbursementInfoMapper extends BaseMapper<CwReimbursementInf
 
     IPage<RetureListDto> findList (Page<RetureListDto> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper, @Param("officeIds")String officeIds);
 
+    IPage<RetureListDto> findList2 (Page<RetureListDto> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper, @Param("officeIds")String officeIds);
+
     List<WorkAttachmentInfo> findFiles(@Param("id") String id);
 
     void updateStatusById(@Param("id") String id, @Param("type") String type);

+ 173 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reimbursementApproval/approvalInfo/service/CwReimbursementInfoService.java

@@ -112,6 +112,7 @@ public class CwReimbursementInfoService {
          * c表是sysUser
          */
         queryWrapper.eq("a.del_flag", 0);
+        queryWrapper.notIn("a.business_flag",'0');
         // 报销项目
         if (StringUtils.isNotEmpty(dto.getProject())) {
             queryWrapper.apply("(b.project_id Like {0} OR b.project_name LIKE {1})", "%" + dto.getProject() + "%", "%" + dto.getProject() + "%");
@@ -270,6 +271,178 @@ public class CwReimbursementInfoService {
         return list;
     }
 
+    /**
+     * 列表查询
+     */
+    public IPage<RetureListDto> list2(Page<RetureListDto> page , QueryListDto dto) throws Exception{
+        QueryWrapper<QueryListDto> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, QueryListDto.class);
+        /**
+         * a表是reimbursementInfo
+         * b表是reimbursementDetailInfo
+         * c表是sysUser
+         */
+        queryWrapper.eq("a.del_flag", 0);
+        //苏州分布报销查询
+        queryWrapper.eq("a.business_flag",'0');
+
+        // 报销项目
+        if (StringUtils.isNotEmpty(dto.getProject())) {
+            queryWrapper.apply("(b.project_id Like {0} OR b.project_name LIKE {1})", "%" + dto.getProject() + "%", "%" + dto.getProject() + "%");
+            queryWrapper.or().apply("(b3.project_id = {0} OR p3.project_name LIKE {1})", dto.getProject(), "%" + dto.getProject() + "%");
+            queryWrapper.or().apply("(b4.project_id = {0} OR b4.project_name LIKE {1})", dto.getProject(), "%" + dto.getProject() + "%");
+            queryWrapper.or().apply("(b5.project_id = {0} OR b5.project_name LIKE {1})", dto.getProject(), "%" + dto.getProject() + "%");
+
+        }
+        // 报销时间
+        if (dto.getDates() != null) {
+            queryWrapper.between("a.approval_time", dto.getDates()[0], dto.getDates()[1]);
+        }
+        // 经办人
+        if (StringUtils.isNotEmpty(dto.getHandled())) {
+            queryWrapper.apply("(a.create_by_id = {0} OR c.name LIKE {1})", dto.getHandled(), "%" + dto.getHandled() + "%");
+        }
+        // 报销人
+        if (StringUtils.isNotEmpty(dto.getReimBy())) {
+            queryWrapper.apply("( b.user_id = {0} OR us.name LIKE {1} )", dto.getReimBy(), "%" + dto.getReimBy() + "%");
+            queryWrapper.or().apply("( b2.user_id = {0} OR us2.name LIKE {1} )", dto.getReimBy(), "%" + dto.getReimBy() + "%");
+            queryWrapper.or().apply("( b3.user_id = {0} OR us3.name LIKE {1} )", dto.getReimBy(), "%" + dto.getReimBy() + "%");
+            queryWrapper.or().apply("( b4.user_id = {0} OR us4.name LIKE {1} )", dto.getReimBy(), "%" + dto.getReimBy() + "%");
+            queryWrapper.or().apply("( b5.user_id = {0} OR us5.name LIKE {1} )", dto.getReimBy(), "%" + dto.getReimBy() + "%");
+
+        }
+        // 报销状态
+        if (StringUtils.isNotEmpty(dto.getType())) {
+            queryWrapper.eq("a.type", dto.getType());
+        }
+        // 报销部门
+        if (StringUtils.isNotEmpty(dto.getDepartment())) {
+            queryWrapper.apply("( b.dept_id = {0} OR so.name LIKE {1} )", dto.getDepartment(), "%" + dto.getDepartment() + "%");
+            queryWrapper.or().apply("( b2.dept_id = {0} OR so2.name LIKE {1} )", dto.getDepartment(), "%" + dto.getDepartment() + "%");
+            queryWrapper.or().apply("( b3.dept_id = {0} OR so3.name LIKE {1} )", dto.getDepartment(), "%" + dto.getDepartment() + "%");
+            queryWrapper.or().apply("( b4.dept_id = {0} OR so4.name LIKE {1} )", dto.getDepartment(), "%" + dto.getDepartment() + "%");
+            queryWrapper.or().apply("( b5.dept_id = {0} OR so5.name LIKE {1} )", dto.getDepartment(), "%" + dto.getDepartment() + "%");
+
+        }
+        // 报销类别
+        if (StringUtils.isNotEmpty(dto.getRemiType())) {
+            queryWrapper.apply(" (b.type_id = {0} OR t.name LIKE {1}) ", dto.getRemiType(), "%" + dto.getRemiType() + "%");
+            queryWrapper.or().apply(" (b2.type_id = {0} OR t2.name LIKE {1}) ", dto.getRemiType(), "%" + dto.getRemiType() + "%");
+            queryWrapper.or().apply(" (b3.type_id = {0} OR t3.name LIKE {1}) ", dto.getRemiType(), "%" + dto.getRemiType() + "%");
+            queryWrapper.or().apply(" (b4.type_id = {0} OR t4.name LIKE {1}) ", dto.getRemiType(), "%" + dto.getRemiType() + "%");
+            queryWrapper.or().apply(" (b5.type_id = {0} OR t5.name LIKE {1}) ", dto.getRemiType(), "%" + dto.getRemiType() + "%");
+
+        }
+        // 报销金额
+        if (dto.getAmounts() != null) {
+            if (StringUtils.isNotEmpty(dto.getAmounts()[0])) {
+                queryWrapper.and(w ->
+                        w.ge("b.number", Double.parseDouble(dto.getAmounts()[0]))
+                                .or().ge("b2.number", Double.parseDouble(dto.getAmounts()[0]))
+                                .or().ge("b3.number", Double.parseDouble(dto.getAmounts()[0]))
+                                .or().ge("b4.number", Double.parseDouble(dto.getAmounts()[0]))
+                                .or().ge("b5.number", Double.parseDouble(dto.getAmounts()[0]))
+                );
+            }
+            if (dto.getAmounts().length>1 && StringUtils.isNotEmpty(dto.getAmounts()[1])) {
+                queryWrapper.and(w ->
+                        w.le("b.number", Double.parseDouble(dto.getAmounts()[1]))
+                                .or().le("b2.number", Double.parseDouble(dto.getAmounts()[1]))
+                                .or().le("b3.number", Double.parseDouble(dto.getAmounts()[1]))
+                                .or().le("b4.number", Double.parseDouble(dto.getAmounts()[1]))
+                                .or().le("b5.number", Double.parseDouble(dto.getAmounts()[1]))
+                );
+            }
+        }
+        // 报告号
+        if (StringUtils.isNotEmpty(dto.getReportNumber())) {
+            queryWrapper.like("b.report_number", dto.getReportNumber());
+            queryWrapper.or().like("b2.report_number", dto.getReportNumber());
+            queryWrapper.or().like("b3.report_number", dto.getReportNumber());
+            queryWrapper.or().like("b4.report_number", dto.getReportNumber());
+            queryWrapper.or().like("b5.report_number", dto.getReportNumber());
+        }
+        // 报销类型
+        if (StringUtils.isNotBlank(dto.getSourceType())) {
+            queryWrapper.eq("a.source_type", dto.getSourceType());
+        }
+
+        // 报销项状态
+        if (com.jeeplus.utils.StringUtils.isNotEmpty(dto.getReimbursementType())) {
+            queryWrapper.eq("a.reimbursement_type", dto.getReimbursementType());
+        }
+        // 报销编号
+        if (com.jeeplus.utils.StringUtils.isNotEmpty(dto.getNo())) {
+            queryWrapper.like("a.no", dto.getNo());
+        }
+
+        // 如果当前用户是部门主任,则可以查看部门所有的项目、自己创建的项目以及所属项目组的项目
+        // 如果当前用户是员工,则可以查看自己创建的项目以及所属项目组的项目
+        StringBuilder officeIds = new StringBuilder();
+//        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        List<String> manageOfficeIdList= Lists.newArrayList();
+        //判定是否为会计所长 或会计部门主任
+        /*if(CommonUtils.haveRoleKjsz() || CommonUtils.haveRoleCwBmzr()){
+            //获取当前人管理的部门id
+            if(StringUtils.isNotBlank(userDTO.getManageOfficeIds())){
+                manageOfficeIdList = Arrays.asList(userDTO.getManageOfficeIds().split(","));
+            }else{
+                manageOfficeIdList.add(userDTO.getOfficeDTO().getId());
+            }
+            for (int i = 0; i <manageOfficeIdList.size(); i++){
+                officeIds.append("'").append(manageOfficeIdList.get(i)).append("'");
+                if(i < manageOfficeIdList.size()-1){
+                    officeIds.append(",");
+                }
+            }
+        }*/
+
+
+        /*//获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken ( ));
+        //获取当前登录人所属角色
+        //若是评估部门主任,则仅展示部门主任信息
+        //若是评估员工,则仅展示自己的数据信息
+        List<RoleDTO> roleDTOList = userDTO.getRoleDTOList();
+        for (RoleDTO roleDTO : roleDTOList) {
+            //根据角色id查询角色信息
+            RoleDTO roleDTOById = SpringUtil.getBean(IRoleApi.class).getRoleDTOById(roleDTO.getId());
+            if("cwyg".equals(roleDTOById.getEnName()) && "兴光会计员工".equals(roleDTOById.getName())){
+                queryWrapper.eq("a.create_by_id", userDTO.getId());
+                break;
+            }else if("cw_bmzr".equals(roleDTOById.getEnName()) && "兴光会计部门主任".equals(roleDTOById.getName())){
+                queryWrapper.eq("sumo.user_id", userDTO.getId());
+                break;
+            }
+        }*/
+
+
+        IPage<RetureListDto> list = infoMapper.findList(page, queryWrapper, officeIds.toString());
+        list.getRecords().stream().forEach(item -> {
+            if (StringUtils.isNotBlank(item.getSourceType()) && "1".equals(item.getSourceType())) { //项目报销
+                if (StringUtils.isNotBlank(item.getProjectId())) {
+                    String proName = selectProjectByIds(item.getProjectId());
+                    item.setProjectName(proName);
+                }
+                if (StringUtils.isBlank(item.getDeptName())){
+                    String name = infoMapper.findUserById(item.getProjectUser());
+                    item.setName(name);
+                    String office = infoMapper.findOfficeById(item.getProjectOffice());
+                    item.setDeptName(office);
+                }
+            }
+            if (StringUtils.isNotBlank(item.getSourceType()) && "3".equals(item.getSourceType())){//报告报销
+                if (StringUtils.isBlank(item.getDeptName())){
+                    String name = infoMapper.findUserById(item.getReportUser());
+                    item.setName(name);
+                    String office = infoMapper.findOfficeById(item.getReportOffice());
+                    item.setDeptName(office);
+                }
+            }
+
+        });
+        return list;
+    }
+
     public IPage<ProgramProjectListInfo> projectList(Page<ProgramProjectListInfo> page, ProgramProjectListInfo info, String tabType) throws Exception{
 
         //获取当前登录人信息

+ 3 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reimbursementApproval/approvalInfo/service/dto/SaveInfoDto.java

@@ -93,4 +93,7 @@ public class SaveInfoDto extends BaseEntity {
     // 报销类型(0:普通报销;1:电子发票报销)
     private String reimbursementType;
 
+    //区分苏州报销和会计报销(0:苏州 1:会计)
+    private String businessFlag;
+
 }

+ 12 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/reimApprovalType/controller/CwReimbursementTypeController.java

@@ -91,6 +91,18 @@ public class CwReimbursementTypeController {
     }
 
     /**
+     * 根据name查询
+     * @param name
+     * @return
+     */
+    @ApiOperation(value = "根据name查询")
+    @GetMapping("/findByName")
+    public ResponseEntity<CwReimbursementTypeInfo> findByName(String name) {
+        CwReimbursementTypeInfo info = service.getByName(name);
+        return ResponseEntity.ok(info);
+    }
+
+    /**
      * 根据id删除
      * @param id
      * @return

+ 9 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/reimApprovalType/mapper/CwReimbursementTypeMapper.java

@@ -59,6 +59,15 @@ public interface CwReimbursementTypeMapper extends BaseMapper<CwReimbursementTyp
      */
     @InterceptorIgnore(tenantLine = "true")
     CwReimbursementTypeInfo getById(String id);
+
+    /**
+     * 根据name查询详情信息
+     * @param id
+     * @return
+     */
+    @InterceptorIgnore(tenantLine = "true")
+    CwReimbursementTypeInfo getByName(String name);
+
     /**
      * 根据name和parentId查询名称是否重复
      * @param name

+ 9 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/reimApprovalType/mapper/xml/CwReimbursementTypeMapper.xml

@@ -95,6 +95,15 @@
 		</where>
 	</select>
 
+	<select id="getByName" resultMap="BaseResultMap">
+		select
+		<include refid="Base_Column_List"></include>
+		from cw_reimbursement_type_info a
+		<where>
+			a.del_flag = 0 and a.name = #{name}
+		</where>
+	</select>
+
 	<select id="checkNameIsExist" resultType="java.lang.Integer">
         SELECT
 			COUNT( 0 )

+ 17 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/reimApprovalType/service/CwReimbursementTypeService.java

@@ -204,6 +204,23 @@ public class CwReimbursementTypeService {
         return info;
     }
 
+    /**
+     * 根据name查询项目详情
+     * @param name
+     * @return
+     */
+    public CwReimbursementTypeInfo getByName(String name) {
+        CwReimbursementTypeInfo info = mapper.getByName(name);
+        if( null != info && null != info.getOfficeDTOList() && info.getOfficeDTOList().size()>0){
+            List<String> officeIdList = Lists.newArrayList();
+            for (OfficeDTO office : info.getOfficeDTOList()) {
+                officeIdList.add(office.getId());
+            }
+            info.setOfficeIdList(officeIdList);
+        }
+        return info;
+    }
+
     public List<CwReimbursementTypeInfo> bxList(CwReimbursementTypeInfo info) {
         LambdaQueryWrapper<CwReimbursementTypeInfo> wrapper = new LambdaQueryWrapper<>();
         if (StringUtils.isNotEmpty(info.getName())) {