EmployeeInfoController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. package com.jpsoft.smart.modules.base.controller;
  2. import com.github.pagehelper.Page;
  3. import com.jpsoft.smart.config.OSSConfig;
  4. import com.jpsoft.smart.modules.base.dto.EmployeeInfoDTO;
  5. import com.jpsoft.smart.modules.common.utils.OSSUtil;
  6. import com.jpsoft.smart.modules.common.utils.PojoUtils;
  7. import com.jpsoft.smart.modules.common.dto.Sort;
  8. import com.jpsoft.smart.modules.common.dto.MessageResult;
  9. import com.jpsoft.smart.modules.base.entity.EmployeeInfo;
  10. import com.jpsoft.smart.modules.base.service.EmployeeInfoService;
  11. import io.swagger.annotations.Api;
  12. import io.swagger.annotations.ApiImplicitParam;
  13. import io.swagger.annotations.ApiImplicitParams;
  14. import io.swagger.annotations.ApiOperation;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.http.MediaType;
  20. import org.springframework.stereotype.Controller;
  21. import org.springframework.web.bind.annotation.*;
  22. import org.springframework.web.multipart.MultipartFile;
  23. import sun.misc.BASE64Decoder;
  24. import javax.servlet.http.HttpServletRequest;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.io.*;
  27. import java.text.SimpleDateFormat;
  28. import java.util.*;
  29. @Controller
  30. @RequestMapping("/base/employeeInfo")
  31. @Api(description = "employeeInfo")
  32. public class EmployeeInfoController {
  33. private Logger logger = LoggerFactory.getLogger(getClass());
  34. @Autowired
  35. private OSSConfig ossConfig;
  36. @Autowired
  37. private EmployeeInfoService employeeInfoService;
  38. @ApiOperation(value="创建空记录")
  39. @GetMapping("create")
  40. @ResponseBody
  41. public MessageResult<EmployeeInfo> create(){
  42. MessageResult<EmployeeInfo> msgResult = new MessageResult<>();
  43. EmployeeInfo employeeInfo = new EmployeeInfo();
  44. msgResult.setData(employeeInfo);
  45. msgResult.setResult(true);
  46. return msgResult;
  47. }
  48. @ApiOperation(value="编辑信息")
  49. @GetMapping("edit/{id}")
  50. @ResponseBody
  51. public MessageResult<EmployeeInfo> edit(@PathVariable("id") Long id){
  52. MessageResult<EmployeeInfo> msgResult = new MessageResult<>();
  53. try {
  54. EmployeeInfo employeeInfo = employeeInfoService.get(id);
  55. if (employeeInfo != null) {
  56. msgResult.setResult(true);
  57. msgResult.setData(employeeInfo);
  58. } else {
  59. msgResult.setResult(false);
  60. msgResult.setMessage("数据库不存在该记录!");
  61. }
  62. }
  63. catch(Exception ex){
  64. logger.error(ex.getMessage(),ex);
  65. msgResult.setResult(false);
  66. msgResult.setMessage(ex.getMessage());
  67. }
  68. return msgResult;
  69. }
  70. @ApiOperation(value="更新用户")
  71. @PostMapping("update")
  72. @ResponseBody
  73. public MessageResult<EmployeeInfo> update(@RequestBody EmployeeInfo employeeInfo,@RequestAttribute String subject){
  74. MessageResult<EmployeeInfo> msgResult = new MessageResult<>();
  75. try {
  76. employeeInfo.setUpdateBy(subject);
  77. employeeInfo.setUpdateTime(new Date());
  78. int affectCount = employeeInfoService.update(employeeInfo);
  79. if (affectCount > 0) {
  80. msgResult.setResult(true);
  81. msgResult.setData(employeeInfo);
  82. } else {
  83. msgResult.setResult(false);
  84. msgResult.setMessage("数据库更新失败");
  85. }
  86. }
  87. catch(Exception ex){
  88. logger.error(ex.getMessage(),ex);
  89. msgResult.setResult(false);
  90. msgResult.setMessage(ex.getMessage());
  91. }
  92. return msgResult;
  93. }
  94. @ApiOperation(value="删除")
  95. @PostMapping("delete/{id}")
  96. @ResponseBody
  97. public MessageResult<Integer> delete(@PathVariable("id") Long id,@RequestAttribute String subject){
  98. MessageResult<Integer> msgResult = new MessageResult<>();
  99. try {
  100. EmployeeInfo employeeInfo = employeeInfoService.get(id);
  101. employeeInfo.setDelFlag(true);
  102. employeeInfo.setUpdateBy(subject);
  103. employeeInfo.setUpdateTime(new Date());
  104. int affectCount = employeeInfoService.update(employeeInfo);
  105. if (affectCount > 0) {
  106. msgResult.setResult(true);
  107. msgResult.setData(affectCount);
  108. } else {
  109. msgResult.setResult(false);
  110. msgResult.setMessage("删除失败");
  111. }
  112. }
  113. catch(Exception ex){
  114. logger.error(ex.getMessage(),ex);
  115. msgResult.setResult(false);
  116. msgResult.setMessage(ex.getMessage());
  117. }
  118. return msgResult;
  119. }
  120. @ApiOperation(value="分页列表")
  121. @RequestMapping(value = "pageList",method = RequestMethod.POST)
  122. @ResponseBody
  123. public MessageResult<Map> pageList(
  124. String employeeName,
  125. String companyId,
  126. @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
  127. @RequestParam(value="pageSize",defaultValue="20") int pageSize,
  128. @RequestAttribute String subject){
  129. //当前用户ID
  130. System.out.println(subject);
  131. MessageResult<Map> msgResult = new MessageResult<>();
  132. Map<String,Object> searchParams = new HashMap<>();
  133. List<Sort> sortList = new ArrayList<>();
  134. sortList.add(new Sort("c.sort_no","asc"));
  135. sortList.add(new Sort("e.id_","asc"));
  136. if (StringUtils.isNotEmpty(employeeName)) {
  137. searchParams.put("employeeName","%" + employeeName + "%");
  138. }
  139. if (StringUtils.isNotEmpty(companyId)) {
  140. searchParams.put("companyId",companyId);
  141. }
  142. Page<EmployeeInfo> page = employeeInfoService.pageSearch(searchParams,pageIndex,pageSize,sortList);
  143. msgResult.setResult(true);
  144. msgResult.setData(PojoUtils.pageWrapper(page));
  145. return msgResult;
  146. }
  147. @ApiOperation(value="根据openId获取员工信息")
  148. @GetMapping("mobile/findByOpenId")
  149. @ResponseBody
  150. public MessageResult<EmployeeInfoDTO> findByOpenId(String openId){
  151. MessageResult<EmployeeInfoDTO> msgResult = new MessageResult<>();
  152. try {
  153. EmployeeInfo employeeInfo = employeeInfoService.findByOpenId(openId);
  154. if (employeeInfo != null) {
  155. msgResult.setResult(true);
  156. EmployeeInfoDTO dto = new EmployeeInfoDTO();
  157. PojoUtils.map(employeeInfo,dto);
  158. msgResult.setData(dto);
  159. } else {
  160. msgResult.setResult(false);
  161. msgResult.setMessage("数据库不存在该记录!");
  162. }
  163. }
  164. catch(Exception ex){
  165. logger.error(ex.getMessage(),ex);
  166. msgResult.setResult(false);
  167. msgResult.setMessage(ex.getMessage());
  168. }
  169. return msgResult;
  170. }
  171. @ApiOperation(value="保存信息")
  172. @PostMapping("mobile/save")
  173. @ResponseBody
  174. public MessageResult<String> save(EmployeeInfoDTO employeeInfoDTO){
  175. MessageResult<String> msgResult = new MessageResult<>();
  176. try {
  177. int affectCount = 0;
  178. EmployeeInfo employeeInfo = employeeInfoService.findByOpenId(employeeInfoDTO.getOpenId());
  179. if(employeeInfo==null) {
  180. employeeInfo = new EmployeeInfo();
  181. PojoUtils.map(employeeInfoDTO,employeeInfo);
  182. employeeInfo.setCreateTime(new Date());
  183. affectCount = employeeInfoService.insert(employeeInfo);
  184. }
  185. else{
  186. PojoUtils.map(employeeInfoDTO,employeeInfo);
  187. employeeInfo.setUpdateTime(new Date());
  188. affectCount = employeeInfoService.update(employeeInfo);
  189. }
  190. if (affectCount > 0) {
  191. msgResult.setResult(true);
  192. } else {
  193. msgResult.setResult(false);
  194. msgResult.setMessage("保存失败");
  195. }
  196. }
  197. catch(Exception ex){
  198. logger.error(ex.getMessage(),ex);
  199. msgResult.setResult(false);
  200. msgResult.setMessage(ex.getMessage());
  201. }
  202. return msgResult;
  203. }
  204. @PostMapping("mobile/upload")
  205. @ResponseBody
  206. @ApiOperation(value="员工照片上传")
  207. @ApiImplicitParams({
  208. @ApiImplicitParam(name="photoName",value = "照片名称",required = true,paramType = "form"),
  209. @ApiImplicitParam(name = "photoFile",value = "员工照片", required = true,paramType="form", dataType = "__file")
  210. })
  211. public MessageResult<String> upload(String photoName,MultipartFile photoFile){
  212. MessageResult<String> messageResult = new MessageResult<>();
  213. try {
  214. String retFileUrl = OSSUtil.upload(ossConfig,"/employee",photoName,photoFile.getInputStream());
  215. messageResult.setResult(true);
  216. messageResult.setData(retFileUrl);
  217. messageResult.setCode(200);
  218. } catch (Exception e) {
  219. logger.error(e.getMessage(),e);
  220. messageResult.setResult(false);
  221. messageResult.setMessage(e.getMessage());
  222. }
  223. return messageResult;
  224. }
  225. @PostMapping("mobile/uploadBase64")
  226. @ResponseBody
  227. @ApiOperation(value="员工照片上传")
  228. @ApiImplicitParams({
  229. @ApiImplicitParam(name="photoName",value = "照片名称",required = true,paramType = "form"),
  230. @ApiImplicitParam(name = "photoBase64Data",value = "员工照片base64编码", required = true,paramType="form")
  231. })
  232. public MessageResult<String> uploadBase64(String photoName,String photoBase64Data){
  233. MessageResult<String> messageResult = new MessageResult<>();
  234. try {
  235. BASE64Decoder decoder = new BASE64Decoder();
  236. byte[] imgData = decoder.decodeBuffer(photoBase64Data);
  237. for (int i = 0; i < imgData.length; ++i) {
  238. if (imgData[i] < 0) {// 调整异常数据
  239. imgData[i] += 256;
  240. }
  241. }
  242. ByteArrayInputStream inputStream = new ByteArrayInputStream(imgData);
  243. String retFileUrl = OSSUtil.upload(ossConfig,"/employee",photoName,inputStream);
  244. messageResult.setResult(true);
  245. messageResult.setData(retFileUrl);
  246. messageResult.setCode(200);
  247. } catch (Exception e) {
  248. logger.error(e.getMessage(),e);
  249. messageResult.setResult(false);
  250. messageResult.setMessage(e.getMessage());
  251. }
  252. return messageResult;
  253. }
  254. @ApiOperation(value="打包下载员工资料")
  255. @RequestMapping(value = "downloadZip",method = RequestMethod.GET)
  256. @ApiImplicitParams({
  257. @ApiImplicitParam(name="ids",value = "选中用户编号",required = true,paramType = "query"),
  258. @ApiImplicitParam(name="localPath",value = "压缩包解压后文件夹所在路径",required = true,paramType = "query"),
  259. })
  260. public void downloadZip(String ids,String localPath, HttpServletRequest request, HttpServletResponse response){
  261. try {
  262. String path = request.getContextPath();
  263. String basePath = request.getScheme() + "://" + request.getServerName()+":"+request.getServerPort()+path+"/";
  264. response.setCharacterEncoding("utf-8");
  265. response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
  266. //设置编码 为了解决中文名称乱码问题
  267. String fileName = "员工资料";
  268. String zipFileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
  269. response.setHeader("Content-Disposition", "attachment;fileName=" + zipFileName + ".zip");
  270. //打包文件
  271. List<Map<String,Object>> fileList = new ArrayList<>();
  272. //读取模板
  273. InputStream inputStream = this.getClass().getResourceAsStream("/static/模板.csv");
  274. byte[] bytes = new byte[inputStream.available()];
  275. inputStream.read(bytes);
  276. StringBuilder csvBuilder = new StringBuilder();
  277. csvBuilder.append(new String(bytes,"UTF-8"));
  278. List<EmployeeInfo> employeeInfos = employeeInfoService.findByArray(ids.split(","));
  279. if(employeeInfos.size()>0) {
  280. for (EmployeeInfo employeeInfo : employeeInfos) {
  281. csvBuilder.append(employeeInfo.getId() + ",");
  282. csvBuilder.append(employeeInfo.getName() + ",");
  283. String photoExt = employeeInfo.getPhoto().substring(employeeInfo.getPhoto().lastIndexOf("."));
  284. csvBuilder.append(localPath + "\\照片\\" + employeeInfo.getId() + photoExt + "\r\n");
  285. }
  286. Map<String, Object> fileMap = new HashMap<>();
  287. fileMap.put("fileData", csvBuilder.toString().getBytes("UTF-8"));
  288. fileMap.put("fileName", "人员名单.csv");
  289. // fileList.add(fileMap);
  290. }
  291. //身份证
  292. for (EmployeeInfo employeeInfo : employeeInfos) {
  293. if (StringUtils.isNotEmpty(employeeInfo.getPhoto())){
  294. String url = employeeInfo.getPhoto();
  295. String ext = url.substring(url.lastIndexOf("."));
  296. Map<String,Object> fileMap = new HashMap<>();
  297. fileMap.put("fileUrl",url + "?x-oss-process=image/resize,l_800,limit_1");
  298. fileMap.put("filePath", "照片/");
  299. fileMap.put("fileName", employeeInfo.getId() + ext);
  300. fileList.add(fileMap);
  301. }
  302. }
  303. OutputStream output = response.getOutputStream();
  304. OSSUtil.batchDownload(fileList,output);
  305. output.flush();
  306. output.close();
  307. }
  308. catch (Exception ex){
  309. logger.error(ex.getMessage(),ex);
  310. }
  311. }
  312. }