Browse Source

更新校验可填报日历

9060 6 months ago
parent
commit
9c66d479d4

+ 92 - 6
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/controller/PersonWorkController.java

@@ -1,30 +1,41 @@
 package com.qy.worksheetsystem.controller;
 
+import com.google.common.collect.Maps;
 import com.qy.worksheetsystem.model.MessageResult;
 
 import com.qy.worksheetsystem.model.MessageResultV2;
+import com.qy.worksheetsystem.service.PersonService;
 import com.qy.worksheetsystem.service.PersonWorkService;
 import com.qy.worksheetsystem.service.WorkCalendarService;
 import com.qy.worksheetsystem.util.DateUtil;
 import com.qy.worksheetsystem.util.JWTUtil;
 import com.qy.worksheetsystem.vo.InsertJobWorkingVO;
+import com.qy.worksheetsystem.vo.WorkHoursReport;
+import com.qy.worksheetsystem.vo.WorkHoursReportEntry;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
-
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+@Slf4j
 @RestController
 @RequestMapping("/work/personwork")
 @Api(value = "工时填报",tags="工时填报")
 public class PersonWorkController {
     @Autowired
     private PersonWorkService personWorkService;
+    @Autowired
+    private PersonService personService;
 
     @ApiOperation(value = "获取可填报日期的已填报小时数", notes = "获取可填报日期的已填报小时数,判断每天填报是否超8小时")
     @RequestMapping(value = "/getAvailableDateInfo", method = RequestMethod.GET)
@@ -55,13 +66,88 @@ public class PersonWorkController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
     })
