qingyang_zhang il y a 5 mois
Parent
commit
603d156ca8

+ 70 - 25
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/controller/PersonWorkController.java

@@ -45,8 +45,9 @@ public class PersonWorkController {
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
             @ApiImplicitParam(name = "beginTime", value = "开始时间yyyy-MM-dd", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "endTime", value = "开始时间yyyy-MM-dd", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "id", value = "报工id", paramType = "query", dataType = "String"),
     })
-    public MessageResult getAvailableDateInfo(@RequestHeader("token") String token, String beginTime,String endTime) {
+    public MessageResult getAvailableDateInfo(@RequestHeader("token") String token, String beginTime,String endTime,String id) {
         String number = JWTUtil.getNumber(token);
         if (StringUtils.isEmpty(number)) {
             return MessageResult.error("token异常");
@@ -58,8 +59,15 @@ public class PersonWorkController {
         }else if (isValid== 2){
             return MessageResultV2.error("开始时间不能大于结束时间");
         }
+        List<Map<String,Object>> list = null;
+        if(StrUtil.isNotBlank(id)){
+            list =personWorkService.getAvailableDateInfoById(number,id,beginTime,endTime);
+        }else{
+            list =  personWorkService.getAvailableDateInfo(number,beginTime,endTime);
+        }
         MessageResultV2 result = MessageResultV2.success();
-        result.setData(personWorkService.getAvailableDateInfo(number,beginTime,endTime));
+        result.setData(list);
+
         return result;
     }
 
@@ -68,21 +76,22 @@ public class PersonWorkController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
     })
