BillPersonnelAdmissionServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package com.huimv.admin.service.impl;
  2. import cn.hutool.core.date.DateTime;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.huimv.admin.common.token.TokenSign;
  7. import com.huimv.admin.common.utils.*;
  8. import com.huimv.admin.entity.BaseLocation;
  9. import com.huimv.admin.entity.BaseProcess;
  10. import com.huimv.admin.entity.BillPcr;
  11. import com.huimv.admin.entity.BillPersonnelAdmission;
  12. import com.huimv.admin.entity.vo.FactoryDirectorVo;
  13. import com.huimv.admin.mapper.BaseLocationMapper;
  14. import com.huimv.admin.mapper.BaseProcessMapper;
  15. import com.huimv.admin.mapper.BillPcrMapper;
  16. import com.huimv.admin.mapper.BillPersonnelAdmissionMapper;
  17. import com.huimv.admin.service.IBillPersonnelAdmissionService;
  18. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  23. import org.springframework.web.bind.annotation.PostMapping;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.annotation.Resource;
  26. import javax.servlet.http.HttpServletRequest;
  27. import java.io.IOException;
  28. import java.time.LocalDateTime;
  29. import java.time.format.DateTimeFormatter;
  30. import java.util.List;
  31. import java.util.Map;
  32. /**
  33. * <p>
  34. * 入场申请 服务实现类
  35. * </p>
  36. *
  37. * @author author
  38. * @since 2023-07-21
  39. */
  40. @Service
  41. public class BillPersonnelAdmissionServiceImpl extends ServiceImpl<BillPersonnelAdmissionMapper, BillPersonnelAdmission> implements IBillPersonnelAdmissionService {
  42. @Resource
  43. private BillPersonnelAdmissionMapper billPersonnelAdmissionMapper;
  44. @Resource
  45. private BaseProcessMapper baseProcessMapper;
  46. @Resource
  47. private BillPcrMapper billPcrMapper;
  48. @Resource
  49. private BaseLocationMapper baseLocationMapper;
  50. @Autowired
  51. private UploadImage uploadImage;
  52. @Override
  53. @Transactional(rollbackFor = Exception.class)
  54. public Result addAdmission(HttpServletRequest httpServletRequest, String admissionType, String vistitType, String userName, String phone, String workName, String papersType, String papersCode, MultipartFile imgUrl, String vistitDate, String vistitReson, String destId, String destName,String farmId) throws IOException {
  55. Integer userId = TokenSign.getMemberIdByJwtToken(httpServletRequest);
  56. if (!PhoneNumberValidator.isValidPhoneNumber(phone)) {
  57. return new Result(10001,"手机号格式错误!",false);
  58. }
  59. if (papersType.equals("0")){
  60. if (!IDCardValidator.isValidIDCard(papersCode)){
  61. return new Result(10001,"身份证号格式错误!",false);
  62. }
  63. }
  64. DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
  65. BillPersonnelAdmission billPersonnelAdmission = new BillPersonnelAdmission();
  66. billPersonnelAdmission.setAdmissionType(Integer.parseInt(admissionType));
  67. billPersonnelAdmission.setVistitType(Integer.parseInt(vistitType));
  68. billPersonnelAdmission.setDestId(Integer.parseInt(destId));
  69. billPersonnelAdmission.setDestName(destName);
  70. billPersonnelAdmission.setAdmissionUserId(userId);
  71. billPersonnelAdmission.setAdmissionUserName(userName);
  72. billPersonnelAdmission.setVistitDate(LocalDateTime.parse(vistitDate,dateTimeFormatter));
  73. billPersonnelAdmission.setSubDate(LocalDateTime.now());
  74. billPersonnelAdmission.setPhone(phone);
  75. billPersonnelAdmission.setWorkName(workName);
  76. billPersonnelAdmission.setPapersType(Integer.parseInt(papersType));
  77. billPersonnelAdmission.setPapersCode(papersCode);
  78. if (uploadImage.getImageCom(imgUrl).equals("上传失败")) {
  79. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  80. return new Result(10001,"图片上传失败",false);
  81. }
  82. billPersonnelAdmission.setImgUrl(uploadImage.getImageCom(imgUrl));
  83. billPersonnelAdmission.setVistitReson(vistitReson);
  84. billPersonnelAdmission.setFarmId(Integer.parseInt(farmId));
  85. BaseProcess baseProcess = new BaseProcess();
  86. baseProcess.setDestName(destName);
  87. baseProcess.setDestId(Integer.parseInt(destId));
  88. baseProcess.setAdmissionUserId(userId);
  89. baseProcess.setAdmissionUserName(userName);
  90. baseProcess.setSubDate(DateTime.now());
  91. baseProcess.setUpdateDate(DateTime.now().toString());
  92. baseProcess.setCurrentStatus("0");
  93. //获取位置
  94. BaseLocation baseLocation = baseLocationMapper.selectOne(new QueryWrapper<BaseLocation>().eq("farm_id", farmId).eq("vistit_type", vistitType).eq("parent_id", 0));
  95. baseProcess.setCurrentLocation(baseLocation.getLocationName());
  96. baseProcess.setCurrentLocationId(baseLocation.getId().toString());
  97. baseProcess.setFarmId(Integer.parseInt(farmId));
  98. baseProcessMapper.insert(baseProcess);
  99. billPersonnelAdmission.setProcessId(baseProcess.getId());
  100. billPersonnelAdmissionMapper.insert(billPersonnelAdmission);
  101. return Result.SUCCESS();
  102. }
  103. @Override
  104. public Result listPersonalAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  105. String pageNo = paramsMap.get("pageNum");
  106. String pageSize = paramsMap.get("pageSize");
  107. Page<BillPersonnelAdmission> page = new Page<>(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
  108. Page<BillPersonnelAdmission> billPersonnelAdmissionPage = billPersonnelAdmissionMapper.selectPage(page, new QueryWrapper<BillPersonnelAdmission>().eq("admission_user_id", TokenSign.getMemberIdByJwtToken(httpServletRequest)).orderByDesc("sub_date"));
  109. return new Result(ResultCode.SUCCESS,billPersonnelAdmissionPage);
  110. }
  111. @Override
  112. public Result listAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  113. String pageNo = paramsMap.get("pageNum");
  114. String pageSize = paramsMap.get("pageSize");
  115. String type = paramsMap.get("type");
  116. String farmId = paramsMap.get("farmId");
  117. QueryWrapper<BillPersonnelAdmission> queryWrapper = new QueryWrapper<>();
  118. Integer userType = TokenSign.getUserTypeByJwtToken(httpServletRequest);
  119. if (userType == 3){
  120. //生物安全负责人
  121. queryWrapper.eq("admission_type",0);
  122. }else if (userType == 2){
  123. //紧急入场
  124. queryWrapper.ne("admission_type",0);
  125. }
  126. switch (type){
  127. case "1":
  128. queryWrapper.eq("bill_status",0);
  129. break;
  130. case "2":
  131. queryWrapper.eq("bill_status",1);
  132. break;
  133. case "3":
  134. queryWrapper.eq("bill_status",2);
  135. break;
  136. default: break;
  137. }
  138. queryWrapper.orderByDesc("sub_date").eq("farm_id",farmId);
  139. Page<BillPersonnelAdmission> page = new Page<>(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
  140. Page<BillPersonnelAdmission> billPersonnelAdmissionPage = billPersonnelAdmissionMapper.selectPage(page,queryWrapper);
  141. return new Result(ResultCode.SUCCESS,billPersonnelAdmissionPage);
  142. }
  143. @Override
  144. @Transactional
  145. public Result handleAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  146. String type = paramsMap.get("type");
  147. String id = paramsMap.get("id");
  148. DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  149. BillPersonnelAdmission billPersonnelAdmission = billPersonnelAdmissionMapper.selectById(id);
  150. // Integer userType = TokenSign.getUserTypeByJwtToken(httpServletRequest);
  151. Integer userType = 3;
  152. billPersonnelAdmission.setPassDate(LocalDateTime.now());
  153. billPersonnelAdmission.setPassUserId(TokenSign.getMemberIdByJwtToken(httpServletRequest));
  154. billPersonnelAdmission.setPassUserName(TokenSign.getUserNameByJwtToken(httpServletRequest));
  155. BaseProcess baseProcess = baseProcessMapper.selectById(billPersonnelAdmission.getProcessId());
  156. if (StringUtils.isBlank(baseProcess.getUpdateDate())){
  157. baseProcess.setUpdateDate(LocalDateTime.now().format(dateTimeFormatter));
  158. }else {
  159. baseProcess.setUpdateDate(baseProcess.getUpdateDate()+","+LocalDateTime.now().format(dateTimeFormatter));
  160. }
  161. if (type.equals("0")){
  162. //拒绝
  163. billPersonnelAdmission.setBillStatus(2);
  164. baseProcess.setProcessType(2);
  165. }else {
  166. //通过
  167. billPersonnelAdmission.setBillStatus(1);
  168. //获取pcr位置
  169. String laseLocationId = baseProcess.getCurrentLocationId();
  170. BaseLocation laseLocation = baseLocationMapper.selectById(laseLocationId);
  171. BaseLocation baseLocation = baseLocationMapper.selectById(laseLocation.getNextId());
  172. baseProcess.setCurrentStatus("1,0");
  173. baseProcess.setCurrentLocation(baseProcess.getCurrentLocation()+","+baseLocation.getLocationName());
  174. baseProcess.setCurrentLocationId(baseProcess.getCurrentLocationId() +","+baseLocation.getId());
  175. if (userType == 3){
  176. BillPcr billPcr = new BillPcr();
  177. billPcr.setVistitType(billPersonnelAdmission.getVistitType());
  178. billPcr.setDestName(billPersonnelAdmission.getDestName());
  179. billPcr.setDestId(billPersonnelAdmission.getDestId());
  180. billPcr.setAdmissionUserId(billPersonnelAdmission.getAdmissionUserId());
  181. billPcr.setAdmissionUserName(billPersonnelAdmission.getAdmissionUserName());
  182. billPcr.setSubDate(LocalDateTime.now());
  183. billPcr.setVistitDate(billPersonnelAdmission.getVistitDate());
  184. billPcr.setFarmId(billPersonnelAdmission.getFarmId());
  185. billPcr.setProcessId(billPersonnelAdmission.getProcessId());
  186. billPcr.setAdmissionId(Integer.parseInt(id));
  187. billPcr.setTestLocation(baseLocation.getLocationName());
  188. billPcr.setTestLocationId(baseLocation.getId());
  189. billPcrMapper.insert(billPcr);
  190. }else {
  191. //TODO 紧急入场通过先不处理
  192. }
  193. }
  194. baseProcessMapper.updateById(baseProcess);
  195. billPersonnelAdmissionMapper.updateById(billPersonnelAdmission);
  196. return Result.SUCCESS();
  197. }
  198. @Override
  199. public Result listAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  200. String type = paramsMap.get("type");
  201. String farmId = paramsMap.get("farmId");
  202. List<FactoryDirectorVo> factoryDirectorList = billPersonnelAdmissionMapper.listAll(type,farmId);
  203. return new Result(ResultCode.SUCCESS,factoryDirectorList);
  204. }
  205. }