Quellcode durchsuchen

index首页部门利润(当年利润,去年利润,年同比,月利润,月同比,月环比)

sl vor 1 Jahr
Ursprung
Commit
eff9e56430
19 geänderte Dateien mit 549 neuen und 4 gelöschten Zeilen
  1. 9 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java
  2. 12 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java
  3. 6 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml
  4. 9 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java
  5. 10 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java
  6. 16 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java
  7. 13 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java
  8. 1 1
      module_kzks/src/main/java/org/jeecg/dataSync/task/DepartDataSync.java
  9. 17 1
      module_kzks/src/main/java/org/jeecg/modules/Index/controller/IndexController.java
  10. 6 0
      module_kzks/src/main/java/org/jeecg/modules/Index/mapper/xml/IndexMapper.xml
  11. 38 0
      module_kzks/src/main/java/org/jeecg/modules/Index/service/IndexService.java
  12. 291 0
      module_kzks/src/main/java/org/jeecg/modules/Index/service/impl/IndexServiceImpl.java
  13. 20 0
      module_kzks/src/main/java/org/jeecg/modules/kyTaskInfo/mapper/KyTaskInfoMapper.java
  14. 47 0
      module_kzks/src/main/java/org/jeecg/modules/kyTaskInfo/mapper/xml/KyTaskInfoMapper.xml
  15. 13 0
      module_kzks/src/main/java/org/jeecg/modules/kyTaskInfo/service/IKyTaskInfoService.java
  16. 24 0
      module_kzks/src/main/java/org/jeecg/modules/kyTaskInfo/service/impl/KyTaskInfoServiceImpl.java
  17. 4 0
      module_kzks/src/main/java/org/jeecg/modules/projectCost/mapper/ProjectCostMapper.java
  18. 3 0
      module_kzks/src/main/java/org/jeecg/modules/projectCost/service/IProjectCostService.java
  19. 10 0
      module_kzks/src/main/java/org/jeecg/modules/projectCost/service/impl/ProjectCostServiceImpl.java

+ 9 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java

@@ -102,4 +102,13 @@ public interface SysDepartMapper extends BaseMapper<SysDepart> {
 
 	@Select("select depart_name from sys_depart where id in (select dep_id from sys_user_depart where user_id = #{userId})")
 	List<String>  getSysUserOfDepartNameList(String userId);
+    List<SysDepart> selectDepartByIds(ArrayList<String> ids);
+
+	/**
+	 * 根据id获取部门名称
+	 * @param id
+	 * @return
+	 */
+	@Select("SELECT depart_name FROM sys_depart where id=#{id}")
+	String getDepNameById(String id);
 }

+ 12 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java

@@ -13,6 +13,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author: jeecg-boot
  */
 public interface SysUserDepartMapper extends BaseMapper<SysUserDepart>{
+	/**
+	 * 通过用户id查询部门id
+	 * @param userId 用户id
+	 * @return List<String>
+	 */
+	List<String> getUserDepartIdByUid(String userId);
+
 
     /**
      * 通过用户id查询部门用户
@@ -47,4 +54,9 @@ public interface SysUserDepartMapper extends BaseMapper<SysUserDepart>{
      * @return
      */
     IPage<SysUser> getUserInformation(Page<SysUser> page,  @Param("orgCode") String orgCode,  @Param("keyword") String keyword,@Param("userId") String userId);
+
+
+
+
+
 }

+ 6 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml

@@ -1,6 +1,12 @@
 <?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="org.jeecg.modules.system.mapper.SysUserDepartMapper">
+	<select id="getUserDepartIdByUid" parameterType="String" resultType="String">
+		SELECT dep_id
+		FROM sys_user_depart
+		WHERE user_id = #{userId, jdbcType=VARCHAR}
+	</select>
+
     <select id="getUserDepartByUid" parameterType="String" resultType="org.jeecg.modules.system.entity.SysUserDepart">
 		SELECT *
 		FROM sys_user_depart

+ 9 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java

