package com.zbooksoft.gdmis.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruili.wcp.common.CustomConfigUtil; import com.ruili.wcp.common.LogUtils; import com.ruili.wcp.common.StringUtil; import com.ruili.wcp.common.excel.PoiUtil; import com.ruili.wcp.configsettting.SystemConfig; import com.ruili.wcp.data.entity.config.Module; import com.ruili.wcp.data.entity.management.User; import com.ruili.wcp.engine.form.IFormData; import com.ruili.wcp.service.config.ModuleService; import com.ruili.wcp.service.config.ViewService; import com.ruili.wcp.web.model.AjaxResponse; import com.ruili.wcp.web.model.ErrorInfo; import com.zbooksoft.gdmis.common.PdfUtil; import com.zbooksoft.gdmis.common.UsbSyncExampleWindows; import com.zbooksoft.gdmis.common.UsbSyncExampleWindowsItem; import com.zbooksoft.gdmis.common.UsbSyncExampleWindowsItemCg; import com.zbooksoft.gdmis.data.entity.CatYswjxx; import com.zbooksoft.gdmis.data.entity.PackingManage; import com.zbooksoft.gdmis.service.CatCheckService; import com.zbooksoft.gdmis.service.CatYswjxxService; import com.zbooksoft.gdmis.service.PackingManageService; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.RequiresUser; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.text.DecimalFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; import static com.zbooksoft.gdmis.common.ZipUtil.copyFile; import static com.zbooksoft.gdmis.common.ZipUtil.zipFile; /** * @author 15280 */ @Controller @RequestMapping("/catYswjxx") public class CatYswjxxController { @Autowired ViewService viewService; @Autowired PackingManageService packingManageService; @Autowired JdbcTemplate jdbcTemplate; @Autowired CatYswjxxService catYswjxxService; @Autowired CustomConfigUtil customConfigUtil; @Autowired ModuleService moduleService; @Autowired IFormData iform; @Autowired CatCheckService catCheckService; private static final Logger logger = LoggerFactory.getLogger(CatYswjxxController.class); /** * 文件拆分 * * @return */ @RequestMapping({"/split"}) @ResponseBody @RequiresUser public Object split(Long moduleId, Long viewId, Long id, @RequestBody JSONObject jsonData) { try { //获取拆几份 String count = StringUtil.nullToEmpty(jsonData.getString("returnOpinion")).trim(); if (jsonData.containsKey("ids")) { ArrayList ids = (ArrayList) jsonData.get("ids"); for (String longId : ids) { Module module = moduleService.getByIdModule(moduleId); String mainTableName = module.getMainTableName(); String selectSql = "select * from " + mainTableName + " where ID = " + longId; Map map = jdbcTemplate.queryForMap(selectSql); addPacking(map, count); } } return new AjaxResponse(true); } catch (Exception e) { logger.error(e.getMessage(), e); return new AjaxResponse(new ErrorInfo(e.getMessage()), false); } } /** * 文件拆分 * * @return */ @RequestMapping({"/addCg"}) @ResponseBody @RequiresUser public Object addCg(Long moduleId, Long viewId, Long id, @RequestBody JSONObject jsonData) { try { //获取拆几份 String count = StringUtil.nullToEmpty(jsonData.getString("returnOpinion")).trim(); if (jsonData.containsKey("ids")) { ArrayList ids = (ArrayList) jsonData.get("ids"); String cgSql = "select NVL(max(BGBH), 0) BGBH FROM CAT_ITEM_CGWJXX"; Map stringMap = jdbcTemplate.queryForMap(cgSql); int maxDH = Integer.parseInt(stringMap.get("BGBH").toString()); int newDH = maxDH + 1; for (int i = 0; i < ids.size(); i++) { String newDhString = String.format("%04d", newDH); String sql = "select * from CAT_ITEM_YSWJXX where id = " + ids.get(i); Map stringObjectMap = jdbcTemplate.queryForMap(sql); String sl = stringObjectMap.get("SL") == null ? "0" : stringObjectMap.get("SL").toString(); Integer slInt = Integer.parseInt(sl) - Integer.parseInt(count); if (slInt < 0) { slInt = 0; } stringObjectMap.put("BGBH", newDhString); LocalDateTime currentDate = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDate = currentDate.format(formatter); stringObjectMap.put("CREATE_TIME", formattedDate); stringObjectMap.put("MODIFY_TIME", formattedDate); stringObjectMap.put("CDDZWJLJ", stringObjectMap.get("WJLJ")); stringObjectMap.put("SL", count); String jnxh = stringObjectMap.get("JNXH") == null ? "" : stringObjectMap.get("JNXH").toString(); String newDh = newDhString + "-" + jnxh; stringObjectMap.put("DH", newDh); stringObjectMap.put("WJLX", jsonData.get("wjlx")); iform.insert(1823017354756390913L, stringObjectMap); String updateSql = "update CAT_ITEM_YSWJXX set SL = '" + slInt + "' where ID = " + ids.get(i); jdbcTemplate.update(updateSql); } } return new AjaxResponse(true); } catch (Exception e) { logger.error(e.getMessage(), e); return new AjaxResponse(new ErrorInfo(e.getMessage()), false); } } /** * 添加临时位置 * * @return */ @RequestMapping({"/addTemp"}) @ResponseBody @RequiresUser public Object addTemp(Long moduleId, Long viewId, Long id, @RequestBody JSONObject jsonData) { try { //获取拆几份 String count = StringUtil.nullToEmpty(jsonData.getString("returnOpinion")).trim(); if (jsonData.containsKey("ids")) { ArrayList ids = (ArrayList) jsonData.get("ids"); for (String longId : ids) { Module module = moduleService.getByIdModule(moduleId); String mainTableName = module.getMainTableName(); String updateSql = "update " + mainTableName + " set HH = '" + count + "' where ID = " + longId; int update = jdbcTemplate.update(updateSql); } } return new AjaxResponse(true); } catch (Exception e) { logger.error(e.getMessage(), e); return new AjaxResponse(new ErrorInfo(e.getMessage()), false); } } /** * 文件装盒 * * @return */ @RequestMapping({"/packagingBox"}) @ResponseBody @RequiresUser public Object packagingBox(Long moduleId, Long viewId, Long id, @RequestBody JSONObject jsonData) { try { //获取拆几份 String count = StringUtil.nullToEmpty(jsonData.getString("returnOpinion")).trim(); if (jsonData.containsKey("ids")) { ArrayList ids = (ArrayList) jsonData.get("ids"); for (String longId : ids) { Module module = moduleService.getByIdModule(moduleId); String mainTableName = module.getMainTableName(); String selectSql = "select * from " + mainTableName + " where ID = " + longId; Map map = jdbcTemplate.queryForMap(selectSql); addPacking(map, count); } } return new AjaxResponse(true); } catch (Exception e) { logger.error(e.getMessage(), e); return new AjaxResponse(new ErrorInfo(e.getMessage()), false); } } private void addPacking(Map map, String count) { String num = ""; int i = Integer.parseInt(count); String id = StringUtil.nullToEmpty(map.get("ID")).trim(); String dh = StringUtil.nullToEmpty(map.get("DH")).trim(); packingManageService.removeByItemId(Long.parseLong(id)); if (dh != null && !dh.equals("")) { num = dh; } String ajId = StringUtil.nullToEmpty(map.get("AJ_ID")).trim(); for (int j = 0; j <= i; j++) { PackingManage packingManage = new PackingManage(); if (j == 0) { packingManage.setItemNum(num); } else { packingManage.setItemNum(num + "-" + j); } packingManage.setItemId(id); packingManage.setAjId(ajId); packingManage.setType(0); packingManage.setCreateTime(new java.util.Date()); packingManageService.saveOrUpdate(packingManage); } } /** * 全部打包 * * @return */ @RequestMapping("/extractFile") @RequiresUser public void extractFile(HttpServletRequest request, HttpServletResponse response, String ids) { try { String filePath = ""; String generatePath = ""; Subject currentUser = SecurityUtils.getSubject(); Session session = currentUser.getSession(); User user = (User) session.getAttribute("user"); String userName = user.getUserName(); String timestamp = Long.toString(System.currentTimeMillis()); try { //1193266555786362880,1193266555916386304,1193266556004466688,1193266556105129984,1193266556193210368,1193266556277096448,1193266556377759744,1193266556474228736,1193266556545531904 变成list String[] idList = ids.split(","); // 读取文件存放路径 SystemConfig config = SystemConfig.getInstance(); filePath = config.getAttachUploadPath() + "dataPack" + File.separator + userName + "_" + timestamp + File.separator; // for (int i = 0; i < idList.length; i++) { for (int i = 0; i < idList.length; i++) { String wjljSql = "SELECT WJLJ,WJTM FROM CAT_ITEM_YSWJXX WHERE ID = " + idList[i]; List> wjljList = jdbcTemplate.queryForList(wjljSql); if (wjljList.size() > 0) { String newSavePath = filePath; if (wjljList.get(0).get("WJLJ") != null) { String cddzwjlj = wjljList.get(0).get("WJLJ").toString(); String wjm = wjljList.get(0).get("WJTM").toString(); File file = new File(cddzwjlj); String name = file.getName(); if (name.contains(".pdf") || name.contains(".PDF")) { String parent = file.getParent(); String newName = "tmp_" + name; String newCddzwjlj = parent + File.separator + newName; PdfUtil.addBlankPageAtBeginning(cddzwjlj, newCddzwjlj, wjm); cddzwjlj = newCddzwjlj; } copyFile(cddzwjlj, newSavePath + File.separator + name); //添加导出日志 LogUtils.insertLog("合格资料", "导出", "导出合格资料", "导出资料名称:" + wjm, "", request); } } } // 压缩文件 generatePath = zipFile(new File(filePath), "rar"); } catch (Exception ex) { logger.error(ex.getMessage(), ex); } File file = new File(generatePath); InputStream inStream; try { inStream = new FileInputStream(generatePath);// 文件的存放路径 response.reset(); // 设置输出的格式 String userAgent = request.getHeader("User-Agent"); // 根据获取的浏览器进行编码 String encodeFilename = PoiUtil.encodeDownloadFilename(file.getName(), userAgent); response.setHeader("content-disposition", "filename=" + encodeFilename); // 文件后缀 response.setContentType("application/vnd.ms-excel;charset=UTF-8"); // 循环取出流中的数据 byte[] b = new byte[100]; int len; while ((len = inStream.read(b)) > 0) response.getOutputStream().write(b, 0, len); inStream.close(); } catch (Exception e) { e.printStackTrace(); } finally { file.delete(); } } catch (Exception e) { logger.error(e.getMessage(), e); } } // /** // * 添加到成果资料 // * // * @return // */ // @RequestMapping({"/addCg"}) // @ResponseBody // @RequiresUser // public Object addCg(Long moduleId, Long viewId, Long id, @RequestBody JSONObject jsonData) { // try { // //获取拆几份 // String count = StringUtil.nullToEmpty(jsonData.getString("returnOpinion")).trim(); // if (jsonData.containsKey("ids")) { // ArrayList ids = (ArrayList) jsonData.get("ids"); // for (String longId : ids) { // Module module = moduleService.getByIdModule(moduleId); // String mainTableName = module.getMainTableName(); // String selectSql = "select * from " + mainTableName + " where ID = " + longId; // Map map = jdbcTemplate.queryForMap(selectSql); // addPacking(map, count); // } // } // return new AjaxResponse(true); // } catch (Exception e) { // logger.error(e.getMessage(), e); // return new AjaxResponse(new ErrorInfo(e.getMessage()), false); // } // } /** * 导入页面 * * @param type 0:从转孔基本信息进入 1:从钻孔图幅进入 */ @RequestMapping({"/updateFileTypeIndex"}) @RequiresUser public ModelAndView importIndex(Integer type, String moduleId) { ModelAndView mv = new ModelAndView("gh/catAjjxx/updateFileTypeIndex"); mv.addObject("type", type); mv.addObject("moduleId", moduleId); return mv; } /** * 装盒管理 * * @param type 0:从转孔基本信息进入 1:从钻孔图幅进入 */ @RequestMapping({"/boxIndex"}) @RequiresUser public ModelAndView boxIndex() { String box = "0001"; String maxBoxSql = "select max(box_number) from BUS_PACKING_MANAGE WHERE TYPE = 1"; String boxNum = jdbcTemplate.queryForObject(maxBoxSql, String.class); if (boxNum != null || "".equals(boxNum)) { int num = Integer.parseInt(boxNum); num += 1; DecimalFormat df = new DecimalFormat("0000"); box = df.format(num); } ModelAndView mv = new ModelAndView("gh/catAjjxx/boxIndex"); mv.addObject("boxNum", box); return mv; } /** * 获取盒内文件数量 * * @return */ @RequestMapping(value = "/getBoxPageNum") @ResponseBody @RequiresUser public Object getBoxPageNum(String boxNum) { try { String pageNum = "0"; String selectSql = "select max(PAGE_NMU) as nmu from BUS_PACKING_MANAGE WHERE box_number = '" + boxNum + "'"; List> mapList = jdbcTemplate.queryForList(selectSql); if (mapList.size() > 0) { pageNum = mapList.get(0).get("nmu") == null ? "0" : mapList.get(0).get("nmu").toString(); } return new AjaxResponse(pageNum); } catch (Exception e) { logger.error(e.getMessage(), e); return new AjaxResponse(new ErrorInfo(e.getMessage()), false); } } /** * 原始文件装盒 * * @return */ @RequestMapping(value = "/packagingBoxYs") @ResponseBody @RequiresUser public Object packagingBoxYs(String boxNum, @RequestBody ArrayList idList) { try { String box = boxNum; String pageNum = "0"; String selectSqlPage = "select max(PAGE_NMU) as nmu from BUS_PACKING_MANAGE WHERE box_number = '" + boxNum + "'"; List> mapList = jdbcTemplate.queryForList(selectSqlPage); if (mapList.size() > 0) { pageNum = mapList.get(0).get("nmu") == null ? "0" : mapList.get(0).get("nmu").toString(); } int newPage = Integer.parseInt(pageNum); for (int i = 0; i < idList.size(); i++) { String selectSql = "select * from CAT_ITEM_YSWJXX where id = " + idList.get(i); Map map = jdbcTemplate.queryForMap(selectSql); String itemNum = StringUtil.nullToEmpty(map.get("DH")).trim(); String id = StringUtil.nullToEmpty(map.get("ID")).trim(); String ajId = StringUtil.nullToEmpty(map.get("AJ_ID")).trim(); QueryWrapper packingManageQueryWrapper = new QueryWrapper<>(); packingManageQueryWrapper.eq("item_id", idList.get(i)); PackingManage packingManage = new PackingManage(); List packingManageList = packingManageService.list(packingManageQueryWrapper); if (packingManageList.size() > 0) { packingManage = packingManageList.get(0); } packingManage.setItemId(id); packingManage.setAjId(ajId); packingManage.setCreateTime(new java.util.Date()); packingManage.setType(1); String zzys = map.get("ZZYS") == null ? "0" : map.get("ZZYS").toString(); if (newPage + Integer.parseInt(zzys) > 500) { int num = Integer.parseInt(box); num += 1; DecimalFormat df = new DecimalFormat("0000"); String newBox = df.format(num); box = newBox; newPage = Integer.parseInt(zzys); } else { newPage = newPage + Integer.parseInt(zzys); } packingManage.setPageNmu(newPage); packingManage.setItemNum(itemNum + "-" + box); packingManage.setBoxNumber(box); packingManageService.saveOrUpdate(packingManage); String updateSql = "update CAT_ITEM_YSWJXX set HH = '" + box + "' where id = " + idList.get(i); jdbcTemplate.update(updateSql); } return new AjaxResponse(true); } catch (Exception e) { logger.error(e.getMessage(), e); return new AjaxResponse(new ErrorInfo(e.getMessage()), false); } } /** * @param type 0 是成果 1 是原始 * @return */ @RequestMapping({"/printLabelIndex"}) @RequiresUser public ModelAndView printLabelIndex(Integer type) { ModelAndView mv = new ModelAndView("gh/catAjjxx/printLabelIndex"); mv.addObject("type", type); return mv; } /** * @param fileType 打印类型 0是盒子 1是文件 * @param type 资料类型 0成果报告 1原始资料 * @param idList * @return */ @RequestMapping(value = "/printLabel") @ResponseBody @RequiresUser public Object printLabel(String fileType, Integer type, @RequestBody List idList) { try { //打印盒子 if ("盒子".equals(fileType)) { if (type == 0) { } if (type == 1) { UsbSyncExampleWindows usbSyncExampleWindows = new UsbSyncExampleWindows(); usbSyncExampleWindows.printFileLabel(idList); // ZT411RFIDPrintService zt411RFIDPrintService = new ZT411RFIDPrintService(); // zt411RFIDPrintService.printRFIDLabel(idList); } } //打印文件 if ("文件".equals(fileType)) { if (type == 0) { UsbSyncExampleWindowsItemCg usbSyncExampleWindowsItemCg = new UsbSyncExampleWindowsItemCg(); usbSyncExampleWindowsItemCg.printItemLabelCg(idList); } if (type == 1) { UsbSyncExampleWindowsItem usbSyncExampleWindowsItem = new UsbSyncExampleWindowsItem(); usbSyncExampleWindowsItem.printItemLabel(idList); } } return new AjaxResponse(true); } catch (Exception e) { logger.error(e.getMessage(), e); return new AjaxResponse(new ErrorInfo(e.getMessage()), false); } } /** * 获取文件类型 * * @return */ @RequestMapping(value = "/getFileType") @ResponseBody @RequiresUser public List> getFileType(Integer type) { String sql = "SELECT param_name , param_value FROM sys_keyword_param where keyword_id = 1830441538759495681"; if (type == 1) { sql = "SELECT param_name , param_value FROM sys_keyword_param where keyword_id = 1830439705299193857"; } List> mapList = jdbcTemplate.queryForList(sql); return mapList; } /** * 获取文件类型 * * @return */ @RequestMapping(value = "/updateFileType") @ResponseBody @RequiresUser public Object updateFileType(String fileType, @RequestBody ArrayList idList) { int newXh = 0; CatYswjxx yswjxx = catYswjxxService.getById(idList.get(0)); String maxFileType = catYswjxxService.getMaxFileType(yswjxx.getAjId(), fileType); if (maxFileType != null) { newXh = Integer.parseInt(maxFileType); } try { for (Long id : idList) { //JNXH CatYswjxx catYswjxx = catYswjxxService.getById(id); newXh = newXh + 1; catYswjxx.setXh(Integer.toString(newXh)); String substring = fileType.substring(fileType.indexOf("/") + 1); String newXhFormatted = String.format("%04d", newXh); String newJnxh = substring + newXhFormatted; catYswjxx.setJnxh(newJnxh); catYswjxx.setWjlx(fileType); catYswjxxService.updateById(catYswjxx); } return new AjaxResponse(true); } catch (Exception e) { logger.error(e.getMessage(), e); return new AjaxResponse(new ErrorInfo(e.getMessage()), false); } } }