diff --git a/src/main/java/com/zteits/oa/api/dto/asradaily/AsraDailyDateChangeDTO.java b/src/main/java/com/zteits/oa/api/dto/asradaily/AsraDailyDateChangeDTO.java new file mode 100644 index 0000000..40dfab4 --- /dev/null +++ b/src/main/java/com/zteits/oa/api/dto/asradaily/AsraDailyDateChangeDTO.java @@ -0,0 +1,41 @@ +package com.zteits.oa.api.dto.asradaily; + +import com.zteits.oa.api.base.bean.BaiscDTO; + +import java.util.Date; + +public class AsraDailyDateChangeDTO extends BaiscDTO{ + + /**年:2018*/ + private Integer years; + + /**周:1-54周*/ + private Integer weeks; + + /**星期:1-7*/ + private Integer weeksNum; + + public Integer getYears() { + return years; + } + + public void setYears(Integer years) { + this.years = years; + } + + public Integer getWeeks() { + return weeks; + } + + public void setWeeks(Integer weeks) { + this.weeks = weeks; + } + + public Integer getWeeksNum() { + return weeksNum; + } + + public void setWeeksNum(Integer weeksNum) { + this.weeksNum = weeksNum; + } +} \ No newline at end of file diff --git a/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailyQueryReq.java b/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailyQueryReq.java index 019f858..2db033c 100644 --- a/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailyQueryReq.java +++ b/src/main/java/com/zteits/oa/api/dto/asradaily/param/AsraDailyQueryReq.java @@ -1,17 +1,19 @@ package com.zteits.oa.api.dto.asradaily.param; +import com.sun.istack.internal.NotNull; import com.zteits.oa.api.base.bean.BaseRequest; import java.util.Date; public class AsraDailyQueryReq extends BaseRequest{ + /**工时填写日期*/ + @NotNull + private String dailyDate; /**所属员工ID*/ private Long asarOpId; - /**工时填写日期*/ - private Date dailyDate; /**年:2018*/ private Integer years; @@ -27,11 +29,11 @@ public class AsraDailyQueryReq extends BaseRequest{ this.asarOpId = asarOpId; } - public Date getDailyDate() { + public String getDailyDate() { return dailyDate; } - public void setDailyDate(Date dailyDate) { + public void setDailyDate(String dailyDate) { this.dailyDate = dailyDate; } diff --git a/src/main/java/com/zteits/oa/report/biz/AsraDailyQueryServiceImpl.java b/src/main/java/com/zteits/oa/report/biz/AsraDailyQueryServiceImpl.java index cb5441d..df19660 100644 --- a/src/main/java/com/zteits/oa/report/biz/AsraDailyQueryServiceImpl.java +++ b/src/main/java/com/zteits/oa/report/biz/AsraDailyQueryServiceImpl.java @@ -37,7 +37,11 @@ public class AsraDailyQueryServiceImpl implements AsraDailyQueryService { List asraDailyDTOs = new ArrayList<>(); List asraDailies = asraDailyDao.queryAsraDailyList(asraDailyQueryReq); if(CollectionUtil.isNotEmpty(asraDailies)){ - BeanUtils.copyProperties(asraDailies,asraDailyDTOs,AsraDailyDTO.class); + for(AsraDaily asraDaily:asraDailies){ + AsraDailyDTO asraDailyDTO = new AsraDailyDTO(); + BeanUtils.copyProperties(asraDaily,asraDailyDTO); + asraDailyDTOs.add(asraDailyDTO); + } } return new BizResult<>(asraDailyDTOs); } diff --git a/src/main/java/com/zteits/oa/report/dao/impl/AsraDailyDaoImpl.java b/src/main/java/com/zteits/oa/report/dao/impl/AsraDailyDaoImpl.java index 765e11d..1f990d0 100644 --- a/src/main/java/com/zteits/oa/report/dao/impl/AsraDailyDaoImpl.java +++ b/src/main/java/com/zteits/oa/report/dao/impl/AsraDailyDaoImpl.java @@ -35,6 +35,6 @@ public class AsraDailyDaoImpl implements AsraDailyDao{ example.createCriteria().andAsarOpIdEqualTo(asraDailyQueryReq.getAsarOpId()) .andYearsEqualTo(asraDailyQueryReq.getYears()) .andWeeksEqualTo(asraDailyQueryReq.getWeeks()); - return asraDailyMapper.selectByExample(example); + return asraDailyMapper.selectByExampleWithBLOBs(example); } } diff --git a/src/main/java/com/zteits/oa/report/web/AsraDailyController.java b/src/main/java/com/zteits/oa/report/web/AsraDailyController.java index 37f6581..f0d9144 100644 --- a/src/main/java/com/zteits/oa/report/web/AsraDailyController.java +++ b/src/main/java/com/zteits/oa/report/web/AsraDailyController.java @@ -7,6 +7,7 @@ import com.zteits.oa.api.base.bean.BizResult; import com.zteits.oa.api.base.bean.PageBean; import com.zteits.oa.api.base.constants.SessionEnum; import com.zteits.oa.api.dto.asradaily.AsraDailyDTO; +import com.zteits.oa.api.dto.asradaily.AsraDailyDateChangeDTO; import com.zteits.oa.api.dto.asradaily.param.AsraDailyQueryReq; import com.zteits.oa.api.dto.asraop.AsraOpDTO; import com.zteits.oa.api.dto.asraop.param.AsraOpQueryReq; @@ -16,9 +17,11 @@ import com.zteits.oa.api.service.report.query.AsraDailyQueryService; import com.zteits.oa.api.service.report.query.AsraOpQueryService; import com.zteits.oa.api.service.report.query.AsraOpRelationsQueryService; import com.zteits.oa.report.domain.AsraDaily; +import com.zteits.oa.util.pagepaper.DateForObjectUtil; import io.swagger.annotations.Api; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -39,27 +42,23 @@ public class AsraDailyController { private static final Logger logger = LoggerFactory.getLogger(AsraDailyController.class); @Autowired - private AsraOpQueryService asraOpQueryService; - - @Autowired private AsraDailyQueryService asraDailyQueryService; @RequestMapping(value="/queryAsraDailyList",method = RequestMethod.POST) public BizResult> queryAsraDailyList(@RequestBody AsraDailyQueryReq asraDailyQueryReq, HttpServletRequest request){ - logger.info("日报系统-日报管理-根据登录人分页查询员工信息入参:{}", JSONObject.toJSON(asraDailyQueryReq)); + logger.info("日报系统-日报管理-根据登录人查询日报信息入参:{}", JSONObject.toJSON(asraDailyQueryReq)); /**1.根据当前登录人查询登录人下面管理的员工-缓存中获取*/ AsraOpDTO asraOpDTO = (AsraOpDTO)request.getSession().getAttribute(SessionEnum.USER_INFO.key()); /**2.判断登录人和时间查询日报*/ - Date dailyDate = asraDailyQueryReq.getDailyDate(); - Integer week = DateUtil.weekOfYear(dailyDate);//第N周 - Integer year = DateUtil.year(dailyDate);//第N周 + Date dailyDate = DateUtil.parseDate(asraDailyQueryReq.getDailyDate()); + AsraDailyDateChangeDTO asraDailyDateChangeDTO = DateForObjectUtil.getAsraDailyDTO(dailyDate); asraDailyQueryReq.setAsarOpId(asraOpDTO.getId()); - asraDailyQueryReq.setWeeks(week); - asraDailyQueryReq.setYears(year); + BeanUtils.copyProperties(asraDailyDateChangeDTO,asraDailyQueryReq); + logger.info("日报系统-日报管理-根据登录人查询日报信息入参:{}", JSONObject.toJSON(asraDailyDateChangeDTO)); BizResult> result = asraDailyQueryService.queryAsraDailyList(asraDailyQueryReq); - logger.info("日报系统-日报管理-根据登录人分页查询员工信息结束"); + logger.info("日报系统-日报管理-根据登录人查询日报信息结束"); return result; } diff --git a/src/main/java/com/zteits/oa/report/web/AsraOpController.java b/src/main/java/com/zteits/oa/report/web/AsraOpController.java index fcadaa0..ebe5510 100644 --- a/src/main/java/com/zteits/oa/report/web/AsraOpController.java +++ b/src/main/java/com/zteits/oa/report/web/AsraOpController.java @@ -11,6 +11,7 @@ import com.zteits.oa.api.dto.asraoprelations.AsraOpRelationsDTO; import com.zteits.oa.api.dto.asraoprelations.param.AsraOpRelationsQueryReq; import com.zteits.oa.api.service.report.query.AsraOpQueryService; import com.zteits.oa.api.service.report.query.AsraOpRelationsQueryService; +import com.zteits.oa.report.web.vo.EasyUIDataGridVO; import io.swagger.annotations.Api; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,45 +30,26 @@ import java.util.List; @Api(value = "日报系统-员工管理", description = "日报系统-员工管理") @RestController @RequestMapping("/asraOp") -public class AsraOpController { +public class AsraOpController extends BizController { private static final Logger logger = LoggerFactory.getLogger(AsraOpController.class); @Autowired private AsraOpQueryService asraOpQueryService; - @Autowired - private AsraOpRelationsQueryService asraOpRelationsQueryService; - @RequestMapping(value="/queryAsraOpPage",method = RequestMethod.POST) - public BizResult> queryAsraOpPage(@RequestBody AsraOpQueryReq asraOpQueryReq, HttpServletRequest request){ + public BizResult> queryAsraOpPage(@RequestBody AsraOpQueryReq asraOpQueryReq, HttpServletRequest request) throws IllegalAccessException, InstantiationException { logger.info("日报系统-员工管理-根据登录人分页查询员工信息入参:{}", JSONObject.toJSON(asraOpQueryReq)); /**1.根据当前登录人查询登录人下面管理的员工-缓存中获取*/ AsraOpDTO asraOpDTO = (AsraOpDTO)request.getSession().getAttribute(SessionEnum.USER_INFO.key()); - -// /**2.判断登录人是领导还是员工 ,2:员工,1:领导*/ -// List opIdLists = new ArrayList<>(); -// opIdLists.add(asraOpDTO.getId()); -// if(asraOpDTO.getRoleId() == 1){ -// /**如果是领导,获取领导下面的员工信息*/ -// AsraOpRelationsQueryReq asraOpRelationsQueryReq = new AsraOpRelationsQueryReq(); -// asraOpRelationsQueryReq.setParentId(asraOpDTO.getId()); -// BizResult> listBizResult = asraOpRelationsQueryService.queryAsraOpRelations(asraOpRelationsQueryReq); -// if(listBizResult.isSuccess() && CollectionUtil.isNotEmpty(listBizResult.getData())){ -// for(AsraOpRelationsDTO asraOpRelationsDTO : listBizResult.getData()){ -// opIdLists.add(asraOpRelationsDTO.getOpId()); -// } -// } -// } -// asraOpQueryReq.setOpIdLists(opIdLists); asraOpQueryReq.setId(asraOpDTO.getId()); BizResult> result = asraOpQueryService.queryAsraOpForPage(asraOpQueryReq); logger.info("日报系统-员工管理-根据登录人分页查询员工信息结果:{}", JSONObject.toJSON(result)); - return result; + return returnJqGridData(result, AsraOpDTO.class); } } diff --git a/src/main/java/com/zteits/oa/report/web/BizController.java b/src/main/java/com/zteits/oa/report/web/BizController.java new file mode 100644 index 0000000..15d1945 --- /dev/null +++ b/src/main/java/com/zteits/oa/report/web/BizController.java @@ -0,0 +1,321 @@ +package com.zteits.oa.report.web; + +import com.alibaba.fastjson.JSONObject; +import com.zteits.oa.api.base.bean.BizResult; +import com.zteits.oa.api.base.bean.PageBean; +import com.zteits.oa.api.base.constants.ErrorType; +import com.zteits.oa.api.base.exception.BizException; +import com.zteits.oa.report.web.vo.EasyUIDataGridVO; +import org.springframework.beans.BeanUtils; +import org.springframework.util.CollectionUtils; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @描述: + * Copyright: Copyright (c) 2017 Alibb + * + * @ClassName: BizController.java + * @Description: 所有基于Spring MVC的Web控制器类(Action)的统一父类,提供一些便利的请求处理方法,如返回Json、文本数据等 + * @version: v1.0.0 + * @author: wangbiao + * @date: 2017年2月23日 下午1:26:50 + * + * Modification History: + * Date Author Version Description + *---------------------------------------------------------* + * 2017年2月23日 wangbiao v1.0.0 创建 + */ +public class BizController { + private static final String MIME_JSON = "application/json;charset=UTF-8"; + + + /** + * 返回jqgrid格式数据 + * @param bizResult + * @param voClass + * @return + * @throws InstantiationException + * @throws IllegalAccessException + * 2017年5月12日 zhaowg + */ + protected BizResult> returnJqGridData(BizResult> bizResult, Class voClass) throws InstantiationException, IllegalAccessException { + PageBean pageBean = getBizResultData(bizResult); + //将DTO转换为VO + List vos = new ArrayList<>(); + if(!CollectionUtils.isEmpty(pageBean.getDataList())){ + for (DTO dto : pageBean.getDataList()) { + VO vo = voClass.newInstance(); + BeanUtils.copyProperties(dto, vo); + vos.add(vo); + } + } + //返回jqGrid数据 + EasyUIDataGridVO jqGridDatas = new EasyUIDataGridVO<>(); + jqGridDatas.setTotal(pageBean.getPageTotals()==null?0:pageBean.getPageTotals()); + jqGridDatas.setRows(vos); + + BizResult> bizResultVO = new BizResult<>(); + bizResultVO.setCode(bizResult.getCode()); + bizResultVO.setErrMsg(bizResult.getErrMsg()); + bizResultVO.setData(jqGridDatas); + + return bizResultVO; + } + + /** + * 返回jqgrid格式数据 + * @param bizResult + * @return + * 2017年5月12日 zhaowg + */ + protected BizResult> returnJqGridData(BizResult> bizResult) { + PageBean pageBean = getBizResultData(bizResult); + //返回jqGrid数据 + EasyUIDataGridVO jqGridDatas = new EasyUIDataGridVO<>(); + jqGridDatas.setTotal(pageBean.getPageTotals()==null?0:pageBean.getPageTotals()); + jqGridDatas.setRows(pageBean.getDataList()); + + BizResult> bizResultVO = new BizResult<>(); + bizResultVO.setCode(bizResult.getCode()); + bizResultVO.setErrMsg(bizResult.getErrMsg()); + bizResultVO.setData(jqGridDatas); + + return bizResultVO; + } + /** + * 分页结果封装后返回标准格式JSON串.
+ * @param response + * @param result + */ + @SuppressWarnings("unused") + public void returnJsonDataGrid(HttpServletResponse response,BizResult result){ + Map resultMap = new HashMap(); + + if(result == null){ + throw new NullPointerException("result 为空,不能进行封装!"); + }else if(result.getData() == null){ + throw new NullPointerException("pageBean 为空,不能进行封装!"); + }else{ + if(result.getData() instanceof PageBean) { + PageBean pageBean = (PageBean)result.getData(); + Map map = new HashMap(); + map.put("total", (null ==pageBean.getPageTotals()? 0 :pageBean.getPageTotals())); + map.put("rows", pageBean.getDataList() != null ? pageBean.getDataList() :new ArrayList() ); + resultMap.put("code", result.getCode()); + resultMap.put("msg", result.getErrMsg()); + resultMap.put("data", map); + + }else{ + throw new ClassCastException("result.getData() 类型转换异常"); + } + + } + this.returnJson(response, resultMap); + } + + /** + * + * @param data + * @param totalCount + * @return + * 2017年5月12日 zhaowg + */ + public BizResult> returnGridData4JqGrid(List data,Integer totalCount) { + //返回jqGrid数据 + EasyUIDataGridVO jqGridDatas = new EasyUIDataGridVO<>(); + jqGridDatas.setTotal(totalCount==null?0:totalCount); + jqGridDatas.setRows(data); + + BizResult> bizResultVO = new BizResult<>(); + bizResultVO.setCode(ErrorType.BIZ_SUCCESS.getCode()); + bizResultVO.setErrMsg(ErrorType.BIZ_SUCCESS.getMsg()); + bizResultVO.setData(jqGridDatas); + return bizResultVO; + } + /** + * 获取返回的数据 + * @param bizResult + * @return + * 2017年5月16日 zhaowg + */ + public T getBizResultData(BizResult bizResult){ + //有异常,抛出 + if(!bizResult.isSuccess() || !bizResult.getCode().equals(ErrorType.BIZ_SUCCESS.getCode())){ + + throw new BizException(ErrorType.BIZ_ERROR,bizResult.getErrMsg()); + } + return bizResult.getData(); + } + /** + * 返回JSon格式的数据 + * + * @param response + * @param data + * @throws Exception + */ + public String returnJson(HttpServletResponse response, Object data) { + + return returnText(response, JSONObject.toJSONString(data), MIME_JSON); + } + + /** + * 返回xml格式的数据 + * + * @param response + * @param text + * @throws Exception + */ + public String returnXml(HttpServletResponse response, CharSequence text) { + return returnText(response, text, "text/xml;charset=UTF-8"); + } + + /** + * 返回文本数据 + * @param response + * @param text + * @param contenttype 内容类型,如:text/plain、text/xml、application/json、text/json、text/javascript、application/javascript(不支持旧浏览器) + * @param encoding 字符集编码,如:GB18030、UTF-8,不建议使用GB2312和GBK + * @throws Exception + */ + public String returnText(HttpServletResponse response, CharSequence text,final String contenttype,final String encoding) { + return returnText(response, text, contenttype+";charset="+encoding); + } + + /** + * 返回文本数据 + * + * @param response + * @param text + * @param contenttype + * @throws IOException + * @author lihl2 2011-3-25 + */ + public String returnText(HttpServletResponse response, CharSequence text,final String contenttype) { + response.setContentType(contenttype); + if (text != null) { + try { + response.getWriter().write(text.toString()); + } catch (IOException e) { + throw new BizException(ErrorType.BIZ_ERROR,e); + } + } + return null; + } + + /** + * 设置文件头格式 + * @param response + * @param mimeType + * @param fileName + * @param size + */ + public void setFileHeader(HttpServletResponse response, CharSequence mimeType, + final CharSequence fileName, int size) { + response.reset(); + // 设置response的Header + if(mimeType != null){ + response.setContentType(mimeType.toString()) ; + } + try { + response.addHeader("Content-Disposition","attachment;filename=" + new String(fileName.toString().getBytes("GB18030"),"ISO-8859-1")) ; + } catch (UnsupportedEncodingException e) { + throw new BizException(ErrorType.BIZ_ERROR,"文件名编码转换失败") ; + } + if(size > 0){ + response.addIntHeader("Content-Length", size) ; + } + } + + /** + * 设置浏览器返回类型为Excel文件 + * @param response + * @param mimeType + * @param fileName + * @param size + */ + public void setExcelFileHeader(HttpServletResponse response, CharSequence mimeType, + final CharSequence fileName, int size) { + setFileHeader(response, "application/vnd.ms-excel", fileName, size); + } + /** + * 文件下载 + * @param response + * @param mimeType + * @param fileName + * @param file + * @param size + */ + public void downloadFile(HttpServletResponse response, CharSequence mimeType, + final CharSequence fileName, InputStream file, int size) { + setFileHeader(response, mimeType, fileName, size) ; + try { + OutputStream out = response.getOutputStream() ; + int l ; + while((l=file.read()) >= 0){ + out.write(l) ; + } + out.flush() ; + } catch (IOException e) { + throw new BizException(ErrorType.BIZ_ERROR,"下载文件失败") ; + }finally { + if (null != file) { + try { + file.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + } + } + + + + + + /** + * 返回jqgrid格式数据 + * @param bizResult + * @param voClass + * @return + * @throws InstantiationException + * @throws IllegalAccessException + * 2017年5月12日 zhaowg + */ + protected BizResult> returnJqGridDataByList(BizResult> bizResult,int total,Class voClass) throws InstantiationException, IllegalAccessException { + //List pageBean = getBizResultData(bizResult); + //将DTO转换为VO + List vos = new ArrayList<>(); + if(!CollectionUtils.isEmpty(bizResult.getData())){ + for (DTO dto : bizResult.getData()) { + VO vo = voClass.newInstance(); + BeanUtils.copyProperties(dto, vo); + vos.add(vo); + } + } + //返回jqGrid数据 + EasyUIDataGridVO jqGridDatas = new EasyUIDataGridVO<>(); + + jqGridDatas.setTotal(total); + jqGridDatas.setRows(vos); + + BizResult> bizResultVO = new BizResult<>(); + bizResultVO.setCode(bizResult.getCode()); + bizResultVO.setErrMsg(bizResult.getErrMsg()); + bizResultVO.setData(jqGridDatas); + + return bizResultVO; + } + + + +} diff --git a/src/main/java/com/zteits/oa/util/pagepaper/DateForObjectUtil.java b/src/main/java/com/zteits/oa/util/pagepaper/DateForObjectUtil.java new file mode 100644 index 0000000..808b020 --- /dev/null +++ b/src/main/java/com/zteits/oa/util/pagepaper/DateForObjectUtil.java @@ -0,0 +1,35 @@ +package com.zteits.oa.util.pagepaper; + +import com.xiaoleilu.hutool.date.DateUtil; +import com.zteits.oa.api.dto.asradaily.AsraDailyDTO; +import com.zteits.oa.api.dto.asradaily.AsraDailyDateChangeDTO; + +import java.util.Date; + +/** + * Copyright: Copyright (c) 2018 zteits + * + * @Description: + * @version: v1.0.0 + * @author: xiejianpeng + * @date: 2018/8/1 10 + * Modification History: + * Date Author Version Description + * ---------------------------------------------------------* + * 2018/8/1 xiejianpeng v1.0.0 创建 + */ +public class DateForObjectUtil { + + public static AsraDailyDateChangeDTO getAsraDailyDTO(Date dailyDate){ + AsraDailyDateChangeDTO asraDailyDTO = new AsraDailyDateChangeDTO(); + Integer week = DateUtil.weekOfYear(dailyDate);//第N周 + Integer year = DateUtil.year(dailyDate);//年 + Integer weekNum = DateUtil.dayOfWeek(dailyDate);//星期 + + asraDailyDTO.setYears(year); + asraDailyDTO.setWeeks(week); + asraDailyDTO.setWeeksNum(weekNum); + + return asraDailyDTO; + } +} diff --git a/src/main/resources/mybatis/smapper/AsraOpSmapper.xml b/src/main/resources/mybatis/smapper/AsraOpSmapper.xml index 41b5eb4..ed6b5c3 100644 --- a/src/main/resources/mybatis/smapper/AsraOpSmapper.xml +++ b/src/main/resources/mybatis/smapper/AsraOpSmapper.xml @@ -26,7 +26,7 @@ modfiy_emp_name, modfiy_date, remark - select ap.id id, ap.login_code loginCode,