Bläddra i källkod

Merge branch 'master' of http://47.92.161.104:10080/shuzhan/shinestar-server

fllmoyu 4 år sedan
förälder
incheckning
d03e223946

+ 2 - 0
common/src/main/java/com/jpsoft/shinestar/modules/base/dao/WorkOverPersonDAO.java

@@ -25,4 +25,6 @@ public interface WorkOverPersonDAO {
     WorkOverPerson findByPersonIdAndDate(Long personId, Date attendanceDate);
     List<WorkOverPerson> findByPersonIdAndSEDate(Long personId, Date startDate,Date endDate);
     WorkOverPerson findByPersonIdAndOffsetMinute(Long personId, Date recordTime, int earlyMinutes, int delayMinutes);
+
+    List<Map> findUnFinishByDate(Date startDate, Date endDate);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/shinestar/modules/base/service/WorkOverPersonService.java

@@ -29,4 +29,6 @@ public interface WorkOverPersonService {
     List<WorkOverPerson> findByPersonIdAndSEDate(Long personId, Date startDate,Date endDate);
 
     WorkOverPerson findByPersonIdAndOffsetMinute(Long personId, Date recordTime, int earlyMinutes, int delayMinutes);
+
+    List<Map> findUnFinishByDate(Date startDate, Date endDate);
 }

+ 5 - 0
common/src/main/java/com/jpsoft/shinestar/modules/base/service/impl/WorkOverPersonServiceImpl.java

@@ -93,4 +93,9 @@ public class WorkOverPersonServiceImpl implements WorkOverPersonService {
     public WorkOverPerson findByPersonIdAndOffsetMinute(Long personId, Date recordTime, int earlyMinutes, int delayMinutes) {
         return workOverPersonDAO.findByPersonIdAndOffsetMinute(personId,recordTime,earlyMinutes,delayMinutes);
     }
+
+    @Override
+    public List<Map> findUnFinishByDate(Date startDate, Date endDate) {
+        return workOverPersonDAO.findUnFinishByDate(startDate, endDate);
+    }
 }

+ 7 - 5
common/src/main/java/com/jpsoft/shinestar/modules/base/service/impl/WorkOverServiceImpl.java

@@ -514,7 +514,7 @@ public class WorkOverServiceImpl implements WorkOverService {
 
 		try {
 			//查询当前打卡时间是否在加班时段内
-			WorkOverPerson workOverPerson = workOverPersonService.findByPersonIdAndOffsetMinute(personId, recordTime, -60, 60);
+			WorkOverPerson workOverPerson = workOverPersonService.findByPersonIdAndOffsetMinute(personId, recordTime, -60, 120);
 
 			if(workOverPerson!=null) {
 				WorkOver workOver = workOverService.get(workOverPerson.getWorkOverId());
@@ -524,11 +524,13 @@ public class WorkOverServiceImpl implements WorkOverService {
 					if (workOverPerson.getBeginTime() == null) {
 						workOverPerson.setBeginTime(recordTime);
 					} else {
-						if (recordTime.before(workOverPerson.getBeginTime())) {
-							workOverPerson.setBeginTime(recordTime);
-						}
+//						if (recordTime.before(workOverPerson.getBeginTime())) {
+//							workOverPerson.setBeginTime(recordTime);
+//						}
 						if (workOverPerson.getFinishTime() == null) {
-							workOverPerson.setFinishTime(recordTime);
+							if(recordTime.after(workOverPerson.getBeginTime())) {
+								workOverPerson.setFinishTime(recordTime);
+							}
 						} else if (recordTime.after(workOverPerson.getFinishTime())) {
 							workOverPerson.setFinishTime(recordTime);
 						}

+ 20 - 1
common/src/main/resources/mapper/base/WorkOverPerson.xml

@@ -207,9 +207,28 @@
                 b.person_id = #{personId}
                 and date_add(c.start_time,interval ${earlyMinutes} minute)<=#{recordTime}
                 and date_add(c.end_time,interval ${delayMinutes} minute)>=#{recordTime}
-                and (c.status_='1' or c.status_ = '4')
                 and a.del_flag=0
                 and c.del_flag = 0
         ]]>
     </select>
+    <select id="findUnFinishByDate" resultType="java.util.Map">
+        <![CDATA[
+            select
+            t4.name_,
+            t3.person_id,
+            t2.start_time,
+            t2.end_time,
+            t1.begin_time,
+            t1.finish_time,
+            t1.duration_,
+            t1.duration_str
+            from base_work_over_person t1
+            inner join base_work_over t2 on t1.work_over_id = t2.id_
+            inner join base_person_popedom t3 on t1.person_popedom_id = t3.id_
+            inner join base_person_info t4 on t4.id_ = t3.person_id
+            where t1.begin_time>#{startDate} and t1.begin_time<#{endDate}
+            and t1.finish_time is null
+            order by begin_time asc
+        ]]>
+    </select>
 </mapper>

+ 68 - 1
web/src/main/java/com/jpsoft/shinestar/modules/base/controller/WorkOverController.java

@@ -13,7 +13,9 @@ import com.jpsoft.shinestar.modules.common.dto.MessageResult;
 import com.jpsoft.shinestar.modules.common.dto.Sort;
 import com.jpsoft.shinestar.modules.common.utils.OSSUtil;
 import com.jpsoft.shinestar.modules.common.utils.PojoUtils;
+import com.jpsoft.shinestar.modules.sys.entity.DataDictionary;
 import com.jpsoft.shinestar.modules.sys.entity.User;
+import com.jpsoft.shinestar.modules.sys.service.DataDictionaryService;
 import com.jpsoft.shinestar.modules.sys.service.UserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -87,6 +89,12 @@ public class WorkOverController {
     @Autowired
     private WorkPersonSchedulingService workPersonSchedulingService;
 
+    @Autowired
+    private PersonDeviceLogService personDeviceLogService;
+
+    @Autowired
+    private DataDictionaryService dataDictionaryService;
+
     @ApiOperation(value="创建空记录")
     @GetMapping("create")
     public MessageResult<WorkOver> create(){
@@ -649,7 +657,6 @@ public class WorkOverController {
 
     //分钟转小时
     private String formatTime(int minuteStr) {
-
         String resultStr = "";
 
         if (minuteStr != 0) {
@@ -672,6 +679,66 @@ public class WorkOverController {
         return resultStr;
     }
 
+    @PostMapping("updateFinshTime")
+    @ApiOperation(value="更新加班完成时间")
+    public MessageResult<Integer> updateFinshTime(String day){
+        MessageResult<Integer> messageResult = new MessageResult<>();
+
+        try {
+            int affectCount = 0;
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+            Date startDate = sdf.parse(day + " 00:00");
+            Date endDate = sdf.parse(day + " 23:59");
+
+            List<DataDictionary> ddList = dataDictionaryService.findByCatalogName("设备用途");
+
+            String scene = "";
+
+            for (DataDictionary dd : ddList) {
+                if (dd.getName().indexOf("考勤") != -1) {
+                    scene = dd.getValue();
+                    break;
+                }
+            }
+
+            //查询当天申请加班记录
+            List<Map> mapList = workOverPersonService.findUnFinishByDate(startDate,endDate);
+
+            for (Map map : mapList) {
+                Long personId = Long.valueOf(map.get("person_id").toString());
+                DateTime startTime = new DateTime((Date)map.get("start_time"));
+                DateTime endTime = new DateTime((Date) map.get("end_time"));
+
+                List<PersonDeviceLog> personDeviceLogs = personDeviceLogService.findByPersonAndDateAndScene(personId,
+                        startTime.plusHours(-1).toDate(), endTime.plusHours(2).toDate(), scene);
+
+                //取最后一条
+                if (personDeviceLogs.size()>0){
+                    PersonDeviceLog personDeviceLog = personDeviceLogs.get(personDeviceLogs.size()-1);
+                    boolean result = workOverService.punchIn(personDeviceLog.getDeviceNo(),personDeviceLog.getPersonId(),personDeviceLog.getRecordTime());
+
+                    if(result){
+                        affectCount++;
+                    }
+                }
+            }
+
+            //todo 填写具体代码
+            messageResult.setData(affectCount);
+            messageResult.setResult(true);
+        }
+        catch (Exception ex){
+            log.error(ex.getMessage(),ex);
+
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
     @GetMapping("updateBeginTime")
     @ApiOperation(value="更新加班开始时间")
     public MessageResult<Date> updateBeginTime(String workPersonId){