Преглед изворни кода

Merge remote-tracking branch 'origin/matser' into matser

wy пре 9 месеци
родитељ
комит
afe5beb879

+ 1 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/sqlzdy/Service/SwdlService.java

@@ -22,4 +22,5 @@ public interface SwdlService {
 
     APIResult<Object> queryInspectionData(@RequestBody(required = true) Map<String,Object> map)throws Exception ;
 
+    APIResult queryAttendanceData(@RequestBody(required = true) Map<String,Object> map)throws Exception ;
 }

+ 53 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/sqlzdy/Service/SwdlServiceImpl.java

@@ -198,6 +198,59 @@ public class SwdlServiceImpl extends GenericProvider implements SwdlService {
         return result;
     }
 
+    @Override
+    public APIResult queryAttendanceData(
+            @ApiParam(name = "request", value = "传入查询请求map对象", required = true)
+            @RequestBody(required = true) Map<String,Object> map) throws Exception  {
+        APIResult<Object> result = new APIResult<>();
+        try {
+            int pageNo = Integer.parseInt(map.get("pageNo").toString());
+            int limit = Integer.parseInt(map.get("limit").toString());
+            int startPage = limit*(pageNo-1);
+            map.put("startPage",startPage);
+
+            Map paramMap= getAttendanceMap(map);
+            List<Map<String,Object>> list = updateDataTableDao.selectAttendanceData(paramMap);
+            //int totalCount = updateDataTableDao.selectAttendanceDataCount(map);
+            APIPageList<Map<String,Object>> pageList = getAPIPageList(list);
+            APIPageResult pageResult = new APIPageResult();
+            pageResult.setTotalCount(100);
+            pageResult.setLimit(limit);
+            pageResult.setPage(pageNo);
+            pageList.setPageResult(pageResult);
+            result.setData(pageList);
+        } catch (Exception e) {
+            setExceptionResult(result, StateEnum.ERROR_FORM_BO.getCode(), I18nUtil.getMessage(StateEnum.ERROR_FORM_BO.getCode()+""), e);
+        }
+        return result;
+    }
+
+    private Map getAttendanceMap(Map<String, Object> map) {
+        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+        if (BeanUtils.isNotEmpty(map)) {
+            stringObjectHashMap.put("pageNo", map.get("pageNo"));
+            stringObjectHashMap.put("limit", map.get("limit"));
+            stringObjectHashMap.put("startPage", map.get("startPage"));
+            stringObjectHashMap.put("locationId", getDiDian());
+            if(BeanUtils.isNotEmpty(map.get("param"))){
+                Map param = (Map) map.get("param");
+                String buMen = (String) param.get("buMen");
+                if(BeanUtils.isNotEmpty(param.get("locationId"))){
+                    stringObjectHashMap.put("locationId", param.get("locationId"));
+                }else{
+                    stringObjectHashMap.put("locationId", getDiDian());
+                }
+                if(BeanUtils.isNotEmpty(param.get("yongHuId"))){
+                    stringObjectHashMap.put("yongHuId", String.join(",", (ArrayList)param.get("yongHuId")));
+                }
+                stringObjectHashMap.put("startDate",param.get("kaishiJianShiJ^S"));
+                stringObjectHashMap.put("endDate",param.get("kaishiJianShiJ^E"));
+
+            }
+        }
+        return stringObjectHashMap;
+    }
+
     //获取当前用户地点,前端可以不用传
     private String getDiDian() {
         IPartyPositionService partyPositionService = AppUtil.getBean(IPartyPositionService.class);

+ 12 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/sqlzdy/control/SwdlController.java

@@ -79,4 +79,16 @@ public class SwdlController extends GenericProvider {
         return result;
 
     }
+    @ApiOperation("考勤概况统计")
+    @PostMapping("/attendance/queryData")
+    APIResult queryAttendanceData(@RequestBody(required = true) Map<String,Object> map) throws Exception{
+        APIResult result = new APIResult<>();
+        try {
+            result = swdlService.queryAttendanceData(map);
+        } catch (Exception e) {
+            setExceptionResult(result, StateEnum.ILLEGAL_REQUEST.getCode(), I18nUtil.getMessage(StateEnum.ILLEGAL_REQUEST.getCode() + ""), e);
+        }
+        return result;
+
+    }
 }

+ 3 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/sysdata/dao/UpdateDataTableDao.java

@@ -94,4 +94,7 @@ public interface UpdateDataTableDao {
 
     int selectMobileExInfoCount(@Param("map") Map mapDeal);
 
+    List<Map<String, Object>> selectAttendanceData(@Param("map") Map<String, Object> map);
+
+    //int selectAttendanceDataCount(@Param("map") Map<String, Object> map);
 }

