| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- package cn.com.lzt.dingattendanceinfo.service.impl;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.UUID;
- import javax.annotation.Resource;
- import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
- import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
- import org.jeecgframework.core.util.ApplicationContextUtil;
- import org.jeecgframework.core.util.MyClassLoader;
- import org.jeecgframework.core.util.StringUtil;
- import org.jeecgframework.minidao.pojo.MiniDaoPage;
- import org.jeecgframework.tag.vo.datatable.SortDirection;
- import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import cn.com.lzt.attendancetemp.service.AttendanceTempTransactionalServiceI;
- import cn.com.lzt.dingattendanceinfo.dao.DingAttendanceInfoDao;
- import cn.com.lzt.dingattendanceinfo.entity.DingAttendanceinfoEntity;
- import cn.com.lzt.dingattendanceinfo.service.DingAttendanceinfoServiceI;
- import cn.com.lzt.dingattendanceinfo.service.dto.DingAttendanceinfoInDto;
- import cn.com.lzt.dingattendanceinfo.service.dto.DingAttendanceinfoOutDto;
- import cn.com.lzt.dingding.service.DingdingTransactionalService;
- import cn.com.lzt.userattendancedetail.dto.UserAttendanceDetailDto;
- @Service("dingAttendanceinfoService")
- @Transactional
- public class DingAttendanceinfoServiceImpl extends CommonServiceImpl implements DingAttendanceinfoServiceI {
- @Autowired
- private DingdingTransactionalService dingdingTransactionalService;
-
- @Autowired
- AttendanceTempTransactionalServiceI attendanceTempTransactionalService;
-
- @Resource
- DingAttendanceInfoDao dingAttendanceInfoDao;
-
- public void delete(DingAttendanceinfoEntity entity) throws Exception{
- super.delete(entity);
- //执行删除操作增强业务
- this.doDelBus(entity);
- }
-
- public Serializable save(DingAttendanceinfoEntity entity) throws Exception{
- Serializable t = super.save(entity);
- //执行新增操作增强业务
- this.doAddBus(entity);
- return t;
- }
-
- public void saveOrUpdate(DingAttendanceinfoEntity entity) throws Exception{
- super.saveOrUpdate(entity);
- //执行更新操作增强业务
- this.doUpdateBus(entity);
- }
-
- /**
- * 新增操作增强业务
- * @param t
- * @return
- */
- private void doAddBus(DingAttendanceinfoEntity t) throws Exception{
- //-----------------sql增强 start----------------------------
- //-----------------sql增强 end------------------------------
-
- //-----------------java增强 start---------------------------
- //-----------------java增强 end-----------------------------
- }
- /**
- * 更新操作增强业务
- * @param t
- * @return
- */
- private void doUpdateBus(DingAttendanceinfoEntity t) throws Exception{
- //-----------------sql增强 start----------------------------
- //-----------------sql增强 end------------------------------
-
- //-----------------java增强 start---------------------------
- //-----------------java增强 end-----------------------------
- }
- /**
- * 删除操作增强业务
- * @param id
- * @return
- */
- private void doDelBus(DingAttendanceinfoEntity t) throws Exception{
- //-----------------sql增强 start----------------------------
- //-----------------sql增强 end------------------------------
-
- //-----------------java增强 start---------------------------
- //-----------------java增强 end-----------------------------
- }
-
- private Map<String,Object> populationMap(DingAttendanceinfoEntity t){
- Map<String,Object> map = new HashMap<String,Object>();
- map.put("id", t.getId());
- map.put("create_name", t.getCreateName());
- map.put("create_by", t.getCreateBy());
- map.put("create_date", t.getCreateDate());
- map.put("update_name", t.getUpdateName());
- map.put("update_by", t.getUpdateBy());
- map.put("update_date", t.getUpdateDate());
- map.put("sys_org_code", t.getSysOrgCode());
- map.put("sys_company_code", t.getSysCompanyCode());
- map.put("bpm_status", t.getBpmStatus());
- map.put("user_id", t.getUserId());
- map.put("user_code", t.getUserCode());
- map.put("belong_unitid", t.getBelongUnitid());
- map.put("attendance_date", t.getAttendanceDate());
- map.put("attendance_time", t.getAttendanceTime());
- map.put("ding_uniqueid", t.getDingUniqueid());
- map.put("realname", t.getRealname());
- map.put("is_dispose", t.getIsDispose());
- return map;
- }
-
- /**
- * 替换sql中的变量
- * @param sql
- * @param t
- * @return
- */
- public String replaceVal(String sql,DingAttendanceinfoEntity t){
- sql = sql.replace("#{id}",String.valueOf(t.getId()));
- sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
- sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
- sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
- sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
- sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
- sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
- sql = sql.replace("#{sys_org_code}",String.valueOf(t.getSysOrgCode()));
- sql = sql.replace("#{sys_company_code}",String.valueOf(t.getSysCompanyCode()));
- sql = sql.replace("#{bpm_status}",String.valueOf(t.getBpmStatus()));
- sql = sql.replace("#{user_id}",String.valueOf(t.getUserId()));
- sql = sql.replace("#{user_code}",String.valueOf(t.getUserCode()));
- sql = sql.replace("#{belong_unitid}",String.valueOf(t.getBelongUnitid()));
- sql = sql.replace("#{attendance_date}",String.valueOf(t.getAttendanceDate()));
- sql = sql.replace("#{attendance_time}",String.valueOf(t.getAttendanceTime()));
- sql = sql.replace("#{ding_uniqueid}",String.valueOf(t.getDingUniqueid()));
- sql = sql.replace("#{realname}",String.valueOf(t.getRealname()));
- sql = sql.replace("#{is_dispose}",String.valueOf(t.getIsDispose()));
- sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
- return sql;
- }
-
- /**
- * 执行JAVA增强
- */
- private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map<String,Object> data) throws Exception {
- if(StringUtil.isNotEmpty(cgJavaValue)){
- Object obj = null;
- try {
- if("class".equals(cgJavaType)){
- //因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断
- obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance();
- }else if("spring".equals(cgJavaType)){
- obj = ApplicationContextUtil.getContext().getBean(cgJavaValue);
- }
- if(obj instanceof CgformEnhanceJavaInter){
- CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj;
- javaInter.execute("t_bus_ding_attendanceinfo",data);
- }
- } catch (Exception e) {
- e.printStackTrace();
- throw new Exception("执行JAVA增强出现异常!");
- }
- }
- }
- /**
- * 钉钉考勤原始数据检索
- * @param inDto
- * @param page
- * @param rows
- * @param authSql
- * @param sortorder
- * @return 钉钉考勤原始数据
- */
- @Override
- public MiniDaoPage<DingAttendanceinfoOutDto> getDingAttendanceInfoList(
- DingAttendanceinfoInDto inDto, int page, int rows, String authSql,
- String sortorder) {
- MiniDaoPage<DingAttendanceinfoOutDto> datagridList = dingAttendanceInfoDao.dataGrid(inDto, page, rows, authSql,sortorder);
- return datagridList;
- }
- @Override
- public List<DingAttendanceinfoEntity> getDingAttendanceinfoEntities(
- UserAttendanceDetailDto dto) throws Exception {
- List<DingAttendanceinfoEntity> resultlist = new ArrayList<DingAttendanceinfoEntity>();
- Date curdate = dto.getYmdDate();
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curdate);
- calendar.add(Calendar.DATE, 2);
- Date tomdate = calendar.getTime();
- CriteriaQuery cq = new CriteriaQuery(DingAttendanceinfoEntity.class);
- cq.eq("userId", dto.getUserid());
- cq.add();
- cq.between("attendanceTime", curdate, tomdate);
- cq.add();
- cq.addOrder("attendanceTime", SortDirection.asc);
- cq.add();
- resultlist = getListByCriteriaQuery(cq, false);
- return resultlist;
- }
-
- @Override
- public List<DingAttendanceinfoEntity> getDingAttendanceinfoEntitiesInOneMonth(
- String userid, Date curdate) throws Exception {
- List<DingAttendanceinfoEntity> resultlist = new ArrayList<DingAttendanceinfoEntity>();
- // Date curdate = dto.getYmdDate();
- Calendar startcalendar = Calendar.getInstance();
- startcalendar.setTime(curdate);
- startcalendar.set(Calendar.DATE, 1);
- startcalendar.add(Calendar.DATE, -1);
-
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(curdate);
- calendar.add(Calendar.DATE, 32);
- Date tomdate = calendar.getTime();
- CriteriaQuery cq = new CriteriaQuery(DingAttendanceinfoEntity.class);
- cq.eq("userId", userid);
- cq.add();
- cq.between("attendanceTime", startcalendar.getTime(), tomdate);
- cq.add();
- cq.addOrder("attendanceTime", SortDirection.asc);
- cq.add();
- resultlist = getListByCriteriaQuery(cq, false);
- return resultlist;
- }
-
- /**
- * 获取考勤原始数据,分析原始数据到实时查看表
- */
- @Override
- public void signRecordSynchronization() {
- long start1 = System.currentTimeMillis();
- // 同步所有人员的考勤记录到钉钉考勤原始信息表 1221 同步至clock表,不再做后两步
- dingdingTransactionalService.signRecordSynchronization(null,null);
- long start2 = System.currentTimeMillis();
- System.out.println("signRecordSynchronization cost: " + (start2-start1));
- /*// 处理钉钉考勤原始记录表中的数据到考勤实时查看表
- attendanceTempTransactionalService.attendanceTempSynchronization(null);
- long start3 = System.currentTimeMillis();
- System.out.println("attendanceTempSynchronization cost: " + (start3-start2));
- // 考勤实时查看分析考勤状态
- attendanceTempTransactionalService.SetAttendanceStatusAndWarning(null);
- long end = System.currentTimeMillis();
- System.out.println("SetAttendanceStatusAndWarning cost: " + (end-start3));*/
- }
- /**
- * 初始化第二天的所有人的考勤实时查看基础数据
- */
- @Override
- public void attendanceTempInit() {
- Date date = new Date(new Date().getTime() + 1000 * 60 * 60 * 24);
- // 根据用户将每天的实时查看数据初始化
- attendanceTempTransactionalService.attendanceTempInit(date);
- }
- }
|