@@ -170,6 +170,15 @@ public interface ISysDepartService extends IService<SysDepart>{
      */
     void updateStatus(Date startDate, Date endDate);
 
+    List<SysDepart> selectDepartByIds(ArrayList<String> ids);
+
     String saveDepartDateAndReturnOrgCode(SysDepart sysDepart, String username);
 
+
+    /**
+     * 根据id获取部门名称
+     * @param id
+     * @return
+     */
+    String getDepNameById(String id);
 }

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java

@@ -4,6 +4,7 @@ package org.jeecg.modules.system.service;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.entity.SysUserDepart;
 import org.jeecg.modules.system.model.DepartIdModel;
@@ -64,4 +65,13 @@ public interface ISysUserDepartService extends IService<SysUserDepart> {
      * @return
      */
     IPage<SysUser> getUserInformation(String departId, String keyword, Integer pageSize, Integer pageNo);
+
+
+
+	/**
+	 * 通过用户id查询部门id
+	 * @param userId 用户id
+	 * @return List<String>
+	 */
+	List<String> getUserDepartIdByUid(@Param("userId") String userId);
 }

+ 16 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java

@@ -205,7 +205,7 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
 		return null;
 	}
 
-    /**
+	/**
 	 * saveDepartData 的调用方法,生成部门编码和部门类型(作废逻辑)
 	 * @deprecated
 	 * @param parentId
@@ -815,4 +815,19 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
     }
     //update-end---author:wangshuai ---date:20200308  for:[JTC-119]在部门管理菜单下设置部门负责人,新增方法添加部门负责人、删除负责部门负责人、查询部门对应的负责人
 
+
+	@Override
+	public List<SysDepart> selectDepartByIds(ArrayList<String> ids) {
+		return sysDepartMapper.selectDepartByIds(ids);
+	}
+
+	/**
+	 * 根据id获取部门名称
+	 * @param id
+	 * @return
+	 */
+	public String getDepNameById(String id){
+		return sysDepartMapper.getDepNameById(id);
+	}
+
 }

+ 13 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.ibatis.annotations.Param;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.vo.LoginUser;
@@ -39,7 +40,9 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S
 	private ISysDepartService sysDepartService;
 	@Autowired
 	private SysUserMapper sysUserMapper;
-	
+
+	@Autowired
+	private SysUserDepartMapper sysUserDepartMapper;
 
 	/**
 	 * 根据用户id查询部门信息
@@ -216,4 +219,13 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S
 		return res;
 	}
 
+
+	/**
+	 * 通过用户id查询部门id
+	 * @param userId 用户id
+	 * @return List<String>
+	 */
+	public List<String> getUserDepartIdByUid(String userId){
+		return sysUserDepartMapper.getUserDepartIdByUid(userId);
+	}
 }

+ 1 - 1
module_kzks/src/main/java/org/jeecg/dataSync/task/DepartDataSync.java

@@ -5,7 +5,7 @@ import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.TypeReference;
 import org.apache.commons.lang3.ObjectUtils;
 import org.jeecg.config.sign.util.HttpUtils;
-import org.jeecg.dataSync.config.HrConfigurer;
+import org.jeecg.dataSync.util.config.HrConfigurer;
 import org.jeecg.dataSync.util.WebServiceUtil;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.service.ISysDepartService;

+ 17 - 1
module_kzks/src/main/java/org/jeecg/modules/Index/controller/IndexController.java

@@ -1,9 +1,11 @@
 package org.jeecg.modules.Index.controller;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.Index.entity.IncomeDataInfoVO;
+import org.jeecg.modules.Index.entity.LreDataInfoVO;
 import org.jeecg.modules.Index.service.IndexService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -12,7 +14,11 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 
-@Api(tags = "首页")
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+
+@Api(tags="首页")
 @RestController
 @RequestMapping("/index")
 @Slf4j
@@ -26,5 +32,15 @@ public class IndexController {
         return Result.ok(reslut);
     }
 
