Browse Source

Merge remote-tracking branch 'origin/master'

yanliming 4 years ago
parent
commit
524e818194

+ 1 - 1
common/src/main/java/com/jpsoft/shinestar/modules/base/dao/PersonDeviceLogDAO.java

@@ -38,7 +38,7 @@ public interface PersonDeviceLogDAO {
 
 
 
 
     List<PersonDeviceLog> findAllPersonLogByDeviceNo(@Param("startTime") Date startTime, @Param("endTime") Date endTime,
     List<PersonDeviceLog> findAllPersonLogByDeviceNo(@Param("startTime") Date startTime, @Param("endTime") Date endTime,
-                                                                 @Param("deviceNoList") List<String> deviceNoList);
+                                                                 @Param("deviceNoList") String deviceNoList);
 
 
     List<PersonDeviceLog> findAllPersonLogByCompanyIdAndDeviceNo(@Param("startTime") Date startTime, @Param("endTime") Date endTime,
     List<PersonDeviceLog> findAllPersonLogByCompanyIdAndDeviceNo(@Param("startTime") Date startTime, @Param("endTime") Date endTime,
                                                                  @Param("companyList") List<CompanyInfo> companyList,
                                                                  @Param("companyList") List<CompanyInfo> companyList,

+ 6 - 0
common/src/main/java/com/jpsoft/shinestar/modules/base/entity/PersonInfo.java

@@ -245,4 +245,10 @@ public class PersonInfo implements Serializable {
 
 
     @ApiModelProperty(value = "车牌号")
     @ApiModelProperty(value = "车牌号")
     private String carNum;
     private String carNum;
+
+    @ApiModelProperty(value = "后勤人员类别")
+    private String hqStatus;
+
+    @ApiModelProperty(value = "后勤排序号")
+    private String hqSortNo;
 }
 }

+ 1 - 1
common/src/main/java/com/jpsoft/shinestar/modules/base/service/PersonDeviceLogService.java

@@ -41,7 +41,7 @@ public interface PersonDeviceLogService {
     Page<PersonDeviceLog> findVisitorLogByDeviceNoList(DateTime beginOfDay, DateTime endOfDay, List<String> deviceNoList, int pageIndex, int pageSize);
     Page<PersonDeviceLog> findVisitorLogByDeviceNoList(DateTime beginOfDay, DateTime endOfDay, List<String> deviceNoList, int pageIndex, int pageSize);
     Page<PersonDeviceLog> findVisitorLogByDeviceNoList(DateTime beginOfDay, DateTime endOfDay, List<String> deviceNoList, int pageIndex, int pageSize, String filter, BigDecimal max);
     Page<PersonDeviceLog> findVisitorLogByDeviceNoList(DateTime beginOfDay, DateTime endOfDay, List<String> deviceNoList, int pageIndex, int pageSize, String filter, BigDecimal max);
 
 
-    Page<PersonDeviceLog> findAllPersonLogByDeviceNo(DateTime beginOfDay, DateTime endOfDay, List<String> deviceList, int pageIndex, int pageSize);
+    Page<PersonDeviceLog> findAllPersonLogByDeviceNo(DateTime beginOfDay, DateTime endOfDay, String deviceList, int pageIndex, int pageSize);
 
 
     Page<PersonDeviceLog> findAllPersonLogByCompanyListAndDeviceNoList(DateTime beginOfDay, DateTime endOfDay, List<CompanyInfo> companyList, List<String> deviceList, int pageIndex, int pageSize);
     Page<PersonDeviceLog> findAllPersonLogByCompanyListAndDeviceNoList(DateTime beginOfDay, DateTime endOfDay, List<CompanyInfo> companyList, List<String> deviceList, int pageIndex, int pageSize);
     Page<PersonDeviceLog> findLastTeacherLogByCompanyList(Date beginOfDay, Date endOfDay, List<CompanyInfo> list, int pageIndex, int pageSize);
     Page<PersonDeviceLog> findLastTeacherLogByCompanyList(Date beginOfDay, Date endOfDay, List<CompanyInfo> list, int pageIndex, int pageSize);

+ 1 - 1
common/src/main/java/com/jpsoft/shinestar/modules/base/service/impl/PersonDeviceLogServiceImpl.java

@@ -248,7 +248,7 @@ public class PersonDeviceLogServiceImpl implements PersonDeviceLogService {
 
 
 
 
     @Override
     @Override
-    public Page<PersonDeviceLog> findAllPersonLogByDeviceNo(DateTime beginOfDay, DateTime endOfDay,List<String> deviceNoList,int pageIndex, int pageSize) {
+    public Page<PersonDeviceLog> findAllPersonLogByDeviceNo(DateTime beginOfDay, DateTime endOfDay,String deviceNoList,int pageIndex, int pageSize) {
         Page<PersonDeviceLog> page = PageHelper.startPage(pageIndex, pageSize).doSelectPage(() -> {
         Page<PersonDeviceLog> page = PageHelper.startPage(pageIndex, pageSize).doSelectPage(() -> {
             personDeviceLogDAO.findAllPersonLogByDeviceNo(beginOfDay,endOfDay,deviceNoList);
             personDeviceLogDAO.findAllPersonLogByDeviceNo(beginOfDay,endOfDay,deviceNoList);
         });
         });

+ 4 - 0
common/src/main/java/com/jpsoft/shinestar/modules/business/dto/PersonInfoMonthWSADTO.java

@@ -37,5 +37,9 @@ public class PersonInfoMonthWSADTO {
     private BigDecimal businessTripNum;
     private BigDecimal businessTripNum;
     @ApiModelProperty(value = "请假天数")
     @ApiModelProperty(value = "请假天数")
     private BigDecimal leaveNum;
     private BigDecimal leaveNum;
+    @ApiModelProperty(value = "休息天数")
+    private BigDecimal restDays;
+    @ApiModelProperty(value = "企业全称,为空则保存企业名称")
+    private String companyName;
 
 
 }
 }

+ 3 - 1
common/src/main/java/com/jpsoft/shinestar/modules/business/entity/WorkScheduleAttendance.java

@@ -112,7 +112,6 @@ public class WorkScheduleAttendance {
     @ApiModelProperty(value = "班次编号")
     @ApiModelProperty(value = "班次编号")
     private String workShiftNumber;
     private String workShiftNumber;
 
 
-
     @ApiModelProperty(value = "补卡对应人员id")
     @ApiModelProperty(value = "补卡对应人员id")
     private String supplementWorkPersonId;
     private String supplementWorkPersonId;
 
 
@@ -125,6 +124,9 @@ public class WorkScheduleAttendance {
     @ApiModelProperty(value = "加班人员表主键")
     @ApiModelProperty(value = "加班人员表主键")
     private String workOverPersonId;
     private String workOverPersonId;
 
 
+    @ApiModelProperty(value = "与考勤时间相差分钟")
+    private BigDecimal offsetMinute;
+
     @Transient
     @Transient
     private WorkOverPerson workOverPerson;
     private WorkOverPerson workOverPerson;
 }
 }

+ 31 - 1
common/src/main/java/com/jpsoft/shinestar/modules/business/service/impl/WorkScheduleAttendanceServiceImpl.java

@@ -19,12 +19,13 @@ import com.jpsoft.shinestar.modules.common.utils.StringUtils;
 import com.jpsoft.shinestar.modules.common.utils.WechatMessageUtil;
 import com.jpsoft.shinestar.modules.common.utils.WechatMessageUtil;
 import com.jpsoft.shinestar.modules.sys.entity.DataDictionary;
 import com.jpsoft.shinestar.modules.sys.entity.DataDictionary;
 import com.jpsoft.shinestar.modules.sys.service.DataDictionaryService;
 import com.jpsoft.shinestar.modules.sys.service.DataDictionaryService;
-import com.sun.corba.se.spi.orbutil.threadpool.Work;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.joda.time.DateTime;
 import org.joda.time.DateTime;
 import org.joda.time.Days;
 import org.joda.time.Days;
 import org.joda.time.Hours;
 import org.joda.time.Hours;
 import org.joda.time.Minutes;
 import org.joda.time.Minutes;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.ValueOperations;
 import org.springframework.data.redis.core.ValueOperations;
@@ -611,6 +612,33 @@ public class WorkScheduleAttendanceServiceImpl implements WorkScheduleAttendance
     private void saveWorkAttendance(Long personId, BigDecimal temperature, Date recordTime, String attendanceDate,
     private void saveWorkAttendance(Long personId, BigDecimal temperature, Date recordTime, String attendanceDate,
                                     String personScheduleId, String workShiftId, String result, Integer minutes,
                                     String personScheduleId, String workShiftId, String result, Integer minutes,
                                     String classify, String workStatus, WorkOverPerson workOverPerson) {
                                     String classify, String workStatus, WorkOverPerson workOverPerson) {
+        long offsetMinute = 0;
+
+        try {
+            WorkShiftInfo workShiftInfo = workShiftInfoService.get(workShiftId);
+
+            if (workShiftInfo != null) {
+                DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm");
+
+                if ("1".equals(classify)) {
+                    //上班
+                    DateTime workTime = DateTime.parse(attendanceDate + " " + workShiftInfo.getWorkTime(), formatter);
+                    workTime = workTime.plusDays(workShiftInfo.getWorkDayType());
+
+                    offsetMinute = Minutes.minutesBetween(new DateTime(recordTime), workTime).getMinutes();
+                } else {
+                    //下班
+                    DateTime closingTime = DateTime.parse(attendanceDate + " " + workShiftInfo.getClosingTime(), formatter);
+                    closingTime = closingTime.plusDays(workShiftInfo.getClosingDayType());
+
+                    offsetMinute = Minutes.minutesBetween(new DateTime(recordTime), closingTime).getMinutes();
+                }
+            }
+        }
+        catch (Exception ex){
+            log.error(ex.getMessage(),ex);
+        }
+
         WorkScheduleAttendance workEndAttendance = new WorkScheduleAttendance();
         WorkScheduleAttendance workEndAttendance = new WorkScheduleAttendance();
 
 
         List<WorkScheduleAttendance> attendanceList = workScheduleAttendanceDAO.findByPersonScheduleIdAndClassify(personScheduleId, workShiftId, classify);
         List<WorkScheduleAttendance> attendanceList = workScheduleAttendanceDAO.findByPersonScheduleIdAndClassify(personScheduleId, workShiftId, classify);
@@ -629,6 +657,7 @@ public class WorkScheduleAttendanceServiceImpl implements WorkScheduleAttendance
             workEndAttendance.setTemperature(temperature);
             workEndAttendance.setTemperature(temperature);
             workEndAttendance.setRecordTime(recordTime);
             workEndAttendance.setRecordTime(recordTime);
             workEndAttendance.setCreateTime(new Date());
             workEndAttendance.setCreateTime(new Date());
+            workEndAttendance.setOffsetMinute(new BigDecimal(offsetMinute));
 
 
             if(workOverPerson!=null){
             if(workOverPerson!=null){
                 workEndAttendance.setWorkOverPersonId(workOverPerson.getId());
                 workEndAttendance.setWorkOverPersonId(workOverPerson.getId());
@@ -645,6 +674,7 @@ public class WorkScheduleAttendanceServiceImpl implements WorkScheduleAttendance
             workEndAttendance.setTemperature(temperature);
             workEndAttendance.setTemperature(temperature);
             workEndAttendance.setRecordTime(recordTime);
             workEndAttendance.setRecordTime(recordTime);
             workEndAttendance.setUpdateTime(new Date());
             workEndAttendance.setUpdateTime(new Date());
+            workEndAttendance.setOffsetMinute(new BigDecimal(offsetMinute));
 
 
             if(workOverPerson!=null){
             if(workOverPerson!=null){
                 workEndAttendance.setWorkOverPersonId(workOverPerson.getId());
                 workEndAttendance.setWorkOverPersonId(workOverPerson.getId());

+ 5 - 5
common/src/main/resources/mapper/base/PersonDeviceLog.xml

@@ -355,14 +355,14 @@
         <![CDATA[
         <![CDATA[
             select person_id,face_Image,max(record_Time) as record_Time from base_person_device_log
             select person_id,face_Image,max(record_Time) as record_Time from base_person_device_log
             where 1=1
             where 1=1
-            and record_time >= #{startTime}
-            and record_time <= #{endTime}
             and person_id!=0
             and person_id!=0
             and del_flag = 0
             and del_flag = 0
+            and record_time >= #{startTime}
+            and record_time <= #{endTime}
+
+            and device_no=#{deviceNoList}
         ]]>
         ]]>
-        <foreach collection="deviceNoList" index="index" item="item" open="and device_no in(" separator="," close=")">
-            #{item}
-        </foreach>
+
         group by person_id
         group by person_id
         order by record_time desc
         order by record_time desc
 
 

+ 12 - 8
common/src/main/resources/mapper/base/PersonInfo.xml

@@ -43,7 +43,8 @@
         <result property="workStatus" column="work_status"/>
         <result property="workStatus" column="work_status"/>
         <result property="jobNumber" column="job_number"/>
         <result property="jobNumber" column="job_number"/>
         <result property="carNum" column="car_num"/>
         <result property="carNum" column="car_num"/>
-
+        <result property="hqSortNo" column="hq_sort_no"/>
+        <result property="hqStatus" column="hq_status"/>
     </resultMap>
     </resultMap>
     <insert id="insert" parameterType="com.jpsoft.shinestar.modules.base.entity.PersonInfo">
     <insert id="insert" parameterType="com.jpsoft.shinestar.modules.base.entity.PersonInfo">
         <selectKey resultType="long" keyColumn="id_" keyProperty="id">
         <selectKey resultType="long" keyColumn="id_" keyProperty="id">
@@ -55,7 +56,7 @@
 	    app_enabled,password_enabled,guest_enabled,position1_,position2_,
 	    app_enabled,password_enabled,guest_enabled,position1_,position2_,
 	    position3_,position4_,position5_,face_image_url,del_flag,
 	    position3_,position4_,position5_,face_image_url,del_flag,
 	    create_by,create_time,update_by,update_time,popedom_,wechat_notice_enabled,allow_view_local,health_ertificate_url,is_sync,sex_,
 	    create_by,create_time,update_by,update_time,popedom_,wechat_notice_enabled,allow_view_local,health_ertificate_url,is_sync,sex_,
-	    park_id,work_status,job_number,car_num)
+	    park_id,work_status,job_number,car_num,hq_sort_no,hq_status)
 		values
 		values
 		(
 		(
             #{companyId,jdbcType=VARCHAR}
             #{companyId,jdbcType=VARCHAR}
@@ -90,7 +91,8 @@
             ,#{workStatus,jdbcType=VARCHAR}
             ,#{workStatus,jdbcType=VARCHAR}
             ,#{jobNumber,jdbcType=VARCHAR}
             ,#{jobNumber,jdbcType=VARCHAR}
             ,#{carNum,jdbcType=VARCHAR}
             ,#{carNum,jdbcType=VARCHAR}
-
+            ,#{hqSortNo,jdbcType= NUMERIC }
+            ,#{hqStatus,jdbcType=VARCHAR}
 		)
 		)
 	]]>
 	]]>
     </insert>
     </insert>
@@ -199,6 +201,12 @@
             <if test="carNum != null">
             <if test="carNum != null">
                 car_num = #{carNum,jdbcType=VARCHAR}
                 car_num = #{carNum,jdbcType=VARCHAR}
             </if>
             </if>
+            <if test="isHq != null">
+                is_hq = #{isHq,jdbcType=NUMERIC}
+            </if>
+            <if test="hqStatus != null">
+                hq_status = #{hqStatus,jdbcType=VARCHAR}
+            </if>
         </set>
         </set>
         where id_=#{id}
         where id_=#{id}
     </update>
     </update>
@@ -409,11 +417,7 @@
                 </if>
                 </if>
             </trim>
             </trim>
             <if test="searchParams.hqStatus != null">
             <if test="searchParams.hqStatus != null">
-                and a.id_ in(
-                    select person_id from base_hq_person
-                    where find_in_set(hq_status,#{searchParams.hqStatus})>0
-                    and del_flag=0
-                )
+                and a.hq_status = #{searchParams.hqStatus}
             </if>
             </if>
             <if test="searchParams.querHq != null">
             <if test="searchParams.querHq != null">
                 and a.id_ in(
                 and a.id_ in(

+ 6 - 1
common/src/main/resources/mapper/business/WorkScheduleAttendance.xml

@@ -26,6 +26,7 @@
         <result property="lateLeaveMinute" column="late_leave_minute"/>
         <result property="lateLeaveMinute" column="late_leave_minute"/>
         <result property="coefficientDays" column="coefficient_days"/>
         <result property="coefficientDays" column="coefficient_days"/>
         <result property="workOverPersonId" column="work_over_person_id"/>
         <result property="workOverPersonId" column="work_over_person_id"/>
+        <result property="offsetMinute" column="offset_minute"/>
     </resultMap>
     </resultMap>
     <insert id="insert" parameterType="com.jpsoft.shinestar.modules.business.entity.WorkScheduleAttendance">
     <insert id="insert" parameterType="com.jpsoft.shinestar.modules.business.entity.WorkScheduleAttendance">
         <!--
         <!--
@@ -37,7 +38,7 @@
 		insert into business_work_schedule_attendance
 		insert into business_work_schedule_attendance
 	    (id_,person_schedule_id,work_shift_id,attendance_date,classify_,person_id,result_,temperature_,
 	    (id_,person_schedule_id,work_shift_id,attendance_date,classify_,person_id,result_,temperature_,
 	    record_time,create_by,create_time,update_by,update_time,del_flag,work_status,remark_,supplement_work_person_id,
 	    record_time,create_by,create_time,update_by,update_time,del_flag,work_status,remark_,supplement_work_person_id,
-	    late_leave_minute,work_over_person_id)
+	    late_leave_minute,work_over_person_id,offset_minute)
 		values
 		values
 		(
 		(
             #{id,jdbcType=VARCHAR}
             #{id,jdbcType=VARCHAR}
@@ -59,6 +60,7 @@
             ,#{supplementWorkPersonId,jdbcType=VARCHAR}
             ,#{supplementWorkPersonId,jdbcType=VARCHAR}
             ,#{lateLeaveMinute,jdbcType=NUMERIC}
             ,#{lateLeaveMinute,jdbcType=NUMERIC}
             ,#{workOverPersonId,jdbcType=VARCHAR}
             ,#{workOverPersonId,jdbcType=VARCHAR}
+            ,#{offsetMinute,jdbcType=NUMERIC}
 		)
 		)
 	]]>
 	]]>
     </insert>
     </insert>
@@ -122,6 +124,9 @@
             <if test="workOverPersonId!=null">
             <if test="workOverPersonId!=null">
                 work_over_person_id=#{workOverPersonId, jdbcType=NUMERIC},
                 work_over_person_id=#{workOverPersonId, jdbcType=NUMERIC},
             </if>
             </if>
+            <if test="offsetMinute!=null">
+                offset_minute=#{offsetMinute,jdbcType=NUMERIC},
+            </if>
         </set>
         </set>
         where id_=#{id}
         where id_=#{id}
     </update>
     </update>

+ 3 - 17
web/src/main/java/com/jpsoft/shinestar/modules/business/controller/HealthPublicityController.java

@@ -144,25 +144,10 @@ public class HealthPublicityController {
     }
     }
     @GetMapping("/healthPublicityCanteen")
     @GetMapping("/healthPublicityCanteen")
     public String canteen(String id, Model model) {
     public String canteen(String id, Model model) {
-        DeviceInfo info = deviceInfoService.get(id);
 
 
 
 
-        model.addAttribute("now", DateTime.now().toString("yyyy-MM-dd HH:mm"));
-
-
-        List<String> deviceNoList = new ArrayList<>();
-        List<CompanyInfo> list=new ArrayList<>();
-        CompanyInfo cinfo= new CompanyInfo();
-        cinfo.setId("test");
-        list.add(cinfo);
-        deviceNoList.add(info.getDeviceNo());
-
-        if (deviceNoList.size()==0){
-            deviceNoList.add("-1");
-        }
-
         Page<PersonDeviceLog> personDeviceLogList1 = personDeviceLogService.findAllPersonLogByDeviceNo(DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()),
         Page<PersonDeviceLog> personDeviceLogList1 = personDeviceLogService.findAllPersonLogByDeviceNo(DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()),
-                 deviceNoList,1, 40);
+                id,1, 6);
 
 
 
 
 
 
@@ -176,13 +161,14 @@ public class HealthPublicityController {
 
 
             if (item.getPerson() == null) {
             if (item.getPerson() == null) {
                 map.put("name", "访客" );
                 map.put("name", "访客" );
+                map.put("companyName", "");
 
 
 
 
             } else {
             } else {
                 map.put("name", item.getPerson().getName());
                 map.put("name", item.getPerson().getName());
+                map.put("companyName", item.getPerson().getCompanyName());
 
 
             }
             }
-            map.put("companyName", item.getPerson().getCompanyName());
 
 
             map.put("faceImage", item.getFaceImage());
             map.put("faceImage", item.getFaceImage());
 
 

+ 50 - 9
web/src/main/java/com/jpsoft/shinestar/modules/business/controller/WorkScheduleAttendanceController.java

@@ -436,7 +436,7 @@ public class WorkScheduleAttendanceController {
             Map<String, Object> msgMap = new HashMap<>();
             Map<String, Object> msgMap = new HashMap<>();
 
 
             List<Sort> sortList = new ArrayList<>();
             List<Sort> sortList = new ArrayList<>();
-            sortList.add(new Sort("a.id_", "asc"));
+            sortList.add(new Sort("a.hq_sort_no", "asc"));
 
 
             if (StringUtils.isNotEmpty(name)) {
             if (StringUtils.isNotEmpty(name)) {
                 String[] names = name.split(",");
                 String[] names = name.split(",");
@@ -525,7 +525,12 @@ public class WorkScheduleAttendanceController {
             for (PersonInfo pi : page.getResult()) {
             for (PersonInfo pi : page.getResult()) {
                 PersonInfoMonthWSADTO wsaDTO = new PersonInfoMonthWSADTO();
                 PersonInfoMonthWSADTO wsaDTO = new PersonInfoMonthWSADTO();
                 wsaDTO.setPersonInfo(pi);
                 wsaDTO.setPersonInfo(pi);
-
+                CompanyInfo ci = companyInfoService.get(pi.getCompanyId());
+                if(StringUtils.isNotEmpty(ci.getFullName())){
+                    wsaDTO.setCompanyName(ci.getFullName());
+                }else{
+                    wsaDTO.setCompanyName(ci.getName());
+                }
                 //出差次数businessTripNum
                 //出差次数businessTripNum
 //                Map<String,Object> searchParams11 = new HashMap<>();
 //                Map<String,Object> searchParams11 = new HashMap<>();
 //                searchParams11.put("workStatus","3");
 //                searchParams11.put("workStatus","3");
@@ -594,13 +599,28 @@ public class WorkScheduleAttendanceController {
                     wsaDTO.setAbsenteeismDays(BigDecimal.ZERO);
                     wsaDTO.setAbsenteeismDays(BigDecimal.ZERO);
                 }
                 }
                 //请假天数leaveNum
                 //请假天数leaveNum
-                BigDecimal leaveNum = BigDecimal.ZERO;
-                //attendanceDays应出勤天数-实际出勤天数totalAttendanceDays
-                leaveNum = new BigDecimal(attendanceDays).subtract(totalAttendanceDays);
-                if(leaveNum.compareTo(BigDecimal.ZERO) > 0){
-                    wsaDTO.setLeaveNum(leaveNum);
+//                BigDecimal leaveNum = BigDecimal.ZERO;
+//                //attendanceDays应出勤天数-实际出勤天数totalAttendanceDays
+//                leaveNum = new BigDecimal(attendanceDays).subtract(totalAttendanceDays);
+//                if(leaveNum.compareTo(BigDecimal.ZERO) > 0){
+//                    wsaDTO.setLeaveNum(leaveNum);
+//                }else {
+//                    wsaDTO.setLeaveNum(BigDecimal.ZERO);
+//                }
+                //请假天数leaveNum
+                BigDecimal leaveNum = requestForLeaveInfoService.sumDaysByPersonIdAndTimeRange(pi.getId(),startDate,endDate);
+                wsaDTO.setLeaveNum(leaveNum);
+
+                //休息天数
+                //查询的总天数-实际出勤天数
+                //实际出勤天数totalAttendanceDays
+                BigDecimal restDays = BigDecimal.ZERO;
+                int daysBetween=daysBetween(startMonth,endMonth) + 1;
+                restDays = new BigDecimal(daysBetween).subtract(totalAttendanceDays);
+                if(restDays.compareTo(BigDecimal.ZERO) > 0){
+                    wsaDTO.setRestDays(restDays);
                 }else {
                 }else {
-                    wsaDTO.setLeaveNum(BigDecimal.ZERO);
+                    wsaDTO.setRestDays(BigDecimal.ZERO);
                 }
                 }
                 wsaList.add(wsaDTO);
                 wsaList.add(wsaDTO);
 
 
@@ -1923,7 +1943,7 @@ public class WorkScheduleAttendanceController {
                 int colIndex = 0;
                 int colIndex = 0;
 
 
                 if(jsonObject.getJSONObject("personInfo")!=null){
                 if(jsonObject.getJSONObject("personInfo")!=null){
-                    row.createCell(colIndex).setCellValue(jsonObject.getJSONObject("personInfo").getString("companyName"));
+                    row.createCell(colIndex).setCellValue(jsonObject.getString("companyName"));
                     colIndex++;
                     colIndex++;
 
 
                     row.createCell(colIndex).setCellValue(jsonObject.getJSONObject("personInfo").getString("jobNumber"));
                     row.createCell(colIndex).setCellValue(jsonObject.getJSONObject("personInfo").getString("jobNumber"));
@@ -2044,4 +2064,25 @@ public class WorkScheduleAttendanceController {
         return workdays;
         return workdays;
     }
     }
 
 
+    /**
+     * 计算两个日期之间相差的天数
+     * @param smdate 较小的时间
+     * @param bdate 较大的时间
+     * @return 相差天数
+     */
+    public static int daysBetween(String smdate,String bdate) {
+        long between_days = 0;
+        try {
+            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(sdf.parse(smdate));
+            long time1 = cal.getTimeInMillis();
+            cal.setTime(sdf.parse(bdate));
+            long time2 = cal.getTimeInMillis();
+            between_days=(time2-time1)/(1000*3600*24);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return Integer.parseInt(String.valueOf(between_days));
+    }
 }
 }

+ 173 - 147
web/src/main/resources/templates/motemwall_canteen.html

@@ -1,155 +1,181 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
 <html xmlns:th="http://www.thymeleaf.org">
 <html xmlns:th="http://www.thymeleaf.org">
 
 
-	<head>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
-		<meta http-equiv="refresh" content="120">
-		<title>企业管理及健康监管平台</title>
-		<link th:href="@{/static/css/mui.min.css}" href="static/css/mui.min.css" rel="stylesheet" />
-		<link th:href="@{/static/fonts/iconfont.css}" href="static/css/iconfont.css" rel="stylesheet" />
-		<link th:href="@{/static/css/sczpfyy.css}" href="static/css/sczpfyy.css" rel="stylesheet" />
-		<style>
-			header .mui-pull-right {
-				z-index: 99 !important;
-			}
-			
-			.header-right-wz {
-				margin-left: 5px;
-			}
-		</style>
-		<link th:href="@{/static/css/xpwyfyy.css}" href="static/css/xpwyfyy.css" rel="stylesheet" />
-		<link th:href="@{/static/css/wallfyy.css}" href="static/css/wallfyy.css" rel="stylesheet" />
-		<style>
-			.fyy-statistics.mui-grid-view.mui-grid-9 .mui-table-view-cell {
-				padding: 0 10px;
-			}
-			
-			.fyy-statistics.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-body {
-				text-align: inherit;
-				margin: 0;
-				display: inherit;
-				line-height: inherit;
-				height: auto;
-				background: #283464;
-				padding: 15px 0;
-				border-radius: 4px;
-				border: #375cf5 solid 1px;
-			}
-			
-			.fyy-statistics.mui-grid-view.mui-grid-9 .mui-media .mui-icon {
-				padding: 0;
-				font-size: 60px
-			}
-			
-			.fyy-wall-top .mui-table-view-cell p {
-				color: #ffffff;
-				font-size: 24px;
-				margin: 20px 0
-			}
-			
-			.mui-bar .mui-content-padded h5 {
-				font-size: 24px;
-				position: absolute;
-				right: 15px;
-				top: 50%;
-				margin-top: -12px;
-				color: #ffffff
-			}
-			
-			.fyy-wall-top .mui-col-xs-3 {
-				width: 25%
-			}
-			
-			.fyy-slider .mui-table-view-cell,
-			.fyy-slider .mui-table-view-cell .mui-content-padded,
-			.fyy-slider .mui-table-view {
-				padding: 10px
-			}
-			
-			.mui-segmented-control.mui-scroll-wrapper,
-			.mui-segmented-control.mui-scroll-wrapper .mui-scroll {
-				height: 60px
-			}
-			
-			.mui-segmented-control .fyy-control-item {
-				line-height: 60px;
-			}
-			
-			.mui-bar {
-				height: 100px;
-			}
-			
-			.mui-bar .mui-title {
-				font-size: 60px;
-				line-height: 100px;
-				font-weight: 600;
-				letter-spacing: 10px;
-				top: 0;
-			}
-			
-			.mui-bar-nav~.mui-content {
-				padding-top: 120px
-			}
-			
-			.mui-segmented-control.mui-segmented-control-inverted .fyy-control-item {
-				font-size: 24px
-			}
-			
-			.mui-table-view .mui-table-view-cell {
-				font-size: 18px;
-				line-height: 30px;
-			}
-			
-			.mui-table-view-cell p {
-				font-size: 18px
-			}
-			
-			.mui-slider-group .mui-col-xs-1 {
-				width: 12.5%
-			}
-
-			.mui-table-view:before,.mui-table-view:after{
-				background:0
-			}
-			.fyy-facema{
-				position: absolute;
-				left:0;
-				bottom:0;
-				width:25%
-			}
-		</style>
-	</head>
-    <body>
-    <div id="app">
-
-        <div class="mui-content fyy-wall">
-
-            <ul class="mui-table-view" style="display:flex;flex-direction:row;flex-wrap:wrap;justify-content: space-between;">
-                <li class="mui-table-view-cell mui-media" th:each="item : ${itemList}" style="width:12.5%;">
-                    <div class="mui-content-padded">
-                        <div class="mui-media-object" style="width:100%;height:180px;">
-                            <img
-                                    th:if="${item.faceImage!=null}"
-                                    th:src="${item.faceImage} + '?x-oss-process=image/resize,m_fill,w_200,h_200'"
-                                    style="object-fit:cover;min-height:100%;width:100%;" class="fyy-faceimage"/>
-                            <img
-                                    th:if="${item.faceImage==null}"
-                                    th:src="@{static/img/wu.jpg}"
-                                    style="object-fit:cover;min-height:100%;width:100%;" class="fyy-faceimage"/>
-
-                         </div>
-                        <div class="mui-media-body">
-                            <span th:text="${item.name}"></span>
-                            <p th:text="${item.companyName}"></p>
-                         </div>
-                        <p th:text="${#dates.format(item.recordTime, 'MM-dd HH:mm')}"></p>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+    <meta http-equiv="refresh" content="5">
+    <title>企业管理及健康监管平台</title>
+    <link th:href="@{/static/css/mui.min.css}" href="static/css/mui.min.css" rel="stylesheet" />
+    <link th:href="@{/static/fonts/iconfont.css}" href="static/css/iconfont.css" rel="stylesheet" />
+    <link th:href="@{/static/css/sczpfyy.css}" href="static/css/sczpfyy.css" rel="stylesheet" />
+    <style>
+        header .mui-pull-right {
+            z-index: 99 !important;
+        }
+
+        .header-right-wz {
+            margin-left: 5px;
+        }
+    </style>
+    <link th:href="@{/static/css/xpwyfyy.css}" href="static/css/xpwyfyy.css" rel="stylesheet" />
+    <link th:href="@{/static/css/wallfyy.css}" href="static/css/wallfyy.css" rel="stylesheet" />
+    <style>
+        .fyy-statistics.mui-grid-view.mui-grid-9 .mui-table-view-cell {
+            padding: 0 10px;
+        }
+
+        .fyy-statistics.mui-table-view.mui-grid-view .mui-table-view-cell .mui-media-body {
+            text-align: inherit;
+            margin: 0;
+            display: inherit;
+            line-height: inherit;
+            height: auto;
+            background: #283464;
+            padding: 15px 0;
+            border-radius: 4px;
+            border: #375cf5 solid 1px;
+        }
+
+        .fyy-statistics.mui-grid-view.mui-grid-9 .mui-media .mui-icon {
+            padding: 0;
+            font-size: 60px
+        }
+
+        .fyy-wall-top .mui-table-view-cell p {
+            color: #ffffff;
+            font-size: 24px;
+            margin: 20px 0
+        }
+
+        .mui-bar .mui-content-padded h5 {
+            font-size: 24px;
+            position: absolute;
+            right: 15px;
+            top: 50%;
+            margin-top: -12px;
+            color: #ffffff
+        }
+
+        .fyy-wall-top .mui-col-xs-3 {
+            width: 25%
+        }
+
+        .fyy-slider .mui-table-view-cell,
+        .fyy-slider .mui-table-view-cell .mui-content-padded,
+        .fyy-slider .mui-table-view {
+            padding: 10px
+        }
+
+        .mui-segmented-control.mui-scroll-wrapper,
+        .mui-segmented-control.mui-scroll-wrapper .mui-scroll {
+            height: 60px
+        }
+
+        .mui-segmented-control .fyy-control-item {
+            line-height: 60px;
+        }
+
+        .mui-bar {
+            height: 100px;
+        }
+
+        .mui-bar .mui-title {
+            font-size: 60px;
+            line-height: 100px;
+            font-weight: 600;
+            letter-spacing: 10px;
+            top: 0;
+        }
+
+        .mui-bar-nav~.mui-content {
+            padding-top: 120px
+        }
+
+        .mui-segmented-control.mui-segmented-control-inverted .fyy-control-item {
+            font-size: 24px
+        }
+        .mui-table-view-cell .mui-content-padded{
+            border: 1px #212c54 solid;
+        }
+        .mui-table-view .mui-table-view-cell {
+            font-size: 18px;
+            line-height: 30px;
+        }
+
+        .mui-table-view-cell p {
+            font-size: 18px
+        }
+
+        .mui-slider-group .mui-col-xs-1 {
+            width: 12.5%
+        }
+
+        .mui-table-view:before,.mui-table-view:after{
+            background:0
+        }
+        .fyy-facema{
+            position: absolute;
+            left:0;
+            bottom:0;
+            width:25%
+        }
+    </style>
+</head>
+<body>
+<div id="app">
+
+    <div class="mui-content fyy-wall">
+
+        <ul class="mui-table-view" style="display:flex;flex-direction:row;flex-wrap:wrap;justify-content: space-between;">
+            <li class="mui-table-view-cell mui-media" th:each="item : ${itemList}" style="width:33%;padding-left: 0px;padding-right: 4px;">
+                <div class="mui-content-padded" style="background-color: #3e4970">
+                    <div class="mui-media-object" style="width:60%;height:22vw;float: left;">
+                        <img
+                                th:if="${item.faceImage!=null}"
+                                th:src="${item.faceImage} + '?x-oss-process=image/resize,m_fill,w_200,h_200'"
+                                style="object-fit:cover;min-height:100%;width:100%;" class="fyy-faceimage"/>
+                        <img
+                                th:if="${item.faceImage==null}"
+                                th:src="@{static/img/wu.jpg}"
+                                style="object-fit:cover;min-height:100%;width:100%;" class="fyy-faceimage"/>
+
+                    </div>
+                    <div class="mui-media-body parent"  style="height:22vw;padding: 10px">
+                        <span style="  font-size: 28px;font-weight:bold" th:text="${item.name}"></span>
+                        <p  style="color: #FFF" th:text="${item.companyName}"></p>
+                        <p  class="child" th:text="${#dates.format(item.recordTime, 'MM-dd HH:mm')}"></p>
+
                     </div>
                     </div>
-                </li>
-            </ul>
-        </div>
+                </div>
+            </li>
+        </ul>
     </div>
     </div>
-    </body>
+</div>
+</body>
+
+<style type="text/css">
+    html{
+        width: 100%;
+        height: 100%;
+    }
+    *{
+        margin: 0;
+        padding: 0;
+    }
+    body{
+        width: 100%;
+        height: 100%;
+    }
+    .parent{
+        position: relative;
+
 
 
+    }
+    .child{
 
 
+        position: absolute;
+        bottom: 0;
+    }
+</style>
 </html>
 </html>