From bc8750e55ae35a58e3e282198fe47d13e8727023 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期五, 07 四月 2023 16:37:05 +0800
Subject: [PATCH] optimize community publicity

---
 service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java |  135 ++++++++++++++++++++++++++++++--------------
 1 files changed, 91 insertions(+), 44 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 8275227..375ab31 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,15 +3,18 @@
 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.attendanceClassesStaff.AttendanceClassesStaffDto;
 import com.java110.dto.file.FileDto;
 import com.java110.dto.org.OrgStaffRelDto;
 import com.java110.dto.store.StoreUserDto;
@@ -19,6 +22,7 @@
 import com.java110.intf.common.*;
 import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
 import com.java110.intf.store.IStoreInnerServiceSMO;
+import com.java110.intf.user.IAttendanceClassesStaffV1InnerServiceSMO;
 import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.po.attendanceClasses.AttendanceClassesPo;
 import com.java110.po.attendanceClassesTask.AttendanceClassesTaskPo;
@@ -92,7 +96,10 @@
     private IFileInnerServiceSMO fileInnerServiceSMOImpl;
 
     @Autowired
-    private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl;
+    private IAttendanceClassesStaffV1InnerServiceSMO attendanceClassesStaffV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPhotoSMO photoSMOImpl;
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
@@ -102,6 +109,7 @@
     }
 
     @Override
+    @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
         StoreUserDto storeUserDto = new StoreUserDto();
@@ -116,45 +124,51 @@
 
         Assert.listOnlyOne(storeUserDtos, "鍛樺伐涓嶅瓨鍦�");
 
-        OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
-        orgStaffRelDto.setStoreId(storeUserDtos.get(0).getStoreId());
-        orgStaffRelDto.setStaffId(reqJson.getString("staffId"));
-        List<OrgStaffRelDto> orgStaffRelDtos = orgStaffRelV1InnerServiceSMOImpl.queryOrgStaffRels(orgStaffRelDto);
+        AttendanceClassesStaffDto attendanceClassesStaffDto = new AttendanceClassesStaffDto();
+        attendanceClassesStaffDto.setStaffId(reqJson.getString("staffId"));
+        attendanceClassesStaffDto.setStoreId(storeUserDtos.get(0).getStoreId());
+        List<AttendanceClassesStaffDto> attendanceClassesStaffs = attendanceClassesStaffV1InnerServiceSMOImpl.queryAttendanceClassesStaffs(attendanceClassesStaffDto);
 