+    /**
+     * 计算当年的年总利润额、上一年同期总利润额、年同比增长、当月总利润额、当月同比、当月环比
+     *
+     * @return
+     */
+    @ApiOperation(value="计算总利润额以及同比环比", notes="计算总利润额以及同比环比")
+    @GetMapping(value = "/countLre")
+    public Result<LreDataInfoVO> countLre() {
+        return indexService.countLre();
+    }
 
 }

+ 6 - 0
module_kzks/src/main/java/org/jeecg/modules/Index/mapper/xml/IndexMapper.xml

@@ -2,4 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.Index.mapper.IndexMapper">
 
+
+
+
+
+
+
 </mapper>

+ 38 - 0
module_kzks/src/main/java/org/jeecg/modules/Index/service/IndexService.java

@@ -4,6 +4,44 @@ import org.jeecg.modules.Index.entity.IncomeDataInfoVO;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.Index.entity.LreDataInfoVO;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
 public interface IndexService {
     IncomeDataInfoVO getTotalIncome(HttpServletRequest request);
+
+    /**
+     * 通过登录的用户找到相应的部门,可能一个或两个
+     *
+     * @return
+     */
+    List<String> getDepNameBySysUser();
+
+    /**
+     * 计算某部门某段时间的利润额
+     *
+     * @return
+     */
+    BigDecimal countLre(List<String> taskNoListNew);
+
+    /**
+     * 根据部门和需要的日期来取任务号taskno
+     *
+     * @return
+     */
+    List<String> getTaskNoListFDepTime(List<String> sysDepartNames, String timeStatus);
+
+    /**
+     * 计算当年的年总利润额、上一年同期总利润额、年同比增长、当月总利润额、当月同比、当月环比
+     *
+     * @return
+     */
+    Result<LreDataInfoVO> countLre();
+
+
 }

+ 291 - 0
module_kzks/src/main/java/org/jeecg/modules/Index/service/impl/IndexServiceImpl.java

@@ -6,11 +6,19 @@ import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.RedisUtil;
 import org.jeecg.modules.Index.entity.IncomeDataInfoVO;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.Index.entity.LreDataInfoVO;
 import org.jeecg.modules.Index.service.IndexService;
 import org.jeecg.modules.projectCost.mapper.ProjectCostMapper;
 import org.jeecg.modules.system.mapper.SysDepartMapper;
 import org.jeecg.modules.xmcbDetail.mapper.ComContractInfoExchangeMapper;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.jeecg.modules.kyTaskInfo.service.IKyTaskInfoService;
