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}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+