From e24c1fb5dc77163de761e88638921234e28ce5de Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期三, 22 二月 2023 01:02:53 +0800
Subject: [PATCH] 优化考勤人员信息

---
 service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java |  110 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 73 insertions(+), 37 deletions(-)

diff --git a/service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java b/service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java
index be93f4c..8bc61f7 100644
--- a/service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java
@@ -3,19 +3,23 @@
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.smo.impl.AttendanceClassesTaskDetailInnerServiceSMOImpl;
 import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.client.FileUploadTemplate;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.smo.IPhotoSMO;
 import com.java110.doc.annotation.*;
 import com.java110.dto.attendanceClasses.AttendanceClassesDto;
 import com.java110.dto.attendanceClasses.AttendanceClassesTaskDetailDto;
 import com.java110.dto.attendanceClasses.AttendanceClassesTaskDto;
 import com.java110.dto.file.FileDto;
+import com.java110.dto.org.OrgStaffRelDto;
 import com.java110.dto.store.StoreUserDto;
 import com.java110.dto.user.UserDto;
 import com.java110.intf.common.*;
+import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
 import com.java110.intf.store.IStoreInnerServiceSMO;
 import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.po.attendanceClasses.AttendanceClassesPo;
@@ -30,6 +34,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.text.ParseException;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -44,7 +49,6 @@
 )
 
 @Java110ParamsDoc(params = {
-        @Java110ParamDoc(name = "classId", length = 30, remark = "鐝ID"),
         @Java110ParamDoc(name = "staffId", length = 30, remark = "鎵撳崱鍛樺伐"),
         @Java110ParamDoc(name = "checkTime", type = "String", length = 30, remark = "鑰冨嫟鏃堕棿 YYYY-MM-DD hh24:mi:ss"),
         @Java110ParamDoc(name = "photo", type = "String", length = 2048, remark = "鑰冨嫟鍥剧墖"),
@@ -89,15 +93,21 @@
     @Autowired
     private IFileInnerServiceSMO fileInnerServiceSMOImpl;
 
+    @Autowired
+    private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPhotoSMO photoSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
 
-        Assert.hasKeyAndValue(reqJson, "classId", "鏈寘鍚彮娆�");
         Assert.hasKeyAndValue(reqJson, "staffId", "鏈寘鍚憳宸�");
-        Assert.hasKeyAndValue(reqJson, "clockTime", "鏈寘鍚�冨嫟鏃堕棿");
+        Assert.hasKeyAndValue(reqJson, "checkTime", "鏈寘鍚�冨嫟鏃堕棿");
     }
 
     @Override
+    @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
         StoreUserDto storeUserDto = new StoreUserDto();
@@ -112,42 +122,37 @@
 
         Assert.listOnlyOne(storeUserDtos, "鍛樺伐涓嶅瓨鍦�");
 
+        OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
+        orgStaffRelDto.setStoreId(storeUserDtos.get(0).getStoreId());
+        orgStaffRelDto.setStaffId(reqJson.getString("staffId"));
+        List<OrgStaffRelDto> orgStaffRelDtos = orgStaffRelV1InnerServiceSMOImpl.queryOrgStaffRels(orgStaffRelDto);
+
+        if(orgStaffRelDtos == null || orgStaffRelDtos.size() < 1){
+            throw new CmdException("鍛樺伐娌℃湁鑰冨嫟浠诲姟");
+        }
+
+        List<String> orgIds = new ArrayList<>();
+        for(OrgStaffRelDto orgStaffRelDto1: orgStaffRelDtos){
+            orgIds.add(orgStaffRelDto1.getOrgId());
+        }
+
         // 鑰冨嫟鐝鏄惁瀛樺湪
         AttendanceClassesDto attendanceClassesDto = new AttendanceClassesDto();
         attendanceClassesDto.setStoreId(storeUserDtos.get(0).getStoreId());
-        attendanceClassesDto.setClassesId(reqJson.getString("classId"));
+        attendanceClassesDto.setClassesObjIds(orgIds.toArray(new String[orgIds.size()]));
         List<AttendanceClassesDto> attendanceClassesDtos = attendanceClassesV1InnerServiceSMOImpl.queryAttendanceClassess(attendanceClassesDto);
 
-        Assert.listOnlyOne(attendanceClassesDtos, "鐝涓嶅瓨鍦�");
-
-
-        AttendanceLogPo attendanceLogPo = new AttendanceLogPo();
-        attendanceLogPo.setLogId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_logId));
-        attendanceLogPo.setStoreId(storeUserDtos.get(0).getStoreId());
-        attendanceLogPo.setStaffId(reqJson.getString("staffId"));
-        attendanceLogPo.setClockTime(reqJson.getString("clockTime"));
-        attendanceLogPo.setDepartmentId(attendanceClassesDtos.get(0).getClassesObjId());
-        attendanceLogPo.setDepartmentName(attendanceClassesDtos.get(0).getClassesObjName());
-        attendanceLogPo.setStaffName(userDtos.get(0).getName());
-
-        int flag = attendanceLogInnerServiceSMOImpl.saveAttendanceLog(attendanceLogPo);
-
-        if (flag < 1) {
-            throw new CmdException("鑰冨嫟澶辫触");
+        if(attendanceClassesDtos == null || attendanceClassesDtos.size() < 1){
+            throw new CmdException("鐝涓嶅瓨鍦�");
         }
 
-        // 鏌ヨ鏄惁涓轰笂鐝�
-
-        AttendanceClassesTaskDetailDto attendanceClassesTaskDetailDto = new AttendanceClassesTaskDetailDto();
-        attendanceClassesTaskDetailDto.setNowCheckTime(reqJson.getString("clockTime"));
-        attendanceClassesTaskDetailDto.setClassId(reqJson.getString("classId"));
-        attendanceClassesTaskDetailDto.setStaffId(reqJson.getString("staffId"));
-        List<AttendanceClassesTaskDetailDto> attendanceClassesTaskDetailDtos = attendanceClassesTaskDetailInnerServiceSMOImpl.queryAttendanceClassesTaskDetails(attendanceClassesTaskDetailDto);
-
-        if (attendanceClassesTaskDetailDtos == null || attendanceClassesTaskDetailDtos.size() < 1) {
-            context.setResponseEntity(ResultVo.error("涓嶆槸鑰冨嫟鑼冨洿鍐�"));
-            return;
+       // Assert.listOnlyOne(attendanceClassesDtos, "鐝涓嶅瓨鍦�");
+        for(AttendanceClassesDto tmpAttendanceClassesDto : attendanceClassesDtos) {
+            doCheckInAttendanceLog(context, reqJson, storeUserDtos, userDtos, tmpAttendanceClassesDto);
         }
+    }
+
+    private void doCheckInAttendanceLog(ICmdDataFlowContext context, JSONObject reqJson, List<StoreUserDto> storeUserDtos, List<UserDto> userDtos, AttendanceClassesDto attendanceClassesDto) {
 
         String photo = "";
         if (reqJson.containsKey("photo") && !StringUtil.isEmpty(reqJson.getString("photo"))) {
@@ -160,13 +165,44 @@
             photo = fileInnerServiceSMOImpl.saveFile(fileDto);
         }
 
+
+        AttendanceLogPo attendanceLogPo = new AttendanceLogPo();
+        attendanceLogPo.setLogId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_logId));
+        attendanceLogPo.setStoreId(storeUserDtos.get(0).getStoreId());
+        attendanceLogPo.setStaffId(reqJson.getString("staffId"));
+        attendanceLogPo.setClockTime(reqJson.getString("checkTime"));
+        attendanceLogPo.setDepartmentId(attendanceClassesDto.getClassesObjId());
+        attendanceLogPo.setDepartmentName(attendanceClassesDto.getClassesObjName());
+        attendanceLogPo.setStaffName(userDtos.get(0).getName());
+        attendanceLogPo.setFacePath(photo);
+
+        int flag = attendanceLogInnerServiceSMOImpl.saveAttendanceLog(attendanceLogPo);
+
+        if (flag < 1) {
+            throw new CmdException("鑰冨嫟澶辫触");
+        }
+
+        // 鏌ヨ鏄惁涓轰笂鐝�
+
+        AttendanceClassesTaskDetailDto attendanceClassesTaskDetailDto = new AttendanceClassesTaskDetailDto();
+        attendanceClassesTaskDetailDto.setNowCheckTime(reqJson.getString("checkTime"));
+        attendanceClassesTaskDetailDto.setClassId(attendanceClassesDto.getClassesId());
+        attendanceClassesTaskDetailDto.setStaffId(reqJson.getString("staffId"));
+        List<AttendanceClassesTaskDetailDto> attendanceClassesTaskDetailDtos = attendanceClassesTaskDetailInnerServiceSMOImpl.queryAttendanceClassesTaskDetails(attendanceClassesTaskDetailDto);
+
+        if (attendanceClassesTaskDetailDtos == null || attendanceClassesTaskDetailDtos.size() < 1) {
+            context.setResponseEntity(ResultVo.error("涓嶆槸鑰冨嫟鑼冨洿鍐�"));
+            return;
+        }
+
+
         //褰撳墠鑰冨嫟鐨� 璁板綍
         AttendanceClassesTaskDetailDto nowAttendanceClassesTaskDetailDto = attendanceClassesTaskDetailDtos.get(0);
 
         AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = new AttendanceClassesTaskDetailPo();
         attendanceClassesTaskDetailPo.setDetailId(nowAttendanceClassesTaskDetailDto.getDetailId());
-        attendanceClassesTaskDetailPo.setCheckTime(reqJson.getString("clockTime"));
-        attendanceClassesTaskDetailPo.setState(getState(nowAttendanceClassesTaskDetailDto, DateUtil.getDateFromStringA(reqJson.getString("clockTime"))));
+        attendanceClassesTaskDetailPo.setCheckTime(reqJson.getString("checkTime"));
+        attendanceClassesTaskDetailPo.setState(getState(nowAttendanceClassesTaskDetailDto, DateUtil.getDateFromStringA(reqJson.getString("checkTime"))));
         attendanceClassesTaskDetailPo.setFacePath(photo);
         flag = attendanceClassesTaskDetailInnerServiceSMOImpl.updateAttendanceClassesTaskDetail(attendanceClassesTaskDetailPo);
 
@@ -198,23 +234,23 @@
      * 鑰冨嫟鐘舵�佽绠�
      *
      * @param nowAttendanceClassesTaskDetailDto
-     * @param clockTime
+     * @param checkTime
      * @return
      */
-    private String getState(AttendanceClassesTaskDetailDto nowAttendanceClassesTaskDetailDto, Date clockTime) {
+    private String getState(AttendanceClassesTaskDetailDto nowAttendanceClassesTaskDetailDto, Date checkTime) {
 
         Date value = DateUtil.getDateFromStringA(nowAttendanceClassesTaskDetailDto.getValue());
 
         if (AttendanceClassesTaskDetailDto.SPEC_CD_START.equals(nowAttendanceClassesTaskDetailDto.getSpecCd())) {
 
-            if (clockTime.after(value)) {
+            if (checkTime.after(value)) {
                 return AttendanceClassesTaskDetailDto.STATE_LATE;
             }
             return AttendanceClassesTaskDetailDto.STATE_NORMAL;
         }
 
 
-        if (clockTime.before(value)) {
+        if (checkTime.before(value)) {
             return AttendanceClassesTaskDetailDto.STATE_LEAVE;
         }
         return AttendanceClassesTaskDetailDto.STATE_NORMAL;

--
Gitblit v1.8.0