+import org.jeecg.modules.projectCost.entity.ProjectCost;
+import org.jeecg.modules.projectCost.service.IProjectCostService;
+import org.jeecg.modules.system.service.ISysDepartService;
+import org.jeecg.modules.system.service.ISysUserDepartService;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
@@ -19,6 +27,11 @@ import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
 @Service
 public class IndexServiceImpl implements IndexService {
 
@@ -39,6 +52,26 @@ public class IndexServiceImpl implements IndexService {
 
     private static final String INCOME_DATA_REDIS_KEY = "incomeDataRedisKey:";
 
+    /**用户id与部门id对应表*/
+    @Autowired
+    @SuppressWarnings("all")
+    private ISysUserDepartService sysUserDepartService;
+
+    /**部门信息表*/
+    @Autowired
+    @SuppressWarnings("all")
+    private ISysDepartService sysDepartService;
+
+    /**科研任务信息表*/
+    @Autowired
+    @SuppressWarnings("all")
+    private IKyTaskInfoService kyTaskInfoService;
+
+    /**项目成本信息表*/
+    @Autowired
+    @SuppressWarnings("all")
+    private IProjectCostService projectCostService;
+
     @Override
     public IncomeDataInfoVO getTotalIncome(HttpServletRequest request) {
         //首页收入渲染对象
@@ -204,4 +237,262 @@ public class IndexServiceImpl implements IndexService {
         instance.set(Calendar.SECOND, 0);
         instance.set(Calendar.MILLISECOND, 0);
     }
+
+
+    /**
+     * 通过登录的用户找到相应的部门,可能一个或两个
+     *
+     * @return
+     */
+    public List<String> getDepNameBySysUser(){
+        // 获取登录人用户信息 V2.0版本:
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        // 获取用户id
+        String userId = sysUser.getId();
+        //根据用户id去找部门id
+        List<String> sysUserDepartIds = sysUserDepartService.getUserDepartIdByUid(userId);
+        System.out.println(sysUserDepartIds);
+        ///根据部门id去找部门名称
+        List<String> sysDepartNames = new ArrayList<>();
+        for(String sysUserDepartId:sysUserDepartIds){
+            sysDepartNames.add(sysDepartService.getDepNameById(sysUserDepartId));
+        }
+        System.out.println(sysDepartNames);
+        return sysDepartNames;
+    }
+
+    /**
+     * 计算某部门某段时间的利润额
+     *
+     * @return taskNoListNew
+     */
+    public BigDecimal countLre(List<String> taskNoListNew){
+        //3.根据任务号taskno查找需要计算的所有数据list
+        List<ProjectCost> costList = new ArrayList<>();
+        for(String taskNo1:taskNoListNew){
+            costList.addAll(projectCostService.costListByTaskNo(taskNo1));
+        }
+//        System.out.println(costList);
+//        System.out.println("//////////////////////////////////////////////");
+
+        //4.先计算所有利润额相加和
+        BigDecimal sumLreYear = BigDecimal.ZERO;
+        //5.根据status组批状态去找解组批任务的pcCode
+//        List<ProjectCost> costListJZp = new ArrayList<>();
+        List<String> pcCodeList = new ArrayList<>();
+
+        for(ProjectCost projectCost:costList){
+            sumLreYear = sumLreYear.add(projectCost.getLre());
+            if(projectCost.getStatus().equals("1")){
+//                costListJZp.add(projectCost);//增添解组批任务列表
+                pcCodeList.add(projectCost.getPccode());//增加解组批任务pcCode用来查找组批任务
+            }
+        }
+//        System.out.println("不剔除重复的利润额:");
+//        System.out.println(sumLreYear);
+//        System.out.println("//////////////////////////////////////////////");
+//        System.out.println(costListJZp);
+        //新建一个list来给list中的数据去重   多个解组批任务是同一个pcCode
+        List<String> pcCodeListNew = new ArrayList<>();
+        for(String pcCode:pcCodeList){
+            if (!pcCodeListNew.contains(pcCode)) {
+                pcCodeListNew.add(pcCode);
+            }
+        }
+//        System.out.println(pcCodeListNew);
+//        System.out.println("//////////////////////////////////////////////");
+
+        //6.根据taskno=pcCode去找组批任务列表
+        List<ProjectCost> costListZp = new ArrayList<>();
+        for(String pcCode2:pcCodeListNew){
+            for(ProjectCost projectCost2:costList){
+                if(projectCost2.getTaskno().equals(pcCode2)){
+                    costListZp.add(projectCost2);//增加组批任务列表用来扣除组批任务的利润额
+                }
+            }
+        }
+//        System.out.println(costListZp);
+//        System.out.println("//////////////////////////////////////////////");
+
+        //7.根据组批任务的reftaskno去找taskno=reftaskno的组批任务的子任务  lre-组批任务子任务lre
+        //组批任务子任务
+        List<ProjectCost> costListZpZrw = new ArrayList<>();
+        for(ProjectCost projectCost3:costListZp){
+            //lre-组批lre
+            sumLreYear = sumLreYear.subtract(projectCost3.getLre());
+            //根据组批任务的reftaskno去找taskno=reftaskno的组批任务的子任务
+            for(ProjectCost projectCost4:costList){
+                try{
+                    if(projectCost3.getTaskno().equals(projectCost4.getReftaskno())){
+                            costListZpZrw.add(projectCost4);//增加组批任务子任务
+                        }
+                }catch (NullPointerException e){
+                    System.out.println("当前数据的reftaskno为null,直接略过即可");
+                }
+
+
+            }
+        }
+//        System.out.println(costListZpZrw);
+//        System.out.println("//////////////////////////////////////////////");
+
+        for(ProjectCost projectCost5:costListZpZrw){
+            //lre-组批子任务lre
+            sumLreYear = sumLreYear.subtract(projectCost5.getLre());
+        }
+        return sumLreYear;
+    }
+
+    /**
+     * 根据部门和需要的日期来取任务号tasknolist
+     *
+     * @return
+     */
+    public List<String> getTaskNoListFDepTime(List<String> sysDepartNames, String timeStatus){
+        //获取需要的时间范围
+        //int:0当年范围   1去年同期  2当月  3上个月   4 去年同期月份
+//        HashMap<String, Date> timeRangeMap = getTimeRange(0);
+
+        //2.根据部门名称(zrbm、jycs)和实际完成时间(目前是当年)查询taskno
+        List<String> taskNoList = new ArrayList<>();
+        for(String sysDepartName:sysDepartNames){
+            List<String> taskNoList1 = new ArrayList<>();
+            switch (timeStatus){
+                case "0"://当年的所有任务
+                    taskNoList1 = kyTaskInfoService.getKyTaskNoByNameCurrYear(sysDepartName);
+                    break;
+                case "1"://上一年的所有任务
+                    taskNoList1 = kyTaskInfoService.getKyTaskNoByNameLastYear(sysDepartName);
+                    break;
+                case "2"://当月的所有任务
+                    taskNoList1 = kyTaskInfoService.getKyTaskNoByNameCurrMonth(sysDepartName);
+                    break;
+                case "3"://上个月的所有任务
+                    taskNoList1 = kyTaskInfoService.getKyTaskNoByNameLastMonth(sysDepartName);
+                    break;
+                case "4"://上一年同月的所有任务
+                    taskNoList1 = kyTaskInfoService.getKyTaskNoByNameTqMonth(sysDepartName);
+                    break;
+                default:
+                    System.out.println("默认没有任务");
+                    break;
+            }
+
+//            List<String> taskNoList1 = kyTaskInfoService.getKyTaskNoByNameCurrYear(sysDepartName);
+            System.out.println(taskNoList1);
+            taskNoList.addAll(taskNoList1);
+            System.out.println(taskNoList);
+        }
+        //新建一个list来给list中的数据去重   防止责任部门和下达部门都为一个部门,可能会信息重复
+        List<String> taskNoListNew = new ArrayList<>();
+        for(String taskNo:taskNoList){
+            if (!taskNoListNew.contains(taskNo)) {
+                taskNoListNew.add(taskNo);
+            }
+        }
+        return taskNoListNew;
+    }
+
+    /**
+     * 计算当年的年总利润额、上一年同期总利润额、年同比增长、当月总利润额、当月同比、当月环比
+     *
+     * @return
+     */
+    public Result<LreDataInfoVO> countLre(){
+        BigDecimal initValue = BigDecimal.valueOf(0);
+        LreDataInfoVO lreDataInfoVO = new LreDataInfoVO();
+        lreDataInfoVO.setLreYearTotal(initValue);
+        lreDataInfoVO.setLreYearTq(initValue);
+        lreDataInfoVO.setLreYearTb(initValue);
+        lreDataInfoVO.setLreMonthTotal(initValue);
+        lreDataInfoVO.setLreMonthTb(initValue);
+        lreDataInfoVO.setLreMonthHb(initValue);
+
+        BigDecimal eValue = new BigDecimal("1");
+
+        //1.通过登录的用户找到相应的部门,可能一个或两个
+        List<String> sysDepartNames = getDepNameBySysUser();
+        //2.计算当年的总利润额
+        List<String> taskNoListNew = getTaskNoListFDepTime(sysDepartNames, "0");
+        System.out.println("当年的任务号列表:");
+        System.out.println(taskNoListNew);
+        BigDecimal sumLreYear = countLre(taskNoListNew);
+        System.out.println("当年的利润额为:");
+        System.out.println(sumLreYear);
+        lreDataInfoVO.setLreYearTotal(sumLreYear);
+        System.out.println("----------------------------------------------------");
+
+        //2.计算上一年的总利润额
+        List<String> taskNoListNew2 = getTaskNoListFDepTime(sysDepartNames, "1");
+        System.out.println("上一年的任务号列表:");
+        System.out.println(taskNoListNew2);
+        BigDecimal sumLreLastYear = countLre(taskNoListNew2);
+        System.out.println("上一年的利润额为:");
+        System.out.println(sumLreLastYear);
+        lreDataInfoVO.setLreYearTq(sumLreLastYear);
+        System.out.println("----------------------------------------------------");
+
+        //2.计算年同比增长率
+        try{
+            BigDecimal tbGrowthYear = ((sumLreYear.subtract(sumLreLastYear)).divide(sumLreLastYear, 2, RoundingMode.HALF_UP));
+            lreDataInfoVO.setLreYearTb(tbGrowthYear);
+            System.out.println("年利润同比增长率为:");
+            System.out.println(tbGrowthYear);
+            System.out.println("----------------------------------------------------");
+        }catch (Exception e){
+            lreDataInfoVO.setLreYearTb(eValue);
+        }
+
+        //2.计算当月的总利润额
+        List<String> taskNoListNew3 = getTaskNoListFDepTime(sysDepartNames, "2");
+        System.out.println("当月的任务号列表:");
+        System.out.println(taskNoListNew3);
+        BigDecimal sumLreCurrMonth = countLre(taskNoListNew3);
+        System.out.println("当月的利润额为:");
+        System.out.println(sumLreCurrMonth);
+        lreDataInfoVO.setLreMonthTotal(sumLreCurrMonth);
+        System.out.println("----------------------------------------------------");
+
+        //2.计算上个月的总利润额
+        List<String> taskNoListNew4 = getTaskNoListFDepTime(sysDepartNames, "3");
+        System.out.println("上个月的任务号列表:");
+        System.out.println(taskNoListNew4);
+        BigDecimal sumLreLastMonth = countLre(taskNoListNew4);
+        System.out.println("上个月的利润额为:");
+        System.out.println(sumLreLastMonth);
+        System.out.println("----------------------------------------------------");
+
+        //2.计算月环比增长率
+        try{
+            BigDecimal hbGrowthMonth = ((sumLreCurrMonth.subtract(sumLreLastMonth)).divide(sumLreLastMonth, 2, RoundingMode.HALF_UP));
+            lreDataInfoVO.setLreMonthHb(hbGrowthMonth);
+            System.out.println("月环比为:");
+            System.out.println(hbGrowthMonth);
+            System.out.println("----------------------------------------------------");
+        }catch (Exception e){
+            lreDataInfoVO.setLreMonthHb(eValue);
+        }
+
+        //2.计算去年同期月份的总利润额
+        List<String> taskNoListNew5 = getTaskNoListFDepTime(sysDepartNames, "4");
+        System.out.println("去年同期月份的任务号列表:");
+        System.out.println(taskNoListNew5);
+        BigDecimal sumLreTqMonth = countLre(taskNoListNew5);
+        System.out.println("去年同期月份的利润额为:");
+        System.out.println(sumLreTqMonth);
+        System.out.println("----------------------------------------------------");
+
+        //2.计算月同比增长率
+        try {
+            BigDecimal tbGrowthMonth = ((sumLreCurrMonth.subtract(sumLreTqMonth)).divide(sumLreTqMonth, 2, RoundingMode.HALF_UP));
+            lreDataInfoVO.setLreMonthTb(tbGrowthMonth);
+            System.out.println("月同比为:");
+            System.out.println(tbGrowthMonth);
+            System.out.println("----------------------------------------------------");
+        }catch (Exception e){
+            lreDataInfoVO.setLreMonthTb(eValue);
+        }
+        return Result.OK(lreDataInfoVO);
+    }
+
 }

+ 20 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfo/mapper/KyTaskInfoMapper.java

@@ -1,9 +1,14 @@
 package org.jeecg.modules.kyTaskInfo.mapper;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.kyTaskInfo.entity.KyTaskInfo;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * @Description: ky_task_info
  * @Author: jeecg-boot
@@ -16,4 +21,19 @@ public interface KyTaskInfoMapper extends BaseMapper<KyTaskInfo> {
     @Select("select * from ky_task_info where taskno = #{taskno}")
     public KyTaskInfo getKyTaskInfoByTaskno(String taskno);
 
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按年查询*/
+    public List<String> getKyTaskNoByNameCurrYear(String depName);
+
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按上一年查询*/
+    public List<String> getKyTaskNoByNameLastYear(String depName);
+
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按当月查询*/
+    public List<String> getKyTaskNoByNameCurrMonth(String depName);
+
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按上个月查询*/
+    public List<String> getKyTaskNoByNameLastMonth(String depName);
+
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按去年同期月份查询*/
+    public List<String> getKyTaskNoByNameTqMonth(String depName);
+
 }

+ 47 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfo/mapper/xml/KyTaskInfoMapper.xml

@@ -1,5 +1,52 @@
 <?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="org.jeecg.modules.kyTaskInfo.mapper.KyTaskInfoMapper">
+    <!--根据部门和实际完成时间 当年-->
+    <select id="getKyTaskNoByNameCurrYear" parameterType="String" resultType="String">
+        select taskno from ky_task_info
+        <where>
+            <if test="depName!=null and depName!=''">
+                and (zrbm=#{depName} or jycs=#{depName}) and (DATE(sjwcsj) BETWEEN CONCAT(YEAR(NOW()), '-01-01') AND NOW())
+            </if>
+        </where>
+    </select>
+    <!--根据部门和实际完成时间  上一年-->
+    <select id="getKyTaskNoByNameLastYear" parameterType="String" resultType="String">
+        select taskno from ky_task_info
+        <where>
+            <if test="depName!=null and depName!=''">
+                and (zrbm=#{depName} or jycs=#{depName}) and (DATE(sjwcsj) BETWEEN CONCAT(YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)), '-01-01') AND DATE_SUB(NOW(), INTERVAL 1 YEAR))
+            </if>
+        </where>
+    </select>
+    <!--根据部门和实际完成时间  当月-->
+    <select id="getKyTaskNoByNameCurrMonth" parameterType="String" resultType="String">
+        select taskno from ky_task_info
+        <where>
+            <if test="depName!=null and depName!=''">
+                and (zrbm=#{depName} or jycs=#{depName}) and (DATE(sjwcsj) BETWEEN CONCAT(YEAR(NOW()), '-', Month(NOW()), '-01') AND NOW())
+            </if>
+        </where>
+    </select>
+    <!--根据部门和实际完成时间  上个月-->
+    <select id="getKyTaskNoByNameLastMonth" parameterType="String" resultType="String">
+        select taskno from ky_task_info
+        <where>
+            <if test="depName!=null and depName!=''">
+                and (zrbm=#{depName} or jycs=#{depName}) and (DATE(sjwcsj) BETWEEN CONCAT(YEAR(NOW()), '-', Month(NOW())-1, '-01') AND DATE_SUB(NOW(), INTERVAL 1 MONTH))
+            </if>
+        </where>
+    </select>
+    <!--根据部门和实际完成时间  去年同期月份-->
+    <select id="getKyTaskNoByNameTqMonth" parameterType="String" resultType="String">
+        select taskno from ky_task_info
+        <where>
+            <if test="depName!=null and depName!=''">
+                and (zrbm=#{depName} or jycs=#{depName}) and (DATE(sjwcsj) BETWEEN CONCAT(YEAR(NOW())-1, '-', Month(NOW()), '-01') AND DATE_SUB(NOW(), INTERVAL 1 YEAR))
+            </if>
+        </where>
+    </select>
+
+
 
 </mapper>

+ 13 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfo/service/IKyTaskInfoService.java

@@ -1,8 +1,11 @@
 package org.jeecg.modules.kyTaskInfo.service;
 
+import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.kyTaskInfo.entity.KyTaskInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: ky_task_info
  * @Author: jeecg-boot
@@ -14,4 +17,14 @@ public interface IKyTaskInfoService extends IService<KyTaskInfo> {
     /**根据任务号查科研任务的业务员和下达部门*/
     public KyTaskInfo getKyTaskInfoByTaskno(String taskno);
 
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按年查询*/
+    public List<String> getKyTaskNoByNameCurrYear(String depName);
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按上一年年查询*/
+    public List<String> getKyTaskNoByNameLastYear(String depName);
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按当月查询*/
+    public List<String> getKyTaskNoByNameCurrMonth(String depName);
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按上个月查询*/
+    public List<String> getKyTaskNoByNameLastMonth(String depName);
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按去年同期月份查询*/
+    public List<String> getKyTaskNoByNameTqMonth(String depName);
 }

+ 24 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfo/service/impl/KyTaskInfoServiceImpl.java

@@ -10,6 +10,8 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.List;
+
 /**
  * @Description: ky_task_info
  * @Author: jeecg-boot
@@ -29,4 +31,26 @@ public class KyTaskInfoServiceImpl extends ServiceImpl<KyTaskInfoMapper, KyTaskI
         return kyTaskInfoMapper.getKyTaskInfoByTaskno(taskno);
     }
 
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按年查询*/
+    public List<String> getKyTaskNoByNameCurrYear(String depName){
+        return kyTaskInfoMapper.getKyTaskNoByNameCurrYear(depName);
+    }
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按上一年年查询*/
+    public List<String> getKyTaskNoByNameLastYear(String depName){
+        return kyTaskInfoMapper.getKyTaskNoByNameLastYear(depName);
+    }
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按当月查询*/
+    public List<String> getKyTaskNoByNameCurrMonth(String depName){
+        return kyTaskInfoMapper.getKyTaskNoByNameCurrMonth(depName);
+    }
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按上个月查询*/
+    public List<String> getKyTaskNoByNameLastMonth(String depName){
+        return kyTaskInfoMapper.getKyTaskNoByNameLastMonth(depName);
+    }
+    /**根据部门名称和实际完成时间查询任务号  @param depName 部门名称  此处按去年同期月份查询*/
+    public List<String> getKyTaskNoByNameTqMonth(String depName){
+        return kyTaskInfoMapper.getKyTaskNoByNameTqMonth(depName);
+    }
+
+
 }

+ 4 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCost/mapper/ProjectCostMapper.java

@@ -29,6 +29,10 @@ public interface ProjectCostMapper extends BaseMapper<ProjectCost> {
      */
     public List<ProjectCost> compareListByIds(@Param("ids") List<String> ids);
 
+    /**根据任务号查询项目成本中的相应数据*/
+    @Select("select * from kzks_project_cost where taskno=#{taskno}")
+    public List<ProjectCost> costListByTaskNo(@Param("taskno")String taskno);
+
     List<String>  queryZrbmTasknoListbydepartNames(@Param("departNames") List<String>  departNames);
 
     List<String>  queryXdbmTasknoListbydepartNames(@Param("departNames") List<String>  departNames);

+ 3 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCost/service/IProjectCostService.java

@@ -34,4 +34,7 @@ public interface IProjectCostService extends IService<ProjectCost> {
     public List<ProjectCost> compareListByIds(List<String> ids);
 
 
+    /**根据任务号查询项目成本中的相应数据*/
+    public List<ProjectCost> costListByTaskNo(String taskno);
+
 }

+ 10 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCost/service/impl/ProjectCostServiceImpl.java

@@ -68,4 +68,14 @@ public class ProjectCostServiceImpl extends ServiceImpl<ProjectCostMapper, Proje
         return projectCostMapper.compareListByIds(ids);
     }
 
+    /**根据任务号查询项目成本中的相应数据*/
+    public List<ProjectCost> costListByTaskNo(String taskno){
+        return projectCostMapper.costListByTaskNo(taskno);
+    }
+
+
+
+
+
+
 }