diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java index f40904fa..87f436c8 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java @@ -20,6 +20,7 @@ public enum ProcessTypeEnum { ANNUAL_INIT("企业标准年度制修订计划流程", 7, "com.jero.modules.activiti.process.annualinit.service.ProcessAnnualInitService","/workCenter/ESAnnualRevisionPlanProcess","/workCenter/ESAnnualRevisionPlanProcess"), DOMESTIC_VEHICLE_CONTROL_PUBLISH("国内整车型号和VIN前八位管控流程", 8, "com.jero.modules.activiti.process.vehicledomestic.service.impl.ProcessVehicleDomesticReleaseServiceImpl","/workCenter/VehicleDomesticReleaseProcess","/workCenter/VehicleDomesticReleaseProcess"), PLAN_CHANGE("企业标准计划变更流程", 9, "com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeService","/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), + INTERNATIONAL_VEHICLE_CONTROL_PUBLISH("国际整车型号和VIN前八位管控流程", 10, "com.jero.modules.activiti.process.vehicleinternational.service.impl.ProcessVehicleDomesticReleaseServiceImpl","/workCenter/VehicleInternationalReleaseProcess","/workCenter/VehicleInternationalReleaseProcess") ; private final String name; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java index 37f06ecf..6e68d5b2 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java @@ -20,6 +20,7 @@ public enum ProcessType { ANNUAL_INIT("企业标准年度制修订计划流程", "7", "process-annual-init", "ProcessAnnualInitService"), DOMESTIC_VEHICLE_CONTROL_PUBLISH("国内整车型号和VIN前八位管控流程", "8", "domestic_vehicle_control_publish", "ProcessVehicleDomesticReleaseServiceImpl"), PLAN_CHANGE("企业标准计划变更流程", "9", "process-plan-change", "ProcessPlanChangeService"), + INTERNATIONAL_VEHICLE_CONTROL_PUBLISH("国际整车型号和VIN前八位管控流程", "10", "international_vehicle_control_publish", "ProcessVehicleInternationalReleaseServiceImpl") ; private final String name; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java index 0f4df327..4c0a06fc 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/planchange/service/ProcessPlanChangeLinkService.java @@ -1,5 +1,7 @@ package com.jero.modules.activiti.process.planchange.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.system.query.QueryGenerator; import com.jero.modules.activiti.process.planchange.entity.ProcessPlanChangeLink; import com.jero.modules.activiti.process.planchange.mapper.ProcessPlanChangeLinkMapper; import org.springframework.stereotype.Service; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/impl/ProcessVehicleDomesticReleaseServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/impl/ProcessVehicleDomesticReleaseServiceImpl.java index e7229d70..8b23cb1a 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/impl/ProcessVehicleDomesticReleaseServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicledomestic/service/impl/ProcessVehicleDomesticReleaseServiceImpl.java @@ -321,7 +321,7 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl result = new Result<>(); result.setMessage(msg); result.setSuccess(false); // 前端根据success判断是否通过验证 @@ -366,6 +366,7 @@ public class ProcessVehicleDomesticReleaseServiceImpl extends ServiceImpl + * 国际整车型号和VIN前八位管控流程 前端控制器 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@RestController +@RequestMapping("/process/vehicle/international") +public class ProcessVehicleInternationalReleaseController { + + @Resource + private IProcessVehicleInternationalReleaseService processVehicleInternationalReleaseService; + @Resource + private ActFlowCommonService actFlowCommonService; + + @AutoLog(value = "国际整车型号和VIN前八位管控流程-导出模板") + @ApiOperation(value="国际整车型号和VIN前八位管控流程-导出模板", notes="国际整车型号和VIN前八位管控流程-导出模板") + @GetMapping(value = "/exportTemplate") + public ModelAndView exportTemplate(HttpServletRequest request) { + return processVehicleInternationalReleaseService.exportTemplate(request); + } + + @AutoLog(value = "国际整车型号和VIN前八位管控流程-导入") + @ApiOperation(value="国际整车型号和VIN前八位管控流程-导入", notes="国际整车型号和VIN前八位管控流程-导入") + @PostMapping(value = "/importExcel") + public Result excelimport(HttpServletRequest request) { + return processVehicleInternationalReleaseService.importExcel(request); + } + + @AutoLog(value = "国际整车型号和VIN前八位管控流程-发起流程") + @ApiOperation(value = "国际整车型号和VIN前八位管控流程-发起流程", notes = "国际整车型号和VIN前八位管控流程-发起流程") + @PostMapping(value = "/start") + public Result startProcess(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processVehicleInternationalReleaseService.startProcess(processInfoVO); + return Result.OK(); + } + + @AutoLog(value = "国际整车型号和VIN前八位管控流程-同意") + @ApiOperation(value = "国际整车型号和VIN前八位管控流程-同意", notes = "国际整车型号和VIN前八位管控流程-同意") + @PostMapping("/agree") + public Result agree(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processVehicleInternationalReleaseService.approveTask(processInfoVO, true); + return Result.OK(); + } + + @AutoLog(value = "国际整车型号和VIN前八位管控流程-驳回") + @ApiOperation(value = "国际整车型号和VIN前八位管控流程-驳回", notes = "国际整车型号和VIN前八位管控流程-驳回") + @PostMapping("/reject") + public Result reject(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processVehicleInternationalReleaseService.approveTask(processInfoVO, false); + return Result.OK(); + } + + @AutoLog(value = "国际整车型号和VIN前八位管控流程-提交") + @ApiOperation(value = "国际整车型号和VIN前八位管控流程-提交", notes = "国际整车型号和VIN前八位管控流程-提交") + @PostMapping("/submit") + public Result submit(@Validated @RequestBody ProcessInfoVO processInfoVO) { + processVehicleInternationalReleaseService.submit(processInfoVO); + return Result.OK(); + } + + @AutoLog(value = "国际整车型号和VIN前八位管控流程-校验整车型号") + @ApiOperation(value = "国际整车型号和VIN前八位管控流程-校验整车型号", notes = "国际整车型号和VIN前八位管控流程-校验整车型号") + @PostMapping("/checkVehicleModel") + public Result checkVehicleModel(@RequestBody JSONObject jsonObject) { + return processVehicleInternationalReleaseService.checkVehicleModel(jsonObject); + } + + @AutoLog(value = "国际整车型号和VIN前八位管控流程-办理") + @ApiOperation(value="国际整车型号和VIN前八位管控流程-办理", notes="国际整车型号和VIN前八位管控流程-办理") + @GetMapping("/handle/{taskId}") + @Translation + public Result handle(@PathVariable("taskId") String taskId) { + ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.DOMESTIC_VEHICLE_CONTROL_PUBLISH); + if (draft != null) { + return Result.OK(draft); + } + return Result.OK(processVehicleInternationalReleaseService.getHandleData(taskId)); + } + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/entity/ProcessVehicleInternationalRelease.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/entity/ProcessVehicleInternationalRelease.java new file mode 100644 index 00000000..fa07c14f --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/entity/ProcessVehicleInternationalRelease.java @@ -0,0 +1,61 @@ +package com.jero.modules.activiti.process.vehicleinterntional.entity; + + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 国际整车型号和VIN前八位管控流程 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("process_vehicle_international_release") +@ApiModel(value="ProcessVehicleInternationalRelease对象", description="国际整车型号和VIN前八位管控流程") +public class ProcessVehicleInternationalRelease implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private String id; + + @ApiModelProperty(value = "流程实例Id") + private String processInstanceId; + + @ApiModelProperty(value = "整车型号id") + private String vehicleId; + + @ApiModelProperty(value = "抄送人") + private String copyUser; + + @ApiModelProperty(value = "0表示未删除,1表示删除") + private Integer delFlag; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "更新人") + private String updateBy; + + @ApiModelProperty(value = "更新时间") + private LocalDateTime updateTime; + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/listener/ProcessInternationalVehicleEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/listener/ProcessInternationalVehicleEndListener.java new file mode 100644 index 00000000..df46d01b --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/listener/ProcessInternationalVehicleEndListener.java @@ -0,0 +1,83 @@ +package com.jero.modules.activiti.process.vehicleinterntional.listener; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jero.common.api.SendMessageAPI; +import com.jero.common.api.dto.message.SendMessageDTO; +import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.vehicledomestic.entity.ProcessVehicleDomesticRelease; +import com.jero.modules.activiti.process.vehicledomestic.service.IProcessVehicleDomesticReleaseService; +import com.jero.modules.activiti.process.vehicleinterntional.entity.ProcessVehicleInternationalRelease; +import com.jero.modules.activiti.process.vehicleinterntional.service.IProcessVehicleInternationalReleaseService; +import com.jero.modules.laws.businessSupport.common.Constant; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleDomesticLibrary; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrary; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleDomesticLibraryService; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibraryService; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.delegate.DelegateExecution; +import org.activiti.engine.delegate.ExecutionListener; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * @author: Mzaxd + * @Date: 2023/10/10 14:14 + */ +@Slf4j +@Component("ProcessInternationalVehicleEndListener") +public class ProcessInternationalVehicleEndListener implements ExecutionListener, Serializable { + + @Resource + private IProcessVehicleInternationalReleaseService processVehicleInternationalReleaseService; + @Resource + private ILawsVehicleInternationalLibraryService lawsVehicleInternationalLibraryService; + @Resource + private ISysUserService sysUserService; + @Resource + private SendMessageAPI sendMessageAPI; + + + /** + * 国内整车型号和VIN前八位管控流程结束之后给抄送人发消息 + * @param delegateExecution + */ + @Override + public void notify(DelegateExecution delegateExecution) { + log.info("国内整车型号和VIN前八位管控流程:监听执行器开始执行"); + // 找到流程实例Id + String processInstanceId = delegateExecution.getProcessInstanceId(); + // 更新业务主表的字段 + ProcessVehicleInternationalRelease processVehicleInternationalRelease = processVehicleInternationalReleaseService.getOne(new LambdaQueryWrapper().eq(ProcessVehicleInternationalRelease::getProcessInstanceId, processInstanceId), false); + LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary = lawsVehicleInternationalLibraryService.getById(processVehicleInternationalRelease.getVehicleId()); + lawsVehicleInternationalLibrary.setFinishDate(new Date()); // 完成日期 + lawsVehicleInternationalLibrary.setIsFinish(Constant.IS_FINISH); // 是否完成流程 + lawsVehicleInternationalLibrary.setState(Constant.TAKE_EFFECT); // 状态 + lawsVehicleInternationalLibraryService.updateById(lawsVehicleInternationalLibrary); + // 给抄送人发送消息 + String processDefinitionKey = ProcessType.NEW_STANDARD_IMPORT.getProcessKey(); + // 发送消息 + SendMessageDTO sendMessageDTO = new SendMessageDTO(); + sendMessageDTO.setTemplateCode(processDefinitionKey); + sendMessageDTO.setToUserId(processVehicleInternationalRelease.getCopyUser()); + LambdaQueryWrapper querySysUser = new LambdaQueryWrapper<>(); + querySysUser.eq(SysUser::getUsername,processVehicleInternationalRelease.getCreateBy()); + SysUser sysUser = sysUserService.getOne(querySysUser,false); + if(!Objects.isNull(sysUser)){ + sendMessageDTO.setSendUser(sysUser.getId()); + } + Map sendMap = new HashMap<>(); + sendMap.put("standardNumber","测试占位符1"); + sendMap.put("standardName", "测试占位符2"); + sendMessageDTO.setMap(sendMap); + sendMessageAPI.sendMessage(sendMessageDTO); + log.info("国内整车型号和VIN前八位管控流程:监听执行器执行结束"); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/mapper/ProcessVehicleInternationalReleaseMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/mapper/ProcessVehicleInternationalReleaseMapper.java new file mode 100644 index 00000000..5e21d265 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/mapper/ProcessVehicleInternationalReleaseMapper.java @@ -0,0 +1,16 @@ +package com.jero.modules.activiti.process.vehicleinterntional.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.activiti.process.vehicleinterntional.entity.ProcessVehicleInternationalRelease; + +/** + *

+ * 国际整车型号和VIN前八位管控流程 Mapper 接口 + *

+ * + * @author sz + * @since 2024-09-29 + */ +public interface ProcessVehicleInternationalReleaseMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/mapper/xml/ProcessVehicleInternationalReleaseMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/mapper/xml/ProcessVehicleInternationalReleaseMapper.xml new file mode 100644 index 00000000..9fe783d8 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/mapper/xml/ProcessVehicleInternationalReleaseMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/service/IProcessVehicleInternationalReleaseService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/service/IProcessVehicleInternationalReleaseService.java new file mode 100644 index 00000000..d918bea1 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/service/IProcessVehicleInternationalReleaseService.java @@ -0,0 +1,36 @@ +package com.jero.modules.activiti.process.vehicleinterntional.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.common.api.vo.Result; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.vehicleinterntional.entity.ProcessVehicleInternationalRelease; +import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +/** + *

+ * 国际整车型号和VIN前八位管控流程 服务类 + *

+ * + * @author sz + * @since 2024-09-29 + */ +public interface IProcessVehicleInternationalReleaseService extends IService { + + ModelAndView exportTemplate(HttpServletRequest request); + + Result importExcel(HttpServletRequest request); + + void startProcess(ProcessInfoVO processInfoVO); + + void approveTask(ProcessInfoVO processInfoVO, boolean pass); + + void submit(ProcessInfoVO processInfoVO); + + Result checkVehicleModel(JSONObject jsonObject); + + ProcessInfoVO getHandleData(String taskId); +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/service/impl/ProcessVehicleInternationalReleaseServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/service/impl/ProcessVehicleInternationalReleaseServiceImpl.java new file mode 100644 index 00000000..5785a2df --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/service/impl/ProcessVehicleInternationalReleaseServiceImpl.java @@ -0,0 +1,596 @@ +package com.jero.modules.activiti.process.vehicleinterntional.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.util.ImportExcelUtil; +import com.jero.modules.activiti.common.ActivitiCommon; +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.common.service.ActFlowCommonService; +import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; +import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; +import com.jero.modules.activiti.process.fb.service.IProcessHandleService; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.vehicleinterntional.entity.ProcessVehicleInternationalRelease; +import com.jero.modules.activiti.process.vehicleinterntional.mapper.ProcessVehicleInternationalReleaseMapper; +import com.jero.modules.activiti.process.vehicleinterntional.service.IProcessVehicleInternationalReleaseService; +import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo; +import com.jero.modules.activiti.process.vehicleinterntional.vo.excel.ProcessVehicleInternationalExcelVo; +import com.jero.modules.activiti.service.ProcessAllService; +import com.jero.modules.activiti.service.ProcessApprovalRecordService; +import com.jero.modules.activiti.service.ProcessNodeLinkService; +import com.jero.modules.laws.businessSupport.common.Constant; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrary; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrarySublist; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibraryService; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibrarySublistService; +import com.jero.modules.sys.utils.UserUtils; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; +import org.apache.commons.lang3.StringUtils; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.BeanUtils; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.*; +import static com.jero.modules.activiti.common.ActivitiCommon.PASS; + +/** + *

+ * 国际整车型号和VIN前八位管控流程 服务实现类 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@Service +public class ProcessVehicleInternationalReleaseServiceImpl extends ServiceImpl implements IProcessVehicleInternationalReleaseService { + + @Resource + private ActFlowCommonService actFlowCommonService; + @Resource + private ProcessNodeLinkService processNodeLinkService; + @Resource + private ProcessApprovalRecordService processApprovalRecordService; + @Resource + private ProcessAllService processAllService; + @Resource + private RuntimeService runtimeService; + @Resource + private IProcessHandleService processHandleService; + @Resource + private TaskService taskService; + @Resource + private ILawsVehicleInternationalLibraryService lawsVehicleInternationalLibraryService; + @Resource + private ILawsVehicleInternationalLibrarySublistService lawsVehicleInternationalLibrarySublistService; + + private static final String NEWLINE_CHARACTER = "
"; + + @Override + public ModelAndView exportTemplate(HttpServletRequest request) { + // AutoPoi 导出Excel + ModelAndView modelAndView = new ModelAndView(new JeecgEntityExcelView()); + // 设置文件名 + modelAndView.addObject(JeroController.FILE_NAME, "国际整车型号及VIN前八位统计表.xls"); + modelAndView.addObject(JeroController.CLASS, ProcessVehicleInternationalExcelVo.class); + List excelList = new ArrayList<>(); + // 设置导出参数 + ExportParams exportParams = new ExportParams(null, "国内"); + exportParams.setType(ExcelType.HSSF); + modelAndView.addObject(JeroController.PARAMS, exportParams); + // 将数据列表传递给 NormalExcelConstants.DATA_LIST + modelAndView.addObject(NormalExcelConstants.DATA_LIST, excelList); + return modelAndView; + } + + @Override + public Result importExcel(HttpServletRequest request) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + List excelList = new ArrayList<>(); + for (Map.Entry entity : fileMap.entrySet()) { + MultipartFile file = entity.getValue();// 获取上传文件对象 + // 校验表头 + excelHeadVerify(ProcessVehicleInternationalExcelVo.class, file); + try { + ImportParams params = new ImportParams(); + params.setNeedSave(true); + params.setHeadRows(1); + excelList = ExcelImportUtil.importExcel(file.getInputStream(), ProcessVehicleInternationalExcelVo.class, params); + if (CollectionUtils.isEmpty(excelList)) { + throw new JeroBootException("没有数据可导入"); + } + if (excelList.size() > 1) { + throw new JeroBootException("一次只能导入一条数据"); + } + // 校验数据 + StringBuilder msg = validatorExcel(excelList); + if (StringUtils.isNotEmpty(msg.toString())) { + return Result.error(msg.toString()); + } + }catch (Exception e) { + log.error(e.getMessage(),e); + return Result.error("文件导入失败:"+e.getMessage()); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.OK(excelList.get(0)); + } + + @Override + public void startProcess(ProcessInfoVO processInfoVO) { + // 流程Key + String processDefinitionKey = ProcessType.INTERNATIONAL_VEHICLE_CONTROL_PUBLISH.getProcessKey(); + // 流程信息 + BasicProcessInfoDTO processInfo = processInfoVO.getBasicProcessInfoDTO(); + // 任务信息 + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + // 人员信息 + Map userInfoMap = processInfoVO.getUserInfoMap(); + // 业务数据 + ProcessVehicleInternationalReleaseVo businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + // 设置流程变量 + Map actVariables = setVariables(userInfoMap); + // 删除草稿 + actFlowCommonService.getExistDraftAndRemove(processInfoVO.getDraftId()); + // 启动流程 + ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); + // 获取流程实例ID + String processDefinitionId = processInstance.getProcessDefinitionId(); + String processInstanceId = processInstance.getId(); + businessInfoDTO.setProcessInstanceId(processInstanceId); + processInfo.setProcessInstanceId(processInstanceId); + processInfo.setProcessDefinitionId(processDefinitionId); + processInfo.setProcessType(ProcessTypeEnum.INTERNATIONAL_VEHICLE_CONTROL_PUBLISH.getValue()); + // 第一个节点业务数据处理 + startNodeBusProcess(processInfoVO); + // 保存选人信息 + processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, changeVariables(userInfoMap)); + // 当前用户Id + String userId = UserUtils.getUserId(); + // 获取第一个任务的taskId + String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); + processTask.setTaskId(taskId); + // 保存第一个节点的草稿 + processHandleService.saveToDraft(processInfoVO, UserUtils.getUserId()); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 根据流程实例id更新流程总表 + actFlowCommonService.updateProcessAll(processInfo); + // 自动完成第一个任务 + actFlowCommonService.completeTask(taskId, userId); + // 保存快照 + processHandleService.saveToSnapshot(processInfoVO,userId); + } + + @Override + public void approveTask(ProcessInfoVO processInfoVO, boolean pass) { + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + String taskId = processTask.getTaskId(); + // 获取task + if (StringUtils.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { + throw new JeroBootException("taskId为空或任务不存在"); + } + // 获取当前节点的id + ProcessApprovalRecord processApprovalRecord = actFlowCommonService.getNodeIdByTaskId(taskId); + String xmlNodeId = processApprovalRecord.getNodeId(); + //任务Id 查询任务对象 + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + String processInstanceId = task.getProcessInstanceId(); + String userId = actFlowCommonService.getOriginTaskAssignee(taskId); + if(Objects.isNull(task)){ + throw new JeroBootException("找不到对应任务"); + } + if (pass && task.getName().equals("法规部门处理人审批")) { + startRegulatoryProcess(processInfoVO, processInstanceId); + } + if(Objects.isNull(processTask.getCommitFlag())){ + processTask.setCommitFlag(pass ? ActivitiCommon.COMMIT_FLAG1 : ActivitiCommon.COMMIT_FLAG2); + } + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 设置流程变量 + runtimeService.setVariable(processInstanceId, PASS, pass); + // 审批节点 + actFlowCommonService.completeTask(taskId, userId); + // 驳回,结束所有节点 + processApprovalRecordService.updateApprovalRecordFinishFlag(pass, taskId, xmlNodeId, processInstanceId); + // 保存快照 + // 获取流程通用数据 + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + if(!Objects.isNull(process)){ + BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); + basicProcessInfoDTO.setProcessName(process.getPrcName()); + basicProcessInfoDTO.setProcessType(process.getPrcType()); + basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId()); + basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId()); + basicProcessInfoDTO.setProcessDescription(process.getPrcMes()); + basicProcessInfoDTO.setProcessDueDate(process.getDueTime()); + processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); + // 保存快照 + processHandleService.saveToSnapshot(processInfoVO,userId); + } + } + + @Override + public void submit(ProcessInfoVO processInfoVO) { + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + String taskId = processTask.getTaskId(); + // 获取task + if (StringUtils.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { + throw new JeroBootException("taskId为空或任务不存在"); + } + //任务Id 查询任务对象 + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if(Objects.isNull(task)){ + throw new JeroBootException("找不到对应任务"); + } + // 人员信息 + Map userInfoMap = processInfoVO.getUserInfoMap(); + // 设置流程变量 + Map actVariables = setVariables(userInfoMap); + String processInstanceId = task.getProcessInstanceId(); + runtimeService.setVariables(processInstanceId,actVariables); + String userId = actFlowCommonService.getOriginTaskAssignee(taskId); + // 发起节点 更新业务数据 + updateNodeBusProcess(processInfoVO, processInstanceId); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 审批节点 + actFlowCommonService.completeTask(taskId, userId); + // 保存快照 + // 获取流程通用数据 + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + if(!Objects.isNull(process)){ + BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); + basicProcessInfoDTO.setProcessName(process.getPrcName()); + basicProcessInfoDTO.setProcessType(process.getPrcType()); + basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId()); + basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId()); + basicProcessInfoDTO.setProcessDescription(process.getPrcMes()); + basicProcessInfoDTO.setProcessDueDate(process.getDueTime()); + processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); + // 保存快照 + processHandleService.saveToSnapshot(processInfoVO,userId); + } + } + + @Override + public Result checkVehicleModel(JSONObject jsonObject) { + if (Objects.isNull(jsonObject)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "vehicleModel"); + } + String vehicleType = jsonObject.getString("vehicleType"); // 车辆形式 + String variant = jsonObject.getString("variant"); // 变型 + String version = jsonObject.getString("version"); // 改型 + String vehicleModel = vehicleType + " " + variant + " " + version; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(LawsVehicleInternationalLibrary::getIsFinish, Constant.IS_FINISH); + lambdaQueryWrapper.eq(LawsVehicleInternationalLibrary::getVehicleModel, vehicleModel); + LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary = lawsVehicleInternationalLibraryService.getOne(lambdaQueryWrapper, false); + if (!Objects.isNull(lawsVehicleInternationalLibrary)) { + String msg = (Objects.equals(LocaleContextHolder.getLocale(), Locale.ENGLISH) ? + "The vehicleModel: " + vehicleModel + "is already exist" : "整车型号:" + vehicleModel + "已存在"); + Result result = new Result<>(); + result.setMessage(msg); + result.setSuccess(false); // 前端根据success判断是否通过验证 + return result; + }else { + return Result.OK(); + } + } + + @Override + public ProcessInfoVO getHandleData(String taskId) { + if (!actFlowCommonService.taskExists(taskId)) { + throw new JeroBootException("任务不存在"); + } + ProcessInfoVO result = new ProcessInfoVO<>(); + // 使用流程引擎根据taskId找到流程实例Id + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + // 获取流程通用数据 + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + if(!Objects.isNull(process)){ + BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); + basicProcessInfoDTO.setProcessName(process.getPrcName()); + basicProcessInfoDTO.setProcessType(process.getPrcType()); + basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId()); + basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId()); + basicProcessInfoDTO.setProcessDescription(process.getPrcMes()); + basicProcessInfoDTO.setProcessDueDate(process.getDueTime()); + result.setBasicProcessInfoDTO(basicProcessInfoDTO); + } + // 获取流程实例数据 + ProcessVehicleInternationalReleaseVo processVehicleInternationalReleaseVo = new ProcessVehicleInternationalReleaseVo(); + // 流程表 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProcessVehicleInternationalRelease::getProcessInstanceId, processInstanceId); + ProcessVehicleInternationalRelease processVehicleInternationalRelease = getOne(lambdaQueryWrapper,false); + BeanUtils.copyProperties(processVehicleInternationalRelease, processVehicleInternationalReleaseVo); + // 业务主表 + LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary = lawsVehicleInternationalLibraryService.getById(processVehicleInternationalRelease.getVehicleId()); + BeanUtils.copyProperties(lawsVehicleInternationalLibrary, processVehicleInternationalReleaseVo); + // 业务子表 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsVehicleInternationalLibrarySublist::getVehicleId, processVehicleInternationalRelease.getVehicleId()); + LawsVehicleInternationalLibrarySublist lawsVehicleInternationalLibrarySublist = lawsVehicleInternationalLibrarySublistService.getOne(queryWrapper); + BeanUtils.copyProperties(lawsVehicleInternationalLibrarySublist, processVehicleInternationalReleaseVo); + processVehicleInternationalReleaseVo.setId(processVehicleInternationalRelease.getId()); + result.setBusinessInfoDTO(processVehicleInternationalReleaseVo); + return result; + } + + private void updateNodeBusProcess(ProcessInfoVO processInfoVO, String processInstanceId) { + ProcessVehicleInternationalReleaseVo businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + ProcessVehicleInternationalRelease processVehicleInternationalRelease = getOne(new LambdaQueryWrapper().eq(ProcessVehicleInternationalRelease::getProcessInstanceId, processInstanceId), false); + String vehicleId = processVehicleInternationalRelease.getVehicleId(); + // 更新数据到 流程表 + ProcessVehicleInternationalRelease newProcessVehicleInternationalRelease = new ProcessVehicleInternationalRelease(); + BeanUtils.copyProperties(businessInfoDTO, newProcessVehicleInternationalRelease); + newProcessVehicleInternationalRelease.setId(processVehicleInternationalRelease.getId()); + this.updateById(newProcessVehicleInternationalRelease); + // 更新数据到 业务主表 + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.eq(LawsVehicleInternationalLibrary::getId, vehicleId); // id + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getIsFinish, Constant.NOT_FINISH); // 是否完成流程 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getApplicant, UserUtils.getUserId()); // 申请人 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getRemark, businessInfoDTO.getRemark()); // 备注 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getVehicleModel, null); // 整车型号 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getVehicleType, null); // 车辆型式 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getVariant, null); // 变型 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getVersion, null); // 改型 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getVinTopEight, null); // vin前八位 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getVehicleBasis, null); // 整车型号编制依据 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getVinBasis, null); // vin编制依据 + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getRegulatoryEngineer, null); // 法规工程师 + lawsVehicleInternationalLibraryService.update(lambdaUpdateWrapper); + // 更新数据到 业务子表 + LawsVehicleInternationalLibrarySublist lawsVehicleInternationalLibrarySublist = new LawsVehicleInternationalLibrarySublist(); + BeanUtils.copyProperties(businessInfoDTO, lawsVehicleInternationalLibrarySublist); + lawsVehicleInternationalLibrarySublist.setVehicleId(vehicleId); + LawsVehicleInternationalLibrarySublist oldLawsVehicleInternationalLibrarySublist = lawsVehicleInternationalLibrarySublistService.getOne(new LambdaQueryWrapper() + .eq(LawsVehicleInternationalLibrarySublist::getVehicleId, vehicleId), false); + lawsVehicleInternationalLibrarySublist.setId(oldLawsVehicleInternationalLibrarySublist.getId()); + lawsVehicleInternationalLibrarySublistService.updateById(lawsVehicleInternationalLibrarySublist); + } + + private void startRegulatoryProcess(ProcessInfoVO processInfoVO, String processInstanceId) { + ProcessVehicleInternationalReleaseVo businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + if (!Objects.isNull(businessInfoDTO)) { + ProcessVehicleInternationalRelease processVehicleInternationalRelease = getOne(new LambdaQueryWrapper().eq(ProcessVehicleInternationalRelease::getProcessInstanceId, processInstanceId), false); + LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary = lawsVehicleInternationalLibraryService.getById(processVehicleInternationalRelease.getVehicleId()); + lawsVehicleInternationalLibrary.setVehicleBasis(businessInfoDTO.getVehicleBasis()); // 整车型号编制依据 + lawsVehicleInternationalLibrary.setVehicleType(businessInfoDTO.getVehicleType()); // 车辆形式 + lawsVehicleInternationalLibrary.setVariant(businessInfoDTO.getVariant()); // 变型 + lawsVehicleInternationalLibrary.setVersion(businessInfoDTO.getVersion()); // 改型 + // 整车型号由车辆形式、变型、改型组成 + String vehicleModel = businessInfoDTO.getVehicleType() + " " + businessInfoDTO.getVariant() + " " + businessInfoDTO.getVersion(); + lawsVehicleInternationalLibrary.setVehicleModel(vehicleModel); // 整车型号 + lawsVehicleInternationalLibrary.setVinTopEight(businessInfoDTO.getVinTopEight()); // VIN前八位 + lawsVehicleInternationalLibrary.setVinBasis(businessInfoDTO.getVinBasis()); // VIN编制依据 + lawsVehicleInternationalLibrary.setRegulatoryEngineer(UserUtils.getUserId()); // 法规工程师 + lawsVehicleInternationalLibraryService.updateById(lawsVehicleInternationalLibrary); + } + } + + private Map changeVariables(Map userInfoMap) { + Map map = new HashMap<>(); + userInfoMap.forEach((key, value) -> { + if(Objects.equals("checkUserLeader2List",key + "List")){ + map.put(key + "List", value); + } + map.put(key, value); + }); + return map; + } + + private void startNodeBusProcess(ProcessInfoVO processInfoVO) { + ProcessVehicleInternationalReleaseVo businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + // 保存数据到 国际整车型号及VIN前八位管控库表 + LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary = new LawsVehicleInternationalLibrary(); + BeanUtils.copyProperties(businessInfoDTO, lawsVehicleInternationalLibrary); + lawsVehicleInternationalLibrary.setIsFinish(Constant.NOT_FINISH); // 流程未完成 + lawsVehicleInternationalLibrary.setApplicant(UserUtils.getUserId()); // 流程发起人 + lawsVehicleInternationalLibraryService.save(lawsVehicleInternationalLibrary); + String vehicleId = lawsVehicleInternationalLibrary.getId(); // 主表id + // 保存数据到 国际整车型号及VIN前八位管控库子表 + LawsVehicleInternationalLibrarySublist lawsVehicleInternationalLibrarySublist = new LawsVehicleInternationalLibrarySublist(); + BeanUtils.copyProperties(businessInfoDTO, lawsVehicleInternationalLibrarySublist); + lawsVehicleInternationalLibrarySublist.setVehicleId(vehicleId); + lawsVehicleInternationalLibrarySublistService.save(lawsVehicleInternationalLibrarySublist); + // 保存数据到 国内整车型号及VIN前八位管控库流程表 + ProcessVehicleInternationalRelease processVehicleInternationalRelease = new ProcessVehicleInternationalRelease(); + processVehicleInternationalRelease.setVehicleId(vehicleId); + processVehicleInternationalRelease.setProcessInstanceId(businessInfoDTO.getProcessInstanceId()); + processVehicleInternationalRelease.setCopyUser(businessInfoDTO.getCopyUser()); + this.save(processVehicleInternationalRelease); + } + + private Map setVariables(Map userInfoMap) { + Map map = new HashMap<>(); + // 人员信息 + userInfoMap.forEach((key, value) -> { + if(Objects.equals("checkUserLeader1List",key + "List") || + Objects.equals("checkUserLeader2List",key + "List") || + Objects.equals("checkUserLeader3List",key + "List") || + Objects.equals("checkUserLeader4List",key + "List")){ + map.put(key, value); + map.put(key + "List", Arrays.asList(value.toString().split(","))); + return; + } + map.put(key, value); + }); + return map; + } + + private StringBuilder validatorExcel(List excelList) { + StringBuilder msg = new StringBuilder(); + for (int i = 0; i < excelList.size(); i++) { + ProcessVehicleInternationalExcelVo excelVo = excelList.get(i); + StringBuilder msgSub = new StringBuilder(); + // 校验车型代码 + if (StringUtils.isBlank(excelVo.getVehicleTypeCode())) { + msgSub.append(getErrorMsg(i, "车型代码不能为空;")); + } + // 校验动力类型 + if (StringUtils.isBlank(excelVo.getPowerType())) { + msgSub.append(getErrorMsg(i, "动力类型不能为空;")); + } + // 校验发动机型号 + if (StringUtils.isNotBlank(excelVo.getEngineType())) { + } + // 校验驱动电机型号 + if (StringUtils.isNotBlank(excelVo.getDriveMotorModel())) { + } + // 校验动力电池型号 + if (StringUtils.isNotBlank(excelVo.getPowerBatteryModel())) { + } + // 校验变速器型号 + if (StringUtils.isBlank(excelVo.getTransmissionModel())) { + msgSub.append(getErrorMsg(i, "变速器型号不能为空;")); + } + // 校验车身形式 + if (StringUtils.isBlank(excelVo.getBodyType())) { + msgSub.append(getErrorMsg(i, "车身形式不能为空;")); + } + // 校验驱动形式 + if (StringUtils.isBlank(excelVo.getDrivingType())) { + msgSub.append(getErrorMsg(i, "驱动形式不能为空;")); + } + // 校验驱动轴数量 + if (StringUtils.isBlank(excelVo.getDrivingShaftsNumber())) { + msgSub.append(getErrorMsg(i, "驱动轴数量不能为空;")); + } + // 校验转向型式 + if (StringUtils.isBlank(excelVo.getSteeringType())) { + msgSub.append(getErrorMsg(i, "转向型式不能为空;")); + } + // 校验座位数量 + if (StringUtils.isBlank(excelVo.getSeatsNumber())) { + msgSub.append(getErrorMsg(i, "座位数量不能为空;")); + } + // 校验技术允许最大满载质量(Kg) + if (StringUtils.isBlank(excelVo.getAllowedMaxFullLoad())) { + msgSub.append(getErrorMsg(i, "技术允许最大满载质量(Kg)不能为空;")); + }else if (excelVo.getAllowedMaxFullLoad().length() > 50) { + msgSub.append(getErrorMsg(i, "技术允许最大满载质量(Kg)字符长度不能超过50;")); + } + // 校验车辆外廓尺寸(长x宽X高) + if (StringUtils.isBlank(excelVo.getCarOutSize())) { + msgSub.append(getErrorMsg(i, "校验车辆外廓尺寸(长x宽X高)不能为空;")); + }else if (excelVo.getCarOutSize().length() > 50) { + msgSub.append(getErrorMsg(i, "校验车辆外廓尺寸(长x宽X高)字符长度不能超过50;")); + } + // 校验发动机工作原理 + if (StringUtils.isBlank(excelVo.getEngineWorkingPrinciple())) { + msgSub.append(getErrorMsg(i, "发动机工作原理不能为空;")); + } + // 校验燃料类型 + if (StringUtils.isBlank(excelVo.getFuelType())) { + msgSub.append(getErrorMsg(i, "燃料类型不能为空;")); + } + // 校验发动机排量(L) + if (StringUtils.isNotBlank(excelVo.getEngineCapacity())) { + } + // 校验额定转速(rpm) + if (StringUtils.isNotBlank(excelVo.getRatedSpeed()) && excelVo.getRatedSpeed().length() > 50) { + msgSub.append(getErrorMsg(i, "额定转速(rpm)字符长度不能超过50;")); + } + // 校验发动机最大净功率(kW) + if (StringUtils.isNotBlank(excelVo.getEngineMaxPower()) && excelVo.getEngineMaxPower().length() > 50) { + msgSub.append(getErrorMsg(i, "发动机最大净功率(kw)字符长度不能超过50;")); + } + // 校验驱动电机峰值功率(kW) + if (StringUtils.isNotBlank(excelVo.getDriveMotorPeakPower()) && excelVo.getDriveMotorPeakPower().length() > 50) { + msgSub.append(getErrorMsg(i, "发动机最大净功率(kw)字符长度不能超过50;")); + } + // 校验排放水平 + if (StringUtils.isNotBlank(excelVo.getEmissionLevel())) { + } + // 校验能耗(L/100km or kwh/100km) + if (StringUtils.isBlank(excelVo.getEnergyConsumption())) { + msgSub.append(getErrorMsg(i, "能耗(L/100km or kwh/100km)不能为空;")); + } + // 校验储能装置种类 + if (StringUtils.isNotBlank(excelVo.getEnergyStorageDevices())) { + } + // 校验变速器型式 + if (StringUtils.isBlank(excelVo.getTransmissionType())) { + msgSub.append(getErrorMsg(i, "变速器型式不能为空;")); + } + // 校验变速器档位数 + if (StringUtils.isBlank(excelVo.getTransmissionGearNumber())) { + msgSub.append(getErrorMsg(i, "变速器档位数不能为空;")); + } + // 校验变速器是否带手动模式 + if (StringUtils.isBlank(excelVo.getTransmissionIsHasManual())) { + msgSub.append(getErrorMsg(i, "变速器是否带手动模式不能为空;")); + } + // 校验前排正面气囊 + if (StringUtils.isBlank(excelVo.getFrontFrontAirbag())) { + msgSub.append(getErrorMsg(i, "前排正面气囊不能为空;")); + } + // 校验前排座椅侧气囊 + if (StringUtils.isBlank(excelVo.getFrontSeatSideAirbags())) { + msgSub.append(getErrorMsg(i, "前排座椅侧气囊不能为空;")); + } + //校验销售区域 + if (StringUtils.isBlank(excelVo.getSalesArea())) { + msgSub.append(getErrorMsg(i, "前销售区域不能为空;")); + } + // 校验品牌 + if (StringUtils.isBlank(excelVo.getBrand())) { + msgSub.append(getErrorMsg(i, "品牌不能为空;")); + } + if (msgSub.length() > 0) { + msg.append(msgSub).append(NEWLINE_CHARACTER); + } + } + return msg; + } + + // 校验表头 + private void excelHeadVerify(Class clazz, MultipartFile file) { + try { + if (!(boolean) ImportExcelUtil.checkTemplateTitle(file, clazz, 0, 0)){ + throw new JeroBootException(ResultCommon.IMPORT_TEMPLATE_ERROR); + } + }catch (Exception e) { + e.printStackTrace(); + throw new JeroBootException(ResultCommon.IMPORT_TEMPLATE_ERROR); + } + } + + // 错误消息格式化 + private String getErrorMsg(int rowIndex, String errorMsg) { + return "第" + (rowIndex + 2) + "行" + errorMsg; + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/vo/ProcessVehicleInternationalReleaseVo.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/vo/ProcessVehicleInternationalReleaseVo.java new file mode 100644 index 00000000..3f41a8eb --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/vo/ProcessVehicleInternationalReleaseVo.java @@ -0,0 +1,196 @@ +package com.jero.modules.activiti.process.vehicleinterntional.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; +import java.util.Date; + +@Data +public class ProcessVehicleInternationalReleaseVo { + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "流程实例Id") + private String processInstanceId; + + @ApiModelProperty(value = "抄送人员") + private String copyUser; + + @ApiModelProperty(value = "整车型号") + @Excel(name = "整车型号", width = 20) + private String vehicleModel; + + @ApiModelProperty(value = "车辆型式") + @Excel(name = "车辆型式", width = 20) + private String vehicleType; + + @ApiModelProperty(value = "变型(variant)") + @Excel(name = "变型(variant)", width = 20) + private String variant; + + @ApiModelProperty(value = "改型(version)") + @Excel(name = "改型(version)", width = 20) + private String version; + + @ApiModelProperty(value = "vin前八位") + @Excel(name = "vin前八位", width = 20) + private String vinTopEight; + + @ApiModelProperty(value = "整车型号编制依据") + @Excel(name = "整车型号编制依据", width = 20) + private String vehicleBasis; + + @ApiModelProperty(value = "vin编制依据") + @Excel(name = "vin编制依据", width = 20) + private String vinBasis; + + @ApiModelProperty(value = "代替整车型号") + @Excel(name = "代替整车型号", width = 20) + private String insteadVehicleModel; + + @ApiModelProperty(value = "申请人") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + @Excel(name = "申请人", width = 20, dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") + private String applicant; + + @ApiModelProperty(value = "完成日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @Excel(name = "完成日期", width = 20, format = "yyyy-MM-dd") + private Date finishDate; + + @ApiModelProperty(value = "法规工程师") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + @Excel(name = "法规工程师", width = 20, dictTable = "sys_user", dicCode = "id", dicText = "CONCAT(realname, '(', username, ')')") + private String regulatoryEngineer; + + @ApiModelProperty(value = "状态 1-生效 2-作废") + @Dict(dicCode = "dvm_status") + @Excel(name = "状态", width = 20, dicCode = "dvm_status") + private String state; + + @ApiModelProperty(value = "车型代码") + @Excel(name = "车型代码", width = 20) + private String vehicleTypeCode; + + @ApiModelProperty(value = "动力类型") + @Excel(name = "动力类型", width = 20) + private String powerType; + + @ApiModelProperty(value = "发动机型号") + @Excel(name = "发动机型号", width = 20) + private String engineType; + + @ApiModelProperty(value = "驱动电机型号") + @Excel(name = "驱动电机型号", width = 20) + private String driveMotorModel; + + @ApiModelProperty(value = "动力电池型号") + @Excel(name = "动力电池型号", width = 20) + private String powerBatteryModel; + + @ApiModelProperty(value = "变速器型号") + @Excel(name = "变速器型号", width = 20) + private String transmissionModel; + + @ApiModelProperty(value = "车身形式") + @Excel(name = "车身形式", width = 20) + private String bodyType; + + @ApiModelProperty(value = "驱动型式") + @Excel(name = "驱动型式", width = 20) + private String drivingType; + + @ApiModelProperty(value = "驱动轴数量") + @Excel(name = "驱动轴数量", width = 20) + private String drivingShaftsNumber; + + @ApiModelProperty(value = "转向型式") + @Excel(name = "转向型式", width = 20) + private String steeringType; + + @ApiModelProperty(value = "座位数量") + @Excel(name = "座位数量", width = 20) + private String seatsNumber; + + @ApiModelProperty(value = "技术允许最大满载质量(Kg)") + @Excel(name = "技术允许最大满载质量(Kg)", width = 20) + private String allowedMaxFullLoad; + + @ApiModelProperty(value = "车辆外廓尺寸(长*宽*高)") + @Excel(name = "车辆外廓尺寸(长*宽*高)", width = 20) + private String carOutSize; + + @ApiModelProperty(value = "发动机工作原理") + @Excel(name = "发动机工作原理", width = 20) + private String engineWorkingPrinciple; + + @ApiModelProperty(value = "燃料类型") + @Excel(name = "燃料类型", width = 20) + private String fuelType; + + @ApiModelProperty(value = "发动机排量(L)") + @Excel(name = "发动机排量(L)", width = 20) + private String engineCapacity; + + @ApiModelProperty(value = "额定转速(rpm)") + @Excel(name = "额定转速(rpm)", width = 20) + private String ratedSpeed; + + @ApiModelProperty(value = "发动机最大净功率(kw)") + @Excel(name = "发动机最大净功率(kw)", width = 20) + private String engineMaxPower; + + @ApiModelProperty(value = "驱动电机峰值功率(kw)") + @Excel(name = "驱动电机峰值功率(kw)", width = 20) + private String driveMotorPeakPower; + + @ApiModelProperty(value = "排放水平") + @Excel(name = "排放水平", width = 20) + private String emissionLevel; + + @ApiModelProperty(value = "能耗(L/100km or kwh/100km)") + @Excel(name = "能耗(L/100km or kwh/100km)", width = 20) + private String energyConsumption; + + @ApiModelProperty(value = "储能装置种类") + @Excel(name = "储能装置种类", width = 20) + private String energyStorageDevices; + + @ApiModelProperty(value = "变速器型式") + @Excel(name = "变速器型式", width = 20) + private String transmissionType; + + @ApiModelProperty(value = "变速器档位数") + @Excel(name = "变速器档位数", width = 20) + private String transmissionGearNumber; + + @ApiModelProperty(value = "变速器是否带手动模式") + @Excel(name = "变速器是否带手动模式", width = 20) + private String transmissionIsHasManual; + + @ApiModelProperty(value = "前排正面气囊") + @Excel(name = "前排正面气囊", width = 20) + private String frontFrontAirbag; + + @ApiModelProperty(value = "前排座椅侧气囊") + @Excel(name = "前排座椅侧气囊", width = 20) + private String frontSeatSideAirbags; + + @ApiModelProperty(value = "销售区域") + @Excel(name = "销售区域", width = 20) + private String salesArea; + + @ApiModelProperty(value = "品牌") + @Excel(name = "品牌", width = 20) + private String brand; + + @ApiModelProperty(value = "备注") + @Excel(name = "备注", width = 20) + private String remark; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/vo/excel/ProcessVehicleInternationalExcelVo.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/vo/excel/ProcessVehicleInternationalExcelVo.java new file mode 100644 index 00000000..289bd6aa --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/vehicleinterntional/vo/excel/ProcessVehicleInternationalExcelVo.java @@ -0,0 +1,126 @@ +package com.jero.modules.activiti.process.vehicleinterntional.vo.excel; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +@Data +public class ProcessVehicleInternationalExcelVo { + + @ApiModelProperty(value = "车型代码") + @Excel(name = "车型代码", width = 20) + private String vehicleTypeCode; + + @ApiModelProperty(value = "动力类型") + @Excel(name = "动力类型", width = 20) + private String powerType; + + @ApiModelProperty(value = "发动机型号") + @Excel(name = "发动机型号", width = 20) + private String engineType; + + @ApiModelProperty(value = "驱动电机型号") + @Excel(name = "驱动电机型号", width = 20) + private String driveMotorModel; + + @ApiModelProperty(value = "动力电池型号") + @Excel(name = "动力电池型号", width = 20) + private String powerBatteryModel; + + @ApiModelProperty(value = "变速器型号") + @Excel(name = "变速器型号", width = 20) + private String transmissionModel; + + @ApiModelProperty(value = "车身形式") + @Excel(name = "车身形式", width = 20) + private String bodyType; + + @ApiModelProperty(value = "驱动形式") + @Excel(name = "驱动形式", width = 20) + private String drivingType; + + @ApiModelProperty(value = "驱动轴数量") + @Excel(name = "驱动轴数量", width = 20) + private String drivingShaftsNumber; + + @ApiModelProperty(value = "转向型式") + @Excel(name = "转向型式", width = 20) + private String steeringType; + + @ApiModelProperty(value = "座位数量") + @Excel(name = "座位数量", width = 20) + private String seatsNumber; + + @ApiModelProperty(value = "技术允许最大满载质量(Kg)") + @Excel(name = "技术允许最大满载质量(Kg)", width = 20) + private String allowedMaxFullLoad; + + @ApiModelProperty(value = "车辆外廓尺寸(长*宽*高)") + @Excel(name = "车辆外廓尺寸(长*宽*高)", width = 20) + private String carOutSize; + + @ApiModelProperty(value = "发动机工作原理") + @Excel(name = "发动机工作原理", width = 20) + private String engineWorkingPrinciple; + + @ApiModelProperty(value = "燃料类型") + @Excel(name = "燃料类型", width = 20) + private String fuelType; + + @ApiModelProperty(value = "发动机排量(L)") + @Excel(name = "发动机排量(L)", width = 20) + private String engineCapacity; + + @ApiModelProperty(value = "额定转速(rpm)") + @Excel(name = "额定转速(rpm)", width = 20) + private String ratedSpeed; + + @ApiModelProperty(value = "发动机最大净功率(kw)") + @Excel(name = "发动机最大净功率(kw)", width = 20) + private String engineMaxPower; + + @ApiModelProperty(value = "驱动电机峰值功率(kw)") + @Excel(name = "驱动电机峰值功率(kw)", width = 20) + private String driveMotorPeakPower; + + @ApiModelProperty(value = "排放水平") + @Excel(name = "排放水平", width = 20) + private String emissionLevel; + + @ApiModelProperty(value = "能耗(L/100km or kwh/100km)") + @Excel(name = "能耗(L/100km or kwh/100km)", width = 20) + private String energyConsumption; + + @ApiModelProperty(value = "储能装置种类") + @Excel(name = "储能装置种类", width = 20) + private String energyStorageDevices; + + @ApiModelProperty(value = "变速器型式") + @Excel(name = "变速器型式", width = 20) + private String transmissionType; + + @ApiModelProperty(value = "变速器档位数") + @Excel(name = "变速器档位数", width = 20) + private String transmissionGearNumber; + + @ApiModelProperty(value = "变速器是否带手动模式") + @Excel(name = "变速器是否带手动模式", width = 20) + private String transmissionIsHasManual; + + @ApiModelProperty(value = "前排正面气囊") + @Excel(name = "前排正面气囊", width = 20) + private String frontFrontAirbag; + + @ApiModelProperty(value = "前排座椅侧气囊") + @Excel(name = "前排座椅侧气囊", width = 20) + private String frontSeatSideAirbags; + + @ApiModelProperty(value = "销售区域") + @Excel(name = "销售区域", width = 20) + private String salesArea; + + @ApiModelProperty(value = "品牌") + @Excel(name = "品牌", width = 20) + private String brand; + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibraryController.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibraryController.java index cb2dc1d3..20bfd5c8 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibraryController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleDomesticLibraryController.java @@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletRequest; */ @Api(tags="国内整车型号及VIN前八位管控库") @RestController -@RequestMapping("/domesticVehicle/library") +@RequestMapping("/laws/domesticVehicle/library") @Slf4j public class LawsVehicleDomesticLibraryController { diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleInternationalLibraryController.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleInternationalLibraryController.java new file mode 100644 index 00000000..5f082f33 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleInternationalLibraryController.java @@ -0,0 +1,109 @@ +package com.jero.modules.laws.businessSupport.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.aspect.annotation.Translation; +import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrary; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibraryService; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +/** + *

+ * 国际整车型号及VIN前八位管控库 前端控制器 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@RestController +@RequestMapping("/laws/internationalVehicle/library") +public class LawsVehicleInternationalLibraryController { + + @Resource + private ILawsVehicleInternationalLibraryService lawsVehicleInternationalLibraryService; + + /** + * 分页列表查询 + * + * @return + */ + @AutoLog(value = "国际整车型号及VIN前八位管控库-分页列表查询") + @ApiOperation(value="国际整车型号及VIN前八位管控库-分页列表查询", notes="国际整车型号及VIN前八位管控库-分页列表查询") + @GetMapping(value = "/page") +// @RequiresPermissions("companyStandardStatistics:search") + public Result queryPageList(LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + IPage pageList= lawsVehicleInternationalLibraryService.queryPageList(lawsVehicleInternationalLibrary, pageNo, pageSize, req); + return Result.OK(pageList); + } + + /** + * 查看 + * + * @param jsonObject + * @return + */ + @AutoLog(value = "国际整车型号及VIN前八位管控库-查看") + @ApiOperation(value="国际整车型号及VIN前八位管控库-查看", notes="国际整车型号及VIN前八位管控库-查看") + @PostMapping(value = "/queryOne") + @Translation +// @RequiresPermissions("companyStandardStatistics:edit") + public Result queryOne(@RequestBody JSONObject jsonObject) { + String id = jsonObject.getString("id"); + return lawsVehicleInternationalLibraryService.queryOne(id); + } + + /** + * 删除 + */ + @AutoLog(value = "国际整车型号及VIN前八位管控库-删除") + @ApiOperation(value="国际整车型号及VIN前八位管控库-删除", notes="国际整车型号及VIN前八位管控库-删除") + @PostMapping(value = "/delete") +// @RequiresPermissions("companyStandardStatistics:delete") + public Result delete(@RequestBody JSONObject jsonObject) { + return lawsVehicleInternationalLibraryService.delete(jsonObject); + } + + /** + * 作废 + */ + @AutoLog(value = "国际整车型号及VIN前八位管控库-作废") + @ApiOperation(value="国际整车型号及VIN前八位管控库-作废", notes="国际整车型号及VIN前八位管控库-作废") + @PostMapping(value = "/abolish") +// @RequiresPermissions("companyStandardStatistics:delete") + public Result abolish(@RequestBody JSONObject jsonObject) { + return lawsVehicleInternationalLibraryService.abolish(jsonObject); + } + + /** + * 替换 + */ + @AutoLog(value = "国际整车型号及VIN前八位管控库-替换") + @ApiOperation(value="国际整车型号及VIN前八位管控库-替换", notes="国际整车型号及VIN前八位管控库-替换") + @PostMapping(value = "/replace") +// @RequiresPermissions("companyStandardStatistics:delete") + public Result replace(@RequestBody ProcessVehicleInternationalReleaseVo processVehicleInternationalReleaseVo) { + return lawsVehicleInternationalLibraryService.replace(processVehicleInternationalReleaseVo); + } + + /** + * 导出 + */ + @AutoLog(value = "国际整车型号及VIN前八位管控库-导出") + @ApiOperation(value="国际整车型号及VIN前八位管控库-导出", notes="国际整车型号及VIN前八位管控库-导出") + @GetMapping(value = "/exportXls") +// @RequiresPermissions("companyStandardStatistics:delete") + public ModelAndView exportXls(HttpServletRequest request) { + return lawsVehicleInternationalLibraryService.exportXls(request); + } + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleInternationalLibrarySublistController.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleInternationalLibrarySublistController.java new file mode 100644 index 00000000..7b2ec87c --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/controller/LawsVehicleInternationalLibrarySublistController.java @@ -0,0 +1,20 @@ +package com.jero.modules.laws.businessSupport.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 国际整车型号及VIN前八位管控库-子表 前端控制器 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@RestController +@RequestMapping("/laws-vehicle-international-library-sublist") +public class LawsVehicleInternationalLibrarySublistController { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrary.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrary.java index fcc979f5..32e4875b 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrary.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleDomesticLibrary.java @@ -96,10 +96,6 @@ public class LawsVehicleDomesticLibrary implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; - @TableField(exist = false) - @ApiModelProperty(value = "车型代码") - private String vehicleTypeCode; - @TableField(exist = false) @ApiModelProperty(value = "子表数据") private LawsVehicleDomesticLibrarySublist lawsVehicleDomesticLibrarySublist; diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleInternationalLibrary.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleInternationalLibrary.java new file mode 100644 index 00000000..6644a142 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleInternationalLibrary.java @@ -0,0 +1,112 @@ +package com.jero.modules.laws.businessSupport.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

+ * 国际整车型号及VIN前八位管控库 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("laws_vehicle_international_library") +@ApiModel(value="LawsVehicleInternationalLibrary对象", description="国际整车型号及VIN前八位管控库") +public class LawsVehicleInternationalLibrary implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private String id; + + @ApiModelProperty(value = "整车型号") + private String vehicleModel; + + @ApiModelProperty(value = "车辆型式") + private String vehicleType; + + @ApiModelProperty(value = "变型") + private String variant; + + @ApiModelProperty(value = "改型") + private String version; + + @ApiModelProperty(value = "vin前八位") + private String vinTopEight; + + @ApiModelProperty(value = "整车型号编制依据") + private String vehicleBasis; + + @ApiModelProperty(value = "vin编制依据") + private String vinBasis; + + @ApiModelProperty(value = "代替整车型号") + private String insteadVehicleModel; + + @ApiModelProperty(value = "申请人") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + private String applicant; + + @ApiModelProperty(value = "完成日期") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date finishDate; + + @ApiModelProperty(value = "法规工程师") + @Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname") + private String regulatoryEngineer; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "流程是否完成 0-未完成 1-已完成") + private String isFinish; + + @ApiModelProperty(value = "状态 1-生效 2-作废") + @Dict(dicCode = "dvm_status") + private String state; + + @ApiModelProperty(value = "逻辑删除") + @TableLogic(value = "0", delval = "1") + private Integer delFlag; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人") + private String updateBy; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @TableField(exist = false) + @ApiModelProperty(value = "子表数据") + private LawsVehicleInternationalLibrarySublist lawsVehicleInternationalLibrarySublist; + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleInternationalLibrarySublist.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleInternationalLibrarySublist.java new file mode 100644 index 00000000..8ee654e2 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/entity/LawsVehicleInternationalLibrarySublist.java @@ -0,0 +1,151 @@ +package com.jero.modules.laws.businessSupport.entity; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

+ * 国际整车型号及VIN前八位管控库-子表 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("laws_vehicle_international_library_sublist") +@ApiModel(value="LawsVehicleInternationalLibrarySublist对象", description="国际整车型号及VIN前八位管控库-子表") +public class LawsVehicleInternationalLibrarySublist implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private String id; + + @ApiModelProperty(value = "整车型号id") + private String vehicleId; + + @ApiModelProperty(value = "车型代码") + private String vehicleTypeCode; + + @ApiModelProperty(value = "动力类型") + private String powerType; + + @ApiModelProperty(value = "发动机型号") + private String engineType; + + @ApiModelProperty(value = "驱动电机型号") + private String driveMotorModel; + + @ApiModelProperty(value = "动力电池型号") + private String powerBatteryModel; + + @ApiModelProperty(value = "变速器型号") + private String transmissionModel; + + @ApiModelProperty(value = "车身形式") + private String bodyType; + + @ApiModelProperty(value = "驱动型式") + private String drivingType; + + @ApiModelProperty(value = "驱动轴数量") + private String drivingShaftsNumber; + + @ApiModelProperty(value = "转向型式") + private String steeringType; + + @ApiModelProperty(value = "座位数量") + private String seatsNumber; + + @ApiModelProperty(value = "技术允许最大满载质量(Kg)") + private String allowedMaxFullLoad; + + @ApiModelProperty(value = "车辆外廓尺寸(长*宽*高)") + private String carOutSize; + + @ApiModelProperty(value = "发动机工作原理") + private String engineWorkingPrinciple; + + @ApiModelProperty(value = "燃料类型") + private String fuelType; + + @ApiModelProperty(value = "发动机排量(L)") + private String engineCapacity; + + @ApiModelProperty(value = "额定转速(rpm)") + private String ratedSpeed; + + @ApiModelProperty(value = "发动机最大净功率(kW)") + private String engineMaxPower; + + @ApiModelProperty(value = "驱动电机峰值功率(kW)") + private String driveMotorPeakPower; + + @ApiModelProperty(value = "排放水平") + private String emissionLevel; + + @ApiModelProperty(value = "能耗(L/100km or kwh/100km)") + private String energyConsumption; + + @ApiModelProperty(value = "储能装置种类") + private String energyStorageDevices; + + @ApiModelProperty(value = "变速器型式") + private String transmissionType; + + @ApiModelProperty(value = "变速器档位数") + private String transmissionGearNumber; + + @ApiModelProperty(value = "变速器是否带手动模式") + private String transmissionIsHasManual; + + @ApiModelProperty(value = "前排正面气囊") + private String frontFrontAirbag; + + @ApiModelProperty(value = "前排座椅侧气囊") + private String frontSeatSideAirbags; + + @ApiModelProperty(value = "销售区域") + private String salesArea; + + @ApiModelProperty(value = "品牌") + private String brand; + + @ApiModelProperty(value = "逻辑删除") + @TableLogic(value = "0", delval = "1") + private Integer delFlag; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新人") + private String updateBy; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleInternationalLibraryMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleInternationalLibraryMapper.java new file mode 100644 index 00000000..29e80919 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleInternationalLibraryMapper.java @@ -0,0 +1,16 @@ +package com.jero.modules.laws.businessSupport.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrary; + +/** + *

+ * 国际整车型号及VIN前八位管控库 Mapper 接口 + *

+ * + * @author sz + * @since 2024-09-29 + */ +public interface LawsVehicleInternationalLibraryMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleInternationalLibrarySublistMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleInternationalLibrarySublistMapper.java new file mode 100644 index 00000000..ac018943 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/LawsVehicleInternationalLibrarySublistMapper.java @@ -0,0 +1,17 @@ +package com.jero.modules.laws.businessSupport.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrarySublist; + +/** + *

+ * 国际整车型号及VIN前八位管控库-子表 Mapper 接口 + *

+ * + * @author sz + * @since 2024-09-29 + */ +public interface LawsVehicleInternationalLibrarySublistMapper extends BaseMapper { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleInternationalLibraryMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleInternationalLibraryMapper.xml new file mode 100644 index 00000000..da28037c --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleInternationalLibraryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleInternationalLibrarySublistMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleInternationalLibrarySublistMapper.xml new file mode 100644 index 00000000..38fc9753 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/mapper/xml/LawsVehicleInternationalLibrarySublistMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleInternationalLibraryService.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleInternationalLibraryService.java new file mode 100644 index 00000000..e8773692 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleInternationalLibraryService.java @@ -0,0 +1,34 @@ +package com.jero.modules.laws.businessSupport.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.common.api.vo.Result; +import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrary; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +/** + *

+ * 国际整车型号及VIN前八位管控库 服务类 + *

+ * + * @author sz + * @since 2024-09-29 + */ +public interface ILawsVehicleInternationalLibraryService extends IService { + + IPage queryPageList(LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary, Integer pageNo, Integer pageSize, HttpServletRequest req); + + Result queryOne(String id); + + Result delete(JSONObject jsonObject); + + Result abolish(JSONObject jsonObject); + + Result replace(ProcessVehicleInternationalReleaseVo processVehicleInternationalReleaseVo); + + ModelAndView exportXls(HttpServletRequest request); +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleInternationalLibrarySublistService.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleInternationalLibrarySublistService.java new file mode 100644 index 00000000..fd7e4118 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/ILawsVehicleInternationalLibrarySublistService.java @@ -0,0 +1,16 @@ +package com.jero.modules.laws.businessSupport.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrarySublist; + +/** + *

+ * 国际整车型号及VIN前八位管控库-子表 服务类 + *

+ * + * @author sz + * @since 2024-09-29 + */ +public interface ILawsVehicleInternationalLibrarySublistService extends IService { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibraryServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibraryServiceImpl.java index e7b3f4db..4457eefd 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibraryServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleDomesticLibraryServiceImpl.java @@ -67,7 +67,7 @@ public class LawsVehicleDomesticLibraryServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(LawsVehicleDomesticLibrarySublist::getVehicleId, id); diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleInternationalLibraryServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleInternationalLibraryServiceImpl.java new file mode 100644 index 00000000..cc772572 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleInternationalLibraryServiceImpl.java @@ -0,0 +1,206 @@ +package com.jero.modules.laws.businessSupport.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.base.controller.JeroController; +import com.jero.common.util.oConvertUtils; +import com.jero.modules.activiti.process.vehicleinterntional.entity.ProcessVehicleInternationalRelease; +import com.jero.modules.activiti.process.vehicleinterntional.vo.ProcessVehicleInternationalReleaseVo; +import com.jero.modules.laws.businessSupport.common.Constant; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrary; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrarySublist; +import com.jero.modules.laws.businessSupport.mapper.LawsVehicleInternationalLibraryMapper; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibraryService; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibrarySublistService; +import com.jero.modules.laws.club.config.CustomExcelExportStyler; +import org.apache.commons.lang3.StringUtils; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.BeanUtils; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.web.servlet.ModelAndView; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 国际整车型号及VIN前八位管控库 服务实现类 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@Service +public class LawsVehicleInternationalLibraryServiceImpl extends ServiceImpl implements ILawsVehicleInternationalLibraryService { + + @Resource + private ILawsVehicleInternationalLibrarySublistService lawsVehicleInternationalLibrarySublistService; + + @Override + public IPage queryPageList(LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary, Integer pageNo, Integer pageSize, HttpServletRequest req) { + LambdaQueryWrapper lambdaQueryWrapper = generationWrapper(req); + Page page = new Page<>(pageNo, pageSize); + Page result = page(page, lambdaQueryWrapper); + return result; + } + + @Override + public Result queryOne(String id) { + if (StringUtils.isBlank(id)) { + throw new JeroBootException(ResultCommon.PARAMETERS_CANNOT_BE_NULL); + } + LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary = getById(id); + if (Objects.isNull(lawsVehicleInternationalLibrary)) { + throw new JeroBootException(ResultCommon.NO_CORRESPONDING_RECORD_FOUND); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsVehicleInternationalLibrarySublist::getVehicleId, id); + LawsVehicleInternationalLibrarySublist lawsVehicleInternationalLibrarySublist = lawsVehicleInternationalLibrarySublistService.getOne(queryWrapper, false); + ProcessVehicleInternationalReleaseVo processVehicleInternationalReleaseVo = new ProcessVehicleInternationalReleaseVo(); + BeanUtils.copyProperties(lawsVehicleInternationalLibrary, processVehicleInternationalReleaseVo); + BeanUtils.copyProperties(lawsVehicleInternationalLibrarySublist, processVehicleInternationalReleaseVo); + processVehicleInternationalReleaseVo.setId(lawsVehicleInternationalLibrary.getId()); + return Result.OK(processVehicleInternationalReleaseVo); + } + + @Override + public Result delete(JSONObject jsonObject) { + String id = jsonObject.getString("id"); + if(StringUtils.isBlank(id)){ + return Result.error(ResultCommon.PLEASE_SELECT_DATA); + } + // 删除主表数据 + removeById(id); + // 删除子表数据 + lawsVehicleInternationalLibrarySublistService.remove(new LambdaQueryWrapper().eq(LawsVehicleInternationalLibrarySublist::getVehicleId, id)); + return Result.OK(ResultCommon.OK); + } + + @Override + public Result abolish(JSONObject jsonObject) { + String id = jsonObject.getString("id"); + if(StringUtils.isBlank(id)){ + return Result.error(ResultCommon.PLEASE_SELECT_DATA); + } + LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary = getById(id); + if (Constant.ABOLISH.equals(lawsVehicleInternationalLibrary.getState())) { + throw new JeroBootException((Objects.equals(LocaleContextHolder.getLocale(), Locale.ENGLISH) ? + "The status is already abolished" : "状态已经是废止了")); + } + lawsVehicleInternationalLibrary.setState(Constant.ABOLISH); + updateById(lawsVehicleInternationalLibrary); + return Result.OK(); + } + + @Override + public Result replace(ProcessVehicleInternationalReleaseVo processVehicleInternationalReleaseVo) { + // 原数据 + String oldId = processVehicleInternationalReleaseVo.getId(); + // 原数据的整车型号 + LawsVehicleInternationalLibrary oldMainData = getById(oldId); + if (Objects.isNull(oldMainData)) { + throw new JeroBootException(ResultCommon.PARAMETERS_CANNOT_BE_NULL); + } + String oldVehicleModel = oldMainData.getVehicleModel(); + // 新数据 + LawsVehicleInternationalLibrary newMainData = new LawsVehicleInternationalLibrary(); + BeanUtils.copyProperties(processVehicleInternationalReleaseVo, newMainData); + newMainData.setState(Constant.TAKE_EFFECT); + newMainData.setIsFinish(Constant.IS_FINISH); + newMainData.setInsteadVehicleModel(oldVehicleModel); + newMainData.setId(null); + LawsVehicleInternationalLibrarySublist lawsVehicleInternationalLibrarySublist = new LawsVehicleInternationalLibrarySublist(); + BeanUtils.copyProperties(processVehicleInternationalReleaseVo, lawsVehicleInternationalLibrarySublist); + // 保存新数据 + save(newMainData); + String vehicleId = newMainData.getId(); + lawsVehicleInternationalLibrarySublist.setId(null); + lawsVehicleInternationalLibrarySublist.setVehicleId(vehicleId); + lawsVehicleInternationalLibrarySublistService.save(lawsVehicleInternationalLibrarySublist); + // 修改旧数据的状态为作废 + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.eq(LawsVehicleInternationalLibrary::getId, oldId); + lambdaUpdateWrapper.set(LawsVehicleInternationalLibrary::getState, Constant.ABOLISH); + update(lambdaUpdateWrapper); + return Result.OK(); + } + + @Override + public ModelAndView exportXls(HttpServletRequest request) { + LambdaQueryWrapper lambdaQueryWrapper = generationWrapper(request); + String selections = request.getParameter("selections"); + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + if(!oConvertUtils.isEmpty(selections)){ + lambdaQueryWrapper.in(LawsVehicleInternationalLibrary::getId, Arrays.asList(selections.split(","))); + } + List list = list(lambdaQueryWrapper); + List collectIds = list.stream().map(LawsVehicleInternationalLibrary::getId).collect(Collectors.toList()); + List excelList = new ArrayList<>(); + for (String collectId : collectIds) { + LawsVehicleInternationalLibrary lawsVehicleInternationalLibrary = getById(collectId); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsVehicleInternationalLibrarySublist::getVehicleId, collectId); + LawsVehicleInternationalLibrarySublist lawsVehicleInternationalLibrarySublist = lawsVehicleInternationalLibrarySublistService.getOne(queryWrapper, false); + ProcessVehicleInternationalReleaseVo processVehicleInternationalReleaseVo = new ProcessVehicleInternationalReleaseVo(); + BeanUtils.copyProperties(lawsVehicleInternationalLibrary, processVehicleInternationalReleaseVo); + BeanUtils.copyProperties(lawsVehicleInternationalLibrarySublist, processVehicleInternationalReleaseVo); + processVehicleInternationalReleaseVo.setId(lawsVehicleInternationalLibrary.getId()); + excelList.add(processVehicleInternationalReleaseVo); + } + //导出文件名称 + mv.addObject(JeroController.FILE_NAME, "国际"); + mv.addObject(JeroController.CLASS, ProcessVehicleInternationalReleaseVo.class); + mv.addObject(JeroController.PARAMS, createExportParams("密级:核心商密□普通商密□内部资料■外部公开□", "国际")); + mv.addObject(NormalExcelConstants.DATA_LIST, excelList); + return mv; + } + + private ExportParams createExportParams(String title, String sheetName) { + ExportParams exportParams = new ExportParams(); + exportParams.setTitle(title); + exportParams.setType(ExcelType.HSSF); + exportParams.setSheetName(sheetName); + exportParams.setStyle(CustomExcelExportStyler.class); + return exportParams; + } + + private LambdaQueryWrapper generationWrapper(HttpServletRequest request) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + String vehicleModel = request.getParameter("vehicleModel"); // 整车型号 + String vinTopEight = request.getParameter("vinTopEight"); // VIN前八位 + String vehicleTypeCode = request.getParameter("vehicleTypeCode"); // 车型代码 + if (StringUtils.isNotBlank(vehicleModel)) { + lambdaQueryWrapper.like(LawsVehicleInternationalLibrary::getVehicleModel, vehicleModel); + } + if (StringUtils.isNotBlank(vinTopEight)) { + lambdaQueryWrapper.like(LawsVehicleInternationalLibrary::getVinTopEight, vinTopEight); + } + if (StringUtils.isNotBlank(vehicleTypeCode)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(LawsVehicleInternationalLibrarySublist::getVehicleId); + queryWrapper.like(LawsVehicleInternationalLibrarySublist::getVehicleTypeCode, vehicleTypeCode); + List list = lawsVehicleInternationalLibrarySublistService.list(queryWrapper); + List ids = list.stream().map(LawsVehicleInternationalLibrarySublist::getVehicleId).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(ids)) { + lambdaQueryWrapper.in(LawsVehicleInternationalLibrary::getId, ids); + }else { + lambdaQueryWrapper.in(LawsVehicleInternationalLibrary::getId, ""); + } + } + lambdaQueryWrapper.eq(LawsVehicleInternationalLibrary::getIsFinish, Constant.IS_FINISH); // 只展示走完流程的数据 + return lambdaQueryWrapper; + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleInternationalLibrarySublistServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleInternationalLibrarySublistServiceImpl.java new file mode 100644 index 00000000..3693cfdf --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/businessSupport/service/impl/LawsVehicleInternationalLibrarySublistServiceImpl.java @@ -0,0 +1,20 @@ +package com.jero.modules.laws.businessSupport.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.modules.laws.businessSupport.entity.LawsVehicleInternationalLibrarySublist; +import com.jero.modules.laws.businessSupport.mapper.LawsVehicleInternationalLibrarySublistMapper; +import com.jero.modules.laws.businessSupport.service.ILawsVehicleInternationalLibrarySublistService; +import org.springframework.stereotype.Service; + +/** + *

+ * 国际整车型号及VIN前八位管控库-子表 服务实现类 + *

+ * + * @author sz + * @since 2024-09-29 + */ +@Service +public class LawsVehicleInternationalLibrarySublistServiceImpl extends ServiceImpl implements ILawsVehicleInternationalLibrarySublistService { + +} diff --git a/laws-modules/src/main/resources/bpmn/国际整车型号和VIN前八位管控流程.bpmn20.xml b/laws-modules/src/main/resources/bpmn/国际整车型号和VIN前八位管控流程.bpmn20.xml new file mode 100644 index 00000000..b2bea86d --- /dev/null +++ b/laws-modules/src/main/resources/bpmn/国际整车型号和VIN前八位管控流程.bpmn20.xml @@ -0,0 +1,166 @@ + + + + + + + + + + + ${!pass} + + + + + + + + + + + + + ${pass} + + + + ${pass} + + + + + ${pass} + + + + + + + + + + ${pass} + + + ${!pass} + + + ${!pass} + + + ${!pass} + + + ${!pass} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +