瀏覽代碼

Merge remote-tracking branch 'origin/master'

user5 1 年之前
父節點
當前提交
9ca0b057b7

+ 5 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/factory/RoleApiFallbackFactory.java

@@ -43,6 +43,11 @@ public class RoleApiFallbackFactory implements FallbackFactory <IRoleApi> {
             public RoleDTO getRoleDTOById(String id) {
                 return null;
             }
+
+            @Override
+            public RoleDTO getRoleDTOByIdForApp(String id) {
+                return null;
+            }
         };
     }
 }

+ 8 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/feign/IRoleApi.java

@@ -41,4 +41,12 @@ public interface IRoleApi {
     @GetMapping(value = "/feign/sys/role/getRoleDTOById")
     RoleDTO getRoleDTOById(@RequestParam(value = "id") String id);
 
+    /**
+     * 获取角色(移动端)
+     *
+     * @return
+     */
+    @GetMapping(value = "/feign/sys/role/getRoleDTOByIdForApp")
+    RoleDTO getRoleDTOByIdForApp(@RequestParam(value = "id") String id);
+
 }

+ 69 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportController.java

@@ -195,6 +195,75 @@ public class CwProjectReportController {
     }
 
     /**
+     * 查询财务项目信息列表(移动端)
+     * @param projectReportData
+     * @param page
+     * @return
+     */
+    @ApiLog("查询财务报告信息列表")
+    @PreAuthorize("hasAuthority('cwProjectReport:list')")
+    @GetMapping("listApp")
+    public ResponseEntity<IPage<CwProjectReportData>> dataApp(CwProjectReportData projectReportData, Page<CwProjectReportData> page) throws Exception {
+        IPage<CwProjectReportData> result = new Page<CwProjectReportData>();
+        result = projectReportService.findListApp (page,projectReportData);
+        result.getRecords().stream().forEach(i -> {
+
+            //当项目经理是跨租户的人员时,则特殊处理
+            if (StringUtils.isBlank(i.getProjectMasterName())){
+                //根据项目经理id去人员表重查数据
+                if (StringUtils.isNotBlank(i.getProjectMasterId())){
+                    UserDTO byId = SpringUtil.getBean(IUserApi.class).getById(i.getProjectMasterId());
+                    if(null != byId)
+                        i.setProjectMasterName(byId.getName());
+                }
+            }
+            if (StringUtils.isBlank(i.getRealHeaderName())){
+                //根据项目经理id去人员表重查数据
+                if (StringUtils.isNotBlank(i.getProjectMasterId2())){
+                    UserDTO byId = SpringUtil.getBean(IUserApi.class).getById(i.getProjectMasterId2());
+                    if(null != byId)
+                        i.setRealHeaderName(byId.getName());
+                }
+
+            }
+
+            // 复核
+            if (StringUtils.isNotBlank(i.getRevTaskId()) && StringUtils.isNotBlank(i.getReviewStatus())) {
+                if ("2".equals(i.getReviewStatus())) { // “审核中”的数据要获取数据审核人
+                    i.setAuditUserIdsRev(flowTaskService.getTaskAuditUsers(i.getRevTaskId()));  // 获取数据审核人
+                }
+            }
+            // 签章
+            if (StringUtils.isNotBlank(i.getSignatureType())) {
+                // 电子章
+                if ("1".equals(i.getSignatureType())) {
+                    if (StringUtils.isNotBlank(i.getSignTaskId1()) && StringUtils.isNotBlank(i.getStatus1())) {
+                        if ("2".equals(i.getStatus1())) { // “审核中”的数据要获取数据审核人
+                            i.setAuditUserIdsSign1(flowTaskService.getTaskAuditUsers(i.getSignTaskId1()));  // 获取数据审核人
+                        }
+                    }
+                }
+                // 公章+执业章
+                if ("2".equals(i.getSignatureType())) {
+                    if (StringUtils.isNotBlank(i.getSignTaskId2()) && StringUtils.isNotBlank(i.getStatus2())) {
+                        if ("2".equals(i.getStatus2())) { // “审核中”的数据要获取数据审核人
+                            i.setAuditUserIdsSign2(flowTaskService.getTaskAuditUsers(i.getSignTaskId2()));  // 获取数据审核人
+                        }
+                    }
+                }
+                // 实体章
+                if ("3".equals(i.getSignatureType())) {
+                    if (StringUtils.isNotBlank(i.getSignTaskId3()) && StringUtils.isNotBlank(i.getStatus3())) {
+                        if ("2".equals(i.getStatus3())) { // “审核中”的数据要获取数据审核人
+                            i.setAuditUserIdsSign3(flowTaskService.getTaskAuditUsers(i.getSignTaskId3()));  // 获取数据审核人
+                        }
+                    }
+                }
+            }
+        });
+        return ResponseEntity.ok (result);
+    }
+    /**
      * 根据id修改状态值status
      * @param data
      * @return

+ 172 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportService.java

@@ -759,6 +759,178 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
     }
 
     /**
+     * 差选项目列表信息(移动端)
+     * @param page
+     * @param projectReportData
+     * @return
+     * @throws Exception
+     */
+    public IPage<CwProjectReportData> findListApp(Page<CwProjectReportData> page, CwProjectReportData projectReportData) throws Exception{
+        QueryWrapper<CwProjectReportData> queryWrapper = QueryWrapperGenerator.buildQueryCondition (projectReportData,CwProjectReportData.class);
+        queryWrapper.eq("a.del_flag","0");
+//        queryWrapper.orderByDesc("a.create_date");
+        //条件
+        if (StringUtils.isNotEmpty(projectReportData.getProjectNumber())) {
+            queryWrapper.like("b.project_number", projectReportData.getProjectNumber());
+        }
+        if (StringUtils.isNotEmpty(projectReportData.getProjectName())) {
+            queryWrapper.like("b.project_name", projectReportData.getProjectName());
+        }
+        if (StringUtils.isNotEmpty(projectReportData.getReportName())) {
+            queryWrapper.like("a.report_name", projectReportData.getReportName());
+        }
+        if (StringUtils.isNotEmpty(projectReportData.getProjectMasterId())) {
+            queryWrapper.eq("b.project_master_id", projectReportData.getProjectMasterId());
+        }
+        if (StringUtils.isNotEmpty(projectReportData.getProjectMaster2Id())) {
+            queryWrapper.eq("b.real_header", projectReportData.getProjectMaster2Id());
+        }
+        if (StringUtils.isNotEmpty(projectReportData.getProjectMasterName())) { // 项目经理1筛选
+            queryWrapper.like("e.id", projectReportData.getProjectMasterName()).or().like("e.name", projectReportData.getProjectMasterName());
+        }
+        if (StringUtils.isNotEmpty(projectReportData.getRealHeaderName())) { // 项目经理2筛选
+            queryWrapper.like("f.id", projectReportData.getRealHeaderName()).or().like("f.name", projectReportData.getRealHeaderName());
+        }
+        if ( null != projectReportData.getCreateBy() && StringUtils.isNotEmpty(projectReportData.getCreateBy().getId())) {
+            queryWrapper.like("a.create_by_id", projectReportData.getCreateBy().getId()).or().like("d.name", projectReportData.getCreateBy().getId());
+        }
+        //4、签约时间(区间)
+        String[] contractDates = projectReportData.getContractDates();
+        if (contractDates != null) {
+
+            queryWrapper.between("a.create_time", contractDates[0], contractDates[1]);
+        }
+        //5、报告文号
+        if (StringUtils.isNotEmpty(projectReportData.getReportNo())) {
+            queryWrapper.like("new_line.report_no", projectReportData.getReportNo());
+        }
+        //6、审计收费
+        String[] contractAmounts = projectReportData.getContractAmounts();
+        if (contractAmounts != null) {
+            if (StringUtils.isNotEmpty(contractAmounts[0])) {
+                queryWrapper.ge("a.audit_fees",contractAmounts[0]);
+            }
+            if (contractAmounts.length>1 && StringUtils.isNotEmpty(contractAmounts[1])) {
+                queryWrapper.le("a.audit_fees", contractAmounts[1]);
+            }
+        }
+        if (StringUtils.isNotEmpty(projectReportData.getReviewStatus())) {
+            queryWrapper.eq("cw_rev.review_status", projectReportData.getReviewStatus());
+        }
+        //报告号签章状态
+        if (StringUtils.isNotEmpty(projectReportData.getApplyStatus())) {
+            if("0".equals(projectReportData.getApplyStatus())){
+                queryWrapper.isNull("cw_na.review_status");
+                if(StringUtils.isBlank(projectReportData.getReviewStatus())){
+                    queryWrapper.eq("cw_rev.review_status","0");
+                }
+            }else{
+                queryWrapper.eq("cw_na.review_status", projectReportData.getApplyStatus());
+            }
+        }
+        if (StringUtils.isNotEmpty(projectReportData.getStatus1())) {
+            queryWrapper.eq("cw_prs1.status", projectReportData.getStatus1());
+        }
+        if (StringUtils.isNotBlank(projectReportData.getFilingType())) {
+            List<CwProjectRecords> projectList = cwProjectRecordsService.list(new LambdaQueryWrapper<CwProjectRecords>().eq(CwProjectRecords::getReportType, projectReportData.getFilingType()));
+            List<String> projectIdList = projectList.stream().map(CwProjectRecords::getId).collect(Collectors.toList());
+            if (CollectionUtil.isNotEmpty(projectIdList)) {
+                queryWrapper.in("b.id", projectIdList);
+            } else {
+                return new Page<>();
+            }
+        }
+        if (ArrayUtil.isNotEmpty(projectReportData.getCreateDates())) {
+            queryWrapper.between("a.create_time", projectReportData.getCreateDates()[0], projectReportData.getCreateDates()[1]);
+        }
+        String isBmzr = "0";
+        StringBuilder officeIds = new StringBuilder();
+        //UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken ( ));
+//        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        List<String> manageOfficeIdList= Lists.newArrayList();
+
+
+
+        long l1 = System.currentTimeMillis();
+        IPage<CwProjectReportData> list = null;
+        long l2 = System.currentTimeMillis();
+        System.out.println("报告列表查询service方法消耗时间:" + (l2-l1));
+
+        //获取当前登录人角色是否是苏州报告签字盖章代办
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+        if (CollectionUtil.isNotEmpty(userDTO.getRoleDTOList())){
+            for (RoleDTO roleDTO : userDTO.getRoleDTOList()) {
+                RoleDTO dtoById = SpringUtil.getBean(IRoleApi.class).getRoleDTOByIdForApp(roleDTO.getId());
+                if ("szbgqzgzdb".equals(dtoById.getEnName())){
+                    list = reportMapper.findList2(page,isBmzr, officeIds.toString(), queryWrapper);
+                    break;
+                }
+            }
+        }
+
+        if(null == list){
+            list = reportMapper.findList(page,isBmzr, officeIds.toString(), queryWrapper);
+        }
+
+        List<UserDTO> allUserInfo = (List<UserDTO>) RedisUtils.getInstance().get(CacheNames.USER_CACHE_USER_ALL_INFO);
+        if (null == allUserInfo || allUserInfo.size() == 0) {
+            allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        }
+        ArrayList<User> users = new ArrayList<>();
+        List<UserDTO> finalAllUserInfo = allUserInfo;
+        list.getRecords().forEach(li->{
+            if (StringUtils.isBlank(li.getProjectMasterName())){
+                //根据项目经理1的id去查项目经理去名称
+                if (StringUtils.isNotBlank(li.getProjectMasterId())){
+                    UserDTO matchingUser = null;
+                    for (UserDTO user : finalAllUserInfo) {
+                        if (li.getProjectMasterId().equals(user.getId())) {
+                            matchingUser = user;
+                            break;
+                        }
+                    }
+                    if (matchingUser != null) {
+                        String projectMasterName = matchingUser.getName(); // Assuming the property name is "userName"
+                        li.setProjectMasterName(projectMasterName);
+                    }
+                }
+            }
+
+            if (StringUtils.isBlank(li.getRealHeaderName())) {
+                if (StringUtils.isNotBlank(li.getProjectMaster2Id())){
+                    UserDTO matchingUser = null;
+                    for (UserDTO user : finalAllUserInfo) {
+                        if (li.getProjectMaster2Id().equals(user.getId())) {
+                            matchingUser = user;
+                            break;
+                        }
+                    }
+                    if (matchingUser != null) {
+                        String projectMasterName = matchingUser.getName(); // Assuming the property name is "userName"
+                        li.setProjectMaster2Name(projectMasterName);
+                    }
+                }
+            }
+            if(StringUtils.isEmpty(li.getSignatureAnnotatorStatus())){
+                li.setSignatureAnnotatorStatus("0");
+            }
+            CwSignatureAnnotator sigById = cwSignatureAnnotatorMapper.getSigById(li.getId());
+            if (ObjectUtil.isNotEmpty(sigById)){
+                li.setProcInsSigId(sigById.getProcInsId());
+                li.setSigReason(sigById.getReason());
+                li.setTaskSigId(sigById.getTaskId());
+            }
+
+            //如果质控审核已经完成且审核通过时间存在,则判断审核时间是否已经超过一天,若不超过,则可以重复发起质控审核
+            if (null != li.getAuditTime() && "5".equals(li.getReviewStatus())){
+                li.setRepetitionReviewFlag(getRepetitionReviewFlag(li.getAuditTime()));
+            }
+
+        });
+        return list;
+
+    }
+    /**
      * 计算两时间是否超过一天(秒)
      * @param auditTime
      * @return

+ 1 - 1
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/FlowProcessService.java

@@ -146,7 +146,7 @@ public class FlowProcessService {
         if (StringUtils.isNotBlank(type)) {
             if (type.equals("ydd")) {
                 // 创建一个包含需要保留的流程定义名称的集合
-                List<String> requiredNames = Arrays.asList("物资管理-领用申请", "物资管理-采购申请", "日常办公-请假申请", "离职申请", "离职交接申请", "会计-报销审批");
+                List<String> requiredNames = Arrays.asList("物资管理-领用申请", "物资管理-采购申请", "日常办公-请假申请", "离职申请", "离职交接申请", "会计-报销审批", "会计-发票申请");
                 /**
                  * 移动端工作台数据处理
                  */

