8448f1d22944bbf09d7e47cd75d2c584e598c766.svn-base 87 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002
  1. package cn.com.goldenwater.dcproj.service.impl.importex;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.constValue.ImpPblmEnum;
  4. import cn.com.goldenwater.dcproj.dao.*;
  5. import cn.com.goldenwater.dcproj.dto.BisInspRgstrDto;
  6. import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDto;
  7. import cn.com.goldenwater.dcproj.dto.BisInspSdRgstrDto;
  8. import cn.com.goldenwater.dcproj.dto.PersListDto;
  9. import cn.com.goldenwater.dcproj.model.*;
  10. import cn.com.goldenwater.dcproj.param.*;
  11. import cn.com.goldenwater.dcproj.service.BisInspAllRlationPersService;
  12. import cn.com.goldenwater.dcproj.service.BisInspPblmService;
  13. import cn.com.goldenwater.dcproj.service.GwComFileService;
  14. import cn.com.goldenwater.dcproj.service.ImpPblmService;
  15. import cn.com.goldenwater.dcproj.util.PtypeConversionUtil;
  16. import cn.com.goldenwater.dcproj.utils.InspUtils;
  17. import cn.com.goldenwater.dcproj.utils.ZipUtil;
  18. import cn.com.goldenwater.dcproj.utils.export.FieldFormat;
  19. import cn.com.goldenwater.dcproj.utils.impexcel.ExpAndImpUtil;
  20. import cn.com.goldenwater.dcproj.utils.impexcel.ExpUtil;
  21. import cn.com.goldenwater.dcproj.utils.impexcel.ImpUtil;
  22. import cn.com.goldenwater.dcproj.utils.impexcel.ImportExcel;
  23. import cn.com.goldenwater.dcproj.utils.impexcel.format.PblmFieldFormatExp;
  24. import cn.com.goldenwater.dcproj.utils.impexcel.format.PblmFieldFormatImp;
  25. import cn.com.goldenwater.id.util.UuidUtil;
  26. import com.alibaba.fastjson.JSONObject;
  27. import com.github.pagehelper.PageInfo;
  28. import org.apache.commons.collections.MapUtils;
  29. import org.apache.commons.io.FileUtils;
  30. import org.apache.commons.lang3.ArrayUtils;
  31. import org.apache.commons.lang3.StringUtils;
  32. import org.apache.poi.ss.usermodel.Workbook;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.beans.factory.annotation.Value;
  35. import org.springframework.data.redis.core.RedisTemplate;
  36. import org.springframework.stereotype.Service;
  37. import org.springframework.transaction.annotation.Transactional;
  38. import org.springframework.web.multipart.MultipartFile;
  39. import javax.servlet.http.HttpServletResponse;
  40. import java.io.ByteArrayOutputStream;
  41. import java.io.File;
  42. import java.io.IOException;
  43. import java.util.*;
  44. import java.util.stream.Collectors;
  45. import static cn.com.goldenwater.dcproj.constValue.ImpPblmEnum.*;
  46. import static cn.com.goldenwater.dcproj.utils.impexcel.ImpUtil.*;
  47. import static cn.com.goldenwater.dcproj.utils.impexcel.ImportExcel.convertMapToBean;
  48. import static cn.com.goldenwater.dcproj.utils.impexcel.field.ExcelFieldLists.pblmFieldArrays;
  49. /**
  50. * <p>
  51. * 水库问题导入Service实现类,业务逻辑主要处理部分
  52. * 1)rollbackFor属性 只要有异常就会回滚
  53. * </p>
  54. *
  55. * @author liyz
  56. * @date 2019/7/10 16:10
  57. **/
  58. @Service
  59. @Transactional(rollbackFor = Exception.class)
  60. public class ImpPblmServiceImpl extends AbstractCrudService implements ImpPblmService {
  61. @Value("${export.templatePath}")
  62. private String templatePath;
  63. @Value("${impExcel.basePath}")
  64. private String impExcelBashPath;
  65. @Value("${web.upload-path}")
  66. private String imgPath;
  67. @Value("${getFile.prefix}")
  68. private String imgPathPrefix;
  69. @Autowired
  70. private RedisTemplate redisTemplate;
  71. @Autowired
  72. private ImpPblmDao impPblmDao;
  73. @Autowired
  74. private GwComFileService gwComFileService;
  75. @Autowired
  76. private BisInspPblmService bisInspPblmService;
  77. @Autowired
  78. private ObjInspPblmsDao objInspPblmsDao;
  79. @Autowired
  80. private ObjKeyPblmsDao objKeyPblmsDao;
  81. @Autowired
  82. private BisInspRsvrRgstrDao bisInspRsvrRgstrDao;
  83. @Autowired
  84. private BisInspSvwtAreaRgstrDao bisInspSvwtAreaRgstrDao;
  85. @Autowired
  86. private BisInspSvwtWuntRgstrDao bisInspSvwtWuntRgstrDao;
  87. @Autowired
  88. private BisInspPblmDao bisInspPblmDao;
  89. @Autowired
  90. private AttWagaRgstrDao attWagaRgstrDao;
  91. @Autowired
  92. private BisInspSdRgstrDao bisInspSdRgstrDao;
  93. @Autowired
  94. private BisInspSwhsRgstrDao bisInspSwhsRgstrDao;
  95. @Autowired
  96. private BisInspWiuRgstrDao bisInspWiuRgstrDao;
  97. @Autowired
  98. private BisInspAllObjDao bisInspAllObjDao;
  99. @Autowired
  100. private BisInspKeyRegisterSectionDao bisInspKeyRegisterSectionDao;
  101. @Autowired
  102. private BisInspAllRlationPersService bisInspAllRlationPersService;
  103. private int updateSuccessCount = 0;
  104. private int insertSuccessCount = 0;
  105. /**
  106. * 要检查问题标准的类型
  107. */
  108. private static String[] checkedOrgTypes = new String[]{
  109. ImpPblmEnum.IMP_REVER.getOrgType(),
  110. ImpPblmEnum.IMP_WAGA.getOrgType(),
  111. ImpPblmEnum.IMP_SD.getOrgType(),
  112. ImpPblmEnum.IMP_SWHS.getOrgType(),
  113. ImpPblmEnum.IMP_WIU.getOrgType()
  114. };
  115. public ImpPblmServiceImpl(ImpPblmDao impPblmDao) {
  116. super(impPblmDao);
  117. this.impPblmDao = impPblmDao;
  118. }
  119. @Override
  120. public void downloadTemplate(HttpServletResponse response,String userId,String orgType,String orgIds,String datas,String orgId) throws Exception{
  121. // if(orgType.equals(orgIds)){
  122. // orgIds = "";
  123. // }
  124. ImpPblmEnum impPblmEnum = ImpPblmEnum.getEnumByOrgType(orgType);
  125. if(impPblmEnum == null){
  126. return;
  127. }
  128. switch (impPblmEnum) {
  129. case IMP_REVER:
  130. // 水库
  131. this.downloadTemplateRever(response, userId, orgType, orgIds ,datas,orgId);
  132. break;
  133. case IMP_WAGA:
  134. // 水闸
  135. this.downloadTemplateWaga(response, userId, orgType, orgIds,datas,orgId);
  136. break;
  137. case IMP_EMPWT:
  138. // 水利工程建设
  139. this.downloadTemplateKeyReg(response, userId, orgType, orgIds,datas,orgId);
  140. break;
  141. case IMP_EMPWTRUN:
  142. // 水利工程运行
  143. this.downloadTemplateKeyReg(response, userId, orgType, orgIds,datas,orgId);
  144. break;
  145. case IMP_SD:
  146. // 淤地坝
  147. this.downloadTemplateSd(response, userId, orgIds, impPblmEnum,datas,orgId);
  148. break;
  149. case IMP_WIU:
  150. // 取水口
  151. this.downloadTemplateWiu(response, userId, orgIds, impPblmEnum,datas,orgId);
  152. break;
  153. case IMP_SWHS:
  154. // 水源地
  155. this.downloadTemplateSwhs(response, userId, orgIds, impPblmEnum,datas,orgId);
  156. break;
  157. case IMP_SVWT:
  158. // 节水管理与评价
  159. this.downloadTemplateSvwt(response, userId, orgIds, impPblmEnum, datas,orgId);
  160. break;
  161. case IMP_WUNT:
  162. // 用水单位抽查
  163. this.downloadTemplateWunt(response, userId, orgIds, impPblmEnum,datas,orgId);
  164. break;
  165. default:
  166. break;
  167. }
  168. }
  169. private Object getConverDatas(String datas,Object object){
  170. try {
  171. if(datas == null){
  172. return object;
  173. }
  174. return JSONObject.parseObject(datas, object.getClass());
  175. }catch (Exception e){
  176. e.printStackTrace();
  177. }
  178. return object;
  179. }
  180. public void downloadTemplateRever(HttpServletResponse response,String userId,String orgType,
  181. String orgIds,String datas,String orgId) throws Exception{
  182. ReverParam reverParam = (ReverParam)this.getConverDatas(datas,new ReverParam());
  183. reverParam.setOrgIds(InspUtils.setOrgIds(orgIds));
  184. reverParam.setPersId(userId);
  185. reverParam.setOrgId(orgId);
  186. List<BisInspPblm> pblmList=bisInspPblmDao.findReverPlbmList(reverParam);
  187. // 模板路径
  188. String filePath = templatePath + File.separator + "pblmSk.xls";
  189. // SHEET名称
  190. String sheetName = "水库问题";
  191. // 文件名称带后缀
  192. String fileName = sheetName + ".xls";
  193. // startRow
  194. int startRow = 2;
  195. // 使用通用的下载模板的方法
  196. List<Map<String, Object>> dataList = ExpAndImpUtil.convertBeanToList(pblmList, pblmFieldArrays, PblmFieldFormatExp.class);
  197. // 处理其他特殊字段
  198. for(BisInspPblm bisInspPblm : pblmList){
  199. // 处理图片路径
  200. List<GwComFile> bizFiles = gwComFileService.findFileByBiz(bisInspPblm.getPblmId());
  201. String[] filePaths = bizFiles.stream().filter(x -> x.getBizId() != null && x.getBizId().equals(bisInspPblm.getPblmId())).map(GwComFile::getFilePath).toArray(String[]::new);
  202. String filePathsStr = StringUtils.join(filePaths,";");
  203. // 处理groupName
  204. List<BisInspAll> list = impPblmDao.getGroupList(userId, bisInspPblm.getOid());
  205. for(Map<String,Object> map : dataList){
  206. if(bisInspPblm.getPblmId().equals(map.get("pblmId"))){
  207. // 处理省市县
  208. ExpUtil.getAdNames(map,bisInspPblm.getAdFullName());
  209. // 问题标准附件
  210. map.put("attachSheet",(bisInspPblm.getAttach() != null ? bisInspPblm.getAttach() : "")+"-"+(bisInspPblm.getSheet()!=null ? bisInspPblm.getSheet() : ""));
  211. map.put("path", FieldFormat.formatCheckNull(filePathsStr));
  212. // 处理RsCode
  213. // BisInspRsvrRgstr bisInspRsvrRgstr = bisInspRsvrRgstrDao.get(bisInspPblm.getRegid());
  214. // if(bisInspRsvrRgstr != null){
  215. // map.put("rsCode",bisInspRsvrRgstr.getRsCode());
  216. // }
  217. map.put("rsCode",bisInspPblm.getCode());
  218. if(list.size() > 0){
  219. map.put("groupName",list.get(0).getPnm());
  220. }
  221. // insp_pblm_code 要取snNum
  222. map.put("inspPblmCode",bisInspPblm.getSnNum());
  223. }
  224. }
  225. }
  226. // 获取一个已经填满数据的WorkBook
  227. Workbook workBook = ExpAndImpUtil.getWorkbook(dataList, filePath, startRow, sheetName);
  228. List<BisInspAll> list = impPblmDao.getGroupList(userId, orgType);
  229. String[] groupNames = list.stream().map(BisInspAll::getPnm).toArray(String[]::new);
  230. // 给组别加上一个下拉列表,组别字段在第5列,firstCol=5-1
  231. ExpAndImpUtil.createListBox(groupNames,3,4,workBook);
  232. // 获取水库名称列表 从登记表获取
  233. TypeParam typeParam = new TypeParam();
  234. typeParam.setPresId(userId);
  235. typeParam.setpType(IMP_REVER.getObjType());
  236. List<BisInspRsvrRgstrPcDto> bisInspRsvrRgstrPcDtoList = bisInspRsvrRgstrDao.findPcPage(typeParam);
  237. String[] rsNames = bisInspRsvrRgstrPcDtoList.stream().map(BisInspRsvrRgstrPcDto::getNm).distinct().toArray(String[]::new);
  238. // 给水库名称再加一个下拉列表,水库名称在第7列,firstCol=7-1
  239. ByteArrayOutputStream os = ExpAndImpUtil.createListBox(rsNames,3,6,workBook);
  240. // 下载
  241. ExpAndImpUtil.downloadExcelFile(response, os,fileName);
  242. }
  243. public void downloadTemplateSd(HttpServletResponse response,String userId,String orgIds,
  244. ImpPblmEnum impPblmEnum,String datas,String orgId) throws Exception{
  245. SdPblmParam sdPblmParam = (SdPblmParam)this.getConverDatas(datas,new SdPblmParam());
  246. sdPblmParam.setOrgIds(InspUtils.setOrgIds(orgIds));
  247. sdPblmParam.setPersId(userId);
  248. sdPblmParam.setOrgId(orgId);
  249. sdPblmParam.setpType(impPblmEnum.getObjType());
  250. List<BisInspPblm> pblmList=bisInspPblmDao.findSdPblmList(sdPblmParam);
  251. // 使用通用的业务下载方法
  252. this.downloadTemplateCommon(response,userId,impPblmEnum,pblmList);
  253. }
  254. public void downloadTemplateSwhs(HttpServletResponse response,String userId,String orgIds,
  255. ImpPblmEnum impPblmEnum,String datas,String orgId) throws Exception{
  256. PblmParam pblmParam = (PblmParam)this.getConverDatas(datas,new PblmParam());
  257. pblmParam.setOrgIds(InspUtils.setOrgIds(orgIds));
  258. pblmParam.setPersId(userId);
  259. pblmParam.setOrgId(orgId);
  260. pblmParam.setpType(impPblmEnum.getObjType());
  261. List<BisInspPblm> pblmList=bisInspPblmDao.findPblmList(pblmParam);
  262. // 使用通用的业务下载方法
  263. this.downloadTemplateCommon(response,userId,impPblmEnum,pblmList);
  264. }
  265. public void downloadTemplateWiu(HttpServletResponse response,String userId,String orgIds,
  266. ImpPblmEnum impPblmEnum,String datas,String orgId) throws Exception{
  267. this.downloadTemplateSwhs(response,userId,orgIds,impPblmEnum,datas,orgId);
  268. }
  269. public void downloadTemplateSvwt(HttpServletResponse response,String userId,String orgIds,
  270. ImpPblmEnum impPblmEnum,String datas,String orgId) throws Exception{
  271. this.downloadTemplateSwhs(response,userId,orgIds,impPblmEnum,datas,orgId);
  272. }
  273. public void downloadTemplateWunt(HttpServletResponse response,String userId,String orgIds,
  274. ImpPblmEnum impPblmEnum,String datas,String orgId) throws Exception{
  275. this.downloadTemplateSwhs(response,userId,orgIds,impPblmEnum,datas,orgId);
  276. }
  277. private void downloadTemplateCommon(HttpServletResponse response,String userId,ImpPblmEnum impPblmEnum,List<BisInspPblm> pblmList) throws Exception{
  278. // 模板路径
  279. String filePath = templatePath + File.separator + impPblmEnum.getFilePath();
  280. // SHEET名称
  281. String sheetName = impPblmEnum.getSheetName();
  282. // 文件名称带后缀
  283. String fileName = impPblmEnum.getFileName();
  284. // startRow
  285. int startRow = impPblmEnum.getStartRow();
  286. // 使用通用的下载模板的方法
  287. List<Map<String, Object>> dataList = ExpAndImpUtil.convertBeanToList(pblmList, pblmFieldArrays, PblmFieldFormatExp.class);
  288. // 处理其他特殊字段
  289. for(BisInspPblm bisInspPblm : pblmList){
  290. for(Map<String,Object> map : dataList){
  291. if(bisInspPblm.getPblmId().equals(map.get("pblmId"))){
  292. // 处理省市县
  293. ExpUtil.getAdNames(map,bisInspPblm.getAdFullName());
  294. // 问题标准附件
  295. map.put("attachSheet",this.formatAttachSheet(bisInspPblm.getAttach(),bisInspPblm.getSheet()));
  296. // 处理图片路径
  297. List<GwComFile> bizFiles = gwComFileService.findFileByBiz(bisInspPblm.getPblmId());
  298. String[] filePaths = bizFiles.stream().map(GwComFile::getFilePath).toArray(String[]::new);
  299. String filePathsStr = StringUtils.join(filePaths,";");
  300. map.put("path", FieldFormat.formatCheckNull(filePathsStr));
  301. // 处理groupName
  302. String pType = bisInspPblm.getObjType();
  303. List<BisInspAll> list = impPblmDao.getGroupLists(userId, bisInspPblm.getOid(),PtypeConversionUtil.completion(pType));
  304. if(list.size() > 0){
  305. map.put("groupName",list.get(0).getPnm());
  306. }
  307. // insp_pblm_code 如果没有 去取snNum
  308. if(StringUtils.isBlank(bisInspPblm.getInspPblmCode())){
  309. map.put("inspPblmCode",bisInspPblm.getSnNum());
  310. }
  311. }
  312. }
  313. }
  314. // 获取一个已经填满数据的WorkBook
  315. Workbook workBook = ExpAndImpUtil.getWorkbook(dataList, filePath, startRow, sheetName);
  316. List<BisInspAll> list = impPblmDao.getGroupLists(userId, impPblmEnum.getOrgType(),PtypeConversionUtil.completion(impPblmEnum.getObjType()));
  317. String[] groupNamesList = list.stream().map(BisInspAll::getPnm).toArray(String[]::new);
  318. // 给组别加上一个下拉列表,组别字段在第5列,firstCol=5-1
  319. ByteArrayOutputStream os = ExpAndImpUtil.createListBox(groupNamesList,3,4,workBook);
  320. // 下载
  321. ExpAndImpUtil.downloadExcelFile(response, os,fileName);
  322. }
  323. public void downloadTemplateWaga(HttpServletResponse response,String userId,String orgType,
  324. String orgIds,String datas,String orgId) throws Exception{
  325. WagaParam wagaParam = (WagaParam)this.getConverDatas(datas,new WagaParam());
  326. wagaParam.setOrgIds(InspUtils.setOrgIds(orgIds));
  327. wagaParam.setPersId(userId);
  328. wagaParam.setOrgId(orgId);
  329. List<BisInspPblm> pblmList=bisInspPblmDao.findWagaPlbmList(wagaParam);
  330. // 模板路径
  331. String filePath = templatePath + File.separator + "pblmSz.xls";
  332. // SHEET名称
  333. String sheetName = "水闸问题";
  334. // 文件名称带后缀
  335. String fileName = sheetName + ".xls";
  336. // startRow
  337. int startRow = 2;
  338. // 使用通用的下载模板的方法
  339. List<Map<String, Object>> dataList = ExpAndImpUtil.convertBeanToList(pblmList, pblmFieldArrays, PblmFieldFormatExp.class);
  340. // 处理其他特殊字段
  341. for(BisInspPblm bisInspPblm : pblmList){
  342. // 处理图片路径
  343. List<GwComFile> bizFiles = gwComFileService.findFileByBiz(bisInspPblm.getPblmId());
  344. String[] filePaths = bizFiles.stream().map(GwComFile::getFilePath).toArray(String[]::new);
  345. String filePathsStr = StringUtils.join(filePaths,";");
  346. // 处理groupName
  347. List<BisInspAll> list = impPblmDao.getGroupList(userId, bisInspPblm.getOid());
  348. for(Map<String,Object> map : dataList){
  349. if(bisInspPblm.getPblmId().equals(map.get("pblmId"))){
  350. // 处理省市县
  351. ExpUtil.getAdNames(map,bisInspPblm.getAdFullName());
  352. // 问题标准附件
  353. map.put("attachSheet",(bisInspPblm.getAttach() != null ? bisInspPblm.getAttach() : "")+"-"+(bisInspPblm.getSheet()!=null ? bisInspPblm.getSheet() : ""));
  354. map.put("path", FieldFormat.formatCheckNull(filePathsStr));
  355. // 处理objCode 水闸编码
  356. // AttWagaRgstr attWagaRgstr = attWagaRgstrDao.get(bisInspPblm.getRegid());
  357. // if(attWagaRgstr != null){
  358. // map.put("objCode",attWagaRgstr.getObjCode());
  359. // map.put("gateName",attWagaRgstr.getGateName());
  360. // }
  361. map.put("objCode",bisInspPblm.getCode());
  362. map.put("gateName",bisInspPblm.getNm());
  363. if(list.size() > 0){
  364. map.put("groupName",list.get(0).getPnm());
  365. }
  366. // insp_pblm_code 要取snNum
  367. map.put("inspPblmCode",bisInspPblm.getSnNum());
  368. }
  369. }
  370. }
  371. Workbook workBook = ExpAndImpUtil.getWorkbook(dataList, filePath, startRow, sheetName);
  372. List<BisInspAll> list = impPblmDao.getGroupList(userId, orgType);
  373. String[] groupNamesList = list.stream().map(BisInspAll::getPnm).toArray(String[]::new);
  374. // 组别字段在第5列,firstCol=5-1
  375. ExpAndImpUtil.createListBox(groupNamesList,3,4,workBook);
  376. // 获取水闸名称列表 从登记表里获取
  377. TypeParam typeParam = new TypeParam();
  378. typeParam.setPresId(userId);
  379. typeParam.setpType(IMP_WAGA.getObjType());
  380. List<BisInspWagaRgstrDto> bisInspWagaRgstrDtoList = attWagaRgstrDao.findWagaPage(typeParam);
  381. String[] gateNames = bisInspWagaRgstrDtoList.stream().map(BisInspWagaRgstrDto::getNm).distinct().toArray(String[]::new);
  382. // 给水闸名称再加一个下拉列表,水闸名称在第7列,firstCol=7-1
  383. ByteArrayOutputStream os = ExpAndImpUtil.createListBox(gateNames,3,6,workBook);
  384. ExpAndImpUtil.downloadExcelFile(response, os,fileName);
  385. }
  386. public void downloadTemplateKeyReg(HttpServletResponse response,String userId,
  387. String orgType,String orgIds,String datas,String orgId) throws Exception{
  388. ImpPblmEnum impPblmEnum = ImpPblmEnum.getEnumByOrgType(orgType);
  389. // 督查类型 4水利工程建设 7水利工程运行
  390. if(impPblmEnum == null){
  391. return;
  392. }
  393. KeyRegPatam keyRegPatam = (KeyRegPatam)this.getConverDatas(datas,new KeyRegPatam());
  394. keyRegPatam.setOrgIds(InspUtils.setOrgIds(orgIds));
  395. keyRegPatam.setPersId(userId);
  396. keyRegPatam.setOrgId(orgId);
  397. keyRegPatam.setpType(impPblmEnum.getObjType());
  398. // 如果是建设
  399. if(impPblmEnum == IMP_EMPWT) {
  400. // 复查结论
  401. keyRegPatam.setReviConc("0");
  402. }
  403. List<KeyRegPblm> pblmList=bisInspPblmDao.findKeyRegPlbmList(keyRegPatam);
  404. // 模板文件路径
  405. String filePath = templatePath + File.separator + impPblmEnum.getFilePath();
  406. // 开始行
  407. int startRow = 2;
  408. // 使用通用的下载模板的方法
  409. List<Map<String, Object>> dataList = ExpAndImpUtil.convertBeanToList(pblmList, pblmFieldArrays, PblmFieldFormatExp.class);
  410. // 处理其他特殊字段
  411. for(KeyRegPblm bisInspPblm : pblmList){
  412. for(Map<String,Object> map : dataList){
  413. if(bisInspPblm.getPblmId().equals(map.get("pblmId"))){
  414. // 处理省市县
  415. ExpUtil.getAdNames(map,bisInspPblm.getAdFullName());
  416. // 处理图片路径
  417. List<GwComFile> bizFiles = gwComFileService.findFileByBiz(bisInspPblm.getPblmId());
  418. String[] filePaths = bizFiles.stream().map(GwComFile::getFilePath).toArray(String[]::new);
  419. String filePathsStr = StringUtils.join(filePaths,";");
  420. map.put("path", FieldFormat.formatCheckNull(filePathsStr));
  421. // 处理groupName
  422. List<BisInspAll> list = impPblmDao.getGroupList(userId, bisInspPblm.getOid());
  423. if(list.size() > 0){
  424. map.put("groupName",list.get(0).getPnm());
  425. }
  426. // 处理单位名称
  427. List<String> dwNmList = impPblmDao.getNmByRegId(bisInspPblm.getRegid(),orgType);
  428. if(dwNmList.size() > 0){
  429. map.put("dwNm", dwNmList.get(0));
  430. }else {
  431. map.put("dwNm", "");
  432. }
  433. try {
  434. if("004".equals(orgType)){
  435. // 处理标段名称
  436. BisInspKeyRegisterSection bisInspKeyRegisterSection = bisInspKeyRegisterSectionDao.findSecByUnitId(bisInspPblm.getRegid());
  437. if(bisInspKeyRegisterSection != null){
  438. map.put("bdNm", bisInspKeyRegisterSection.getNm());
  439. }else {
  440. map.put("bdNm", "");
  441. }
  442. }
  443. }catch (Exception e){
  444. e.printStackTrace();
  445. }
  446. // 处理attachWg
  447. if(bisInspPblm.getAttachWg() != null && bisInspPblm.getAttachWg().endsWith("-")){
  448. map.put("attachWg",bisInspPblm.getAttachWg().replace("-",""));
  449. }
  450. // 处理attachDef
  451. if(bisInspPblm.getAttachDef() != null && bisInspPblm.getAttachDef().endsWith("-")){
  452. map.put("attachDef",bisInspPblm.getAttachDef().replace("-",""));
  453. }
  454. }
  455. }
  456. }
  457. Workbook workBook = ExpAndImpUtil.getWorkbook(dataList, filePath, startRow, impPblmEnum.getSheetName());
  458. List<BisInspAll> list = impPblmDao.getGroupList(userId, orgType);
  459. String[] groupNamesList = list.stream().map(BisInspAll::getPnm).toArray(String[]::new);
  460. // 组别字段在第5列,firstCol=5-1
  461. ByteArrayOutputStream os = ExpAndImpUtil.createListBox(groupNamesList,3,4,workBook);
  462. ExpAndImpUtil.downloadExcelFile(response, os,impPblmEnum.getFileName());
  463. }
  464. private String formatAttachSheet(String attach,String sheet){
  465. if(StringUtils.isBlank(attach)){
  466. return "";
  467. }else if(StringUtils.isBlank(sheet)){
  468. return attach;
  469. }else{
  470. return attach + "-" + sheet;
  471. }
  472. }
  473. private String formatAttachSheet(String value){
  474. if(StringUtils.isBlank(value)){
  475. return "";
  476. }else if(value.endsWith("-")){
  477. return value.replace("-","");
  478. }else{
  479. return value;
  480. }
  481. }
  482. @Override
  483. public String uploadFile(MultipartFile[] files) {
  484. // return this.uploadFileSingle(files);
  485. return this.uploadFileMore(files);
  486. }
  487. public String uploadFileMore(MultipartFile[] files){
  488. if(files.length > 0){
  489. String info = "";
  490. for (MultipartFile file : files){
  491. // 如果上传成功
  492. switch (file.getOriginalFilename().split("\\.")[1]){
  493. case ImpUtil.XLS:
  494. // info = this.uploadFileExcel(file);
  495. info = this.uploadFileExcelCommon(file);
  496. break;
  497. case ImpUtil.ZIP:
  498. // info = this.uploadFileZip(file);
  499. info = this.uploadFileZipCommon(file);
  500. break;
  501. default:
  502. info = "文件类型不对";
  503. break;
  504. }
  505. }
  506. return info;
  507. }else {
  508. return "文件为空";
  509. }
  510. }
  511. public String uploadFileSingle(MultipartFile file) {
  512. String info = "";
  513. // 如果上传成功
  514. switch (file.getOriginalFilename().split("\\.")[1]){
  515. case ImpUtil.XLS:
  516. info = this.uploadFileExcel(file);
  517. break;
  518. case ImpUtil.ZIP:
  519. info = this.uploadFileZip(file);
  520. break;
  521. default:
  522. info = "文件类型不对";
  523. break;
  524. }
  525. return info;
  526. }
  527. @Override
  528. public Map<String,Object> parseTemplate(String filePath,String userId,String orgType) {
  529. Map<String,Object> map = new HashMap<>();
  530. List<LinkedHashMap<String,Object>> listParse = null;
  531. int startRow = 2;
  532. int endRow = 0;
  533. List<LinkedHashMap<String, Object>> listShow = new ArrayList<>();
  534. try {
  535. // 获取到从Excel里提取到的数据,并已格式化
  536. listParse = ImportExcel.getParseData(filePath,startRow,endRow, PblmFieldFormatImp.class);
  537. if(listParse.size() > 0){
  538. String cacheId = UuidUtil.uuid();
  539. redisTemplate.opsForList().rightPushAll(cacheId,listParse);
  540. map.put("cacheId",cacheId);
  541. }else{
  542. map.put("cacheId","");
  543. }
  544. // 添加警告,(先不放开)
  545. if(listParse.size() > 0){
  546. // if(listParse.get(0).get("rsCode") != null){
  547. // checkHasObjPblm(listParse,userId,"001");
  548. // }else if(listParse.get(0).get("objCode") != null){
  549. // checkHasObjPblm(listParse,userId,"006");
  550. // }
  551. checkHasObjPblm(listParse,userId,orgType);
  552. }
  553. listShow = ImportExcel.getShowData(listParse, PblmFieldFormatExp.class);
  554. map.put("listParse",listShow);
  555. } catch (IOException e) {
  556. e.printStackTrace();
  557. }
  558. return map;
  559. }
  560. @Override
  561. public boolean insertTemplate(String cacheId,String userId,String updateState,String orgType) {
  562. return this.insertTemplateState(cacheId,userId,updateState,orgType);
  563. }
  564. public boolean insertTemplateState(String cacheId,String userId,String updateState,String orgType) {
  565. // 从redis里获取到数据
  566. List<LinkedHashMap<String, Object>> listParse = this.getParseDataByRedis(cacheId);
  567. // 去重复pblmId处理,可能增加问题时会直接复制了上一行数据会把pblmId带上,预防一下,取第一条,剩余pblmId置空
  568. ExpAndImpUtil.handleRepeatPrimaryKey(listParse,"pblmId");
  569. // 取出来的数据,分为两种情况,一种是有pblmId的,一种是没有的
  570. // 如果有
  571. List<LinkedHashMap<String, Object>> hasPblmIdList = listParse.stream().filter(x -> StringUtils.isNotBlank(MapUtils.getString(x,"pblmId"))).collect(Collectors.toList());
  572. // 如果无
  573. List<LinkedHashMap<String, Object>> notHasPblmIdList = listParse.stream().filter(x -> StringUtils.isBlank(MapUtils.getString(x,"pblmId"))).collect(Collectors.toList());
  574. // 批量插入
  575. boolean hasSuccess = true;
  576. boolean notHasSuccess = true;
  577. // 有pblmId,则更新
  578. this.updateSuccessCount = 0;
  579. if(hasPblmIdList.size() > 0){
  580. hasSuccess = this.batchUpdate(hasPblmIdList,userId,updateState,orgType);
  581. }else {
  582. hasSuccess = false;
  583. }
  584. // 无pblmId,则添
  585. this.insertSuccessCount = 0;
  586. if(notHasPblmIdList.size() > 0){
  587. notHasSuccess = this.batchInsert(notHasPblmIdList,userId,updateState,orgType);
  588. }else {
  589. notHasSuccess = false;
  590. }
  591. if(hasSuccess && notHasSuccess){
  592. // return "插入成功!";
  593. return true;
  594. }else {
  595. // return "插入失败!";
  596. return false;
  597. }
  598. }
  599. @Override
  600. public String insertTemplateInfo(String cacheId,String userId,String updateState,String orgType) {
  601. // 从redis里获取到数据
  602. List<LinkedHashMap<String, Object>> listParse = this.getParseDataByRedis(cacheId);
  603. // 去重复pblmId处理,可能增加问题时会直接复制了上一行数据会把pblmId带上,预防一下,取第一条,剩余pblmId置空
  604. ExpAndImpUtil.handleRepeatPrimaryKey(listParse,"pblmId");
  605. // 取出来的数据,分为两种情况,一种是有pblmId的,一种是没有的
  606. // 如果有
  607. List<LinkedHashMap<String, Object>> hasPblmIdList = listParse.stream().filter(x -> StringUtils.isNotBlank(MapUtils.getString(x,"pblmId"))).collect(Collectors.toList());
  608. // 如果无
  609. List<LinkedHashMap<String, Object>> notHasPblmIdList = listParse.stream().filter(x -> StringUtils.isBlank(MapUtils.getString(x,"pblmId"))).collect(Collectors.toList());
  610. // 批量插入
  611. // 有pblmId,则更新
  612. this.updateSuccessCount = 0;
  613. if(hasPblmIdList.size() > 0){
  614. this.batchUpdate(hasPblmIdList,userId,updateState,orgType);
  615. }
  616. // 无pblmId,则添加
  617. this.insertSuccessCount = 0;
  618. if(notHasPblmIdList.size() > 0){
  619. this.batchInsert(notHasPblmIdList,userId,updateState,orgType);
  620. }
  621. // 总数
  622. int sumCount = listParse.size();
  623. // 更新
  624. int updateCount = hasPblmIdList.size();
  625. // 新增
  626. int insertCount = notHasPblmIdList.size();
  627. return " 此次填报共:<b>" + sumCount + "</b>条,其中库里<i>原有数据</i>:<b>" + updateCount + "</b>条,<i>新增数据</i>:<b>" + insertCount + "</b>条。" +
  628. "<p><b>" + updateCount + "</b>条<i>原有数据</i>:修改成功<b>" + this.updateSuccessCount + "</b>条,失败<b>"+ (updateCount - this.updateSuccessCount) + "</b>条</p>" +
  629. "<p><b>" + insertCount + "</b>条<i>新增数据</i>:添加成功<b>" + this.insertSuccessCount + "</b>条,失败<b>"+ (insertCount - this.insertSuccessCount) + "</b>条</p>";
  630. }
  631. /**
  632. * 真正执行入库操作的方法(更新)
  633. * @see cn.com.goldenwater.dcproj.controller.pblm.BisInspPblmController#insert(BisInspPblm)
  634. */
  635. private boolean batchUpdate(List<LinkedHashMap<String, Object>> listParse,String userId,String updateState,String orgType){
  636. boolean success = false;
  637. this.updateSuccessCount = 0;
  638. List<BisInspPblm> list = new ArrayList<>();
  639. // List<GwComFile> listGwComFile = new ArrayList<>();
  640. // 把list<map> 转为 list<bean>
  641. for(LinkedHashMap<String,Object> lhp : listParse){
  642. try{
  643. BisInspPblm bisInspPblm = (BisInspPblm) convertMapToBean(BisInspPblm.class, lhp);
  644. // 如果这里为NULL,就不用继续了,肯定失败
  645. if(bisInspPblm == null){
  646. continue;
  647. }
  648. // 设置问题字段
  649. boolean setColumnState = this.setColumn(bisInspPblm,lhp,userId,orgType);
  650. if(!setColumnState){
  651. continue;
  652. }
  653. // 这里更新的时候暂时不更新多媒体,不确定会不会更改多媒体
  654. // 设置文件字段
  655. // this.setFileColumn(bisInspPblm,lhp,listGwComFile);
  656. // 添加进问题List
  657. list.add(bisInspPblm);
  658. }catch (Exception e){
  659. e.printStackTrace();
  660. }
  661. }
  662. // 用mybatis执行批量插入,提高效率
  663. try {
  664. if(list.size() > 0){
  665. // 最后再检查一下字段里是否有错误标识,检查无误,问题入库
  666. if(!list.toString().contains(ERR)){
  667. // 更新问题表,出于安全考虑,没有选择SQL批量更新,
  668. for(BisInspPblm bisInspPblm : list){
  669. bisInspPblmDao.update(bisInspPblm);
  670. }
  671. success = true;
  672. // 成功计数
  673. this.updateSuccessCount = list.size();
  674. }
  675. }else {
  676. this.updateSuccessCount = 0;
  677. }
  678. }catch (Exception e){
  679. e.printStackTrace();
  680. }
  681. return success;
  682. }
  683. /**
  684. * 真正执行入库操作的方法
  685. * @see cn.com.goldenwater.dcproj.controller.pblm.BisInspPblmController#insert(BisInspPblm)
  686. */
  687. private boolean batchInsert(List<LinkedHashMap<String, Object>> listParse,String userId,String updateState,String orgType){
  688. boolean success = false;
  689. this.insertSuccessCount = 0;
  690. List<BisInspPblm> list = new ArrayList<>();
  691. List<GwComFile> listGwComFile = new ArrayList<>();
  692. // 把list<map> 转为 list<bean>
  693. for(LinkedHashMap<String,Object> lhp : listParse){
  694. try{
  695. BisInspPblm bisInspPblm = (BisInspPblm) convertMapToBean(BisInspPblm.class, lhp);
  696. // 如果这里为NULL,就不用继续了,肯定失败
  697. if(bisInspPblm == null){
  698. continue;
  699. }
  700. // 设置问题字段
  701. boolean setColumnState = this.setColumn(bisInspPblm,lhp,userId,orgType);
  702. if(!setColumnState){
  703. continue;
  704. }
  705. // 设置文件字段
  706. this.setFileColumn(bisInspPblm,lhp,listGwComFile);
  707. // 添加进问题List
  708. list.add(bisInspPblm);
  709. }catch (Exception e){
  710. e.printStackTrace();
  711. }
  712. }
  713. // 用mybatis执行批量插入,提高效率
  714. try {
  715. if(list.size() > 0){
  716. // 最后再检查一下字段里是否有错误标识,检查无误,问题入库
  717. if(!list.toString().contains(ERR)){
  718. // 判断是否需要覆盖新增,如果是,先把原来的清掉
  719. if("0".equals(updateState)){
  720. for(BisInspPblm pblm : list){
  721. // 先删文件
  722. // 按bizId一个一个删,一下子删怕错删数据
  723. String bizId = pblm.getPblmId();
  724. List<GwComFile> gwComFileList = gwComFileService.findFileByBiz(bizId);
  725. // 不用deleteBy 太危险
  726. for(int i=0;i<gwComFileList.size();i++){
  727. String id = gwComFileList.get(i).getId();
  728. gwComFileService.delete(id);
  729. }
  730. // 再删问题
  731. BisInspPblmParam pblmParam = new BisInspPblmParam();
  732. pblmParam.setObjId(pblm.getObjId());
  733. List<BisInspPblm> pblmList = bisInspPblmService.findList(pblmParam);
  734. for(int i=0;i<pblmList.size();i++){
  735. String pblmId = pblmList.get(i).getPblmId();
  736. bisInspPblmService.delete(pblmId);
  737. }
  738. }
  739. }
  740. if(list.size()>0){
  741. impPblmDao.batchInsert(list);
  742. }
  743. // 问题多媒体文件入库
  744. if(listGwComFile.size() > 0){
  745. impPblmDao.batchInsertGwFile(listGwComFile);
  746. }
  747. success = true;
  748. // 成功计数
  749. this.insertSuccessCount = list.size();
  750. }
  751. }else {
  752. this.insertSuccessCount = 0;
  753. }
  754. }catch (Exception e){
  755. e.printStackTrace();
  756. }
  757. return success;
  758. }
  759. private void setFileColumn(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,List<GwComFile> listGwComFile){
  760. // 有图片
  761. Object path = lhp.get("path");
  762. if(path != null && !"".equals(path)){
  763. String pathStr = path.toString().replace(";",";");
  764. String[] pathStrArr = pathStr.split(";");
  765. String isHasVideo = "0";
  766. // 没有分号时length为1
  767. if(pathStrArr.length > 0){
  768. for(String pathStrItem : pathStrArr){
  769. GwComFile gwComFile = this.setFileColumnSingle(pathStrItem,bisInspPblm);
  770. if(StringUtils.isNotBlank(gwComFile.getFilePath())){
  771. listGwComFile.add(gwComFile);
  772. isHasVideo = "1";
  773. }
  774. }
  775. }
  776. // 应该根据path里的值来决定是否有多媒体,所以暂时把下面这段逻辑注释掉
  777. // if(StringUtils.isNotBlank(MapUtils.getString(lhp,"hasVedio"))){
  778. // isHasVideo = MapUtils.getString(lhp,"hasVedio");
  779. // }
  780. bisInspPblm.setHasVedio(isHasVideo);
  781. }else {
  782. bisInspPblm.setHasVedio("0");
  783. }
  784. }
  785. private GwComFile setFileColumnSingle(String pathStr,BisInspPblm bisInspPblm){
  786. // pathStr /lyz/test.png
  787. GwComFile gwComFile = new GwComFile();
  788. String gwId = UuidUtil.uuid();
  789. gwComFile.setId(gwId);
  790. gwComFile.setBizId(bisInspPblm.getPblmId());
  791. // 去除前面和后面的空格,不然文件类型会识别不了
  792. pathStr = pathStr.trim();
  793. if(pathStr.contains("\\")){
  794. pathStr = pathStr.replace("\\","/");
  795. }
  796. // 设置其他字段
  797. String[] fileTitles = pathStr.split("/");
  798. if(fileTitles.length > 0){
  799. String fileTitle = fileTitles[fileTitles.length-1];
  800. // 设置文件名称和title
  801. gwComFile.setFileTitle(fileTitle);
  802. gwComFile.setFileName(fileTitle);
  803. // 设置扩展名
  804. String[] fileExts = fileTitle.split("\\.");
  805. if(fileExts.length > 0){
  806. gwComFile.setFileExt(fileExts[fileExts.length-1]);
  807. }
  808. }
  809. // 设置path字段
  810. String[] pathStrArr = pathStr.split(":");
  811. // 有:说明带盘符 length为2,无:分割说明不带盘符 length为1
  812. if(pathStrArr.length > 0){
  813. try{
  814. this.setColumnFilePath(gwComFile,pathStrArr,pathStr,gwId);
  815. }catch (Exception e){
  816. e.printStackTrace();
  817. }
  818. }
  819. return gwComFile;
  820. }
  821. /**
  822. * 设置文件路径
  823. *
  824. * @param gwComFile 文件实体类
  825. * @param pathStrArr 从模板里获取的路径以:分割之后的数组 ["D","/lyz/test.png"] 或者 ["/lyz/test.png"] 或者 ["/lyz/test"]
  826. * @param pathStr 从模板里获取的路径 /lyz/test.png
  827. * @param gwId 文件id
  828. */
  829. private void setColumnFilePath(GwComFile gwComFile,String[] pathStrArr,String pathStr,String gwId){
  830. // 图片临时路径 /DC/upload/2019/7/20/lyz/图片.jpg 从模板里获取
  831. String pathStrItemSave = getDateFormatPath(this.impExcelBashPath) + File.separator + pathStrArr[pathStrArr.length-1];
  832. // 对从模板里获取的图片路径进行处理
  833. pathStrItemSave = this.checkIsExistImg(gwComFile,pathStrItemSave.replace("\\","/"));
  834. // 图片的后缀
  835. String suffixPath = File.separator + gwId + pathStrItemSave.substring(pathStrItemSave.lastIndexOf("."));
  836. // 图片存储的表里存的路径,入库用 /upload/
  837. String pathStrTableSave = getDateFormatPath(this.imgPathPrefix) + suffixPath;
  838. // 图片存储的真正路径
  839. String pathStrDiskSave = getDateFormatPath(this.imgPath) + suffixPath;
  840. // 判断临时路径处有 没有这张图片,有的话复制到图片文件夹下
  841. File file = new File(pathStrItemSave);
  842. if(file.exists()){
  843. try {
  844. FileUtils.copyFile(file,new File(pathStrDiskSave));
  845. gwComFile.setFilePath(pathStrTableSave);
  846. } catch (IOException e) {
  847. e.printStackTrace();
  848. }
  849. }
  850. }
  851. private String checkIsExistImg(GwComFile gwComFile, String pathStrItemSave) {
  852. // 解析获取的图片路径,判断用户到底上传了这张图片没有
  853. // 1.有后缀名,且大小写正确
  854. // 2.无后缀名
  855. // 3.有后缀名,大小写不正确
  856. try{
  857. // 模板里的图片的名称 test.png | test
  858. String imgName = pathStrItemSave.split("/")[pathStrItemSave.split("/").length-1];
  859. // .png .jpg .jpeg gif
  860. if(imgName.contains(".")){
  861. // test
  862. imgName = imgName.substring(0,imgName.lastIndexOf("."));
  863. }
  864. // D:\lyz
  865. String folderPath = pathStrItemSave.substring(0,pathStrItemSave.lastIndexOf("/"));
  866. File folder = new File(folderPath);
  867. File[] fileList = folder.listFiles();
  868. if(fileList != null){
  869. for(File f : fileList){
  870. String fileName = f.getName();
  871. if(fileName.contains(imgName)){
  872. boolean isExist = false;
  873. String ext1 = fileName.substring(fileName.lastIndexOf(".")+1);
  874. // 如果有后缀名
  875. if(pathStrItemSave.contains(".")){
  876. String ext2 = pathStrItemSave.substring(pathStrItemSave.lastIndexOf(".")+1);
  877. if(ext1.toUpperCase().equals(ext2.toUpperCase())){
  878. isExist = true;
  879. }
  880. }else{
  881. isExist = true;
  882. }
  883. if(isExist){
  884. // D:\lyz\test.png
  885. pathStrItemSave = folderPath + File.separator + fileName;
  886. // test.png
  887. gwComFile.setFileTitle(fileName);
  888. // .png
  889. gwComFile.setFileExt(ext1);
  890. }
  891. }
  892. }
  893. }
  894. }catch (Exception e){
  895. e.printStackTrace();
  896. }
  897. return pathStrItemSave;
  898. }
  899. private boolean setColumn(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,String orgType){
  900. int count = 0;
  901. if(!this.setColumnOfRequired(bisInspPblm,lhp,userId,orgType)){
  902. count ++;
  903. }
  904. if(!this.setColumnOfSpecial(bisInspPblm,lhp,userId,orgType)){
  905. count ++;
  906. }
  907. if(!this.setColumnOfOther(bisInspPblm,lhp,userId,orgType)){
  908. count ++;
  909. }
  910. if(count > 0){
  911. return false;
  912. }else {
  913. return true;
  914. }
  915. }
  916. private boolean setColumnOfRequiredRever(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  917. // 必要字段 1):督查问题ID 。
  918. if(StringUtils.isBlank(bisInspPblm.getPblmId())){
  919. // 如果导进来的不带pblmId,给赋值
  920. bisInspPblm.setPblmId(UuidUtil.uuid());
  921. }
  922. // 必要字段2):名录ID 获取方式 根据1组别,2用户id,3督查类型,4水库编码 确定唯一objId和rgstrId
  923. // 4 水库编码 改成使用名称
  924. // Object rsCode = lhp.get("rsCode");
  925. Object rsCode = lhp.get("rsName");
  926. if(rsCode == null){
  927. return false;
  928. }
  929. // 1 组别
  930. Object groupName = lhp.get("groupName");
  931. if(groupName == null){
  932. return false;
  933. }
  934. String id = this.getGroupIdByName(groupName.toString(),userId,impPblmEnum.getOrgType());
  935. if(StringUtils.isBlank(id)){
  936. return false;
  937. }
  938. // 获取名录ID 和 对应的objId,rgstrId
  939. BisInspRsvrRgstrPcDto pcDto = this.getRsvrRgstrDto(userId, impPblmEnum.getObjType(), rsCode.toString(),id);
  940. if(pcDto == null){
  941. return false;
  942. }
  943. // 设置ObjId,关键性字段
  944. bisInspPblm.setObjId(pcDto.getObjId());
  945. if(bisInspPblm.getObjId() == null){
  946. return false;
  947. }
  948. // 字段 25):REGID 根据类型 来判断 是 1 小水库,2 农饮 3 水毁 4重点工程--登记ID
  949. bisInspPblm.setRegid(pcDto.getRgstrId());
  950. return true;
  951. }
  952. private boolean setColumnOfRequiredWaga(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  953. // 必要字段 1):督查问题ID
  954. if(StringUtils.isBlank(bisInspPblm.getPblmId())){
  955. bisInspPblm.setPblmId(UuidUtil.uuid());
  956. }
  957. // 必要字段2):名录ID 获取方式 根据1组别,2用户id,3督查类型,4水库编码 确定唯一objId和rgstrId
  958. // 4 水闸编码 改用水闸名称
  959. // Object objCode = lhp.get("objCode");
  960. Object objCode = lhp.get("gateName");
  961. if(objCode == null){
  962. return false;
  963. }
  964. // 1 组别
  965. Object groupName = lhp.get("groupName");
  966. if(groupName == null){
  967. return false;
  968. }
  969. String id = this.getGroupIdByName(groupName.toString(),userId,impPblmEnum.getOrgType());
  970. if(StringUtils.isBlank(id)){
  971. return false;
  972. }
  973. // 获取名录ID 和 对应的objId,rgstrId
  974. BisInspWagaRgstrDto pcDto = this.getWagaRgstrDto(userId, impPblmEnum.getObjType(), objCode.toString(),id);
  975. if(pcDto == null){
  976. return false;
  977. }
  978. // 设置ObjId,关键性字段
  979. bisInspPblm.setObjId(pcDto.getObjId());
  980. if(bisInspPblm.getObjId() == null){
  981. return false;
  982. }
  983. // 字段 25):REGID 根据类型 来判断 是 1 小水库,2 农饮 3 水毁 4重点工程--登记ID
  984. bisInspPblm.setRegid(pcDto.getRgstrId());
  985. return true;
  986. }
  987. private boolean setColumnOfRequiredByJs(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  988. // 通过上传模板里的工程名称和单位名称和标段名称来获取对应的obj_id 和 reg_id
  989. ImpPblmKeyReg keyReg = new ImpPblmKeyReg();
  990. keyReg.setGcNm(MapUtils.getString(lhp,"nm"));
  991. keyReg.setDwNm(MapUtils.getString(lhp,"dwNm"));
  992. keyReg.setBdNm(MapUtils.getString(lhp,"bdNm"));
  993. keyReg.setObjType(impPblmEnum.getObjType());
  994. // 先设置一下组id
  995. String groupId = this.getGroupIdByName(MapUtils.getString(lhp,"groupName"),userId,impPblmEnum.getOrgType());
  996. keyReg.setGroupId(groupId);
  997. return this.setColumnOfRequiredByKeyReg(bisInspPblm,keyReg);
  998. }
  999. private boolean setColumnOfRequiredByYx(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  1000. // 通过上传模板里的工程名称和单位名称来获取对应的obj_id 和 reg_id
  1001. ImpPblmKeyReg keyReg = new ImpPblmKeyReg();
  1002. keyReg.setDwNm(MapUtils.getString(lhp,"dwNm"));
  1003. keyReg.setGcNm(MapUtils.getString(lhp,"nm"));
  1004. keyReg.setObjType(impPblmEnum.getObjType());
  1005. // 先设置一下组id
  1006. String groupId = this.getGroupIdByName(MapUtils.getString(lhp,"groupName"),userId,impPblmEnum.getOrgType());
  1007. keyReg.setGroupId(groupId);
  1008. return this.setColumnOfRequiredByKeyReg(bisInspPblm,keyReg);
  1009. }
  1010. private boolean setColumnOfRequiredByKeyReg(BisInspPblm bisInspPblm,ImpPblmKeyReg keyReg){
  1011. // [必要字段] 1):督查问题ID
  1012. if(StringUtils.isBlank(bisInspPblm.getPblmId())){
  1013. bisInspPblm.setPblmId(UuidUtil.uuid());
  1014. }
  1015. // [必要字段] 2)名录ID和 3)登记表ID
  1016. List<ImpPblmKeyReg> keyRegList = impPblmDao.getImpKeyRegList(keyReg);
  1017. if(keyRegList == null || keyRegList.size() != 1){
  1018. return false;
  1019. }else {
  1020. String objId = keyRegList.get(0).getObjId();
  1021. String regId = keyRegList.get(0).getRegId();
  1022. if(StringUtils.isBlank(objId)){
  1023. return false;
  1024. }else {
  1025. bisInspPblm.setObjId(objId);
  1026. }
  1027. if(StringUtils.isBlank(regId)){
  1028. return false;
  1029. }else {
  1030. bisInspPblm.setRegid(regId);
  1031. }
  1032. }
  1033. return true;
  1034. }
  1035. private boolean setColumnOfRequiredBySd(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  1036. // 必要字段 1):督查问题ID 。
  1037. if(StringUtils.isBlank(bisInspPblm.getPblmId())){
  1038. // 如果导进来的不带pblmId,给赋值
  1039. bisInspPblm.setPblmId(UuidUtil.uuid());
  1040. }
  1041. // 必要字段2):名录ID 获取方式 根据1组别,2用户id,3督查类型,4水库编码 确定唯一objId和rgstrId
  1042. String code = MapUtils.getString(lhp,"code");
  1043. if(code == null){
  1044. return false;
  1045. }
  1046. // 1 组别
  1047. String groupName = MapUtils.getString(lhp,"groupName");
  1048. if(groupName == null){
  1049. return false;
  1050. }
  1051. List<BisInspAll> ids = this.getGroupIdByNameList(groupName, userId, impPblmEnum.getOrgType());
  1052. BisInspSdRgstrDto pcDto = null;
  1053. for(BisInspAll bisInspAll : ids){
  1054. BisInspSdRgstrDto pcDtoItem = this.getSdRgstrDto(userId, impPblmEnum.getObjType(), code, bisInspAll.getId());
  1055. if(pcDtoItem != null){
  1056. pcDto = pcDtoItem;
  1057. break;
  1058. }
  1059. }
  1060. // 获取名录ID 和 对应的objId,rgstrId
  1061. if(pcDto == null){
  1062. return false;
  1063. }
  1064. // 设置ObjId,关键性字段
  1065. bisInspPblm.setObjId(pcDto.getObjId());
  1066. if(StringUtils.isBlank(bisInspPblm.getObjId())){
  1067. return false;
  1068. }
  1069. // 字段 25):REGID 根据类型 来判断 是 1 小水库,2 农饮 3 水毁 4重点工程--登记ID
  1070. bisInspPblm.setRegid(pcDto.getId());
  1071. if(StringUtils.isBlank(bisInspPblm.getRegid())){
  1072. return false;
  1073. }
  1074. return true;
  1075. }
  1076. private boolean setColumnOfRequiredBySwhs(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  1077. // 必要字段 1):督查问题ID 。
  1078. if(StringUtils.isBlank(bisInspPblm.getPblmId())){
  1079. // 如果导进来的不带pblmId,给赋值
  1080. bisInspPblm.setPblmId(UuidUtil.uuid());
  1081. }
  1082. // 必要字段2):名录ID 获取方式 根据1组别,2用户id,3督查类型,4水库编码 确定唯一objId和rgstrId
  1083. String code = MapUtils.getString(lhp,"code");
  1084. if(code == null){
  1085. return false;
  1086. }
  1087. // 1 组别
  1088. String groupName = MapUtils.getString(lhp,"groupName");
  1089. if(groupName == null){
  1090. return false;
  1091. }
  1092. List<BisInspAll> ids = this.getGroupIdByNameList(groupName, userId, impPblmEnum.getOrgType());
  1093. // 通用登记表
  1094. BisInspRgstrDto pcDto = null;
  1095. for(BisInspAll bisInspAll : ids){
  1096. BisInspRgstrDto pcDtoItem = this.getRgstrCommon(userId, impPblmEnum.getObjType(), code, bisInspAll.getId());
  1097. if(pcDtoItem != null){
  1098. pcDto = pcDtoItem;
  1099. break;
  1100. }
  1101. }
  1102. // 获取名录ID 和 对应的objId,rgstrId
  1103. if(pcDto == null){
  1104. return false;
  1105. }
  1106. // 设置ObjId,关键性字段
  1107. bisInspPblm.setObjId(pcDto.getObjId());
  1108. if(StringUtils.isBlank(bisInspPblm.getObjId())){
  1109. return false;
  1110. }
  1111. // 字段 25):REGID 根据类型 来判断 是 1 小水库,2 农饮 3 水毁 4重点工程--登记ID
  1112. bisInspPblm.setRegid(pcDto.getId());
  1113. if(StringUtils.isBlank(bisInspPblm.getRegid())){
  1114. return false;
  1115. }
  1116. return true;
  1117. }
  1118. private boolean setColumnOfRequiredByWiu(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  1119. return this.setColumnOfRequiredBySwhs(bisInspPblm,lhp,userId,impPblmEnum);
  1120. }
  1121. private boolean setColumnOfRequiredBySvwt(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  1122. // 必要字段1)督查问题主键ID
  1123. if(StringUtils.isBlank(bisInspPblm.getPblmId())){
  1124. // 如果导进来的不带pblmId,给赋值
  1125. bisInspPblm.setPblmId(UuidUtil.uuid());
  1126. }
  1127. // 必要字段2)3)根据 1组别,2用户id,3督查类型 确定唯一objId和rgstrId
  1128. String nm = MapUtils.getString(lhp,"nm");
  1129. if(StringUtils.isBlank(nm)){
  1130. return false;
  1131. }
  1132. // 组别
  1133. String groupName = MapUtils.getString(lhp,"groupName");
  1134. if(StringUtils.isBlank(groupName)){
  1135. return false;
  1136. }
  1137. List<BisInspAll> groupIds = this.getGroupIdByNameList(groupName, userId, impPblmEnum.getOrgType());
  1138. // 通用登记表
  1139. BisInspRgstrDto pcDto = null;
  1140. // 可能获取到多个组的唯一id
  1141. for(BisInspAll bisInspAll : groupIds){
  1142. BisInspRgstrDto pcDtoItem = this.getRgstrCommon(userId, impPblmEnum.getObjType(), nm, bisInspAll.getId());
  1143. // 获得第一个不为Null的对象
  1144. if(pcDtoItem != null){
  1145. pcDto = pcDtoItem;
  1146. break;
  1147. }
  1148. }
  1149. // 获取对应的objId和rgstrId(regid)
  1150. if(pcDto == null){
  1151. return false;
  1152. }
  1153. // 设置ObjId 关键性字段
  1154. bisInspPblm.setObjId(pcDto.getObjId());
  1155. if(StringUtils.isBlank(bisInspPblm.getObjId())){
  1156. return false;
  1157. }
  1158. // 设置regId 关键性字段
  1159. bisInspPblm.setRegid(pcDto.getId());
  1160. if(StringUtils.isBlank(bisInspPblm.getRegid())){
  1161. return false;
  1162. }
  1163. return true;
  1164. }
  1165. private boolean setColumnOfRequiredByWunt(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,ImpPblmEnum impPblmEnum){
  1166. return this.setColumnOfRequiredBySvwt(bisInspPblm,lhp,userId,impPblmEnum);
  1167. }
  1168. /** 设置必要的字段方法 主要不同之处在于获取objId和regId **/
  1169. private boolean setColumnOfRequired(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,String orgType){
  1170. ImpPblmEnum impPblmEnum = ImpPblmEnum.getEnumByOrgType(orgType);
  1171. if(impPblmEnum == null){
  1172. return false;
  1173. }
  1174. switch (impPblmEnum){
  1175. case IMP_REVER:
  1176. return this.setColumnOfRequiredRever(bisInspPblm, lhp, userId,impPblmEnum);
  1177. case IMP_WAGA:
  1178. return this.setColumnOfRequiredWaga(bisInspPblm, lhp, userId,impPblmEnum);
  1179. case IMP_EMPWT:
  1180. return this.setColumnOfRequiredByJs(bisInspPblm,lhp,userId,impPblmEnum);
  1181. case IMP_EMPWTRUN:
  1182. return this.setColumnOfRequiredByYx(bisInspPblm,lhp,userId,impPblmEnum);
  1183. case IMP_SD:
  1184. return this.setColumnOfRequiredBySd(bisInspPblm,lhp,userId,impPblmEnum);
  1185. case IMP_SWHS:
  1186. return this.setColumnOfRequiredBySwhs(bisInspPblm,lhp,userId,impPblmEnum);
  1187. case IMP_WIU:
  1188. return this.setColumnOfRequiredByWiu(bisInspPblm,lhp,userId,impPblmEnum);
  1189. case IMP_SVWT:
  1190. return this.setColumnOfRequiredBySvwt(bisInspPblm,lhp,userId,impPblmEnum);
  1191. case IMP_WUNT:
  1192. return this.setColumnOfRequiredByWunt(bisInspPblm,lhp,userId,impPblmEnum);
  1193. default:
  1194. return false;
  1195. }
  1196. }
  1197. /** 设置问题标准 ,暂时两种标准 **/
  1198. private boolean setColumnOfSpecial(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,String orgType){
  1199. ImpPblmEnum impPblmEnum = ImpPblmEnum.getEnumByOrgType(orgType);
  1200. if(impPblmEnum == null){
  1201. return false;
  1202. }
  1203. switch (impPblmEnum){
  1204. case IMP_REVER:
  1205. return this.setColumnOfSpecialByObjInsp(bisInspPblm,lhp,userId,orgType);
  1206. case IMP_WAGA:
  1207. return this.setColumnOfSpecialByObjInsp(bisInspPblm,lhp,userId,orgType);
  1208. case IMP_EMPWT:
  1209. return this.setColumnOfSpecialByObjKey(bisInspPblm,lhp,userId,orgType);
  1210. case IMP_EMPWTRUN:
  1211. return this.setColumnOfSpecialByObjKey(bisInspPblm,lhp,userId,orgType);
  1212. case IMP_SD:
  1213. return this.setColumnOfSpecialByObjInsp(bisInspPblm,lhp,userId,orgType);
  1214. case IMP_SWHS:
  1215. return this.setColumnOfSpecialByObjInsp(bisInspPblm,lhp,userId,orgType);
  1216. case IMP_WIU:
  1217. return this.setColumnOfSpecialByObjInsp(bisInspPblm,lhp,userId,orgType);
  1218. case IMP_SVWT:
  1219. return this.setColumnOfSpecialByObjInsp(bisInspPblm,lhp,userId,orgType);
  1220. case IMP_WUNT:
  1221. return this.setColumnOfSpecialByObjInsp(bisInspPblm,lhp,userId,orgType);
  1222. default:
  1223. return false;
  1224. }
  1225. }
  1226. private String getGroupIdByName(String groupName,String userId,String orgType){
  1227. List<BisInspAll> list = impPblmDao.getGroupList(userId, orgType);
  1228. List<BisInspAll> groupNamesList = list.stream().filter(b -> b.getPnm().equals(groupName)).collect(Collectors.toList());
  1229. if(groupNamesList.size() == 1){
  1230. return groupNamesList.get(0).getId();
  1231. }else {
  1232. return "";
  1233. }
  1234. }
  1235. private List<BisInspAll> getGroupIdByNameList(String groupName,String userId,String orgType){
  1236. List<BisInspAll> list = impPblmDao.getGroupList(userId, orgType);
  1237. List<BisInspAll> groupNamesList = list.stream().filter(b -> b.getPnm().equals(groupName)).collect(Collectors.toList());
  1238. // 组名一样,很尴尬,先取第一个
  1239. return groupNamesList;
  1240. }
  1241. /** 在解析时就判断一下数据正确与否 **/
  1242. private List<LinkedHashMap<String,Object>> checkHasObjPblm(List<LinkedHashMap<String,Object>> listParse,String userId,String orgType){
  1243. for(LinkedHashMap<String,Object> lhp : listParse){
  1244. try{
  1245. if(ArrayUtils.contains(checkedOrgTypes,orgType)){
  1246. // 检查一下此种问题标准是否匹配
  1247. List<ObjInspPblms> objPblmsList = this.getObjInspPblmsList(lhp,orgType);
  1248. if(objPblmsList.size() != 1){
  1249. this.setWarnField(lhp);
  1250. }
  1251. }
  1252. // 检查一下组别
  1253. String groupId = this.getGroupIdByName(MapUtils.getString(lhp,"groupName"),userId,orgType);
  1254. if(StringUtils.isBlank(groupId)){
  1255. this.setWarnFieldGroupName(lhp);
  1256. }
  1257. // 工程运行检查一下工程名称和单位名称是否匹配
  1258. if(ImpPblmEnum.getEnumByOrgType(orgType) == IMP_EMPWTRUN){
  1259. ImpPblmKeyReg keyReg = new ImpPblmKeyReg();
  1260. keyReg.setDwNm(MapUtils.getString(lhp,"dwNm"));
  1261. keyReg.setGcNm(MapUtils.getString(lhp,"nm"));
  1262. keyReg.setObjType(orgType.replaceFirst("^0*",""));
  1263. keyReg.setGroupId(groupId);
  1264. List<ImpPblmKeyReg> keyRegList = impPblmDao.getImpKeyRegList(keyReg);
  1265. if(keyRegList == null || keyRegList.size() != 1){
  1266. this.setWarnFieldEmpwt(lhp);
  1267. }
  1268. }
  1269. // 工程建设检查一下工程名称和单位名称和标段名称是匹配
  1270. if(ImpPblmEnum.getEnumByOrgType(orgType) == IMP_EMPWT){
  1271. ImpPblmKeyReg keyReg = new ImpPblmKeyReg();
  1272. keyReg.setBdNm(MapUtils.getString(lhp,"bdNm"));
  1273. keyReg.setDwNm(MapUtils.getString(lhp,"dwNm"));
  1274. keyReg.setGcNm(MapUtils.getString(lhp,"nm"));
  1275. keyReg.setObjType(orgType.replaceFirst("^0*",""));
  1276. keyReg.setGroupId(groupId);
  1277. List<ImpPblmKeyReg> keyRegList = impPblmDao.getImpKeyRegList(keyReg);
  1278. if(keyRegList == null || keyRegList.size() != 1){
  1279. this.setWarnFieldEmpwtRun(lhp);
  1280. }
  1281. }
  1282. }catch (Exception e){
  1283. this.setWarnField(lhp);
  1284. e.printStackTrace();
  1285. }
  1286. }
  1287. return listParse;
  1288. }
  1289. private void setWarnField(LinkedHashMap<String,Object> lhp){
  1290. lhp.put("inspPblmCode",lhp.get("inspPblmCode") + WARN);
  1291. lhp.put("inspPblmCate",lhp.get("inspPblmCate") + WARN);
  1292. lhp.put("attachSheet",lhp.get("attachSheet") + WARN);
  1293. }
  1294. private void setWarnFieldGroupName(LinkedHashMap<String,Object> lhp){
  1295. lhp.put("groupName",lhp.get("groupName") + WARN);
  1296. }
  1297. private void setWarnFieldEmpwt(LinkedHashMap<String,Object> lhp){
  1298. lhp.put("nm",lhp.get("nm") + WARN);
  1299. lhp.put("dwNm",lhp.get("dwNm") + WARN);
  1300. lhp.put("bdNm",lhp.get("bdNm") + WARN);
  1301. }
  1302. private void setWarnFieldEmpwtRun(LinkedHashMap<String,Object> lhp){
  1303. lhp.put("nm",lhp.get("nm") + WARN);
  1304. lhp.put("dwNm",lhp.get("dwNm") + WARN);
  1305. }
  1306. private List<ObjInspPblms> getObjInspPblmsList(LinkedHashMap<String,Object> lhp,String orgType){
  1307. List<ObjInspPblms> objInspPblmsList = new ArrayList<>();
  1308. String dcType = Integer.toString(Integer.parseInt(orgType));
  1309. // 从问题标准库OBJ_INSP_PBLMS 里获取数据
  1310. ObjInspPblmsParam objInspPblmsParam = new ObjInspPblmsParam();
  1311. // 根据 问题序号(SN_NUM),严重程度(INSP_PBLM_CATE),督查类型(TYPE),附件序号(ATTACH),SHEET序号(SHEET)
  1312. // 1.问题序号(SN_NUM)
  1313. String pblmCode = MapUtils.getString(lhp,"inspPblmCode");
  1314. if(StringUtils.isNotBlank(pblmCode) && ImpUtil.checkIsInt(pblmCode)){
  1315. objInspPblmsParam.setSnNum(pblmCode.trim());
  1316. }else {
  1317. return objInspPblmsList;
  1318. }
  1319. // 2.严重程度(INSP_PBLM_CATE)
  1320. String inspPblmCate = MapUtils.getString(lhp,"inspPblmCate");
  1321. if(inspPblmCate != null){
  1322. objInspPblmsParam.setInspPblmCate(inspPblmCate);
  1323. }else {
  1324. return objInspPblmsList;
  1325. }
  1326. // 3.督查类型(TYPE)
  1327. objInspPblmsParam.setType(dcType);
  1328. // 4.附件序号(ATTACH)和 SHEET
  1329. boolean state = this.setAttachSheet(objInspPblmsParam,lhp);
  1330. if(!state){
  1331. return objInspPblmsList;
  1332. }
  1333. // 得到问题标准
  1334. // ObjInspPblms objInspPblms = objInspPblmsDao.getBy(objInspPblmsParam);
  1335. objInspPblmsList = objInspPblmsDao.findList(objInspPblmsParam);
  1336. return objInspPblmsList;
  1337. }
  1338. private KeyRegPblm getKeyRegPblm(LinkedHashMap<String,Object> lhp,String attachType){
  1339. KeyRegPblm keyRegPblm = new KeyRegPblm();
  1340. // 获取严重程度
  1341. String inspPblmCate = MapUtils.getString(lhp,"inspPblmCate");
  1342. if(inspPblmCate == null){
  1343. return keyRegPblm;
  1344. }
  1345. // 问题类别
  1346. String pblmType = MapUtils.getString(lhp,"inspPblmName").trim();
  1347. try{
  1348. // 1.获取 违规行为附件编号,违规行为问题标准序号
  1349. String attachWg = MapUtils.getString(lhp,"attachWg");
  1350. String attachWgSn = MapUtils.getString(lhp,"attachWgSn");
  1351. List<ObjKeyPblms> objKeyPblmsWgList = this.getObjKeyPblmsList(attachWg,attachWgSn,inspPblmCate,attachType,pblmType);
  1352. // if(attachType.equals("水利工程运行")){
  1353. // if(checkIsInt(attachWg)){
  1354. // // 完全一样,只是有一个sheet为null,当它为int的时候,sheet是null?
  1355. // objKeyPblmsWgList = objKeyPblmsWgList.stream().filter(x -> StringUtils.isBlank(x.getSheet())).collect(Collectors.toList());
  1356. // }
  1357. // }
  1358. if(objKeyPblmsWgList.size() == 1){
  1359. keyRegPblm.setPblmsTypeId(objKeyPblmsWgList.get(0).getId());
  1360. keyRegPblm.setInspPblmName(objKeyPblmsWgList.get(0).getInspPblmsName());
  1361. keyRegPblm.setInspPblmType(objKeyPblmsWgList.get(0).getPblmType());
  1362. }
  1363. // 2.获取 合同管理附件编号,合同管理问题标准序号
  1364. String attachHetong = MapUtils.getString(lhp,"attachHetong");
  1365. String attachHetongSn = MapUtils.getString(lhp,"attachHetongSn");
  1366. List<ObjKeyPblms> objKeyPblmsHtList = this.getObjKeyPblmsList(attachHetong,attachHetongSn,inspPblmCate,attachType,pblmType);
  1367. if(objKeyPblmsHtList.size() == 1){
  1368. keyRegPblm.setPblmsId(objKeyPblmsHtList.get(0).getId());
  1369. if(StringUtils.isBlank(keyRegPblm.getInspPblmName())){
  1370. keyRegPblm.setInspPblmName(objKeyPblmsHtList.get(0).getInspPblmsName());
  1371. }
  1372. if(StringUtils.isBlank(keyRegPblm.getInspPblmType())){
  1373. keyRegPblm.setInspPblmType(objKeyPblmsHtList.get(0).getPblmType());
  1374. }
  1375. }
  1376. // 3.获取 质量安全附件编号,质量安全问题标准序号
  1377. String attachQua = MapUtils.getString(lhp,"attachQua");
  1378. String attachQuaSn = MapUtils.getString(lhp,"attachQuaSn");
  1379. List<ObjKeyPblms> objKeyPblmsQuaList = this.getObjKeyPblmsList(attachQua,attachQuaSn,inspPblmCate,attachType,pblmType);
  1380. if(objKeyPblmsQuaList.size() == 1){
  1381. keyRegPblm.setQualityTypeId(objKeyPblmsQuaList.get(0).getId());
  1382. if(StringUtils.isBlank(keyRegPblm.getInspPblmName())){
  1383. keyRegPblm.setInspPblmName(objKeyPblmsQuaList.get(0).getInspPblmsName());
  1384. }
  1385. if(StringUtils.isBlank(keyRegPblm.getInspPblmType())){
  1386. keyRegPblm.setInspPblmType(objKeyPblmsQuaList.get(0).getPblmType());
  1387. }
  1388. }
  1389. // 4.获取 缺陷管理附件编号,缺陷管理问题标准序号
  1390. String attachDe = MapUtils.getString(lhp,"attachDe");
  1391. String attachDeSn = MapUtils.getString(lhp,"attachDeSn");
  1392. List<ObjKeyPblms> objKeyPblmsDeList = this.getObjKeyPblmsList(attachDe,attachDeSn,inspPblmCate,attachType,pblmType);
  1393. if(objKeyPblmsDeList.size() == 1){
  1394. keyRegPblm.setDefectTypeId(objKeyPblmsDeList.get(0).getId());
  1395. if(StringUtils.isBlank(keyRegPblm.getInspPblmName())){
  1396. keyRegPblm.setInspPblmName(objKeyPblmsDeList.get(0).getInspPblmsName());
  1397. }
  1398. if(StringUtils.isBlank(keyRegPblm.getInspPblmType())){
  1399. keyRegPblm.setInspPblmType(objKeyPblmsDeList.get(0).getPblmType());
  1400. }
  1401. }
  1402. }catch (Exception e){
  1403. e.printStackTrace();
  1404. return new KeyRegPblm();
  1405. }
  1406. return keyRegPblm;
  1407. }
  1408. private List<ObjKeyPblms> getObjKeyPblmsList(String attachSheet,String sn,String inspPblmCate,String attachType,String pblmType){
  1409. List<ObjKeyPblms> objKeyPblmsList = new ArrayList<>();
  1410. if(attachSheet == null || sn == null){
  1411. return objKeyPblmsList;
  1412. }
  1413. // 从问题标准库OBJ_KEY_PBLMS 里获取数据
  1414. ObjKeyPblmsParam objKeyPblmsParam = new ObjKeyPblmsParam();
  1415. // 根据 问题序号(SN_NUM),严重程度(INSP_PBLM_CATE) ,附件序号(ATTACH),SHEET序号(SHEET)
  1416. // 1.问题序号(SN_NUM)
  1417. objKeyPblmsParam.setSn(sn.trim());
  1418. // 2.严重程度(INSP_PBLM_CATE)
  1419. objKeyPblmsParam.setInspPblmCate(inspPblmCate);
  1420. // 3.附件序号(ATTACH)和 SHEET
  1421. boolean state = this.setAttachSheetKeyReg(objKeyPblmsParam,attachSheet);
  1422. if(!state){
  1423. return objKeyPblmsList;
  1424. }
  1425. // 4.水利工程类型
  1426. objKeyPblmsParam.setAttachType(attachType);
  1427. // 5.问题类别
  1428. objKeyPblmsParam.setPblmType(pblmType);
  1429. // 得到问题标准
  1430. objKeyPblmsList = objKeyPblmsDao.findList(objKeyPblmsParam);
  1431. return objKeyPblmsList;
  1432. }
  1433. private boolean setAttachSheetKeyReg(ObjKeyPblmsParam objKeyPblmsParam,String attachSheet){
  1434. if(attachSheet == null){
  1435. return false;
  1436. }else {
  1437. if(attachSheet.contains("-")){
  1438. String[] attachSheetArr = attachSheet.split("-");
  1439. if(attachSheetArr.length == 2){
  1440. objKeyPblmsParam.setAttach(attachSheetArr[0].trim());
  1441. objKeyPblmsParam.setSheet(attachSheetArr[1].trim());
  1442. }else {
  1443. return false;
  1444. }
  1445. }else {
  1446. if(ImpUtil.checkIsInt(attachSheet) && attachSheet.length() == 1){
  1447. objKeyPblmsParam.setAttach(attachSheet);
  1448. }else {
  1449. return false;
  1450. }
  1451. }
  1452. return true;
  1453. }
  1454. }
  1455. private boolean setAttachSheet(ObjInspPblmsParam objInspPblmsParam,LinkedHashMap<String,Object> lhp){
  1456. Object attachSheet = lhp.get("attachSheet");
  1457. if(attachSheet == null){
  1458. return false;
  1459. }else {
  1460. String attachSheetStr = attachSheet.toString();
  1461. if(attachSheetStr.contains("-")){
  1462. String[] attachSheetArr = attachSheetStr.split("-");
  1463. if(attachSheetArr.length == 2){
  1464. objInspPblmsParam.setAttach(attachSheetArr[0].trim());
  1465. objInspPblmsParam.setSheet(attachSheetArr[1].trim());
  1466. }else {
  1467. return false;
  1468. }
  1469. }else {
  1470. if(ImpUtil.checkIsInt(attachSheetStr) && attachSheetStr.length() == 1){
  1471. objInspPblmsParam.setAttach(attachSheetStr);
  1472. // sheet 1
  1473. objInspPblmsParam.setSheet("1");
  1474. }else {
  1475. return false;
  1476. }
  1477. }
  1478. return true;
  1479. }
  1480. }
  1481. private boolean setColumnOfSpecialByObjInsp(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,String orgType){
  1482. // 得到问题标准List
  1483. List<ObjInspPblms> objInspPblmsList = this.getObjInspPblmsList(lhp,orgType);
  1484. // 获取问题标准
  1485. ObjInspPblms objInspPblms;
  1486. if(objInspPblmsList.size() == 1){
  1487. objInspPblms = objInspPblmsList.get(0);
  1488. if(objInspPblms == null){
  1489. return false;
  1490. }
  1491. }else{
  1492. return false;
  1493. }
  1494. // 字段 6):INSP_PBLM_TYPE 督查问题类型 -> 从 objInspPblms 里获取
  1495. bisInspPblm.setInspPblmType(objInspPblms.getSort2());
  1496. // 字段 7):INSP_PBLM_CODE 督查问题编码 -> 从 objInspPblms 里获取
  1497. bisInspPblm.setInspPblmCode(objInspPblms.getSnNum());
  1498. // 字段 8):INSP_PBLM_NAME 督查问题名称 -> 从 objInspPblms 里获取
  1499. bisInspPblm.setInspPblmName(objInspPblms.getInspPblmsName());
  1500. // 字段30):PBLMS_TYPE_ID 标准库唯一问题id,可用于存放172(违规行为)
  1501. bisInspPblm.setPblmsTypeId(objInspPblms.getGuid());
  1502. return true;
  1503. }
  1504. private boolean setColumnOfSpecialByObjKey(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,String orgType){
  1505. // 得到问题标准List
  1506. String attachType = "";
  1507. if("004".equals(orgType)){
  1508. attachType = "水利工程建设";
  1509. }else if("007".equals(orgType)){
  1510. attachType = "水利工程运行";
  1511. }
  1512. KeyRegPblm keyRegPblm = this.getKeyRegPblm(lhp,attachType);
  1513. // 获取问题标准
  1514. // 字段 6):INSP_PBLM_TYPE 督查问题类型 -> 从 keyRegPblm 里获取
  1515. bisInspPblm.setInspPblmType(keyRegPblm.getInspPblmType());
  1516. // 字段 8):INSP_PBLM_NAME 督查问题名称 -> 从 keyRegPblm 里获取 事实上这里也取类型
  1517. bisInspPblm.setInspPblmName(keyRegPblm.getInspPblmType());
  1518. // 字段30):PBLMS_TYPE_ID 标准库唯一问题id,可用于存放172(违规行为)
  1519. bisInspPblm.setPblmsTypeId(keyRegPblm.getPblmsTypeId());
  1520. bisInspPblm.setPblmsId(keyRegPblm.getPblmsId());
  1521. bisInspPblm.setQualityTypeId(keyRegPblm.getQualityTypeId());
  1522. bisInspPblm.setDefectTypeId(keyRegPblm.getDefectTypeId());
  1523. String problemType = "";
  1524. if(StringUtils.isNotBlank(keyRegPblm.getPblmsTypeId())){
  1525. problemType = "0";
  1526. }else if(StringUtils.isNotBlank(keyRegPblm.getPblmsId())){
  1527. problemType = "2";
  1528. }else if(StringUtils.isNotBlank(keyRegPblm.getQualityTypeId())){
  1529. problemType = "1";
  1530. }else if(StringUtils.isNotBlank(keyRegPblm.getDefectTypeId())){
  1531. problemType = "3";
  1532. }
  1533. // 字段35):PROBLEM_TYPE 问题类别(0违规,1质量,2合同,3工程缺陷) -
  1534. bisInspPblm.setProblemType(problemType);
  1535. return true;
  1536. }
  1537. private boolean setColumnOfOther(BisInspPblm bisInspPblm,LinkedHashMap<String,Object> lhp,String userId,String orgType){
  1538. ImpPblmEnum impPblmEnum = ImpPblmEnum.getEnumByOrgType(orgType);
  1539. // 字段 4):INSP_GROUP_ID 督查组ID - (无值项)
  1540. // 字段 5):PGUID 复查原问题PGUID - (无值项)
  1541. // 字段 9):INSP_PBLM_DESC 督查问题描述 = 详细描述 -> 从Excel解析而来
  1542. // 字段10):INSP_ADD_DESC 督查问题地址描述精确度县乡街道 - (无值项)
  1543. // 字段11):PBLM_LONG 问题经度 - (无值项)
  1544. // 字段12):PBLM_LAT 问题纬度 - (无值项)
  1545. // 字段13):IF_CASE_PBLM 是否典型问题,0否,1是 -> 从Excel解析而来
  1546. // 字段14):INSP_PBLM_ORG_NAME 问题责任单位 - (无值项)
  1547. // 字段15):PBLM_PERS_NAME 问题责任人 - (无值项)
  1548. // 字段16):INSP_PBLM_CATE 督查问题严重程度:0一般,1较重,2严重;3:特别严重 -> 从Excel解析而来
  1549. // 字段17):PBLM_STAT 问题状态
  1550. bisInspPblm.setPblmStat("1");
  1551. // 字段18):REVI_OPIN 复查意见 - (无值项)
  1552. // 字段19):REVI_CONC 复查状态2已复查,1未复查,0新问题 -
  1553. // 字段20):REVI_ORG_GUID 复核单位GUID -
  1554. // 字段21):DATA_STAT 数据状态0:暂存;1:已提交;2:已上报;3:退回;4:审核;5:审办;6:整改通知;7:整改反馈;8:销号;9:删除
  1555. // 字段22):COLL_TIME 采集时间
  1556. // 上报时间,填的话按填写的,不填的话,当前
  1557. // bisInspPblm.setCollTime(new Date());
  1558. try{
  1559. bisInspPblm.setCollTime((Date)lhp.get("collTime"));
  1560. }catch (Exception e){
  1561. bisInspPblm.setCollTime(new Date());
  1562. }
  1563. // 字段23):REC_PERS 操作记录人员
  1564. // 上报人,如果填写按填写的人,不填,按当前用户
  1565. bisInspPblm.setRecPers(this.getRecPers(lhp,userId));
  1566. // 字段24):NOTE 备注
  1567. // 字段26):COMMON_FILE_IDS 上传文件id,多个问题用','分隔
  1568. bisInspPblm.setCommonFileIds("-1");
  1569. // 字段27):FILE_NO 问题附件 -
  1570. // 字段28):FILE_NO_NUMBER 问题序号 -
  1571. // 字段29):PBLMS_ID 非172问题标准父节点id,172工程(合同问题)标准库id
  1572. // 字段32):CWS_CODE 工程code -
  1573. // 字段33):VILLAGE_CODE 村code -
  1574. // 字段34):HAS_VEDIO 是否有多媒体 根据path是否为空来判断
  1575. // 设置是否有多媒体 1无 0有
  1576. Object path = lhp.get("path");
  1577. if(path != null && StringUtils.isNotBlank(path.toString())){
  1578. bisInspPblm.setHasVedio("1");
  1579. }else {
  1580. bisInspPblm.setHasVedio("0");
  1581. }
  1582. // 字段35):PROBLEM_TYPE 问题类别(0违规,1质量,2合同,3工程缺陷) -
  1583. // 字段36):QUALITY_TYPE_ID 172质量缺陷标准id -
  1584. // 字段37):DEFECT_TYPE_ID 172工程缺陷标准id -
  1585. // 字段38):FDBK_ID 172问题最新反馈id -
  1586. // 字段39):ITEM_ID 对应规则id -
  1587. // 字段40):WATER_USER_ID 用水户id
  1588. // 字段41):QUOTE 是否引用 1是 0否
  1589. bisInspPblm.setQuote("0");
  1590. // 字段19):REVI_CONC 复查状态2已复查,1未复查,0新问题 -
  1591. bisInspPblm.setReviConc("0");
  1592. // 字段21):DATA_STAT 数据状态0:暂存;1:已提交;2:已上报;3:退回;4:审核;5:审办;6:整改通知;7:整改反馈;8:销号;9:删除;
  1593. bisInspPblm.setDataStat("1");
  1594. // 和督查类型相关的几个字段
  1595. // 必要字段 3):督查对象类型1小水库,2人饮工程,3水毁工程,4 172工程建设,5水文司地下水,6水闸,7 172工程运行
  1596. bisInspPblm.setObjType(impPblmEnum.getObjType());
  1597. // 字段31):VILL_TYPE 问题类型,0小水库,1行政村,2饮水工程,3水源地,4水毁,5地下水,6人饮(落实情况),7水闸,8水利工程建设,9水利工程运行
  1598. bisInspPblm.setVillType(impPblmEnum.getVillType());
  1599. return true;
  1600. }
  1601. private String getRecPers(LinkedHashMap<String,Object> lhp,String userId){
  1602. try {
  1603. String persName = MapUtils.getString(lhp,"persName");
  1604. if(StringUtils.isBlank(persName)){
  1605. return userId;
  1606. }
  1607. // 查找有无此用户
  1608. UserListByCurUserParam userParam = new UserListByCurUserParam();
  1609. userParam.setCurUserId(userId);
  1610. userParam.setPersName(persName);
  1611. userParam.setPageNum(1);
  1612. userParam.setPageSize(20);
  1613. PageInfo<PersListDto> list = bisInspAllRlationPersService.listByCurUser(userParam);
  1614. if(list != null){
  1615. List<PersListDto> persListDtos = list.getList();
  1616. if(persListDtos != null && persListDtos.size() > 0){
  1617. return persListDtos.get(0).getGuid();
  1618. }
  1619. }
  1620. } catch (Exception e) {
  1621. e.printStackTrace();
  1622. }
  1623. return userId;
  1624. }
  1625. private BisInspRsvrRgstrPcDto getRsvrRgstrDto(String userId,String pType,String code,String id){
  1626. if(StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(pType)
  1627. && StringUtils.isNotBlank(id) && StringUtils.isNotBlank(code)){
  1628. TypeParam typeParam = new TypeParam();
  1629. typeParam.setPresId(userId);
  1630. typeParam.setpType(pType);
  1631. typeParam.setId(id);
  1632. // typeParam.setCode(code);
  1633. typeParam.setRsName(code);
  1634. List<BisInspRsvrRgstrPcDto> list = bisInspRsvrRgstrDao.findPcPage(typeParam);
  1635. if(list.size() == 1){
  1636. return list.get(0);
  1637. }
  1638. }
  1639. return null;
  1640. }
  1641. private BisInspWagaRgstrDto getWagaRgstrDto(String userId,String pType,String code,String id){
  1642. if(StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(pType)
  1643. && StringUtils.isNotBlank(id) && StringUtils.isNotBlank(code)){
  1644. TypeParam typeParam = new TypeParam();
  1645. typeParam.setPresId(userId);
  1646. typeParam.setpType(pType);
  1647. typeParam.setPlnaId(id);
  1648. // typeParam.setCode(code);
  1649. typeParam.setRsName(code);
  1650. List<BisInspWagaRgstrDto> list = attWagaRgstrDao.findWagaPage(typeParam);
  1651. if(list.size() == 1){
  1652. return list.get(0);
  1653. }
  1654. }
  1655. return null;
  1656. }
  1657. private BisInspSdRgstrDto getSdRgstrDto(String userId,String pType,String code,String id){
  1658. if(StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(pType)
  1659. && StringUtils.isNotBlank(id) && StringUtils.isNotBlank(code)){
  1660. TypeParam typeParam = new TypeParam();
  1661. typeParam.setPresId(userId);
  1662. typeParam.setpType(pType);
  1663. typeParam.setId(id);
  1664. typeParam.setCode(code);
  1665. List<BisInspSdRgstrDto> list = bisInspSdRgstrDao.findSdPage(typeParam);
  1666. if(list.size() == 1){
  1667. return list.get(0);
  1668. }
  1669. }
  1670. return null;
  1671. }
  1672. private BisInspRgstrDto getRgstrCommon(String userId,String pType,String code,String id){
  1673. ImpPblmEnum impPblmEnum = ImpPblmEnum.getEnumByObjType(pType);
  1674. if(impPblmEnum == null){
  1675. return null;
  1676. }
  1677. switch (impPblmEnum){
  1678. case IMP_SWHS:
  1679. return this.getSwhsRgstr(userId,pType,code,id);
  1680. case IMP_WIU:
  1681. return this.getWiuRgstr(userId, pType, code, id);
  1682. case IMP_SVWT:
  1683. return this.getSvwtRgstr(userId, pType, code, id);
  1684. case IMP_WUNT:
  1685. return this.getWuntRgstr(userId, pType, code, id);
  1686. default:
  1687. return null;
  1688. }
  1689. }
  1690. private BisInspRgstrDto getSwhsRgstr(String userId,String pType,String code,String id){
  1691. if(StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(pType)
  1692. && StringUtils.isNotBlank(id) && StringUtils.isNotBlank(code)){
  1693. TypeParam typeParam = new TypeParam();
  1694. typeParam.setPresId(userId);
  1695. typeParam.setpType(pType);
  1696. typeParam.setId(id);
  1697. typeParam.setCode(code);
  1698. List<BisInspRgstrDto> list = bisInspSwhsRgstrDao.findSwhsPage(typeParam);
  1699. if(list.size() == 1){
  1700. return list.get(0);
  1701. }
  1702. }
  1703. return null;
  1704. }
  1705. private BisInspRgstrDto getWiuRgstr(String userId,String pType,String code,String id){
  1706. if(StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(pType)
  1707. && StringUtils.isNotBlank(id) && StringUtils.isNotBlank(code)){
  1708. TypeParam typeParam = new TypeParam();
  1709. typeParam.setPresId(userId);
  1710. typeParam.setpType(pType);
  1711. typeParam.setId(id);
  1712. typeParam.setCode(code);
  1713. List<BisInspRgstrDto> list = bisInspWiuRgstrDao.findWiuList(typeParam);
  1714. if(list.size() == 1){
  1715. return list.get(0);
  1716. }
  1717. }
  1718. return null;
  1719. }
  1720. private BisInspRgstrDto getSvwtRgstr(String userId,String pType,String nm,String id){
  1721. if(StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(pType)
  1722. && StringUtils.isNotBlank(id) && StringUtils.isNotBlank(nm)){
  1723. TypeParam typeParam = new TypeParam();
  1724. typeParam.setPresId(userId);
  1725. typeParam.setpType(pType);
  1726. typeParam.setId(id);
  1727. typeParam.setRsName(nm);
  1728. List<BisInspRgstrDto> list = null;
  1729. if(ImpPblmEnum.getEnumByObjType(pType) == IMP_SVWT){
  1730. list = bisInspSvwtAreaRgstrDao.findSvwtAreaList(typeParam);
  1731. }
  1732. if(ImpPblmEnum.getEnumByObjType(pType) == IMP_WUNT){
  1733. list = bisInspSvwtWuntRgstrDao.findSvwtWuntList(typeParam);
  1734. }
  1735. if(list != null && list.size() == 1){
  1736. return list.get(0);
  1737. }
  1738. }
  1739. return null;
  1740. }
  1741. private BisInspRgstrDto getWuntRgstr(String userId,String pType,String nm,String id){
  1742. return this.getSvwtRgstr(userId,pType,nm,id);
  1743. }
  1744. /**
  1745. * 只入库一次,只取一次,取完及时删除
  1746. */
  1747. private List<LinkedHashMap<String,Object>> getParseDataByRedis(String cacheId){
  1748. // 取出
  1749. List<LinkedHashMap<String,Object>> listParse = redisTemplate.opsForList().range(cacheId, 0, -1);
  1750. // 删除
  1751. redisTemplate.delete(cacheId);
  1752. return listParse;
  1753. }
  1754. private String uploadFileExcel(MultipartFile file){
  1755. String excleName = UuidUtil.uuid();
  1756. // 获取到Excel的存放路径
  1757. String parentPath = getDateFormatPath(this.impExcelBashPath);
  1758. // 把文件流写入到此位置
  1759. boolean success = gwComFileService.writeFile(excleName, ImpUtil.XLS, file, parentPath);
  1760. if(success){
  1761. return parentPath + File.separator + excleName + ".xls";
  1762. }else {
  1763. return "";
  1764. }
  1765. }
  1766. private String uploadFileExcelCommon(MultipartFile file){
  1767. // 临时路径
  1768. String parentPath = getDateFormatPath(this.impExcelBashPath);
  1769. String filePath = "";
  1770. try{
  1771. filePath = ExpAndImpUtil.upload(file,parentPath);
  1772. }catch (Exception e){
  1773. e.printStackTrace();
  1774. }
  1775. return filePath;
  1776. }
  1777. private String uploadFileZip(MultipartFile file){
  1778. String zipName = UuidUtil.uuid();
  1779. // 先存放到一个临时路径,再剪切或复制到图片路径下
  1780. String parentPath = getDateFormatPath(this.impExcelBashPath);
  1781. // 把文件流写入到此位置
  1782. boolean success = gwComFileService.writeFile(zipName, ImpUtil.ZIP, file, parentPath);
  1783. String filePath = "";
  1784. if(success){
  1785. // 解压
  1786. try {
  1787. filePath = parentPath + File.separator + zipName + "." + ImpUtil.ZIP;
  1788. //解压到此文件夹
  1789. ZipUtil.unzip(new File(filePath), parentPath);
  1790. }catch (Exception e){
  1791. filePath = "";
  1792. e.printStackTrace();
  1793. }
  1794. }
  1795. return filePath;
  1796. }
  1797. private String uploadFileZipCommon(MultipartFile file){
  1798. // 先存放到一个临时路径,再剪切或复制到图片路径下
  1799. String parentPath = getDateFormatPath(this.impExcelBashPath);
  1800. String filePath = "";
  1801. try{
  1802. filePath = ExpAndImpUtil.uploadFileZipCommon(file,parentPath);
  1803. }catch (Exception e){
  1804. e.printStackTrace();
  1805. }
  1806. return filePath;
  1807. }
  1808. }