-        if(orgStaffRelDtos == null || orgStaffRelDtos.size() < 1){
+        if (attendanceClassesStaffs == null || attendanceClassesStaffs.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.setClassesObjIds(orgIds.toArray(new String[orgIds.size()]));
-        List<AttendanceClassesDto> attendanceClassesDtos = attendanceClassesV1InnerServiceSMOImpl.queryAttendanceClassess(attendanceClassesDto);
-
-        if(attendanceClassesDtos == null || attendanceClassesDtos.size() < 1){
-            throw new CmdException("鐝涓嶅瓨鍦�");
-        }
-
-       // Assert.listOnlyOne(attendanceClassesDtos, "鐝涓嶅瓨鍦�");
-        for(AttendanceClassesDto tmpAttendanceClassesDto : attendanceClassesDtos) {
-            doCheckInAttendanceLog(context, reqJson, storeUserDtos, userDtos, tmpAttendanceClassesDto);
+        for (AttendanceClassesStaffDto tmpAttendanceClassesStaffDto : attendanceClassesStaffs) {
+            // 鑰冨嫟鐝鏄惁瀛樺湪
+            AttendanceClassesDto attendanceClassesDto = new AttendanceClassesDto();
+            attendanceClassesDto.setStoreId(storeUserDtos.get(0).getStoreId());
+            attendanceClassesDto.setClassesId(tmpAttendanceClassesStaffDto.getClassesId());
+            List<AttendanceClassesDto> attendanceClassesDtos = attendanceClassesV1InnerServiceSMOImpl.queryAttendanceClassess(attendanceClassesDto);
+            if (attendanceClassesDtos == null || attendanceClassesDtos.size() < 1) {
+                throw new CmdException("鐝涓嶅瓨鍦�");
+            }
+            doCheckInAttendanceLog(context, reqJson, storeUserDtos, userDtos, attendanceClassesDtos.get(0));
         }
     }
 
     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"))) {
+            FileDto fileDto = new FileDto();
+            fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
+            fileDto.setFileName(fileDto.getFileId());
+            fileDto.setContext(reqJson.getString("photo"));
+            fileDto.setSuffix("jpeg");
+            fileDto.setCommunityId("-1");
+            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.setDepartmentId(attendanceClassesDto.getClassesId());
+        attendanceLogPo.setDepartmentName(attendanceClassesDto.getClassesName());
         attendanceLogPo.setStaffName(userDtos.get(0).getName());
+        attendanceLogPo.setFacePath(photo);
 
         int flag = attendanceLogInnerServiceSMOImpl.saveAttendanceLog(attendanceLogPo);
 
@@ -168,23 +182,30 @@
         attendanceClassesTaskDetailDto.setNowCheckTime(reqJson.getString("checkTime"));
         attendanceClassesTaskDetailDto.setClassId(attendanceClassesDto.getClassesId());
         attendanceClassesTaskDetailDto.setStaffId(reqJson.getString("staffId"));
+        attendanceClassesTaskDetailDto.setState(AttendanceClassesTaskDetailDto.STATE_WAIT);
         List<AttendanceClassesTaskDetailDto> attendanceClassesTaskDetailDtos = attendanceClassesTaskDetailInnerServiceSMOImpl.queryAttendanceClassesTaskDetails(attendanceClassesTaskDetailDto);
 
         if (attendanceClassesTaskDetailDtos == null || attendanceClassesTaskDetailDtos.size() < 1) {
-            context.setResponseEntity(ResultVo.error("涓嶆槸鑰冨嫟鑼冨洿鍐�"));
+            attendanceClassesTaskDetailDto = new AttendanceClassesTaskDetailDto();
+            attendanceClassesTaskDetailDto.setNowCheckTime(reqJson.getString("checkTime"));
+            attendanceClassesTaskDetailDto.setClassId(attendanceClassesDto.getClassesId());
+            attendanceClassesTaskDetailDto.setStaffId(reqJson.getString("staffId"));
+            attendanceClassesTaskDetailDtos = attendanceClassesTaskDetailInnerServiceSMOImpl.queryAttendanceClassesTaskDetails(attendanceClassesTaskDetailDto);
+
+            if (attendanceClassesTaskDetailDtos != null || attendanceClassesTaskDetailDtos.size() > 0) {
+                String specName = "涓婄彮:";
+                if (!AttendanceClassesTaskDetailDto.SPEC_CD_START.equals(attendanceClassesTaskDetailDtos.get(0).getSpecCd())) {
+                    specName = "涓嬬彮:";
+                }
+                updateAttendanceLogRemark(attendanceLogPo.getLogId(), specName + "閲嶅鎵撳崱");
+                context.setResponseEntity(ResultVo.error("閲嶅鎵撳崱"));
+                return;
+            }
+            updateAttendanceLogRemark(attendanceLogPo.getLogId(), "鏈埌鏃堕棿");
+            context.setResponseEntity(ResultVo.error("鏈埌鏃堕棿"));
             return;
         }
 
-        String photo = "";
-        if (reqJson.containsKey("photo") && !StringUtil.isEmpty(reqJson.getString("photo"))) {
-            FileDto fileDto = new FileDto();
-            fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
-            fileDto.setFileName(fileDto.getFileId());
-            fileDto.setContext(reqJson.getString("photo"));
-            fileDto.setSuffix("jpeg");
-            fileDto.setCommunityId("-1");
-            photo = fileInnerServiceSMOImpl.saveFile(fileDto);
-        }
 
         //褰撳墠鑰冨嫟鐨� 璁板綍
         AttendanceClassesTaskDetailDto nowAttendanceClassesTaskDetailDto = attendanceClassesTaskDetailDtos.get(0);
@@ -192,11 +213,16 @@
         AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = new AttendanceClassesTaskDetailPo();
         attendanceClassesTaskDetailPo.setDetailId(nowAttendanceClassesTaskDetailDto.getDetailId());
         attendanceClassesTaskDetailPo.setCheckTime(reqJson.getString("checkTime"));
-        attendanceClassesTaskDetailPo.setState(getState(nowAttendanceClassesTaskDetailDto, DateUtil.getDateFromStringA(reqJson.getString("clockTime"))));
+        attendanceClassesTaskDetailPo.setState(getState(nowAttendanceClassesTaskDetailDto, DateUtil.getDateFromStringA(reqJson.getString("checkTime"))));
         attendanceClassesTaskDetailPo.setFacePath(photo);
         flag = attendanceClassesTaskDetailInnerServiceSMOImpl.updateAttendanceClassesTaskDetail(attendanceClassesTaskDetailPo);
+        String specName = "涓婄彮:";
+        if (!AttendanceClassesTaskDetailDto.SPEC_CD_START.equals(nowAttendanceClassesTaskDetailDto.getSpecCd())) {
+            specName = "涓嬬彮:";
+        }
 
         if (flag < 1) {
+            updateAttendanceLogRemark(attendanceLogPo.getLogId(), specName + "鑰冨嫟澶辫触");
             throw new CmdException("鑰冨嫟澶辫触");
         }
 
@@ -215,32 +241,53 @@
 
         flag = attendanceClassesTaskInnerServiceSMOImpl.updateAttendanceClassesTask(attendanceClassesTaskPo);
 
-        if (flag < 1) {
-            throw new CmdException("鑰冨嫟澶辫触");
+//        if (flag < 1) {
+//            updateAttendanceLogRemark(attendanceLogPo.getLogId(), specName + "鑰冨嫟澶辫触");
+//            throw new CmdException("鑰冨嫟澶辫触");
+//        }
+
+        String msg = "鎵撳崱鎴愬姛";
+        if (AttendanceClassesTaskDetailDto.STATE_LATE.equals(attendanceClassesTaskDetailPo.getState())) {
+            msg = "鎵撳崱杩熷埌";
         }
+
+        if (AttendanceClassesTaskDetailDto.STATE_LEAVE.equals(attendanceClassesTaskDetailPo.getState())) {
+            msg = "鎵撳崱鏃╅��";
+        }
+        updateAttendanceLogRemark(attendanceLogPo.getLogId(), specName + msg);
+        context.setResponseEntity(ResultVo.createResponseEntity(ResultVo.CODE_OK, msg));
+
+    }
+
+    private void updateAttendanceLogRemark(String logId, String remark) {
+
+        AttendanceLogPo attendanceLogPo = new AttendanceLogPo();
+        attendanceLogPo.setLogId(logId);
+        attendanceLogPo.setRemark(remark.length() > 1000 ? remark.substring(0, 1000) : remark);
+        attendanceLogInnerServiceSMOImpl.updateAttendanceLog(attendanceLogPo);
     }
 
     /**
      * 鑰冨嫟鐘舵�佽绠�
      *
      * @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