-    public MessageResult insertWork(@RequestHeader("token") String token, @RequestBody InsertJobWorkingVO jobWork) {
+    public MessageResult insertWork(@RequestHeader("token") String token, @RequestBody WorkHoursReport jobWork) {
+        try {
+            String number = JWTUtil.getCacheNumber(token);
+            if (StringUtils.isEmpty(number)) {
+                return MessageResult.error("token异常");
+            }
+            Map<String, Object> map = new HashMap<>();
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            String beginTime = jobWork.getBeginTime();
+            String endTime = jobWork.getEndTime();
+            Integer Hours = 0;
+            //获取员工信息
+            Map<String, String> person = personService.getPersonByJobNo(number);
+            Date beginDate = format.parse(beginTime);
+            Date endDate = format.parse(endTime);
+            Date enterDate = format.parse(person.get("enterDate"));
+            if (enterDate.compareTo(beginDate) > 0) {
+                return MessageResult.error("不能填报,入职日期之前的日期!");
+            }
+            map.put("jobWork",jobWork);
+            map.put("person",person);
+            map.put("beginDate",beginDate);
+            map.put("endDate",endDate);
+            //校验报工日期是否超过8小时
+            List<Map<String,Object>> availableList = personWorkService.getAvailableDateInfo(number,beginTime,endTime);
+            Map<String,Map<String,Object>> availableMap = Maps.newHashMap();
+            for(Map<String,Object> objectMap : availableList){
+                String date = (String) objectMap.get("date");
+                availableMap.put(date,objectMap);
+            }
+            map.put("availableMap",availableMap);
+            //开始天
+            int begin = Integer.parseInt(beginTime.substring(8, 10));
+            //结束天
+            int end = Integer.parseInt(endTime.substring(8, 10));
+            //年月
+            String yearMonth = beginTime.substring(0, 8);
 
-        String number = JWTUtil.getCacheNumber(token);
-        if (StringUtils.isEmpty(number)) {
-            return MessageResult.error("token异常");
+            map.put("begin",begin);
+            map.put("end",end);
+            map.put("yearMonth",yearMonth);
+            StringBuilder errMsg = new StringBuilder();
+            for (WorkHoursReportEntry jobWorkEntry : jobWork.getEntries()){
+                String workingHours = jobWorkEntry.getWorkingHours();
+                BigDecimal Hour = new BigDecimal(workingHours);
+                Hours += Hour.intValue();
+                String projectId = jobWorkEntry.getProjectId();
+                if (StringUtils.isBlank(projectId)) {
+                    return MessageResult.error("项目id为空");
+                }
+                for (int i = begin; i <= end; i++) {
+                    String iday = "01";
+                    if (i < 10) {
+                        iday = "0" + i;
+                    } else {
+                        iday = i + "";
+                    }
+                    String reportDate = yearMonth + iday;
+                    Map<String,Object> avMap = availableMap.get(reportDate);
+                    BigDecimal availableWorkHous = (BigDecimal) avMap.get("availableWorkHous");
+                    BigDecimal workHours = (BigDecimal) avMap.get("workHours");
+                    if(availableWorkHous.compareTo(Hour)<0){
+                        errMsg.append("项目:"+jobWorkEntry.getProjectName()+",日期:"+reportDate+",已填报:"+workHours.toPlainString()+"小时,不能再填报" + Hour.toPlainString() + "小时,一天的总填报小时数需小于等于8小时!");
+                        errMsg.append("\r\n");
+                    }
+                }
+            }
+            if (Hours > 8) {
+                return MessageResult.error("报工小时数不能大于8小时");
+            }
+            if (errMsg.length() > 0) {
+                MessageResult result = new MessageResult();
+                result.setCode(400);
+                result.setMsg(errMsg.toString());
+                return result;
+            }
+
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            return MessageResult.error(e.getMessage());
         }
-        return MessageResult.success().add("jobWork",jobWork);
+        return MessageResult.success().add("jobWork","jobWork");
     }
 
     @ApiOperation(value = "获取员工报工列表", notes = "获取员工报工列表")

+ 2 - 2
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/controller/ProjectController.java

@@ -22,14 +22,14 @@ public class ProjectController {
             @ApiImplicitParam(name = "projectName", value = "项目名称", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "state", value = "项目状态",  paramType = "query", dataType = "String"),
     })
-    public MessageResult getProjectList(@RequestHeader("token") String token, String beginTime,String endTime) {
+    public MessageResult getProjectList(@RequestHeader("token") String token, String projectName,String state) {
 
         String number = JWTUtil.getCacheNumber(token);
         if (StringUtils.isEmpty(number)) {
             return MessageResult.error("token异常");
         }
 
-        return MessageResult.success().add("beginTime",beginTime).add("endTime",endTime);
+        return MessageResult.success().add("projectName",projectName).add("state",state);
     }
 
     @ApiOperation(value = "获取员工时间范围内项目列表", notes = "获取员工时间范围内项目列表")

+ 3 - 3
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/model/mapper/PersonMapper.java

@@ -15,11 +15,11 @@ import java.util.Map;
  */
 @Repository
 public interface PersonMapper {
-     @MapKey("getPersonByUserId")
+
      Map<String,String> getPersonByUserId(@Param("userid")String userid);
-     @MapKey("getPersonByOpenId")
+
      Map<String,String> getPersonByOpenId(@Param("openid")String openid);
-     @MapKey("getPersonByJobNo")
+
      Map<String,String> getPersonByJobNo(@Param("jobNo")String jobNo);
 
 

+ 20 - 7
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/model/mapper/PersonMapper.xml

@@ -2,24 +2,37 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qy.worksheetsystem.model.mapper.PersonMapper">
 
-    <select id="getPersonByUserId" resultType="java.util.Map">
-        select p.*
+    <select id="getPersonByUserId" resultType="java.util.Map" parameterType="String">
+        select p.fid id,p.fnumber number,p.fname_l2 name,
+        CONVERT(varchar(10) ,isnull(pp2.FEnterDate,''),120) enterDate,
+        btype.fname_l2 btypeName,btype.fid btypeId
         from t_bd_person p
-                 left join t_pm_user pp on pp.fpersonid=p.fid
+        left join t_pm_user pp on pp.fpersonid=p.fid
+        left join T_HR_EMPLABORRELATION pp2 on pp2.FPersonID=p.fid
+        left join T_HR_BDEmployeeType btype on btype.fid=pp2.FLaborRelationStateID
         where pp.fid=#{userid}
     </select>
 
-    <select id="getPersonByOpenId" resultType="java.util.Map">
-        select p.*
+    <select id="getPersonByOpenId" resultType="java.util.Map" parameterType="String">
+        select p.fid id,p.fnumber number,p.fname_l2 name,
+        CONVERT(varchar(10) ,isnull(pp2.FEnterDate,''),120) enterDate,
+        btype.fname_l2 btypeName,btype.fid btypeId
+
         from t_bd_person p
         left join t_pm_user pp on pp.fpersonid=p.fid
+        left join T_HR_EMPLABORRELATION pp2 on pp2.FPersonID=p.fid
+        left join T_HR_BDEmployeeType btype on btype.fid=pp2.FLaborRelationStateID
         where pp.fopenid=#{openid}
     </select>
 
-    <select id="getPersonByJobNo" resultType="java.util.Map">
-        select p.*
+    <select id="getPersonByJobNo" resultType="java.util.Map" parameterType="String">
+        select p.fid id,p.fnumber number,p.fname_l2 name,
+        CONVERT(varchar(10) ,isnull(pp2.FEnterDate,''),120) enterDate,
+        btype.fname_l2 btypeName,btype.fid btypeId
         from t_bd_person p
         left join t_pm_user pp on pp.fpersonid=p.fid
+        left join T_HR_EMPLABORRELATION pp2 on pp2.FPersonID=p.fid
+        left join T_HR_BDEmployeeType btype on btype.fid=pp2.FLaborRelationStateID
         where p.fnumber=#{jobNo}
     </select>
 </mapper>

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

@@ -9,6 +9,6 @@ import java.util.Map;
 
 @Repository
 public interface PersonWorkMapper {
-        @MapKey("getAvailableDateInfo")
+
         List<Map<String,Object>> getAvailableDateInfo(@Param("employeeID") String employeeID, @Param("startDate")String startDate,  @Param("endDate")String endDate);
 }

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

@@ -1,17 +1,31 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qy.worksheetsystem.model.mapper.PersonWorkMapper">
-
+    <select id="selectKey" resultType="String">
+        select dbo.newbosid('CF9DCEB1') as id
+    </select>
     <select id="getAvailableDateInfo" resultType="java.util.Map">
-        select hre.CFEmployeeID, CONVERT(varchar(10) , hre.CFdata, 120),
-        isnull(CAST(sum(hre.CFWorkingHours) as decimal(20,2)),0)  workHours
-        from CT_PRO_WorkHoursReportEntry hre
-        where hre.CFEmployeeID=#{employeeID}
-        and hre.CFdata BETWEEN #{startDate}
+        SELECT
+        item.fid as "id",
+        CONVERT(varchar(10) , item.FDate, 120 ) as "date",
+        CAST (item.FDayType as varchar) as "dateType",
+        item.FWEEK "week",hre.CFEmployeeID employeeID,hre.workHours
+        FROM
+        T_HR_ATS_WorkCalendarItem item
+        left join T_HR_ATS_WorkCalendar w on w.fid=item.FCALENDARGROUPID
+        left join (
+        select whre.CFEmployeeID,whre.CFdata,sum(whre.CFWorkingHours) workHours
+        from
+        CT_PRO_WorkHoursReportEntry whre
+        where whre.CFEmployeeID=#{employeeID}
+        group by whre.CFData,whre.CFEmployeeID) hre on hre.CFdata=item.FDate
+        WHERE
+        item.FDate BETWEEN #{startDate}
         AND #{endDate}
-        group by hre.CFData,hre.CFEmployeeID
+        AND w.FISDEFAULT=1
+        order by item.FDate
     </select>
-
+    <!--22DCD041-->
 
 
 </mapper>

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

@@ -13,7 +13,7 @@ import java.util.Map;
 public interface PersonWorkService {
 
     @Transactional
-    public Map<String,Object> insertWork(String number , InsertJobWorkingVO jobWork);
+    public Map<String,Object> insertWork(Map<String,Object> param);
 
     public List<Map<String, Object>> getAvailableDateInfo(String number, String startDate, String endDate);
 }

+ 7 - 3
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/service/impl/PersonServiceImpl.java

@@ -1,9 +1,11 @@
 package com.qy.worksheetsystem.service.impl;
 
+import com.qy.worksheetsystem.model.mapper.PersonMapper;
 import com.qy.worksheetsystem.service.PersonService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.Collections;
 import java.util.Map;
 
@@ -19,19 +21,21 @@ import java.util.Map;
 @Service
 public class PersonServiceImpl implements PersonService {
 
+    @Resource
+    private PersonMapper personMapper;
 
     @Override
     public Map<String, String> getPersonByUserId(String userid) {
-        return Collections.emptyMap();
+        return personMapper.getPersonByUserId(userid);
     }
 
     @Override
     public Map<String, String> getPersonByOpenId(String openid) {
-        return Collections.emptyMap();
+        return personMapper.getPersonByOpenId(openid);
     }
 
     @Override
     public Map<String, String> getPersonByJobNo(String jobNo) {
-        return Collections.emptyMap();
+        return personMapper.getPersonByJobNo(jobNo);
     }
 }

+ 29 - 3
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/service/impl/PersonWorkServiceImpl.java

@@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -31,9 +32,29 @@ public class PersonWorkServiceImpl implements PersonWorkService {
     private PersonWorkMapper personWorkMapper;
     @Resource
     private PersonService personService;
+
     @Override
     @Transactional
-    public Map<String,Object> insertWork(String number , InsertJobWorkingVO jobWork){
+    public Map<String,Object> insertWork(Map<String,Object> param){
+
+
+        Map<String, String> billMap = new HashMap<>();
+        billMap.put("affiliatedProject","");
+        billMap.put("fillingStartDate","");
+        billMap.put("fillingEndDate","");
+        billMap.put("adminOrg","");
+        billMap.put("hrOrgUnit","");
+        billMap.put("billState","");
+        billMap.put("number","");
+        billMap.put("CU","");
+        billMap.put("bizDate","");
+        billMap.put("creator","");
+        billMap.put("createTime","");
+        billMap.put("lastUpdateUser","");
+        billMap.put("lastUpdateTime","");
+        
+
+
 
         return null;
     }
@@ -41,10 +62,15 @@ public class PersonWorkServiceImpl implements PersonWorkService {
     @Override
     public List<Map<String, Object>> getAvailableDateInfo(String number, String startDate, String endDate) {
         Map<String,String> person = personService.getPersonByJobNo(number);
-        List<Map<String,Object>> list = personWorkMapper.getAvailableDateInfo(person.get("fid"),startDate,endDate);
+        List<Map<String,Object>> list = personWorkMapper.getAvailableDateInfo(person.get("id"),startDate,endDate);
         for(Map<String,Object> map : list){
             BigDecimal workHours = (BigDecimal) map.get("workHours");
-            map.put("availableWorkHous",h8.subtract(workHours));
+            if(null!=workHours) {
+                map.put("availableWorkHous", h8.subtract(workHours));
+            }else{
+                map.put("workHours", BigDecimal.ZERO);
+                map.put("availableWorkHous", h8);
+            }
         }
         return list;
     }

+ 4 - 12
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/vo/WorkHoursReport.java

@@ -7,16 +7,8 @@ import java.util.Map;
 
 @Data
 public class WorkHoursReport {
-
-    private String dataSource;
-
-    private String affiliatedProject;
-
-    private String fillingStartDate;
-
-    private String fillingEndDate;
-
-    Map<String,Object> exData;
-
-    List<WorkHoursReportEntry> entrys;
+    private String beginTime;
+    private String endTime;
+    private String state;
+    private List<WorkHoursReportEntry> entries;
 }

+ 3 - 17
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/vo/WorkHoursReportEntry.java

@@ -6,21 +6,7 @@ import java.math.BigDecimal;
 import java.util.Date;
 @Data
 public class WorkHoursReportEntry {
-
-    private String employee;
-
-    private String clockTime;
-
-    private String clockLocation;
-
-    private Date data;
-
-    private BigDecimal WorkingHours;
-
-    private String notes;
-
-    private String projectPerson;
-
-
-
+    private String workingHours;
+    private String projectId;
+    private String projectName;
 }