+ 3 - 2
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/FlowTaskService.java

@@ -423,7 +423,8 @@ public class FlowTaskService {
                 processName.equals("日常办公-请假申请") ||
                 processName.equals("离职申请") ||
                 processName.equals("离职交接申请") ||
-                processName.equals("会计-报销审批") ;
+                processName.equals("会计-报销审批") ||
+                processName.equals("会计-发票申请");
     }
 
     /**
@@ -668,7 +669,7 @@ public class FlowTaskService {
         if (StringUtils.isNotBlank(type)) {
             if (type.equals("ydd")) {
                 // 创建一个包含需要保留的流程定义名称的集合
-                List<String> requiredNames = Arrays.asList("物资管理-领用申请", "物资管理-采购申请", "日常办公-请假申请", "离职申请", "离职交接申请", "会计-报销审批");
+                List<String> requiredNames = Arrays.asList("物资管理-领用申请", "物资管理-采购申请", "日常办公-请假申请", "离职申请", "离职交接申请", "会计-报销审批", "会计-发票申请");
                 /**
                  * 移动端工作台数据处理
                  */

+ 49 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/controller/OssFileController.java

@@ -437,6 +437,55 @@ public class OssFileController {
         ossService.saveMsg(list,currentToken);
     }
 
+    /**
+     * 移动端所需
+     * 解析xml文件附件信息(发票报销)
+     * @param file
+     * @return
+     */
+    @DemoMode
+    @PostMapping("/disposeXmlFileApp")
+    @ApiOperation(value = "解析xml文件附件信息(发票报销)")
+    public Map<String,Object> disposeXmlFileApp( MultipartFile file) throws IOException {
+        Map<String,Object> map = new HashMap();
+        //创建DOM4J解析器对象
+        File newFile = null;
+        try {
+            //MultipartFile转File
+            newFile = FileUtil.transformMultipartFile(file);
+            // 创建一个 DocumentBuilderFactory
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            // 使用工厂创建一个 DocumentBuilder
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            // 使用 DocumentBuilder 解析 XML 文件
+            Document document = builder.parse(newFile);
+            // 获取所有header节点的集合
+            NodeList headerList = document.getElementsByTagName("Header");
+            // 获取所有eInvoiceDataList节点的集合
+            NodeList eInvoiceDataList = document.getElementsByTagName("EInvoiceData");
+            // 获取所有taxSupervisionInfo节点的集合
+            NodeList taxSupervisionInfoList = document.getElementsByTagName("TaxSupervisionInfo");
+
+            Map<String,String> map1 = xmlNodeListDataDispose(headerList, document);
+            Map<String,String> map2 = xmlNodeListDataDispose(eInvoiceDataList, document);
+            Map<String,String> map3 = xmlNodeListDataDispose(taxSupervisionInfoList, document);
+            map.putAll(map1);
+            map.putAll(map2);
+            map.putAll(map3);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }finally {
+            newFile.delete();
+        }
+
+        //对文件进行上传到阿里云操作
+        String dir = "note";
+        FileUrlDto dto = ossService.webUpload(file,dir);
+        map.put("url", dto.getUrl());
+        map.put("lsUrl", dto.getLsUrl());
+        return map;
+    }
 
     /**
      * 解析xml文件附件信息(发票报销)

+ 10 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/controller/UserController.java

@@ -1471,6 +1471,16 @@ public class UserController {
     }
 
     /**
+     * 修改用户邮箱
+     */
+    @ApiLog("修改用户邮箱")
+    @PostMapping("updateEmailApp")
+    public String updateEmailApp(@RequestBody User user){
+        userService.updateEmail(user.getId(),user.getEmail());
+        return "修改成功";
+    }
+
+    /**
      * 根据用户id获取电话号码
      */
     @ApiLog("根据用户id获取电话号码")

