Browse Source

修改提交

9060 7 months ago
parent
commit
4fb8031c3a

+ 2 - 1
app/workSheetSystem/pom.xml

@@ -53,7 +53,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>druid</artifactId>
-            <version>1.2.6</version>
+            <version>1.2.16</version>
         </dependency>
         <!--整合Shiro安全框架-->
         <dependency>
@@ -244,6 +244,7 @@
         </profile>
         <profile>
             <id>pro</id>
+
             <dependencies>
                 <!-- 生产环境特有的依赖 -->
                 <dependency>

+ 14 - 13
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/controller/PersonWorkController.java

@@ -46,12 +46,8 @@ public class PersonWorkController {
 
     public static boolean setIfAbsent(String token,Object o){
         boolean b =false;
-        if (Objects.equals(o, HutoolCacheUtils.get(token)) ) {
-            b = false;
-        }else {
-            b=true;
-        }
-        HutoolCacheUtils.put(token, o);
+        b = Objects.equals(o, HutoolCacheUtils.get(token));
+        HutoolCacheUtils.put(token, o,3);
         return b;
     }
 
@@ -101,7 +97,7 @@ public class PersonWorkController {
             if (StringUtils.isEmpty(number)) {
                 return MessageResult.error("token异常");
             }
-            String keyToken = token + "insertWork";
+            String keyToken = number + "insertWork";
             if (setIfAbsent(keyToken,jobWork)) {
                 return MessageResult.error("您已提交该报工,请勿重复提交");
             }
@@ -220,8 +216,13 @@ public class PersonWorkController {
                 if (2==(jobWork.getState())) {
                     List<Map<String, Object>> billList = (List<Map<String, Object>>) objectMap.get("billList");
                     for (Map<String, Object> stringObjectMap : billList) {
-                        String id = (String) stringObjectMap.get("id");
-                        int i = personWorkService.submitWork(userNumber, id,shrClient);
+                        int num = personWorkService.checkWorkSibmit(stringObjectMap);
+                        if(num>0 && num<2){
+                            String id = (String) stringObjectMap.get("id");
+                            int i = personWorkService.submitWork(userNumber, id,shrClient);
+                        }else {
+                            resultV2 = MessageResult.fail("提交出错,存在重复单据");
+                        }
                     }
                 }
             }else {
@@ -307,7 +308,7 @@ public class PersonWorkController {
             if (StringUtils.isEmpty(number)) {
                 return MessageResult.error("token异常");
             }
-            String keyToken = token+"updateWork";
+            String keyToken = number+"updateWork";
             if (setIfAbsent(keyToken,jobWork)) {
                 return MessageResult.error("您已提交该报工,请勿重复提交");
             }
@@ -375,7 +376,7 @@ public class PersonWorkController {
         if (StringUtils.isEmpty(number)) {
             return MessageResult.error("token异常");
         }
-        String keyToken = token+"deleteWork";
+        String keyToken = number+"deleteWork";
         if (setIfAbsent(keyToken,id)) {
             return MessageResult.error("您已提交该报工,请勿重复提交");
         }
@@ -414,7 +415,7 @@ public class PersonWorkController {
         if (StringUtils.isEmpty(number)) {
             return MessageResult.error("token异常");
         }
-        String keyToken = token+"submitWork";
+        String keyToken = number+"submitWork";
         if (setIfAbsent(keyToken,id)) {
             return MessageResult.error("您已提交该报工,请勿重复提交");
         }
@@ -438,7 +439,7 @@ public class PersonWorkController {
         if (StringUtils.isEmpty(number)) {
             return MessageResult.error("token异常");
         }
-        String keyToken = token+"revocaWork";
+        String keyToken = number+"revocaWork";
         if (setIfAbsent(keyToken,id)) {
             return MessageResult.error("您已提交该报工,请勿重复提交");
         }

+ 2 - 0
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/model/mapper/PersonWorkMapper.java

@@ -29,4 +29,6 @@ public interface PersonWorkMapper {
 
         int deleteWork(String id);
         int deleteWorkEntry(String id);
+
+        int checkWorkSibmit(@Param("bill") Map<String, Object> bill);
 }

+ 12 - 0
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/model/mapper/PersonWorkMapper.xml

@@ -202,6 +202,18 @@
         where whr.fid =#{id}
         and whr.CFDATASOURCE='employeeReport'
     </select>
+    <select id="checkWorkSibmit" resultType="java.lang.Integer">
+        select count(fid) from CT_PRO_WorkHoursReport
+        where CFAFFILIATEDPROJEC=#{affiliatedProject}
+          and to_char(CFFILLINGSTARTDATE,'yyyy-MM-dd')=#{fillingStartDate}
+          and to_char(CFFILLINGENDDATE,'yyyy-MM-dd')=#{fillingEndDate}
+          and FADMINORGUNITID =#{adminOrg}
+          and cfpersonId=#{personId}
+          and CFPROJECTTYPEID =#{ptypeId}
+          and CFPROJECTROLEID=#{projectRoleId}
+          and FDESCRIPTION=#{jobContent}
+          and CFWORKINGHOURS=#{WorkingHours}
+    </select>
     <delete id="deleteWork" parameterType="String">
         delete CT_PRO_WorkHoursReport where fid =#{id}
     </delete>

+ 3 - 0
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/service/PersonWorkService.java

@@ -6,6 +6,7 @@ import com.qy.worksheetsystem.model.entity.JobBooking;
 import com.qy.worksheetsystem.util.JWTUtil;
 import com.qy.worksheetsystem.vo.InsertJobWorkingVO;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.repository.query.Param;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
@@ -57,4 +58,6 @@ public interface PersonWorkService {
 
     @Transactional
     public Map<String,Object> revocaWorkToMap(String userNumber, String id, SHRClient shrClient);
+
+    int checkWorkSibmit(Map<String, Object> bill);
 }

+ 10 - 1
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/service/impl/PersonWorkServiceImpl.java

@@ -85,7 +85,7 @@ public class PersonWorkServiceImpl implements PersonWorkService {
 
     @Override
     @Transactional
-    public Map<String, Object> insertWork(Map<String, Object> param, SHRClient shrClient) {
+    public synchronized Map<String, Object> insertWork(Map<String, Object> param, SHRClient shrClient) {
         List<Map<String, Object>> billList = Lists.newArrayList();
         List<Map<String, Object>> workList = Lists.newArrayList();
         int begin = (int) param.get("begin");
@@ -482,6 +482,12 @@ public class PersonWorkServiceImpl implements PersonWorkService {
         }
         return map;
     }
+
+    @Override
+    public int checkWorkSibmit(Map<String, Object> bill) {
+        return personWorkMapper.checkWorkSibmit(bill);
+    }
+
     @Override
     @Transactional
     public Map<String, Object> revocaWorkToMap(String number, String id) {
@@ -502,4 +508,7 @@ public class PersonWorkServiceImpl implements PersonWorkService {
         }
         return result;
     }
+
+
+
 }

+ 1 - 1
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/util/HutoolCacheUtils.java

@@ -19,7 +19,7 @@ public class HutoolCacheUtils {
     /**
      * 默认清理间隔时间 单位s
      */
-    private static final Long CLEAN_TIMEOUT = DateUnit.SECOND.getMillis() * 10;
+    private static final Long CLEAN_TIMEOUT = DateUnit.SECOND.getMillis() * 100;
     /**
      * 全局时间超时缓存,构造器启动每秒检测。
      */

+ 5 - 6
app/workSheetSystem/src/main/resources/application.yml

@@ -1,12 +1,6 @@
 spring:
-  http:
-    encoding:
-      charset: UTF-8
-      enabled: true
-      force: true
   profiles:
     active: dev
-
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     #引入druid数据源
@@ -58,6 +52,11 @@ server:
     worker-threads: 128 # 阻塞任务线程池大小
     buffer-size: 1024 # 每个缓冲区的大小
     direct-buffers: true # 是否分配直接内存
+  servlet:
+    encoding:
+      charset: UTF-8
+      enabled: true
+      force: true
 #  ssl:
 #    key-store: classpath:7494583_oa.ysstech.com.pfx
 #    key-store-password: 95zCuxIB

+ 160 - 57
websrc/com/kingdee/eas/hr/perf/handler/EvaResultSummaryManagerListHandlerExEx.java

@@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import com.grapecity.documents.excel.O;
 import com.kingdee.bos.BOSException;
 import com.kingdee.bos.Context;
 import com.kingdee.bos.metadata.entity.*;
@@ -40,6 +39,8 @@ import java.math.BigDecimal;
 import java.sql.SQLException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
+import java.time.Month;
+import java.time.Year;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
@@ -47,9 +48,11 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
 
     private static final Logger logger = LoggerFactory.getLogger(EvaResultSummaryManagerListHandlerExEx.class);
 
+
+
+
     public void batchSaveReviseDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException {
         Context ctx = SHRContext.getInstance().getContext();
-
         List unValidIds;
         try {
             unValidIds = EvaResultSummaryBillUtil.validEvaResultSummaryBill(ctx, (String)null, request.getParameter("billId"), "10");
@@ -114,6 +117,8 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                     evaResultSummaryCollection.add(evaResultSummaryInfo);
                 }else {
                     evaResultSummaryInfo.put("perCoefficient", perCoefficientObj);
+                    evaResultSummaryInfo.put("perMaxCoefficient", perMaxCoefficientObj);
+                    evaResultSummaryInfo.put("perMinCoefficient", perMinCoefficientObj);
                     BigDecimal perMaxCoefficient = new BigDecimal(perMaxCoefficientObj.toString());
                     BigDecimal perMinCoefficient = new BigDecimal(perMinCoefficientObj.toString());
                     BigDecimal perCoefficient = new BigDecimal(perCoefficientObj.toString());
@@ -301,6 +306,31 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
             }
         }
     }
+    public Map<String,Map<String,Object>> getPerformanceLevelByLevelAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws ShrWebBizException {
+
+        Map<String,Map<String,Object>> result = Maps.newHashMap();
+        try {
+            Context ctx = SHRContext.getInstance().getContext();
+            String sql = "select CFLEVEL,CFCOEFFICIENT,CFMAXCOEFFICIENT,CFMINCOEFFICIENT from CT_PER_PerformanceLevel ";
+            IRowSet rs = DbUtil.executeQuery(ctx,sql.toString());
+            while (rs.next()){
+                Map<String,Object> map = Maps.newHashMap();
+                String CFLEVEL=rs.getString("CFLEVEL");
+                BigDecimal CFCOEFFICIENT=rs.getBigDecimal("CFCOEFFICIENT");
+                BigDecimal CFMAXCOEFFICIENT=rs.getBigDecimal("CFMAXCOEFFICIENT");
+                BigDecimal CFMINCOEFFICIENT=rs.getBigDecimal("CFMINCOEFFICIENT");
+                map.put("level",CFLEVEL);
+                map.put("coefficient",CFCOEFFICIENT);
+                map.put("maxcoefficient",CFMAXCOEFFICIENT);
+                map.put("mincoefficient",CFMINCOEFFICIENT);
+                result.put(CFLEVEL,map);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new ShrWebBizException(e.getMessage());
+        }
+        return result;
+    }
     /**
      * 获取绩效系数
      * @param request
@@ -380,6 +410,7 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                 initData.put("perobjectId","");
                 initData.put("projectName","");
             }
+            initData.put("performanceLevel",this.getPerformanceLevelByLevelAction(request,response,modelMap));
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -834,7 +865,7 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
         orgLevelSql.append("       and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
         orgLevelSql.append("       order by adcount.fsortcode) FADMINORGUNITID,s1.FPERIODID,s1.FEVAPLANID,isnull(s1.FREVISEGRADELEVEL,s1.FGRADELEVEL) revLevel  ");
         orgLevelSql.append("     from T_EVA_EvaResultSummary s1 ");
-        orgLevelSql.append("  where  s1.FPERIODID=? s1.FEVAPLANID=? ");
+        orgLevelSql.append("  where  s1.FPERIODID=? and s1.FEVAPLANID=? ");
         orgLevelSql.append(" ) t ");
         orgLevelSql.append(" group by FADMINORGUNITID, FPERIODID,FEVAPLANID,revLevel ");
 //        orgLevelSql.append(" select count(*) lens,FADMINORGUNITID,FPERIODID,FEVAPLANID,revLevel from ( ");
@@ -1332,15 +1363,21 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                     sql.append(",'").append(id).append("'");
                 }
                 sql.append(" ) ");
-                LocalDate startDate = null;
-                LocalDate endDate = null;
-                EvalplanCycleTypeEnum cycleTypeEnum = null;
+
                 IRowSet rsSql = DbUtil.executeQuery(ctx, sql.toString());
                 boolean faist = true;
+                Map<String, Object> cycleMap=null;
+                Map<String, Object> cycleMap2=null;
                 while (rsSql.next()) {
                     String id = rsSql.getString("fid");
                     String orgId = rsSql.getString("FADMINORGUNITID");
+                    IRowSet rs = DbUtil.executeQuery(ctx,"select fname_l2 from t_org_admin where fid='"+orgId+"'");
                     String orgName = rsSql.getString("FADMINORGNAME");
+                    String orgName_l2=orgName;
+                    if(rs.next()) {
+                        orgName_l2=rs.getString("fname_l2");
+                    }
+
                     String FBILLSTATE = rsSql.getString("FBILLSTATE");
 
                     if (faist) {
@@ -1348,16 +1385,25 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                         int FCYCLETYPE = rsSql.getInt("FCYCLETYPE");
                         Date FPENDDATE = rsSql.getDate("FPENDDATE");
                         Date FPSTARTDATE = rsSql.getDate("FPSTARTDATE");
-                        Map<String, Object> cycleMap = this.getCycletype(sf.format(FPSTARTDATE), sf.format(FPENDDATE), FCYCLETYPE);
-                        cycleTypeEnum = (EvalplanCycleTypeEnum) cycleMap.get("cycleType");
-                        endDate = (LocalDate) cycleMap.get("endDate");
-                        startDate = (LocalDate) cycleMap.get("startDate");
+
+                        cycleMap = this.getCycletype(sf.format(FPSTARTDATE), sf.format(FPENDDATE), EvalplanCycleTypeEnum.QUARTER_VALUE);
+                        cycleMap2 = this.getCycletype(sf.format(FPSTARTDATE), sf.format(FPENDDATE), EvalplanCycleTypeEnum.FULL_YEAR_VALUE);
                     }
-                    id_orgIdMap.put(id, orgId + "!" + orgName+"!"+FBILLSTATE);
+                    id_orgIdMap.put(id, orgId + "!" + orgName_l2+"!"+FBILLSTATE);
                 }
                 List<String> sess = Lists.newArrayList();
-                //T_EVA_OrgEvaResultSummary
-                Map<String, Map<String, String>> mapMap = this.getOrgEvaResultLevel(ctx, startDate, endDate, cycleTypeEnum);
+                EvalplanCycleTypeEnum cycleTypeEnum = (EvalplanCycleTypeEnum) cycleMap.get("cycleType");
+                LocalDate endDate = (LocalDate) cycleMap.get("endDate");
+                LocalDate startDate = (LocalDate) cycleMap.get("startDate");
+                int year = (int) cycleMap.get("year");
+                int quarter = (int) cycleMap.get("quarter");
+                EvalplanCycleTypeEnum cycleTypeEnum2 = (EvalplanCycleTypeEnum) cycleMap2.get("cycleType");
+                LocalDate endDate2 = (LocalDate) cycleMap2.get("endDate");
+                LocalDate startDate2 = (LocalDate) cycleMap2.get("startDate");
+                int year2 = (int) cycleMap2.get("year");
+                int quarter2 = (int) cycleMap2.get("quarter");
+                Map<String, Map<String, String>> mapMap = this.getOrgEvaResultLevel(ctx, startDate, endDate, cycleTypeEnum,year,quarter);
+                Map<String, Map<String, String>> mapMap2 = this.getOrgEvaResultLevel(ctx, startDate2, endDate2, cycleTypeEnum2,year2,quarter2);
                 for (Map.Entry<String, String> ee : id_orgIdMap.entrySet()) {
                     String[] orgs = ee.getValue().split("!");
                     String orgId = orgs[0];
@@ -1366,6 +1412,9 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
                     String id = ee.getKey();
                     if (!"3".equals(FBILLSTATE)){
                         Map<String, String> orgLevelMap = mapMap.get(orgId);
+                        if (null == orgLevelMap) {
+                          orgLevelMap=mapMap2.get(orgId);
+                        }
                         if (null == orgLevelMap) {
                             batchMessage.put(id, "未找到当前" + orgName + "部门匹配的组织绩效等级");
                         } else {
@@ -1387,7 +1436,7 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
         return batchMessage;
     }
 
-    public Map<String, Object> getCycletype(String pstartdate, String penddate, int cycletype) {
+    public static Map<String, Object> getCycletype(String pstartdate, String penddate, int cycletype) {
         Map<String, Object> map = Maps.newHashMap();
         LocalDate startDate = LocalDate.parse(pstartdate, DateTimeFormatter.ISO_LOCAL_DATE);
         LocalDate endDate = LocalDate.parse(penddate, DateTimeFormatter.ISO_LOCAL_DATE);
@@ -1397,25 +1446,67 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
             endDate = endDate.plusYears(-1);
             startDate = startDate.plusYears(-1);
             cycleTypeEnum = EvalplanCycleTypeEnum.FULL_YEAR;
+            int month = startDate.getMonthValue();
+            //获取为季度
+            int quarter = (month - 1) / 3;
+            int year = endDate.getYear();
+
+            map.put("year", year);
+            map.put("quarter", 1);
         } else if (EvalplanCycleTypeEnum.HALF_YEAR_VALUE == cycletype) {
             //周期为半年度
             endDate = endDate.plusMonths(-6);
             startDate = startDate.plusMonths(-6);
             cycleTypeEnum = EvalplanCycleTypeEnum.HALF_YEAR;
-        } else if (EvalplanCycleTypeEnum.QUARTER_VALUE == cycletype) {
+            int month = startDate.getMonthValue();
             //获取为季度
-            endDate = endDate.plusMonths(-3);
-            startDate = startDate.plusMonths(-3);
+            int quarter = (month - 1) / 3;
+            int year = endDate.getYear();
+            if(0==quarter){
+                year=year-1;
+                quarter=4;
+            }
+            map.put("year", year);
+            map.put("quarter", month<7?1:2);
+        } else if (EvalplanCycleTypeEnum.QUARTER_VALUE == cycletype) {
+
+            int month = startDate.getMonthValue();
+
+            //获取为季度0~3季度
+            int quarter = (month - 1) / 3;
+            //当前季度为第一季度,则需取上一年度的季度
+            int year = endDate.getYear();
+            if(0==quarter){
+                year=year-1;
+                quarter=4;
+            }
+            Month endMonth = Month.of(quarter*3);
+            endDate = LocalDate.of(year,endMonth,endMonth.length(endDate.isLeapYear()));
+            Month startMonth = Month.of(endMonth.getValue()-2);
+            startDate = LocalDate.of(year,startMonth,1);
             cycleTypeEnum = EvalplanCycleTypeEnum.QUARTER;
+            map.put("year", year);
+            map.put("quarter", quarter);
         } else if (EvalplanCycleTypeEnum.MONTHLY_VALUE == cycletype) {
             //获取为季度
             endDate = endDate.plusMonths(-1);
             startDate = startDate.plusMonths(-1);
             cycleTypeEnum = EvalplanCycleTypeEnum.MONTHLY;
+            int month = startDate.getMonthValue();
+            //获取为季度
+            int quarter = (month - 1) / 3;
+            int year = endDate.getYear();
+            if(0==quarter){
+                year=year-1;
+                quarter=4;
+            }
+            map.put("year", year);
+            map.put("quarter", quarter);
         }
         map.put("cycleType", cycleTypeEnum);
         map.put("endDate", endDate);
         map.put("startDate", startDate);
+
         return map;
     }
 
@@ -1445,33 +1536,71 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
         }
     }
 
+    protected Map<String, Map<String, String>> getOrgEvaResultLevel(Context ctx, LocalDate startDate, LocalDate endDate,EvalplanCycleTypeEnum cycletype,int year,int quarter) throws BOSException, SQLException {
+        //202404J
+        String FPERIODNAME = "";
+        if (EvalplanCycleTypeEnum.FULL_YEAR == cycletype) {
+            FPERIODNAME=year+"M";
+        } else if (EvalplanCycleTypeEnum.HALF_YEAR == cycletype) {
+            FPERIODNAME=year+"0"+quarter+"H";
+        } else if (EvalplanCycleTypeEnum.QUARTER == cycletype) {
+            FPERIODNAME=year+"0"+quarter+"J";
+        } else if (EvalplanCycleTypeEnum.MONTHLY == cycletype) {
+            FPERIODNAME=year+(quarter>9?(""+quarter):("0"+quarter))+"M";
+        }
+        return this.getOrgEvaResultLevel(ctx, startDate, endDate, cycletype,FPERIODNAME,year,quarter);
+    }
     protected Map<String, Map<String, String>> getOrgEvaResultLevel(Context ctx, LocalDate startDate, LocalDate endDate) throws BOSException, SQLException {
-        return this.getOrgEvaResultLevel(ctx, startDate, endDate, EvalplanCycleTypeEnum.QUARTER);
+        return this.getOrgEvaResultLevel(ctx, startDate, endDate, EvalplanCycleTypeEnum.QUARTER,"",2000,1);
     }
-
-    protected Map<String, Map<String, String>> getOrgEvaResultLevel(Context ctx, LocalDate startDate, LocalDate endDate, EvalplanCycleTypeEnum cycletype) throws BOSException, SQLException {
+    protected Map<String, Map<String, String>> getOrgEvaResultLevel(Context ctx, LocalDate startDate, LocalDate endDate, EvalplanCycleTypeEnum cycletype, String FPERIODNAME,int year,int quarter) throws BOSException, SQLException {
         Map<String, Map<String, String>> mapMap = Maps.newHashMap();
         StringBuffer selSql = new StringBuffer();
         selSql.append(" select oers.fid oersId, ");
-        selSql.append(" (select top 1 adcount.fid from T_ORG_Admin child   ");
-        selSql.append(" left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
-        selSql.append(" where child.fid=oers.FADMINORGUNITID  ");
-        selSql.append(" and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
-        selSql.append(" order by adcount.fsortcode) FADMINORGUNITID ");
-        selSql.append(" ,oers.FLASTGRADELEVEL,(case when ppd.fid is null ");
+        selSql.append(" oers.FADMINORGUNITID FADMINORGUNITID, ");
+        selSql.append(" oers.FLASTGRADELEVEL,(case when ppd.fid is null ");
         selSql.append(" then (oers.FPERIODYEAR||'-01-'||'01')||'T'|| (oers.FPERIODYEAR||'-01-'||'01')  ");
         selSql.append(" else (to_char(ppd.FPSTARTDATE,'yyyy-MM-dd')||'T'||to_char(ppd.FPENDDATE,'yyyy-MM-dd')) end) PERIOD ");
         selSql.append(" from T_EVA_OrgEvaResultSummary oers ");
         selSql.append(" left join T_EVA_PerfPeriod ppd on ppd.fid = oers.FPERIODID ");
         selSql.append(" where to_char(ppd.FPSTARTDATE,'yyyy-MM-dd') >=  ?  and to_char(ppd.FPENDDATE,'yyyy-MM-dd') <=  ?  ");
         selSql.append(" and ppd.FCYCLETYPE = ? and ppd.FREFSTATUS = 100 and oers.FBILLSTATE='3' ");
+        selSql.append(" and oers.FADMINORGUNITID in( ");
+        selSql.append(" select adcount.fid from T_ORG_Admin child ");
+        selSql.append(" left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
+        selSql.append(" where child.fid=oers.FADMINORGUNITID   and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
+        selSql.append(" ) ");
+        selSql.append(" UNION all ");
+        selSql.append(" select fid oersId, ");
+        selSql.append("         FADMINORGUNITID , ");
+        selSql.append("         FLASTGRADELEVEL,(FPERIODYEAR||'-'||(FPERIODTIME*3-2)||'-'||'01')||'T'|| (FPERIODYEAR||'-'||(FPERIODTIME*3)||'-'||?)  PERIOD ");
+        selSql.append(" from T_EVA_OrgEvaResultSummary where FEVAPLANNAME='手工录入' ");
+        selSql.append(" and FADMINORGUNITID  in( ");
+        selSql.append("         select adcount.fid from T_ORG_Admin child ");
+        selSql.append("         left join T_ORG_Admin adcount on (charindex(concat(adcount.flongnumber,'!'),child.flongnumber) = 1 or adcount.flongnumber = child.flongnumber) ");
+        selSql.append("         where child.fid=FADMINORGUNITID   and adcount.FLAYERTYPEID='00000000-0000-0000-0000-00000000000362824988' ");
+        selSql.append(" ) ");
+        selSql.append(" and FPERIODTIMENUMBER like ? ");
+        Month endMonth = Month.of(quarter*3);
+        Year year1 = Year.of(year);
+        int days = endMonth.length(year1.isLeap());
         String[] param = new String[]{startDate.format(DateTimeFormatter.ISO_LOCAL_DATE),
-                endDate.format(DateTimeFormatter.ISO_LOCAL_DATE), String.valueOf(cycletype.getValue())};
+                endDate.format(DateTimeFormatter.ISO_LOCAL_DATE),
+                String.valueOf(cycletype.getValue()),
+                ((days > 9)? String.valueOf(days) : ("0"+String.valueOf(days)) ),
+                (FPERIODNAME+"%")
+        };
         IRowSet rs = DbUtil.executeQuery(ctx, selSql.toString(), param);
         int i = selSql.indexOf("?");
         selSql.replace(i, i + 1, param[0]);
         i = selSql.indexOf("?");
         selSql.replace(i, i + 1, param[1]);
+        i = selSql.indexOf("?");
+        selSql.replace(i, i + 1, param[2]);
+        i = selSql.indexOf("?");
+        selSql.replace(i, i + 1, param[3]);
+        i = selSql.indexOf("?");
+        selSql.replace(i, i + 1, param[4]);
         System.out.println(selSql);
         while (rs.next()) {
             Map<String, String> stringMap = Maps.newHashMap();
@@ -1546,36 +1675,10 @@ public class EvaResultSummaryManagerListHandlerExEx extends EvaResultSummaryMana
         System.out.println(bigs);
         System.out.println(bigsList);
         Map<String, Object> map = Maps.newHashMap();
-        String pstartdate = "2025-10-01";
-        String penddate = "2025-12-31";
+        String pstartdate = "2024-10-01";
+        String penddate = "2024-10-31";
         int cycletype = 300;
-        LocalDate startDate = LocalDate.parse(pstartdate, DateTimeFormatter.ISO_LOCAL_DATE);
-        LocalDate endDate = LocalDate.parse(penddate, DateTimeFormatter.ISO_LOCAL_DATE);
-        EvalplanCycleTypeEnum cycleTypeEnum = EvalplanCycleTypeEnum.getEnum(cycletype);
-        if (EvalplanCycleTypeEnum.FULL_YEAR_VALUE == cycletype) {
-            //周期为年度
-            endDate = endDate.plusYears(-1);
-            startDate = startDate.plusYears(-1);
-            cycleTypeEnum = EvalplanCycleTypeEnum.FULL_YEAR;
-        } else if (EvalplanCycleTypeEnum.HALF_YEAR_VALUE == cycletype) {
-            //周期为半年度
-            endDate = endDate.plusMonths(-6);
-            startDate = startDate.plusMonths(-6);
-            cycleTypeEnum = EvalplanCycleTypeEnum.HALF_YEAR;
-        } else if (EvalplanCycleTypeEnum.QUARTER_VALUE == cycletype) {
-            //获取为季度
-            endDate = endDate.plusMonths(-3);
-            startDate = startDate.plusMonths(-3);
-            cycleTypeEnum = EvalplanCycleTypeEnum.QUARTER;
-        } else if (EvalplanCycleTypeEnum.MONTHLY_VALUE == cycletype) {
-            //获取为季度
-            endDate = endDate.plusMonths(-1);
-            startDate = startDate.plusMonths(-1);
-            cycleTypeEnum = EvalplanCycleTypeEnum.MONTHLY;
-        }
-        map.put("cycleType", cycleTypeEnum);
-        map.put("endDate", endDate);
-        map.put("startDate", startDate);
-        //System.out.println(map);
+
+        System.out.println(getCycletype(pstartdate,penddate,cycletype));
     }
 }

+ 3 - 0
websrc/com/kingdee/eas/hr/project/handler/MemberManagementEditHandler.java

@@ -13,6 +13,8 @@ import com.kingdee.eas.common.EASBizException;
 import com.kingdee.eas.framework.CoreBaseInfo;
 import com.kingdee.eas.framework.ICoreBase;
 import com.kingdee.eas.hr.project.*;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
 import com.kingdee.shr.base.syssetting.context.SHRContext;
 import com.kingdee.shr.base.syssetting.exception.SHRWebException;
 
@@ -28,6 +30,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.sql.SQLException;
 import java.text.MessageFormat;
 import java.util.Map;
 

+ 84 - 6
websrc/com/kingdee/eas/hr/project/handler/MemberManagementListHandler.java

@@ -1,16 +1,22 @@
 package com.kingdee.eas.hr.project.handler;
 
+import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import com.kingdee.bos.BOSException;
 import com.kingdee.bos.Context;
+import com.kingdee.bos.ctrl.kdf.table.IRow;
 import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
-import com.kingdee.bos.metadata.entity.FilterInfo;
-import com.kingdee.bos.metadata.entity.FilterItemCollection;
-import com.kingdee.bos.metadata.entity.FilterItemInfo;
+import com.kingdee.bos.metadata.entity.*;
 import com.kingdee.bos.metadata.query.util.CompareType;
+import com.kingdee.bos.rabbitmq.guava.Lists;
+import com.kingdee.eas.basedata.person.PersonFactory;
 import com.kingdee.eas.basedata.person.PersonInfo;
 import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.framework.ICoreBase;
 import com.kingdee.eas.hr.project.*;
+import com.kingdee.eas.util.app.DbUtil;
+import com.kingdee.jdbc.rowset.IRowSet;
+import com.kingdee.shr.base.syssetting.SHRCommonFacadeFactory;
 import com.kingdee.shr.base.syssetting.context.SHRContext;
 import com.kingdee.shr.base.syssetting.exception.SHRWebException;
 import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
@@ -19,12 +25,18 @@ import com.kingdee.shr.base.syssetting.web.dynamic.model.ListUIViewInfo;
 import com.kingdee.shr.base.syssetting.web.dynamic.model.TreeNavigationInfo;
 import com.kingdee.shr.base.syssetting.web.dynamic.model.UIViewInfo;
 import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
+import com.kingdee.shr.base.syssetting.web.plugin.PluginUtil;
 import com.kingdee.util.StringUtils;
 import org.springframework.ui.ModelMap;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.sql.SQLException;
 import java.text.MessageFormat;
 import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -39,6 +51,7 @@ public class MemberManagementListHandler extends ProjectTreeListHandler {
     protected String pTypeManagerNumber = "ProjectManager";
 
     protected String pTypeNumber = "ProjectMember";
+
     @Override
     public String enableAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
         String billId = this.getBillId(request);
@@ -57,10 +70,22 @@ public class MemberManagementListHandler extends ProjectTreeListHandler {
                 MemberManagementInfo management = iManagement.getMemberManagementInfo(new ObjectUuidPK(str));
                 ProjectRoleInfo projectRole = management.getProjectRole();
                 PersonInfo personInfo = management.getEmployee();
-                ProjectTypeInfo pType = management.getPtype();
                 ProjectManagementInfo projectManagement = management.getProjectManagement();
-                projectRole =iProjectRole.getProjectRoleInfo(new ObjectUuidPK(projectRole.getId()));
+                ProjectTypeInfo pType = management.getPtype();
                 pType = iPType.getProjectTypeInfo(new ObjectUuidPK(pType.getId()));
+                projectRole =iProjectRole.getProjectRoleInfo(new ObjectUuidPK(projectRole.getId()));
+                //判断当前项目下有没有已经启用
+                StringBuilder selPe = new StringBuilder();
+                selPe.append(" select fid from CT_PRO_MEMBERMANAGEMENT ");
+                selPe.append(" where CFPROJECTMANAGEMENID = ? ");
+                selPe.append(" and CFEMPLOYEEID = ? ");
+                selPe.append(" and CFSTATE = 1 ");
+                IRowSet rs = DbUtil.executeQuery(ctx,selPe.toString(),new String[]{projectManagement.getId().toString(),personInfo.getId().toString()});
+                if(rs.next()){
+                    isHandleEnable=false;
+                    throw new ShrWebBizException("已经存在项目类别:" + pType.getName() + "的成员了,请先将该员工禁用后再启用,请检查。");
+                }
+
                 FilterInfo filterInfo = new FilterInfo();
                 filterInfo.getFilterItems().add(new FilterItemInfo("projectManagement.id", projectManagement.getId().toString(), CompareType.EQUALS));
                 //不为角色类型为项目经理时才判断角色
@@ -100,12 +125,65 @@ public class MemberManagementListHandler extends ProjectTreeListHandler {
             throw new RuntimeException(e);
         } catch (EASBizException e) {
             throw new RuntimeException(e);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
         }
         if(isHandleEnable){
-            super.handleEnable(request, "enable");
+            this.handleEnableEx(request, "enable");
         }
         return null;
     }
+    public String disableAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
+        return this.handleEnableEx(request, "disable");
+    }
+    protected String handleEnableEx(HttpServletRequest request, String methodName) throws SHRWebException {
+        String billId = this.getBillId(request);
+        String[] ids = billId.split(",");
+        ICoreBase iCoreBase = this.getBizInterface(request);
+        Context ctx = SHRContext.getInstance().getContext();
+        String[] var7;
+        int var8;
+        int var9;
+        String id;
+        if (!"disable".equals(methodName) && !"enable".equals(methodName)) {
+            throw new ShrWebBizException(MessageFormat.format(SHRWebResource.getString("com.kingdee.shr.base.syssetting.SHRSyssettingResource", "method_notexist"), iCoreBase.getName(), methodName));
+        } else {
+            var7 = ids;
+            var8 = ids.length;
+
+            for(var9 = 0; var9 < var8; ++var9) {
+                id = var7[var9];
+                this.doEnableBySqlEx(ctx ,id, methodName);
+            }
+
+            return null;
+        }
+    }
+    protected void doEnableBySqlEx(Context ctx,String billId, String math) throws SHRWebException {
+        try {
+
+            IMemberManagement iManagement = MemberManagementFactory.getLocalInstance(ctx);
+            MemberManagementInfo management = iManagement.getMemberManagementInfo(new ObjectUuidPK(billId));
+            ProjectManagementInfo projectManagement= ProjectManagementFactory.getLocalInstance(ctx).
+                    getProjectManagementInfo(new ObjectUuidPK(management.getProjectManagement().getId()));
+            PersonInfo personInfo= PersonFactory.getLocalInstance(ctx).
+                    getPersonInfo(new ObjectUuidPK(management.getEmployee().getId()));
+            if ("disable".equals(math)) {
+                String number= projectManagement.getNumber()+ "-" +personInfo.getNumber()+"-2";
+                management.setNumber(number);
+            }else if("enable".equals(math)){
+                String number= projectManagement.getNumber()+ "-" +personInfo.getNumber()+"-1";
+                management.setNumber(number);
+            }
+            System.out.println("doEnableBySqlEx:"+management.getNumber());
+            DbUtil.execute(ctx,"update CT_PRO_MemberManagement set fnumber='"+management.getNumber()+"' where fid='"+billId+"'");
+            SHRCommonFacadeFactory.getRemoteInstance().updateEnable(billId, math);
+        } catch (EASBizException var4) {
+            throw new ShrWebBizException(var4.getMessage(), var4);
+        } catch (BOSException var5) {
+            throw new SHRWebException(var5.getMessage(), var5);
+        }
+    }
     protected String getBillId(HttpServletRequest request) throws SHRWebException {
         String billId = (String)request.getAttribute("billId");
         if (StringUtils.isEmpty(billId)) {