Bladeren bron

增加人员工作状态修改日志

tomatozq 3 jaren geleden
bovenliggende
commit
03f567d269

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

@@ -1,6 +1,7 @@
 package com.jpsoft.shinestar.modules.base.service.impl;
 
 import cn.hutool.core.util.IdcardUtil;
+import com.alipay.api.domain.Person;
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
 import com.jpsoft.shinestar.config.WxConfig;
@@ -10,6 +11,8 @@ import com.jpsoft.shinestar.modules.base.service.*;
 import com.jpsoft.shinestar.modules.common.dto.Sort;
 import com.jpsoft.shinestar.modules.common.utils.JwtUtil2;
 import com.jpsoft.shinestar.modules.common.utils.WechatMessageUtil;
+import com.jpsoft.shinestar.modules.sys.dao.SysLogDAO;
+import com.jpsoft.shinestar.modules.sys.entity.SysLog;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.joda.time.DateTime;
@@ -29,6 +32,9 @@ public class PersonInfoServiceImpl implements PersonInfoService {
     @Resource(name = "personInfoDAO")
     private PersonInfoDAO personInfoDAO;
 
+    @Autowired
+    private SysLogDAO sysLogDAO;
+
     @Autowired
     private DeviceInfoService deviceInfoService;
 
@@ -73,6 +79,19 @@ public class PersonInfoServiceImpl implements PersonInfoService {
     @Override
     public int update(PersonInfo model) {
         // TODO Auto-generated method stub
+
+        //每次修改人员信息时,增加日志记录工作状态
+        SysLog sysLog = new SysLog();
+        sysLog.setPointcut("人员信息修改");
+        sysLog.setUserId(String.valueOf(model.getUpdateBy()));
+        sysLog.setCreateTime(new Date());
+        sysLog.setData(String.valueOf(model.getId()));
+
+        PersonInfo srcPersonInfo = personInfoDAO.get(model.getId());
+        sysLog.setRemark("人员编号:" + model.getId() + ",工作状态:" + srcPersonInfo.getWorkStatus() + "->" + model.getWorkStatus());
+
+        sysLogDAO.insert(sysLog);
+
         return personInfoDAO.update(model);
     }
 

+ 12 - 3
common/src/main/java/com/jpsoft/shinestar/modules/business/service/impl/RequestForLeaveInfoServiceImpl.java

@@ -408,7 +408,7 @@ public class RequestForLeaveInfoServiceImpl implements RequestForLeaveInfoServic
 
 								//防止连续请假,造成的时间重叠
 								Long milliseconds = startLong.getTime() - new Date().getTime() + 5000;
-								String p = "A_" + personInfo1.getId() + "_" + personInfo1.getWorkStatus();
+								String p = "A_" + personInfo1.getId() + "_" + personInfo1.getWorkStatus() + "_" + personPopedom.getPersonId();
 								rabbitTemplate.convertAndSend("updateWorkStatusExchange", "updateWorkStatus", p, (message) -> {
 									//延时单位毫秒
 									message.getMessageProperties().setHeader("x-delay", milliseconds);
@@ -417,10 +417,9 @@ public class RequestForLeaveInfoServiceImpl implements RequestForLeaveInfoServic
 							}
 							//休假,结束
 							if (endLong.getTime() > new Date().getTime()) {
-								String p = "B_" + personInfo1.getId() + "_" + initStatus;
+								String p = "B_" + personInfo1.getId() + "_" + initStatus + "_" + personPopedom.getPersonId();
 								//防止连续请假,造成的时间重叠
 								Long milliseconds = endLong.getTime() - new Date().getTime() - 5000;
-								;
 
 								rabbitTemplate.convertAndSend("updateWorkStatusExchange", "updateWorkStatus", p, (message) -> {
 									//延时单位毫秒
@@ -645,6 +644,16 @@ public class RequestForLeaveInfoServiceImpl implements RequestForLeaveInfoServic
 			//start<=now<=end
 			if (end.compareTo(now) >0){
 				personInfo.setWorkStatus("4");
+				String approvalPersonIdStr = requestForLeaveInfo.getApprovalPersonIdStr();
+
+				if(StringUtils.isNotEmpty(approvalPersonIdStr)){
+					String[] approvalPersonIds = approvalPersonIdStr.split(",");
+
+					if (approvalPersonIds.length>0){
+						personInfo.setUpdateBy(approvalPersonIds[approvalPersonIds.length-1]);
+					}
+				}
+
 				personInfoService.update(personInfo);
 				Long millisecond  = DateUtil.betweenMs(DateUtil.date(),end) + 60000;
 

+ 1 - 0
web/src/main/java/com/jpsoft/shinestar/modules/business/controller/WorkScheduleAttendanceController.java

@@ -398,6 +398,7 @@ public class WorkScheduleAttendanceController {
                 BigDecimal totalAttendanceDays = workScheduleAttendanceService.findTotalAttendance(pi.getId(), startDate, endDate, "1");
                 //加上出差天数
                 BigDecimal days = totalAttendanceDays.add(businessTripNum);
+
                 wsaDTO.setTotalAttendanceDays(days);
                 //迟到分钟lateMinutes
                 Map<String, Object> searchParams3 = new HashMap<>();

+ 1 - 1
web/src/main/java/com/jpsoft/shinestar/mq/listener/BusinessOutListener.java

@@ -49,7 +49,7 @@ public class BusinessOutListener {
 
                 //当前时间是出差期间
                 if (businessOut.getStartTime().compareTo(now) <=0 && businessOut.getEndTime().compareTo(now) >0){
-                    personInfo.setWorkStatus("4");
+                    personInfo.setWorkStatus("3");
                     personInfo.setUpdateTime(new Date());
                     personInfoService.update(personInfo);
                 }

+ 11 - 0
web/src/main/java/com/jpsoft/shinestar/mq/listener/RequestForLeaveListener.java

@@ -8,6 +8,7 @@ import com.jpsoft.shinestar.modules.base.service.PersonPopedomService;
 import com.jpsoft.shinestar.modules.business.entity.RequestForLeaveInfo;
 import com.jpsoft.shinestar.modules.business.service.RequestForLeaveInfoService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.amqp.rabbit.annotation.RabbitHandler;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -62,6 +63,16 @@ public class RequestForLeaveListener {
 
                Date end = requestForLeaveInfo.getEndTime();
 
+               String approvalPersonIdStr = requestForLeaveInfo.getApprovalPersonIdStr();
+
+                if(StringUtils.isNotEmpty(approvalPersonIdStr)){
+                    String[] approvalPersonIds = approvalPersonIdStr.split(",");
+
+                    if (approvalPersonIds.length>0){
+                        personInfo.setUpdateBy(approvalPersonIds[approvalPersonIds.length-1]);
+                    }
+                }
+
                 if (start.compareTo(new Date()) <= 0 && end.compareTo(new Date()) > 0) {
                     personInfo.setWorkStatus("4");
                     personInfo.setUpdateTime(new Date());

+ 19 - 22
web/src/main/java/com/jpsoft/shinestar/mq/listener/UpdateWorkStatusListener.java

@@ -1,53 +1,49 @@
 package com.jpsoft.shinestar.mq.listener;
 
-import com.jpsoft.shinestar.modules.base.entity.PersonDeviceRelation;
 import com.jpsoft.shinestar.modules.base.entity.PersonInfo;
-import com.jpsoft.shinestar.modules.base.service.PersonDeviceRelationService;
 import com.jpsoft.shinestar.modules.base.service.PersonInfoService;
-import com.jpsoft.shinestar.modules.business.entity.GuestInfoRecord;
-import com.jpsoft.shinestar.modules.business.entity.RequestForLeaveInfo;
-import com.jpsoft.shinestar.modules.business.service.GuestInfoRecordService;
-import com.jpsoft.shinestar.modules.business.service.RequestForLeaveInfoService;
-import com.jpsoft.shinestar.modules.pacs.dto.PacsMsgResult;
-import com.jpsoft.shinestar.modules.pacs.service.IGuardService;
-import com.jpsoft.shinestar.modules.sys.service.SysLogService;
+import com.jpsoft.shinestar.modules.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.annotation.RabbitHandler;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.Date;
-import java.util.List;
 
 @Slf4j
 @Component
 @RabbitListener(queues = "updateWorkStatusQueue",concurrency = "10")
 public class UpdateWorkStatusListener {
-
     @Autowired
     private PersonInfoService personInfoService;
 
-
     @RabbitHandler
     public void process(String id) {
-
-
         try {
-
-
-            log.warn("收到访客访问记录:" + id);
+            log.warn("收到修改工作状态记录:" + id);
             String[]sz=id.split("_");
             String type=sz[0];//A 修改为请假, b还原
-            String thisid=sz[1];//id
+            String personId=sz[1];//id
             String status=sz[2];//之前的状态
-          //  RequestForLeaveInfo target = requestForLeaveInfoService.get(id);
-            PersonInfo info =personInfoService.get(Long.valueOf(thisid));
+            String approvePersonId = "";
+
+            if (sz.length>3){
+                approvePersonId = sz[3];
+            }
+
+          //RequestForLeaveInfo target = requestForLeaveInfoService.get(id);
+            PersonInfo info =personInfoService.get(Long.valueOf(personId));
+
+            if (StringUtils.isNotEmpty(approvePersonId)){
+                info.setUpdateBy(type + "_" + approvePersonId);
+            }
+
             Date now = new Date();
+
             if("A".equals(type)){
                 info.setWorkStatus("4");
-
             }
+
             if("B".equals(type)){
                 //如果是请假, 则修改回来, 否则不管
                 if("4".equals(info.getWorkStatus())) {
@@ -57,6 +53,7 @@ public class UpdateWorkStatusListener {
                     info.setWorkStatus("1");
                 }
             }
+
             info.setUpdateTime(now);
             personInfoService.update(info);
         }