+ 25 - 1
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/controller/app/AppUserController.java

@@ -88,11 +88,35 @@ public class AppUserController extends UserController {
         }
 
         for (Office root : rootTrees) {
-            offices.add ( getChildOfTree ( root, list ) );
+            offices.add ( getChildOfTreeRadio ( root, list ) );
         }
         return offices;
     }
 
+    private Map getChildOfTreeRadio(Office officeItem, List <Office> officeList) {
+        Map oMap = new HashMap ( );
+        oMap.put ( "id", officeItem.getId ( ) );
+        oMap.put ( "type", "office" );
+        oMap.put ( "label", officeItem.getName ( ) );
+        List children = Lists.newArrayList ( );
+        oMap.put ( "children", children );
+        List <User> list = userService.lambdaQuery ( ).eq ( User::getOfficeId, officeItem.getId ( ) ).list ( );
+        for (int i = 0; i < list.size ( ); i++) {
+            User e = list.get ( i );
+            Map <String, Object> map = Maps.newHashMap ( );
+            map.put ( "id", e.getId ( ) );
+            map.put ( "type", "user" );
+            map.put ( "label", e.getName ( ) );
+            children.add ( map );
+        }
+        for (Office child : officeList) {
+            if ( child.getParentId ( ).equals ( officeItem.getId ( ) ) ) {
+                children.add ( getChildOfTreeRadio ( child, officeList ) );
+            }
+        }
+        return oMap;
+    }
+
     private List <Map> getRootTree(List <Office> list) {
         List <Map> offices = Lists.newArrayList ( );
         List <Office> rootTrees = officeService.treeData ( );

+ 6 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/feign/RoleApiImpl.java

@@ -38,4 +38,10 @@ public class RoleApiImpl implements IRoleApi {
     public RoleDTO getRoleDTOById(String id) {
         return RoleWrapper.INSTANCE.toDTO ( roleService.lambdaQuery ( ).eq ( Role::getTenantId, TenantUtils.getTenantId ( ) ).eq ( Role::getId, id ).one ( ) );
     }
+
+    @Override
+    public RoleDTO getRoleDTOByIdForApp(String id) {
+        return RoleWrapper.INSTANCE.toDTO ( roleService.lambdaQuery ( ).eq ( Role::getId, id ).one ( ) );
+
+    }
 }

+ 8 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/mapper/RoleMapper.java

@@ -68,4 +68,12 @@ public interface RoleMapper extends BaseMapper <Role> {
 
     @InterceptorIgnore(tenantLine = "true")
     Role getRoleDTOByNameAndTenantId(@Param("name")String name,@Param("tenantId")String tenantId);
+
+    /**
+     * 根据id获取角色(移动端)
+     * @param id
+     * @return
+     */
+    @InterceptorIgnore(tenantLine = "true")
+    RoleDTO getRoleDTOByIdForApp(@Param("id")String id);
 }

+ 4 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/mapper/xml/RoleMapper.xml

@@ -33,6 +33,10 @@
         SELECT id, name, en_name, is_sys AS sysData, useable, remarks, create_time, create_by_id, update_time,
         update_by_id, del_flag, tenant_id FROM sys_role WHERE del_flag = 0 AND name = #{name} and tenant_id = #{tenantId}
     </select>
+    <select id="getRoleDTOByIdForApp" resultType="com.jeeplus.sys.service.dto.RoleDTO">
+        SELECT id, name, en_name, is_sys AS sysData, useable, remarks, create_time, create_by_id, update_time,
+        update_by_id, del_flag, tenant_id FROM sys_role WHERE del_flag = 0 AND id = #{id}
+    </select>
 
     <!--维护角色与菜单权限关系-->
     <delete id="deleteRoleMenu">

+ 10 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/service/RoleService.java

@@ -194,4 +194,14 @@ public class RoleService extends ServiceImpl <RoleMapper, Role> {
 
         return dtos;
     }
+
+    /**
+     * 根据id获取角色(移动端)
+     * @param id
+     * @return
+     */
+    public RoleDTO getRoleDTOByIdForApp(String id) {
+        RoleDTO roleDTO = baseMapper.getRoleDTOByIdForApp(id);
+        return roleDTO;
+    }
 }