+ 89 - 0
ibps-provider-root/modules/provider-business/src/main/resources/com/lc/ibps/klimsibps/mapping/UpdateDataTableMapper.xml

@@ -520,4 +520,93 @@
             AND examState='已发布'
         </where>
     </select>
+
+    <select id="selectAttendanceData" resultType="java.util.Map" parameterType="java.util.Map">
+        SELECT
+        t.*,
+        (
+        SELECT
+        COUNT( DISTINCT USER_ID_ )
+        FROM
+        v_attendance_statistics
+    <where>
+        di_dian_ = #{map.locationId}
+        <if test="@o.Ognl@isNotEmpty(map.buMen)">
+            AND bu_men_ like CONCAT('%', #{map.buMen}, '%')
+        </if>
+        <if test="@o.Ognl@isNotEmpty(map.startDate)">
+            AND ri_qi_ >= #{map.startDate}
+        </if>
+        <if test="@o.Ognl@isNotEmpty(map.endDate)">
+            AND ri_qi_ <![CDATA[ <= ]]> #{map.endDate}
+        </if>
+        <if test="@o.Ognl@isNotEmpty(map.yongHuId)">
+            AND FIND_IN_SET(yong_hu_id_, #{map.yongHuId})
+        </if>
+    </where>
+        ) AS total_count
+        FROM
+        (
+        SELECT
+        USER_ID_,
+        ri_qi_,
+        user_name_,
+        pos_name_,
+        gong_hao_,
+        MIN( da_ka_shi_jian_1_ ) AS zui_zao,
+        MAX( da_ka_shi_jian_2_ ) AS zui_wan,
+        SUM( da_ka_ci_shu_ ) AS da_ka_ci_shu_,
+        ROUND( SUM( ban_ci_shi_chang_ ) / 60.0, 2 ) AS total_ban_ci_shi_chang,
+        ROUND( SUM( gong_zuo_shi_chan ) / 60.0, 2 ) AS total_gong_zuo_shi_chan,
+        SUM( CASE WHEN zhuang_tai_1_ = '异常' THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '异常' THEN 1 ELSE 0 END ) AS chi_dao_ci_shu,
+        SUM( CASE WHEN zhuang_tai_1_ = '' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END ) AS que_qin_ci_shu,
+        CASE
+
+        WHEN SUM( CASE WHEN zhuang_tai_1_ = '异常' THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '异常' THEN 1 ELSE 0 END ) > 0
+        AND SUM( CASE WHEN zhuang_tai_1_ = '' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END ) > 0 THEN
+        CONCAT(
+        '迟到',
+        SUM( CASE WHEN zhuang_tai_1_ = '异常' THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '异常' THEN 1 ELSE 0 END ),
+        '次,缺勤',
+        SUM( CASE WHEN zhuang_tai_1_ = '' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END ),
+        '次'
+        )
+        WHEN SUM( CASE WHEN zhuang_tai_1_ = '异常' THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '异常' THEN 1 ELSE 0 END ) > 0 THEN
+        CONCAT(
+        '迟到',
+        SUM( CASE WHEN zhuang_tai_1_ = '异常' THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '异常' THEN 1 ELSE 0 END ),
+        '次'
+        )
+        WHEN SUM( CASE WHEN zhuang_tai_1_ = '' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END ) > 0 THEN
+        CONCAT(
+        '缺勤',
+        SUM( CASE WHEN zhuang_tai_1_ = '' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END ) + SUM( CASE WHEN zhuang_tai_2_ = '' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END ),
+        '次'
+        ) ELSE '正常'
+        END AS kao_qin_zhuang_tai
+        FROM
+        v_attendance_statistics
+        <where>
+            di_dian_ = #{map.locationId}
+            <if test="@o.Ognl@isNotEmpty(map.buMen)">
+                AND bu_men_ like CONCAT('%', #{map.buMen}, '%')
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.startDate)">
+                AND ri_qi_ >= #{map.startDate}
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.endDate)">
+                AND ri_qi_ <![CDATA[ <= ]]> #{map.endDate}
+            </if>
+            <if test="@o.Ognl@isNotEmpty(map.yongHuId)">
+                AND FIND_IN_SET(yong_hu_id_, #{map.yongHuId})
+            </if>
+        </where>
+        GROUP BY
+        USER_ID_,
+        ri_qi_
+        ORDER BY
+        ri_qi_ DESC
+        limit ${map.startPage},${map.limit}
+        ) t
+    </select>
 </mapper>