-    public MessageResultV2 insertWork(@RequestHeader("token") String token, @RequestBody WorkHoursReport jobWork) {
+    public MessageResult insertWork(@RequestHeader("token") String token, @RequestBody WorkHoursReport jobWork) {
         try {
             String number = JWTUtil.getNumber(token);
             if (StringUtils.isEmpty(number)) {
-                return MessageResultV2.error("token异常");
+                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();
             if (StrUtil.isBlank(beginTime)) {
-                return MessageResultV2.error("开始时间结束时间不能为空");
+                return MessageResult.error("开始时间结束时间不能为空");
             }
             if ( StrUtil.isBlank(endTime)) {
-                return MessageResultV2.error("结束始时间结束时间不能为空");
+                return MessageResult.error("结束始时间结束时间不能为空");
             }
 
             Integer Hours = 0;
@@ -101,7 +110,12 @@ public class PersonWorkController {
             map.put("beginDateStr",beginTime);
             map.put("endDateStr",endTime);
             //校验报工日期是否超过8小时
-            List<Map<String,Object>> availableList = personWorkService.getAvailableDateInfo(number,beginTime,endTime);
+            List<Map<String,Object>> availableList = null;
+            if(StrUtil.isBlank(jobWork.getId())) {
+                availableList = personWorkService.getAvailableDateInfo(number, beginTime, endTime);
+            }else{
+                availableList = personWorkService.getAvailableDateInfoById(number,jobWork.getId(), beginTime, endTime);
+            }
             Map<String,Map<String,Object>> availableMap = Maps.newHashMap();
             for(Map<String,Object> objectMap : availableList){
                 String date = (String) objectMap.get("date");
@@ -145,7 +159,7 @@ public class PersonWorkController {
                 }
             }
             if (Hours > 8) {
-                return MessageResultV2.error("报工小时数不能大于8小时");
+                return MessageResult.error("报工小时数不能大于8小时");
             }
             if (errMsg.length() > 0) {
                 MessageResultV2 result = new MessageResultV2();
@@ -153,16 +167,28 @@ public class PersonWorkController {
                 result.setMsg(errMsg.toString());
                 return result;
             }
-            Map<String,Object> objectMap = personWorkService.insertWork(map);
-            if("2".equals(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(number, id);
+            MessageResult resultV2 = MessageResult.success();
+            Map<String,Object> objectMap=null;
+            if(StrUtil.isBlank(jobWork.getId())){
+                objectMap = personWorkService.insertWork(map);
+            }else {
+                int i = personWorkService.deleteWork(number,jobWork.getId());
+                if(i<1){
+                    return MessageResult.error("更新失败");
                 }
+                objectMap = personWorkService.insertWork(map);
+            }
+            if ((boolean)objectMap.get("code")) {
+                if ("2".equals(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(number, id);
+                    }
+                }
+            }else {
+                resultV2 = MessageResult.fail((String) objectMap.get("errMsg"));
             }
-            MessageResultV2 resultV2 = MessageResultV2.success();
-            resultV2.setData(objectMap);
             return resultV2;
         }catch (Exception e){
             log.error(e.getMessage(),e);
@@ -223,31 +249,50 @@ public class PersonWorkController {
         return result;
     }
     @ApiOperation(value = "更新", notes = "更新")
-    @RequestMapping(value = "/update", method = RequestMethod.GET)
+    @RequestMapping(value = "/updateWork", method = RequestMethod.POST)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
     })
-    public MessageResult update(@RequestHeader("token") String token, @RequestBody WorkHoursReport jobWork) {
+    public MessageResult updateWork(@RequestHeader("token") String token, @RequestBody WorkHoursReport jobWork) {
         String number = JWTUtil.getNumber(token);
+        MessageResult result =MessageResult.success();
         if (StringUtils.isEmpty(number)) {
             return MessageResult.error("token异常");
         }
-        int i = personWorkService.deleteWork(number,jobWork.getId());
-        MessageResult result = this.insertWork(token,jobWork);
+        String action = jobWork.getAction();
+
+        if("delete".equals(action)){
+            int i = personWorkService.deleteWork(number,jobWork.getId());
+            if(i<1){
+                return MessageResult.error("删除失败");
+            }
+        }else if("revoke".equals(action)){
+            int i = personWorkService.revocaWork(number,jobWork.getId());
+            if(i<1) {
+                result = MessageResult.fail("撤回失败");
+            }
+        }else if("commit".equals(action)){
+            int i = personWorkService.submitWork(number,jobWork.getId());
+            if(i<1) {
+                result = MessageResult.fail("提交失败");
+            }
+        }else {
+            result=MessageResult.fail("没有找到方法");
+        }
         return result;
     }
     @ApiOperation(value = "删除报工", notes = "删除报工")
-    @RequestMapping(value = "/deleteWork", method = RequestMethod.GET)
+    @RequestMapping(value = "/deleteWork", method = RequestMethod.POST)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
-            @ApiImplicitParam(name = "id", value = "报工id", required = true, paramType = "query", dataType = "String"),
+
     })
-    public MessageResult deleteWork(@RequestHeader("token") String token,  String id) {
+    public MessageResult deleteWork(@RequestHeader("token") String token, @RequestBody Map<String,String> id) {
         String number = JWTUtil.getNumber(token);
         if (StringUtils.isEmpty(number)) {
             return MessageResult.error("token异常");
         }
-         int i = personWorkService.deleteWork(number,id);
+         int i = personWorkService.deleteWork(number,id.get("id"));
         MessageResultV2 result=MessageResultV2.success();
         //result.setData(list);
         return result;
@@ -265,7 +310,7 @@ public class PersonWorkController {
             return MessageResult.error("token异常");
         }
         JobBooking list = personWorkService.getPersonWorkInfoById(number,id);
-        MessageResultV2 result=MessageResultV2.success();
+        MessageResult result=MessageResult.success();
         result.setData(list);
         return result;
     }

+ 6 - 3
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/model/entity/JobBooking.java

@@ -3,17 +3,20 @@ package com.qy.worksheetsystem.model.entity;
 
 import lombok.Data;
 
+import java.util.HashMap;
 import java.util.List;
 
 @Data
-public class JobBooking {
+public class JobBooking extends HashMap {
     private String id;
-
     private String beginTime;
     private String endTime;
-    private String state;
+    private String date;
+    private Integer state;
     private String projectName;
     private String projectId;
+    private String WorkingHours;
     private JobBookPerson person;
     private List<JobBookingEntry> entries;
+
 }

+ 1 - 1
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/model/entity/JobBookingEntry.java

@@ -5,7 +5,7 @@ import lombok.Data;
 @Data
 public class JobBookingEntry {
     private String entryId;
-    private String seq;
+    private Integer seq;
     private String notes;
     private String workingHours;
     private String workingDate;

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

@@ -15,6 +15,7 @@ public interface PersonWorkMapper {
         String selectKeyByBosTyoe(@Param("employeeID") String employeeID,@Param("time") long time);
 
         List<Map<String,Object>> getAvailableDateInfo(@Param("employeeID") String employeeID, @Param("startDate")String startDate,  @Param("endDate")String endDate);
+        List<Map<String,Object>> getAvailableDateInfoById(@Param("employeeID") String employeeID,@Param("id") String id, @Param("startDate")String startDate,  @Param("endDate")String endDate);
 
         int insertBill(@Param("billList")List<Map<String, Object>> billList);
 

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

@@ -7,6 +7,30 @@
     <select id="selectKeyByBosTyoe" resultType="String" useCache="false">
         select newbosid(#{bosTyoe}) as id  from dual  where #{time}=#{time}
     </select>
+
+    <select id="getAvailableDateInfoById" resultType="java.util.Map">
+        SELECT
+        item.fid as "id",
+        TO_CHAR(NVL( item.FDate, ''), 'YYYY-MM-DD')  "date",
+        (item.FDayType) as "dateType",
+        item.FWEEK "week",hre.CFEmployeeID "employeeID",hre.workHours as "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}
+        and whre.FPARENTID != #{id}
+        group by whre.CFData,whre.CFEmployeeID) hre on hre.CFdata=item.FDate
+        WHERE
+        item.FDate BETWEEN to_date(#{startDate},'YYYY-MM-DD')
+        AND  to_date(#{endDate},'YYYY-MM-DD')
+        AND w.FISDEFAULT=1
+
+        order by item.FDate
+    </select>
     <select id="getAvailableDateInfo" resultType="java.util.Map">
         SELECT
         item.fid as "id",
@@ -70,6 +94,7 @@
         <if test="state==false">
             and whr.fbillState=0
         </if>
+        order by "workingDate", "projectId"
     </select>
     <select id="getPersonWorkSumInfo" resultType="java.util.Map">
         select whr.fbillState "state",sum(hre.CFWorkingHours) "WorkingHours"
@@ -126,6 +151,7 @@
         <id column="id" property="id"/>
         <result column="startDate" property="beginTime"/>
         <result column="endDate" property="endTime"/>
+        <result column="startDate" property="date"/>
         <result column="state" property="state"/>
         <result column="projectName" property="projectName"/>
         <result column="projectId" property="projectId"/>

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

@@ -16,6 +16,8 @@ public interface PersonWorkService {
     @Transactional
     public Map<String,Object> insertWork(Map<String,Object> param);
 
+    List<Map<String, Object>> getAvailableDateInfoById(String number, String id, String startDate, String endDate);
+
     public List<Map<String, Object>> getAvailableDateInfo(String number, String startDate, String endDate);
     List<Map<String,Object>> getPersonWorkList(String number,String beginTime, String endTime, Boolean state);
 

+ 58 - 16
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/service/impl/PersonWorkServiceImpl.java

@@ -8,6 +8,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.kingdee.shr.api.OSFWSClient;
 import com.qy.worksheetsystem.model.entity.JobBooking;
+import com.qy.worksheetsystem.model.entity.JobBookingEntry;
 import com.qy.worksheetsystem.model.mapper.PersonWorkMapper;
 
 import com.qy.worksheetsystem.model.mapper.ProjectMapper;
@@ -57,19 +58,21 @@ public class PersonWorkServiceImpl implements PersonWorkService {
     @Override
     @Transactional
     public Map<String,Object> insertWork(Map<String,Object> param){
+        List<Map<String, Object>> billList = Lists.newArrayList();
+        List<Map<String, Object>> workList = Lists.newArrayList();
+        int begin = (int) param.get("begin");
+        int end = (int) param.get("end");
+        String yearMonth = (String) param.get("yearMonth");
+        WorkHoursReport jobWork = (WorkHoursReport) param.get("jobWork");
+        Map<String, String> person = (Map<String, String>) param.get("person");
+        Date beginDate = (Date) param.get("beginDate");
+        Date endDate = (Date) param.get("endDate");
+        Map<String, Map<String, Object>> availableMap = (Map<String, Map<String, Object>>) param.get("availableMap");
+        Map<String, Object> reMap = Maps.newHashMap();
         try {
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-            int begin = (int) param.get("begin");
-            int end = (int) param.get("end");
-            String yearMonth = (String) param.get("yearMonth");
-            WorkHoursReport jobWork = (WorkHoursReport) param.get("jobWork");
-            Map<String, String> person = (Map<String, String>) param.get("person");
-            Date beginDate = (Date) param.get("beginDate");
-            Date endDate = (Date) param.get("endDate");
-            Map<String, Map<String, Object>> availableMap = (Map<String, Map<String, Object>>) param.get("availableMap");
-
-            List<Map<String, Object>> billList = Lists.newArrayList();
-            List<Map<String, Object>> workList = Lists.newArrayList();
+
+
             Integer Hours = 0;
             for (WorkHoursReportEntry jobWorkEntry : jobWork.getEntries()) {
                 String workingHours = jobWorkEntry.getWorkingHours();
@@ -81,7 +84,7 @@ public class PersonWorkServiceImpl implements PersonWorkService {
 
                 Map<String, Object> billMap = new HashMap<>();
 
-                String billID = personWorkMapper.selectBillKey(System.currentTimeMillis());
+                String billID = personWorkMapper.selectBillKey(new Long(number));
                 billMap.put("id", billID);
                 billMap.put("affiliatedProject", projectId);
                 billMap.put("fillingStartDate", jobWork.getBeginTime());
@@ -122,14 +125,36 @@ public class PersonWorkServiceImpl implements PersonWorkService {
 
             int bInt = personWorkMapper.insertBill(billList);
             int wInt = personWorkMapper.insertWork(workList);
-            Map<String, Object> reMap = Maps.newHashMap();
-            reMap.put("billList", billList);
-            reMap.put("workList", workList);
+            reMap.put("billList",billList);
+            reMap.put("workList",workList);
+            reMap.put("code", (billList.size()+workList.size())==(bInt+wInt));
             return reMap;
         }catch (Exception e){
             log.error(e.getMessage(),e);
+            for(Map<String,Object> bill:billList) {
+                this.deleteWork(person.get("personNumber"), (String) bill.get("id"));
+            }
+            reMap.put("errMsg", e.getMessage());
+            reMap.put("code", false);
         }
-        return null;
+        return reMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> getAvailableDateInfoById(String number,String id, String startDate, String endDate) {
+        Map<String,String> person = personService.getPersonByJobNo(number);
+        List<Map<String,Object>> list = personWorkMapper.getAvailableDateInfoById(person.get("id"),id,startDate,endDate);
+        for(Map<String,Object> map : list){
+
+            BigDecimal workHours = (BigDecimal) map.get("workHours");
+            if(null!=workHours) {
+                map.put("availableWorkHours", h8.subtract(workHours));
+            }else{
+                map.put("workHours", BigDecimal.ZERO);
+                map.put("availableWorkHours", h8);
+            }
+        }
+        return list;
     }
 
     @Override
@@ -148,6 +173,7 @@ public class PersonWorkServiceImpl implements PersonWorkService {
         }
         return list;
     }
+
     @Override
     public List<Map<String,Object>> getPersonWorkList(String number,String beginTime, String endTime, Boolean state) {
         List<Map<String,Object>> list = personWorkMapper.getPersonWorkList(number,beginTime,endTime,state);
@@ -156,6 +182,16 @@ public class PersonWorkServiceImpl implements PersonWorkService {
     @Override
     public   List<JobBooking> getPersonWorkListV2(String number, String beginTime, String endTime, Boolean state) {
         List<JobBooking> list = personWorkMapper.getPersonWorkListV2(number,beginTime,endTime,state);
+        for(JobBooking job : list){
+            BigDecimal workingHours = BigDecimal.ZERO;
+            BigDecimal hours = BigDecimal.ZERO;
+            for(JobBookingEntry jobEntry : (List<JobBookingEntry>)job.get("entries")){
+                BigDecimal work = new BigDecimal(jobEntry.getWorkingHours());
+                workingHours=workingHours.add(work);
+                hours=work;
+            }
+            job.put("WorkingHours",hours.toPlainString());
+        }
         return list;
     }
     @Override
@@ -166,6 +202,12 @@ public class PersonWorkServiceImpl implements PersonWorkService {
     @Override
     public JobBooking getPersonWorkInfoById(String number, String id){
         JobBooking e =personWorkMapper.getPersonWorkInfoById( number, id);
+        BigDecimal workingHours = BigDecimal.ZERO;
+        for(JobBookingEntry jobEntry : (List<JobBookingEntry>)e.get("entries")){
+
+            workingHours=workingHours.add(new BigDecimal(jobEntry.getWorkingHours()));
+        }
+        e.put("WorkingHours",workingHours.toPlainString());
         return e;
     }
     @Override

+ 2 - 2
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/vo/WorkCalendarVo.java

@@ -12,7 +12,7 @@ public class WorkCalendarVo {
 
     private String date;
 
-    private String dateType;
+    private Integer dateType;
 
-    private String week;
+    private Integer week;
 }

+ 2 - 1
app/workSheetSystem/src/main/java/com/qy/worksheetsystem/vo/WorkHoursReport.java

@@ -9,7 +9,8 @@ import java.util.Map;
 public class WorkHoursReport {
     private String beginTime;
     private String endTime;
-    private String state;
+    private Integer state;
+    private String action;
     private String id;
     private List<WorkHoursReportEntry> entries;
 }

+ 1 - 1
app/workSheetSystem/src/main/resources/logback-spring.xml

@@ -26,7 +26,7 @@
         <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
         <!-- 例如:如果此处配置了INFO级别,则后面其他位置即使配置了DEBUG级别的日志,也不会被输出 -->
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>debug</level>
+            <level>info</level>
         </filter>
         <encoder>
             <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>