FleetCompanyMsgServiceImpl.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. package com.ruoyi.basicData.service.impl;
  2. import com.ruoyi.basicData.domain.FleetCompanyMsg;
  3. import com.ruoyi.basicData.domain.TCorps;
  4. import com.ruoyi.basicData.mapper.FleetCompanyMsgMapper;
  5. import com.ruoyi.basicData.mapper.TCorpsMapper;
  6. import com.ruoyi.basicData.service.IFleetCompanyMsgService;
  7. import com.ruoyi.common.constant.UserConstants;
  8. import com.ruoyi.common.core.domain.AjaxResult;
  9. import com.ruoyi.common.core.domain.entity.SysRole;
  10. import com.ruoyi.common.core.domain.entity.SysUser;
  11. import com.ruoyi.common.utils.SecurityUtils;
  12. import com.ruoyi.common.utils.StringUtils;
  13. import com.ruoyi.orderPlan.domain.Ftmsorderbillsplans;
  14. import com.ruoyi.orderPlan.mapper.FtmsorderbillsplansMapper;
  15. import com.ruoyi.system.domain.SysUserRole;
  16. import com.ruoyi.system.mapper.SysRoleMapper;
  17. import com.ruoyi.system.mapper.SysUserMapper;
  18. import com.ruoyi.system.mapper.SysUserRoleMapper;
  19. import com.ruoyi.system.service.ISysDictDataService;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  22. import org.apache.poi.ss.usermodel.*;
  23. import org.apache.poi.ss.util.CellReference;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  28. import org.springframework.web.multipart.MultipartFile;
  29. import java.io.IOException;
  30. import java.io.InputStream;
  31. import java.util.*;
  32. import static com.ruoyi.common.utils.poi.Excel.filter;
  33. /**
  34. * 【车队】Service业务层处理
  35. *
  36. * @author ruoyi
  37. * @date 2021-03-04
  38. */
  39. @Slf4j
  40. @Service
  41. public class FleetCompanyMsgServiceImpl implements IFleetCompanyMsgService {
  42. @Autowired
  43. private TCorpsMapper tCorpsMapper;
  44. @Autowired
  45. private SysUserMapper sysUserMapper;
  46. @Autowired
  47. private SysRoleMapper sysRoleMapper;
  48. @Autowired
  49. private SysUserRoleMapper sysUserRoleMapper;
  50. @Autowired
  51. private ISysDictDataService sysDictDataService;
  52. @Autowired
  53. private FleetCompanyMsgMapper fleetCompanyMsgMapper;
  54. @Autowired
  55. private FtmsorderbillsplansMapper ftmsorderbillsplansMapper;
  56. /**
  57. * 查询【车队】
  58. *
  59. * @param id 【车队】ID
  60. * @return 【车队】
  61. */
  62. @Override
  63. public TCorps selectFleetCompanyMsgById(Long id) {
  64. return tCorpsMapper.selectTCorpsById(id);
  65. }
  66. /**
  67. * 查询【车队】列表
  68. *
  69. * @param fleetCompanyMsg 【车队】
  70. * @return 【车队】
  71. */
  72. @Override
  73. public List<FleetCompanyMsg> selectFleetCompanyMsgList(FleetCompanyMsg fleetCompanyMsg) {
  74. return fleetCompanyMsgMapper.selectFleetCompanyMsgList(fleetCompanyMsg);
  75. }
  76. @Override
  77. public List<Map<String, Object>> selectFleetCompanyMsgListMap(FleetCompanyMsg fleetCompanyMsg) {
  78. return fleetCompanyMsgMapper.selectFleetCompanyMsgListMap(fleetCompanyMsg);
  79. }
  80. /**
  81. * 新增【车队】
  82. *
  83. * @param tCorps 【车队】
  84. * @return 结果
  85. */
  86. @Override
  87. @Transactional
  88. public AjaxResult insertFleetCompanyMsg(TCorps tCorps) {
  89. String typeValue = "[\"100\"]";
  90. tCorps.setfTypeid(typeValue);
  91. tCorps.setfTypename("车队");
  92. tCorps.setfStatus("0");
  93. if (StringUtils.isNotNull(tCorps.getfId())) {
  94. tCorps.setUpdateBy(SecurityUtils.getUsername());
  95. tCorps.setUpdateTime(new Date());
  96. tCorpsMapper.updateTCorps(tCorps);
  97. // 更新用户信息
  98. SysUser sysUser = sysUserMapper.selectUserByUserName(tCorps.getLoginAccount());
  99. if (StringUtils.isNull(sysUser)) {
  100. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  101. return AjaxResult.error("未找到用户信息,请添加后再提交");
  102. }
  103. sysUser.setUserSystem("2");
  104. sysUser.setUpdateTime(new Date());
  105. sysUser.setPhonenumber(tCorps.getfTel());
  106. sysUser.setUpdateBy(SecurityUtils.getUsername());
  107. sysUser.setPassword(SecurityUtils.encryptPassword(tCorps.getfTel()));
  108. sysUserMapper.updateUser(sysUser);
  109. return AjaxResult.success();
  110. } else {
  111. tCorps.setCreateTime(new Date());
  112. tCorps.setCreateBy(SecurityUtils.getUsername());
  113. tCorpsMapper.insertTCorps(tCorps);
  114. AjaxResult ajaxResult = createUser(tCorps);
  115. String code = ajaxResult.get("code").toString();
  116. if ("500".equals(code)) {
  117. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  118. return ajaxResult;
  119. }
  120. return AjaxResult.success();
  121. }
  122. }
  123. @Transactional
  124. public AjaxResult createUser(TCorps tCorps) {
  125. // 创建用户
  126. SysUser user = new SysUser();
  127. user.setUserType("00");
  128. user.setUserSystem("2");
  129. user.setCreateTime(new Date());
  130. user.setNickName(tCorps.getfTel());
  131. user.setPhonenumber(tCorps.getfTel());
  132. user.setUserName(tCorps.getLoginAccount());
  133. user.setCreateBy(SecurityUtils.getUsername());
  134. user.setPassword(SecurityUtils.encryptPassword(tCorps.getfTel()));
  135. sysUserMapper.insertUser(user);
  136. // 查询是否存在车队 角色
  137. SysRole role = sysRoleMapper.selectRoleByName("车队");
  138. if (StringUtils.isNull(role)) {
  139. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  140. return AjaxResult.error("未找到司机角色,请添加角色后再提交");
  141. }
  142. // 创建用户与角色关联
  143. List<SysUserRole> list = new ArrayList<SysUserRole>();
  144. SysUserRole sysUserRole = new SysUserRole();
  145. sysUserRole.setRoleId(role.getRoleId());
  146. sysUserRole.setUserId(user.getUserId());
  147. list.add(sysUserRole);
  148. sysUserRoleMapper.batchUserRole(list);
  149. return AjaxResult.success();
  150. }
  151. /**
  152. * 修改【车队】
  153. *
  154. * @param fleetCompanyMsg 【车队】
  155. * @return 结果
  156. */
  157. @Override
  158. public int updateFleetCompanyMsg(FleetCompanyMsg fleetCompanyMsg) {
  159. fleetCompanyMsg.setUpdateTime(new Date());
  160. return fleetCompanyMsgMapper.updateFleetCompanyMsg(fleetCompanyMsg);
  161. }
  162. /**
  163. * 批量删除【车队】
  164. *
  165. * @param ids 需要删除的【车队】ID
  166. * @return 结果
  167. */
  168. @Override
  169. @Transactional
  170. public AjaxResult deleteFleetCompanyMsgByIds(Long[] ids) {
  171. int i = 1;
  172. for(Long id:ids){
  173. TCorps corps = tCorpsMapper.selectTCorpsById(id);
  174. Ftmsorderbillsplans ftmsorderbillsplans =new Ftmsorderbillsplans();
  175. ftmsorderbillsplans.setCarcorPid(id);
  176. if(ftmsorderbillsplansMapper.selectftmsorderbillsplansCountList(ftmsorderbillsplans) > 0){
  177. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  178. return AjaxResult.error("客户第" + i + "行调度安排已被使用不可删除");
  179. }
  180. tCorpsMapper.deleteTCorpsById(id);
  181. SysUser sysUser = sysUserMapper.selectUserByUserName(corps.getLoginAccount());
  182. sysUserMapper.deleteUserById(sysUser.getUserId());
  183. sysUserRoleMapper.deleteUserRoleByUserId(sysUser.getUserId());
  184. i++;
  185. }
  186. return AjaxResult.success();
  187. }
  188. /**
  189. * 删除【车队】信息
  190. *
  191. * @param id 【车队】ID
  192. * @return 结果
  193. */
  194. @Override
  195. public int deleteFleetCompanyMsgById(Long id) {
  196. TCorps corps = tCorpsMapper.selectTCorpsById(id);
  197. SysUser sysUser = sysUserMapper.selectUserByUserName(corps.getfTel());
  198. sysUserMapper.deleteUserById(sysUser.getUserId());
  199. sysUserRoleMapper.deleteUserRoleByUserId(sysUser.getUserId());
  200. return tCorpsMapper.deleteTCorpsById(id);
  201. }
  202. @Override
  203. public String checkUFNoUnique(FleetCompanyMsg fleetCompanyMsg) {
  204. FleetCompanyMsg fleetCompanyMsg1 = fleetCompanyMsgMapper.checkFNoUnique(fleetCompanyMsg.getCompanyName());
  205. if (StringUtils.isNotNull(fleetCompanyMsg1) && fleetCompanyMsg1.getId() != fleetCompanyMsg.getId()) {
  206. return UserConstants.NOT_UNIQUE;
  207. }
  208. return UserConstants.UNIQUE;
  209. }
  210. /**
  211. * 下拉框查询【车队】id、name列表
  212. *
  213. * @param fleetCompanyMsg 条件
  214. * @return 结果
  215. */
  216. @Override
  217. public List<FleetCompanyMsg> selectFleetCompanyMsgIdNameList(FleetCompanyMsg fleetCompanyMsg) {
  218. return fleetCompanyMsgMapper.selectFleetCompanyMsgIdNameList(fleetCompanyMsg);
  219. }
  220. @Override
  221. public AjaxResult importCreateCompanyMsg(MultipartFile file) {
  222. List<FleetCompanyMsg> fleetCompanyMsgs = new ArrayList<>();
  223. InputStream inputStream = null;
  224. try {
  225. inputStream = file.getInputStream();
  226. Workbook workbook = WorkbookFactory.create(inputStream);
  227. Sheet sheet = workbook.getSheetAt(0);
  228. int line = 0;
  229. for (Row rows : sheet) {
  230. line++;
  231. if (rows.getRowNum() == 0) {
  232. continue;
  233. }
  234. FleetCompanyMsg companyMsg = new FleetCompanyMsg();
  235. for (int a = 0; a < rows.getPhysicalNumberOfCells(); a++) {
  236. Cell cell = rows.getCell(a);
  237. String value = filter(sheet.getRow(0), CellReference.convertNumToColString(cell.getColumnIndex()));
  238. switch (value) {
  239. case "*公司名称":
  240. //设置单元格类型
  241. cell.setCellType(CellType.STRING);
  242. if (StringUtils.isEmpty(cell.getStringCellValue())) {
  243. return AjaxResult.error("Excel车队数据第" + line + "行数据缺少公司名称");
  244. }
  245. companyMsg.setCompanyName(cell.getStringCellValue());
  246. break;
  247. case "*公司地址":
  248. //设置单元格类型
  249. cell.setCellType(CellType.STRING);
  250. if (StringUtils.isEmpty(cell.getStringCellValue())) {
  251. return AjaxResult.error("Excel车队数据第" + line + "行数据缺少公司地址");
  252. }
  253. companyMsg.setCompanyAddress(cell.getStringCellValue());
  254. break;
  255. case "*公司开户账行":
  256. //设置单元格类型
  257. cell.setCellType(CellType.STRING);
  258. if (StringUtils.isEmpty(cell.getStringCellValue())) {
  259. return AjaxResult.error("Excel车队数据第" + line + "行数据缺少公司开户账行");
  260. }
  261. companyMsg.setOpeningBank(cell.getStringCellValue());
  262. break;
  263. case "*银行账号":
  264. //设置单元格类型
  265. cell.setCellType(CellType.STRING);
  266. if (StringUtils.isEmpty(cell.getStringCellValue())) {
  267. return AjaxResult.error("Excel车队数据第" + line + "行数据缺少银行账号");
  268. }
  269. companyMsg.setBankAccount(cell.getStringCellValue());
  270. break;
  271. case "登录账号":
  272. //设置单元格类型
  273. cell.setCellType(CellType.STRING);
  274. if (StringUtils.isEmpty(cell.getStringCellValue())) {
  275. return AjaxResult.error("Excel车队数据第" + line + "行数据缺少登录账号");
  276. }
  277. companyMsg.setLoginAccount(cell.getStringCellValue());
  278. break;
  279. case "信用等级":
  280. //设置单元格类型
  281. cell.setCellType(CellType.STRING);
  282. companyMsg.setCreditLv(cell.getStringCellValue());
  283. break;
  284. case "账期天数":
  285. //设置单元格类型
  286. cell.setCellType(CellType.NUMERIC);
  287. companyMsg.setPaymentDays(new Double(cell.getNumericCellValue()).longValue());
  288. break;
  289. case "联系人":
  290. //设置单元格类型
  291. cell.setCellType(CellType.STRING);
  292. companyMsg.setLinkMan(cell.getStringCellValue());
  293. break;
  294. case "电话":
  295. //设置单元格类型
  296. cell.setCellType(CellType.STRING);
  297. companyMsg.setLinkPhone(cell.getStringCellValue());
  298. break;
  299. case "传真":
  300. //设置单元格类型
  301. cell.setCellType(CellType.STRING);
  302. companyMsg.setFax(cell.getStringCellValue());
  303. break;
  304. case "email":
  305. //设置单元格类型
  306. cell.setCellType(CellType.STRING);
  307. companyMsg.setEmail(cell.getStringCellValue());
  308. break;
  309. case "总公司":
  310. //设置单元格类型
  311. cell.setCellType(CellType.STRING);
  312. companyMsg.setHeadOffice(cell.getStringCellValue());
  313. break;
  314. case "注册资本":
  315. //设置单元格类型
  316. cell.setCellType(CellType.STRING);
  317. companyMsg.setRegisterdCapital(cell.getStringCellValue());
  318. break;
  319. case "法人":
  320. //设置单元格类型
  321. cell.setCellType(CellType.STRING);
  322. companyMsg.setLegalPerson(cell.getStringCellValue());
  323. break;
  324. case "所属行业":
  325. //设置单元格类型
  326. cell.setCellType(CellType.STRING);
  327. companyMsg.setInsdustry(cell.getStringCellValue());
  328. break;
  329. case "社会统一信用代码":
  330. //设置单元格类型
  331. cell.setCellType(CellType.STRING);
  332. companyMsg.setCreditNum(cell.getStringCellValue());
  333. break;
  334. case "登记机关":
  335. //设置单元格类型
  336. cell.setCellType(CellType.STRING);
  337. companyMsg.setRegisterOrganization(cell.getStringCellValue());
  338. break;
  339. case "成立日期":
  340. //设置单元格类型
  341. cell.setCellType(CellType.STRING);
  342. Double d = Double.parseDouble(String.valueOf(cell.getNumericCellValue()));
  343. companyMsg.setDateOfEstablishment(HSSFDateUtil.getJavaDate(d));
  344. break;
  345. case "企业类型":
  346. //设置单元格类型
  347. cell.setCellType(CellType.STRING);
  348. companyMsg.setCompanyType(cell.getStringCellValue());
  349. break;
  350. case "营业期限":
  351. //设置单元格类型
  352. cell.setCellType(CellType.STRING);
  353. Double businessDead = Double.parseDouble(String.valueOf(cell.getNumericCellValue()));
  354. companyMsg.setBusinessDeadline(HSSFDateUtil.getJavaDate(businessDead));
  355. break;
  356. case "营业区域":
  357. //设置单元格类型
  358. cell.setCellType(CellType.STRING);
  359. companyMsg.setBusinessArea(cell.getStringCellValue());
  360. break;
  361. case "审核年检日期":
  362. //设置单元格类型
  363. cell.setCellType(CellType.STRING);
  364. Double aDouble = Double.parseDouble(String.valueOf(cell.getNumericCellValue()));
  365. companyMsg.setAnnualDate(HSSFDateUtil.getJavaDate(aDouble));
  366. break;
  367. case "注册地址":
  368. //设置单元格类型
  369. cell.setCellType(CellType.STRING);
  370. companyMsg.setRegisterdAddress(cell.getStringCellValue());
  371. break;
  372. case "经营范围":
  373. //设置单元格类型
  374. cell.setCellType(CellType.STRING);
  375. companyMsg.setManageScope(cell.getStringCellValue());
  376. break;
  377. }
  378. }
  379. fleetCompanyMsgs.add(companyMsg);
  380. }
  381. } catch (IOException e) {
  382. log.info("导入Excel异常:" + e);
  383. e.printStackTrace();
  384. }
  385. System.out.println(fleetCompanyMsgs);
  386. return null;
  387. }
  388. }