JobLibraryFactory

    1. package org.springblade.police.joblibrary.factory;
    2. import org.springblade.police.joblibrary.service.ConsumerJobLibraryService;
    3. import java.util.HashMap;
    4. import java.util.Map;
    5. /**
    6. * 作业库工厂
    7. * @author admin
    8. */
    9. public class JobLibraryFactory {
    10. /**
    11. * 作业库作业类型集合
    12. */
    13. private static Map<Integer, ConsumerJobLibraryService> jobLibraryServiceMap = new HashMap<>();
    14. /**
    15. * 作业类型注册到工厂
    16. *
    17. * @param code
    18. * @param jobLibraryService
    19. */
    20. public static void register(Integer code, ConsumerJobLibraryService jobLibraryService) {
    21. if (null != code && !"".equals(code)) {
    22. jobLibraryServiceMap.put(code, jobLibraryService);
    23. }
    24. }
    25. /**
    26. * 从工厂获取作业类型方法
    27. *
    28. * @param code
    29. * @return
    30. */
    31. public static ConsumerJobLibraryService get(Integer code) {
    32. return jobLibraryServiceMap.get(code);
    33. }
    34. }

    通用service

    1. package org.springblade.police.joblibrary.service;
    2. import com.baomidou.mybatisplus.extension.service.IService;
    3. import org.springblade.police.joblibrary.entity.JobLibrary;
    4. import org.springblade.police.joblibrary.vo.WebJobLibraryVO;
    5. /**
    6. * @author admin 自定义作业库接口
    7. * 0-空中标注 1-航点地图选点(航点飞行) 2-带状航线 3-绕点飞行 4-全景拍摄 5-建图航拍 6-倾斜摄影 7-航点在线录制
    8. */
    9. public interface ConsumerJobLibraryService extends IService<JobLibrary> {
    10. /**
    11. * 作业处理保存数据到作业管理具体实现
    12. *
    13. * @param jobLibrary 作业库
    14. * @param object 前端传值对象
    15. * @param webJobLibraryVO 作业库响应vo
    16. * @return
    17. */
    18. WebJobLibraryVO process(JobLibrary jobLibrary, Object object, WebJobLibraryVO webJobLibraryVO);
    19. /**
    20. * 根据业务关联id删除各作业类型详情
    21. *
    22. * @param busesId
    23. * @return
    24. */
    25. boolean deleteJobLibraryByBusesId(Long busesId);
    26. /**
    27. * 根据业务关联id删除各作业类型详情
    28. *
    29. * @param jobLibrary 作业库
    30. * @param object 前端传值对象
    31. * @return
    32. */
    33. boolean updateJobLibraryByBusesId(JobLibrary jobLibrary, Object object);
    34. /**
    35. * 根据业务关联id查询各作业类型详情
    36. *
    37. * @param busesId
    38. * @return
    39. */
    40. Object findJobTypeDetailByBusesId(Long busesId);
    41. }

    接口实现

    1. package org.springblade.police.joblibrary.service.impl;
    2. import com.alibaba.fastjson.JSON;
    3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    4. import lombok.extern.slf4j.Slf4j;
    5. import org.springblade.core.tool.api.R;
    6. import org.springblade.police.joblibrary.entity.JobLibrary;
    7. import org.springblade.police.joblibrary.entity.enums.JobType;
    8. import org.springblade.police.joblibrary.factory.JobLibraryFactory;
    9. import org.springblade.police.joblibrary.mapper.JobLibraryMapper;
    10. import org.springblade.police.joblibrary.service.ConsumerJobLibraryService;
    11. import org.springblade.police.joblibrary.service.IJobLibraryService;
    12. import org.springblade.police.joblibrary.vo.WebJobLibraryVO;
    13. import org.springblade.police.jobtype.controller.AerialPhotographyController;
    14. import org.springblade.police.jobtype.dto.AerialPhotographyDTO;
    15. import org.springframework.beans.BeanUtils;
    16. import org.springframework.stereotype.Service;
    17. import org.springframework.transaction.annotation.Transactional;
    18. import javax.annotation.PostConstruct;
    19. import javax.annotation.Resource;
    20. import java.util.Objects;
    21. /**
    22. * @author lxzn 建图航拍实现类
    23. */
    24. @Service
    25. @Slf4j
    26. public class AerialPhotoGraphJobLibraryServiceImpl extends ServiceImpl<JobLibraryMapper, JobLibrary> implements ConsumerJobLibraryService {
    27. @Resource
    28. private IJobLibraryService jobLibraryService;
    29. @Resource
    30. private AerialPhotographyController aerialPhotographyController;
    31. @PostConstruct
    32. public void init() {
    33. JobLibraryFactory.register(JobType.FIVE.getCode(), this);
    34. }
    35. @Override
    36. @Transactional(rollbackFor = Exception.class)
    37. public WebJobLibraryVO process(JobLibrary jobLibrary, Object object, WebJobLibraryVO webJobLibraryVO) {
    38. AerialPhotographyDTO aerialPhotographyDTO = JSON.parseObject(JSON.toJSONString(object), AerialPhotographyDTO.class);
    39. //防止数据错存
    40. if (Objects.isNull(aerialPhotographyDTO) || Objects.isNull(aerialPhotographyDTO.getAerialPhotographyLatitudeAndLongitudes())) {
    41. log.error("传入的建图航拍基础数据与作业类型不匹配!");
    42. return null;
    43. }
    44. //保存参数到建图航拍
    45. R<Long> result = aerialPhotographyController.submit(aerialPhotographyDTO);
    46. if (result.getData() == null) {
    47. log.error("存储建图航拍基础数据异常,存储数据到作业库失败!");
    48. return null;
    49. }
    50. //作业库 关联建图航拍id
    51. jobLibrary.setBusinessId(result.getData());
    52. boolean save = jobLibraryService.save(jobLibrary);
    53. if (save) {
    54. //存储数据到作业库成功
    55. BeanUtils.copyProperties(jobLibrary, webJobLibraryVO);
    56. } else {
    57. log.error("存储建图航拍基础数据异常,存储数据到作业库失败!");
    58. return null;
    59. }
    60. return webJobLibraryVO;
    61. }
    62. @Override
    63. @Transactional(rollbackFor = Exception.class)
    64. public boolean deleteJobLibraryByBusesId(Long busesId) {
    65. return aerialPhotographyController.remove(String.valueOf(busesId)).isSuccess();
    66. }
    67. @Override
    68. @Transactional(rollbackFor = Exception.class)
    69. public boolean updateJobLibraryByBusesId(JobLibrary jobLibrary, Object object) {
    70. AerialPhotographyDTO aerialPhotographyDTO = JSON.parseObject(JSON.toJSONString(object), AerialPhotographyDTO.class);
    71. //修改参数到建图航拍表
    72. Long flag = aerialPhotographyController.submit(aerialPhotographyDTO).getData();
    73. if (flag == null) {
    74. log.error("修改建图航拍基础数据异常,更新数据到作业库失败!");
    75. return false;
    76. }
    77. //更新作业库
    78. boolean update = jobLibraryService.updateById(jobLibrary);
    79. if (update) {
    80. //修改数据到作业库成功
    81. return true;
    82. } else {
    83. log.error("修改建图航拍基础数据异常,修改数据到作业库失败!");
    84. return false;
    85. }
    86. }
    87. @Override
    88. public Object findJobTypeDetailByBusesId(Long busesId) {
    89. return aerialPhotographyController.detail(String.valueOf(busesId));
    90. }
    91. }