diff --git a/.gitignore b/.gitignore index 3e0d9aa6..a7ee8a90 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,5 @@ target *.bpmn/ *logs/ .metadata + +adc-da-main/src/main/resources/application-zxy.properties \ No newline at end of file diff --git a/adc-da-activiti/pom.xml b/adc-da-activiti/pom.xml new file mode 100644 index 00000000..5d1a8e56 --- /dev/null +++ b/adc-da-activiti/pom.xml @@ -0,0 +1,50 @@ + + + + foton-slrs-system-rest + com.adc + 3.0.0 + + 4.0.0 + + adc-da-activiti + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + 2.2.0.RELEASE + + + org.springframework.cloud + spring-cloud-starter-openfeign + 2.2.0.RELEASE + + + org.springframework.cloud + spring-cloud-loadbalancer + 2.2.0.RELEASE + + + com.adc + adc-da-sys + 3.0.0 + compile + + + com.adc + adc-da-slrs + 3.0.0 + compile + + + org.dom4j + dom4j + 2.0.0 + + + + \ No newline at end of file diff --git a/adc-da-activiti/src/main/java/com/adc/da/FeignClient/FeignConfig.java b/adc-da-activiti/src/main/java/com/adc/da/FeignClient/FeignConfig.java new file mode 100644 index 00000000..2d309a31 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/FeignClient/FeignConfig.java @@ -0,0 +1,32 @@ +package com.adc.da.FeignClient; + +import feign.RequestInterceptor; +import feign.RequestTemplate; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2021年10月11日 13:33 + */ + +/** + * Feign配置 + * 使用FeignClient进行服务间调用,传递headers信息 + */ +@Configuration +public class FeignConfig implements RequestInterceptor { + @Override + public void apply(RequestTemplate requestTemplate) { + ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); + if(attributes != null){ + HttpServletRequest request = attributes.getRequest(); + //添加token + requestTemplate.header("token", request.getHeader("token")); + } + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/FeignClient/workFlowFeignClient.java b/adc-da-activiti/src/main/java/com/adc/da/FeignClient/workFlowFeignClient.java new file mode 100644 index 00000000..19d0f7f5 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/FeignClient/workFlowFeignClient.java @@ -0,0 +1,476 @@ +package com.adc.da.FeignClient; + +import com.adc.da.common.*; +import com.adc.da.common.Category; +import com.adc.da.common.Page; +import com.adc.da.workFlow.entity.BusProcessEvaluationHis; +import com.adc.da.workFlow.entity.BusProcessModelHis; +import com.adc.da.workFlow.entity.ProcessRollBackEO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; +import java.util.Set; + +//@FeignClient(value = "bat-wkflow-test") +@FeignClient(value = "bat-wkflow") +//@FeignClient(value = "shan6") +public interface workFlowFeignClient { + + @RequestMapping(value = "/bat-wkflow/busProcessModel/saveEditFile",method = RequestMethod.GET) + BusProcessModelHis saveEditFile(@RequestParam("model") String model); + + @RequestMapping(value = "/bat-wkflow/busProcessModel/processEditFile",method = RequestMethod.GET) + BusProcessModelHis processEditFile(@RequestParam("id") String id); + + @RequestMapping(value = "/bat-wkflow/busProcessModel/processModelHisOneUpdStatus",method = RequestMethod.GET) + BusProcessModelHis processModelHisOneUpdStatus(@RequestParam("pid") String pid, @RequestParam("taskId") String taskId); + + @RequestMapping(value = "/bat-wkflow/busProcessModel/processModelHisOneCount",method = RequestMethod.GET) + BusProcessModelHis processModelHisOneCount(@RequestParam("pid") String pid); + + @RequestMapping(value = "/bat-wkflow/busProcessModel/processModelHisOne",method = RequestMethod.GET) + BusProcessModelHis processModelHisOne(@RequestParam("pid") String pid, @RequestParam("taskId") String taskId); + + @RequestMapping(value = "/bat-wkflow/busProcessEvaluation/evaluationHisListByOne",method = RequestMethod.GET) + BusProcessEvaluationHis evaluationHisListByOne(@RequestParam("pid") String pid,@RequestParam("taskInfo") String taskInfo); + + @RequestMapping(value = "/bat-wkflow/busProcessEvaluation/evaluationHisListRepSum",method = RequestMethod.GET) + Map evaluationHisListRepSum(@RequestParam("pid") String pid); + + @RequestMapping(value = "/bat-wkflow/busProcessEvaluation/evaluationHisListRep",method = RequestMethod.GET) + List evaluationHisListRep(@RequestParam("pid") String pid); + + @RequestMapping(value = "/bat-wkflow/busProcessEvaluation/evaluationHisList",method = RequestMethod.GET) + List evaluationHisList(@RequestParam("pid") String pid); + + @RequestMapping(value = "/bat-wkflow/oaTaskExec/execTask",method = RequestMethod.GET) + Map execTask(@RequestParam("todoId") String todoId); + + @RequestMapping(value = "/bat-wkflow/esPrcRelation/acceptTask",method = RequestMethod.GET) + Integer acceptTask(@RequestParam("nowEsId") String nowEsId, @RequestParam("oaFlag") String oaFlag, @RequestParam("taskId") String taskId); + + @RequestMapping(value = "/bat-wkflow/esPrcRelation/judgeAcceptTask",method = RequestMethod.GET) + Boolean judgeAcceptTask(@RequestParam("nowEsId") String nowEsId, @RequestParam("oaFlag") String oaFlag, @RequestParam("prcIdGk") String prcIdGk); + + @RequestMapping(value = "/bat-wkflow/task/get_verify_by_instance",method = RequestMethod.GET) + Map get_verify_by_instance(@RequestParam("taskId") String taskId, @RequestParam("pId") String pId); + + @RequestMapping(value = "/bat-wkflow/activiti_define_start_user",method = RequestMethod.GET) + Wrapper activiti_define_start(@RequestParam("id") String id, @RequestParam("userId") String userId, @RequestParam("bpnId") String bpnId); + + @RequestMapping(value = "/bat-wkflow/activiti_define_start_user_rollBack",method = RequestMethod.POST) + Wrapper activiti_define_start_rollBack(@RequestBody ProcessRollBackEO processRollBackEO); + + /** + * 企标复审流程专用 + * @param id + * @param userId + * @return + */ + @RequestMapping(value = "/bat-wkflow/activiti_define_start_user1",method = RequestMethod.GET) + Map activiti_define_start1(@RequestParam("id") String id, @RequestParam("userId") String userId, @RequestParam("standName") String standName); + + @RequestMapping(value = "/bat-wkflow/todotask",method = RequestMethod.GET) + List todotask(@RequestParam("userId") String userId, @RequestParam("pId") String pId); + + @RequestMapping(value = "/bat-wkflow/hastodoTasksList",method = RequestMethod.POST) + Wrapper> HastodoTasksListByUserId(@RequestBody TaskCommonQuery taskCommonQuery); + + @RequestMapping(value = "/bat-wkflow/todoTaskList",method = RequestMethod.POST) + List todoTaskListByUserId(@RequestBody TaskCommonQuery taskCommonQuery); + + @RequestMapping(value = "/bat-wkflow/todoTaskListNew",method = RequestMethod.POST) + List todoTaskListByUserIdNew(@RequestBody TaskCommonQuery taskCommonQuery); + + @RequestMapping(value = "/bat-wkflow/completeTask",method = RequestMethod.POST) + Wrapper completeTaskByUserId(@RequestBody BusMes busMes); + + @RequestMapping(value = "/bat-wkflow/completeTaskNew",method = RequestMethod.POST) + Wrapper completeTaskByUserIdNew(@RequestBody BusMesSpecial busMes); + + @RequestMapping(value = "/bat-wkflow/saveTask",method = RequestMethod.POST) + public Wrapper saveTask(@RequestBody BusMes busMes); + + @RequestMapping(value = "/bat-wkflow/saveTaskForXZYQ",method = RequestMethod.POST) + public Wrapper saveTaskForXZYQ(@RequestBody BusMes busMes); + + + @RequestMapping(value = "/bat-wkflow/changeAssigneeNew",method = RequestMethod.GET) + public Wrapper run(@RequestParam("taskId") String taskId, @RequestParam("assignee") String assignee, + @RequestParam("userId") String userId, @RequestParam("pId") String pId); + + @RequestMapping(value = "/bat-wkflow/queryDetail",method = RequestMethod.GET) + BusProcessNew queryDetail(@RequestParam("taskIds") String taskIds); + + /** + * 获取入库流程联络人节点详情信息 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/inboundLiaisonDetail",method = RequestMethod.GET) + BusProcessNew inboundLiaisonDetail(@RequestParam("taskIds") String taskIds, @RequestParam("pId") String pId); + + /** + * 国内法规入库评估流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/inboundLiaisonDetailForLawsAss",method = RequestMethod.GET) + String inboundLiaisonDetailForLawsAss(@RequestParam("taskIds") String taskIds); + + /** + * 国内法规入库评估流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/nonconformity",method = RequestMethod.GET) + String nonconformity(@RequestParam("taskIds") String taskIds); + /** + * 项目评估流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/projectAssessDetail",method = RequestMethod.GET) + BusProcessNew projectAssessDetail(@RequestParam("taskIds") String taskIds); + + /** + * 企标制修订申请流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/qbzxdsqlcDetail",method = RequestMethod.GET) + String qbzxdsqlcDetail(@RequestParam("taskIds") String taskIds); + /** + * 采购申请流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/cgsqDetail",method = RequestMethod.GET) + String cgsqDetail(@RequestParam("taskIds") String taskIds); + + /** + * 复审流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/fsDetail",method = RequestMethod.GET) + String fsDetail(@RequestParam("taskIds") String taskIds); + + /** + * 企标废止流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/qbfzlcDetail",method = RequestMethod.GET) + String qbfzlcDetail(@RequestParam("taskIds") String taskIds); + + /** + * 企标制修订流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/qbzxdlcDetail",method = RequestMethod.GET) + String qbzxdlcDetail(@RequestParam("taskIds") String taskIds); + + /** + * 政策法规入库发起人查看流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/zcfgrklcFqrDetail",method = RequestMethod.GET) + String zcfgrklcFqrDetail(@RequestParam("taskIds") String taskIds); + /** + * 政策法规入库流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/zcfgrklcDetail",method = RequestMethod.GET) + String zcfgrklcDetail(@RequestParam("taskIds") String taskIds); + /** + * 政策法规入库流程联络人选择FO详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/zcfgrklcLlrDetail",method = RequestMethod.GET) + String zcfgrklcLlrDetail(@RequestParam("taskIds") String taskIds); + + /** + * 企标制修订评估详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/qbzxdpgDetail",method = RequestMethod.GET) + String qbzxdpgDetail(@RequestParam("taskIds") String taskIds); + + /** + * 保存标准入库流程 + * @param busMes + * @return + */ + @RequestMapping(value = "/bat-wkflow/saveinboundTask",method = RequestMethod.POST) + Wrapper saveinboundTask(@RequestBody BusMes busMes); + + /** + * 整改流程保存 + * @param busMes + * @return + */ + @RequestMapping(value = "/bat-wkflow/saveUnqualified",method = RequestMethod.POST) + Wrapper saveUnqualified(@RequestBody BusMes busMes); + + /** + * 国内法规入库评估流程保存 + * @param busMes + * @return + */ + @RequestMapping(value = "/bat-wkflow/saveInboundLiaisonDetailForLawsAss",method = RequestMethod.POST) + Wrapper saveInboundLiaisonDetailForLawsAss(@RequestBody BusMes busMes); + + /**国内法规入库项目评估流程保存 + * @Author yuzhong + * @Param [busMes] + * @return com.adc.da.lawss.common.Wrapper + */ + @RequestMapping(value = "/bat-wkflow/saveProjectAssessDetail2",method = RequestMethod.POST) + Wrapper saveProjectAssessDetail2(@RequestBody BusMes busMes); + + @RequestMapping(value = "/bat-wkflow/saveZcfgpg",method = RequestMethod.POST) + Wrapper saveZcfgpg(@RequestBody BusMes busMes); + + @RequestMapping(value = "/bat-wkflow/saveProjectAssessDetail3",method = RequestMethod.POST) + Wrapper saveProjectAssessDetail3(@RequestBody BusMes busMes); + + @RequestMapping(value = "/bat-wkflow/saveProjectAssessDetail4",method = RequestMethod.POST) + Wrapper saveProjectAssessDetail4(@RequestBody BusMes busMes); + + @RequestMapping(value = "/bat-wkflow/saveProjectAssessDetail5",method = RequestMethod.POST) + Wrapper saveProjectAssessDetail5(@RequestBody BusMes busMes); + + /** + * 公共保存 + * @param busMes + * @return + */ + @RequestMapping(value = "/bat-wkflow/saveTaskForPub",method = RequestMethod.POST) + Wrapper saveTaskForPub(@RequestBody BusMes busMes); + + /** + * 采购申请保存 + * @param busMes + * @return + */ + @RequestMapping(value = "/bat-wkflow/saveCgSq",method = RequestMethod.POST) + Wrapper saveCgSq(@RequestBody BusMes busMes); + + /** + * 保存任务第一步 + * @param busMes + */ + @RequestMapping(value = "/bat-wkflow/saveTaskFirst",method = RequestMethod.POST) + Wrapper saveTaskFirst(@RequestBody BusMes busMes); + + /** + * 查询任务第一步 + * @param bpnId + * @return + */ + @RequestMapping(value = "/bat-wkflow/queryTaskFirst",method = RequestMethod.GET) + BusProcessName queryTaskFirst(@RequestParam("bpnId") String bpnId); + + /** + * 查询指定任务(此接口暂无调用) + * @param prcId + * @return + */ + @RequestMapping(value = "/bat-wkflow/queryTaskIndex",method = RequestMethod.GET) + BusProcessNew queryTaskIndex(@RequestParam("prcId") String prcId,@RequestParam("taskIds") String taskIds); + /** + * 查询草稿 + * @param taskCommonQuery + */ + @RequestMapping(value = "/bat-wkflow/queryTaskDraft",method = RequestMethod.POST) + List queryTaskDraft(@RequestBody TaskCommonQuery taskCommonQuery); + + /** + * 自动发起流程保存第一步 + * @param busMes + */ + @RequestMapping(value = "/bat-wkflow/autoSaveFirst",method = RequestMethod.POST) + Wrapper autoSaveFirst(@RequestBody BusMes busMes); + + /** + * (复审流程专用)自动发起流程保存第一步 + * @param busMes + */ + @RequestMapping(value = "/bat-wkflow/autoSaveFirst1",method = RequestMethod.POST) + Wrapper autoSaveFirst1(@RequestBody BusMes busMes); + + /** + * 查询流程是否结束 + * @param pId + * @return + */ + @RequestMapping(value = "/bat-wkflow/isEnd",method = RequestMethod.GET) + String isEnd(@RequestParam("pId") String pId); + + /** + * 删除流程 + * @param pId + * @return + */ + @RequestMapping(value = "/bat-wkflow/deleteProcessInstance",method = RequestMethod.GET) + Wrapper deleteProcessInstance(@RequestParam("pId") String pId); + + /** + * 删除草稿 + * @param id + * @return + */ + @RequestMapping(value = "/bat-wkflow/deleteDraft",method = RequestMethod.GET) + Wrapper deleteDraft(@RequestParam("id") String id); + + /** + * 已发流程 + * @param taskCommonQuery + * @return + */ + @RequestMapping(value = "/bat-wkflow/issuedProcess",method = RequestMethod.POST) + Page issuedProcess(@RequestBody TaskCommonQuery taskCommonQuery); + + /** + * 已办流程 + * @param taskCommonQuery + * @return + */ + @RequestMapping(value = "/bat-wkflow/doneProcess",method = RequestMethod.POST) + Page doneProcess(@RequestBody TaskCommonQuery taskCommonQuery); + + /** + * @Author yuzhong + * 流程实例明细列表 + * @Date 2020/12/18 + * @Param [processInstanceId] + * @return java.util.List> + */ + @RequestMapping(value = "/bat-wkflow/task/get_list_by_instance",method = RequestMethod.GET) + List> get_list_by_instance(@RequestParam("prcNum") String prcNum, @RequestParam(value = "sortWord", required = false) String sortWord, @RequestParam(value = "shunxu", required = false) String shunxu); + + @RequestMapping(value = "/bat-wkflow/task/get_gather_by_instance",method = RequestMethod.GET) + List> get_gather_by_instance(@RequestParam("prcNum") String prcNum, @RequestParam(value = "sortWord", required = false) String sortWord, @RequestParam(value = "shunxu", required = false) String shunxu); + + /** + * @Author yuzhong + * 获取图片 + * @Date 2020/12/18 + * @Param [processInstanceId] + * @return java.util.List> + */ + @RequestMapping(value = "/bat-wkflow/instance/getImg",method = RequestMethod.GET) + byte[] getImg(@RequestParam("prcNum") String prcNum); + + /** + * @Author yuzhong + * 监控流程列表 + * @Date 2020/12/18 + * @Param [userId] + * @return java.util.List + */ + @RequestMapping(value = "/bat-wkflow/allProcess",method = RequestMethod.POST) + Page allProcess(@RequestBody TaskCommonQuery taskCommonQuery); + + /** + * @Author yuzhong + * @Date 2020/12/28 + * @Param [prcNum] + * @return java.util.List> + */ + @RequestMapping(value = "/bat-wkflow/forceRecall",method = RequestMethod.GET) + Wrapper forceRecall(@RequestParam("prcId") String prcId); + + /** + * @Author yuzhong + * @Date 2020/12/28 + * @Param [prcNum] + * @return java.util.List> + */ + @RequestMapping(value = "/bat-wkflow/category/category/list",method = RequestMethod.GET) + Wrapper> categoryList(); + + /** + * @Author yuzhong + * @Date 2020/12/28 + * @Param [prcNum] + * @return java.util.List> + */ + @RequestMapping(value = "/bat-wkflow/category/category/add",method = RequestMethod.POST) + Wrapper addCategory(@RequestBody Category category); + + @RequestMapping(value = "/bat-wkflow/category/category/delete",method = RequestMethod.GET) + Wrapper deleteCategory(@RequestParam("objectId") String objectId); + + @RequestMapping(value = "/bat-wkflow/category/category/edit",method = RequestMethod.POST) + Wrapper editCategory(@RequestBody Category category); + + @RequestMapping(value = "/bat-wkflow/modelListPage",method = RequestMethod.GET) + Wrapper> modelListPage(@RequestParam("name") String name, @RequestParam("category_id") String category_id, + @RequestParam("current") int current, @RequestParam("size") int size); + + /** + * @Author yuzhong + * @Date 2020/12/28 + * @Param [prcNum] + * @return java.util.List> + */ + @RequestMapping(value = "/bat-wkflow/zcfgrkpgDetail",method = RequestMethod.GET) + List zcfgrkpgDetail(@RequestParam("pId") String pId); + + @RequestMapping(value = "/bat-wkflow/updatModel",method = RequestMethod.GET) + Wrapper updatModel(@RequestParam("modelId") String modelId, @RequestParam("categoryId") String categoryId); + + @RequestMapping(value = "/bat-wkflow/findPrcNumByPid",method = RequestMethod.GET) + Wrapper findPrcNumByPid(@RequestParam("pId") String pId); + + @RequestMapping(value = "/bat-wkflow/findPrcNameByPrcNum",method = RequestMethod.GET) + Wrapper findPrcNameByPrcNum(@RequestParam("prcNum") String prcNum); + + @RequestMapping(value = "/bat-wkflow/getStandCode",method = RequestMethod.GET) + Set getStandCode(); + + /** + * 行政管理要求评估流程详情 + * @param taskIds + * @return + */ + @RequestMapping(value = "/bat-wkflow/inboundLiaisonDetailForXZYQ",method = RequestMethod.GET) + BusProcessNew inboundLiaisonDetailForXZYQ(@RequestParam("taskIds") String taskIds); + + @RequestMapping(value = "/bat-wkflow/decodeDetail",method = RequestMethod.GET) + BusProcessNew decodeDetail(@RequestParam("taskIds") String taskIds, @RequestParam("pId") String pId); + + @RequestMapping(value = "/bat-wkflow/queryBusProcessNameForEnd",method = RequestMethod.POST) + List queryBusProcessNameForEnd(@RequestBody String taskId); + +// @RequestMapping(value = "/bat-wkflow/findProcessNameByPrcNum",method = RequestMethod.POST) +// List findProcessNameByPrcNum(@RequestBody String taskId); + + @RequestMapping(value = "/bat-wkflow/datas/bus-process-new/everyDayTenOlock",method = RequestMethod.GET) + List everyDayTenOlock(); + + @RequestMapping(value = "/bat-wkflow/datas/bus-process-new/everyDayTenOlockSAM",method = RequestMethod.GET) + List everyDayTenOlockSAM(); + + @RequestMapping(value = "/bat-wkflow/delCG",method = RequestMethod.POST) + String delCG(@RequestParam("id") String id); + + @RequestMapping(value = "/bat-wkflow/esTechRelation/setRelation",method = RequestMethod.POST) + void setRelation(@RequestParam("esPlanId")String esPlanId,@RequestParam("prcId") String prcId, @RequestParam("finish") String finish); + @RequestMapping(value = "/bat-wkflow/esTechRelation/getEsByWk",method = RequestMethod.GET) + String getEsByWk(@RequestParam("prcId")String prcId); +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/FeignClientImpl/workFlowFeignClientImpl.java b/adc-da-activiti/src/main/java/com/adc/da/FeignClientImpl/workFlowFeignClientImpl.java new file mode 100644 index 00000000..fa997022 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/FeignClientImpl/workFlowFeignClientImpl.java @@ -0,0 +1,421 @@ +package com.adc.da.FeignClientImpl; + +import com.adc.da.FeignClient.workFlowFeignClient; +import com.adc.da.common.Wrapper; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.common.*; +import com.adc.da.common.Page; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.service.IUserEOService; +import com.adc.da.workFlow.entity.BusProcessEvaluationHis; +import com.adc.da.workFlow.entity.BusProcessModelHis; +import com.adc.da.workFlow.entity.ProcessRollBackEO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +@Component +public class workFlowFeignClientImpl { + + @Autowired + private workFlowFeignClient workFlowFeignClient; + + @Autowired + private IUserEOService userEOService; + + public BusProcessModelHis saveEditFile(@RequestParam("model") String model){ + BusProcessModelHis stringWrapper = workFlowFeignClient.saveEditFile(model); + return stringWrapper; + } + + public BusProcessModelHis processEditFile(@RequestParam("id") String id){ + BusProcessModelHis stringWrapper = workFlowFeignClient.processEditFile(id); + return stringWrapper; + } + + public BusProcessModelHis processModelHisOneUpdStatus(@RequestParam("pid") String pid,@RequestParam("taskId") String taskId){ + BusProcessModelHis stringWrapper = workFlowFeignClient.processModelHisOneUpdStatus(pid,taskId); + return stringWrapper; + } + + public BusProcessModelHis processModelHisOneCount(@RequestParam("pid") String pid){ + BusProcessModelHis stringWrapper = workFlowFeignClient.processModelHisOneCount(pid); + return stringWrapper; + } + + public BusProcessModelHis processModelHisOne(@RequestParam("pid") String pid,@RequestParam("taskId") String taskId){ + BusProcessModelHis stringWrapper = workFlowFeignClient.processModelHisOne(pid,taskId); + return stringWrapper; + } + + public BusProcessEvaluationHis evaluationHisListByOne(@RequestParam("pid") String pid,@RequestParam("taskInfo") String taskInfo){ + BusProcessEvaluationHis stringWrapper = workFlowFeignClient.evaluationHisListByOne(pid,taskInfo); + return stringWrapper; + } + + public Map evaluationHisListRepSum(@RequestParam("pid") String pid){ + Map stringWrapper = workFlowFeignClient.evaluationHisListRepSum(pid); + return stringWrapper; + } + + public List evaluationHisListRep(@RequestParam("pid") String pid){ + List stringWrapper = workFlowFeignClient.evaluationHisListRep(pid); + return stringWrapper; + } + + public List evaluationHisList(@RequestParam("pid") String pid){ + List stringWrapper = workFlowFeignClient.evaluationHisList(pid); + return stringWrapper; + } + + public Map execTask(@RequestParam("todoId") String todoId){ + Map stringWrapper = workFlowFeignClient.execTask(todoId); + return stringWrapper; + } + + public Integer acceptTack(@RequestParam("nowEsId") String nowEsId, @RequestParam("oaFlag") String oaFlag, @RequestParam("taskId") String taskId){ + Integer integerWrapper = workFlowFeignClient.acceptTask(nowEsId,oaFlag,taskId); + return integerWrapper; + } + + public Boolean judgeAcceptTack(@RequestParam("nowEsId") String nowEsId, @RequestParam("oaFlag") String oaFlag, @RequestParam("prcIdGk") String prcIdGk){ + Boolean booleanWrapper = workFlowFeignClient.judgeAcceptTask(nowEsId,oaFlag,prcIdGk); + return booleanWrapper; + } + + public Map get_verify_by_instance(@RequestParam("taskId") String taskId, @RequestParam("pId") String pId){ + Map stringWrapper = workFlowFeignClient.get_verify_by_instance(taskId,pId); + return stringWrapper; + } + + public ResponseMessage activiti_define_start(@RequestParam("Id") String Id, @RequestParam("userId") String userId, @RequestParam("bpnId") String bpnId){ + Wrapper stringWrapper = workFlowFeignClient.activiti_define_start(Id,userId,bpnId); + return Result.success(stringWrapper.getResult()); + } + + public ResponseMessage activiti_define_start_rollBack(@RequestParam("Id") String Id, @RequestParam("userId") String userId, @RequestParam("bpnId") String bpnId,@RequestParam("json")String json){ + ProcessRollBackEO rollBackEO=new ProcessRollBackEO(); + rollBackEO.setId(Id); + rollBackEO.setBpnId(bpnId); + rollBackEO.setJson(json); + rollBackEO.setUserId(userId); + Wrapper stringWrapper = workFlowFeignClient.activiti_define_start_rollBack(rollBackEO); + return Result.success(stringWrapper.getResult()); + } + public Map activiti_define_start1(@RequestParam("Id") String Id, @RequestParam("userId") String userId, @RequestParam("standName") String standName){ + Map map = workFlowFeignClient.activiti_define_start1(Id,userId,standName); + return map; + } + + public List todotask(@RequestParam("userId") String userId, @RequestParam("pId") String pId){ + List todotask = workFlowFeignClient.todotask(userId, pId); + + for (BusProcessNew busProcessNew : todotask) { + UserEO userEO = userEOService.selectByPrimaryKey(busProcessNew.getUserId()); + busProcessNew.setUsername(userEO.getUname()); + } + return todotask; + } + + public Wrapper> HastodoTasksListByUserId(@RequestBody TaskCommonQuery taskCommonQuery){ + Wrapper> mapWrapper = workFlowFeignClient.HastodoTasksListByUserId(taskCommonQuery); + return mapWrapper; + } + + public List todoTaskListByUserId(@RequestBody TaskCommonQuery taskCommonQuery){ + List mapWrapper = workFlowFeignClient.todoTaskListByUserId(taskCommonQuery); + return mapWrapper; + } + + public List todoTaskListByUserIdNew(@RequestBody TaskCommonQuery taskCommonQuery){ + List mapWrapper = workFlowFeignClient.todoTaskListByUserId(taskCommonQuery); + return mapWrapper; + } + + /** + * 开始分页 + * @param list + * @param pageNum 页码 + * @param pageSize 每页多少条数据 + * @return + */ + public static List startPage(List list, Integer pageNum, + Integer pageSize) { + if (list == null) { + return null; + } + if (list.size() == 0) { + return null; + } + + Integer count = list.size(); // 记录总数 + Integer pageCount = 0; // 页数 + if (count % pageSize == 0) { + pageCount = count / pageSize; + } else { + pageCount = count / pageSize + 1; + } + + int fromIndex = 0; // 开始索引 + int toIndex = 0; // 结束索引 + + if (pageNum != pageCount) { + fromIndex = (pageNum - 1) * pageSize; + toIndex = fromIndex + pageSize; + } else { + fromIndex = (pageNum - 1) * pageSize; + toIndex = count; + } + + List pageList = list.subList(fromIndex, toIndex); + + return pageList; + } + + public Wrapper completeTaskByUserId( BusMes busMes){ + Wrapper stringWrapper = workFlowFeignClient.completeTaskByUserId(busMes); + return stringWrapper; + } + + public Wrapper completeTaskByUserIdNew( BusMesSpecial busMes){ + Wrapper stringWrapper = workFlowFeignClient.completeTaskByUserIdNew(busMes); + return stringWrapper; + } + + public Wrapper saveTask(@RequestBody BusMes busMes){ + Wrapper stringWrapper = workFlowFeignClient.saveTask(busMes); + return stringWrapper; + } + + public Wrapper saveTaskForXZYQ(@RequestBody BusMes busMes){ + Wrapper stringWrapper = workFlowFeignClient.saveTaskForXZYQ(busMes); + return stringWrapper; + } + + public Wrapper run(@RequestParam("taskId")String taskId, @RequestParam("assignee") String assignee, + @RequestParam("userId")String userId, @RequestParam("pId") String pId){ + Wrapper run = workFlowFeignClient.run(taskId, assignee,userId,pId); + return run; + } + + + public BusProcessNew queryDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.queryDetail(taskIds); + } + + public BusProcessNew inboundLiaisonDetail(@RequestParam("taskIds") String taskIds, @RequestParam("pId") String pId){ + return workFlowFeignClient.inboundLiaisonDetail(taskIds,pId); + } + + public String inboundLiaisonDetailForLawsAss(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.inboundLiaisonDetailForLawsAss(taskIds); + } + + public String nonconformity(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.nonconformity(taskIds); + } + + public BusProcessNew projectAssessDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.projectAssessDetail(taskIds); + } + + public String qbzxdsqlcDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.qbzxdsqlcDetail(taskIds); + } + public String cgsqDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.cgsqDetail(taskIds); + } + + public String fsDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.fsDetail(taskIds); + } + + public String qbfzDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.qbfzlcDetail(taskIds); + } + + public String qbzxdDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.qbzxdlcDetail(taskIds); + } + + public String zcfgrklcFqrDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.zcfgrklcFqrDetail(taskIds); + } + public String zcfgrklcDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.zcfgrklcDetail(taskIds); + } + + public String zcfgrklcLlrDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.zcfgrklcLlrDetail(taskIds); + } + + public String qbzxdpgDetail(@RequestParam("taskIds")String taskIds){ + return workFlowFeignClient.qbzxdpgDetail(taskIds); + } + + public Wrapper saveinboundTask(BusMes busMes){ + return workFlowFeignClient.saveinboundTask(busMes); + } + + public Wrapper saveUnqualified(BusMes busMes){ + return workFlowFeignClient.saveUnqualified(busMes); + } + + public Wrapper saveInboundLiaisonDetailForLawsAss(@RequestBody BusMes busMes){ + return workFlowFeignClient.saveInboundLiaisonDetailForLawsAss(busMes); + } + + public Wrapper saveProjectAssessDetail2(@RequestBody BusMes busMes){ + return workFlowFeignClient.saveProjectAssessDetail2(busMes); + } + + public Wrapper saveProjectAssessDetail3(@RequestBody BusMes busMes){ + return workFlowFeignClient.saveProjectAssessDetail3(busMes); + } + + public Wrapper saveProjectAssessDetail4(@RequestBody BusMes busMes){ + return workFlowFeignClient.saveProjectAssessDetail4(busMes); + } + + public Wrapper saveProjectAssessDetail5(@RequestBody BusMes busMes){ + return workFlowFeignClient.saveProjectAssessDetail5(busMes); + } + + public Wrapper saveZcfgpg(@RequestBody BusMes busMes){ + return workFlowFeignClient.saveZcfgpg(busMes); + } + + public Wrapper saveTaskFirst(BusMes busMes){ + return workFlowFeignClient.saveTaskFirst(busMes); + } + + public Wrapper saveTaskForPub(BusMes busMes){ + return workFlowFeignClient.saveTaskForPub(busMes); + } + + public BusProcessName queryTaskFirst(@RequestParam("bpnId")String bpnId){ + return workFlowFeignClient.queryTaskFirst(bpnId); + } + public BusProcessNew queryTaskIndex(@RequestParam("prcId") String prcId,@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.queryTaskIndex(prcId,taskIds); + } + + public List queryTaskDraft(@RequestBody TaskCommonQuery taskCommonQuery){ + List busProcessNames = workFlowFeignClient.queryTaskDraft(taskCommonQuery); + return busProcessNames; + } + + public Wrapper autoSaveFirst(@RequestBody BusMes busMes){ + return workFlowFeignClient.autoSaveFirst(busMes); + } + public Wrapper autoSaveFirst1(@RequestBody BusMes busMes){ + return workFlowFeignClient.autoSaveFirst(busMes); + } + + public String isEnd(@RequestParam("pId")String pId){ + return workFlowFeignClient.isEnd(pId); + } + + public Wrapper deleteProcessInstance(@RequestParam("pId")String pId){ + return workFlowFeignClient.deleteProcessInstance(pId); + } + + public Wrapper deleteDraft(@RequestParam("id")String id){ + return workFlowFeignClient.deleteDraft(id); + } + + public Page issuedProcess(@RequestBody TaskCommonQuery taskCommonQuery){ + Page busProcessNames = workFlowFeignClient.issuedProcess(taskCommonQuery); + return busProcessNames; + } + + public Page doneProcess(@RequestBody TaskCommonQuery taskCommonQuery){ + Page busProcessNames = workFlowFeignClient.doneProcess(taskCommonQuery); + return busProcessNames; + } + public List> get_list_by_instance(@RequestParam("prcNum") String prcNum, @RequestParam(value="sortWord",required = false)String sortWord, @RequestParam(value="shunxu",required = false) String shunxu){ + return workFlowFeignClient.get_list_by_instance(prcNum,sortWord,shunxu); + } + public List> get_gather_by_instance(@RequestParam("prcNum") String prcNum, @RequestParam(value="sortWord",required = false)String sortWord, @RequestParam(value="shunxu",required = false) String shunxu){ + return workFlowFeignClient.get_gather_by_instance(prcNum,sortWord,shunxu); + } + public byte[] getImg(@RequestParam("prcNum")String prcNum){ + return workFlowFeignClient.getImg(prcNum); + } + + public Page allProcess(@RequestBody TaskCommonQuery taskCommonQuery){ + return workFlowFeignClient.allProcess(taskCommonQuery); + } + + public Wrapper forceRecall(@RequestParam("prcId") String prcId){ + return workFlowFeignClient.forceRecall(prcId); + } + + public Wrapper> categoryList(){ + return workFlowFeignClient.categoryList(); + } + + public Wrapper addCategory(@RequestBody Category category){ + return workFlowFeignClient.addCategory(category); + } + + public Wrapper deleteCategory(@RequestParam("objectId") String objectId){ + return workFlowFeignClient.deleteCategory(objectId); + } + + public Wrapper editCategory(@RequestBody Category category){ + return workFlowFeignClient.editCategory(category); + } + + public Wrapper> modelListPage(@RequestParam("name")String name, @RequestParam("category_id")String category_id, + @RequestParam("current")int current, @RequestParam("size")int size){ + return workFlowFeignClient.modelListPage(name,category_id,current,size); + } + + public List zcfgrkpgDetail(@RequestParam("pId") String pId){ + return workFlowFeignClient.zcfgrkpgDetail(pId); + } + + public Wrapper updatModel(@RequestParam("modelId")String modelId, @RequestParam("categoryId")String categoryId){ + return workFlowFeignClient.updatModel(modelId,categoryId); + } + + public Wrapper findPrcNumByPid(@RequestParam("pId")String pId){ + return workFlowFeignClient.findPrcNumByPid(pId); + } + + public Wrapper findPrcNameByPrcNum(@RequestParam("prcNum")String prcNum){ + return workFlowFeignClient.findPrcNameByPrcNum(prcNum); + } + + public BusProcessNew inboundLiaisonDetailForXZYQ(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.inboundLiaisonDetailForXZYQ(taskIds); + } + public BusProcessNew decodeDetail(@RequestParam("taskIds") String taskIds,@RequestParam("pId")String pId){ + return workFlowFeignClient.decodeDetail(taskIds,pId); + } + public List queryBusProcessNameForEnd(@RequestBody String prcNum){ + return workFlowFeignClient.queryBusProcessNameForEnd(prcNum); + } + + public String delCG(@RequestParam("id") String id){ + return workFlowFeignClient.delCG(id); + } + + public void setRelation(@RequestParam("esPlanId")String esPlanId,@RequestParam("prcId") String prcId, @RequestParam("finish") String finish){ + workFlowFeignClient.setRelation(esPlanId,prcId,finish); + } + + public String getEsByWk(@RequestParam("prcId")String prcId) { + return workFlowFeignClient.getEsByWk(prcId); + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/Timer/ProcessTimer.java b/adc-da-activiti/src/main/java/com/adc/da/Timer/ProcessTimer.java new file mode 100644 index 00000000..67312aae --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/Timer/ProcessTimer.java @@ -0,0 +1,238 @@ +package com.adc.da.Timer; + +import com.adc.da.FeignClient.workFlowFeignClient; +import com.adc.da.common.BusMes; +import com.adc.da.common.BusProcessName; +import com.adc.da.common.BusProcessNew; +import com.adc.da.common.Wrapper; +import com.adc.da.http.ResponseMessage; +import com.adc.da.sys.common.EmailUtils; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.service.IUserEOService; +import com.adc.da.workFlow.controller.WorkFlowController; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description: 流程相关定时任务 + * @Author: yangxuenan + * date: 2020/12/11 10:18 + */ +@Component +@EnableScheduling +@Slf4j +public class ProcessTimer { + + @Autowired + private workFlowFeignClient workFlowFeignClient; + + @Autowired + private EmailUtils mailUtil; + + @Autowired + private IUserEOService userEOService; + + @Autowired + private WorkFlowController workFlowController; + + /** + * 根据配置文件设置是否开启定时器 + */ + + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + /*** + * @Description: 自动催办,任务截至时间前3天开始每天催办 + * @Author: yangxuenan + * @Date: 2020/12/11 10:29 + * @Param: [] + * @Return: void + */ + @Scheduled(cron = "0 30-30 0 * * ? ")//每天凌晨半点执行 +// @Scheduled(cron = "*/5 * * * * ?")//每5秒执行一次 +// @Scheduled(cron = "0/20 * * * * ?") + public void urging() { + if(isNotScheduled){ + log.info("=================================自动催办定时任务启动====================================="); +// List busProcessNames = workFlowFeignClient.queryBusProcessNameForEnd(null); +// if (null != busProcessNames && 0 < busProcessNames.size()) { +// for (BusProcessName busProcessName : busProcessNames) { +// String type = busProcessName.getPrcType(); +// Integer typeInt = 99; +// if (StringUtils.isNotEmpty(type)) { +// typeInt = Integer.valueOf(type); +// } +// type = chooseType(typeInt, type); +// +// UserEO userEO = userEOService.selectByPrimaryKey(busProcessName.getCreatUserName()); +// String[] array = userEO.getEmail().split(","); +// String overTime = busProcessName.getOverTime(); +// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); +// Date dateTime = null; +// Integer num = 3; +// try { +// dateTime = simpleDateFormat.parse(overTime); +// Date now = new Date(); +// long daysBetween = (dateTime.getTime() - now.getTime() + 1000000) / (60 * 60 * 24 * 1000); +// num = Integer.valueOf(String.valueOf(daysBetween)); +// } catch (ParseException e) { +// SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); +// try { +// dateTime = simpleDateFormat1.parse(overTime); +// Date now = new Date(); +// long daysBetween = (dateTime.getTime() - now.getTime() + 1000000) / (60 * 60 * 24 * 1000); +// num = Integer.valueOf(String.valueOf(daysBetween)); +// } catch (ParseException e1) { +// e.getMessage(); +// } +// } +// +// String msg = "您好,[" + busProcessName.getPrcNum() + "]-[" + busProcessName.getPrcName() + "] 您有待办任务未及时办理,距离截至日期还有[" + String.valueOf(num) + "]天 请及时办理,请登录全球标准法规管理系统 ( http://39.98.140.126:10005/#/login ) 办理:链接 ( http://39.98.140.126:10005/#/processCenter?tabsName=ProcessCenter ) 。\n" + +// " ——来自 全球标准法规管理系统"; +// String title = "GSRM——【待办任务】[" + type + "] 您有未完成的待办任务"; +// mailUtil.sendMsgFeign(array, title, msg); +// } +// } + log.info("=================================自动催办定时任务结束====================================="); + } + } + + + public String chooseType(Integer typeInt, String type) { + switch (typeInt) { + case 1: + type = "法规入库及评估流程"; + break; + case 2: + type = "标准法规技术储备评估流程"; + break; + case 3: + type = "项目评估流程"; + break; + case 4: + type = "企标制修订流程"; + break; + case 5: + type = "未符合项跟踪流程"; + break; + case 6: + type = "企标制修订申请流程"; + break; + case 7: + type = "企标废止流程"; + break; + case 8: + type = "企标延期制修订申请流程"; + break; + case 9: + type = "标准采购流程"; + break; + case 10: + type = "工作组会前申请流程"; + break; + case 11: + type = "企标制修订评估流程"; + break; + case 12: + type = "企标勘误流程"; + break; + case 13: + type = "行政管理要求评估流程"; + break; + case 14: + type = "政策入库及评估流程"; + break; + case 15: + type = "标准翻译申请流程"; + break; + case 16: + type = "工作组会后管理流程"; + break; + case 17: + type = "企标备案流程"; + break; + case 18: + type = "标准法规清单发布/更新流程"; + break; + case 19: + type = "企标复审流程"; + break; + default: + break; + } + return type; + } + + @Scheduled(cron = "0 0 10 * * ? ")//每天十点执行 +// @Scheduled(cron = "*/20 * * * * ? ")//每天十点执行 + public void everyDayTenOlockScan() { + if(isNotScheduled){ + log.info("=================================政策课题组会后流程定时任务启动====================================="); + List busProcessNews=new ArrayList<>(); + busProcessNews=workFlowFeignClient.everyDayTenOlock(); + if (!busProcessNews.isEmpty()){ + for (BusProcessNew bus:busProcessNews) { + JSONObject jsonObject= JSON.parseObject(bus.getMesg()); + jsonObject.put("auto","1"); + ResponseMessage responseMessage = workFlowController.startProcessNew("19",jsonObject.getString("revisionId"),null); + BusMes busMes=new BusMes(); + busMes.setTaskIds(String.valueOf(responseMessage.getData())); + busMes.setJson(jsonObject.toJSONString()); + busMes.setUserId(jsonObject.getString("revisionId")); + Wrapper wrapper=workFlowFeignClient.completeTaskByUserId(busMes); + log.info("政策课题组会后流程已发起"); + } + } + log.info("=================================政策课题组会后流程定时任务启动====================================="); + } + } + + @Scheduled(cron = "0 0 10 * * ? ")//每天十点执行 +// @Scheduled(cron = "0 0 0/1 * * ? ")//每天十点执行 +// @Scheduled(cron = "*/40 * * * * ? ")//20s + public void everyDayTenOlockScanSAM() { + if(isNotScheduled){ + log.info("=================================标准化活动参会流程定时任务启动====================================="); + List busProcessNews=new ArrayList<>(); + busProcessNews=workFlowFeignClient.everyDayTenOlockSAM(); + if (!busProcessNews.isEmpty()){ + for (BusProcessNew bus:busProcessNews) { + JSONObject jsonObject= JSON.parseObject(bus.getMesg()); + String taskInfo = bus.getTaskInfo(); + String result = jsonObject.getJSONObject("roleList").getString("dockUser"); + result = result.split(",")[0]; + jsonObject.put("member",result); + if(taskInfo.equals("标准化活动参会流程-流程结束")){ + jsonObject.put("auto","1"); + ResponseMessage responseMessage = workFlowController.startProcessNew("22",result,null); + BusMes busMes=new BusMes(); + busMes.setTaskIds(String.valueOf(responseMessage.getData())); + busMes.setJson(jsonObject.toJSONString()); + busMes.setUserId(result); + + Wrapper wrapper=workFlowFeignClient.completeTaskByUserId(busMes); + System.out.println("标准化活动会后流程自动发起"); + } + + } + } + log.info("=================================标准化活动参会流程定时任务启动====================================="); + } + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ActDefineStartMap.java b/adc-da-activiti/src/main/java/com/adc/da/common/ActDefineStartMap.java new file mode 100644 index 00000000..f958b680 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ActDefineStartMap.java @@ -0,0 +1,65 @@ +package com.adc.da.common; + +import java.util.Map; +import java.util.TreeMap; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2021年06月09日 17:18 + */ +public class ActDefineStartMap { + + // map 添加 新的流程实例 + public static String actDefineStartMap(String type){ + + Map map = new TreeMap<>(); + map.put("1","standardLibraryWkflow"); + map.put("2","standardSurveyWorkFlow"); + map.put("3","StandAskForOpinion"); + map.put("4","standardregulatoryinventory"); + map.put("5","projectEvaluationNewProcess"); + map.put("6","xmhgpgXM"); + + + map.put("8","nonConformanceRectificationKey"); + map.put("9","standardReadWkflow"); + map.put("10","itemlistvalidationprocessKey"); + + // 政策入库 + map.put("laws1","lawsLibraryWkflow"); + //政策征求意见, 认证重点法规/政策 流程 + map.put("laws2","PolicyCommentProcessWorkFlow"); + map.put("laws3","KCSTPReviewProcessWorkFlow"); + + // 企标制修订流程及企业标准库流程 + map.put("buss1","bussLibraryWkflow"); + // 企标制修订-产品标准 + map.put("buss2","bussLibraryProductWkflow"); + + map.put("buss3","bussFsWkflow"); + + //张超然 + map.put("20","StandardApplyMeetProcess"); + map.put("21","StandardMeetProcess"); + map.put("22","StandardAfterMeetProcess"); + + //李奥 + map.put("14","ParticipateRevisionFiling"); + map.put("15","JoinStandardFiling"); + map.put("16","RecommendedApprovalleo"); + //孔维一 + map.put("17","policyResearchGroupEnrollment"); + map.put("18","policyResearchGroupAttendMeeting"); + map.put("19","policyResearchGroupAfterMeeting"); + + //企标复审流程 + map.put("23","enterpriseBidReviewProcess"); + map.put("24","Aboliish"); + map.put("25","enterpriseStandardSystemRevisionPlan"); + + map.put("26","qbzxdlxjh"); + + return map.get(type); + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/BusMes.java b/adc-da-activiti/src/main/java/com/adc/da/common/BusMes.java new file mode 100644 index 00000000..5e9dbad6 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/BusMes.java @@ -0,0 +1,137 @@ +package com.adc.da.common; + +import io.swagger.annotations.ApiModelProperty; + +public class BusMes { + + @ApiModelProperty(value = "用户id") + private String userId; + + @ApiModelProperty(value = "任务id") + private String taskId; + + @ApiModelProperty(value = "json") + private String json; + + @ApiModelProperty(value = "任务ids") + private String taskIds; + + private String pId; + + private String prcType; + + private String createUser; + + private String createUserName; + + private String userName; + + private int size; + + private int current; + + private String id; + + private String nowStateType; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getJson() { + return json; + } + + public void setJson(String json) { + this.json = json; + } + + public String getTaskIds() { + return taskIds; + } + + public void setTaskIds(String taskIds) { + this.taskIds = taskIds; + } + + public String getpId() { + return pId; + } + + public void setpId(String pId) { + this.pId = pId; + } + + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getPrcType() { + return prcType; + } + + public void setPrcType(String prcType) { + this.prcType = prcType; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getCurrent() { + return current; + } + + public void setCurrent(int current) { + this.current = current; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNowStateType() { return nowStateType; } + + public void setNowStateType(String nowStateType) { this.nowStateType = nowStateType; } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/BusMesSpecial.java b/adc-da-activiti/src/main/java/com/adc/da/common/BusMesSpecial.java new file mode 100644 index 00000000..252f46d5 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/BusMesSpecial.java @@ -0,0 +1,142 @@ +package com.adc.da.common; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class BusMesSpecial { + + @ApiModelProperty(value = "用户id") + private String userId; + + @ApiModelProperty(value = "任务id") + private String taskId; + + @ApiModelProperty(value = "json") + private String json; + + @ApiModelProperty(value = "json") + private String specialJson; + + @ApiModelProperty(value = "任务ids") + private String taskIds; + + private String pId; + + private String prcType; + + private String createUser; + + private String createUserName; + + private String userName; + + private int size; + + private int current; + + private String id; + + private String nowStateType; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getJson() { + return json; + } + + public void setJson(String json) { + this.json = json; + } + + public String getTaskIds() { + return taskIds; + } + + public void setTaskIds(String taskIds) { + this.taskIds = taskIds; + } + + public String getpId() { + return pId; + } + + public void setpId(String pId) { + this.pId = pId; + } + + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getPrcType() { + return prcType; + } + + public void setPrcType(String prcType) { + this.prcType = prcType; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getCurrent() { + return current; + } + + public void setCurrent(int current) { + this.current = current; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNowStateType() { return nowStateType; } + + public void setNowStateType(String nowStateType) { this.nowStateType = nowStateType; } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessName.java b/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessName.java new file mode 100644 index 00000000..ca3e9ebd --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessName.java @@ -0,0 +1,59 @@ +package com.adc.da.common; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 冯晓东 + * @since 2020-11-11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BusProcessName对象", description="") +public class BusProcessName implements Serializable { + + private static final long serialVersionUID=1L; + + private String id; + + private String prcName; + + private String prcId; + + private String prcMes; + + private String overTime; + + private String prcNum; + + private String creatTime; + + private String creatUser; + + private String prcType; + + private String taskIds; + + private String taskInfo; + + private String creatUserName; + + private String mes; + + private String endTime; + + private String taskAssignee; + + private String isEnd; + + private String taskBackAssignee; +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessNew.java b/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessNew.java new file mode 100644 index 00000000..04005416 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/BusProcessNew.java @@ -0,0 +1,95 @@ +package com.adc.da.common; + +import com.baomidou.mybatisplus.annotation.TableField; +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 java.util.Date; + +/** + *

+ * + *

+ * + * @author 冯晓东 + * @since 2020-11-10 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BusProcessNew对象", description="") +public class BusProcessNew { + + + private String id; + + private String msgType; + + private String standId; + + private String clauseId; + + private String userId; + + private String username; + + private String mesg; + + private String taskInfo; + + private String parentId; + + private String taskId; + + private String pId; + + private String finishFlag; + + @ApiModelProperty(value = "审批意见") + @TableField("COMMIT_FLAG") + private String commitFlag; + + @ApiModelProperty(value = "审批意见") + @TableField("COMMIT_TEXT") + private String commitText; + + @ApiModelProperty(value = "子流程ID") + @TableField("SUB_ID") + private String subId; + + @ApiModelProperty(value = "流程名称") + @TableField("PRC_NAME") + private String prcName; + + @TableField("CREATE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @TableField("UPDATE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @TableField( exist = false) + @ApiModelProperty(value = "OA link") + private String link; + + @TableField( exist = false) + @ApiModelProperty(value = "干活任务截止时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String endTime; + + @TableField( exist = false) + @ApiModelProperty(value = "任务状态 0 默认 1 审批任务 2 干活任务") + private int taskStatus; + + private long commitStatus; + + @TableField( exist = false) + @ApiModelProperty(value = "当前节点信息") + private String nowTaskInfo; + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/BussEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/BussEnum.java new file mode 100644 index 00000000..9a905ffd --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/BussEnum.java @@ -0,0 +1,31 @@ +package com.adc.da.common; + +public enum BussEnum { + + BUSS_XD("tz4lqchzuy","修订","1"), + BUSS_FZ("3lqnlgmgcn","作废","2"), + BUSS_YX("9z741h2m3j","有效","3"); + + private String value; + private String lable; + private String state; + + private BussEnum(String value, String lable,String state) { + this.value = value; + this.lable = lable; + this.state = state; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + public String getState() { + return state; + } + + + + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/Category.java b/adc-da-activiti/src/main/java/com/adc/da/common/Category.java new file mode 100644 index 00000000..948a6ee2 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/Category.java @@ -0,0 +1,56 @@ +package com.adc.da.common; + +import java.util.Date; + +public class Category { + + private String objectId; + + private int isDeleted; + + private Date createTime; + + private String code; + + private String type; + + public String getObjectId() { + return objectId; + } + + public void setObjectId(String objectId) { + this.objectId = objectId; + } + + public int getIsDeleted() { + return isDeleted; + } + + public void setIsDeleted(int isDeleted) { + this.isDeleted = isDeleted; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ConvertHtml2Excel.java b/adc-da-activiti/src/main/java/com/adc/da/common/ConvertHtml2Excel.java new file mode 100644 index 00000000..dbe9eeb0 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ConvertHtml2Excel.java @@ -0,0 +1,283 @@ +package com.adc.da.common; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.dom4j.Document; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/2/26 10:10 + */ +public class ConvertHtml2Excel { + /** + * html表格转excel + */ + public static HSSFWorkbook table2Excel(String tableHtml, HSSFWorkbook wb, String sheetName) throws Exception { +// HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet(sheetName); + List moneyCols =new ArrayList<>(); + moneyCols.add(1); + int headEndRow = 1; + List crossRowEleMetaLs = new ArrayList(); + int rowIndex = 0; + try { + Document data = DocumentHelper.parseText(tableHtml); + HSSFCellStyle contentStyle = getContentStyle(wb); + // 生成表头 + Element thead = data.getRootElement().element("thead"); + HSSFCellStyle titleStyle = getTitleStyle(wb); + int ls = 0;//列数 + if (thead != null) { + List trLs = thead.elements("tr"); + for (Element trEle : trLs) { + HSSFCellStyle style = rowIndex<=headEndRow?titleStyle:contentStyle; + style.setWrapText(true); + HSSFRow row = sheet.createRow(rowIndex); + List thLs = trEle.elements("th"); + if(ls tdLs = trEle.elements("td"); + if(ls trBody = tbody.elements("tr"); + for (Element trEle : trBody) { + HSSFCellStyle style = rowIndex<=headEndRow?titleStyle:contentStyle; + style.setWrapText(true); + HSSFRow row = sheet.createRow(rowIndex); + List thLs = trEle.elements("th"); + if(ls tdLs = trEle.elements("td"); + if(ls trFoot = tfoot.elements("tr"); + for (Element trEle : trFoot) { + HSSFCellStyle style = rowIndex<=headEndRow?titleStyle:contentStyle; + style.setWrapText(true); + HSSFRow row = sheet.createRow(rowIndex); + List thLs = trEle.elements("th"); + if(ls tdLs = trEle.elements("td"); + if(ls tdLs, int rowIndex, HSSFRow row, int startCellIndex, HSSFCellStyle cellStyle, + List crossRowEleMetaLs, boolean inHead, List moneyCols) { + int i = startCellIndex; + for (int eleIndex = 0; eleIndex < tdLs.size(); i++, eleIndex++) { + int captureCellSize = getCaptureCellSize(rowIndex, i, crossRowEleMetaLs); + while (captureCellSize > 0) { + for (int j = 0; j < captureCellSize; j++) {// 当前行跨列处理(补单元格) + row.createCell(i); + i++; + } + captureCellSize = getCaptureCellSize(rowIndex, i, crossRowEleMetaLs); + } + Element thEle = tdLs.get(eleIndex); + String val = thEle.getText(); + if (StringUtils.isEmpty(val)) { + Element e = thEle.element("a"); + if (e != null) { + val = e.getText(); + } + } + HSSFCell c = row.createCell(i); + if (NumberUtils.isNumber(val)) { + if (moneyCols != null && moneyCols.contains(i)) { + c.setCellType(CellType.STRING); + c.setCellValue(val); + } else { + c.setCellValue(Double.parseDouble(val)); + c.setCellType(CellType.STRING); + } + + } else { + c.setCellType(CellType.STRING); + c.setCellValue(new HSSFRichTextString(val)); + } + int rowSpan = NumberUtils.toInt(thEle.attributeValue("rowspan"), 1); + int colSpan = NumberUtils.toInt(thEle.attributeValue("colspan"), 1); + c.setCellStyle(cellStyle); + if (rowSpan > 1 || colSpan > 1) { // 存在跨行或跨列 + crossRowEleMetaLs.add(new CrossRangeCellMeta(rowIndex, i, rowSpan, colSpan, inHead)); + } + if (colSpan > 1) {// 当前行跨列处理(补单元格) + for (int j = 1; j < colSpan; j++) { + i++; + row.createCell(i); + } + } + } + return i; + } + + /** + * 设置合并单元格的边框样式 + * + * @param sheet + * @param region + * @param cs + */ + public static void setRegionStyle(HSSFSheet sheet, CellRangeAddress region, HSSFCellStyle cs) { + for (int i = region.getFirstRow(); i <= region.getLastRow(); i++) { + HSSFRow row = sheet.getRow(i); + for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) { + HSSFCell cell = row.getCell(j); + cell.setCellStyle(cs); + } + } + } + + /** + * 获得因rowSpan占据的单元格 + * + * @param rowIndex 行号 + * @param colIndex 列号 + * @param crossRowEleMetaLs 跨行列元数据 + * @return 当前行在某列需要占据单元格 + */ + private static int getCaptureCellSize(int rowIndex, int colIndex, List crossRowEleMetaLs) { + int captureCellSize = 0; + for (CrossRangeCellMeta crossRangeCellMeta : crossRowEleMetaLs) { + if (crossRangeCellMeta.getFirstRow() < rowIndex && crossRangeCellMeta.getLastRow() >= rowIndex) { + if (crossRangeCellMeta.getFirstCol() <= colIndex && crossRangeCellMeta.getLastCol() >= colIndex) { + captureCellSize = crossRangeCellMeta.getLastCol() - colIndex + 1; + } + } + } + return captureCellSize; + } + + /** + * 获得标题样式 + * + * @param workbook + * @return + */ + private static HSSFCellStyle getTitleStyle(HSSFWorkbook workbook) { + short titlebackgroundcolor = HSSFColor.HSSFColorPredefined.WHITE.getIndex(); + short fontSize = 11; + String fontName = "宋体"; + HSSFCellStyle style = workbook.createCellStyle(); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setAlignment(HorizontalAlignment.CENTER); + style.setBorderBottom(BorderStyle.THIN); //下边框 + style.setBorderLeft(BorderStyle.THIN);//左边框 + style.setBorderTop(BorderStyle.THIN);//上边框 + style.setBorderRight(BorderStyle.THIN);//右边框 + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setFillForegroundColor(titlebackgroundcolor);// 背景色 + style.setWrapText(true); + HSSFFont font = workbook.createFont(); +// font.setFontName(fontName); + font.setFontHeightInPoints(fontSize); +// font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + style.setFont(font); + return style; + } + + /** + * 获得内容样式 + * + * @param wb + * @return + */ + private static HSSFCellStyle getContentStyle(HSSFWorkbook wb) { + short fontSize = 11; +// String fontName = "宋体"; + HSSFCellStyle style = wb.createCellStyle(); + style.setBorderBottom(BorderStyle.THIN); + style.setBorderTop(BorderStyle.THIN); + style.setBorderLeft(BorderStyle.THIN); + style.setBorderRight(BorderStyle.THIN); + HSSFFont font = wb.createFont(); +// font.setFontName(fontName); + font.setFontHeightInPoints(fontSize); + style.setFont(font); + style.setAlignment(HorizontalAlignment.CENTER);//水平居中 + style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中 + style.setWrapText(true); + return style; + } + + public static void main(String[] args) throws Exception { + String cnt = "\n"; + List c =new ArrayList<>(); + c.add(1); + String tableHtml = "
111111113333333333444444444
555555566666
324234
"; + tableHtml = tableHtml.replaceAll("<[\\s]*?br[^>]*?>|<[\\s]*?\\/[\\s]*?br[\\s]*?>", cnt); +// HSSFWorkbook hssfWorkbook = ConvertHtml2Excel.table2Excel(tableHtml,c,1); +// hssfWorkbook.write(FileUtils.openOutputStream(new File("D:\\test\\test1.xls"))); + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ConvertMqEO.java b/adc-da-activiti/src/main/java/com/adc/da/common/ConvertMqEO.java new file mode 100644 index 00000000..8869ec36 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ConvertMqEO.java @@ -0,0 +1,214 @@ +package com.adc.da.common; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:OT_CONVERT_MQ OtConvertMqEOEntity
+ * 作者:code generator
+ * 日期: 2018-09-25
+ * 版权所有:版权归北京卡达克数据技术中心所有。
+ */ +public class ConvertMqEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String attId; + private String filePath; + private String fileOriginPath; + private String userId; + private Integer mqState; + private String mqCode; + private String id; + private String addOrUp; + + //向文件表添加信息 + private String lawsId; + private String resId; + private String convertType; + private String pdfPath; + private String pdfId; + private String fileSuffix; + private String standFileClassify; + private String oriAttId; + + private int againNum; + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getAttId() { + return this.attId; + } + + /** **/ + public void setAttId(String attId) { + this.attId = attId; + } + + /** **/ + public String getFilePath() { + return this.filePath; + } + + /** **/ + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + /** **/ + public String getUserId() { + return this.userId; + } + + /** **/ + public void setUserId(String userId) { + this.userId = userId; + } + + /** **/ + public Integer getMqState() { + return this.mqState; + } + + /** **/ + public void setMqState(Integer mqState) { + this.mqState = mqState; + } + + /** **/ + public String getMqCode() { + return this.mqCode; + } + + /** **/ + public void setMqCode(String mqCode) { + this.mqCode = mqCode; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public String getFileOriginPath() { + return fileOriginPath; + } + + public void setFileOriginPath(String fileOriginPath) { + this.fileOriginPath = fileOriginPath; + } + + public String getLawsId() { + return lawsId; + } + + public void setLawsId(String lawsId) { + this.lawsId = lawsId; + } + + public String getResId() { + return resId; + } + + public void setResId(String resId) { + this.resId = resId; + } + + public String getConvertType() { + return convertType; + } + + public void setConvertType(String convertType) { + this.convertType = convertType; + } + + public String getPdfPath() { + return pdfPath; + } + + public void setPdfPath(String pdfPath) { + this.pdfPath = pdfPath; + } + + public String getAddOrUp() { + return addOrUp; + } + + public void setAddOrUp(String addOrUp) { + this.addOrUp = addOrUp; + } + + public String getPdfId() { + return pdfId; + } + + public void setPdfId(String pdfId) { + this.pdfId = pdfId; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public String getFileSuffix() { + return fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getStandFileClassify() { + return standFileClassify; + } + + public void setStandFileClassify(String standFileClassify) { + this.standFileClassify = standFileClassify; + } + + public String getOriAttId() { + return oriAttId; + } + + public void setOriAttId(String oriAttId) { + this.oriAttId = oriAttId; + } + + public int getAgainNum() { + return againNum; + } + + public void setAgainNum(int againNum) { + this.againNum = againNum; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/CrossRangeCellMeta.java b/adc-da-activiti/src/main/java/com/adc/da/common/CrossRangeCellMeta.java new file mode 100644 index 00000000..1cbbb748 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/CrossRangeCellMeta.java @@ -0,0 +1,53 @@ +package com.adc.da.common; + +/** + * @Description: table转excel 跨行元素元数据 + * @Author: yangxuenan + * date: 2020/2/26 10:14 + */ +public class CrossRangeCellMeta { + + public CrossRangeCellMeta(int firstRowIndex, int firstColIndex, int rowSpan, int colSpan, boolean inHead) { + super(); + this.firstRowIndex = firstRowIndex; + this.firstColIndex = firstColIndex; + this.rowSpan = rowSpan; + this.colSpan = colSpan; + this.inHead = inHead; + } + + private int firstRowIndex; + private int firstColIndex; + private int rowSpan;// 跨越行数 + private int colSpan;// 跨越列数 + private boolean inHead; + + public boolean isInHead() { + return inHead; + } + + public CrossRangeCellMeta setInHead(boolean inHead) { + this.inHead = inHead; + return this; + } + + public int getFirstRow() { + return firstRowIndex; + } + + public int getLastRow() { + return firstRowIndex + rowSpan - 1; + } + + public int getFirstCol() { + return firstColIndex; + } + + public int getLastCol() { + return firstColIndex + colSpan - 1; + } + + public int getColSpan() { + return colSpan; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ExcelToTable.java b/adc-da-activiti/src/main/java/com/adc/da/common/ExcelToTable.java new file mode 100644 index 00000000..6e2b6386 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ExcelToTable.java @@ -0,0 +1,111 @@ +package com.adc.da.common; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddress; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +public class ExcelToTable { + /** + * 将excel转换成表格 table + * @return table 的字符串 + */ + public String toTable(Sheet sheet) { + StringBuilder table = new StringBuilder(); + table.append(""); + if (sheet != null) { + Iterator rowIterator = sheet.rowIterator(); + + while (rowIterator.hasNext()) { + table.append(""); + Iterator cellIterator = row.cellIterator(); + // 遇到合并列时进行计数 + int colCount = 0; + while (cellIterator.hasNext()) { + Cell cell = cellIterator.next(); + + // 判断是否为合并单元格 + Map map = getMergedRegionInfo(sheet, cell); + + // 如果有合并列 + // 如果这一列有colspan属性(是一个合并列),并且是第一次被获取到, + // 那么进行计数器的增加,防止第二次获取到同一个合并单元格时,进行单元格的重复添加 + if (map.get("colspan") != null) { + if (colCount++ == 0) { + table.append(""); + } + } else if (map.get("rowspan") != null) {// 如果有合并行 + // 如果这一列的当前行就是这个合并单元格的第一行,那么我们创建这个单元格,并合并对应的行数 + int rowIndex = cell.getRowIndex(); + if (rowIndex++ == map.get("firstR")) { + table.append(""); + } + } else { + // 如果没有合并列 + table.append(""); + } + } + table.append(""); + } + table.append("
"); + table.append(cell.getStringCellValue()); + table.append(""); + table.append(cell.getStringCellValue()); + table.append(""); + table.append(cell.getStringCellValue()); + table.append("
"); + + return table.toString(); + } + + return null; + } + + + /** + * 读取合并的单元格信息 + * @param sheet + * @param cell + * @return + */ + private Map getMergedRegionInfo(Sheet sheet, Cell cell) { + int firstC; + int lastC; + int firstR; + int lastR; + Map map = new HashMap<>(); + for (int cellNum = 0; cellNum < sheet.getNumMergedRegions(); cellNum++) { + CellRangeAddress mergedRegion = sheet.getMergedRegion(cellNum); + firstC = mergedRegion.getFirstColumn(); + lastC = mergedRegion.getLastColumn(); + firstR = mergedRegion.getFirstRow(); + lastR = mergedRegion.getLastRow(); + + // 如果这个单元格在这个 合并区域的范围内,那么它就是这个单元格 + if (cell.getRowIndex() >= firstR && cell.getRowIndex() <= lastR) { + if (cell.getColumnIndex() >= firstC && cell.getColumnIndex() <= lastC) { + // 合并的合数和列数,以及合并单元格的第一行索引 + int rowspan = lastR-firstR; + int colspan = lastC-firstC; + if (rowspan > 0) + map.put("rowspan", rowspan+1); + map.put("firstR", firstR); + if (colspan > 0) + map.put("colspan", colspan+1); + } + } + } + return map; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ExportPlanStyle.java b/adc-da-activiti/src/main/java/com/adc/da/common/ExportPlanStyle.java new file mode 100644 index 00000000..f2d3b6b0 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ExportPlanStyle.java @@ -0,0 +1,79 @@ +package com.adc.da.common; + +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; + +public class ExportPlanStyle { + + public static String[] getTableHeaders() { + String[] header = new String[14]; + header[0] = "截止日期提交/发布情况"; + header[1] = "动力"; + header[2] = "整车"; + header[3] = "新能源"; + header[4] = "底盘"; + header[5] = "工艺"; + header[6] = "网联"; + header[7] = "车身"; + header[8] = "试验"; + header[9] = "NVH"; + header[10] = "碰撞"; + header[11] = "质量"; + header[12] = "造型"; + header[13] = "合计"; + return header; + } + public static void setTableHeader(Sheet sheet, String[] headers){ + //设置列宽 + int minBytes = 17;//至少字节数 + Row headerRow = sheet.createRow(1); //列头 + //设置表头 + for(int i=0;i> { + + @Override + public void setMapValue(Map map, String originKey, Object value) { + if (value instanceof Double) { + map.put(originKey, PoiPublicUtil.doubleToString((Double) value)); + } else { + map.put(originKey, value != null ? value.toString() : null); + } + } + + private String getRealKey(String originKey) { + if (originKey.equals("交易账户")) { + return "accountNo"; + } + if (originKey.equals("姓名")) { + return "name"; + } + if (originKey.equals("客户类型")) { + return "type"; + } + return originKey; + } +} \ No newline at end of file diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/Page.java b/adc-da-activiti/src/main/java/com/adc/da/common/Page.java new file mode 100644 index 00000000..60ffc2b2 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/Page.java @@ -0,0 +1,42 @@ +package com.adc.da.common; + +import java.util.List; + +public class Page { + private Integer pageNo; + private Integer pageSize; + private Long count; + private List list; + + public Integer getPageSize() { + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + public Long getCount() { + return count; + } + + public void setCount(Long count) { + this.count = count; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + public Integer getPageNo() { + return pageNo; + } + + public void setPageNo(Integer pageNo) { + this.pageNo = pageNo; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ProcessConformStateEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/ProcessConformStateEnum.java new file mode 100644 index 00000000..438235f1 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ProcessConformStateEnum.java @@ -0,0 +1,27 @@ +package com.adc.da.common; + +/** + * @Description: 项目库标准符合性枚举类 + * @Author: yangxuenan + * date: 2020/11/5 14:14 + */ +public enum ProcessConformStateEnum { + + CHECK("3","待验证"),FIT("1","符合"), + UNFIT("2","不符合"), + NOT_INVOLVE("4","不涉及"); + + private String value; + private String lable; + + private ProcessConformStateEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/PropertyTypeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/PropertyTypeEnum.java new file mode 100644 index 00000000..2f5b3336 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/PropertyTypeEnum.java @@ -0,0 +1,29 @@ +package com.adc.da.common; + +/** + * 标准库参数类型枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum PropertyTypeEnum { + + PROVETYPE("PROVETYPE","适用车型"),APPLY_ARCTIC("APPLY_ARCTIC","适用车型"), + ENERGY_KIND("ENERGY_KIND","能源种类"),APPLY_AUTH("APPLY_AUTH","适用认证"), + CAR_MODEL("CAR_MODEL","公告车型号"), + CATEGORY("CATEGORY","所属专业领域"),PRODUCT_TYPE("PRODUCT_TYPE","产品类别"); + + private String value; + private String lable; + + private PropertyTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ReadExcel.java b/adc-da-activiti/src/main/java/com/adc/da/common/ReadExcel.java new file mode 100644 index 00000000..53de254a --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ReadExcel.java @@ -0,0 +1,175 @@ +package com.adc.da.common; + +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; + +/** + * @des : excel信息读取 + * @author: duyunbao + * @email: 1114808306@qq.com + * @date 2017/10/27 17:06 + **/ +public class ReadExcel { + private static final Logger logger = LoggerFactory.getLogger(ReadExcel.class); + + /** + * 总行数 + */ + private int totalRows = 0; + /** + * 总条数 + */ + private int totalCells = 0; + /** + * 错误信息接收器 + */ + private String errorMsg; + + public ReadExcel() { + // 不做操作 + } + + public int getTotalRows() { + return totalRows; + } + + public int getTotalCells() { + return totalCells; + } + + public String getErrorInfo() {//获取错误信息 + return errorMsg; + } + + /** + * @method_name: validateExcel + * @des : 验证excel格式 + * @author: duyunbao + * @param: [filePath] + * @return: boolean + * @date: 2017/10/27 17:07 + **/ + public boolean validateExcel(String filePath) { + if (filePath == null || !(WDWUtil.isExcel2003(filePath) || WDWUtil.isExcel2007(filePath))) { + errorMsg = "文件名不是excel格式"; + return false; + } + return true; + } + + /** + * @method_name: getExcelInfo + * @des : 读EXCEL文件,获取信息集合 + * @author: duyunbao + * @param: [fileName, Mfile] + * @return: org.apache.poi.ss.usermodel.Workbook + * @date: 2017/10/27 17:08 + **/ + public Workbook getExcelInfo(String fileName, MultipartFile Mfile) { + Workbook wb = null; + //把spring文件上传的MultipartFile转换成CommonsMultipartFile类型 + CommonsMultipartFile cf = (CommonsMultipartFile) Mfile; //获取本地存储路径 + //初始化输入流 + InputStream is = null; + try { + //根据文件名判断文件是2003版本还是2007版本 + boolean isExcel2003 = true; + if (WDWUtil.isExcel2007(fileName)) { + isExcel2003 = false; + } + is = cf.getInputStream(); + //根据excel里面的内容读取客户信息 + wb = getExcelInfo(is, isExcel2003, wb); + is.close(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + is = null; + logger.error(e.getMessage(),e); + } + } + } + return wb; + } + + /*** + * @method_name: getExcelInfo + * @des : 判断excel版本 + * @author: duyunbao + * @param: [is, isExcel2003, wb] + * @return: org.apache.poi.ss.usermodel.Workbook + * @date: 2017/10/27 17:08 + **/ + private Workbook getExcelInfo(InputStream is, boolean isExcel2003, Workbook wb) { + Workbook workbook =wb; + try { + /** 根据版本选择创建Workbook的方式 */ + //当excel是2003时 + if (isExcel2003) { + workbook = new HSSFWorkbook(is); + } else {//当excel是2007时 + workbook = new XSSFWorkbook(is); + } + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + return workbook; + } + + /** + * 获取sheet的名称 + * @MethodName:getSheetName + * @author: 马晓晨 + * @email: 747052172@qq.com + * @date 2017年11月24日 上午9:49:22 + * @version V1.0 + * @param filename + * @param file + * @param sheetIndex + * @return + */ + public String getSheetName(String filename, MultipartFile file, Integer sheetIndex) { + Workbook wb = getExcelInfo(filename, file); + return wb.getSheetName(sheetIndex); + } + + /** + * + * @Title: encodeFileName + * @Description: 导出文件转换文件名称编码 + * @param @param fileNames + * @param @param request + * @param @return 设定文件 + * @return String 返回类型 + * @throws + */ + public static String encodeFileName(String fileNames , HttpServletRequest request) { + try { + String agent = request.getHeader("User-Agent"); + if (agent.contains("Firefox")) { + fileNames = new String(fileNames.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器 + } else { + fileNames = URLEncoder.encode(fileNames, "utf-8"); + //谷歌中空格变为+问题 + fileNames = fileNames.replaceAll("\\+","%20"); + } + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return fileNames ; + } +} \ No newline at end of file diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ReadWordTable.java b/adc-da-activiti/src/main/java/com/adc/da/common/ReadWordTable.java new file mode 100644 index 00000000..58962a9a --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ReadWordTable.java @@ -0,0 +1,236 @@ +package com.adc.da.common; + +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; + +import java.io.FileInputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/2/25 16:58 + */ +public class ReadWordTable { + + + /** + * 保存生成HTML时需要被忽略的单元格 + */ + private List omitCellsList = new ArrayList<>(); + + /** + * 生成忽略的单元格列表中的格式 + * + * @param row + * @param col + * @return + */ + public String generateOmitCellStr(int row, int col) { + return row + ":" + col; + } + + /** + * 获取当前单元格的colspan(列合并)的列数 + * + * @param tcPr 单元格属性 + * @return + */ + public int getColspan(CTTcPr tcPr) { + // 判断是否存在列合并 + CTDecimalNumber gridSpan = null; + if ((gridSpan = tcPr.getGridSpan()) != null) { // 合并的起始列 + // 获取合并的列数 + BigInteger num = gridSpan.getVal(); + return num.intValue(); + } else { // 其他被合并的列或正常列 + return 1; + } + } + + /** + * 获取当前单元格的rowspan(行合并)的行数 + * + * @param table 表格 + * @param row 行值 + * @param col 列值 + * @return + */ + public int getRowspan(XWPFTable table, int row, int col) { + + XWPFTableCell cell = table.getRow(row).getCell(col); + // 正常独立单元格 + if (!isContinueRow(cell) && !isRestartRow(cell)) { + return 1; + } + // 当前单元格的宽度 + int cellWidth = getCellWidth(table, row, col); + // 当前单元格距离左侧边框的距离 + int leftWidth = getLeftWidth(table, row, col); + + // 用户保存当前单元格行合并的单元格数-1(因为不包含自身) + List list = new ArrayList<>(); + getRowspan(table, row, cellWidth, leftWidth, list); + + return list.size() + 1; + } + + private void getRowspan(XWPFTable table, int row, int cellWidth, int leftWidth, + List list) { + // 已达到最后一行 + if (row + 1 >= table.getNumberOfRows()) { + return; + } + row = row + 1; + int colsNum = table.getRow(row).getTableCells().size(); + // 因为列合并单元格可能导致行合并的单元格并不在同一列,所以从头遍历列,通过属性、宽度以及距离左边框间距来判断是否是行合并 + for (int i = 0; i < colsNum; i++) { + XWPFTableCell testTable = table.getRow(row).getCell(i); + // 是否为合并单元格的中间行(包括结尾行) + if (isContinueRow(testTable)) { + // 是被上一行单元格合并的单元格 + if (getCellWidth(table, row, i) == cellWidth + && getLeftWidth(table, row, i) == leftWidth) { + list.add(true); + // 被合并的单元格在生成html时需要忽略 + addOmitCell(row, i); + // 去下一行继续查找 + getRowspan(table, row, cellWidth, leftWidth, list); + break; + } + } + } + } + + /** + * 判断是否是合并行的起始行单元格 + * + * @param tableCell + * @return + */ + public boolean isRestartRow(XWPFTableCell tableCell) { + CTTcPr tcPr = tableCell.getCTTc().getTcPr(); + if (tcPr.getVMerge() == null) { + return false; + } + if (tcPr.getVMerge().getVal() == null) { + return false; + } + if (tcPr.getVMerge().getVal().toString().equalsIgnoreCase("restart")) { + return true; + } + return false; + } + + /** + * 判断是否是合并行的中间行单元格(包括结尾的最后一行的单元格) + * + * @param tableCell + * @return + */ + public boolean isContinueRow(XWPFTableCell tableCell) { + CTTcPr tcPr = tableCell.getCTTc().getTcPr(); + if (tcPr.getVMerge() == null) { + return false; + } + if (tcPr.getVMerge().getVal() == null) { + return true; + } + return false; + } + + public int getLeftWidth(XWPFTable table, int row, int col) { + int leftWidth = 0; + for (int i = 0; i < col; i++) { + leftWidth += getCellWidth(table, row, i); + } + return leftWidth; + } + + public int getCellWidth(XWPFTable table, int row, int col) { + BigInteger width = table.getRow(row).getCell(col).getCTTc().getTcPr().getTcW().getW(); + return width.intValue(); + } + + /** + * 添加忽略的单元格(被行合并的单元格,生成HTML时需要忽略) + * + * @param row + * @param col + */ + public void addOmitCell(int row, int col) { + String omitCellStr = generateOmitCellStr(row, col); + omitCellsList.add(omitCellStr); + } + + public boolean isOmitCell(int row, int col) { + String cellStr = generateOmitCellStr(row, col); + return omitCellsList.contains(cellStr); + } + + public String readTable(XWPFTable table) throws IOException { + // 表格行数 + int tableRowsSize = table.getRows().size(); + StringBuilder tableToHtmlStr = new StringBuilder(""); + + for (int i = 0; i < tableRowsSize; i++) { + tableToHtmlStr.append(""); + int tableCellsSize = table.getRow(i).getTableCells().size(); + for (int j = 0; j < tableCellsSize; j++) { + if (isOmitCell(i, j)) { + continue; + } + XWPFTableCell tableCell = table.getRow(i).getCell(j); + // 获取单元格的属性 + CTTcPr tcPr = tableCell.getCTTc().getTcPr(); + int colspan = getColspan(tcPr); + if (colspan > 1) { // 合并的列 + tableToHtmlStr.append(""); + + } + tableToHtmlStr.append(""); + } + tableToHtmlStr.append("
1) { // 合并的行 + tableToHtmlStr.append(" rowspan='" + rowspan + "'>"); + } else { + tableToHtmlStr.append(">"); + } + String text = tableCell.getText(); + tableToHtmlStr.append(text + "
"); + + clearTableInfo(); + + return tableToHtmlStr.toString(); + } + + public void clearTableInfo() { + // System.out.println(omitCellsList); + omitCellsList.clear(); + } + + public static void main(String[] args) { + ReadWordTable readWordTable = new ReadWordTable(); + + try (FileInputStream fileInputStream = new FileInputStream("E:\\下载\\table1.docx"); + XWPFDocument document = new XWPFDocument(fileInputStream);) { + List tables = document.getTables(); + for (XWPFTable table : tables) { + System.out.println(readWordTable.readTable(table)); + } + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarAskNatureEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarAskNatureEnum.java new file mode 100644 index 00000000..b1c68bc1 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarAskNatureEnum.java @@ -0,0 +1,20 @@ +package com.adc.da.common; + +public enum SarAskNatureEnum { + ZR("ZR","准入"),ZRYY("ZRYY","准入引用"), + UNFIT("ZRWG","准入无关"); + + private String value; + private String lable; + + private SarAskNatureEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarAttrFieldEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarAttrFieldEnum.java new file mode 100644 index 00000000..0aec0817 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarAttrFieldEnum.java @@ -0,0 +1,25 @@ +package com.adc.da.common; + +/** + * @Description: 自定义属性字段 + * date: 2020/11/5 14:14 + */ +public enum SarAttrFieldEnum { + + FO("FO","FO"),YQLX("YQLX","要求类型"), + ZRBM("ZRBM","责任部门"),XMPGJS("XMPGJS","项目评估角色"); + + private String value; + private String lable; + + private SarAttrFieldEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarBussStandStatus.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarBussStandStatus.java new file mode 100644 index 00000000..16ddeeba --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarBussStandStatus.java @@ -0,0 +1,66 @@ +package com.adc.da.common; + +import java.util.HashMap; +import java.util.Map; + +/** + * @program: LAWSSystem + * @description: + * @version: 1.0 + * @author: LiuJiaQi + * @create: 2020-11-03 15:09 + **/ +public class SarBussStandStatus { + private Map planStatusMap = new HashMap(); + private Map planTypeMap =new HashMap(); + private Map planStatusMapExport =new HashMap(); + private Map planTypeMapExport =new HashMap(); + + public SarBussStandStatus() { + planStatusMap.put("制定中", "1"); + planStatusMap.put("修订中", "2"); + planStatusMap.put("已发布", "3"); + planStatusMap.put("计划已确认", "4"); + planTypeMap.put("制定", "1"); + planTypeMap.put("修订", "2"); + //用于导出 + planStatusMapExport.put("1", "制定中"); + planStatusMapExport.put("2", "修订中"); + planStatusMapExport.put("3", "已发布"); + planStatusMapExport.put("4", "计划已确认"); + planTypeMapExport.put("1", "制定"); + planTypeMapExport.put("2", "修订"); + } + + public Map getPlanStatusMap() { + return planStatusMap; + } + + public void setPlanStatusMap(Map planStatusMap) { + this.planStatusMap = planStatusMap; + } + + public Map getPlanTypeMap() { + return planTypeMap; + } + + public void setPlanTypeMap(Map planTypeMap) { + this.planTypeMap = planTypeMap; + } + + public Map getPlanStatusMapExport() { + return planStatusMapExport; + } + + public void setPlanStatusMapExport(Map planStatusMapExport) { + this.planStatusMapExport = planStatusMapExport; + } + + public Map getPlanTypeMapExport() { + return planTypeMapExport; + } + + public void setPlanTypeMapExport(Map planTypeMapExport) { + this.planTypeMapExport = planTypeMapExport; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarConformStateEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarConformStateEnum.java new file mode 100644 index 00000000..bc301e51 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarConformStateEnum.java @@ -0,0 +1,28 @@ +package com.adc.da.common; + +/** + * @Description: 项目库标准符合性枚举类 + * @Author: yangxuenan + * date: 2020/11/5 14:14 + */ +public enum SarConformStateEnum { + + CHECK(1,"待验证"),FIT(2,"符合"), + UNFIT(3,"不符合"),PART_FIT(4,"部分符合"), + NOT_INVOLVE(5,"不涉及"),ASSESS(6,"评估中"), + RESET(7,"整改中"),NOT_EVAL(8,"未评估"); + + private Integer value; + private String lable; + + private SarConformStateEnum(Integer value, String lable) { + this.value = value; + this.lable = lable; + } + public Integer getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarNumberTypeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarNumberTypeEnum.java new file mode 100644 index 00000000..14f48c72 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarNumberTypeEnum.java @@ -0,0 +1,30 @@ +package com.adc.da.common; + +/** + * 编号类型分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum SarNumberTypeEnum { + + STAND_NUMBER("STAND_NUMBER","标准编号"),LAWS_NUMBER("LAWS_NUMBER","文件号"), + STAND_REPLACE_NUMBER("STAND_REPLACE_NUMBER","代替标准号"),LAWS_REPLACE_NUMBER("LAWS_REPLACE_NUMBER","代替文件号"); + + private String value; + private String lable; + + private SarNumberTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarPutTimeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarPutTimeEnum.java new file mode 100644 index 00000000..d417d4e8 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarPutTimeEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * @Description: 预警实施日期种类 + * @Author: yangxuenan + * date: 2020/10/19 15:59 + */ +public enum SarPutTimeEnum { + XDXCSSRQ("XDXCSSRQ","新定型车实施日期"),ZCCSSRQ("ZCCSSRQ","在产车实施日期"), + XSCCSSRQ("XSCCSSRQ","新生产车实施日期"); + + private String value; + private String lable; + + private SarPutTimeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarStandStateEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarStandStateEnum.java new file mode 100644 index 00000000..cd43a94a --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarStandStateEnum.java @@ -0,0 +1,42 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/12/18 13:51 + */ +public enum SarStandStateEnum { + + DRAFT("DRAFT","草稿"),ADVICE("ADVICE","征求意见稿"), + SUBMIT("SUBMIT","送审稿"),RADYSUBMIT("RADYSUBMIT","报批稿"), + FJNVYX9Q7J("FJNVYX9Q7J","发布稿"),ZTXXYX("ZTXXYX","计划修订"), + ZTJJSS("ZTJJSS","修订中"),TOVOID("TOVOID","已作废"), + N5KLTFLNRC("N5KLTFLNRC","已修订"),QBXDZ("XB2USRPXY5","企标修订中"), + QBYZF("AY9L9FMSEW","企标已作废"),QBYXD("7ZT7YWXFPK","企标已修订"), + QBJHYQR("4VKQX3V2QU","企标计划已确认"),QBYFB("N75QKJ5MWB","企标已发布"); + + private String value; + private String lable; + + private SarStandStateEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + + public static String getLableByVal(String val){ + for (SarStandStateEnum stateEnum : SarStandStateEnum.values()) { + if (stateEnum.getValue() == val) { + return stateEnum.getLable(); + } + } + return ""; + } + + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarStateColorEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarStateColorEnum.java new file mode 100644 index 00000000..b53d4ca2 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarStateColorEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * @Description: 合规性分级颜色枚举 + * @Author: yangxuenan + * date: 2021/3/10 15:45 + */ +public enum SarStateColorEnum { + + GREEN("green","绿色"),RED("red","红色"),BLUE("blue","蓝色"), + YELLOW("yellow","黄色"),NA("grey","灰色"),NOT("notSure","未反馈"); + + private String value; + private String lable; + + private SarStateColorEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarSychronEO.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarSychronEO.java new file mode 100644 index 00000000..0edfc679 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarSychronEO.java @@ -0,0 +1,54 @@ +package com.adc.da.common; + +public class SarSychronEO { + + private String sychronId; + + private String sarId; + + private String sarNumber; + + private String conflictType; + + private String standName; + + public String getSychronId() { + return sychronId; + } + + public void setSychronId(String sychronId) { + this.sychronId = sychronId; + } + + public String getSarId() { + return sarId; + } + + public void setSarId(String sarId) { + this.sarId = sarId; + } + + public String getSarNumber() { + return sarNumber; + } + + public void setSarNumber(String sarNumber) { + this.sarNumber = sarNumber; + } + + public String getConflictType() { + return conflictType; + } + + public void setConflictType(String conflictType) { + this.conflictType = conflictType; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarSynInputEO.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarSynInputEO.java new file mode 100644 index 00000000..68de1874 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarSynInputEO.java @@ -0,0 +1,72 @@ +package com.adc.da.common; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +public class SarSynInputEO { + private String id; + private String standSort; + private String standNumber; + private String standYear; + private String standType; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String standName; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStandSort() { + return standSort; + } + + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public String getStandType() { + return standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SarTypeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SarTypeEnum.java new file mode 100644 index 00000000..cc804198 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SarTypeEnum.java @@ -0,0 +1,43 @@ +package com.adc.da.common; + +/** + * 标准法规分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum SarTypeEnum { + + INLAND_STAND("INLAND_STAND","国内标准法规"),INLAND_LAWS("INLAND_LAWS","国内政策"), + FOREIGN_STAND("FOREIGN_STAND","国外标准法规"),FOREIGN_LAWS("FOREIGN_LAWS","国外政策"), + STAND("STAND","国内外标准法规"), + LAWS("LAWS","国内外政策"), + BUSINESS("BUSINESS","企业标准"), + BUSS("BUSS","企业标准"), + SPLIT("SPLIT","标准拆分"), + ACCESS("ACCESS","标准法规清单"), + // 增加清单临时分类代码 后续通过同步按钮同步时切换类型 + INLAND_STAND_ACCESS("INLAND_STAND_ACCESS","国内标准法规清单"), + FOREIGN_STAND_ACCESS("FOREIGN_STAND_ACCESS","国外标准法规清单"), + FOREIGN_LAWS_ACCESS("FOREIGN_LAWS_ACCESS","国内外政策清单"), + BUSS_ACCESS("BUSS","企业标准清单"), + PRODUCT("PRODUCT","车型/项目库"), + RECORDS("RECORDS","企标备案库"); + + private String value; + private String lable; + + private SarTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SelectionTypeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SelectionTypeEnum.java new file mode 100644 index 00000000..562d8ebf --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SelectionTypeEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/12/17 11:23 + */ +public enum SelectionTypeEnum { + + ORGLIST("ORGLIST","组织机构"),USERLIST("USERLIST","用户"), + ROLELIST("ROLELIST","角色"),SVPPS("SVPPS","SVPPS"),GZZXX("GZZXX","工作组信息"); + + private String value; + private String lable; + + private SelectionTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SorDivideEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SorDivideEnum.java new file mode 100644 index 00000000..204c1b2c --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SorDivideEnum.java @@ -0,0 +1,31 @@ +package com.adc.da.common; + +/** + * 标准法规分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum SorDivideEnum { + + INLAND_STAND("INLAND_STAND","国内标准法规"),INLAND_LAWS("INLAND_LAWS","国内政策"), + FOREIGN_STAND("FOREIGN_STAND","国外标准法规"),FOREIGN_LAWS("FOREIGN_LAWS","国外政策"), + BUSINESS_STAND("BUSINESS_STAND","企业标准") ; + + private String value; + private String lable; + + private SorDivideEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SplitFilePragraTypeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/SplitFilePragraTypeEnum.java new file mode 100644 index 00000000..9a7bfe56 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SplitFilePragraTypeEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * 标准库参数类型枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum SplitFilePragraTypeEnum { + + TEXT("TEXT","文字"),IMG("IMG","图片"),TABLE("TABLE","表格"); + + private String value; + private String lable; + + private SplitFilePragraTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/SplitTableInfo.java b/adc-da-activiti/src/main/java/com/adc/da/common/SplitTableInfo.java new file mode 100644 index 00000000..158e4d73 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/SplitTableInfo.java @@ -0,0 +1,28 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/5/11 10:29 + */ +public class SplitTableInfo { + private String tableName; + + private String tableHtml; + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getTableHtml() { + return tableHtml; + } + + public void setTableHtml(String tableHtml) { + this.tableHtml = tableHtml; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/StandAttrTypeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/StandAttrTypeEnum.java new file mode 100644 index 00000000..24590d0f --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/StandAttrTypeEnum.java @@ -0,0 +1,28 @@ +package com.adc.da.common; + +/** + * @Description: 属性类型枚举类 + * @Author: yangxuenan + * date: 2020/8/17 17:02 + */ +public enum StandAttrTypeEnum { + + INPUT_STR("INPUT_STR","输入框(字符串)"),INPUT_NUM("INPUT_NUM","输入框(数字)"), + SELECT_OPTION("SEL_OPTION","单选下拉框"),SEL_OPTS("SEL_OPTS","多选下拉框"),DATE_PICKER("DATE_PICKER","日期选择"), + DATE_PIC_OPTS("DATE_PIC_OPTS","多日期选择"),FILE("FILE","文件"), + TEXTAREA("TEXTAREA","文本框") ; + + private String value; + private String lable; + + private StandAttrTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/StandFileClassifyEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/StandFileClassifyEnum.java new file mode 100644 index 00000000..88a7b26f --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/StandFileClassifyEnum.java @@ -0,0 +1,32 @@ +package com.adc.da.common; + +/** + * 资源库文件分类枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum StandFileClassifyEnum { + + STAND_FILE("STAND_FILE","标准文本/法规文件"),STAND_MODIFY_FILE("STAND_MODIFY_FILE","标准修改单"), + DRAFT_FILE("DRAFT_FILE","草案文件"),OPINION_FILE("OPINION_FILE","征求意见稿"), + SENT_SCREEN_FILE("SENT_SCREEN_FILE","送审稿"),APPROVAL_FILE("APPROVAL_FILE","报批稿"), + RELEVANCE_FILE("RELEVANCE_FILE","关联文件"),LAWS_FILE("LAWS_FILE","法规文件") ; + + private String value; + private String lable; + + private StandFileClassifyEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/StandPlanSchedule.java b/adc-da-activiti/src/main/java/com/adc/da/common/StandPlanSchedule.java new file mode 100644 index 00000000..48baf5ff --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/StandPlanSchedule.java @@ -0,0 +1,54 @@ +package com.adc.da.common; + +public class StandPlanSchedule { + + private String value; + + private int countPlanSubmit = 0; + + private int countRealSubmit = 0; + + private int countPlanRelease = 0; + + private int countRealRelease = 0; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public int getCountPlanSubmit() { + return countPlanSubmit; + } + + public void setCountPlanSubmit(int countPlanSubmit) { + this.countPlanSubmit = countPlanSubmit; + } + + public int getCountRealSubmit() { + return countRealSubmit; + } + + public void setCountRealSubmit(int countRealSubmit) { + this.countRealSubmit = countRealSubmit; + } + + public int getCountPlanRelease() { + return countPlanRelease; + } + + public void setCountPlanRelease(int countPlanRelease) { + this.countPlanRelease = countPlanRelease; + } + + public int getCountRealRelease() { + return countRealRelease; + } + + public void setCountRealRelease(int countRealRelease) { + this.countRealRelease = countRealRelease; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/TableToExcel.java b/adc-da-activiti/src/main/java/com/adc/da/common/TableToExcel.java new file mode 100644 index 00000000..686b55f4 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/TableToExcel.java @@ -0,0 +1,155 @@ +package com.adc.da.common; + +import com.adc.da.utils.removeHtml.RemoveHtml; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; + +import java.util.*; + +public class TableToExcel { + + public static Workbook createExcel(Map columnMap, List dataList, String sheelName, String fileName) { + + if(sheelName==null)sheelName="sheet1"; + columnMap.put("a","序号"); + int sheetRow=500; + sheetRow=sheetRow<0?200:sheetRow; + //第一步,创建一个webbook,对应一个excel文件,内存中sheetRow条记录后提交。 + Workbook wb=new SXSSFWorkbook(sheetRow); + if(columnMap!=null&&dataList!=null) { + //获取需要生成的sheet数,以防数据量过大报错 + int sheetCount=getSheetCount(sheetRow,dataList.size()); + //循环生成sheet + for(int i=0;i keys=columnMap.keySet(); + //第一行(标题行)合并并设置标题 + //创建表头行(合并单元格) + Row headRow = sheet.createRow(0); + Row neckRow = sheet.createRow(1); + sheet.addMergedRegion(new CellRangeAddress(0,1,0,0)); + sheet.addMergedRegion(new CellRangeAddress(0,1,1,1)); + sheet.addMergedRegion(new CellRangeAddress(0,1,2,2)); + sheet.addMergedRegion(new CellRangeAddress(0,0,3,5)); + sheet.addMergedRegion(new CellRangeAddress(0,1,6,6)); + sheet.addMergedRegion(new CellRangeAddress(0,1,9,9)); + sheet.addMergedRegion(new CellRangeAddress(0,1,7,7)); + sheet.addMergedRegion(new CellRangeAddress(0,1,8,8)); + //生成表头行 + int j=0; + + for(String key:keys) { + Cell hCell=headRow.createCell(j++); + if (j<4) + hCell.setCellValue(columnMap.get(key)); + } + if (null!=columnMap.get("commentText")) { + Cell hCellh = headRow.createCell(3); + hCellh.setCellValue("修改意见内容"); + } + if (null!=columnMap.get("a")) { + Cell hCellh = headRow.createCell(0); + hCellh.setCellValue("序号"); + } + if (null!=columnMap.get("chapterNumber")) { + Cell hCellh = headRow.createCell(1); + hCellh.setCellValue("章条编号"); + } + if (null!=columnMap.get("chapterName")) { + Cell hCellh = headRow.createCell(2); + hCellh.setCellValue("章节名称"); + } + if (null!=columnMap.get("department")) { + Cell hCell = headRow.createCell(6); + hCell.setCellValue("提出部门"); + } + if (null!=columnMap.get("responUserName")) { + Cell hCell1 = headRow.createCell(7); + hCell1.setCellValue("提出人"); + } + if (null!=columnMap.get("stateText")) { + Cell hCell2 = headRow.createCell(8); + hCell2.setCellValue("处理意见"); + } + if (null!=columnMap.get("oldText")) { + Cell nCell = neckRow.createCell(3); + nCell.setCellValue("修改前"); + } + if (null!=columnMap.get("newText")) { + Cell nCell1 = neckRow.createCell(4); + nCell1.setCellValue("修改后"); + } + if (null!=columnMap.get("reason")) { + Cell nCell1 = neckRow.createCell(5); + nCell1.setCellValue("修改理由"); + } + if (null!=columnMap.get("cause")) { + Cell nCell1 = headRow.createCell(9); + nCell1.setCellValue("原因"); + } + + + //从第三行开始填充数据 + int c=2; + for(int k=i*sheetRow;k columnMap) { + if(sheet!=null&&columnMap!=null) { + List list=new ArrayList(columnMap.keySet()); + for(int i=0;i0?total/sheelRow+1:total/sheelRow; + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/TaskCommonQuery.java b/adc-da-activiti/src/main/java/com/adc/da/common/TaskCommonQuery.java new file mode 100644 index 00000000..926117d9 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/TaskCommonQuery.java @@ -0,0 +1,40 @@ +package com.adc.da.common; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class TaskCommonQuery { + + @ApiModelProperty(value = "当前页") + private int current; + @ApiModelProperty(value = "数量") + private int size; + @ApiModelProperty(value = "名称") + private String name; + @ApiModelProperty(value = "开始时间从") + private String startTime; + @ApiModelProperty(value = "到") + private String endTime; + @ApiModelProperty(value = "结束时间从") + private String finishStartTime; + @ApiModelProperty(value = "到") + private String finishEndTime; + @ApiModelProperty(value = "流程分类") + private String category_id; + + @ApiModelProperty(value = "用户Id") + private String userId; + + @ApiModelProperty(value = "流程名称") + private String prcName; + + @ApiModelProperty(value = "流程编号") + private String prcNum; + + @ApiModelProperty(value = "流程类型") + private String prcType; + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/TemplateOriData.java b/adc-da-activiti/src/main/java/com/adc/da/common/TemplateOriData.java new file mode 100644 index 00000000..a2dcc2d4 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/TemplateOriData.java @@ -0,0 +1,45 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/2/21 16:34 + */ +public class TemplateOriData { + private String preMsg = "

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。

本标准由广州汽车集团股份有限公司汽车工程研究院XXX提出。

本标准由广州汽车集团股份有限公司汽车工程研究院质量管理部归口。

本标准由广州汽车集团股份有限公司汽车工程研究院XXXX起草。

本标准由广州汽车集团股份有限公司汽车工程研究院XXXX解释。

本标准主要起草人:XXX、XXX、XXX。

本标准于20XX年XX月首次发布。

本标准于20XX年XX月进行第X次修订,标准修订人:XXX。

本次主要修订内容如下:

a) 增加内容的表述

——增加第X.X条XXXX的要求。

b)修改内容的表述

——第X.X条XXXX的要求由“XXX”改为“XXX”。

c)删除内容的表述

——删除原标准第X.X条XXXX的要求。

本标准所替代标准的历次版本发布情况为:

——QJ/GAC XXXX.XXX-XXXX。


"; + private String titleOne = "

    本标准规定了XXXX的术语和定义、技术要求、试验方法、检验规则和标志、包装、运输及贮存。

    本标准适用于广汽研究院开发的乘用车用的XXXX。


"; + private String titleTwo = "

       下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

       [国家标准]

       [行业标准]

       [地方标准]

       [法规、规程、规范和其它有关文件]

       [ISO标准]

       [IEC标准]

       [ISO、IEC有关文件]

       [其它国际标准]

       [其它国际有关文件]

       [本企业已发布的院级标准]


"; + private String titleThree = "

        下列术语和定义适用于本标准。


"; + + public String getPreMsg() { + return preMsg; + } + + public void setPreMsg(String preMsg) { + this.preMsg = preMsg; + } + + public String getTitleOne() { + return titleOne; + } + + public void setTitleOne(String titleOne) { + this.titleOne = titleOne; + } + + public String getTitleTwo() { + return titleTwo; + } + + public void setTitleTwo(String titleTwo) { + this.titleTwo = titleTwo; + } + + public String getTitleThree() { + return titleThree; + } + + public void setTitleThree(String titleThree) { + this.titleThree = titleThree; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/TextCompare.java b/adc-da-activiti/src/main/java/com/adc/da/common/TextCompare.java new file mode 100644 index 00000000..266a5916 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/TextCompare.java @@ -0,0 +1,9 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: yangxuenan + * date: 2019/12/5 13:50 + */ +public class TextCompare { +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/UploadFile.java b/adc-da-activiti/src/main/java/com/adc/da/common/UploadFile.java new file mode 100644 index 00000000..6a96f877 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/UploadFile.java @@ -0,0 +1,64 @@ +package com.adc.da.common; + +public class UploadFile { + + private String id; + + private String fileName; + + private String oldFileName; + + private String fileSuffix; + + private String filePath; + + private String attId; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getOldFileName() { + return oldFileName; + } + + public void setOldFileName(String oldFileName) { + this.oldFileName = oldFileName; + } + + public String getFileSuffix() { + return fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/UploadFileInfo.java b/adc-da-activiti/src/main/java/com/adc/da/common/UploadFileInfo.java new file mode 100644 index 00000000..983d526b --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/UploadFileInfo.java @@ -0,0 +1,36 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/1/9 18:59 + */ +public class UploadFileInfo { + private String id; + private String filePath; + private String name; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/UseModuleEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/UseModuleEnum.java new file mode 100644 index 00000000..ea7125c7 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/UseModuleEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * 标准库参数类型枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum UseModuleEnum { + + SOURCE_FILE("SOURCE_FILE","源文件"),WEB_FILE("WEB_FILE","PC预览文件"),MOBLE_FILE("MOBLE_FILE","手机预览文件"); + + private String value; + private String lable; + + private UseModuleEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/WDWUtil.java b/adc-da-activiti/src/main/java/com/adc/da/common/WDWUtil.java new file mode 100644 index 00000000..7abbc115 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/WDWUtil.java @@ -0,0 +1,164 @@ +package com.adc.da.common; + +import org.apache.commons.lang3.StringUtils; + +import java.util.regex.Pattern; + +/** + * @des : excel版本判断类 + * @author: duyunbao + * @email: 1114808306@qq.com + * @date 2017/10/27 16:59 + **/ +public class WDWUtil { + + /** + * @method_name: isExcel2003 + * @des :是否是2003的excel,返回true是2003 + * @author: duyunbao + * @param: [filePath] + * @return: boolean + * @date: 2017/10/27 16:57 + **/ + public static boolean isExcel2003(String filePath) { + return filePath.matches("^.+\\.(?i)(xls)$"); + } + + /** + * @method_name: isExcel2007 + * @des : 是否是2007的excel,返回true是2007 + * @author: duyunbao + * @param: [filePath] + * @return: boolean + * @date: 2017/10/27 16:57 + **/ + public static boolean isExcel2007(String filePath) { + return filePath.matches("^.+\\.(?i)(xlsx)$"); + } + + + /** + * 判断字符串是否是整数 + * @MethodName:isInteger + * @author: DuYunbao + * @date: 2018/5/22 18:00 + */ + public static boolean isNumeric(String str){ + for (int i = str.length();--i>=0;){ + if (!Character.isDigit(str.charAt(i))){ + return false; + } + } + return true; + } + + /**方法二:推荐,速度最快 + * 判断是否为整数 + * @param str 传入的字符串 + * @return 是整数返回true,否则返回false + */ + public static boolean isInteger(String str) { + Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + return pattern.matcher(str).matches(); + } + + /** + * 字母或数字 + * + * @MethodName:isLetterDigitOrChinese + * @author: DuYunbao + * @date: 2018/5/30 15:26 + */ + public static boolean isLetterOrNumber(String str) { + String regex = "^(\\d|[a-zA-Z])+$"; + return !str.matches(regex); + } + + /** + * 汉字、字母、() + * + * @MethodName:isLetterOrChineseOrChar1 + * @author: DuYunbao + * @date: 2018/5/30 15:53 + */ + public static boolean isLetterOrChineseOrChar1(String str) { + String regex = "[^\\a-\\z\\A-\\Z\\u4E00-\\u9FA5\\()\\()]"; + return str.matches(regex); + } + + /** + * 汉字、字母、数字 + * + * @MethodName:isLetterOrChineseOrNumber + * @author: DuYunbao + * @date: 2018/5/30 15:56 + */ + public static boolean isLetterOrChineseOrNumber(String str) { + String regex = "^[\\u4E00-\\u9FA5A-Za-z0-9]+$"; + return !str.matches(regex); + } + + /** + * 汉字、字母、()、-、下划线 + * + * @MethodName:isChineseOrLetterOrUnderlineOrChar1 + * @author: DuYunbao + * @date: 2018/5/30 16:03 + */ + public static boolean isChineseOrLetterOrUnderlineOrChar1(String str) { + String regex = "^[\\u4E00-\\u9FA5A-Za-z_\\-\\()\\()]+$"; + return !str.matches(regex); + } + + /** + * 数字 + * + * @MethodName:isNumbee + * @author: DuYunbao + * @date: 2018/5/30 16:09 + */ + public static boolean isNumber(String str) { + String regex = "\\D"; + return str.matches(regex); + } + + /** + * 数字、大写字母、- + * + * @MethodName:isNumberOrLowerLetterOrChar1 + * @author: DuYunbao + * @date: 2018/5/30 16:41 + */ + public static boolean isNumberOrLowerLetterOrChar1(String str) { + String regex = "^[A-Z0-9\\-]+$"; + return !str.matches(regex); + } + + /** + * 汉字、数字、字母、()、-、下划线 + * + * @MethodName:isChineseOrNumberOrLetterOrUnderlineOrChar + * @author: DuYunbao + * @date: 2018/5/30 16:45 + */ + public static boolean isChineseOrNumberOrLetterOrUnderlineOrChar(String str) { + String regex = "^[\\u4E00-\\u9FA5A-Za-z0-9_\\-\\()\\()]+$"; + return !str.matches(regex); + } + + + /** + * 去除整数含有小数点 + * @MethodName:subStr + * @author: DuYunbao + * @date: 2018/5/31 11:19 + */ + public static String subStr(String text) { + if (StringUtils.isNotEmpty(text)) { + if(text.contains(".0") && text.substring(text.length()-2,text.length()).equals(".0")) { + text = text.substring(0,text.length()-2); + } + } + return text; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/WarnPutTypeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/WarnPutTypeEnum.java new file mode 100644 index 00000000..b670c489 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/WarnPutTypeEnum.java @@ -0,0 +1,30 @@ +package com.adc.da.common; + +/** + * 标准法规分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum WarnPutTypeEnum { + + NEWCAR("NEWCAR","新定车型"),NEWPRODUCT("NEWPRODUCT","新生产车型"), + PRODUCT("PRODUCT","在产车型"); + + private String value; + private String lable; + + private WarnPutTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/WarnTimeEnum.java b/adc-da-activiti/src/main/java/com/adc/da/common/WarnTimeEnum.java new file mode 100644 index 00000000..9a8e3725 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/WarnTimeEnum.java @@ -0,0 +1,33 @@ +package com.adc.da.common; + +/** + * 预警时间间隔 + * @author syt + * date 2018/09/19 + */ +public enum WarnTimeEnum { + + THREEMONTH("THREEMONTH","三个月",3),SIXMONTH("SIXMONTH","六个月",6), + ONEYEAR("ONEYEAR","一年",12),TWOYEAR("TWOYEAR","两年",24); + + private String value; + private String lable; + private int month; + + private WarnTimeEnum(String value, String lable,int month) { + this.value = value; + this.lable = lable; + this.month = month; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + public int getMonth() { + return month; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/Wrapper.java b/adc-da-activiti/src/main/java/com/adc/da/common/Wrapper.java new file mode 100644 index 00000000..ebf1743f --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/common/Wrapper.java @@ -0,0 +1,94 @@ +package com.adc.da.common; + +import java.io.Serializable; + +public class Wrapper implements Serializable { + private static final long serialVersionUID = 1L; + public static final int SUCCESS_CODE = 200; + public static final String SUCCESS_MESSAGE = "操作成功"; + public static final int ERROR_CODE = 500; + public static final String ERROR_MESSAGE = "内部异常"; + public static final int ILLEGAL_ARGUMENT_CODE_ = 100; + public static final String ILLEGAL_ARGUMENT_MESSAGE = "参数非法"; + private boolean success; + private int code; + private String message; + private T result; + + Wrapper() { + this(200, "操作成功"); + } + + Wrapper(int code, String message) { + this(code, message, (T) null); + } + + Wrapper(int code, String message, T result) { + this.success = true; + this.code(code).message(message).result(result); + } + + private Wrapper code(int code) { + this.setCode(code); + return this; + } + + private Wrapper message(String message) { + this.setMessage(message); + return this; + } + + public Wrapper result(T result) { + this.setResult(result); + return this; + } + + public boolean success() { + return 200 == this.code; + } + + public boolean error() { + return !this.success(); + } + + public boolean isSuccess() { + return this.success; + } + + public int getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } + + public T getResult() { + return this.result; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public void setCode(int code) { + this.code = code; + } + + public void setMessage(String message) { + this.message = message; + } + + public void setResult(T result) { + this.result = result; + } + + protected boolean canEqual(Object other) { + return other instanceof Wrapper; + } + + + public String toString() { + return "Wrapper(success=" + this.isSuccess() + ", code=" + this.getCode() + ", message=" + this.getMessage() + ", result=" + this.getResult() + ")"; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/common/ExportExcel.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/common/ExportExcel.java new file mode 100644 index 00000000..0460891c --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/common/ExportExcel.java @@ -0,0 +1,99 @@ +package com.adc.da.workFlow.common; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import sun.awt.SunHints; + + +import java.util.List; +import java.util.Map; + +public class ExportExcel { + + private String header; + + private static String[] property; + Workbook workbook=new XSSFWorkbook(); + + public void setProperty(String property){ + this.property=property.split(","); + } + + public void setHeader(String header){ + this.header=header; + } + + public Workbook getWorkBook(T dataJson) throws Exception { + JSONArray dataArray = JSONObject.parseArray(dataJson.toString()); + + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + + + Sheet sheet = workbook.createSheet(); + sheet.setDefaultColumnWidth(25); + + createHeader(sheet,header); + + createData(sheet,dataArray); + + return workbook; + } + + + public static void createHeader(Sheet sheet, String header){ + + Row rowHeader = sheet.createRow(0);//开始创建标题行 + if (StringUtils.isNotBlank(header)) { + String[] headerArr = header.split(","); + for (int i=0;i < headerArr.length; i++) { + + rowHeader.createCell(i).setCellValue(headerArr[i]); + + } + } + } + + + + public static void createData(Sheet sheet, List data) throws Exception{ + + if (data != null && !data.isEmpty()) { + for (int i=0;i < data.size(); i++) { + + Row row = sheet.createRow(i+1); + + int sheetNum = 0; + + JSONObject datumJson =(JSONObject)data.get(i); + /** + * 遍历jsonObject值填入一行的单元格中 + */ + for (String s : property) { + String value = datumJson.getString(s); + row.createCell(sheetNum).setCellValue(value); + sheetNum++; + } +// Class cls = importDto.getClass(); +// Field[] fields = cls.getDeclaredFields(); +// for (Field field : fields) { +// field.setAccessible(true); +// if (field.get(importDto)!=null){ +// String value = field.get(importDto).toString(); +// row.createCell(sheetNum).setCellValue(value); +// }else { +// row.createCell(sheetNum).setCellValue(""); +// } +// sheetNum++; +// } + } + } + } + + + + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsBussEOController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsBussEOController.java new file mode 100644 index 00000000..b7628543 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsBussEOController.java @@ -0,0 +1,124 @@ +package com.adc.da.workFlow.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import com.adc.da.workFlow.entity.GetQBZXDExcelDto; +import com.adc.da.workFlow.service.ActSarItemsBussEOService; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.google.common.collect.Lists; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.*; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/${restPath}/lawss/actSarItemsBuss") +@Api(description = "|ActSarItemsBuss|") +public class ActSarItemsBussEOController extends BaseController { + + @Autowired + private ActSarItemsBussEOService actSarItemsEOService; + +// private static final Logger logger = LoggerFactory.getLogger(AttFileEOController.class); + + @ApiOperation(value = "|SarBussionessStand|企标复审入库流程") + @PostMapping("/processCreateFsBuss") + public ResponseMessage processCreateFsBuss(String infoJson) throws Exception { + if (StringUtils.isNotBlank(infoJson)) { + actSarItemsEOService.processCreateFsBuss(infoJson); + return Result.success("入库成功"); + } else { + return Result.error("传入数据json不能为空"); + } + } + + @ApiOperation(value = "|SarBussionessStand|企标入库流程") + @PostMapping("/processCreateBuss") + public ResponseMessage processCreateBuss(String infoJson) throws Exception { + if (StringUtils.isNotBlank(infoJson)) { + String bussId = actSarItemsEOService.processCreateBuss(infoJson); + return Result.success(bussId); + } else { + return Result.error("传入数据json不能为空"); + } + } + + @ApiOperation(value = "手动更新") + @GetMapping("/autoUpdIndex") + public void autoUpdIndex(@RequestParam("pid") String pid,@RequestParam("bussId") String bussId) { + actSarItemsEOService.autoUpdIndex(pid,bussId); + } + + @ApiOperation(value = "导出全部意见-企标制修订-技术标准-起草单位高级经理审核节点") + @PostMapping("/exportAllBZZXDJSBZ") + public void getAllStandYJCL(HttpServletResponse response, @RequestBody Map params){ + try { + net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(params.get("json")); + List> data = (List>) jsonArray; + + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String textName="意见信息"; + + Map map=new HashMap<>(); + map.put("1","采纳"); + map.put("2","部分采纳"); + map.put("3","不采纳"); + String fileName = URLEncoder.encode(textName, "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + data = data.stream().sorted(Comparator.comparing(m->m.get("modelNum"))).collect(Collectors.toList()); + List standExcel=new ArrayList<>(); + int i=0; + for (Map idea : data){ + i++; + GetQBZXDExcelDto getExcelDto = GetQBZXDExcelDto.builder() + .partCode(idea.get("modelNum")) + .oldText(idea.get("modelUpdBefore")) + .newText(idea.get("modelUpdAfter")) + .reason(idea.get("modelContent")) + .userName(idea.get("zrUserIdName")) + .deptName(idea.get("zrDeptIdName")) + .state(map.get(idea.get("opinionsAdopted"))) + .cause(idea.get("opinionsAdoptedCont")) + .num(String.valueOf(i)) + .build(); + standExcel.add(getExcelDto); + } + + List> headList=new ArrayList>(); + headList.add(Lists.newArrayList("序号")); + headList.add(Lists.newArrayList("条款号")); + headList.add(Lists.newArrayList("修改前")); + headList.add(Lists.newArrayList("修改后")); + headList.add(Lists.newArrayList("修改理由")); + headList.add(Lists.newArrayList("提出部门")); + headList.add(Lists.newArrayList("责任人")); + headList.add(Lists.newArrayList("意见是否采纳")); + headList.add(Lists.newArrayList("采纳原因")); + EasyExcel.write(response.getOutputStream(), GetQBZXDExcelDto.class).head(headList).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(standExcel); + + } catch (Exception e) { + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + try { + response.getWriter().println(JSON.toJSONString(Result.error())); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + } + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsEOController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsEOController.java new file mode 100644 index 00000000..321dbdd1 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsEOController.java @@ -0,0 +1,39 @@ +package com.adc.da.workFlow.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import com.adc.da.workFlow.service.ActSarItemsEOService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/${restPath}/lawss/actSarItems") +@Api(description = "|ActSarItemsEO|") +public class ActSarItemsEOController extends BaseController { + + @Autowired + private ActSarItemsEOService actSarItemsEOService; + +// private static final Logger logger = LoggerFactory.getLogger(AttFileEOController.class); + + @Value("${file.path}") + private String filePath;//文件存储路径 + + @ApiOperation(value = "|SarStandardsInfoEO|标准入库流程标准入库") + @PostMapping("/processCreateStand") + public ResponseMessage processCreateStand(String infoJson) throws Exception { + if (StringUtils.isNotBlank(infoJson)) { + actSarItemsEOService.processCreateStand(infoJson); + return Result.success("入库成功"); + } else { + return Result.error("传入数据json不能为空"); + } + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsLawsEOController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsLawsEOController.java new file mode 100644 index 00000000..db5475cf --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsLawsEOController.java @@ -0,0 +1,39 @@ +package com.adc.da.workFlow.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import com.adc.da.workFlow.service.ActSarItemsEOService; +import com.adc.da.workFlow.service.ActSarItemsLawsEOService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/${restPath}/lawss/actSarItemsLaws") +@Api(description = "|ActSarItemsEO|") +public class ActSarItemsLawsEOController extends BaseController { + + @Autowired + private ActSarItemsLawsEOService actSarItemsEOService; + +// private static final Logger logger = LoggerFactory.getLogger(AttFileEOController.class); + + @ApiOperation(value = "|SarLawsStandInfo|政策入库流程") + @PostMapping("/processCreateLaws") + public ResponseMessage processCreateLaws(String infoJson) throws Exception { + if (StringUtils.isNotBlank(infoJson)) { + actSarItemsEOService.processCreateLaws(infoJson); + return Result.success("入库成功"); + } else { + return Result.error("传入数据json不能为空"); + } + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsPlanController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsPlanController.java new file mode 100644 index 00000000..722ad877 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/ActSarItemsPlanController.java @@ -0,0 +1,41 @@ +package com.adc.da.workFlow.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import com.adc.da.workFlow.service.ActSarItemsEOService; +import com.adc.da.workFlow.service.ActSarItemsPlanService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/${restPath}/lawss/actSarItemsPlan") +@Api(tags = "业务系统立项流程入库") +public class ActSarItemsPlanController { + + @Autowired + private ActSarItemsPlanService actSarItemsEOService; + +// private static final Logger logger = LoggerFactory.getLogger(AttFileEOController.class); + + @Value("${file.path}") + private String filePath;//文件存储路径 + + @ApiOperation(value = "立项入库流程入库") + @PostMapping("/processCreatePlan") + public ResponseMessage processCreatePlan(String infoJson) throws Exception { + if (StringUtils.isNotBlank(infoJson)) { + return Result.success("200","入库成功",actSarItemsEOService.processCreatePlan(infoJson)); + } else { + return Result.error("传入数据json不能为空"); + } + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/PolicyWorkFlowController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/PolicyWorkFlowController.java new file mode 100644 index 00000000..f961bf6a --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/PolicyWorkFlowController.java @@ -0,0 +1,69 @@ +package com.adc.da.workFlow.controller; + +import com.adc.da.common.ReadExcel; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.workFlow.common.ExportExcel; +import com.adc.da.workFlow.service.PolicyWorkFlowService; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +@RestController +@RequestMapping("/${restPath}/policy/activiti") +@Api(tags = "政策征求意见和重点法规或政策认证流程") +public class PolicyWorkFlowController { + + + /** + * 政策征求意见导出 + */ + @PostMapping("/exportExcel") + @ApiOperation("导出政策征求意见为excel") + public void exportExcel(@RequestBody String dataJson, HttpServletResponse response, HttpServletRequest request) throws Exception { + JSONObject data = JSONObject.parseObject(dataJson); + JSONArray info = data.getJSONArray("dataList"); + + + ExportExcel exportExcel = new ExportExcel(); + exportExcel.setHeader("章节编号,章节名称,修改前,修改后,修改理由,原因,提出部门,提出人"); + exportExcel.setProperty("chapterNumber,chapterName,oldText,newText,changeReason,reason,department,responUserName"); + Workbook workbook=exportExcel.getWorkBook(info); + + + response.setContentType("application/vnd.ms-excel"); + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName("政策征求意见"+".xlsx",request)); +// response.setContentType("application/force-download"); + ServletOutputStream outputStream = response.getOutputStream(); + workbook.write(outputStream); + outputStream.flush(); + + } + + + + @Autowired + private PolicyWorkFlowService policyWorkFlowService; + + /** + * 纳入重点问题管控 + */ + @PostMapping("/enterIssue") + @ApiOperation("纳入重点问题管控") + public ResponseMessage enterIssue(@RequestBody String json){ + boolean result = policyWorkFlowService.enterIssue(json); + + return Result.success(result); + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java new file mode 100644 index 00000000..3c6c4c82 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java @@ -0,0 +1,956 @@ +package com.adc.da.workFlow.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.hutool.core.lang.UUID; +import com.adc.da.FeignClientImpl.workFlowFeignClientImpl; +import com.adc.da.Timer.ProcessTimer; +import com.adc.da.common.*; +import com.adc.da.exception.AdcDaBaseException; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.common.Page; +import com.adc.da.login.util.JwtUtils; +import com.adc.da.slrs.esRevisePlan.dao.EsRevisePlanDao; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanLogService; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanService; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.sys.common.EmailUtils; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.service.IUserEOService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.workFlow.dao.ExportExcelMapper; +import com.adc.da.workFlow.entity.*; +import com.adc.da.workFlow.service.WorkFlowService; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import sun.misc.BASE64Encoder; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.util.*; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/${restPath}/lawss/activiti") +@Api(tags = "福田标准法规-工作流管理") +public class WorkFlowController { + + private static final Logger logger = LoggerFactory.getLogger(WorkFlowController.class); + + @Autowired + private workFlowFeignClientImpl workFlowFeignClient; + + @Value("${stand.edit.file.path}") + private String standEditFilePath; + + /** + * 文件下载路径 + */ + @Value("${file.downloadUrl}") + private String downloadUrl; + + @Autowired + private JwtUtils jwtUtils; + + @Autowired + private ITsUserService userService; + + @Autowired + private IEsRevisePlanService iEsRevisePlanService; + + @Autowired + private EsRevisePlanDao esRevisePlanDao; + + @Autowired + private IEsRevisePlanLogService esRevisePlanLogService; + +// @Autowired +// private ExportExcelMapper exportExcelMapper; + + @ApiOperation(value = "|File|下载文件") + @GetMapping("/downloadFileForSar") + // @RequiresPermissions("sys:file:downloadFileForSar") + public void downloadFileForSar(String fileId, String oldFileName, HttpServletResponse response, HttpServletRequest request) throws Exception { + BusProcessModelHis modelHisOne = workFlowFeignClient.processEditFile(fileId); + OutputStream os = null; + // fileUrl为http或https链接 + InputStream inputStream = null; + HttpURLConnection conn = null; + response.reset(); + File file = new File(downloadUrl+modelHisOne.getEditFilePath()); + + if(file.exists()){ + try { + String fileOldName = fileNameEncoding(oldFileName,request); + response.setHeader("Content-Disposition", "attachment;filename=\""+fileOldName+"\""); + response.setContentType("application/octet-stream"); + inputStream = new FileInputStream(file); + os = response.getOutputStream(); + org.apache.commons.io.IOUtils.copy(inputStream, os); + os.flush(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } finally { + org.apache.commons.io.IOUtils.closeQuietly(inputStream); + org.apache.commons.io.IOUtils.closeQuietly(os); + } + }else { + URL url; + try { + String fileOldName = fileNameEncoding(oldFileName,request); + response.setHeader("Content-Disposition", "attachment;filename=\""+fileOldName+"\""); + response.setContentType("application/octet-stream"); + url = new URL(downloadUrl+modelHisOne.getEditFilePath()); + conn = (HttpURLConnection) url.openConnection(); + // 设置超时间为5秒 + conn.setConnectTimeout(3 * 1000); + // 得到输入流 + inputStream = conn.getInputStream(); + os = response.getOutputStream(); + IOUtils.copy(inputStream, os); + os.flush(); + //生成本地文件之类的省略了 + } catch (Exception e) { + logger.error(e.getMessage(), e); + } finally { + if (conn != null) { + conn.disconnect(); + } + try { + if (inputStream != null) { + inputStream.close(); + } + IOUtils.closeQuietly(os); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + } + } + + /** + * @Author super_liu + * @Description 根据不同浏览器定义下载文件编码 + * Date 2018/10/11 10:40 + * @Param [fileName, request] + * @return java.lang.String + **/ + public String fileNameEncoding(String fileName, HttpServletRequest request) throws IOException { + String agent = request.getHeader("User-Agent"); + if (agent.contains("Firefox")) { + /*BASE64Encoder base64Encoder = new BASE64Encoder(); + fileName = "=?utf-8?B?" + + base64Encoder.encode(fileName.getBytes("utf-8")) + "?=";*/ + fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器 + } else { + fileName = URLEncoder.encode(fileName, "utf-8"); + //谷歌中空格变为+问题 + fileName = fileName.replaceAll("\\+","%20"); + } + return fileName; + } + + @ApiOperation(value = "存储在线编辑文件") + @GetMapping("/saveEditFile") + public BusProcessModelHis saveEditFile(String model){ + return workFlowFeignClient.saveEditFile(model); + } + + @ApiOperation(value = "查询在线编辑流程汇总文件编辑对象") + @GetMapping("/processEditFile") + public BusProcessModelHis processEditFile(@RequestParam("id") String id){ + return workFlowFeignClient.processEditFile(id); + } + + @ApiOperation(value = "手机获取token") + @PostMapping(value = "/loginMobile") + @ResponseBody + public ResponseMessage loginMobile(String taskIds, String pId) throws UnsupportedEncodingException { + BusProcessNew busProcessNew = workFlowFeignClient.queryDetail(taskIds); + if(busProcessNew == null || StringUtils.isBlank(busProcessNew.getUserId())){ + return Result.error("r0011", "用户不存在"); + } + TsUser userEO = userService.getById(busProcessNew.getUserId()); + if (null == userEO) { + return Result.error("r0011", "用户不存在"); + } + if(userEO.getDisableFlag().equals("1")){ + return Result.error("r0011", "帐号已禁用"); + } + String token = jwtUtils.generateToken(userEO.getUserId()); + userEO.setToken(token); + // 加密重要信息 + BASE64Encoder encoder = new BASE64Encoder(); + String userStr = JSON.toJSONString(userEO); + String userStr2 = URLEncoder.encode(userStr,"UTF-8"); + userStr = encoder.encode(userStr2.getBytes()); + return Result.success(userStr); + } + + + + @ApiOperation(value = "查询在线编辑流程汇总文件编辑对象") + @GetMapping("/processModelHisOneCount") + public BusProcessModelHis processModelHisOneCount(@RequestParam("pid") String pid){ + return workFlowFeignClient.processModelHisOneCount(pid); + } + + @ApiOperation(value = "更新在线编辑流程当前节点编辑状态") + @GetMapping("/processModelHisOneUpd") + public BusProcessModelHis processModelHisOneUpd(@RequestParam("pid") String pid,@RequestParam("taskId") String taskId){ + return workFlowFeignClient.processModelHisOneUpdStatus(pid,taskId); + } + + @ApiOperation(value = "查询在线编辑流程当前节点编辑对象") + @GetMapping("/processModelHisOne") + public BusProcessModelHis processModelHisOne(@RequestParam("pid") String pid,@RequestParam("taskId") String taskId){ + return workFlowFeignClient.processModelHisOne(pid,taskId); + } + + @ApiOperation(value = "根据pid 节点信息查询") + @GetMapping("/evaluationHisListByOne") + public BusProcessEvaluationHis evaluationHisListByOne(@RequestParam("pid") String pid,@RequestParam("taskInfo") String taskInfo){ + return workFlowFeignClient.evaluationHisListByOne(pid,taskInfo); + } + + @ApiOperation(value = "查询流程父节点所有评分(去重)返回节点评分总数") + @GetMapping("/evaluationHisListRepSum") + public Map evaluationHisListRepSum(@RequestParam("pid") String pid){ + return workFlowFeignClient.evaluationHisListRepSum(pid); + } + + @ApiOperation(value = "查询流程父节点所有评分(去重)") + @GetMapping("/evaluationHisListRep") + public List evaluationHisListRep(@RequestParam("pid") String pid){ + return workFlowFeignClient.evaluationHisListRep(pid); + } + + @ApiOperation(value = "查询流程父节点所有评分") + @GetMapping("/evaluationHisList") + public List evaluationHisList(@RequestParam("pid") String pid){ + return workFlowFeignClient.evaluationHisList(pid); + } + + @ApiOperation(value = "干活流程接收待办") + @GetMapping("/execTask") + public Map execTask(@RequestParam("todoId") String todoId){ + return workFlowFeignClient.execTask(todoId); + } + + @ApiOperation(value = "管控流程接收任务") + @GetMapping("/acceptTack") + public Integer acceptTack(@RequestParam("nowEsId") String nowEsId, @RequestParam("oaFlag") String oaFlag, @RequestParam("taskId") String taskId) { + return workFlowFeignClient.acceptTack(nowEsId,oaFlag,taskId); + } + + @ApiOperation(value = "管控流程判断接收任务") + @GetMapping("/judgeAcceptTack") + public ResponseMessage judgeAcceptTack(@RequestParam("nowEsId") String nowEsId, @RequestParam("oaFlag") String oaFlag, @RequestParam("prcIdGk") String prcIdGk) { + return Result.success(workFlowFeignClient.judgeAcceptTack(nowEsId,oaFlag,prcIdGk)); + } + + @ApiOperation(value = "流程实例明细验证是否完成") + @GetMapping("/get_verify_by_instance") + public Map activiti_define_start1(@RequestParam("taskId") String taskId, @RequestParam("pId") String pId){ + return workFlowFeignClient.get_verify_by_instance(taskId,pId); + } + + @ApiOperation(value = "导出excel") + @PostMapping("/export_excel") + public void exportExcel(@RequestBody ExportExcelEO exportExcelEO, HttpServletResponse response, HttpServletRequest request) throws IOException { + +// ExportExcel exportExcel = exportExcelMapper.selectById(id); +// if(exportExcel==null||exportExcel.getJson()==null)return; +// ExportExcelEO exportExcelEO=JSON.parseObject(exportExcel.getJson(),ExportExcelEO.class); + + if(exportExcelEO.getFileName()==null||exportExcelEO.getFileName().trim().length()==0){ + exportExcelEO.setFileName(UUID.fastUUID().toString(true)); + } + List> dataList = exportExcelEO.getDataList().stream() + .sorted(Comparator.comparing(a -> String.valueOf(a.get("chapterNumber").toString()))) + .collect(Collectors.toList()); + + Workbook excel = TableToExcel.createExcel(exportExcelEO.getColumnName(), dataList, null, exportExcelEO.getFileName()); + + response.reset(); + + response.setContentType("application/vnd.ms-excel"); + + response.setHeader("Content-disposition", "attachment; filename=" + exportExcelEO.getFileName() + ".xls"); + OutputStream outputStream = response.getOutputStream(); + + excel.write(outputStream); + outputStream.flush(); + outputStream.close(); + } + +// @ApiOperation(value = "导出excel数据暂留") +// @PostMapping("/save_excel") +// public ResponseMessage saveExcel(@RequestBody ExportExcel exportExcel){ +// +// exportExcelMapper.insert(exportExcel); +// return Result.success(exportExcel); +// +// } + + + + @ApiOperation(value = "启动流程-以流程定义id") + @GetMapping("/activiti_define_start") + public ResponseMessage activiti_define_start(@RequestParam("id") String id, @RequestParam("userId") String userId, @RequestParam(value = "bpnId",required = false) String bpnId){ + return workFlowFeignClient.activiti_define_start(id,userId,bpnId); + } + + @ApiOperation(value = "启动流程-以流程定义id") + @GetMapping("/activiti_define_start_rollBack") + public ResponseMessage activiti_define_start_rollBack(@RequestParam("id") String id, @RequestParam("userId") String userId, + @RequestParam(value = "bpnId",required = false) String bpnId,@RequestParam(value = "json",required = false)String json){ + return workFlowFeignClient.activiti_define_start_rollBack(id,userId,bpnId,json); + } + @ApiOperation(value = "启动流程-以流程定义id") + @GetMapping("/activiti_define_start1") + public Map activiti_define_start1(@RequestParam("id") String id, @RequestParam("userId") String userId, @RequestParam("standName") String standName){ + return workFlowFeignClient.activiti_define_start1(id,userId,standName); + } + + @ApiOperation(value = "启动流程-以流程定义id") + @GetMapping("/startProcess") + public ResponseMessage startProcess(@RequestParam("type") String type, @RequestParam(value="id",required = false) String id){ + if(StringUtils.isNotBlank(type)){ + return this.activiti_define_start(ActDefineStartMap.actDefineStartMap(type), LoginUserUtil.getUserId(),id); + }else { + return null; + } + } + + @ApiOperation(value = "启动流程-以流程定义id-加上草稿内容(为了实现撤回)") + @PostMapping("/startProcessRollBack") + public ResponseMessage startProcessRollBack(ProcessRollBackEO processRollBackEO){ + if(StringUtils.isNotBlank(processRollBackEO.getType())){ + return this.activiti_define_start_rollBack(ActDefineStartMap.actDefineStartMap(processRollBackEO.getType()), LoginUserUtil.getUserId(),processRollBackEO.getId(),processRollBackEO.getJson()); + }else { + return null; + } + } + + @ApiOperation(value = "定时任务启动流程-以流程定义id") + @GetMapping("/startProcessNew") + public ResponseMessage startProcessNew(@RequestParam("type") String type, @RequestParam(value="userId",required = false) String userId, @RequestParam(value="id",required = false) String id){ + if(StringUtils.isNotBlank(type)){ + return this.activiti_define_start(ActDefineStartMap.actDefineStartMap(type), userId,id); + }else { + return null; + } + } + + @ApiOperation(value = "待办任务详情") + @GetMapping("/todotask") + public PageInfo todotask(@RequestParam("userId") String userId, @RequestParam("pId") String pId){ + workFlowFeignClient.todotask(userId, pId); + return null; + } + + @ApiOperation(value = "详情") + @GetMapping("/queryDetail") + public BusProcessNew queryDetail(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.queryDetail(taskIds); + } + + @ApiOperation(value = "入库联络人详情") + @GetMapping("/inboundLiaisonDetail") + public BusProcessNew inboundLiaisonDetail(@RequestParam("taskIds") String taskIds, @RequestParam("pId") String pId) { + return workFlowFeignClient.inboundLiaisonDetail(taskIds,pId); + } + + @ApiOperation(value = "入库联络人详情") + @GetMapping("/nonconformity") + public String nonconformity(@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.nonconformity(taskIds); + } + + @ApiOperation(value = "国内法规入库评估流程详情") + @GetMapping("/inboundLiaisonDetailForLawsAss") + public String inboundLiaisonDetailForLawsAss(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.inboundLiaisonDetailForLawsAss(taskIds); + } + + @ApiOperation(value = "项目评估流程详情") + @GetMapping("/projectAssessDetail") + public BusProcessNew projectAssessDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.projectAssessDetail(taskIds); + } + + @ApiOperation(value = "企标制修订申请流程详情") + @GetMapping("/qbzxdsqlcDetail") + public String qbzxdsqlcDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.qbzxdsqlcDetail(taskIds); + } + + @ApiOperation(value = "企标废止流程详情") + @GetMapping("/qbfzlcDetail") + public String qbfzlcDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.qbfzDetail(taskIds); + } + + @ApiOperation(value = "企标制修订流程详情") + @GetMapping("/qbzxdlcDetail") + public String qbzxdlcDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.qbzxdDetail(taskIds); + } + + @ApiOperation(value = "政策法规入库发起人查看流程详情") + @GetMapping("/zcfgrklcFqrDetail") + public String zcfgrklcFqrDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.zcfgrklcFqrDetail(taskIds); + } + + @ApiOperation(value = "政策法规入库流程详情") + @GetMapping("/zcfgrklcDetail") + public String zcfgrklcDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.zcfgrklcDetail(taskIds); + } + + @ApiOperation(value = "政策法规入库流程联络人选择FO详情") + @GetMapping("/zcfgrklcLlrDetail") + public String zcfgrklcLlrDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.zcfgrklcLlrDetail(taskIds); + } + + @ApiOperation(value = "企标制修订评估详情") + @GetMapping("/qbzxdpgDetail") + public String qbzxdpgDetail(@RequestParam("taskIds")String taskIds){ + return workFlowFeignClient.qbzxdpgDetail(taskIds); + } + + @ApiOperation(value = "采购申请流程详情") + @GetMapping("/cgsqDetail") + public String cgsqDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.cgsqDetail(taskIds); + } + + @ApiOperation(value = "复审流程详情") + @GetMapping("/fsDetail") + public String fsDetail(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.fsDetail(taskIds); + } + + @ApiOperation(value = "保存任务") + @PostMapping("/saveTask") + public Wrapper saveTask(@RequestBody BusMes busMes){ + return workFlowFeignClient.saveTask(busMes); + } + + @ApiOperation(value = "行政管理要求评估流程保存") + @PostMapping("/saveTaskForXZYQ") + public Wrapper saveTaskForXZYQ(BusMes busMes){ + return workFlowFeignClient.saveTaskForXZYQ(busMes); + } + + /** + * 复审流程使用 + * @param busMes + * @return + */ + @ApiOperation(value = "保存到代办") + @PostMapping("/autoSaveFirst1") + public Wrapper autoSaveFirst1(@RequestBody BusMes busMes){ + return workFlowFeignClient.autoSaveFirst1(busMes); + } + + @ApiOperation(value = "改派") + @GetMapping("/changeAssigneeNew") + public Wrapper run(@RequestParam("taskId")String taskId, @RequestParam("assignee") String assignee, + @RequestParam("userId")String userId, @RequestParam("pId") String pId) { + return workFlowFeignClient.run(taskId,assignee,userId,pId); + } + + @ApiOperation(value = "我的已办任务列表") + @PostMapping("/hastodoTasksList") + public Wrapper> HastodoTasksListByUserId(@RequestBody TaskCommonQuery taskCommonQuery){ + return workFlowFeignClient.HastodoTasksListByUserId(taskCommonQuery); + } + + @ApiOperation(value = "我的待办任务列表") + @PostMapping("/todoTaskList") + public PageInfo todoTaskListByUserId(@RequestBody TaskCommonQuery taskCommonQuery){ + List busProcessNames = workFlowFeignClient.todoTaskListByUserId(taskCommonQuery); + List list1 = this.startPage(busProcessNames, taskCommonQuery.getCurrent(), taskCommonQuery.getSize()); + PageInfo pageInfo= new PageInfo(); + if(busProcessNames!=null){ + pageInfo.setList(list1); + pageInfo.setPageNo(taskCommonQuery.getCurrent()); + pageInfo.setCount(Long.valueOf(busProcessNames.size())); + pageInfo.setPageSize(taskCommonQuery.getSize()); + }else{ + List list = new ArrayList<>(); + pageInfo.setList(list); + pageInfo.setPageNo(taskCommonQuery.getCurrent()); + pageInfo.setCount(Long.valueOf(0)); + pageInfo.setPageSize(taskCommonQuery.getSize()); + } + return pageInfo; + } + + @ApiOperation(value = "我的待办任务列表") + @PostMapping("/todoTaskListNew") + public PageInfo todoTaskListNew(@RequestBody TaskCommonQuery taskCommonQuery){ + List busProcessNames = workFlowFeignClient.todoTaskListByUserId(taskCommonQuery); + List list1 = this.startPage(busProcessNames, taskCommonQuery.getCurrent(), taskCommonQuery.getSize()); + PageInfo pageInfo= new PageInfo(); + if(busProcessNames!=null){ + pageInfo.setList(list1); + pageInfo.setPageNo(taskCommonQuery.getCurrent()); + pageInfo.setCount(Long.valueOf(busProcessNames.size())); + pageInfo.setPageSize(taskCommonQuery.getSize()); + }else{ + List list = new ArrayList<>(); + pageInfo.setList(list); + pageInfo.setPageNo(taskCommonQuery.getCurrent()); + pageInfo.setCount(Long.valueOf(0)); + pageInfo.setPageSize(taskCommonQuery.getSize()); + } + return pageInfo; + } + + @ApiOperation(value = "完成任务") + @PostMapping("/completeTask") + public Wrapper completeTaskByUserId( BusMes busMes){ + Wrapper str = workFlowFeignClient.completeTaskByUserId(busMes); + if(str.getCode() == 500){ + str.setSuccess(false); + } + return str; + } + + @ApiOperation(value = "特殊完成任务节点 会更·改草稿") + @PostMapping("/completeTaskNew") + public Wrapper completeTaskByUserIdNew( BusMesSpecial busMes){ + Wrapper str = workFlowFeignClient.completeTaskByUserIdNew(busMes); + if(str.getCode() == 500){ + str.setSuccess(false); + } + return str; + } + + @ApiOperation(value = "保存标准入库流程") + @PostMapping("/saveinboundTask") + public Wrapper saveinboundTask(BusMes busMes){ + return workFlowFeignClient.saveinboundTask(busMes); + } + + @ApiOperation(value = "整改流程保存") + @PostMapping("/saveUnqualified") + public Wrapper saveUnqualified(BusMes busMes){ + return workFlowFeignClient.saveUnqualified(busMes); + } + + @ApiOperation(value = "国内法规入库技术评估流程保存") + @PostMapping("/saveInboundLiaisonDetailForLawsAss") + public Wrapper saveInboundLiaisonDetailForLawsAss(BusMes busMes){ + return workFlowFeignClient.saveInboundLiaisonDetailForLawsAss(busMes); + } + + @ApiOperation(value = "国内法规入库项目评估流程保存") + @PostMapping("/saveProjectAssessDetail2") + public Wrapper saveProjectAssessDetail2(BusMes busMes){ + return workFlowFeignClient.saveProjectAssessDetail2(busMes); + } + + @ApiOperation(value = "国内法规入库项目评估流程保存") + @PostMapping("/saveProjectAssessDetail3") + public Wrapper saveProjectAssessDetail3(BusMes busMes){ + return workFlowFeignClient.saveProjectAssessDetail3(busMes); + } + + @ApiOperation(value = "国内法规入库项目评估流程保存") + @PostMapping("/saveProjectAssessDetail4") + public Wrapper saveProjectAssessDetail4(BusMes busMes){ + return workFlowFeignClient.saveProjectAssessDetail4(busMes); + } + + @ApiOperation(value = "国内法规入库项目评估流程保存") + @PostMapping("/saveProjectAssessDetail5") + public Wrapper saveProjectAssessDetail5(BusMes busMes){ + return workFlowFeignClient.saveProjectAssessDetail5(busMes); + } + + @ApiOperation(value = "政策法规评估流程保存") + @PostMapping("/saveZcfgpg") + public Wrapper saveZcfgpg(BusMes busMes){ + return workFlowFeignClient.saveZcfgpg(busMes); + } + + + @ApiOperation(value = "国内法规入库评估流程保存") + @PostMapping("/saveTaskForPub") + public Wrapper saveTaskForPub(BusMes busMes){ + return workFlowFeignClient.saveTaskForPub(busMes); + } + + @ApiOperation(value = "保存任务第一步") + @PostMapping("/saveTaskFirst") + public Wrapper saveTaskFirst(BusMes busMes){ + + return workFlowFeignClient.saveTaskFirst(busMes); + } + + @ApiOperation(value = "查询任务第一步") + @GetMapping("/queryTaskFirst") + public BusProcessName queryTaskFirst(@RequestParam("bpnId")String bpnId) { + return workFlowFeignClient.queryTaskFirst(bpnId); + } + + @ApiOperation(value = "查询taskid任务") + @GetMapping("/queryTaskIndex") + public BusProcessNew queryTaskIndex(@RequestParam("prcId") String prcId,@RequestParam("taskIds") String taskIds){ + return workFlowFeignClient.queryTaskIndex(prcId,taskIds); + } + + @ApiOperation(value = "查询草稿") + @PostMapping("/queryTaskDraft") + public PageInfo queryTaskDraft(@RequestBody TaskCommonQuery taskCommonQuery){ + List busProcessNames = workFlowFeignClient.queryTaskDraft(taskCommonQuery); + List list1 = this.startPage(busProcessNames, taskCommonQuery.getCurrent(), taskCommonQuery.getSize()); + PageInfo pageInfo= new PageInfo(); + if(busProcessNames!=null){ + pageInfo.setList(list1); + pageInfo.setPageNo(taskCommonQuery.getCurrent()); + pageInfo.setCount(Long.valueOf(busProcessNames.size())); + pageInfo.setPageSize(taskCommonQuery.getSize()); + }else{ + List list = new ArrayList(); + pageInfo.setList(list); + pageInfo.setPageNo(taskCommonQuery.getCurrent()); + pageInfo.setCount(Long.valueOf(0)); + pageInfo.setPageSize(taskCommonQuery.getSize()); + } + return pageInfo; + } + + @ApiOperation(value = "定时任务发起流程") + @PostMapping("/autoSaveFirst") + public Wrapper autoSaveFirst(@RequestBody BusMes busMes){ + return workFlowFeignClient.autoSaveFirst(busMes); + } + + @ApiOperation(value = "查询流程是否结束") + @GetMapping("/isEnd") + public String isEnd(@RequestParam("pId")String pId){ + return workFlowFeignClient.isEnd(pId); + } + + @ApiOperation(value = "删除流程") + @GetMapping("/deleteProcessInstance") + public Wrapper deleteProcessInstance(@RequestParam("pId")String pId){ + return workFlowFeignClient.deleteProcessInstance(pId); + } + + @ApiOperation(value = "删除草稿") + @GetMapping("/deleteDraft") + public Wrapper deleteDraft(@RequestParam("id")String id){ + return workFlowFeignClient.deleteDraft(id); + } + + @ApiOperation(value = "已发流程") + @PostMapping("/IssuedProcess") + public PageInfo IssuedProcess(@RequestBody TaskCommonQuery taskCommonQuery){ + Page page = workFlowFeignClient.issuedProcess(taskCommonQuery); + PageInfo pageInfo= new PageInfo(); + pageInfo.setList(page.getList()); + pageInfo.setPageNo(taskCommonQuery.getCurrent()); + pageInfo.setCount(Long.valueOf(page.getCount())); + pageInfo.setPageSize(page.getPageSize()); + return pageInfo; + } + + @ApiOperation(value = "已办流程") + @PostMapping("/doneProcess") + public PageInfo doneProcess(@RequestBody TaskCommonQuery taskCommonQuery){ + Page page = workFlowFeignClient.doneProcess(taskCommonQuery); + PageInfo pageInfo= new PageInfo(); + pageInfo.setList(page.getList()); + pageInfo.setPageNo(page.getPageNo()); + pageInfo.setCount(page.getCount()); + pageInfo.setPageSize(page.getPageSize()); + return pageInfo; + } + + /** + * 开始分页 + * @param list + * @param pageNum 页码 + * @param pageSize 每页多少条数据 + * @return + */ + public static List startPage(List list, Integer pageNum, + Integer pageSize) { + if (list == null) { + return null; + } + if (list.size() == 0) { + return null; + } + + Integer count = list.size(); // 记录总数 + Integer pageCount = 0; // 页数 + if (count % pageSize == 0) { + pageCount = count / pageSize; + } else { + pageCount = count / pageSize + 1; + } + + int fromIndex = 0; // 开始索引 + int toIndex = 0; // 结束索引 + + if (pageNum != pageCount) { + fromIndex = (pageNum - 1) * pageSize; + toIndex = fromIndex + pageSize; + } else { + fromIndex = (pageNum - 1) * pageSize; + toIndex = count; + } + + List pageList = list.subList(fromIndex, toIndex); + + return pageList; + } + + @ApiOperation(value = "流程实例明细列表") + @GetMapping("/get_list_by_instance") + public List> get_list_by_instance(@RequestParam("prcNum") String prcNum, @RequestParam(value="sortWord",required = false)String sortWord, @RequestParam(value="shunxu",required = false) String shunxu){ + return workFlowFeignClient.get_list_by_instance(prcNum,sortWord,shunxu); + } + + @ApiOperation(value = "流程实例汇总列表") + @GetMapping("/get_gather_by_instance") + public List> get_gather_by_instance(@RequestParam("prcNum") String prcNum, @RequestParam(value="sortWord",required = false)String sortWord, @RequestParam(value="shunxu",required = false) String shunxu){ + return workFlowFeignClient.get_gather_by_instance(prcNum,sortWord,shunxu); + } + + @ApiOperation(value = "获取图片") + @GetMapping("/getImg") + public void getImg(@RequestParam("prcNum")String prcNum, HttpServletResponse response) throws IOException { + OutputStream os = null; + response.setContentType("image/jpg"); + response.flushBuffer(); + os = response.getOutputStream(); + os.write(workFlowFeignClient.getImg(prcNum)); + os.flush(); + os.close(); + } + + @ApiOperation(value = "监控流程列表") + @PostMapping("/allProcess") + public PageInfo allProcess(@RequestBody TaskCommonQuery taskCommonQuery){ + Page page= workFlowFeignClient.allProcess(taskCommonQuery); + PageInfo pageInfo= new PageInfo(); + pageInfo.setPageNo(taskCommonQuery.getCurrent()); + pageInfo.setList(page.getList() == null ? new ArrayList<>():page.getList()); + pageInfo.setCount(page.getCount() == null ? 0 : page.getCount()); + pageInfo.setPageSize(page.getPageSize() == null ? 0 : page.getPageSize()); + return pageInfo; + } + + @ApiOperation(value = "|exportProcessDetailInfo|导出excel") + @GetMapping(value = "/exportProcessDetailInfo") + public void exportProcessDetailInfo(String idAndSartypeList, String prcNum, HttpServletResponse response, + HttpServletRequest request, String exportName) throws Exception { + if (StringUtils.isEmpty(exportName)) { + exportName = "流程明细清单"; + } + OutputStream os = null; + Workbook workbook = null; + try { + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName + ".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + List> list = workFlowFeignClient.get_list_by_instance(prcNum,null,null); + List exportDatas=new ArrayList<>(); + List listId = Arrays.asList(idAndSartypeList.split(",")); + for(Map map:list){ + for(String id:listId){ + if(id.equals(map.get("id").toString())){ + if(map.get("endTime")!=null){ + map.put("flag","已完成"); + }else{ + map.put("flag","未完成"); + } + if(map.get("comment")!=null && !map.get("comment").toString().equals("")){ + String comment = map.get("comment").toString(); + switch (comment){ + case "0": + map.put("comment","同意"); + break; + case "1": + map.put("comment","不同意"); + break; + default: + } + } + ProcessDetailExport user = JSON.parseObject(JSON.toJSONString(map), ProcessDetailExport.class); + exportDatas.add(user); + } + } + } + + workbook = ExcelExportUtil.exportExcel(exportParams, ProcessDetailExport.class, exportDatas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + if (workbook != null) { + workbook.close(); + } + } + } + + @ApiOperation(value = "强制撤回") + @GetMapping("/forceRecall") + public Wrapper forceRecall(@RequestParam("prcId") String prcId){ + return workFlowFeignClient.forceRecall(prcId); + } + + @ApiOperation(value = "流程分类列表") + @GetMapping("/categoryList") + public Wrapper> categoryList(){ + return workFlowFeignClient.categoryList(); + } + + @ApiOperation(value = "添加流程分类") + @PostMapping("/addCategory") + public Wrapper addCategory(@RequestBody Category category){ + return workFlowFeignClient.addCategory(category); + } + + @ApiOperation(value = "删除流程分类") + @GetMapping("/deleteCategory") + public Wrapper deleteCategory(@RequestParam("objectId") String objectId){ + return workFlowFeignClient.deleteCategory(objectId); + } + + @ApiOperation(value = "编辑流程分类") + @PostMapping("/editCategory") + public Wrapper editCategory(@RequestBody Category category){ + return workFlowFeignClient.editCategory(category); + } + + @ApiOperation(value = "查询流程") + @GetMapping("/modelListPage") + public Wrapper> modelListPage(@RequestParam(value="name",required = false)String name, @RequestParam(value="category_id ",required = false)String category_id, + @RequestParam("current")int current, @RequestParam("size")int size){ + return workFlowFeignClient.modelListPage(name,category_id,current,size); + } + + @ApiOperation(value = "政策法规入库评估查看最后数据") + @GetMapping("/zcfgrkpgDetail") + public List zcfgrkpgDetail(@RequestParam("pId") String pId){ + return workFlowFeignClient.zcfgrkpgDetail(pId); + } + + @ApiOperation(value = "修改流程所属分类") + @GetMapping("/updatModel") + public Wrapper updatModel(@RequestParam("modelId")String modelId, @RequestParam("categoryId")String categoryId){ + return workFlowFeignClient.updatModel(modelId,categoryId); + } + + @ApiOperation(value = "查询流程编号") + @GetMapping("/findPrcNumByPid") + public Wrapper findPrcNumByPid(@RequestParam("pId")String pId){ + return workFlowFeignClient.findPrcNumByPid(pId); + } + + @ApiOperation(value = "行政管理要求评估流程详情") + @GetMapping("/inboundLiaisonDetailForXZYQ") + public BusProcessNew inboundLiaisonDetailForXZYQ(@RequestParam("taskIds") String taskIds) { + return workFlowFeignClient.inboundLiaisonDetailForXZYQ(taskIds); + } + + @ApiOperation(value = "标准解读流程汇总详情") + @GetMapping("/decodeDetail") + public BusProcessNew decodeDetail(@RequestParam("taskIds") String taskIds, @RequestParam("pId") String pId){ + return workFlowFeignClient.decodeDetail(taskIds,pId); + } + + @ApiOperation(value = "采购保存接口") + @PostMapping("/saveCgSq") + public Wrapper saveCgSq(BusMes busMes) { + return workFlowFeignClient.saveTaskForPub(busMes); + } + + @Autowired + ProcessTimer processTimer; + @ApiOperation(value = "自动催办,任务截至时间前3天开始每天催办") + @PostMapping("/send123") + public String send123() { + processTimer.urging(); + return "0"; + } + + @Autowired + private IUserEOService userEOService; + + @Autowired + private EmailUtils mailUtil; + + @ApiOperation(value = "手动催办") + @PostMapping("/sendEmailByHands") + private ResponseMessage sendEmailByHands(String taskId) { + List busProcessNames = workFlowFeignClient.queryBusProcessNameForEnd(taskId); + if (null != busProcessNames && 0 < busProcessNames.size()) { + for (BusProcessName busProcessName : busProcessNames) { + String type = busProcessName.getPrcType(); + Integer typeInt = 99; + if (org.apache.commons.lang3.StringUtils.isNotEmpty(type)) { + typeInt = Integer.valueOf(type); + } + type = processTimer.chooseType(typeInt, type); + UserEO userEO = userEOService.selectByPrimaryKey(busProcessName.getCreatUserName()); + String[] array = userEO.getEmail().split(","); + + String msg = "您好,[" + busProcessName.getPrcNum() + "]-[" + busProcessName.getPrcName() + "] 您有待办任务未及时办理 ,请登录全球标准法规管理系统( http://39.98.140.126:10005/#/login )办理:链接( http://39.98.140.126:10005/#/processCenter?tabsName=ProcessCenter )。如有问题请联系发起人[" + userEO.getUname() + "][" + userEO.getEmail() + "]\n" + + " ——来自 全球标准法规管理系统"; + String title = "GSRM——【待办任务】[" + type + "] 您有未完成的待办任务"; + mailUtil.sendMsgFeign(array, title, msg); + } + } + return Result.success("发送成功"); + } + + @ApiOperation(value = "草稿删除") + @PostMapping("/delCG") + public String delCG(@RequestParam("id")String id){ + return workFlowFeignClient.delCG(id); + } + + + @ApiOperation(value = "通过企标计划和技术标准起草关联表查询对应的计划id") + @GetMapping("/getEsByWk") + public String getEsByWk(@RequestParam("prcId")String prcId){ + return workFlowFeignClient.getEsByWk(prcId); + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/dao/ActSarItemsEODao.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/dao/ActSarItemsEODao.java new file mode 100644 index 00000000..844d2c3d --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/dao/ActSarItemsEODao.java @@ -0,0 +1,18 @@ +package com.adc.da.workFlow.dao; + +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ActSarItemsEODao { + + List queryByPage(ActSarItemsEO actSarItemsEO); + + Integer process4PageDateCount(ActSarItemsEO actSarItemsEO); + + int queryByCount(); + + List queryStandAndLaws(ActSarItemsEO actSarItemsEO); +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/dao/ExportExcelMapper.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/dao/ExportExcelMapper.java new file mode 100644 index 00000000..e6b082f5 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/dao/ExportExcelMapper.java @@ -0,0 +1,8 @@ +package com.adc.da.workFlow.dao; + + +import com.adc.da.workFlow.entity.ExportExcel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface ExportExcelMapper extends BaseMapper { +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ActSarItemsEO.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ActSarItemsEO.java new file mode 100644 index 00000000..20f78479 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ActSarItemsEO.java @@ -0,0 +1,66 @@ +package com.adc.da.workFlow.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author yangxuenan + * @Description 工作流使用 + * Date 2018/10/23 14:29 + * @Param + * @return + **/ +@Data +public class ActSarItemsEO { + private String resId;// 标准法规ID + private String resFlag; //类型 + private String resNum; //标准,文件号 + private String resName; //标准,文件名称 + private String resType; //标准类型 + private String deptName; //部门id + private String orgName; // 责任部门名称 + private String parentId; //仅条目有 + private String userId; //评估人ID + private List itemsList; //条目信息 + private String accessId; //导入时查询 + private String applyArctic; + private String[] applyArcticList; + private String energyKind; + private String[] energyKindList; + private String mainPointImplementation; + private String termsConditions; + private String parts; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date tackTime; + private String applyArcticShow; + private String energyKindShow; + private String remarks; + private String resState; //标准状态 + private String fileState; //文本状态 + private String type; //符合性状态 + private String prcNum; + private String foId; + private String foName; + private String form; + private String roleId; + private String roleName; + //流程分页用 + private Integer startIndex; + private Integer endIndex; + private Integer pageSize; + private Integer nowPage; + private Map attrInfoMap = new LinkedHashMap<>(); //属性表字段与值 + private String sarState; + private String newPutText; + private String prodPutText; + private String authObj; + private String authDelive; + private String performInfo; + + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/BusProcessEvaluationHis.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/BusProcessEvaluationHis.java new file mode 100644 index 00000000..b7caf58e --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/BusProcessEvaluationHis.java @@ -0,0 +1,92 @@ +package com.adc.da.workFlow.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 java.io.Serializable; + +/** + *

+ * OA日志表 + *

+ * + * @author super_liu + * @since 2021-09-17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BusProcessEvaluationHis对象", description="流程评分历史表") +public class BusProcessEvaluationHis implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "主键") + @TableId(value = "ID", type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "标准id") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "处理人") + @TableField("USER_ID") + private String userId; + + @ApiModelProperty(value = "信息") + @TableField("MESG") + private String mesg; + + @ApiModelProperty(value = "节点信息") + @TableField("TASK_INFO") + private String taskInfo; + + @ApiModelProperty(value = "任务id") + @TableField("TASK_ID") + private String taskId; + + @ApiModelProperty(value = "流程实例id") + @TableField("P_ID") + private String pId; + + @ApiModelProperty(value = "流程名称") + @TableField("PRC_NAME") + private String prcName; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String createTime; + + @ApiModelProperty(value = "更新时间") + @TableField("UPDATE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String updateTime; + + @ApiModelProperty(value = "onlyOffice 是否编辑 0 未编辑 1 已编辑") + @TableField("EDIT_STATUS") + private String editStatus; + + @ApiModelProperty(value = "onlyOffice 编辑文件存储路径") + @TableField("EDIT_FILE_PATH") + private String editFilePath; + + @ApiModelProperty(value = "逻辑状态") + @TableField("FLAG") + private String flag; + + @ApiModelProperty(value = "onlyOffice 访问编辑文件全路径") + @TableField(exist = false) + private String downLoadUrl; + + @ApiModelProperty(value = "处理人姓名") + @TableField(exist = false) + private String userName; +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/BusProcessModelHis.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/BusProcessModelHis.java new file mode 100644 index 00000000..3435eca4 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/BusProcessModelHis.java @@ -0,0 +1,92 @@ +package com.adc.da.workFlow.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 java.io.Serializable; + +/** + *

+ * 流程模块历史表 + *

+ * + * @author super_liu + * @since 2021-09-17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BusProcessModelHis对象", description="流程模块历史表") +public class BusProcessModelHis implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "主键") + @TableId(value = "ID", type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "标准id") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "处理人") + @TableField("USER_ID") + private String userId; + + @ApiModelProperty(value = "信息") + @TableField("MESG") + private String mesg; + + @ApiModelProperty(value = "节点信息") + @TableField("TASK_INFO") + private String taskInfo; + + @ApiModelProperty(value = "任务id") + @TableField("TASK_ID") + private String taskId; + + @ApiModelProperty(value = "流程实例id") + @TableField("P_ID") + private String pId; + + @ApiModelProperty(value = "流程名称") + @TableField("PRC_NAME") + private String prcName; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String createTime; + + @ApiModelProperty(value = "更新时间") + @TableField("UPDATE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String updateTime; + + @ApiModelProperty(value = "onlyOffice 是否编辑 0 未编辑 1 已编辑") + @TableField("EDIT_STATUS") + private String editStatus; + + @ApiModelProperty(value = "onlyOffice 编辑文件存储路径") + @TableField("EDIT_FILE_PATH") + private String editFilePath; + + @ApiModelProperty(value = "onlyOffice 编辑类型 node 节点编辑 count 汇总编辑") + @TableField("EDIT_TYPE") + private String editType; + + @ApiModelProperty(value = "逻辑状态") + @TableField("FLAG") + private String flag; + + @ApiModelProperty(value = "onlyOffice 访问编辑文件全路径") + @TableField(exist = false) + private String downLoadUrl; +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ExportExcel.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ExportExcel.java new file mode 100644 index 00000000..4a99c762 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ExportExcel.java @@ -0,0 +1,20 @@ +package com.adc.da.workFlow.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.models.auth.In; +import lombok.*; + +@TableName("t_export_excel") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class ExportExcel { + @TableId(value = "id",type = IdType.AUTO) + private Integer id; + @TableField(value = "json") + private String json; +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ExportExcelEO.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ExportExcelEO.java new file mode 100644 index 00000000..b5b8e1cf --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ExportExcelEO.java @@ -0,0 +1,17 @@ +package com.adc.da.workFlow.entity; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class ExportExcelEO { + + private Map columnName; + + private List> dataList; + + private String fileName; + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/GetQBZXDExcelDto.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/GetQBZXDExcelDto.java new file mode 100644 index 00000000..eb600cb3 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/GetQBZXDExcelDto.java @@ -0,0 +1,35 @@ +package com.adc.da.workFlow.entity; + +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@HeadRowHeight(20) +@ColumnWidth(15) +public class GetQBZXDExcelDto { + private String num; // 序号 + + private String partCode; // 条款号 + + private String oldText; // 修改前 + + private String newText; // 修改后 + + private String reason; // 修改理由 + + private String deptName; // 提出部门 + + private String userName; // 责任人 + + private String state; // 意见是否采纳 + + private String cause; // 采纳理由 + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ProcessDetailExport.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ProcessDetailExport.java new file mode 100644 index 00000000..0dbc9112 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ProcessDetailExport.java @@ -0,0 +1,22 @@ +package com.adc.da.workFlow.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.util.Date; + +@Data +public class ProcessDetailExport { + @Excel(name = "任务步骤", orderNum = "1",width = 15) + private String name; + @Excel(name = "任务受理人", orderNum = "2",width = 15) + private String assignee; + @Excel(name = "创建时间", orderNum = "3",exportFormat = "yyyy/MM/dd",width = 15) + private Date startTime; + @Excel(name = "完成时间", orderNum = "4",exportFormat = "yyyy/MM/dd",width = 15) + private Date endTime; + @Excel(name = "流程信息", orderNum = "5",width = 15) + private String commentText; + @Excel(name = "状态", orderNum = "6",width = 15) + private String flag; +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ProcessRollBackEO.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ProcessRollBackEO.java new file mode 100644 index 00000000..ad3d7256 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/entity/ProcessRollBackEO.java @@ -0,0 +1,17 @@ +package com.adc.da.workFlow.entity; + +import lombok.Data; + +@Data +public class ProcessRollBackEO { + + private String json; + + private String type; + + private String id; + + private String userId; + + private String bpnId; +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/enums/FlowFinishEnum.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/enums/FlowFinishEnum.java new file mode 100644 index 00000000..4bc40c77 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/enums/FlowFinishEnum.java @@ -0,0 +1,31 @@ +package com.adc.da.workFlow.enums; + +public enum FlowFinishEnum { + FSLC_JSBZQC_START("正处于技术标准起草节点","0"), + FSLC_JSBZQC_FINISH("技术标准起草节点已结束","1"), + JSBZLC_FINISH("技术标准流程已结束","2"); + + FlowFinishEnum(String label, String value) { + this.label = label; + this.value = value; + } + + String label; + String value; + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsBussEOService.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsBussEOService.java new file mode 100644 index 00000000..c1a52764 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsBussEOService.java @@ -0,0 +1,704 @@ +package com.adc.da.workFlow.service; + +import com.adc.da.FeignClientImpl.workFlowFeignClientImpl; +import com.adc.da.common.BussEnum; +import com.adc.da.common.SarConformStateEnum; +import com.adc.da.common.SarStateColorEnum; +import com.adc.da.common.SarTypeEnum; +import com.adc.da.http.ResponseMessage; +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.SarCompResAssess.entity.SarCompResAssess; +import com.adc.da.slrs.SarCompResAssess.service.ISarCompResAssessService; +import com.adc.da.slrs.SarCompStatusInfo.dao.SarCompStatusInfoDao; +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import com.adc.da.slrs.SarFileSplitItems.service.ISarFileSplitItemsService; +import com.adc.da.slrs.esRevisePlan.dao.EsRevisePlanDao; +import com.adc.da.slrs.esRevisePlan.dao.EsRevisePlanLogDao; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlanLog; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanService; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfo; +import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandState; +import com.adc.da.slrs.sarBussionessStandState.service.ISarBussionessStandStateService; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.QualityEvaluation; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.service.IQualityEvaluationService; +import com.adc.da.slrs.sarLawsAttrInfo.service.ISarLawsAttrInfoService; +import com.adc.da.slrs.sarLawsItemVal.dao.SarLawsItemValDao; +import com.adc.da.slrs.sarLawsItems.dao.SarLawsItemsDao; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.service.ISarLawsStandInfoService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.DateUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.Utils; +import com.adc.da.workFlow.dao.ActSarItemsEODao; +import com.adc.da.workFlow.entity.BusProcessEvaluationHis; +import com.adc.da.workFlow.enums.FlowFinishEnum; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Service("actSarItemsBussEOService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ActSarItemsBussEOService { + + private static final Logger logger = LoggerFactory.getLogger(ActSarItemsBussEOService.class); + + @Autowired + private SarStandAttrInfoDao sarStandAttrInfoEODao; + + @Autowired + private workFlowFeignClientImpl workFlowFeignClient; + + @Autowired + private SarBussStandAttrInfoDao sarBussStandAttrInfoEODao; + + @Autowired + private ISarBussStandAttrInfoService sarBussStandAttrInfoService; + + @Autowired + private ISarBussionessStandService iSarBussionessStandService; + + @Autowired + private IQualityEvaluationService qualityEvaluationService; + + @Autowired + private ISarUpdLogService sarUpdLogEOService; + + @Autowired + IEsRevisePlanService iEsRevisePlanService; + + @Autowired + private EsRevisePlanDao esRevisePlanDao; + + @Autowired + private ISarBussionessStandStateService bussionessStandStateService; + + @Value("${elas.flag}") + private boolean elasflag; + + @Autowired + private EsRevisePlanLogDao esRevisePlanLogDao; + + + public void processCreateFsBuss(String standJson) throws Exception { + Map standMap = new HashMap(); + standMap = JSONObject.parseObject(standJson); + if (standMap != null && !standMap.isEmpty()) { + String standId = String.valueOf(standMap.get("standId")); + String standCode = String.valueOf(standMap.get("standCode")); + String standSort = String.valueOf(standMap.get("standSort")); + String standName = String.valueOf(standMap.get("standName")); + String issueTime = String.valueOf(standMap.get("issueTime")); + String reviewTime = String.valueOf(standMap.get("reviewTime")); + String reviewResults = String.valueOf(standMap.get("reviewResults")); + + // 更新企标文本状态 + String textStatus = ""; + if("1".equals(reviewResults)){ + textStatus = BussEnum.BUSS_XD.getValue(); + }else if("2".equals(reviewResults)){ + textStatus = BussEnum.BUSS_FZ.getValue(); + }else if("3".equals(reviewResults)){ + textStatus = BussEnum.BUSS_YX.getValue(); + } + + Map attrInfoMap = sarBussStandAttrInfoService.getBussAttrInfo(standId); + String sarStandAttrInfo = JSONObject.toJSONString(attrInfoMap); + SarBussionessStand bussionessStand = new SarBussionessStand(); + bussionessStand.setId(standId); + bussionessStand.setTextStatusBuss(textStatus); + bussionessStand.setSarStandAttrEOStr(sarStandAttrInfo); + if("2".equals(reviewResults) || "3".equals(reviewResults)) { // 废止,有效时才修改文本状态 + iSarBussionessStandService.updateSarBussionessStand(bussionessStand); + } + + SarBussionessStandState state = new SarBussionessStandState(); + state.setStandId(standId); + state.setStandCode(standCode); + state.setStandName(standName); + state.setReviewResults(Integer.parseInt(reviewResults)); + if(DateUtil.printToDate(issueTime) != null){ + state.setIssueTime(issueTime); + } + state.setModifyTime(DateUtil.printDateAll(new Date())); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("STAND_ID",standId); + List stateList = bussionessStandStateService.list(wrapper); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Integer addYear = 0; + if (standSort.contains("Q/QCBFC")) { + addYear = 3; + }else { + addYear = 5; + } + Date FSDate = sdf.parse(issueTime); + if (ObjectUtils.isNotEmpty(reviewTime)) { + FSDate = new Date(); + } + + if(!stateList.isEmpty()){ + state.setId(stateList.get(0).getId()); + if ("3".equals(reviewResults)) { + Calendar cal = Calendar.getInstance(); + cal.setTime(FSDate);//设置起时间 + cal.add(Calendar.YEAR, addYear);//增加年份 + cal.add(Calendar.MONTH, -1);//减去一个月 + state.setReviewTime(sdf.format(cal.getTime())); + } + bussionessStandStateService.updateById(state); + }else { + if ("3".equals(reviewResults)) { + Calendar cal = Calendar.getInstance(); + cal.setTime(FSDate);//设置起时间 + cal.add(Calendar.YEAR, addYear);//增加年份 + cal.add(Calendar.MONTH, -1);//减去一个月 + state.setReviewTime(sdf.format(cal.getTime())); + } + state.setCreationTime(DateUtil.printDateAll(new Date())); + bussionessStandStateService.save(state); + } + + if ("3".equals(reviewResults)) { + List sarBussStandAttrInfos = sarBussStandAttrInfoService.list(wrapper); + if (ObjectUtils.isNotEmpty(sarBussStandAttrInfos)) { + Calendar cal = Calendar.getInstance(); + cal.setTime(FSDate);//设置起时间 + cal.add(Calendar.YEAR, addYear);//增加年份 + cal.add(Calendar.MONTH, -1);//减去一个月 + SarBussStandAttrInfo sarBussStandAttrInfo = sarBussStandAttrInfos.get(0); + sarBussStandAttrInfoEODao.updateFSQR(sarBussStandAttrInfo.getId(),sdf.format(cal.getTime())); + } + } + + + if(StringUtils.isNotBlank(standSort) && !standSort.contains("Q/QCBFC")){ + String QCDWID = String.valueOf(standMap.get("QCDWID")); + String QCDW = String.valueOf(standMap.get("QCDW")); + String QCRBUSSID = String.valueOf(standMap.get("QCRBUSSID")); + String QCRBUSS = String.valueOf(standMap.get("QCRBUSS")); + String draftTime = String.valueOf(standMap.get("draftTime")); + String releaseTime = String.valueOf(standMap.get("releaseTime")); + String YYBZ = String.valueOf(standMap.get("YYBZ")); + String CYBZ = String.valueOf(standMap.get("CYBZ")); + String SYCXCLASS = ObjectUtils.isEmpty(standMap.get("SYCXCLASS")) ? "" : getFieldsValue(standMap, "SYCXCLASS"); + String DTQBBHBUSS = String.valueOf(standMap.get("DTQBBHBUSS")); + String LXD = String.valueOf(standMap.get("LXD")); + + //立项 + EsRevisePlan esRevisePlanDTO=new EsRevisePlan(); + esRevisePlanDTO.setEsName(standName); + esRevisePlanDTO.setUnit(QCDWID); + esRevisePlanDTO.setUnitName(QCDW); + esRevisePlanDTO.setDrafter(QCRBUSSID); + esRevisePlanDTO.setDrafterName(QCRBUSS); + esRevisePlanDTO.setPlanStatus("6"); + esRevisePlanDTO.setReviseStatus("2"); + esRevisePlanDTO.setDraftTime(DateUtil.printToDate(draftTime)); + esRevisePlanDTO.setReleaseTime(DateUtil.printToDate(releaseTime)); + esRevisePlanDTO.setBussSort(standSort); + esRevisePlanDTO.setEsMatingRelations(YYBZ); + esRevisePlanDTO.setEsStandRelations(CYBZ); + esRevisePlanDTO.setUseLevel(CYBZ); + esRevisePlanDTO.setArea(SYCXCLASS); + esRevisePlanDTO.setRqbName(DTQBBHBUSS); + esRevisePlanDTO.setLxd(LXD); + esRevisePlanDTO.setLogType("复审"); + + EsRevisePlan qw = new EsRevisePlan(); + qw.setEsName(standName); + qw.setBussSort(standSort); + List list = esRevisePlanDao.selectPageByName(qw); + + String esPlanId = ""; + if(!list.isEmpty()){ + esRevisePlanDTO.setId(list.get(0).getId()); + iEsRevisePlanService.updateById(esRevisePlanDTO); + //日志 + if ("1".equals(reviewResults)) { + String esName = list.get(0).getEsName(); + String id = list.get(0).getId(); + Date date = new Date(); + String msg = UserUtils.getUser().getUname() + " " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date) + " " + +"通过复审流程创建了《"+ esName +"》,其复审结果为修订。"; + esRevisePlanLogDao.insert(new EsRevisePlanLog(null,id,msg,date)); + } + esPlanId = list.get(0).getId(); + }else{ + if("1".equals(reviewResults)) { // 修订时才生成企标计划 + ResponseMessage objectResponseMessage = iEsRevisePlanService.addPlan(esRevisePlanDTO); + esPlanId = objectResponseMessage.getMessage(); + } + } + if ("1".equals(reviewResults)) { + workFlowFeignClient.setRelation(esPlanId, String.valueOf(standMap.get("prcId")) , FlowFinishEnum.FSLC_JSBZQC_START.getValue()); + } + } + } + + + } + + private String getFieldsValue(Map standMap, String key){ + String str = ""; + Object json= new JSONTokener(standMap.get(key).toString()).nextValue(); + if(json instanceof org.json.JSONArray){ + str = String.join(",",JSONObject.parseArray(standMap.get(key).toString(),String.class)); + }else { + if(!json.equals("null")){ + str = standMap.get(key).toString(); + } + } + return str; + } + + public void autoUpdIndex(String pid,String bussId){ + List evaluationHisFilter = workFlowFeignClient.evaluationHisList(pid); + List evaluationHis = new ArrayList<>(); + Map> listMap = new TreeMap<>(); + + // 按 相同数据分组 + listMap = evaluationHisFilter.stream().collect( + Collectors.groupingBy(a -> Utils.format("{0}#{1}", a.getPId(),a.getTaskInfo()))); + + List evaluations = new ArrayList<>(); + if(!listMap.isEmpty()){ + SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); + listMap.forEach((key, value) -> { + if(!value.isEmpty()){ + evaluationHis.add(value.get(0)); + } + }); + String finalBussId = bussId; + Date date = new Date(); + evaluationHis.forEach(busProcessEvaluationHis -> { + List valueArr = JSONArray.parseArray(busProcessEvaluationHis.getMesg(),JSONObject.class); + if(!valueArr.isEmpty()){ + valueArr.forEach(object -> { + QualityEvaluation evaluation = new QualityEvaluation(); + evaluation.setId(UUIDUtils.randomUUID20()); + evaluation.setLawId(finalBussId); + evaluation.setUserId(object.getString("userId")); + evaluation.setScore(object.getString("score")); + evaluation.setReason(object.getString("reason")); + evaluation.setEvaluationIndex(object.getString("code")); + evaluation.setProcessNode(object.getString("processNode")); + evaluation.setEvaluationType(object.getString("indexType")); + evaluation.setCreateTime(date); + evaluation.setModifyTime(date); + evaluations.add(evaluation); + + }); + } + }); + qualityEvaluationService.saveBatch(evaluations); + } + } + + /*** + * @Description: 国内外标准流程入库" + * @Date: 2020/12/7 13:48 + * @Param: [standJson] + * @Return: void + */ + public String processCreateBuss(String standJson) throws Exception{ + Map standMap = new HashMap(); + standMap = JSONObject.parseObject(standJson); + String bussId = ""; + if (standMap != null && !standMap.isEmpty()) { + String prcNum = String.valueOf(standMap.get("prcNum")); + String pid = String.valueOf(standMap.get("topId")); + String prcName = String.valueOf(standMap.get("prcName")); + String prcCreateUser = String.valueOf(standMap.get("prcCreateUser")); + String standType = String.valueOf(standMap.get("standType")); +// String isJudge = String.valueOf(standMap.get("ifIn")); //是否经过技术评估 + SarBussionessStand sarBussionessStand = new SarBussionessStand(); +// if(standMap.containsKey("standId")) { +// if (standMap.get("standId") != null && !standMap.get("standId").toString().equals("")) { +// String resId = standMap.get("standId").toString(); +// //此处说明是带入的形式 +// sarStandardsInfoEO.setId(resId); +// SarCompResAssess assessInfoByResId = sarCompResAssessEOService.ssessInfoByResId(resId); +// if (assessInfoByResId != null) { +// assessInfoByResId.setProcessState("2"); +// sarCompResAssessEOService.updateByPrimaryKeySelective(assessInfoByResId); +// } +// } +// } + + Map attInfoMap = new HashMap<>(); + List jsonArray = new ArrayList<>(); + Object breakVal = null; + Object itemList = null; + for (Map.Entry entry : standMap.entrySet()) { + String field = entry.getKey().toUpperCase(); + Object value = entry.getValue(); + if (InitStandAttrUtil.queryFieldListBuss.contains(field)) { + if (value instanceof JSONArray) { + String valStr = String.valueOf(value); + List valueArr = JSONArray.parseArray(valStr,String.class); + if (valueArr != null && !valueArr.isEmpty()) { + String newValue = ""; + for (String val : valueArr) { + newValue += val + ","; + } + newValue = newValue.substring(0,newValue.length()-1); + value = newValue; + }else { + value = ""; + } + } + attInfoMap.put(field,value); + } else { + createStandBaseField(sarBussionessStand,entry.getKey(),value); + } + } + //处理文件 + //此处需要处理之前的文件信息,防止文件丢失 +// attInfoMap = saveFileMsg(attInfoMap,sarStandardsInfoEO.getFileIds(),sarStandardsInfoEO.getTextStatus()); + String resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarBussionessStand.setSarStandAttrEOStr(resData); + // 根据标准号判断数据是否已存在 + //2021年4月9日 此处检查当前是否存在standId + String standCode = ""; + if(StringUtils.isNotBlank(sarBussionessStand.getStandCode()) && !"null".equals(sarBussionessStand.getStandCode())){ + standCode = sarBussionessStand.getStandCode(); + } + List lawsList = iSarBussionessStandService.selectStandardsByStandNumber(standCode); +// if (StringUtils.isBlank(sarStandardsInfoEO.getMenuId()) && "INLAND".equals(sarStandardsInfoEO.getStandType())) { +// sarStandardsInfoEO.setMenuId("64df1d5522bb49c09af2"); +// sarStandardsInfoEO.setCountry("CN"); +// } else if (StringUtils.isBlank(sarStandardsInfoEO.getMenuId()) && "FOREIGN".equals(sarStandardsInfoEO.getStandType())) { +// sarStandardsInfoEO.setMenuId("22179d54d4e640098e29"); +// } + //此处判断是否是带入的标准 + if(StringUtils.isNotBlank(sarBussionessStand.getId())) { + bussId = sarBussionessStand.getId(); + SarBussionessStand query = new SarBussionessStand(); + query.setId(sarBussionessStand.getId()); + iSarBussionessStandService.attrInfoDetails(query); + Map attrInfoMap = query.getAttrInfoMap(); + if(attInfoMap!=null && !attInfoMap.isEmpty()){ +// updateStandFileFieldData(attInfoMap,attrInfoMap); + resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarBussionessStand.setSarStandAttrEOStr(resData); + } + // 查询原相关流程 + String relatePro = sarBussStandAttrInfoService.selectFieldValByStandId("XGLC",sarBussionessStand.getId()); + if (StringUtils.isNotBlank(relatePro)) { + String[] processSplit = relatePro.split(","); + Set processSet = new HashSet<>(); + for(String sData:processSplit){ + processSet.add(sData); + } + processSet.add(prcNum); + relatePro = StringUtils.join(processSet.toArray(), ","); + } else { + relatePro = prcNum; + } + // 编辑标准 + iSarBussionessStandService.updateSarBussionessStand(sarBussionessStand); + // 编辑相关流程 + sarBussStandAttrInfoService.updateStandInfo(sarBussionessStand.getId(),"XGLC",relatePro); + String content = "新增一条相关流程:" +prcName+" "+prcNum; + sarUpdLogEOService.createBaseProcessLog(sarBussionessStand.getId(),"BUSINESS",content,prcCreateUser); + }else if (lawsList != null && !lawsList.isEmpty()) {//Id不存在,但是标准号存在的情况 + String standId = lawsList.get(0).getId(); + bussId = lawsList.get(0).getId(); + SarBussionessStand query = new SarBussionessStand(); + query.setId(standId); + iSarBussionessStandService.attrInfoDetails(query); + Map attrInfoMap = query.getAttrInfoMap(); + if(attInfoMap!=null && !attInfoMap.isEmpty()){ +// updateStandFileFieldData(attInfoMap,attrInfoMap); + resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarBussionessStand.setSarStandAttrEOStr(resData); + } + // 查询原相关流程 + String relatePro = sarBussStandAttrInfoService.selectFieldValByStandId("XGLC",standId); + if (StringUtils.isNotBlank(relatePro)) { + String[] processSplit = relatePro.split(","); + Set processSet = new HashSet<>(); + for(String sData:processSplit){ + processSet.add(sData); + } + processSet.add(prcNum); + relatePro = StringUtils.join(processSet.toArray(), ","); + } else { + relatePro = prcNum; + } + // 编辑标准 + sarBussionessStand.setId(standId); + iSarBussionessStandService.updateSarBussionessStand(sarBussionessStand); + // 编辑相关流程 + sarBussStandAttrInfoService.updateStandInfo(standId,"XGLC",relatePro); + String content = "新增一条相关流程:" +prcName+" "+prcNum; + sarUpdLogEOService.createBaseProcessLog(standId,"BUSINESS",content,prcCreateUser); + } else {//标准号、ID都不存在的情况 + // 新增方法 + sarBussionessStand.setPrcCreateUser(prcCreateUser); + ResponseMessage responseMessage = iSarBussionessStandService.createSarBussionessStand(sarBussionessStand); + if(responseMessage.isOk()){ + SarBussionessStand bussionessStand = responseMessage.getData(); + bussId = bussionessStand.getId() == null ? "":bussionessStand.getId(); + } + + // 编辑相关流程 + sarBussStandAttrInfoService.updateStandInfo(sarBussionessStand.getId(),"XGLC",prcNum); + } + List allItems = new ArrayList<>(); + //开始处理条款数据,从去重后的结果中直接处理即可 +// if(itemData!=null && !itemData.isEmpty()){ +// // allItems = +// saveStandItemsData(itemData, sarStandardsInfoEO); +// } + //技术评估结果入库 重构技术评估结果入库内容 +// if ("0".equals(isJudge)) { +// saveCompStatusInfo(sarStandardsInfoEO,breakVal,allItems,prcNum); +// } + + List evaluationHisFilter = workFlowFeignClient.evaluationHisList(pid); + List evaluationHis = new ArrayList<>(); + Map> listMap = new TreeMap<>(); + + // 按 相同数据分组 + listMap = evaluationHisFilter.stream().collect( + Collectors.groupingBy(a -> Utils.format("{0}#{1}#{2}", a.getPId(),a.getTaskInfo(),a.getUserId()))); + + List evaluations = new ArrayList<>(); + if(!listMap.isEmpty()){ + SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); + listMap.forEach((key, value) -> { + if(!value.isEmpty()){ + evaluationHis.add(value.get(0)); + } + }); + String finalBussId = bussId; + Date date = new Date(); + evaluationHis.forEach(busProcessEvaluationHis -> { + List valueArr = JSONArray.parseArray(busProcessEvaluationHis.getMesg(),JSONObject.class); + if(!valueArr.isEmpty()){ + valueArr.forEach(object -> { + QualityEvaluation evaluation = new QualityEvaluation(); + evaluation.setId(UUIDUtils.randomUUID20()); + evaluation.setLawId(finalBussId); + evaluation.setUserId(object.getString("userId")); + evaluation.setScore(object.getString("score")); + evaluation.setReason(object.getString("reason")); + evaluation.setEvaluationIndex(object.getString("code")); + evaluation.setProcessNode(object.getString("processNode")); + evaluation.setEvaluationType(object.getString("indexType")); + evaluation.setCreateTime(date); + evaluation.setModifyTime(date); + evaluations.add(evaluation); + + }); + } + }); + qualityEvaluationService.saveBatch(evaluations); + } + } + + return bussId; + } + + private void updateStandFileFieldData(Map addAttInfoMap,Map oldAttInfoMap){ + if(oldAttInfoMap.containsKey("CA")){ + String fileStr = (String) oldAttInfoMap.get("CA"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("CA")?(String)addAttInfoMap.get("CA"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("CA",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("CA",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("ZQYJG")){ + String fileStr = (String) oldAttInfoMap.get("ZQYJG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("ZQYJG")?(String)addAttInfoMap.get("ZQYJG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("ZQYJG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("ZQYJG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("BPG")){ + String fileStr = (String) oldAttInfoMap.get("BPG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("BPG")?(String)addAttInfoMap.get("BPG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("BPG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("BPG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("SSG")){ + String fileStr = (String) oldAttInfoMap.get("SSG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("SSG")?(String)addAttInfoMap.get("SSG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("SSG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("SSG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("ZBJBD")){ + String fileStr = (String) oldAttInfoMap.get("ZBJBD"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("ZBJBD")?(String)addAttInfoMap.get("ZBJBD"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("ZBJBD",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("ZBJBD",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("FBGBJBD")){ + String fileStr = (String) oldAttInfoMap.get("FBGBJBD"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("FBGBJBD")?(String)addAttInfoMap.get("FBGBJBD"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("FBGBJBD",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("FBGBJBD",fileStr); + } + } + } + } + + /** + * 处理标准基础库字段 + * @param sarBussionessStand + * @param field + * @param value + * @throws Exception + */ + public void createStandBaseField (SarBussionessStand sarBussionessStand,String field,Object value) throws Exception{ + String valueStr = ""; + if (value != null) { + valueStr = String.valueOf(value); + } + switch (field) { + case "id": sarBussionessStand.setId(valueStr); break; + case "standSort": sarBussionessStand.setStandSort(valueStr); break; + case "standNumber": sarBussionessStand.setStandNumber(valueStr); break; + case "standYear": sarBussionessStand.setStandYear(valueStr); break; + case "standCode": sarBussionessStand.setStandCode(valueStr); break; + case "standName": sarBussionessStand.setStandName(valueStr); break; + case "standEnName": sarBussionessStand.setStandEnName(valueStr); break; + case "textStatusBuss": sarBussionessStand.setTextStatusBuss(valueStr); break; + case "reviseStatus": sarBussionessStand.setReviseStatus(valueStr); break; + case "standSn": sarBussionessStand.setStandSn(valueStr); break; + case "issueTime": + if (StringUtils.isNotBlank(valueStr)) { + sarBussionessStand.setIssueTime(tTo(valueStr)); + } + break; + case "putTime": + if (StringUtils.isNotBlank(valueStr)) { + sarBussionessStand.setPutTime(tTo(valueStr)); + } + break; + case "prcNum": sarBussionessStand.setProcessNum(valueStr); break; + case "menuId": sarBussionessStand.setMenuId(valueStr); break; + case "fileWord": + if (StringUtils.isNotBlank(sarBussionessStand.getFileIds()) && StringUtils.isNotBlank(valueStr)) { + valueStr = sarBussionessStand.getFileIds() + "," + valueStr; + } + sarBussionessStand.setFileIds(valueStr); break; + case "filePdf": + if (StringUtils.isNotBlank(sarBussionessStand.getFileIds()) && StringUtils.isNotBlank(valueStr)) { + valueStr = sarBussionessStand.getFileIds() + "," + valueStr; + } + sarBussionessStand.setFileIds(valueStr); + break; + default: break; + } + } + + private String tTo(String dateStr){ + return dateStr.contains("T") ? dateStr.split("T")[0] : dateStr; + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsEOService.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsEOService.java new file mode 100644 index 00000000..4b2c708d --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsEOService.java @@ -0,0 +1,1159 @@ +package com.adc.da.workFlow.service; + +import com.adc.da.common.PropertyTypeEnum; +import com.adc.da.common.SarConformStateEnum; +import com.adc.da.common.SarStateColorEnum; +import com.adc.da.common.SarTypeEnum; +import com.adc.da.login.util.UserUtils; +import com.adc.da.person.entity.PersonMsgEO; +import com.adc.da.slrs.SarCompResAssess.entity.SarCompResAssess; +import com.adc.da.slrs.SarCompResAssess.service.ISarCompResAssessService; +import com.adc.da.slrs.SarCompStatusInfo.dao.SarCompStatusInfoDao; +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import com.adc.da.slrs.SarFileSplitItems.entity.SarFileSplitItems; +import com.adc.da.slrs.SarFileSplitItems.service.ISarFileSplitItemsService; +import com.adc.da.slrs.SarStandItemVal.dao.SarStandItemValDao; +import com.adc.da.slrs.SarStandItemVal.entity.SarStandItemVal; +import com.adc.da.slrs.sarStandAttrInfo.service.ISarStandAttrInfoService; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandVal.entity.SarStandVal; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.constant.ValidFlagEnum; +import com.adc.da.sys.constant.ValueStateEnum; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.entity.OrgEO; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.workFlow.dao.ActSarItemsEODao; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Service("actSarItemsEOService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ActSarItemsEOService { + + private static final Logger logger = LoggerFactory.getLogger(ActSarItemsEOService.class); + + @Autowired + private ActSarItemsEODao actSarItemsEODao; + + @Autowired + private SarStandItemsDao sarStandItemsEODao; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private ISarStandardsInfoService sarStandardsInfoEOService; + + @Autowired + private ISarStandAttrInfoService sarStandAttrInfoEOService; + + @Autowired + private ISarUpdLogService sarUpdLogEOService; + + @Autowired + private SarCompStatusInfoDao sarCompStatusInfoEODao; + + @Autowired + private ISarCompResAssessService sarCompResAssessEOService; + + @Autowired + private ISarFileSplitItemsService sarFileSplitItemsEOService; + + @Autowired + private SarStandItemValDao sarStandItemValEODao; + + + @Value("${elas.flag}") + private boolean elasflag; + + /** + * 标准解读流程入库" + * @param standJson + * @throws Exception + */ + public void createStandardRead(String standJson) throws Exception{ + JSONObject object = JSONObject.parseObject(standJson); + String fileName = object.getString("fileName"); + String fileType = object.getString("fileType"); + String creationTime = object.getString("creationTime"); + String creationUser = object.getString("creationUser"); + String standId = object.getString("standId"); + //数组去重 + JSONArray responUserList1 = object.getJSONArray("itemList"); + for (Object obj:responUserList1) { + JSONObject object1 = (JSONObject) obj; + JSONArray preResponUserList = object1.getJSONArray("zxUserId"); + String oldNumber = object1.getString("oldNumber"); + String itemsNum = object1.getString("itemsNum"); + String itemsName = object1.getString("itemsName"); + String itemsTitle = object1.getString("itemsTitle"); + String applyArcticId = object1.getString("applyArcticId"); + String applyArctic = object1.getString("applyArctic"); + String changePoint = object1.getString("changePoint"); + String technicalRequir = object1.getString("technicalRequir"); + String onlineData = object1.getString("onlineData"); + String newData = object1.getString("newData"); + String complianceRequir = object1.getString("complianceRequir"); + String complianceState = object1.getString("complianceState"); + } + } + + /*** + * @Description: 国内外标准流程入库" + * @Author: yangxuenan + * @Date: 2020/12/7 13:48 + * @Param: [standJson] + * @Return: void + */ + public void processCreateStand(String standJson) throws Exception{ + Map standMap = new HashMap(); + standMap = com.alibaba.fastjson.JSONObject.parseObject(standJson); + if (standMap != null && !standMap.isEmpty()) { + String prcNum = String.valueOf(standMap.get("prcNum")); + String prcName = String.valueOf(standMap.get("prcName")); + String standType = String.valueOf(standMap.get("standType")); +// String isJudge = String.valueOf(standMap.get("ifIn")); //是否经过技术评估 + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); +// if(standMap.containsKey("standId")) { +// if (standMap.get("standId") != null && !standMap.get("standId").toString().equals("")) { +// String resId = standMap.get("standId").toString(); +// //此处说明是带入的形式 +// sarStandardsInfoEO.setId(resId); +// SarCompResAssess assessInfoByResId = sarCompResAssessEOService.ssessInfoByResId(resId); +// if (assessInfoByResId != null) { +// assessInfoByResId.setProcessState("2"); +// sarCompResAssessEOService.updateByPrimaryKeySelective(assessInfoByResId); +// } +// } +// } + + Map attInfoMap = new HashMap<>(); + List jsonArray = new ArrayList<>(); + Object breakVal = null; + Object itemList = null; + for (Map.Entry entry : standMap.entrySet()) { + String field = entry.getKey().toUpperCase(); + Object value = entry.getValue(); + if (InitStandAttrUtil.queryFieldList.contains(field)) { + if (value != null && value instanceof JSONArray) { + String valStr = String.valueOf(value); + List valueArr = JSONArray.parseArray(valStr,String.class); + if (valueArr != null && !valueArr.isEmpty()) { + String newValue = ""; + for (String val : valueArr) { + newValue += val + ","; + } + newValue = newValue.substring(0,newValue.length()-1); + value = newValue; + } + } + attInfoMap.put(field,value); + } else { + createStandBaseField(sarStandardsInfoEO,entry.getKey(),value); + } + } + String standFoUser = ""; + List> itemData = new ArrayList<>(); +// if (breakVal != null) { +// //取出taskbreak中的部分标准信息放到map中,如fo,svpps,责任部门,项目评估角色 +// String valueStr = String.valueOf(breakVal); +// jsonArray = JSONArray.parseArray(valueStr,String.class); +// // 处理在标准、条款中的SVPPS、项目评估角色、责任部门、FO +// handleStandCollectData(attInfoMap,jsonArray,itemData); +// } + //处理文件 + //此处需要处理之前的文件信息,防止文件丢失 +// attInfoMap = saveFileMsg(attInfoMap,sarStandardsInfoEO.getFileIds(),sarStandardsInfoEO.getTextStatus()); + String resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarStandardsInfoEO.setSarStandAttrEOStr(resData); + // 根据标准号判断数据是否已存在 + //2021年4月9日 此处检查当前是否存在standId + String standnumber = ""; + SarStandardsInfoEOPage queryPage = new SarStandardsInfoEOPage(); + if(StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear()) && !"null".equals(sarStandardsInfoEO.getStandYear())){ + standnumber = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber() + "-" + sarStandardsInfoEO.getStandYear(); + queryPage.setStandSort(sarStandardsInfoEO.getStandSort()); + queryPage.setStandNumber(sarStandardsInfoEO.getStandNumber()); + queryPage.setStandYear(sarStandardsInfoEO.getStandYear()); + } else { + standnumber = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + queryPage.setStandSort(sarStandardsInfoEO.getStandSort()); + queryPage.setStandNumber(sarStandardsInfoEO.getStandNumber()); + } + List standlist = sarStandardsInfoEOService.selectStandardsByStandnumber(queryPage, sarStandardsInfoEO.getStandType()); + if (StringUtils.isBlank(sarStandardsInfoEO.getMenuId()) && "INLAND".equals(sarStandardsInfoEO.getStandType())) { + sarStandardsInfoEO.setMenuId("64df1d5522bb49c09af2"); + sarStandardsInfoEO.setMenuIds("64df1d5522bb49c09af2,"+sarStandardsInfoEO.getMenuIds()); + sarStandardsInfoEO.setCountry("CN"); + } else if (StringUtils.isBlank(sarStandardsInfoEO.getMenuId()) && "FOREIGN".equals(sarStandardsInfoEO.getStandType())) { + + sarStandardsInfoEO.setMenuIds("22179d54d4e640098e29,"+sarStandardsInfoEO.getMenuIds()); + sarStandardsInfoEO.setMenuId("22179d54d4e640098e29"); + } + //此处判断是否是带入的标准 + if(StringUtils.isNotBlank(sarStandardsInfoEO.getId())) { + SarStandardsInfo query = new SarStandardsInfo(); + query.setId(sarStandardsInfoEO.getId()); + sarStandardsInfoEOService.attrInfoDetails(query); + Map attrInfoMap = query.getAttrInfoMap(); + if(attInfoMap!=null && !attInfoMap.isEmpty()){ + updateStandFileFieldData(attInfoMap,attrInfoMap); + resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarStandardsInfoEO.setSarStandAttrEOStr(resData); + } + // 查询原相关流程 + String relatePro = sarStandAttrInfoEOService.selectFieldValByStandId("XGLC",sarStandardsInfoEO.getId()); + if (StringUtils.isNotBlank(relatePro)) { + String[] processSplit = relatePro.split(","); + Set processSet = new HashSet<>(); + for(String sData:processSplit){ + processSet.add(sData); + } + processSet.add(prcNum); + relatePro = StringUtils.join(processSet.toArray(), ","); + } else { + relatePro = prcNum; + } + // 编辑标准 + sarStandardsInfoEOService.updateSarStandardsInfo(sarStandardsInfoEO); + // 编辑相关流程 + sarStandAttrInfoEOService.updateStandInfo(sarStandardsInfoEO.getId(),"XGLC",relatePro); + String content = "新增一条相关流程:" +prcName+" "+prcNum; + sarUpdLogEOService.createBaseLog(sarStandardsInfoEO.getId(),standType+"_STAND",content); + }else if (standlist != null && !standlist.isEmpty()) {//Id不存在,但是标准号存在的情况 + String standId = standlist.get(0).getId(); + SarStandardsInfo query = new SarStandardsInfo(); + query.setId(standId); + sarStandardsInfoEOService.attrInfoDetails(query); + Map attrInfoMap = query.getAttrInfoMap(); + if(attInfoMap!=null && !attInfoMap.isEmpty()){ + updateStandFileFieldData(attInfoMap,attrInfoMap); + resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarStandardsInfoEO.setSarStandAttrEOStr(resData); + } + // 查询原相关流程 + String relatePro = sarStandAttrInfoEOService.selectFieldValByStandId("XGLC",standId); + if (StringUtils.isNotBlank(relatePro)) { + String[] processSplit = relatePro.split(","); + Set processSet = new HashSet<>(); + for(String sData:processSplit){ + processSet.add(sData); + } + processSet.add(prcNum); + relatePro = StringUtils.join(processSet.toArray(), ","); + } else { + relatePro = prcNum; + } + // 编辑标准 + sarStandardsInfoEO.setId(standId); + sarStandardsInfoEOService.updateSarStandardsInfo(sarStandardsInfoEO); + // 编辑相关流程 + sarStandAttrInfoEOService.updateStandInfo(standId,"XGLC",relatePro); + String content = "新增一条相关流程:" +prcName+" "+prcNum; + sarUpdLogEOService.createBaseLog(standId,standType+"_STAND",content); + } else {//标准号、ID都不存在的情况 + // 新增方法 + sarStandardsInfoEOService.createSarStandardsInfo(sarStandardsInfoEO); + // 编辑相关流程 + sarStandAttrInfoEOService.updateStandInfo(sarStandardsInfoEO.getId(),"XGLC",prcNum); + } +// List allItems = new ArrayList<>(); + //开始处理条款数据,从去重后的结果中直接处理即可 +// if(itemData!=null && !itemData.isEmpty()){ +// // allItems = +// saveStandItemsData(itemData, sarStandardsInfoEO); +// } + //技术评估结果入库 重构技术评估结果入库内容 +// if ("0".equals(isJudge)) { +// saveCompStatusInfo(sarStandardsInfoEO,breakVal,allItems,prcNum); +// } + } + } + + /*** + * 标准法规入库流程中技术评估结果入库归档操作 + * @param sarStandardsInfoEO + * @param allItems + * @param prcNum + */ + public void saveCompStatusInfo (SarStandardsInfo sarStandardsInfoEO,Object taskBreak,List allItems,String prcNum) throws Exception { + //首先将入库的标准条款通过之前的拆分库ID转换成入库后的条款的对应关系 + Map itemConvertDataMap = new HashMap<>(); + if(allItems!=null && !allItems.isEmpty()){ + for(SarStandItems itemsEO:allItems){ + itemConvertDataMap.put(itemsEO.getOldId(),itemsEO.getId()); + } + } + //获取本次入库的标准ID和类型 + String standId = sarStandardsInfoEO.getId();//标准ID + //主要时区分国内、国外 + String sarType = sarStandardsInfoEO.getStandType()+"_STAND"; + //判断填写表单是哦服存在 + if(taskBreak!=null){ + List compStatusInfoEOS = new ArrayList<>(); + //解析表单数据 + String compResultStr = String.valueOf(taskBreak); + List jsonArray = JSONArray.parseArray(compResultStr, String.class); + //判断数据是否正常 + if (jsonArray != null && !jsonArray.isEmpty()) { + //当入库时只有标准时 itemList是空的 + for (String jsonStr : jsonArray) { + if (StringUtils.isNotBlank(jsonStr)) { + Map jsonMap = JSONObject.parseObject(jsonStr); + if(jsonMap.containsKey("itemsList")){//开始读取条款集合数据处理结果 + String itemsList = jsonMap.get("itemsList").toString(); + //获取条款级别的评估集合列表 + List itemCompStrList = JSONArray.parseArray(itemsList, String.class); + if(itemCompStrList!=null && !itemCompStrList.isEmpty()){ + for(String itemCompDataStr : itemCompStrList){ + //解析每个人填写的具体评估结果 + Map itemDataMap = JSONObject.parseObject(itemCompDataStr); + if(itemDataMap.containsKey("pgForm")){ + String pgResult = itemDataMap.get("pgForm").toString(); + //新旧条款ID转换 + String oldItemId = itemDataMap.containsKey("id")?itemDataMap.get("id").toString():null; + //获取到评估表单 + SarCompStatusInfo sarCompStatusInfoEO = JSONObject.parseObject(pgResult,SarCompStatusInfo.class); + sarCompStatusInfoEO.setId(UUIDUtils.randomUUID(32)); + sarCompStatusInfoEO.setSarType(sarType); + sarCompStatusInfoEO.setSarId(standId); + //评估结果 + sarCompStatusInfoEO.setSarState(itemDataMap.containsKey("jspg")?itemDataMap.get("jspg").toString():null); + //新旧条款号转换存储 + if(StringUtils.isNotBlank(oldItemId)){ + sarCompStatusInfoEO.setSarItemId(itemConvertDataMap.get(oldItemId)); + sarCompStatusInfoEO.setSarItemState(sarCompStatusInfoEO.getSarState()); + } + sarCompStatusInfoEO.setPrcNum(prcNum); + sarCompStatusInfoEO.setColor(convertColorByState(sarCompStatusInfoEO.getSarState()));//此处需要处理 + sarCompStatusInfoEO.setPrcState(null);//技术评估不需要状态 + sarCompStatusInfoEO.setCreationTime(new Date()); + //评估人处理 + sarCompStatusInfoEO.setCompPerson(itemDataMap.containsKey("foFillUser")?itemDataMap.get("foFillUser").toString():null); + sarCompStatusInfoEO.setCompTime(new Date()); + compStatusInfoEOS.add(sarCompStatusInfoEO); + } + } + }else{ + if(jsonMap.containsKey("pgForm")){ + String pgResult = jsonMap.get("pgForm").toString(); + //获取到评估表单 + SarCompStatusInfo sarCompStatusInfoEO = JSONObject.parseObject(pgResult,SarCompStatusInfo.class); + sarCompStatusInfoEO.setId(UUIDUtils.randomUUID(32)); + sarCompStatusInfoEO.setSarType(sarType); + sarCompStatusInfoEO.setSarId(standId); + sarCompStatusInfoEO.setSarState(jsonMap.containsKey("jspg")?jsonMap.get("jspg").toString():null); + sarCompStatusInfoEO.setPrcNum(prcNum); + sarCompStatusInfoEO.setColor(convertColorByState(sarCompStatusInfoEO.getSarState()));//此处需要处理 + sarCompStatusInfoEO.setPrcState(null);//技术评估不需要状态 + sarCompStatusInfoEO.setCreationTime(new Date()); + sarCompStatusInfoEO.setCompPerson(jsonMap.containsKey("foFillUser")?jsonMap.get("foFillUser").toString():null); + sarCompStatusInfoEO.setCompTime(new Date()); + compStatusInfoEOS.add(sarCompStatusInfoEO); + } + } + }else{//只有标准的情况下 + //获取 + if(jsonMap.containsKey("pgForm")){ + String pgResult = jsonMap.get("pgForm").toString(); + //获取到评估表单 + SarCompStatusInfo sarCompStatusInfoEO = JSONObject.parseObject(pgResult,SarCompStatusInfo.class); + sarCompStatusInfoEO.setId(UUIDUtils.randomUUID(32)); + sarCompStatusInfoEO.setSarType(sarType); + sarCompStatusInfoEO.setSarId(standId); + sarCompStatusInfoEO.setSarState(jsonMap.containsKey("jspg")?jsonMap.get("jspg").toString():null); + sarCompStatusInfoEO.setPrcNum(prcNum); + sarCompStatusInfoEO.setColor(convertColorByState(sarCompStatusInfoEO.getSarState()));//此处需要处理 + sarCompStatusInfoEO.setPrcState(null);//技术评估不需要状态 + sarCompStatusInfoEO.setCreationTime(new Date()); + sarCompStatusInfoEO.setCompPerson(jsonMap.containsKey("foFillUser")?jsonMap.get("foFillUser").toString():null); + sarCompStatusInfoEO.setCompTime(new Date()); + compStatusInfoEOS.add(sarCompStatusInfoEO); + } + } + } + } + } + //最后开始将评估结果入库同时将评估结果汇总后给出标准的评估结果 + saveJSPGResultDataList(compStatusInfoEOS); + } + } + + /** + * 入库技术评估结果 + * @param compResultData + */ + private void saveJSPGResultDataList(List compResultData) throws Exception { + if(compResultData!=null && !compResultData.isEmpty()){ + //1、将数据存储到记录表中 + //2、汇总本次评估的结果 更新所有清单中的状态 此处有坑,如果标准评估后又在新的清单中添加的时候状态可能就是空的, + // 此时就会显示空,所以需要更换实现方法 + //需要中间需要增加一层技术评估的结果,但是代价太大,2021年3月21日 无法在今天修改完,需要于2021年3月22日 整体想下这块, + // 目前的实现思路时有问题的 + //正确逻辑时: 现将当前的评估结果记录到所有的技术评估结果中,然后汇总本次的评估结果内容到当前标准的技术评估汇总表中 + //汇总后形成最新的评估内容,此时有2种做法 1、不记录上一次的状态 直接更新 2、记录上一次状态,新增一条整体评估结果记录 + //在清单查询的时候 查询当前标准的最新一次评估结果,将评估结果不再清单中直接显示,而是在汇总表中的信息进行修改,这样能够达到 + //单一标准不论在任何时间添加到清单的时候都可以查看,同时在标准的技术评估状态的时候也可以直接调用即可。不用每次评估完都需要更新 + //技术清单的逻辑 + /** + * 整体表关系如下: + * 基础库: 国内标准库 海外标准库 政策库 + * 技术评估汇总表 资源的汇总结果记录 + * 详细评估内容记录表 资源本身每次评估的详细记录 + * 清单: 根据标准号到资源的汇总记录表中查询汇总结果 直接展现即可 + * 目前缺少的就是资源的汇总结果记录缺失,导致查询的时候可能汇总结果会有问题 + */ + //开始汇总数据以及状态变更 + //首先先检查当前标准在汇总表中是否存在 + Map> assessMap = new HashMap<>(); + Map compResAssessEOMap = new HashMap<>(); + for(SarCompStatusInfo data : compResultData){ + //评估结果转换 + String state = sysInfoEOService.changeCompStatus(data.getSarState()); + String itemSate = sysInfoEOService.changeCompStatus(data.getSarItemState()); + data.setSarState(state); + data.setSarItemState(itemSate); + if(StringUtils.equals("INLAND",data.getSarType())){ + data.setSarType(SarTypeEnum.INLAND_STAND.getValue()); + }else if(StringUtils.equals("FOREIGN",data.getSarType())){ + data.setSarType(SarTypeEnum.FOREIGN_STAND.getValue()); + } + SarCompResAssess info =null; + if(assessMap.containsKey(data.getSarId())){ + info = compResAssessEOMap.get(data.getSarId()); + }else{ + info= sarCompResAssessEOService.getAssessInfoByResId(data.getSarId()); + if(info==null){ + info = new SarCompResAssess(); + info.setId(UUIDUtils.randomUUID(32)); + info.setAssessTime(new Date()); + info.setCreatedTime(new Date()); + info.setModifyTime(new Date()); + info.setProcessNum(data.getPrcNum()); + info.setResId(data.getSarId()); + info.setResType(data.getSarType()); + sarCompResAssessEOService.save(info); + } + compResAssessEOMap.put(data.getSarId(),info); + } + //汇总结果 + if(!assessMap.containsKey(info.getResId())){ + Map accessData = new HashMap<>(); + accessData.put(state,1); + assessMap.put(info.getResId(),accessData); + }else{ + Map accessData = assessMap.get(info.getResId()); + if(accessData.containsKey(state)){ + Integer stateNum = accessData.get(state); + accessData.put(state,stateNum+1); + assessMap.put(info.getResId(),accessData); + }else{ + accessData.put(state,1); + assessMap.put(info.getResId(),accessData); + } + } + //入库操作 + sarCompStatusInfoEODao.insert(data); + } + //开始遍历状态集合 + for (Map.Entry entry : compResAssessEOMap.entrySet()) { + String compId = entry.getKey().toString();//汇总ID + SarCompResAssess compResAssessEO = (SarCompResAssess) entry.getValue(); + Map stringIntegerMap = assessMap.get(compId); + if(stringIntegerMap!=null){ + if(stringIntegerMap.containsKey(SarConformStateEnum.UNFIT.getValue()+"")){//只要包含不符合的就是不符合 + compResAssessEO.setAssessResult(SarConformStateEnum.UNFIT.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.YELLOW.getValue()); + }else if(stringIntegerMap.size() ==1){//只有一种情况的 + if(stringIntegerMap.containsKey(SarConformStateEnum.FIT.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.FIT.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.GREEN.getValue()); + }else if(stringIntegerMap.containsKey(SarConformStateEnum.CHECK.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.CHECK.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.YELLOW.getValue()); + }else if(stringIntegerMap.containsKey(SarConformStateEnum.NOT_INVOLVE.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.NOT_INVOLVE.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.NA.getValue()); + } + }else if(stringIntegerMap.containsKey(SarConformStateEnum.CHECK.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.CHECK.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.YELLOW.getValue()); + }else if(stringIntegerMap.containsKey(SarConformStateEnum.NOT_INVOLVE.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.NOT_INVOLVE.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.NA.getValue()); + }else{ + compResAssessEO.setAssessResult(SarConformStateEnum.FIT.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.GREEN.getValue()); + } +// else {//不包含不符合的并且单一情况并不存在的也就是说是 部分符合或者待确认的 +// if(stringIntegerMap.containsKey(SarConformStateEnum.FIT.getValue()+"")){ +// compResAssessEO.setAssessResult(SarConformStateEnum.PART_FIT.getValue()); +// compResAssessEO.setAssessColor(SarStateColorEnum.YELLOW.getValue()); +// }else{ +// compResAssessEO.setAssessResult(SarConformStateEnum.CHECK.getValue()); +// compResAssessEO.setAssessColor(SarStateColorEnum.NA.getValue()); +// } +// } + } + compResAssessEO.setProcessState("2"); + compResAssessEO.setModifyTime(new Date()); + if(StringUtils.equals("INLAND",compResAssessEO.getResType())){ + compResAssessEO.setResType(SarTypeEnum.INLAND_STAND.getValue()); + }else if(StringUtils.equals("FOREIGN",compResAssessEO.getResType())){ + compResAssessEO.setResType(SarTypeEnum.FOREIGN_STAND.getValue()); + } + //更新汇总后的结果 + sarCompResAssessEOService.updateById(compResAssessEO); + } + } + } + + private String convertColorByState(String stateStr){ + String colorStr = ""; + switch (stateStr){ + case "1": + colorStr = SarStateColorEnum.GREEN.getValue(); + break; + case "2": + colorStr = SarStateColorEnum.YELLOW.getValue(); + break; + case "3": + colorStr = SarStateColorEnum.YELLOW.getValue(); + case "4": + colorStr = SarStateColorEnum.NA.getValue(); + } + return colorStr; + } + + + public String changeStatus (String textStatus) { + String status = ""; + switch (textStatus) { + case "草稿": status="CA";break; + case "征求意见稿": status="ZQYJG";break; + case "报批稿": status="BPG";break; + case "送审稿": status="SSG";break; + case "发布稿(必读)": status="FBGBJBD";break; + } + return status; + } + + /** + * 处理条款信息转换 + * @param itemsEO + * @param field + * @param value + * @throws Exception + */ + public void createItemsBaseField (SarStandItems itemsEO,String field,Object value) throws Exception{ + String valueStr = ""; + if (value != null) { + valueStr = String.valueOf(value); + } + switch (field) { + case "itemsName": itemsEO.setItemsName(valueStr); break; + case "FO": + List jsonArray = JSONArray.parseArray(valueStr,String.class); + String fo = ""; + if (jsonArray != null && !jsonArray.isEmpty()) { + for (String json : jsonArray) { + fo += json + ","; + } + fo = fo.substring(0,fo.length()-1); + itemsEO.setFoUser(fo); + } + break; + case "itemsNum": itemsEO.setItemsNum(valueStr); break; + case "termsConditions": itemsEO.setTermsConditions(valueStr); break; + case "svpps": itemsEO.setSvpps(valueStr); break; + case "role": itemsEO.setDutyEngineer(valueStr); break; + case "parts": itemsEO.setResponsibleUnit(valueStr); break; + case "FORoleId": itemsEO.setFo(valueStr); break; + case "id": itemsEO.setOldId(valueStr); break; + case "jspg": itemsEO.setJspg(valueStr); break; + case "pgForm": + if (StringUtils.isNotBlank(valueStr)) { + SarCompStatusInfo list = JSONObject.parseObject(valueStr,SarCompStatusInfo.class); + itemsEO.setPgForm(list); + }; + break; + default: break; + } + } + + /** + * 处理保存标准条款信息数据 + * @return + */ + private List saveStandItemsData(List> itemDataList,SarStandardsInfo sarStandardsInfoEO) throws Exception { + String standId = sarStandardsInfoEO.getId(); + String fileType = changeStatus(sarStandardsInfoEO.getTextStatus()); + List itemsEOList = new ArrayList<>();//添加的条款信息 + List upItemsEOList = new ArrayList<>();//更新的条款数据 + List delValItemIds = new ArrayList<>();//需要删除重新添加的条款数据集合 + List itemValEOS = new ArrayList<>();//批量更新进去的条款参数集合 + List UpSarFileSplitItemsList = new ArrayList<>(); + for(Map itemData:itemDataList){ + String itemStr = itemData.get("itemStr").toString();//条款的具体内容 + Map itemAttrInfo = (Map) itemData.get("itemAttrInfo");//条款的属性字段 + Map itemMap = new HashMap(); + //此处需要查询拆分库数据,将之前的拆分数据带入到当前标准中同时检查当前分解单中是否已经包含相关的条款信息, + // 如果是则更新,如果没有则添加 + itemMap = com.alibaba.fastjson.JSONObject.parseObject(itemStr);; + if (itemMap != null && !itemMap.isEmpty()) { + if(itemMap.containsKey("resId")){ + //存在 + String splitItemId = String.valueOf(itemMap.get("resId")); + if(StringUtils.isNotBlank(splitItemId)){ + SarFileSplitItems splitItemsEO = sarFileSplitItemsEOService.getById(splitItemId); + if(splitItemsEO!=null){ + //拆分库有数据,检查当前的表单中是否有数据,如果有则直接获取后更新即可 + SarStandItems nowItemEO = sarStandItemsEODao.selectById(splitItemId); + if(nowItemEO!=null){ + //更新数据 + nowItemEO.setItemsNum(splitItemsEO.getItemsNum()); + nowItemEO.setItemsName(splitItemsEO.getItemsName()); + nowItemEO.setApplyArctic(splitItemsEO.getApplyArctic()); + nowItemEO.setStandId(standId); + nowItemEO.setTermsConditions(splitItemsEO.getItermsConditions()); + nowItemEO.setParts(splitItemsEO.getSvpps()); + nowItemEO.setCreationUser(UserUtils.getUserId()); + nowItemEO.setValidFlag(0); + if(null!=fileType){ + nowItemEO.setFileType(fileType); + } + nowItemEO.setRemarks(splitItemsEO.getRemarks()); + nowItemEO.setModifyTime(new Date()); + + nowItemEO.setClaimType(splitItemsEO.getClaimType()); + nowItemEO.setBusStandCover(splitItemsEO.getBusStandCover()); + nowItemEO.setResponsibleUnit(itemAttrInfo.get("ZRBM")); + nowItemEO.setFo(itemAttrInfo.get("FO")); + nowItemEO.setDutyEngineer(itemAttrInfo.get("XMPGJS")); + nowItemEO.setSvpps(itemAttrInfo.get("SVPPS")); + upItemsEOList.add(nowItemEO); + }else{ + SarStandItems itemsEO = new SarStandItems(); + itemsEO.setId(splitItemId); + itemsEO.setCreationTime(new Date()); + itemsEO.setModifyTime(new Date()); + itemsEO.setValidFlag(0); + itemsEO.setStandId(standId); + itemsEO.setFileType(fileType); + for (Map.Entry entry : itemMap.entrySet()) { + String field = entry.getKey(); + Object value = entry.getValue(); + createItemsBaseField(itemsEO,field,value); + } + itemsEO.setItemsNum(splitItemsEO.getItemsNum()); + itemsEO.setItemsName(splitItemsEO.getItemsName()); + itemsEO.setApplyArctic(splitItemsEO.getApplyArctic()); + itemsEO.setTermsConditions(splitItemsEO.getItermsConditions()); + itemsEO.setParts(splitItemsEO.getSvpps()); + itemsEO.setCreationUser(UserUtils.getUserId()); + itemsEO.setRemarks(splitItemsEO.getRemarks()); + itemsEO.setClaimType(splitItemsEO.getClaimType()); + itemsEO.setBusStandCover(splitItemsEO.getBusStandCover()); + itemsEO.setResponsibleUnit(itemAttrInfo.get("ZRBM")); + itemsEO.setFo(itemAttrInfo.get("FO")); + itemsEO.setDutyEngineer(itemAttrInfo.get("XMPGJS")); + itemsEO.setSvpps(itemAttrInfo.get("SVPPS")); + //开始处理后续逻辑 + itemsEOList.add(itemsEO); + } + //apply数据 + if(StringUtils.isNotEmpty(splitItemsEO.getApplyArctic())){ + delValItemIds.add(splitItemsEO.getId()); + String[] applyarr = splitItemsEO.getApplyArctic().trim().split(","); + for(String applya:applyarr){ + SarStandItemVal sarStandItemValEO = new SarStandItemVal(); + sarStandItemValEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); + sarStandItemValEO.setCreationTime(new Date()); + sarStandItemValEO.setModifyTime(new Date()); + sarStandItemValEO.setItemId(splitItemsEO.getId()); + sarStandItemValEO.setId(UUIDUtils.randomUUID20()); + sarStandItemValEO.setPropertyType(PropertyTypeEnum.APPLY_ARCTIC.getValue()); + sarStandItemValEO.setPropertyVal(applya); + itemValEOS.add(sarStandItemValEO); + } + } + //TODO 开始处理拆分库数据 + splitItemsEO.setModifyTime(new Date()); + splitItemsEO.setResponsibleUnit(itemAttrInfo.get("ZRBM")); + splitItemsEO.setFo(itemAttrInfo.get("FO")); + splitItemsEO.setDutyEngineer(itemAttrInfo.get("XMPGJS")); + splitItemsEO.setSvpps(itemAttrInfo.get("SVPPS")); + UpSarFileSplitItemsList.add(splitItemsEO); + }else{ + logger.error("拆分库中找不到对应数据了,数据不见了 /(ㄒoㄒ)/~~"+itemStr); + } + }else{ + logger.error("流程中携带的拆分库ID不见了 Σ(っ °Д °;)っ "+itemStr); + } + }else{ + //不存在 说明数据出现问题了 + logger.error("流程中携带的拆分库ID,数据不见了 /(ㄒoㄒ)/~~"+itemStr); + + } + } + } + //更新拆分库数据 + if(UpSarFileSplitItemsList!=null && !UpSarFileSplitItemsList.isEmpty()){ + for(SarFileSplitItems items : UpSarFileSplitItemsList){ + sarFileSplitItemsEOService.updateById(items); + } + } + //执行批量新增操作 + if(itemsEOList != null && !itemsEOList.isEmpty()){ + sarStandItemsEODao.insertForeach(itemsEOList); + + } + //执行批量修改操作 + if(upItemsEOList != null && !upItemsEOList.isEmpty()){ + sarStandItemsEODao.updateForeach(upItemsEOList); + + } + //执行适用车型批量操作 + if(itemValEOS != null && !itemValEOS.isEmpty()){ + sarStandItemValEODao.deleteByItemsIds(delValItemIds); + sarStandItemValEODao.insertForeach(itemValEOS); + } + return itemsEOList; + } + + private void updateStandFileFieldData(Map addAttInfoMap,Map oldAttInfoMap){ + if(oldAttInfoMap.containsKey("CA")){ + String fileStr = (String) oldAttInfoMap.get("CA"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("CA")?(String)addAttInfoMap.get("CA"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("CA",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("CA",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("ZQYJG")){ + String fileStr = (String) oldAttInfoMap.get("ZQYJG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("ZQYJG")?(String)addAttInfoMap.get("ZQYJG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("ZQYJG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("ZQYJG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("BPG")){ + String fileStr = (String) oldAttInfoMap.get("BPG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("BPG")?(String)addAttInfoMap.get("BPG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("BPG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("BPG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("SSG")){ + String fileStr = (String) oldAttInfoMap.get("SSG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("SSG")?(String)addAttInfoMap.get("SSG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("SSG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("SSG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("ZBJBD")){ + String fileStr = (String) oldAttInfoMap.get("ZBJBD"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("ZBJBD")?(String)addAttInfoMap.get("ZBJBD"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("ZBJBD",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("ZBJBD",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("FBGBJBD")){ + String fileStr = (String) oldAttInfoMap.get("FBGBJBD"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("FBGBJBD")?(String)addAttInfoMap.get("FBGBJBD"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("FBGBJBD",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("FBGBJBD",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("FBGYWBD")){ + String fileStr = (String) oldAttInfoMap.get("FBGYWBD"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("FBGYWBD")?(String)addAttInfoMap.get("FBGYWBD"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("FBGYWBD",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("FBGYWBD",fileStr); + } + } + } + } + + public Map saveFileMsg (Map attInfoMap,String fileIds,String textStatus) { + switch (textStatus) { + case "草案": attInfoMap.put("CA",fileIds);break; + case "征求意见稿": attInfoMap.put("ZQYJG",fileIds);break; + case "报批稿": attInfoMap.put("BPG",fileIds);break; + case "送审稿": attInfoMap.put("SSG",fileIds);break; + case "增补件(必读)":attInfoMap.put("ZBJBD",fileIds);break; + case "发布稿(必读)": attInfoMap.put("FBGBJBD",fileIds);break; + } + return attInfoMap; + } + + /** + * 处理FO、责任部门、以及条款数据 + * @param attInfoMap + */ + public void handleStandCollectData(Map attInfoMap,List jsonArray,List> itemDataList){ + if (jsonArray != null && !jsonArray.isEmpty()) { + //此处开始处理相关数据 需要判断是否为标准或者条款 + Map> standAttrMap = new HashMap<>(); + Map> itemAttrMap = new HashMap<>(); + String tempDataId= UUIDUtils.randomUUID(32); + String standId = null; + Map itemDataMap = new HashMap<>(); + for (String jsonStr : jsonArray) { + if (StringUtils.isNotBlank(jsonStr)) { + Map jsonMap = JSONObject.parseObject(jsonStr); + standId = String.valueOf(jsonMap.get("resId"));//此时ID + if(StringUtils.isBlank(standId)){//当属于新增入库的时候,需要拿临时的ID进行汇总 + standId = tempDataId; + } + if(jsonMap.containsKey("itemsList") ){ + String itemListStr = String.valueOf(jsonMap.get("itemsList")); + if (StringUtils.isNotBlank(itemListStr) && !"[]".equals(itemListStr)){//有条款的 + //有条款的情况下 + List array = JSONArray.parseArray(itemListStr,String.class); + if(array!=null && !array.isEmpty()){ + for(String itemStr:array){ + Map itemJsonMap = JSONObject.parseObject(itemStr); + String itemId = String.valueOf(itemJsonMap.get("resId"));//拆分库中的条款ID + //数据汇总 + if(itemAttrMap.containsKey(itemId)){ + Map attrInfoMap = itemAttrMap.get(itemId); + String svpps = attrInfoMap.get("SVPPS"); + String xmpgjs = attrInfoMap.get("XMPGJS"); + String zrbm = attrInfoMap.get("ZRBM"); + String fo = attrInfoMap.get("FO"); + attrInfoMap.put("SVPPS",svpps+","+String.valueOf(itemJsonMap.get("svpps"))); + attrInfoMap.put("XMPGJS",xmpgjs+","+String.valueOf(itemJsonMap.get("role"))); + attrInfoMap.put("ZRBM",zrbm+","+String.valueOf(itemJsonMap.get("parts"))); + attrInfoMap.put("FO",fo+","+String.valueOf(itemJsonMap.get("FORoleId"))); + itemAttrMap.put(itemId,attrInfoMap); + }else{ + Map attrInfoMap = new HashMap<>(); + attrInfoMap.put("SVPPS",String.valueOf(itemJsonMap.get("svpps"))); + attrInfoMap.put("XMPGJS",String.valueOf(itemJsonMap.get("role"))); + attrInfoMap.put("ZRBM",String.valueOf(itemJsonMap.get("parts"))); + attrInfoMap.put("FO",String.valueOf(itemJsonMap.get("FORoleId"))); + itemAttrMap.put(itemId,attrInfoMap); + } + //条款去重 + if(!itemDataMap.containsKey(itemId)){ + itemDataMap.put(itemId,itemStr); + } + } + } + }else{//只有标准的 + if(standAttrMap.containsKey(standId)){ + Map attrInfoMap = standAttrMap.get(standId); + String svpps = attrInfoMap.get("SVPPS"); + String xmpgjs = attrInfoMap.get("XMPGJS"); + String zrbm = attrInfoMap.get("ZRBM"); + String fo = attrInfoMap.get("FO"); + attrInfoMap.put("SVPPS",svpps+","+String.valueOf(jsonMap.get("svpps"))); + attrInfoMap.put("XMPGJS",xmpgjs+","+String.valueOf(jsonMap.get("role"))); + attrInfoMap.put("ZRBM",zrbm+","+String.valueOf(jsonMap.get("parts"))); + attrInfoMap.put("FO",fo+","+String.valueOf(jsonMap.get("FORoleId"))); + standAttrMap.put(standId,attrInfoMap); + }else{ + Map attrInfoMap = new HashMap<>(); + attrInfoMap.put("SVPPS",String.valueOf(jsonMap.get("svpps"))); + attrInfoMap.put("XMPGJS",String.valueOf(jsonMap.get("role"))); + attrInfoMap.put("ZRBM",String.valueOf(jsonMap.get("parts"))); + attrInfoMap.put("FO",String.valueOf(jsonMap.get("FORoleId"))); + standAttrMap.put(standId,attrInfoMap); + } + } + }else{//只有标准的 + standId = String.valueOf(jsonMap.get("resId")); + if(StringUtils.isBlank(standId)){//当属于新增入库的时候,需要拿临时的ID进行汇总 + standId = tempDataId; + } + if(standAttrMap.containsKey(standId)){ + Map attrInfoMap = standAttrMap.get(standId); + String svpps = attrInfoMap.get("SVPPS"); + String xmpgjs = attrInfoMap.get("XMPGJS"); + String zrbm = attrInfoMap.get("ZRBM"); + String fo = attrInfoMap.get("FO"); + attrInfoMap.put("SVPPS",svpps+","+String.valueOf(jsonMap.get("svpps"))); + attrInfoMap.put("XMPGJS",xmpgjs+","+String.valueOf(jsonMap.get("role"))); + attrInfoMap.put("ZRBM",zrbm+","+String.valueOf(jsonMap.get("parts"))); + attrInfoMap.put("FO",fo+","+String.valueOf(jsonMap.get("FORoleId"))); + standAttrMap.put(standId,attrInfoMap); + }else{ + Map attrInfoMap = new HashMap<>(); + attrInfoMap.put("SVPPS",String.valueOf(jsonMap.get("svpps"))); + attrInfoMap.put("XMPGJS",String.valueOf(jsonMap.get("role"))); + attrInfoMap.put("ZRBM",String.valueOf(jsonMap.get("parts"))); + attrInfoMap.put("FO",String.valueOf(jsonMap.get("FORoleId"))); + standAttrMap.put(standId,attrInfoMap); + } + } + } + } + //条款的FO、项目评估角色、FO 责任部门字段集合 + Map> itemAttrInfoMap = new HashMap<>(); + //开始处理填写的表单数据,去重操作 + if(standAttrMap!=null && !standAttrMap.isEmpty()){//标准级别的汇总 + Map attrDataMap = standAttrMap.get(standId); + if(attrDataMap!=null && !attInfoMap.isEmpty()){ + //开始去重 + //填入相关标准字段 + String svpps = attrDataMap.get("SVPPS"); + String[] svppsSplit = svpps.split(","); + Set svppsSet = new HashSet<>(); + for(String sData:svppsSplit){ + svppsSet.add(sData); + } + attInfoMap.put("SVPPS",StringUtils.join(svppsSet.toArray(), ",")); + String xmpgjs = attrDataMap.get("XMPGJS"); + String[] xmpgjsSplit = xmpgjs.split(","); + Set xmpgjsSet = new HashSet<>(); + for(String sData:xmpgjsSplit){ + xmpgjsSet.add(sData); + } + attInfoMap.put("XMPGJS",StringUtils.join(xmpgjsSet.toArray(), ",")); + String zrbm = attrDataMap.get("ZRBM"); + String[] zrbmSplit = zrbm.split(","); + Set zrbmSet = new HashSet<>(); + for(String sData:zrbmSplit){ + zrbmSet.add(sData); + } + attInfoMap.put("ZRBM",StringUtils.join(zrbmSet.toArray(), ",")); + String fo = attrDataMap.get("FO"); + String[] foSplit = fo.split(","); + Set foSet = new HashSet<>(); + for(String sData:foSplit){ + foSet.add(sData); + } + attInfoMap.put("FO",StringUtils.join(foSet.toArray(), ",")); + } + } + if(itemAttrMap!=null && !itemAttrMap.isEmpty()){ + Set allSvppsSet = new HashSet<>(); + Set allXmpgjsSet = new HashSet<>(); + Set allZrbmSet = new HashSet<>(); + Set allFoSet = new HashSet<>(); + for (Map.Entry entry : itemAttrMap.entrySet()) { + String itemId = entry.getKey().toString(); + Map attrDataMap = (Map) entry.getValue(); + //开始去重 得到条款的相关汇总字段 + String svpps = attrDataMap.get("SVPPS"); + String[] svppsSplit = svpps.split(","); + Set svppsSet = new HashSet<>(); + for(String sData:svppsSplit){ + svppsSet.add(sData); + allSvppsSet.add(sData); + } + attrDataMap.put("SVPPS",StringUtils.join(svppsSet.toArray(), ",")); + String xmpgjs = attrDataMap.get("XMPGJS"); + String[] xmpgjsSplit = xmpgjs.split(","); + Set xmpgjsSet = new HashSet<>(); + for(String sData:xmpgjsSplit){ + xmpgjsSet.add(sData); + allXmpgjsSet.add(sData); + } + attrDataMap.put("XMPGJS",StringUtils.join(xmpgjsSet.toArray(), ",")); + String zrbm = attrDataMap.get("ZRBM"); + String[] zrbmSplit = zrbm.split(","); + Set zrbmSet = new HashSet<>(); + for(String sData:zrbmSplit){ + zrbmSet.add(sData); + allZrbmSet.add(sData); + } + attrDataMap.put("ZRBM",StringUtils.join(zrbmSet.toArray(), ",")); + String fo = attrDataMap.get("FO"); + String[] foSplit = fo.split(","); + Set foSet = new HashSet<>(); + for(String sData:foSplit){ + foSet.add(sData); + allFoSet.add(sData); + } + attrDataMap.put("FO",StringUtils.join(foSet.toArray(), ",")); + //组装条款的参数对应关系 + itemAttrInfoMap.put(itemId,attrDataMap); + } + attInfoMap.put("SVPPS",StringUtils.join(allSvppsSet.toArray(), ",")); + attInfoMap.put("XMPGJS",StringUtils.join(allXmpgjsSet.toArray(), ",")); + attInfoMap.put("ZRBM",StringUtils.join(allZrbmSet.toArray(), ",")); + attInfoMap.put("FO",StringUtils.join(allFoSet.toArray(), ",")); + } + //开始处理条款数据 汇总返回上级继续处理 + if(itemDataMap!=null && !itemDataMap.isEmpty()){ + for (Map.Entry entry : itemDataMap.entrySet()) { + String itemId = entry.getKey().toString(); + String value = entry.getValue()!=null?entry.getValue().toString():null; + Map itemData = new HashMap<>(); + itemData.put("itemStr",value); + if(itemAttrInfoMap.containsKey(itemId)){ + itemData.put("itemAttrInfo",itemAttrInfoMap.get(itemId)); + } + itemDataList.add(itemData); + } + } + } + } + + /** + * 处理标准基础库字段 + * @param sarStandardsInfoEO + * @param field + * @param value + * @throws Exception + */ + public void createStandBaseField (SarStandardsInfo sarStandardsInfoEO,String field,Object value) throws Exception{ + String valueStr = ""; + if (value != null) { + valueStr = String.valueOf(value); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + switch (field) { + case "country": sarStandardsInfoEO.setCountry(valueStr); break; + case "putTime": + if (StringUtils.isNotBlank(valueStr)) { + Date date = sdf.parse(valueStr); + sarStandardsInfoEO.setPutTime(date); + } + break; + case "id": sarStandardsInfoEO.setId(valueStr); break; + case "isRelateAccess": sarStandardsInfoEO.setIsRelateAccess(valueStr); break; + case "prcNum": sarStandardsInfoEO.setProcessNum(valueStr); break; + case "issueTime": + if (StringUtils.isNotBlank(valueStr)) { +// Date dateIss = sdf.parse(valueStr); + sarStandardsInfoEO.setIssueTime(valueStr); + } + break; + case "standType": sarStandardsInfoEO.setStandType(valueStr); break; + case "standSystem": sarStandardsInfoEO.setStandSystem(valueStr); break; + case "standYear": sarStandardsInfoEO.setStandYear(valueStr); break; + case "standNature": sarStandardsInfoEO.setStandNature(valueStr); break; + case "standEnName": sarStandardsInfoEO.setStandEnName(valueStr); break; + case "standName": sarStandardsInfoEO.setStandName(valueStr); break; + case "standNumber": sarStandardsInfoEO.setStandNumber(valueStr); break; + case "standSort": sarStandardsInfoEO.setStandSort(valueStr); break; + case "standState": sarStandardsInfoEO.setStandState(valueStr); break; + case "menuId": sarStandardsInfoEO.setMenuId(valueStr); break; + case "menuIds": sarStandardsInfoEO.setMenuIds(valueStr); break; + case "textStatus": sarStandardsInfoEO.setTextStatus(valueStr); break; + case "synopsis": sarStandardsInfoEO.setSynopsis(valueStr); break; + case "fileWord": + if (StringUtils.isNotBlank(sarStandardsInfoEO.getFileIds()) && StringUtils.isNotBlank(valueStr)) { + valueStr = sarStandardsInfoEO.getFileIds() + "," + valueStr; + } + sarStandardsInfoEO.setFileIds(valueStr); break; + case "filePdf": + if (StringUtils.isNotBlank(sarStandardsInfoEO.getFileIds()) && StringUtils.isNotBlank(valueStr)) { + valueStr = sarStandardsInfoEO.getFileIds() + "," + valueStr; + } + sarStandardsInfoEO.setFileIds(valueStr); + break; + default: break; + } + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsLawsEOService.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsLawsEOService.java new file mode 100644 index 00000000..5f2acefa --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsLawsEOService.java @@ -0,0 +1,885 @@ +package com.adc.da.workFlow.service; + +import com.adc.da.common.PropertyTypeEnum; +import com.adc.da.common.SarConformStateEnum; +import com.adc.da.common.SarStateColorEnum; +import com.adc.da.common.SarTypeEnum; +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.SarCompResAssess.entity.SarCompResAssess; +import com.adc.da.slrs.SarCompResAssess.service.ISarCompResAssessService; +import com.adc.da.slrs.SarCompStatusInfo.dao.SarCompStatusInfoDao; +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import com.adc.da.slrs.SarFileSplitItems.entity.SarFileSplitItems; +import com.adc.da.slrs.SarFileSplitItems.service.ISarFileSplitItemsService; +import com.adc.da.slrs.SarStandItemVal.dao.SarStandItemValDao; +import com.adc.da.slrs.SarStandItemVal.entity.SarStandItemVal; +import com.adc.da.slrs.sarLawsAttrInfo.dao.SarLawsAttrInfoDao; +import com.adc.da.slrs.sarLawsAttrInfo.service.ISarLawsAttrInfoService; +import com.adc.da.slrs.sarLawsItemVal.dao.SarLawsItemValDao; +import com.adc.da.slrs.sarLawsItems.dao.SarLawsItemsDao; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.service.ISarLawsStandInfoService; +import com.adc.da.slrs.sarStandAttrInfo.service.ISarStandAttrInfoService; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.constant.ValueStateEnum; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.workFlow.dao.ActSarItemsEODao; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import org.apache.commons.lang.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.*; + +@Service("actSarItemsLawsEOService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ActSarItemsLawsEOService { + + private static final Logger logger = LoggerFactory.getLogger(ActSarItemsLawsEOService.class); + + @Autowired + private ActSarItemsEODao actSarItemsEODao; + + @Autowired + private SarLawsItemsDao sarLawsItemsDao; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private ISarLawsStandInfoService sarLawsStandInfoService; + + @Autowired + private ISarLawsAttrInfoService iSarLawsAttrInfoService; + + @Autowired + private ISarUpdLogService sarUpdLogEOService; + + @Autowired + private SarCompStatusInfoDao sarCompStatusInfoEODao; + + @Autowired + private ISarCompResAssessService sarCompResAssessEOService; + + @Autowired + private ISarFileSplitItemsService sarFileSplitItemsEOService; + + @Autowired + private SarLawsItemValDao sarLawsItemValDao; + + + @Value("${elas.flag}") + private boolean elasflag; + + /*** + * @Description: 国内外标准流程入库" + * @Author: yangxuenan + * @Date: 2020/12/7 13:48 + * @Param: [standJson] + * @Return: void + */ + public void processCreateLaws(String standJson) throws Exception{ + Map standMap = new HashMap(); + standMap = JSONObject.parseObject(standJson); + if (standMap != null && !standMap.isEmpty()) { + String prcNum = String.valueOf(standMap.get("prcNum")); + String prcName = String.valueOf(standMap.get("prcName")); + String standType = String.valueOf(standMap.get("standType")); +// String isJudge = String.valueOf(standMap.get("ifIn")); //是否经过技术评估 + SarLawsStandInfo sarLawsStandInfo = new SarLawsStandInfo(); +// if(standMap.containsKey("standId")) { +// if (standMap.get("standId") != null && !standMap.get("standId").toString().equals("")) { +// String resId = standMap.get("standId").toString(); +// //此处说明是带入的形式 +// sarStandardsInfoEO.setId(resId); +// SarCompResAssess assessInfoByResId = sarCompResAssessEOService.ssessInfoByResId(resId); +// if (assessInfoByResId != null) { +// assessInfoByResId.setProcessState("2"); +// sarCompResAssessEOService.updateByPrimaryKeySelective(assessInfoByResId); +// } +// } +// } + + Map attInfoMap = new HashMap<>(); + for (Map.Entry entry : standMap.entrySet()) { + String field = entry.getKey().toUpperCase(); + String result = ""; + if(StringUtils.isNotBlank(standMap.get(entry.getKey()).toString())){ + Object value= new JSONTokener(standMap.get(entry.getKey()).toString()).nextValue(); + if(value instanceof org.json.JSONArray && !",".contains(standMap.get(entry.getKey()).toString())){ + result = String.join(",",JSONObject.parseArray(value.toString(),String.class)); + }else { + if(!value.equals("null")){ + result =standMap.get(entry.getKey()).toString(); + } + } + } + if (InitStandAttrUtil.queryFieldListLaws.contains(field)) { + attInfoMap.put(field,result); + } else { + createStandBaseField(sarLawsStandInfo,entry.getKey(),result); + } + } + String resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarLawsStandInfo.setSarStandAttrEOStr(resData); + // 根据标准号判断数据是否已存在 + String lawsNumber = ""; + if(StringUtils.isNotBlank(sarLawsStandInfo.getLawsNumber()) && !"null".equals(sarLawsStandInfo.getLawsNumber())){ + lawsNumber = sarLawsStandInfo.getLawsNumber(); + } + List lawsList = sarLawsStandInfoService.selectStandardsByStandNumber(lawsNumber); + //此处判断是否是带入的标准 + if(StringUtils.isNotBlank(sarLawsStandInfo.getId())) { + SarLawsStandInfo query = new SarLawsStandInfo(); + query.setId(sarLawsStandInfo.getId()); + sarLawsStandInfoService.attrInfoDetails(query); + Map attrInfoMap = query.getAttrInfoMap(); + if(attInfoMap!=null && !attInfoMap.isEmpty()){ + updateStandFileFieldData(attInfoMap,attrInfoMap); + resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarLawsStandInfo.setSarStandAttrEOStr(resData); + } + // 查询原相关流程 + String relatePro = iSarLawsAttrInfoService.selectFieldValByLawsId("XGLC",sarLawsStandInfo.getId()); + if (StringUtils.isNotBlank(relatePro)) { + String[] processSplit = relatePro.split(","); + Set processSet = new HashSet<>(); + for(String sData:processSplit){ + processSet.add(sData); + } + processSet.add(prcNum); + relatePro = StringUtils.join(processSet.toArray(), ","); + } else { + relatePro = prcNum; + } + // 编辑标准 + sarLawsStandInfoService.updateSarLawsStandInfo(sarLawsStandInfo); + // 编辑相关流程 + iSarLawsAttrInfoService.updateLawsInfo(sarLawsStandInfo.getId(),"XGLC",relatePro); + String content = "新增一条相关流程:" +prcName+" "+prcNum; + sarUpdLogEOService.createBaseLog(sarLawsStandInfo.getId(),standType+"_STAND",content); + }else if (lawsList != null && !lawsList.isEmpty()) {//Id不存在,但是标准号存在的情况 + String standId = lawsList.get(0).getId(); + SarLawsStandInfo query = new SarLawsStandInfo(); + query.setId(standId); + sarLawsStandInfoService.attrInfoDetails(query); + Map attrInfoMap = query.getAttrInfoMap(); + if(attInfoMap!=null && !attInfoMap.isEmpty()){ + updateStandFileFieldData(attInfoMap,attrInfoMap); + resData = JSON.toJSONString(attInfoMap, SerializerFeature.WriteMapNullValue); + sarLawsStandInfo.setSarStandAttrEOStr(resData); + } + // 查询原相关流程 + String relatePro = iSarLawsAttrInfoService.selectFieldValByLawsId("XGLC",standId); + if (StringUtils.isNotBlank(relatePro)) { + String[] processSplit = relatePro.split(","); + Set processSet = new HashSet<>(); + for(String sData:processSplit){ + processSet.add(sData); + } + processSet.add(prcNum); + relatePro = StringUtils.join(processSet.toArray(), ","); + } else { + relatePro = prcNum; + } + // 编辑标准 + sarLawsStandInfo.setId(standId); + sarLawsStandInfoService.updateSarLawsStandInfo(sarLawsStandInfo); + // 编辑相关流程 + iSarLawsAttrInfoService.updateLawsInfo(standId,"XGLC",relatePro); + String content = "新增一条相关流程:" +prcName+" "+prcNum; + sarUpdLogEOService.createBaseLog(standId,standType+"_STAND",content); + } else {//标准号、ID都不存在的情况 + // 新增方法 + sarLawsStandInfoService.createSarStandardsInfo(sarLawsStandInfo); + // 编辑相关流程 + iSarLawsAttrInfoService.updateLawsInfo(sarLawsStandInfo.getId(),"XGLC",prcNum); + } + List allItems = new ArrayList<>(); + //开始处理条款数据,从去重后的结果中直接处理即可 +// if(itemData!=null && !itemData.isEmpty()){ +// // allItems = +// saveStandItemsData(itemData, sarStandardsInfoEO); +// } + //技术评估结果入库 重构技术评估结果入库内容 +// if ("0".equals(isJudge)) { +// saveCompStatusInfo(sarStandardsInfoEO,breakVal,allItems,prcNum); +// } + } + } + + private String getFieldsValue(Map standMap, String key){ + String str = ""; + Object json= new JSONTokener(standMap.get(key).toString()).nextValue(); + if(json instanceof org.json.JSONArray){ + str = String.join(",",JSONObject.parseArray(standMap.get(key).toString(),String.class)); + }else { + if(!json.equals("null")){ + str = standMap.get(key).toString(); + } + } + return str; + } + + /*** + * 标准法规入库流程中技术评估结果入库归档操作 + * @param sarStandardsInfoEO + * @param allItems + * @param prcNum + */ + public void saveCompStatusInfo (SarStandardsInfo sarStandardsInfoEO,Object taskBreak,List allItems,String prcNum) throws Exception { + //首先将入库的标准条款通过之前的拆分库ID转换成入库后的条款的对应关系 + Map itemConvertDataMap = new HashMap<>(); + if(allItems!=null && !allItems.isEmpty()){ + for(SarStandItems itemsEO:allItems){ + itemConvertDataMap.put(itemsEO.getOldId(),itemsEO.getId()); + } + } + //获取本次入库的标准ID和类型 + String standId = sarStandardsInfoEO.getId();//标准ID + //主要时区分国内、国外 + String sarType = sarStandardsInfoEO.getStandType()+"_STAND"; + //判断填写表单是哦服存在 + if(taskBreak!=null){ + List compStatusInfoEOS = new ArrayList<>(); + //解析表单数据 + String compResultStr = String.valueOf(taskBreak); + List jsonArray = JSONArray.parseArray(compResultStr, String.class); + //判断数据是否正常 + if (jsonArray != null && !jsonArray.isEmpty()) { + //当入库时只有标准时 itemList是空的 + for (String jsonStr : jsonArray) { + if (StringUtils.isNotBlank(jsonStr)) { + Map jsonMap = JSONObject.parseObject(jsonStr); + if(jsonMap.containsKey("itemsList")){//开始读取条款集合数据处理结果 + String itemsList = jsonMap.get("itemsList").toString(); + //获取条款级别的评估集合列表 + List itemCompStrList = JSONArray.parseArray(itemsList, String.class); + if(itemCompStrList!=null && !itemCompStrList.isEmpty()){ + for(String itemCompDataStr : itemCompStrList){ + //解析每个人填写的具体评估结果 + Map itemDataMap = JSONObject.parseObject(itemCompDataStr); + if(itemDataMap.containsKey("pgForm")){ + String pgResult = itemDataMap.get("pgForm").toString(); + //新旧条款ID转换 + String oldItemId = itemDataMap.containsKey("id")?itemDataMap.get("id").toString():null; + //获取到评估表单 + SarCompStatusInfo sarCompStatusInfoEO = JSONObject.parseObject(pgResult,SarCompStatusInfo.class); + sarCompStatusInfoEO.setId(UUIDUtils.randomUUID(32)); + sarCompStatusInfoEO.setSarType(sarType); + sarCompStatusInfoEO.setSarId(standId); + //评估结果 + sarCompStatusInfoEO.setSarState(itemDataMap.containsKey("jspg")?itemDataMap.get("jspg").toString():null); + //新旧条款号转换存储 + if(StringUtils.isNotBlank(oldItemId)){ + sarCompStatusInfoEO.setSarItemId(itemConvertDataMap.get(oldItemId)); + sarCompStatusInfoEO.setSarItemState(sarCompStatusInfoEO.getSarState()); + } + sarCompStatusInfoEO.setPrcNum(prcNum); + sarCompStatusInfoEO.setColor(convertColorByState(sarCompStatusInfoEO.getSarState()));//此处需要处理 + sarCompStatusInfoEO.setPrcState(null);//技术评估不需要状态 + sarCompStatusInfoEO.setCreationTime(new Date()); + //评估人处理 + sarCompStatusInfoEO.setCompPerson(itemDataMap.containsKey("foFillUser")?itemDataMap.get("foFillUser").toString():null); + sarCompStatusInfoEO.setCompTime(new Date()); + compStatusInfoEOS.add(sarCompStatusInfoEO); + } + } + }else{ + if(jsonMap.containsKey("pgForm")){ + String pgResult = jsonMap.get("pgForm").toString(); + //获取到评估表单 + SarCompStatusInfo sarCompStatusInfoEO = JSONObject.parseObject(pgResult,SarCompStatusInfo.class); + sarCompStatusInfoEO.setId(UUIDUtils.randomUUID(32)); + sarCompStatusInfoEO.setSarType(sarType); + sarCompStatusInfoEO.setSarId(standId); + sarCompStatusInfoEO.setSarState(jsonMap.containsKey("jspg")?jsonMap.get("jspg").toString():null); + sarCompStatusInfoEO.setPrcNum(prcNum); + sarCompStatusInfoEO.setColor(convertColorByState(sarCompStatusInfoEO.getSarState()));//此处需要处理 + sarCompStatusInfoEO.setPrcState(null);//技术评估不需要状态 + sarCompStatusInfoEO.setCreationTime(new Date()); + sarCompStatusInfoEO.setCompPerson(jsonMap.containsKey("foFillUser")?jsonMap.get("foFillUser").toString():null); + sarCompStatusInfoEO.setCompTime(new Date()); + compStatusInfoEOS.add(sarCompStatusInfoEO); + } + } + }else{//只有标准的情况下 + //获取 + if(jsonMap.containsKey("pgForm")){ + String pgResult = jsonMap.get("pgForm").toString(); + //获取到评估表单 + SarCompStatusInfo sarCompStatusInfoEO = JSONObject.parseObject(pgResult,SarCompStatusInfo.class); + sarCompStatusInfoEO.setId(UUIDUtils.randomUUID(32)); + sarCompStatusInfoEO.setSarType(sarType); + sarCompStatusInfoEO.setSarId(standId); + sarCompStatusInfoEO.setSarState(jsonMap.containsKey("jspg")?jsonMap.get("jspg").toString():null); + sarCompStatusInfoEO.setPrcNum(prcNum); + sarCompStatusInfoEO.setColor(convertColorByState(sarCompStatusInfoEO.getSarState()));//此处需要处理 + sarCompStatusInfoEO.setPrcState(null);//技术评估不需要状态 + sarCompStatusInfoEO.setCreationTime(new Date()); + sarCompStatusInfoEO.setCompPerson(jsonMap.containsKey("foFillUser")?jsonMap.get("foFillUser").toString():null); + sarCompStatusInfoEO.setCompTime(new Date()); + compStatusInfoEOS.add(sarCompStatusInfoEO); + } + } + } + } + } + //最后开始将评估结果入库同时将评估结果汇总后给出标准的评估结果 + saveJSPGResultDataList(compStatusInfoEOS); + } + } + + /** + * 入库技术评估结果 + * @param compResultData + */ + private void saveJSPGResultDataList(List compResultData) throws Exception { + if(compResultData!=null && !compResultData.isEmpty()){ + //1、将数据存储到记录表中 + //2、汇总本次评估的结果 更新所有清单中的状态 此处有坑,如果标准评估后又在新的清单中添加的时候状态可能就是空的, + // 此时就会显示空,所以需要更换实现方法 + //需要中间需要增加一层技术评估的结果,但是代价太大,2021年3月21日 无法在今天修改完,需要于2021年3月22日 整体想下这块, + // 目前的实现思路时有问题的 + //正确逻辑时: 现将当前的评估结果记录到所有的技术评估结果中,然后汇总本次的评估结果内容到当前标准的技术评估汇总表中 + //汇总后形成最新的评估内容,此时有2种做法 1、不记录上一次的状态 直接更新 2、记录上一次状态,新增一条整体评估结果记录 + //在清单查询的时候 查询当前标准的最新一次评估结果,将评估结果不再清单中直接显示,而是在汇总表中的信息进行修改,这样能够达到 + //单一标准不论在任何时间添加到清单的时候都可以查看,同时在标准的技术评估状态的时候也可以直接调用即可。不用每次评估完都需要更新 + //技术清单的逻辑 + /** + * 整体表关系如下: + * 基础库: 国内标准库 海外标准库 政策库 + * 技术评估汇总表 资源的汇总结果记录 + * 详细评估内容记录表 资源本身每次评估的详细记录 + * 清单: 根据标准号到资源的汇总记录表中查询汇总结果 直接展现即可 + * 目前缺少的就是资源的汇总结果记录缺失,导致查询的时候可能汇总结果会有问题 + */ + //开始汇总数据以及状态变更 + //首先先检查当前标准在汇总表中是否存在 + Map> assessMap = new HashMap<>(); + Map compResAssessEOMap = new HashMap<>(); + for(SarCompStatusInfo data : compResultData){ + //评估结果转换 + String state = sysInfoEOService.changeCompStatus(data.getSarState()); + String itemSate = sysInfoEOService.changeCompStatus(data.getSarItemState()); + data.setSarState(state); + data.setSarItemState(itemSate); + if(StringUtils.equals("INLAND",data.getSarType())){ + data.setSarType(SarTypeEnum.INLAND_STAND.getValue()); + }else if(StringUtils.equals("FOREIGN",data.getSarType())){ + data.setSarType(SarTypeEnum.FOREIGN_STAND.getValue()); + } + SarCompResAssess info =null; + if(assessMap.containsKey(data.getSarId())){ + info = compResAssessEOMap.get(data.getSarId()); + }else{ + info= sarCompResAssessEOService.getAssessInfoByResId(data.getSarId()); + if(info==null){ + info = new SarCompResAssess(); + info.setId(UUIDUtils.randomUUID(32)); + info.setAssessTime(new Date()); + info.setCreatedTime(new Date()); + info.setModifyTime(new Date()); + info.setProcessNum(data.getPrcNum()); + info.setResId(data.getSarId()); + info.setResType(data.getSarType()); + sarCompResAssessEOService.save(info); + } + compResAssessEOMap.put(data.getSarId(),info); + } + //汇总结果 + if(!assessMap.containsKey(info.getResId())){ + Map accessData = new HashMap<>(); + accessData.put(state,1); + assessMap.put(info.getResId(),accessData); + }else{ + Map accessData = assessMap.get(info.getResId()); + if(accessData.containsKey(state)){ + Integer stateNum = accessData.get(state); + accessData.put(state,stateNum+1); + assessMap.put(info.getResId(),accessData); + }else{ + accessData.put(state,1); + assessMap.put(info.getResId(),accessData); + } + } + //入库操作 + sarCompStatusInfoEODao.insert(data); + } + //开始遍历状态集合 + for (Map.Entry entry : compResAssessEOMap.entrySet()) { + String compId = entry.getKey().toString();//汇总ID + SarCompResAssess compResAssessEO = (SarCompResAssess) entry.getValue(); + Map stringIntegerMap = assessMap.get(compId); + if(stringIntegerMap!=null){ + if(stringIntegerMap.containsKey(SarConformStateEnum.UNFIT.getValue()+"")){//只要包含不符合的就是不符合 + compResAssessEO.setAssessResult(SarConformStateEnum.UNFIT.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.YELLOW.getValue()); + }else if(stringIntegerMap.size() ==1){//只有一种情况的 + if(stringIntegerMap.containsKey(SarConformStateEnum.FIT.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.FIT.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.GREEN.getValue()); + }else if(stringIntegerMap.containsKey(SarConformStateEnum.CHECK.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.CHECK.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.YELLOW.getValue()); + }else if(stringIntegerMap.containsKey(SarConformStateEnum.NOT_INVOLVE.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.NOT_INVOLVE.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.NA.getValue()); + } + }else if(stringIntegerMap.containsKey(SarConformStateEnum.CHECK.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.CHECK.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.YELLOW.getValue()); + }else if(stringIntegerMap.containsKey(SarConformStateEnum.NOT_INVOLVE.getValue()+"")){ + compResAssessEO.setAssessResult(SarConformStateEnum.NOT_INVOLVE.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.NA.getValue()); + }else{ + compResAssessEO.setAssessResult(SarConformStateEnum.FIT.getValue()); + compResAssessEO.setAssessColor(SarStateColorEnum.GREEN.getValue()); + } +// else {//不包含不符合的并且单一情况并不存在的也就是说是 部分符合或者待确认的 +// if(stringIntegerMap.containsKey(SarConformStateEnum.FIT.getValue()+"")){ +// compResAssessEO.setAssessResult(SarConformStateEnum.PART_FIT.getValue()); +// compResAssessEO.setAssessColor(SarStateColorEnum.YELLOW.getValue()); +// }else{ +// compResAssessEO.setAssessResult(SarConformStateEnum.CHECK.getValue()); +// compResAssessEO.setAssessColor(SarStateColorEnum.NA.getValue()); +// } +// } + } + compResAssessEO.setProcessState("2"); + compResAssessEO.setModifyTime(new Date()); + if(StringUtils.equals("INLAND",compResAssessEO.getResType())){ + compResAssessEO.setResType(SarTypeEnum.INLAND_STAND.getValue()); + }else if(StringUtils.equals("FOREIGN",compResAssessEO.getResType())){ + compResAssessEO.setResType(SarTypeEnum.FOREIGN_STAND.getValue()); + } + //更新汇总后的结果 + sarCompResAssessEOService.updateById(compResAssessEO); + } + } + } + + private String convertColorByState(String stateStr){ + String colorStr = ""; + switch (stateStr){ + case "1": + colorStr = SarStateColorEnum.GREEN.getValue(); + break; + case "2": + colorStr = SarStateColorEnum.YELLOW.getValue(); + break; + case "3": + colorStr = SarStateColorEnum.YELLOW.getValue(); + case "4": + colorStr = SarStateColorEnum.NA.getValue(); + } + return colorStr; + } + + + public String changeStatus (String textStatus) { + String status = ""; + switch (textStatus) { + case "草稿": status="CA";break; + case "征求意见稿": status="ZQYJG";break; + case "报批稿": status="BPG";break; + case "送审稿": status="SSG";break; + case "发布稿(必读)": status="FBGBJBD";break; + } + return status; + } + + /** + * 处理条款信息转换 + * @param itemsEO + * @param field + * @param value + * @throws Exception + */ + public void createItemsBaseField (SarLawsItems itemsEO,String field,Object value) throws Exception{ + String valueStr = ""; + if (value != null) { + valueStr = String.valueOf(value); + } + switch (field) { + case "itemsName": itemsEO.setItemsName(valueStr); break; + case "FO": + List jsonArray = JSONArray.parseArray(valueStr,String.class); + String fo = ""; + if (jsonArray != null && !jsonArray.isEmpty()) { + for (String json : jsonArray) { + fo += json + ","; + } + fo = fo.substring(0,fo.length()-1); + itemsEO.setFoUser(fo); + } + break; + case "itemsNum": itemsEO.setItemsNum(valueStr); break; + case "termsConditions": itemsEO.setTermsConditions(valueStr); break; + case "svpps": itemsEO.setSvpps(valueStr); break; + case "role": itemsEO.setDutyEngineer(valueStr); break; + case "parts": itemsEO.setResponsibleUnit(valueStr); break; + case "FORoleId": itemsEO.setFo(valueStr); break; + case "id": itemsEO.setOldId(valueStr); break; + case "jspg": itemsEO.setJspg(valueStr); break; + case "pgForm": + if (StringUtils.isNotBlank(valueStr)) { + SarCompStatusInfo list = JSONObject.parseObject(valueStr,SarCompStatusInfo.class); + itemsEO.setPgForm(list); + }; + break; + default: break; + } + } + + /** + * 处理保存标准条款信息数据 + * @return + */ +// private List saveStandItemsData(List> itemDataList,SarLawsStandInfo sarStandardsInfoEO) throws Exception { +// String standId = sarStandardsInfoEO.getId(); +// String fileType = changeStatus(sarStandardsInfoEO.getLawsTextState()); +// List itemsEOList = new ArrayList<>();//添加的条款信息 +// List upItemsEOList = new ArrayList<>();//更新的条款数据 +// List delValItemIds = new ArrayList<>();//需要删除重新添加的条款数据集合 +// List itemValEOS = new ArrayList<>();//批量更新进去的条款参数集合 +// List UpSarFileSplitItemsList = new ArrayList<>(); +// for(Map itemData:itemDataList){ +// String itemStr = itemData.get("itemStr").toString();//条款的具体内容 +// Map itemAttrInfo = (Map) itemData.get("itemAttrInfo");//条款的属性字段 +// Map itemMap = new HashMap(); +// //此处需要查询拆分库数据,将之前的拆分数据带入到当前标准中同时检查当前分解单中是否已经包含相关的条款信息, +// // 如果是则更新,如果没有则添加 +// itemMap = JSONObject.parseObject(itemStr);; +// if (itemMap != null && !itemMap.isEmpty()) { +// if(itemMap.containsKey("resId")){ +// //存在 +// String splitItemId = String.valueOf(itemMap.get("resId")); +// if(StringUtils.isNotBlank(splitItemId)){ +// SarFileSplitItems splitItemsEO = sarFileSplitItemsEOService.getById(splitItemId); +// if(splitItemsEO!=null){ +// //拆分库有数据,检查当前的表单中是否有数据,如果有则直接获取后更新即可 +// SarLawsItems nowItemEO = sarLawsItemsDao.selectById(splitItemId); +// if(nowItemEO!=null){ +// //更新数据 +// nowItemEO.setItemsNum(splitItemsEO.getItemsNum()); +// nowItemEO.setItemsName(splitItemsEO.getItemsName()); +// nowItemEO.setApplyArctic(splitItemsEO.getApplyArctic()); +// nowItemEO.setLawsId(standId); +// nowItemEO.setTermsConditions(splitItemsEO.getItermsConditions()); +// nowItemEO.setParts(splitItemsEO.getSvpps()); +// nowItemEO.setCreationUser(UserUtils.getUserId()); +// nowItemEO.setValidFlag(0); +// if(null!=fileType){ +// nowItemEO.setFileType(fileType); +// } +// nowItemEO.setRemarks(splitItemsEO.getRemarks()); +// nowItemEO.setModifyTime(new Date()); +// +// nowItemEO.setClaimType(splitItemsEO.getClaimType()); +// nowItemEO.setBusStandCover(splitItemsEO.getBusStandCover()); +// nowItemEO.setResponsibleUnit(itemAttrInfo.get("ZRBM")); +// nowItemEO.setFo(itemAttrInfo.get("FO")); +// nowItemEO.setDutyEngineer(itemAttrInfo.get("XMPGJS")); +// nowItemEO.setSvpps(itemAttrInfo.get("SVPPS")); +// upItemsEOList.add(nowItemEO); +// }else{ +// SarLawsItems itemsEO = new SarLawsItems(); +// itemsEO.setId(splitItemId); +// itemsEO.setCreationTime(new Date()); +// itemsEO.setModifyTime(new Date()); +// itemsEO.setValidFlag(0); +// itemsEO.setLawsId(standId); +// itemsEO.setFileType(fileType); +// for (Map.Entry entry : itemMap.entrySet()) { +// String field = entry.getKey(); +// Object value = entry.getValue(); +// createItemsBaseField(itemsEO,field,value); +// } +// itemsEO.setItemsNum(splitItemsEO.getItemsNum()); +// itemsEO.setItemsName(splitItemsEO.getItemsName()); +// itemsEO.setApplyArctic(splitItemsEO.getApplyArctic()); +// itemsEO.setTermsConditions(splitItemsEO.getItermsConditions()); +// itemsEO.setParts(splitItemsEO.getSvpps()); +// itemsEO.setCreationUser(UserUtils.getUserId()); +// itemsEO.setRemarks(splitItemsEO.getRemarks()); +// itemsEO.setClaimType(splitItemsEO.getClaimType()); +// itemsEO.setBusStandCover(splitItemsEO.getBusStandCover()); +// itemsEO.setResponsibleUnit(itemAttrInfo.get("ZRBM")); +// itemsEO.setFo(itemAttrInfo.get("FO")); +// itemsEO.setDutyEngineer(itemAttrInfo.get("XMPGJS")); +// itemsEO.setSvpps(itemAttrInfo.get("SVPPS")); +// //开始处理后续逻辑 +// itemsEOList.add(itemsEO); +// } +// //apply数据 +// if(StringUtils.isNotEmpty(splitItemsEO.getApplyArctic())){ +// delValItemIds.add(splitItemsEO.getId()); +// String[] applyarr = splitItemsEO.getApplyArctic().trim().split(","); +// for(String applya:applyarr){ +// SarStandItemVal sarStandItemValEO = new SarStandItemVal(); +// sarStandItemValEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); +// sarStandItemValEO.setCreationTime(new Date()); +// sarStandItemValEO.setModifyTime(new Date()); +// sarStandItemValEO.setItemId(splitItemsEO.getId()); +// sarStandItemValEO.setId(UUIDUtils.randomUUID20()); +// sarStandItemValEO.setPropertyType(PropertyTypeEnum.APPLY_ARCTIC.getValue()); +// sarStandItemValEO.setPropertyVal(applya); +// itemValEOS.add(sarStandItemValEO); +// } +// } +// //TODO 开始处理拆分库数据 +// splitItemsEO.setModifyTime(new Date()); +// splitItemsEO.setResponsibleUnit(itemAttrInfo.get("ZRBM")); +// splitItemsEO.setFo(itemAttrInfo.get("FO")); +// splitItemsEO.setDutyEngineer(itemAttrInfo.get("XMPGJS")); +// splitItemsEO.setSvpps(itemAttrInfo.get("SVPPS")); +// UpSarFileSplitItemsList.add(splitItemsEO); +// }else{ +// logger.error("拆分库中找不到对应数据了,数据不见了 /(ㄒoㄒ)/~~"+itemStr); +// } +// }else{ +// logger.error("流程中携带的拆分库ID不见了 Σ(っ °Д °;)っ "+itemStr); +// } +// }else{ +// //不存在 说明数据出现问题了 +// logger.error("流程中携带的拆分库ID,数据不见了 /(ㄒoㄒ)/~~"+itemStr); +// +// } +// } +// } +// //更新拆分库数据 +// if(UpSarFileSplitItemsList!=null && !UpSarFileSplitItemsList.isEmpty()){ +// for(SarFileSplitItems items : UpSarFileSplitItemsList){ +// sarFileSplitItemsEOService.updateById(items); +// } +// } +// //执行批量新增操作 +// if(itemsEOList != null && !itemsEOList.isEmpty()){ +// sarLawsItemsDao.insertForeach(itemsEOList); +// +// } +// //执行批量修改操作 +// if(upItemsEOList != null && !upItemsEOList.isEmpty()){ +// sarLawsItemsDao.updateForeach(upItemsEOList); +// +// } +// //执行适用车型批量操作 +// if(itemValEOS != null && !itemValEOS.isEmpty()){ +// sarLawsItemValDao.deleteByItemsIds(delValItemIds); +// sarLawsItemValDao.insertForeach(itemValEOS); +// } +// return itemsEOList; +// } + + private void updateStandFileFieldData(Map addAttInfoMap,Map oldAttInfoMap){ + if(oldAttInfoMap.containsKey("CA")){ + String fileStr = (String) oldAttInfoMap.get("CA"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("CA")?(String)addAttInfoMap.get("CA"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("CA",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("CA",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("ZQYJG")){ + String fileStr = (String) oldAttInfoMap.get("ZQYJG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("ZQYJG")?(String)addAttInfoMap.get("ZQYJG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("ZQYJG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("ZQYJG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("BPG")){ + String fileStr = (String) oldAttInfoMap.get("BPG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("BPG")?(String)addAttInfoMap.get("BPG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("BPG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("BPG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("SSG")){ + String fileStr = (String) oldAttInfoMap.get("SSG"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("SSG")?(String)addAttInfoMap.get("SSG"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("SSG",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("SSG",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("ZBJBD")){ + String fileStr = (String) oldAttInfoMap.get("ZBJBD"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("ZBJBD")?(String)addAttInfoMap.get("ZBJBD"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("ZBJBD",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("ZBJBD",fileStr); + } + } + }else if(oldAttInfoMap.containsKey("FBGBJBD")){ + String fileStr = (String) oldAttInfoMap.get("FBGBJBD"); + if(StringUtils.isNotBlank(fileStr)){ + String newFileStr =addAttInfoMap.containsKey("FBGBJBD")?(String)addAttInfoMap.get("FBGBJBD"):null; + if(StringUtils.isNotBlank(newFileStr)){ + String[] fileSplit = fileStr.split(","); + String[] newFileSplit = newFileStr.split(","); + Set fileSet = new HashSet<>(); + for(String sData:fileSplit){ + fileSet.add(sData); + } + for(String sData:newFileSplit){ + fileSet.add(sData); + } + addAttInfoMap.put("FBGBJBD",StringUtils.join(fileSet.toArray(), ",")); + }else{ + addAttInfoMap.put("FBGBJBD",fileStr); + } + } + } + } + + public Map saveFileMsg (Map attInfoMap,String fileIds,String textStatus) { + switch (textStatus) { + case "草案": attInfoMap.put("CA",fileIds);break; + case "征求意见稿": attInfoMap.put("ZQYJG",fileIds);break; + case "报批稿": attInfoMap.put("BPG",fileIds);break; + case "送审稿": attInfoMap.put("SSG",fileIds);break; + case "增补件(必读)":attInfoMap.put("ZBJBD",fileIds);break; + case "发布稿(必读)": attInfoMap.put("FBGBJBD",fileIds);break; + } + return attInfoMap; + } + + /** + * 处理标准基础库字段 + * @param sarLawsStandInfo + * @param field + * @param value + * @throws Exception + */ + public void createStandBaseField (SarLawsStandInfo sarLawsStandInfo,String field,Object value) throws Exception{ + String valueStr = ""; + if (value != null) { + valueStr = String.valueOf(value); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + switch (field) { + case "country": sarLawsStandInfo.setCountry(valueStr); break; + case "id": sarLawsStandInfo.setId(valueStr); break; + case "lawsType": sarLawsStandInfo.setLawsType(valueStr); break; + case "lawsNumber": sarLawsStandInfo.setLawsNumber(valueStr); break; + case "lawsName": sarLawsStandInfo.setLawsName(valueStr); break; + case "lawsEnName": sarLawsStandInfo.setLawsEnName(valueStr); break; + case "lawsNo": sarLawsStandInfo.setLawsNo(valueStr); break; + case "issueTime": + if (StringUtils.isNotBlank(valueStr)) { + sarLawsStandInfo.setIssueTime(valueStr); + } + break; + case "issueCompany": sarLawsStandInfo.setIssueCompany(valueStr); break; + case "commentCycleStart": + if (StringUtils.isNotBlank(valueStr)) { + sarLawsStandInfo.setCommentCycleStart(valueStr); + } + break; + case "commentCycleEnd": + if (StringUtils.isNotBlank(valueStr)) { + sarLawsStandInfo.setCommentCycleEnd(valueStr); + } + break; + case "lawsTextState": sarLawsStandInfo.setLawsTextState(valueStr); break; + case "lawsSyqy": sarLawsStandInfo.setLawsSyqy(valueStr); break; + case "lawsSycx": sarLawsStandInfo.setLawsSycx(valueStr); break; + case "isRelateAccess": sarLawsStandInfo.setIsRelateAccess(valueStr); break; + case "lawsYear": sarLawsStandInfo.setLawsYear(valueStr); break; + case "lawsNotisyncNum": sarLawsStandInfo.setLawsNotisyncNum(valueStr); break; + case "lawsBulletin": sarLawsStandInfo.setLawsBulletin(valueStr); break; + case "lawsLabel": sarLawsStandInfo.setLawsLabel(valueStr); break; + case "lawsRemark": sarLawsStandInfo.setLawsRemark(valueStr); break; + case "prcNum": sarLawsStandInfo.setProcessNum(valueStr); break; + case "menuId": sarLawsStandInfo.setMenuId(valueStr); break; + case "fileWord": + if (StringUtils.isNotBlank(sarLawsStandInfo.getFileIds()) && StringUtils.isNotBlank(valueStr)) { + valueStr = sarLawsStandInfo.getFileIds() + "," + valueStr; + } + sarLawsStandInfo.setFileIds(valueStr); break; + case "filePdf": + if (StringUtils.isNotBlank(sarLawsStandInfo.getFileIds()) && StringUtils.isNotBlank(valueStr)) { + valueStr = sarLawsStandInfo.getFileIds() + "," + valueStr; + } + sarLawsStandInfo.setFileIds(valueStr); + break; + default: break; + } + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsPlanService.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsPlanService.java new file mode 100644 index 00000000..e77d5c26 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/ActSarItemsPlanService.java @@ -0,0 +1,105 @@ +package com.adc.da.workFlow.service; + +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.esRevisePlan.dao.EsRevisePlanDao; +import com.adc.da.slrs.esRevisePlan.dao.EsRevisePlanLogDao; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlanLog; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanService; +import com.adc.da.util.UUIDUtils; +import com.adc.da.workFlow.dao.ActSarItemsEODao; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.*; + +@Service("actSarItemsPlanService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ActSarItemsPlanService { + + private static final Logger logger = LoggerFactory.getLogger(ActSarItemsPlanService.class); + + @Autowired + private IEsRevisePlanService iEsRevisePlanService; + + @Autowired + private EsRevisePlanDao esRevisePlanDao; + + @Autowired + private EsRevisePlanLogDao esRevisePlanLogDao; + + + @Value("${elas.flag}") + private boolean elasflag; + + public String processCreatePlan(String standJson) throws Exception{ + JSONObject object = new JSONObject(); + object = JSONObject.parseObject(standJson); + String id = ""; + if (object != null && !object.isEmpty()) { + Map plan_status=new HashMap<>(); + plan_status.put("未开始","0"); + plan_status.put("制定中","1"); + plan_status.put("修订中","2"); + plan_status.put("已取消","3"); + plan_status.put("已完成","4"); + plan_status.put("立项已完成","5"); + plan_status.put("计划已确认","6"); + Map revise_status=new HashMap<>(); + revise_status.put("制定","1"); + revise_status.put("修订","2"); + + EsRevisePlan esRevisePlanDTO=new EsRevisePlan(); + esRevisePlanDTO.setEsName(object.getString("esName")); + esRevisePlanDTO.setUnit(object.getString("unit")); + esRevisePlanDTO.setUnitName(object.getString("unitName")); + esRevisePlanDTO.setDrafter(object.getString("drafter")); + esRevisePlanDTO.setPlanStatus("5"); + esRevisePlanDTO.setReviseStatus(revise_status.get(object.getString("reviseStatus"))); + esRevisePlanDTO.setDraftTime(object.getDate("firstDraftTime")); + esRevisePlanDTO.setReleaseTime(object.getDate("planTime")); + esRevisePlanDTO.setBussSort(object.getString("bussSort")); + esRevisePlanDTO.setLxd(object.getString("LXD")); + if(StringUtils.isNotBlank(object.getString("esName")) && StringUtils.isNotBlank(object.getString("bussSort"))){ + EsRevisePlan qw = new EsRevisePlan(); + qw.setEsName(object.getString("esName")); + qw.setBussSort(object.getString("bussSort")); + List list = esRevisePlanDao.selectPageByName(qw); + if(!list.isEmpty()){ + id = list.get(0).getId(); + esRevisePlanDTO.setId(list.get(0).getId()); + iEsRevisePlanService.updateById(esRevisePlanDTO); + }else{ + id = UUIDUtils.randomUUID(32); + esRevisePlanDTO.setId(id); + esRevisePlanDao.insertOne(esRevisePlanDTO); + //日志 + Date date = new Date(); + String msg = UserUtils.getUser().getUname() + " " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date) + " " + +"创建了《"+ object.getString("esName") +"》"; + esRevisePlanLogDao.insert(new EsRevisePlanLog(null,id,msg,date)); + } + }else { + id = UUIDUtils.randomUUID(32); + esRevisePlanDTO.setId(id); + esRevisePlanDao.insertOne(esRevisePlanDTO); + //日志 + Date date = new Date(); + String msg = UserUtils.getUser().getUname() + " " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date) + " " + +"创建了《"+ object.getString("esName") +"》"; + esRevisePlanLogDao.insert(new EsRevisePlanLog(null,id,msg,date)); + } + } + return id; + } + +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/PolicyWorkFlowService.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/PolicyWorkFlowService.java new file mode 100644 index 00000000..1f5ecdb7 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/PolicyWorkFlowService.java @@ -0,0 +1,51 @@ +package com.adc.da.workFlow.service; + +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.service.IBusinessDeptIssueService; +import com.adc.da.util.UUIDUtils; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class PolicyWorkFlowService { + + @Autowired + private IBusinessDeptIssueService businessDeptIssueService; + + + public boolean enterIssue(String json){ + boolean count=false; //是否成功 + JSONObject dataJsonObj = JSONObject.parseObject(json); + JSONObject jsonData = dataJsonObj.getJSONObject("json"); + + + if ("1".equals( jsonData.getString("feedbackDept"))) { + JSONArray dataList = jsonData.getJSONArray("infoTableDatas"); + + /** + * 把json对象转换未实体对象 + */ + List data = dataList + .stream() + .map(jsonObj -> { + BusinessDeptIssue businessDeptIssue = JSONObject.parseObject(jsonObj.toString(), BusinessDeptIssue.class); + businessDeptIssue.setLawId(businessDeptIssue.getId()); + businessDeptIssue.setId(UUIDUtils.randomUUID20()); + businessDeptIssue.setIsClose("0"); + return businessDeptIssue; + }).collect(Collectors.toList()) + .stream() + .filter(item->"1".equals(item.getIsRisk())) + .collect(Collectors.toList()); + count=businessDeptIssueService.saveBatch(data); + + } + + return count; + } +} diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/WorkFlowService.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/WorkFlowService.java new file mode 100644 index 00000000..1190c6b2 --- /dev/null +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/service/WorkFlowService.java @@ -0,0 +1,35 @@ +package com.adc.da.workFlow.service; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.common.SarConformStateEnum; +import com.adc.da.common.SelectionTypeEnum; +import com.adc.da.slrs.otSvpps.dao.OtSvppsDao; +import com.adc.da.slrs.sarGroupMenu.dao.SarGroupMenuDao; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.dao.OrgEODao; +import com.adc.da.sys.dao.RoleEODao; +import com.adc.da.sys.dao.UserEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.page.DicTypeEOPage; +import com.adc.da.utils.util.InitStandAttrUtil; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: super_liu + * date: 2020/06/02 9:43 + */ +@Service("workFlowService") +public class WorkFlowService { + + /** + * 后续优化工作流 + */ + +} diff --git a/adc-da-activiti/src/main/resources/mybatis/mapper/activiti/ActSarItemsEO.xml b/adc-da-activiti/src/main/resources/mybatis/mapper/activiti/ActSarItemsEO.xml new file mode 100644 index 00000000..b59257d8 --- /dev/null +++ b/adc-da-activiti/src/main/resources/mybatis/mapper/activiti/ActSarItemsEO.xml @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + resId,resFlag,resNum,resName,deptName,orgName,resState + + + + + + + + + + + + + + diff --git a/adc-da-base/pom.xml b/adc-da-base/pom.xml index df6ad64a..3c55d5b4 100644 --- a/adc-da-base/pom.xml +++ b/adc-da-base/pom.xml @@ -37,6 +37,20 @@ UserAgentUtils 1.21 + + com.itextpdf + itextpdf + 5.5.13 + compile + + + io.jsonwebtoken + jjwt + 0.9.1 + compile + + + diff --git a/adc-da-base/src/main/java/com/adc/da/base/page/BasePage.java b/adc-da-base/src/main/java/com/adc/da/base/page/BasePage.java index 8ad9eb73..bc14e30d 100644 --- a/adc-da-base/src/main/java/com/adc/da/base/page/BasePage.java +++ b/adc-da-base/src/main/java/com/adc/da/base/page/BasePage.java @@ -1,13 +1,23 @@ package com.adc.da.base.page; +import com.baomidou.mybatisplus.annotation.TableField; + public class BasePage { + @TableField(exist = false) private Integer page = 1; + @TableField(exist = false) private Integer pageSize = 20; + @TableField(exist = false) private Integer startIndex; + @TableField(exist = false) private Integer endIndex; + @TableField(exist = false) private String orderBy; + @TableField(exist = false) private String order; + @TableField(exist = false) private String q; + @TableField(exist = false) private Pager pager = new Pager(); public BasePage() { diff --git a/adc-da-base/src/main/java/com/adc/da/exception/ServiceException.java b/adc-da-base/src/main/java/com/adc/da/exception/ServiceException.java new file mode 100644 index 00000000..a9af4441 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/exception/ServiceException.java @@ -0,0 +1,20 @@ +package com.adc.da.exception; + +public class ServiceException extends Exception { + + + /** + * Instantiates a new Service exception. + */ + public ServiceException() { + } + + /** + * Instantiates a new Service exception. + * + * @param message the message + */ + public ServiceException(String message) { + super(message); + } +} diff --git a/adc-da-base/src/main/java/com/adc/da/http/PageInfo.java b/adc-da-base/src/main/java/com/adc/da/http/PageInfo.java new file mode 100644 index 00000000..828e9e0d --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/http/PageInfo.java @@ -0,0 +1,168 @@ +package com.adc.da.http; + +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class PageInfo { + private Integer pageNo; + private Integer pageSize; + private Long count; + private Long pageCount; + private List list; + private List> title; + private Map ext; + private String orderBy; + + public PageInfo() { + this.pageNo = 1; + this.pageSize = 10; + this.list = new ArrayList(); + this.title = new ArrayList(); + this.ext = new HashMap(); + this.orderBy = ""; + this.pageSize = 1; + } + + public PageInfo(HttpServletRequest request) { + this.pageNo = 1; + this.pageSize = 10; + this.list = new ArrayList(); + this.title = new ArrayList(); + this.ext = new HashMap(); + this.orderBy = ""; + String no = request.getParameter("pageNo"); + if (StringUtils.isEmpty(no)) { + this.setPageNo(1); + } else if (StringUtils.isNumeric(no)) { + this.setPageNo(Integer.parseInt(no)); + } + + String size = request.getParameter("pageSize"); + if (StringUtils.isEmpty(size)) { + this.setPageSize(10); + } + + if (StringUtils.isNumeric(size)) { + this.setPageSize(Integer.parseInt(size)); + } + + String orderByParam = request.getParameter("orderBy"); + if (StringUtils.isNotBlank(orderByParam)) { + this.setOrderBy(orderByParam); + } + + } + + public PageInfo(Integer pageNo, Integer pageSize) { + this(pageNo, pageSize, 0L); + } + + public PageInfo(Integer pageNo, Integer pageSize, Long count) { + this(pageNo, pageSize, count, new ArrayList()); + } + + public PageInfo(Integer pageNo, Integer pageSize, Long count, List list) { + this.pageNo = 1; + this.pageSize = 10; + this.list = new ArrayList(); + this.title = new ArrayList(); + this.ext = new HashMap(); + this.orderBy = ""; + if (pageNo == null) { + pageNo = 1; + } + + if (pageSize == null) { + pageSize = 10; + } + + this.setCount(count); + this.setPageNo(Math.abs(pageNo)); + this.setPageSize(Math.abs(pageSize)); + this.setList(list); + } + + public Long getCount() { + return this.count; + } + + public void setCount(Long count) { + this.count = count; + if ((long) this.pageSize >= count) { + this.pageNo = 1; + } + + } + + public Integer getPageNo() { + return this.pageNo; + } + + public void setPageNo(Integer pageNo) { + this.pageNo = pageNo; + } + + public Integer getPageSize() { + return this.pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize <= 0 ? 10 : pageSize; + } + + public List getList() { + return this.list; + } + + public PageInfo setList(List list) { + this.list = list; + return this; + } + + public String getOrderBy() { + return this.orderBy; + } + + public void setOrderBy(String orderBy) { + this.orderBy = orderBy; + } + + public Map getExt() { + return this.ext; + } + + public void setExt(Map ext) { + this.ext = ext; + } + + public Long getPageCount() { + if (this.count % (long) this.pageSize != 0L) { + this.pageCount = this.count / (long) this.pageSize + 1L; + } else { + this.pageCount = this.count / (long) this.pageSize; + } + + if (this.pageCount < 1L) { + this.pageCount = 1L; + } + + return this.pageCount; + } + + public void setPageCount(Long pageCount) { + this.pageCount = pageCount; + } + + public List> getTitle() { + return this.title; + } + + public void setTitle(List> title) { + this.title = title; + } +} \ No newline at end of file diff --git a/adc-da-base/src/main/java/com/adc/da/http/ResponseMessage.java b/adc-da-base/src/main/java/com/adc/da/http/ResponseMessage.java new file mode 100644 index 00000000..19300a12 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/http/ResponseMessage.java @@ -0,0 +1,58 @@ +package com.adc.da.http; + +public class ResponseMessage { + private String respCode; + private String respMsg; + private T data; + private boolean ok; + + public ResponseMessage() { + } + + public ResponseMessage(String respCode, String message) { + this.respCode = respCode; + this.respMsg = message; + } + + public ResponseMessage(String respCode, String message, boolean ok) { + this.respCode = respCode; + this.respMsg = message; + this.ok = ok; + } + + public ResponseMessage(String respCode, String message, boolean ok, T data) { + this.respCode = respCode; + this.respMsg = message; + this.ok = ok; + this.data = data; + } + + public String getRespCode() { + return this.respCode; + } + + public void setRespCode(String respCode) { + this.respCode = respCode; + } + + public String getMessage() { + return this.respMsg; + } + + public void setMessage(String message) { + this.respMsg = message; + } + + public T getData() { + return this.data; + } + + public void setData(T data) { + this.data = data; + } + + public boolean isOk() { + return this.ok; + } +} + diff --git a/adc-da-base/src/main/java/com/adc/da/http/ResponseMessageCodeEnum.java b/adc-da-base/src/main/java/com/adc/da/http/ResponseMessageCodeEnum.java new file mode 100644 index 00000000..d913fab8 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/http/ResponseMessageCodeEnum.java @@ -0,0 +1,21 @@ +package com.adc.da.http; + +public enum ResponseMessageCodeEnum { + SUCCESS("0"), + ERROR("-1"), + ERROR_TOKEN("LE505"), + VALID_ERROR("1000"), + SAVE_SUCCESS("r0001"), + UPDATE_SUCCESS("r0002"), + REMOVE_SUCCESS("r0003"); + + private String code; + + private ResponseMessageCodeEnum(String code) { + this.code = code; + } + + public String getCode() { + return this.code; + } +} diff --git a/adc-da-base/src/main/java/com/adc/da/http/Result.java b/adc-da-base/src/main/java/com/adc/da/http/Result.java new file mode 100644 index 00000000..77ffe02d --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/http/Result.java @@ -0,0 +1,42 @@ +package com.adc.da.http; + +public class Result { + public Result() { + } + + public static ResponseMessage success() { + return new ResponseMessage(ResponseMessageCodeEnum.SUCCESS.getCode(), "", true); + } + + public static ResponseMessage success(String code, T t) { + return new ResponseMessage(code, "", true, t); + } + + public static ResponseMessage success(String code, String message) { + return new ResponseMessage(code, message); + } + + public static ResponseMessage success(String code, String message, T t) { + return new ResponseMessage(code, message, true, t); + } + + public static ResponseMessage success(T t) { + return new ResponseMessage(ResponseMessageCodeEnum.SUCCESS.getCode(), "", true, t); + } + + public static ResponseMessage error() { + return error(""); + } + + public static ResponseMessage error(String message) { + return error(ResponseMessageCodeEnum.ERROR.getCode(), message); + } + + public static ResponseMessage error(String code, String message) { + return error(code, message, (Object)null); + } + + public static ResponseMessage error(String code, String message, T t) { + return new ResponseMessage(code, message, false, t); + } +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/DateUtils.java b/adc-da-base/src/main/java/com/adc/da/util/DateUtils.java new file mode 100644 index 00000000..46d6dc7d --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/DateUtils.java @@ -0,0 +1,48 @@ +package com.adc.da.util; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class DateUtils extends org.apache.commons.lang3.time.DateUtils { + public static final String yyyy_MM_dd_EN = "yyyy-MM-dd"; + public static final String yyyy_MM_dd_HH_mm_ss_EN = "yyyy-MM-dd HH:mm:ss"; + public static final String yyyy_MM_dd_CN = "yyyy年MM月dd日"; + public static final String yyyy_MM_dd_HH_mm_ss_CN = "yyyy年MM月dd日HH时mm分ss秒"; + private static Map dateFormatMap = new HashMap(); + + public DateUtils() { + } + + public static DateFormat getDateFormat(String formatStr) { + DateFormat df = (DateFormat)dateFormatMap.get(formatStr); + if (df == null) { + df = new SimpleDateFormat(formatStr); + dateFormatMap.put(formatStr, df); + } + + return (DateFormat)df; + } + + public static String dateToString(Date date, String dateFormatStr) { + DateFormat format = getDateFormat(dateFormatStr); + return date != null ? format.format(date) : null; + } + + public static Date stringToDate(String dateTimeStr, String dateFormatStr) { + try { + if (dateTimeStr != null && !dateTimeStr.equals("")) { + DateFormat format = getDateFormat(dateFormatStr); + Date date = format.parse(dateTimeStr); + return date; + } else { + return null; + } + } catch (ParseException var4) { + throw new RuntimeException(var4); + } + } +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/Digests.java b/adc-da-base/src/main/java/com/adc/da/util/Digests.java new file mode 100644 index 00000000..c8404e2d --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/Digests.java @@ -0,0 +1,83 @@ +package com.adc.da.util; + +import org.apache.commons.lang3.Validate; +import java.io.IOException; +import java.io.InputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; + +public class Digests { + private static final String SHA1 = "SHA-1"; + private static final String MD5 = "MD5"; + private static SecureRandom random = new SecureRandom(); + + public Digests() { + } + + public static byte[] sha1(byte[] input) { + return digest(input, "SHA-1", (byte[])null, 1); + } + + public static byte[] sha1(byte[] input, byte[] salt) { + return digest(input, "SHA-1", salt, 1); + } + + public static byte[] sha1(byte[] input, byte[] salt, int iterations) { + return digest(input, "SHA-1", salt, iterations); + } + + private static byte[] digest(byte[] input, String algorithm, byte[] salt, int iterations){ + + try { + MessageDigest digest = MessageDigest.getInstance(algorithm); + if (salt != null) { + digest.update(salt); + } + + byte[] result = digest.digest(input); + + for(int i = 1; i < iterations; ++i) { + digest.reset(); + result = digest.digest(result); + } + return result; + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + } + + public static byte[] generateSalt(int numBytes) { + Validate.isTrue(numBytes > 0, "numBytes argument must be a positive integer (1 or larger)", (long)numBytes); + byte[] bytes = new byte[numBytes]; + random.nextBytes(bytes); + return bytes; + } + + public static byte[] md5(InputStream input) throws IOException { + return digest(input, "MD5"); + } + + public static byte[] sha1(InputStream input) throws IOException { + return digest(input, "SHA-1"); + } + + private static byte[] digest(InputStream input, String algorithm) throws IOException { + try { + MessageDigest messageDigest = MessageDigest.getInstance(algorithm); + int bufferLength = 8192; + byte[] buffer = new byte[bufferLength]; + + for(int read = input.read(buffer, 0, bufferLength); read > -1; read = input.read(buffer, 0, bufferLength)) { + messageDigest.update(buffer, 0, read); + } + + return messageDigest.digest(); + + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + } + + +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/Encodes.java b/adc-da-base/src/main/java/com/adc/da/util/Encodes.java new file mode 100644 index 00000000..ecd99a05 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/Encodes.java @@ -0,0 +1,92 @@ +package com.adc.da.util; + +import com.adc.da.exception.AdcDaBaseException; +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.codec.binary.Hex; +import org.apache.commons.lang3.StringEscapeUtils; + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; + +public class Encodes { + + private static final String DEFAULT_URL_ENCODING = "UTF-8"; + private static final char[] BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray(); + + public Encodes() { + } + + public static String encodeHex(byte[] input) { + return Hex.encodeHexString(input); + } + + public static byte[] decodeHex(String input) { + + try { + return Hex.decodeHex(input.toCharArray()); + } catch (DecoderException e) { + throw new AdcDaBaseException(e.getMessage()); + } + + } + + public static String encodeBase64(byte[] input) { + return Base64.encodeBase64String(input); + } + + public static String encodeUrlSafeBase64(byte[] input) { + return Base64.encodeBase64URLSafeString(input); + } + + public static byte[] decodeBase64(String input) { + return Base64.decodeBase64(input); + } + + public static String encodeBase62(byte[] input) { + char[] chars = new char[input.length]; + + for(int i = 0; i < input.length; ++i) { + chars[i] = BASE62[(input[i] & 255) % BASE62.length]; + } + + return new String(chars); + } + + public static String escapeHtml(String html) { + return StringEscapeUtils.escapeHtml4(html); + } + + public static String unescapeHtml(String htmlEscaped) { + return StringEscapeUtils.unescapeHtml4(htmlEscaped); + } + + public static String escapeXml(String xml) { + return StringEscapeUtils.escapeXml(xml); + } + + public static String unescapeXml(String xmlEscaped) { + return StringEscapeUtils.unescapeXml(xmlEscaped); + } + + public static String urlEncode(String part) { + try { + return URLEncoder.encode(part, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + + } + + public static String urlDecode(String part) { + try { + return URLDecoder.decode(part, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + + } + + +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/FileUtil.java b/adc-da-base/src/main/java/com/adc/da/util/FileUtil.java new file mode 100644 index 00000000..fb033767 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/FileUtil.java @@ -0,0 +1,253 @@ +package com.adc.da.util; + +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class FileUtil extends FileUtils { + + private static final int BUFF_SIZE = 1024; + private static Logger log = LoggerFactory.getLogger(FileUtil.class); + + public FileUtil() { + } + + public static void copyFile(String src, String target) { + InputStream in = null; + BufferedOutputStream out = null; + + try { + in = new BufferedInputStream(new FileInputStream(src)); + out = new BufferedOutputStream(new FileOutputStream(target)); + byte[] buffer = new byte[1024]; + + int len; + while((len = in.read(buffer, 0, 1024)) > 0) { + out.write(buffer, 0, len); + out.flush(); + } + } catch (IOException var9) { + var9.printStackTrace(); + } finally { + IOUtils.closeQuietly(in); + IOUtils.closeQuietly(out); + } + + } + + public static List readAsStringList(String fileName) { + List list = new ArrayList(); + BufferedReader reader = null; + FileInputStream fis = null; + + try { + File f = new File(fileName); + if (f.isFile() && f.exists()) { + fis = new FileInputStream(f); + reader = new BufferedReader(new InputStreamReader(fis, "UTF-8")); + + String line; + while((line = reader.readLine()) != null) { + if (!"".equals(line)) { + list.add(line); + } + } + } + } catch (Exception var18) { + log.error("readFile", var18); + } finally { + try { + if (reader != null) { + reader.close(); + } + } catch (IOException var17) { + log.error("InputStream关闭异常", var17); + } + + try { + if (fis != null) { + fis.close(); + } + } catch (IOException var16) { + log.error("FileInputStream关闭异常", var16); + } + + } + + return list; + } + + public static byte[] readFile(File file) { + byte[] bytes = null; + + try { + bytes = IOUtils.readFully(new FileInputStream(file)); + } catch (Exception var3) { + var3.printStackTrace(); + } + + return bytes; + } + + public static byte[] readFile(String fileName) { + return readFile(new File(fileName)); + } + + public static void writeFile(byte[] bytes, String outputFile) { + FileOutputStream os = null; + + try { + os = new FileOutputStream(outputFile); + os.write(bytes); + } catch (Exception var7) { + var7.printStackTrace(); + } finally { + IOUtils.closeQuietly(os); + } + + } + + public static File mkdir(String folderPath) { + File file = new File(folderPath); + if (!file.exists() || !file.isDirectory()) { + boolean success = false; + + do { + success = file.mkdirs(); + } while(success); + } + + return file; + } + + public static void delFolder(String folderPath) throws Exception { + delAllFile(folderPath); + File myFilePath = new File(folderPath); + myFilePath.delete(); + } + + public static boolean delAllFile(String path) throws Exception { + boolean flag = false; + File file = new File(path); + if (!file.exists()) { + return flag; + } else if (!file.isDirectory()) { + return flag; + } else { + String[] tempList = file.list(); + File temp = null; + + for(int i = 0; i < tempList.length; ++i) { + if (path.endsWith(File.separator)) { + temp = new File(path + tempList[i]); + } else { + temp = new File(path + File.separator + tempList[i]); + } + + if (temp.isFile()) { + temp.delete(); + } + + if (temp.isDirectory()) { + delAllFile(path + "/" + tempList[i]); + delFolder(path + "/" + tempList[i]); + flag = true; + } + } + + return flag; + } + } + + public static boolean delFile(String fileName) { + File file = new File(fileName); + if (!file.exists()) { + log.info(fileName + " 文件不存在!"); + return true; + } else { + return file.isFile() ? deleteFile(fileName) : deleteDirectory(fileName); + } + } + + public static boolean deleteFile(String fileName) { + File file = new File(fileName); + if (file.exists() && file.isFile()) { + if (file.delete()) { + log.info("删除单个文件 " + fileName + " 成功!"); + return true; + } else { + log.info("删除单个文件 " + fileName + " 失败!"); + return false; + } + } else { + log.info(fileName + " 文件不存在!"); + return true; + } + } + + public static boolean deleteDirectory(String dirName) { + String dirNames = dirName; + if (!dirName.endsWith(File.separator)) { + dirNames = dirName + File.separator; + } + + File dirFile = new File(dirNames); + if (dirFile.exists() && dirFile.isDirectory()) { + boolean flag = true; + File[] files = dirFile.listFiles(); + + for(int i = 0; i < files.length; ++i) { + if (files[i].isFile()) { + flag = deleteFile(files[i].getAbsolutePath()); + if (!flag) { + break; + } + } else if (files[i].isDirectory()) { + flag = deleteDirectory(files[i].getAbsolutePath()); + if (!flag) { + break; + } + } + } + + if (!flag) { + log.info("删除目录失败!"); + return false; + } else if (dirFile.delete()) { + log.info("删除目录 " + dirName + " 成功!"); + return true; + } else { + log.info("删除目录 " + dirName + " 失败!"); + return false; + } + } else { + log.info(dirNames + " 目录不存在!"); + return true; + } + } + + public static boolean exists(String path) { + return (new File(path)).exists(); + } + + public static void checkAndMkdirs(File file) { + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + + } + + public static String getFileExtension(String fileName) { + return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()); + } + + public static String getFileName(String fileName) { + return fileName.substring(0, fileName.lastIndexOf(".")); + } + + +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/IOUtils.java b/adc-da-base/src/main/java/com/adc/da/util/IOUtils.java new file mode 100644 index 00000000..b956a7e6 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/IOUtils.java @@ -0,0 +1,14 @@ +package com.adc.da.util; + +import java.io.IOException; +import java.io.InputStream; + +public class IOUtils extends org.apache.commons.io.IOUtils { + + + public static byte[] readFully(InputStream is) throws IOException { + byte[] bytes = new byte[is.available()]; + readFully(is, bytes); + return bytes; + } +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/IpUtil.java b/adc-da-base/src/main/java/com/adc/da/util/IpUtil.java new file mode 100644 index 00000000..af84d272 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/IpUtil.java @@ -0,0 +1,49 @@ +package com.adc.da.util; + +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletRequest; + +public class IpUtil { + private IpUtil() { + throw new IllegalStateException("Utility class"); + } + + private static boolean checkIp(String ip) { + return ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip); + } + + public static String getIpAddr(HttpServletRequest request) { + String ip = request.getHeader("X-Forwarded-For"); + if (checkIp(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + if (checkIp(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + + if (checkIp(ip)) { + ip = request.getHeader("HTTP_CLIENT_IP"); + } + + if (checkIp(ip)) { + ip = request.getHeader("HTTP_X_FORWARDED_FOR"); + } + + if (checkIp(ip)) { + ip = request.getRemoteAddr(); + } + } else if (ip.length() > 15) { + String[] ips = ip.split(","); + + for(int index = 0; index < ips.length; ++index) { + String strIp = ips[index]; + if (!"unknown".equalsIgnoreCase(strIp)) { + ip = strIp; + break; + } + } + } + + return StringUtils.trim(ip); + } +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/JwtSysUtils.java b/adc-da-base/src/main/java/com/adc/da/util/JwtSysUtils.java new file mode 100644 index 00000000..28780178 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/JwtSysUtils.java @@ -0,0 +1,79 @@ +package com.adc.da.util; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; + +/** + * token 工具类 + * + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

+ * Created at 2020/7/30 2:23 下午 + */ +@Component +public class JwtSysUtils { + + // 过期时间 + private static long expire = 6048000; + // 秘钥 + private static String secret = "HSyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9"; + + /** + * 创建一个token + * + * @param userId + * @return + */ + public String generateToken(String userId) { + Date now = new Date(); + Date expireDate = new Date(now.getTime() + expire); + return Jwts.builder().setHeaderParam("type", "JWT").setSubject(userId).setIssuedAt(now) + .setExpiration(expireDate).signWith( + SignatureAlgorithm.HS512, secret).compact(); + } + + /** + * 解析token + */ + public Claims getClaimsByToken(String token) { + Claims claims; + try { + claims = Jwts.parser() + .setSigningKey(secret) // 设置标识名 + .parseClaimsJws(token) //解析token + .getBody(); + } catch (ExpiredJwtException e) { + claims = e.getClaims(); + } + return claims; + } + + public String getUserIdByToken(){ + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + String user = ""; + if(attributes != null){ + HttpServletRequest request = attributes.getRequest(); + if(StringUtils.isNotBlank(request.getHeader("token"))){ + Claims claim = getClaimsByToken(request.getHeader("token")); + user = claim.getSubject(); + }else { + user = "chenchunmei"; + } + } + return user; + } + +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/LoginUserUtil.java b/adc-da-base/src/main/java/com/adc/da/util/LoginUserUtil.java new file mode 100644 index 00000000..ab855e04 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/LoginUserUtil.java @@ -0,0 +1,40 @@ +package com.adc.da.util; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.UnavailableSecurityManagerException; +import org.apache.shiro.session.InvalidSessionException; +import org.apache.shiro.subject.Subject; + +import java.util.Map; + +public class LoginUserUtil { + /** + * 获取当前登录用户ID + * + */ + public static String getUserId() { + return UserSysUtils.getUserId(); + } + + public static String getUserParamValue() { + String paramValue = null; + try { + Subject subject = SecurityUtils.getSubject(); + Object object=subject.getPrincipal(); + if(object!=null){ + String json = JSONObject.toJSONString(object); + if(json!=null && json.length()>0){ + Map userInfo=JSONObject.parseObject(json, Map.class); + paramValue=userInfo.get("paramValue").toString(); + } + } + } catch (UnavailableSecurityManagerException e) { + } catch (InvalidSessionException e) { + } + return paramValue; + } + + +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/MD5Util.java b/adc-da-base/src/main/java/com/adc/da/util/MD5Util.java new file mode 100644 index 00000000..979f1ffe --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/MD5Util.java @@ -0,0 +1,71 @@ +package com.adc.da.util; + + +import java.security.MessageDigest; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * 采用MD5加密解密 + * @author tfq + * @datetime 2011-10-13 + */ +public class MD5Util { + + /*** + * MD5加码 生成32位md5码 + */ + public static String string2MD5(String inStr){ + MessageDigest md5 = null; + try{ + md5 = MessageDigest.getInstance("MD5"); + }catch (Exception e){ + System.out.println(e.toString()); + e.printStackTrace(); + return ""; + } + char[] charArray = inStr.toCharArray(); + byte[] byteArray = new byte[charArray.length]; + + for (int i = 0; i < charArray.length; i++) + byteArray[i] = (byte) charArray[i]; + byte[] md5Bytes = md5.digest(byteArray); + StringBuffer hexValue = new StringBuffer(); + for (int i = 0; i < md5Bytes.length; i++){ + int val = ((int) md5Bytes[i]) & 0xff; + if (val < 16) + hexValue.append("0"); + hexValue.append(Integer.toHexString(val)); + } + return hexValue.toString(); + + } + + /** + * 加密解密算法 执行一次加密,两次解密 + */ + public static String convertMD5(String inStr){ + + char[] a = inStr.toCharArray(); + for (int i = 0; i < a.length; i++){ + a[i] = (char) (a[i] ^ 't'); + } + String s = new String(a); + return s; + + } + + // 测试主函数 + public static void main(String args[]) { + /* String s = new String("tangfuqiang"); + System.out.println("原始:" + s); + System.out.println("MD5后:" + string2MD5(s)); + + System.out.println("加密的:" + convertMD5(s)); + + System.out.println("解密的:" + convertMD5(convertMD5(s)));*/ + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH"); + String time = df.format(new Date()); + System.out.println(time); + } +} \ No newline at end of file diff --git a/adc-da-base/src/main/java/com/adc/da/util/PasswordUtils.java b/adc-da-base/src/main/java/com/adc/da/util/PasswordUtils.java new file mode 100644 index 00000000..2fe7a487 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/PasswordUtils.java @@ -0,0 +1,23 @@ +package com.adc.da.util; + +import cn.hutool.crypto.digest.DigestAlgorithm; +import cn.hutool.crypto.digest.Digester; + +public class PasswordUtils { + + public PasswordUtils() { + } + + public static String encryptPassword(String plainPassword) { + byte[] salt = Digests.generateSalt(8); + byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, 1024); + return Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword); + } + + public static boolean validatePassword(String plainPassword, String password) { + byte[] salt = Encodes.decodeHex(password.substring(0, 16)); + byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, 1024); + return password.equals(Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword)); + } + +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/RequestUtils.java b/adc-da-base/src/main/java/com/adc/da/util/RequestUtils.java new file mode 100644 index 00000000..884b779f --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/RequestUtils.java @@ -0,0 +1,35 @@ +package com.adc.da.util; + +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletRequest; + +public class RequestUtils { + public static final String LOGIN_USER = "LOGIN_USER"; + public static final String LOGIN_USER_ID = "LOGIN_USER_ID"; + public static final String LOGIN_ROLE_ID = "LOGIN_ROLE_ID"; + + private RequestUtils() { + throw new IllegalStateException("RequestUtils"); + } + + public static String getClientIp(HttpServletRequest request) { + String remoteAddr = ""; + if (request != null) { + remoteAddr = request.getHeader("X-FORWARDED-FOR"); + if (StringUtils.isEmpty(remoteAddr)) { + remoteAddr = request.getRemoteAddr(); + } + } + + return remoteAddr; + } + + public static String getLoginUserId(HttpServletRequest request) { + return (String)request.getSession().getAttribute("LOGIN_USER_ID"); + } + + public static String getLoginRoleId(HttpServletRequest request) { + return (String)request.getSession().getAttribute("LOGIN_ROLE_ID"); + } +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/SpringContextHolder1.java b/adc-da-base/src/main/java/com/adc/da/util/SpringContextHolder1.java new file mode 100644 index 00000000..a1de3346 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/SpringContextHolder1.java @@ -0,0 +1,47 @@ +package com.adc.da.util; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringContextHolder1 implements ApplicationContextAware { + + + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + + /** + * 获取applicationContext + * @return + */ + public static ApplicationContext getApplicationContext() { + return applicationContext; + } + + /** + * 通过name获取 Bean. + * @param name 参数传入要获取的实例的类名 首字母小写,这是默认的 + * @return + */ + public static Object getBean(String name){ + return getApplicationContext().getBean(name); + } + + /** + * 通过class获取Bean. + * @param clazz + * @param + * @return + */ + public static T getBean(Class clazz){ + return getApplicationContext().getBean(clazz); + } + + +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/UUIDUtils.java b/adc-da-base/src/main/java/com/adc/da/util/UUIDUtils.java new file mode 100644 index 00000000..48ee3cbe --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/UUIDUtils.java @@ -0,0 +1,78 @@ +package com.adc.da.util; + + + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.RandomUtil; +import org.springframework.beans.factory.annotation.Value; + +public class UUIDUtils { + + public static Snowflake snowflake; + + public static Snowflake getSnowflake() { + return snowflake; + } + + /** + * 服务编码 + */ + private static long serverCode; + + /** + * 中心端编码 + * + */ + private static long appCenter; + + @Value("${application.code}") + public static void setServerCode(long serverCode) { + UUIDUtils.serverCode = serverCode; + } + + @Value("${application.center}") + public static void setAppCenter(long appCenter) { + UUIDUtils.appCenter = appCenter; + } + + + public static void setSnowflake(Snowflake snowflake) { + IdUtil.getSnowflake(serverCode,appCenter); + } + + public static String randomUUID10() { + return RandomUtil.randomString(10); + } + + public static String randomUUID20() { + return RandomUtil.randomString(20); + } + + public static String randomUUID(int length) { + return RandomUtil.randomString(length); + } + + public static String randomSnowflakeID(){ + return snowflake.nextIdStr(); + } + + + public static String getUUIDPath(String uuid){ + StringBuilder builder=new StringBuilder(); + builder.append("/"); + builder.append((uuid.substring(0, 3).hashCode())%100+"").append("/"); + builder.append((uuid.substring(7,10).hashCode())%100+"").append("/"); + builder.append((uuid.substring(11,14).hashCode())%100+"").append("/"); + return builder.toString(); + } + + public static String getAttTable(){ + int nextInt = RandomUtil.randomInt(10)+1; + StringBuilder builder=new StringBuilder(); + builder.append("ATT_FILE_").append(String.format("%02d", nextInt)); + return builder.toString(); + } + + +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/UserSysUtils.java b/adc-da-base/src/main/java/com/adc/da/util/UserSysUtils.java new file mode 100644 index 00000000..c4ea9645 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/UserSysUtils.java @@ -0,0 +1,97 @@ +package com.adc.da.util; + +import com.google.common.collect.Maps; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.UnavailableSecurityManagerException; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.session.InvalidSessionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.Map; + +public class UserSysUtils { + + private UserSysUtils() { + super(); + } + + private static Logger logger = LoggerFactory.getLogger(UserSysUtils.class); + + /** + * 当前登陆用户 + */ + public static final String CURRENT_USER = "currentUser"; + + /** + * 角色信息 + */ + public static final String CACHE_ROLE_LIST = "roleList"; + /** + * 菜单信息 + */ + public static final String CACHE_MENU_LIST = "menuList"; + public static final String CACHE_MENU_TREE = "menuTree"; + public static final String CACHE_AREA_LIST = "areaList"; + public static final String CACHE_OFFICE_LIST = "officeList"; + + /** + * @see JwtSysUtils + */ + private static JwtSysUtils jwtUtils = SpringContextHolder1.getBean(JwtSysUtils.class); + + /** + * 退出 + */ + public static void logout() { + try { + SecurityUtils.getSubject().logout(); + } catch (UnavailableSecurityManagerException e) { + logger.error(e.getMessage(),e); + } catch (InvalidSessionException e) { + logger.error(e.getMessage(),e); + } + } + + + /** + * 获取当前登陆用户ID + * @throws Exception + */ + public static String getUserId() { + return jwtUtils.getUserIdByToken(); + } + + + public static void flush() { + CacheUtils.removeCache(CURRENT_USER); + } + + private static final class CacheUtils { + + public static Object getCache(String key) { + return getCache(key, null); + } + + public static Object getCache(String key, Object defaultValue) { + Object obj = getCacheMap().get(key); + return obj == null ? defaultValue : obj; + } + + public static void putCache(String key, Object value) { + getCacheMap().put(key, value); + } + + public static void removeCache(String key) { + getCacheMap().remove(key); + } + + public static Map getCacheMap() { + Map map = Maps.newHashMap(); + return map; + } + } +} \ No newline at end of file diff --git a/adc-da-base/src/main/java/com/adc/da/util/ValidateDatas.java b/adc-da-base/src/main/java/com/adc/da/util/ValidateDatas.java new file mode 100644 index 00000000..350dcce9 --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/ValidateDatas.java @@ -0,0 +1,94 @@ +package com.adc.da.util; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ValidateDatas { + + /** + * @param 待验证的字符串 + * @return 如果是符合邮箱格式的字符串,返回true,否则为false + */ + public static boolean isEmail(String str) { + //String regex = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}"; + String regex = "([a-zA-Z0-9_-])*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+(com|cn|net|org)"; + return match(regex, str); + } + + /** + * 汉字和字母 + * @param str + * @return + */ + public static boolean isenOrch(String str) { + String pattern = "[\u4e00-\u9fa5A-Za-z]+"; + return match(pattern, str); + } + + /** + * 汉字,字母,括号,-,下划线 + * @param str + * @return + */ + public static boolean isDuty(String str) { + String pattern = "[\u4e00-\u9fa5A-Za-z0-9_\\-\\(\\)\\(\\)]+"; + return match(pattern, str); + } + + /** + * 是否是手机号 + * @param str + * @return + */ + public static boolean isPhone(String str) { + String pattern = "0?(13|14|15|18)[0-9]{9}"; + return match(pattern, str); + } + + /** + * @param regex 正则表达式字符串 + * @param str 要匹配的字符串 + * @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回 false; + */ + private static boolean match(String regex ,String str){ + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + public static boolean isNumber(String str) { + String pattern = "-?[1-9]\\d*"; + return match(pattern, str); + } + + + /** + * 汉字、字母、() + * + * @MethodName:isLetterOrChineseOrChar1 + * @author: DuYunbao + * @date: 2018/5/30 15:53 + */ + public static boolean isLetterOrChineseOrChar1(String str) { + String pattern = "^[\\u4E00-\\u9FA5A-Za-z\\(\\)]+$"; + return !str.matches(pattern); + } + + /** + * 汉字、数字、字母、()、-、下划线 + * + * @MethodName:isChineseOrNumberOrLetterOrUnderlineOrChar + * @author: DuYunbao + * @date: 2018/5/30 16:45 + */ + public static boolean isChineseOrNumberOrLetterOrUnderlineOrChar(String str) { + String regex = "^[\\u4E00-\\u9FA5A-Za-z0-9_\\-\\(\\)]+$"; + return !str.matches(regex); + } + + + public static void main(String[] args) { + String aa = "9aa"; + System.out.println(isNumber(aa)); + } +} diff --git a/adc-da-base/src/main/java/com/adc/da/util/WaterMarkUtil.java b/adc-da-base/src/main/java/com/adc/da/util/WaterMarkUtil.java new file mode 100644 index 00000000..b56ff5ec --- /dev/null +++ b/adc-da-base/src/main/java/com/adc/da/util/WaterMarkUtil.java @@ -0,0 +1,167 @@ +package com.adc.da.util; + +import com.itextpdf.text.BaseColor; +import com.itextpdf.text.Element; +import com.itextpdf.text.Rectangle; +import com.itextpdf.text.pdf.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.swing.*; +import java.awt.*; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.lang.reflect.Field; + +/** + * @Description:水印 + * @Author: super_liu + * date: 2020/1/10 15:42 + */ +public class WaterMarkUtil { + + private static final Logger logger = LoggerFactory.getLogger(WaterMarkUtil.class); + + /** + * @param inputFile 你的PDF文件地址 + * @param outputFile 添加水印后生成PDF存放的地址 + * @param waterMarkName 你的水印 + * @return + */ + public static boolean waterMark(String inputFile, + String outputFile, String waterMarkName) { + try { + PdfReader reader = new PdfReader(inputFile); + Field f = PdfReader.class.getDeclaredField("encrypted"); + f.setAccessible(true); + f.set(reader, Boolean.FALSE); + PdfStamper stamper = new PdfStamper(reader, new FileOutputStream( + outputFile)); + //这里的字体设置比较关键,这个设置是支持中文的写法 + BaseFont base = BaseFont.createFont("STSong-Light", + "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体 + int total = reader.getNumberOfPages() + 1; + + PdfContentByte under; + Rectangle pageRect = null; + for (int i = 1; i < total; i++) { + pageRect = stamper.getReader(). + getPageSizeWithRotation(i); + // 计算水印X,Y坐标 +// float x = pageRect.getWidth()/10; +// float y = pageRect.getHeight()/10-10; + // 获得PDF最顶层 + under = stamper.getOverContent(i); + under.saveState(); + + under.restoreState(); + under.beginText(); + under.setFontAndSize(base, 30); + under.setTextMatrix(30, 30); + under.setColorFill(BaseColor.LIGHT_GRAY); + // 设置透明度为0.2 + // set Transparency + PdfGState gs = new PdfGState(); + gs.setFillOpacity(0.3f); + under.setGState(gs); + for (int y = 0; y < 50; y++) { + for (int x = 0; x < 50; x++) { + // 水印文字成45度角倾斜 x位置 y位置 角度 + under.showTextAligned(Element.ALIGN_LEFT + , waterMarkName, 40 + 120 * x, 100 * y, 40); + } + } + + // 添加水印文字 + under.endText(); + under.setLineWidth(1f); + under.stroke(); + } + stamper.close(); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + + + public static boolean waterMarkNew(String inputFile, String outputFile, String waterMarkName) { + try { + logger.debug("水印追加文件:"+inputFile+" "+outputFile); + FileInputStream is = new FileInputStream(inputFile); + PdfReader reader = new PdfReader(is); + Field f = PdfReader.class.getDeclaredField("encrypted"); + f.setAccessible(true); + f.set(reader, Boolean.FALSE); + PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile)); + + // 获取总页数 +1, 下面从1开始遍历 + int total = reader.getNumberOfPages() + 1; + //这里的字体设置比较关键,这个设置是支持中文的写法 + BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体 + + // 间隔 + int interval = 5; + // 获取水印文字的高度和宽度 + int textH = 0, textW = 0; + JLabel label = new JLabel(); + label.setText(waterMarkName); + FontMetrics metrics = label.getFontMetrics(label.getFont()); + textH = metrics.getHeight(); + textW = metrics.stringWidth(label.getText()); + + // 设置水印透明度 + PdfGState gs = new PdfGState(); + gs.setFillOpacity(0.2f); + gs.setStrokeOpacity(0.2f); + + Rectangle pageSizeWithRotation = null; + PdfContentByte content = null; + for (int i = 1; i < total; i++) { + // 在内容上方加水印 + content = stamper.getOverContent(i); + // 在内容下方加水印 + // content = stamper.getUnderContent(i); + content.saveState(); + content.setGState(gs); + + // 设置字体和字体大小 + content.beginText(); + content.setFontAndSize(base, 19); + + // 获取每一页的高度、宽度 + pageSizeWithRotation = reader.getPageSizeWithRotation(i); + float pageHeight = pageSizeWithRotation.getHeight(); + float pageWidth = pageSizeWithRotation.getWidth(); + int parityNum = 0; + // 根据纸张大小多次添加, 水印文字成30度角倾斜 + for (int height = interval + textH; height < pageHeight; height = height + textH * 6) { + parityNum ++; + for (int width = interval + textW; width < pageWidth + textW; width = width + textW * 2) { + if(parityNum%2==0){ + width= width + 50; + height = height +50; + content.showTextAligned(Element.ALIGN_LEFT, waterMarkName, width - textW, height - textH, 30); + }else{ + content.showTextAligned(Element.ALIGN_LEFT, waterMarkName, width - textW, height - textH, 30); + } + + } + } + + content.endText(); + } + + // 关流 + stamper.close(); + reader.close(); + return true; + } catch (Exception e) { + logger.error(e.getMessage(),e); + return false; + } + } + +} diff --git a/adc-da-convert/pom.xml b/adc-da-convert/pom.xml new file mode 100644 index 00000000..00069d91 --- /dev/null +++ b/adc-da-convert/pom.xml @@ -0,0 +1,154 @@ + + + + foton-slrs-system-rest + com.adc + 3.0.0 + + 4.0.0 + + adc-da-convert + + + + com.adc + adc-da-base + 3.0.0 + + + com.adc + adc-da-sys + 3.0.0 + + + + + com.artofsolving + jodconverter + system + 2.2.2 + ${basedir}/src/main/lib/jodconverter-2.2.2.jar + + + com.aspose + aspose-words + 15.8.0 + system + ${basedir}/src/main/lib/aspose-words-15.8.0-jdk16.jar + + + com.aspose + aspose-cells + 8.5.2 + system + ${basedir}/src/main/lib/aspose-cells-8.5.2.jar + + + com.aspose + aspose-slides + 16.7.0 + system + ${basedir}/src/main/lib/aspose.slides-16.7.0.jar + + + + com.itextpdf + itextpdf + 5.5.13 + + + + + com.artofsolving + jodconverter + system + 2.2.2 + ${basedir}/src/main/lib/jodconverter-2.2.2.jar + + + org.jodconverter + jodconverter-core + 4.3.0 + + + org.jodconverter + jodconverter-spring-boot-starter + 4.3.0 + + + org.jodconverter + jodconverter-local + 4.3.0 + + + + org.openoffice + juh + 4.1.2 + + + org.openoffice + jurt + 4.1.2 + + + org.openoffice + ridl + 4.1.2 + + + org.openoffice + unoil + 4.1.2 + + + + + + com.itextpdf + kernel + 7.0.4 + + + com.itextpdf + io + 7.0.4 + + + com.itextpdf + layout + 7.0.4 + + + com.itextpdf + forms + 7.0.4 + + + com.itextpdf + pdfa + 7.0.4 + + + com.itextpdf + pdftest + 7.0.4 + + + org.dom4j + dom4j + 2.0.0 + + + com.adc + adc-da-slrs + 3.0.0 + compile + + + + + + \ No newline at end of file diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/common/AsposeOfficeConvertUtils.java b/adc-da-convert/src/main/java/com/adc/da/convert/common/AsposeOfficeConvertUtils.java new file mode 100644 index 00000000..7fb1ee8a --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/common/AsposeOfficeConvertUtils.java @@ -0,0 +1,37 @@ +package com.adc.da.convert.common; + +import org.apache.commons.lang.StringUtils; + +public class AsposeOfficeConvertUtils { + + public static void convertOfficeFileToPDF(String fileType,String attFilePath,String savePdfPath) throws Exception { + if(StringUtils.isNotBlank(fileType)){ + //去掉文件类型中的点 + fileType = fileType.replace(".",""); + fileType = fileType.toUpperCase(); + switch (fileType){ + case "DOC": + WordTPdfUtils.doc2pdf(attFilePath,savePdfPath); + break; + case "DOCX": + WordTPdfUtils.doc2pdf(attFilePath,savePdfPath); + break; + case "PPT": + SlidesTPdfUtils.ppt2pdf(attFilePath,savePdfPath); + break; + case "PPTX": + SlidesTPdfUtils.ppt2pdf(attFilePath,savePdfPath); + break; + case "XLS": + ExcelTPdfUtils.excel2pdf(attFilePath,savePdfPath); + break; + case "XLSX": + ExcelTPdfUtils.excel2pdf(attFilePath,savePdfPath); + break; + } + } + + } + + +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/common/ConvertStateEnum.java b/adc-da-convert/src/main/java/com/adc/da/convert/common/ConvertStateEnum.java new file mode 100644 index 00000000..9f573722 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/common/ConvertStateEnum.java @@ -0,0 +1,19 @@ +package com.adc.da.convert.common; + +public enum ConvertStateEnum { + NO_CONVERT(0,"未转换"),CONVERING(1,"转换中"),CONVERT_SUCCESS(2,"转换成功"),CONVERT_ERROR(3,"转换失败"); + + private int value; + private String lable; + + private ConvertStateEnum(int value, String lable) { + this.value = value; + this.lable = lable; + } + public int getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/common/DocConverterPdf.java b/adc-da-convert/src/main/java/com/adc/da/convert/common/DocConverterPdf.java new file mode 100644 index 00000000..52092bc8 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/common/DocConverterPdf.java @@ -0,0 +1,308 @@ +package com.adc.da.convert.common; + +import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; +import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter; +import org.apache.commons.lang.StringUtils; +import org.jodconverter.core.DocumentConverter; +import org.jodconverter.core.office.OfficeException; +import org.jodconverter.core.office.OfficeManager; +import org.jodconverter.core.office.OfficeUtils; +import org.jodconverter.local.JodConverter; +import org.jodconverter.local.office.LocalOfficeManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.io.*; +import java.net.ConnectException; + +public class DocConverterPdf { + + private static final Logger logger = LoggerFactory.getLogger(DocConverterPdf.class); + + @Autowired + private DocumentConverter converter; + + private static final int ENVIRONMENT = 1;// 环境 1:windows 2:linux + private String fileString;// (只涉及pdf2swf路径问题) + private String outputPath = "";// 输入路径 ,如果不设置就输出在默认的位置 + private String fileName; + private File pdfFile; + private File convertPdfFile; + private File swfFile; + private File docFile; + private String filesType; + String waterPdfPath; + + private String convertHost; + + public DocConverterPdf(String fileString, String fileType) { + ini(fileString,fileType); + } + + /** + * 重新设置file + * + * @param fileString + */ + public void setFile(String fileString,String fileType) { + ini(fileString,fileType); + } + + /** + * 初始化 + * + * @param fileString + */ + private void ini(String fileString,String fileType) { + this.fileString = fileString; + fileName = fileString.substring(0, fileString.lastIndexOf(".")); + if(".doc".equals(fileType.toLowerCase()) || ".docx".equals(fileType.toLowerCase()) || ".xlsx".equals(fileType.toLowerCase()) || ".xls".equals(fileType.toLowerCase()) || ".ppt".equals(fileType.toLowerCase()) || ".pptx".equals(fileType.toLowerCase())){ + docFile = new File(fileString); + filesType = fileType.toLowerCase(); + convertPdfFile=new File(fileName+"_C"+ ".pdf"); + pdfFile = new File(fileName + ".pdf"); + swfFile = new File(fileName + ".swf"); + } else if (".pdf".equals(fileType)){ + pdfFile = new File(fileName + ".pdf"); + swfFile = new File(fileName + ".swf"); + } + } + + /** + * openOffice目录,window 可能在C://Program Files (x86)//OpenOffice 4 + */ + private static final String openOfficeHome = "/opt/openoffice4"; + + /** + * openOffice端口 + */ + private static final int openOfficePort = 8100; + + /** + * + * @param input 初始文件的路径,例:C:\Users\...\Desktop\test\1.doc + * @param output 转换后的存储路径,例:C:\Users\...\Desktop\test\ + */ + public void convert(File input , File output){ + + if (!input.exists()){ + System.out.println("源文件不存在"); + return; + } + SocketOpenOfficeConnection connection = new SocketOpenOfficeConnection("10.100.5.122", 8100); +// SocketOpenOfficeConnection connection = new SocketOpenOfficeConnection("10.10.66.176", 8100); + try { + connection.connect(); + System.out.println("获取连接成功!"); + } catch (ConnectException e) { + System.out.println("获取连接失败!"); + e.printStackTrace(); + } +// OpenOfficeDocumentConverter converter = new OpenOfficeDocumentConverter(connection); + StreamOpenOfficeDocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection); + System.out.println("开始转换!"); + converter.convert(input, output); + System.out.println("转换成功!"); + System.out.println("关闭连接!"); + connection.disconnect(); + } + + /** + * 转化文档 + * @param input + * @param output + */ + public void convertFile(File input , File output) throws OfficeException { + //转换,自动识别转化类型 + OfficeManager officeManager = LocalOfficeManager.builder() + .install() + .officeHome(openOfficeHome) + .build(); + try { + // Start an office process and connect to the started instance (on port 2002). + officeManager.start(); + // Convert + JodConverter + .convert(input) + .to(output) + .execute(); + } finally { + // Stop the office process + OfficeUtils.stopQuietly(officeManager); + } + } + + /** + * 转为PDF + * + * @param + */ + private void doc2pdf() throws Exception { + if (!pdfFile.exists()) { + logger.info("转换服务地址接口:"+convertHost); + InputStream in = null; + OutputStream out = null; + try { +// in = new FileInputStream(docFile); +// out = new FileOutputStream(convertPdfFile); + convert(docFile,convertPdfFile); +// converter.convert(in).as(DefaultDocumentFormatRegistry.getFormatByMediaType(filesType)). +// to(out).as(DefaultDocumentFormatRegistry.PDF); + // close the connection + // 开始设置PDF文档相关属性保证其安全性 + logger.info("开始设置转换后的PDF文件安全性相关设置"); + PDFEditUtils.setPDFFileSecurity(pdfFile.getAbsolutePath(),convertPdfFile.getAbsolutePath()); + logger.info("****pdf转换成功,PDF输出:" + pdfFile.getPath()+ "****"); + } catch (java.net.ConnectException e) { + logger.error(e.getMessage(),e); + logger.info("****pdf转换器异常,openoffice服务未启动!****"); + throw e; + } catch (Exception e) { + logger.error(e.getMessage(),e); + throw e; + } + } else { + logger.info("****已经转换为pdf,不需要再进行转化****"); + } + } + + /** + * 转换成 swf + */ + @SuppressWarnings("unused") + /*private void pdf2swf(String fileType) throws Exception { + Runtime r = Runtime.getRuntime(); + if (!swfFile.exists()) { + if (pdfFile.exists()) { + if (ENVIRONMENT == 1) {// windows环境处理 + try { + //String paperSwfFile = swfFile.getPath().replace(".swf","%.swf"); + Process p = r.exec("G:/swftTools/pdf2swf.exe "+ waterPdfPath + " -o "+ swfFile.getPath() + " -f -T 9 -t -s languagedir=G:/xpdf/xpdf-chinese-simplified"); + logger.info("****swf转换成功,文件输出:" + swfFile.getPath() + "****"); + if(".doc".equals(fileType) || ".docx".equals(fileType)){ + *//*if (pdfFile.exists()) { + pdfFile.delete(); + }*//* + } + } catch (IOException e) { + logger.error(e.getMessage(),e); + throw e; + } + } else if (ENVIRONMENT == 2) {// linux环境处理 + try { + Process p = r.exec("pdf2swf " + pdfFile.getPath() + + " -o " + swfFile.getPath() + " -f -T 9 -t -s storeallcharacters"); + logger.info("****swf转换成功,文件输出:" + swfFile.getPath() + "****"); + if (pdfFile.exists()) { + if(!pdfFile.delete()){ + logger.error("文件删除失败!!!"); + } + } + } catch (Exception e) { + logger.error(e.getMessage(),e); + throw e; + } + } + } else { + logger.info("****pdf不存在,无法转换****"); + } + } else { + logger.info("****swf已经存在不需要转换****"); + } + }*/ + + static String loadStream(InputStream in) throws IOException { + + int ptr = 0; + in = new BufferedInputStream(in); + StringBuilder buffer = new StringBuilder(); + while ((ptr = in.read()) != -1) { + buffer.append((char) ptr); + } + + return buffer.toString(); + } + /** + * 转换主方法 + */ + @SuppressWarnings("unused") + public File conver(String fileType) { + if (ENVIRONMENT == 1) { + logger.info("****swf转换器开始工作,当前设置运行环境windows****"); + } else { + logger.info("****swf转换器开始工作,当前设置运行环境linux****"); + } + try { + if(StringUtils.isNotBlank(fileType)){ + fileType = fileType.toUpperCase(); + if(".DOC".equals(fileType) || ".DOCX".equals(fileType) || ".XLSX".equals(fileType) || ".XLS".equals(fileType) || ".PPT".equals(fileType) || ".PPTX".equals(fileType)){ + doc2pdf(); + /*pdf2swf(fileType);*/ + } else if (".PDF".equals(fileType)){ + /*pdf2swf(fileType);*/ + } + }else{ + logger.error("文件类型后缀获取失败,请检查文件名称格式是否正确"); + } + } catch (Exception e) { + logger.error(e.getMessage(),e); + return new File(""); + } + + return pdfFile; + + } + + /** + * 返回文件路径 + * + * @param + */ + public String getswfPath() { + if (swfFile.exists()) { + String tempString = swfFile.getPath(); + tempString = tempString.replaceAll("\\\\", "/"); + return tempString; + } else { + return ""; + } + + } + + public String getpdfPath() { + if (pdfFile!= null && !pdfFile.getPath().isEmpty()) { + String tempString = pdfFile.getPath(); + tempString = tempString.replaceAll("\\\\", "/"); + return tempString; + } else { + return ""; + } + + } + + /** + * 设置输出路径 + */ + public void setOutputPath(String outputPath) { + this.outputPath = outputPath; + if (!outputPath.equals("")) { + String realName = fileName.substring(fileName.lastIndexOf("/"), fileName.lastIndexOf(".")); + //TODO 此处的if判断执行的代码逻辑完全一样, 因此将其判断注释掉,直接执行 +/* if (outputPath.charAt(outputPath.length()) == '/') { + swfFile = new File(outputPath + realName + ".swf"); + } else { + swfFile = new File(outputPath + realName + ".swf"); + }*/ + swfFile = new File(outputPath + realName + ".swf"); + } + } + + public String getConvertHost() { + return convertHost; + } + + public void setConvertHost(String convertHost) { + this.convertHost = convertHost; + } +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/common/ExcelTPdfUtils.java b/adc-da-convert/src/main/java/com/adc/da/convert/common/ExcelTPdfUtils.java new file mode 100644 index 00000000..9d5bbfe7 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/common/ExcelTPdfUtils.java @@ -0,0 +1,122 @@ +package com.adc.da.convert.common; + +import com.aspose.cells.PdfSaveOptions; +import com.aspose.cells.Workbook; +import com.aspose.cells.License; +import com.aspose.slides.Presentation; +import com.aspose.slides.SaveFormat; +import org.aspectj.weaver.ast.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; + +public class ExcelTPdfUtils { + + private static final Logger logger = LoggerFactory.getLogger(WordTPdfUtils.class); + private static final String myLicense = "Aspose.Total for JavaAspose.Words for JavaEnterprise20991231209912318bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU="; + + /** + * 获取license 去除水印 + * @return + */ + public static boolean getLicense() { + boolean result = false; + try { + ByteArrayInputStream is = new ByteArrayInputStream(myLicense.getBytes()); + License aposeLic = new License(); + aposeLic.setLicense(is); + result = true; + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return result; + } + + /** + * excel 转为pdf 输出。 + * + * @param sourceFilePath excel文件 + * @param desFilePathd pad 输出文件目录 + */ + public static void excel2pdf(String sourceFilePath, String desFilePathd ) throws Exception { + if (!getLicense()) { // 验证License 若不验证则转化出的pdf文档会有水印产生 + return; + } + File file = new File(desFilePathd); // 新建一个空白pdf文档 + FileOutputStream fileOS = null; + try { + fileOS = new FileOutputStream(desFilePathd); + long old = System.currentTimeMillis(); + Workbook wb = new Workbook(sourceFilePath);// 原始excel路径 + PdfSaveOptions pdfSaveOptions = new PdfSaveOptions(); + pdfSaveOptions.setOnePagePerSheet(true); + int[] autoDrawSheets={3}; + //当excel中对应的sheet页宽度太大时,在PDF中会拆断并分页。此处等比缩放。 +// autoDraw(wb,autoDrawSheets); + int[] showSheets={0}; + //隐藏workbook中不需要的sheet页。 + printSheetPage(wb,showSheets); + wb.save(fileOS, pdfSaveOptions); + fileOS.flush(); + fileOS.close(); + long now = System.currentTimeMillis(); + logger.info("转换文档:"+sourceFilePath+" "+"共耗时:" + ((now - old) / 1000.0) + "秒"); + } catch (Exception e) { + if(fileOS!=null){ + fileOS.flush(); + fileOS.close(); + } + file.delete(); + logger.error("Document Convert Error:"+sourceFilePath); + logger.error(e.getMessage(),e); + throw new Exception("Document Convert Error:"+sourceFilePath); + } + } + + + /** + * 设置打印的sheet 自动拉伸比例 + * @param wb + * @param page 自动拉伸的页的sheet数组 + */ + public static void autoDraw(Workbook wb,int[] page){ + if(null!=page&&page.length>0){ + for (int i = 0; i < page.length; i++) { + wb.getWorksheets().get(i).getHorizontalPageBreaks().clear(); + wb.getWorksheets().get(i).getVerticalPageBreaks().clear(); + } + } + } + + + /** + * 隐藏workbook中不需要的sheet页。 + * @param wb + * @param page 显示页的sheet数组 + */ + public static void printSheetPage(Workbook wb,int[] page){ + for (int i= 1; i < wb.getWorksheets().getCount(); i++) { + wb.getWorksheets().get(i).setVisible(false); + } + if(null==page||page.length==0){ + wb.getWorksheets().get(0).setVisible(true); + }else{ + for (int i = 0; i < page.length; i++) { + wb.getWorksheets().get(i).setVisible(true); + } + } + } + + public static void main(String[] args) { + String sourceFilePath="E:\\EXCELTEXT\\一阶段问题清单426.xlsx"; + String desFilePath="E:\\EXCELTEXT\\一阶段问题清单426.pdf"; + try { + excel2pdf(sourceFilePath, desFilePath); + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + } + + +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/common/PDFEditUtils.java b/adc-da-convert/src/main/java/com/adc/da/convert/common/PDFEditUtils.java new file mode 100644 index 00000000..515b6106 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/common/PDFEditUtils.java @@ -0,0 +1,34 @@ +package com.adc.da.convert.common; + + +import com.itextpdf.kernel.pdf.*; + +import java.io.File; +import java.io.IOException; + +/*** + * + * @MethodName:PDF编辑工具类 + * @author: zhangyanduan + * @param: + * @return: + * date: 2019/3/6 18:36 + */ +public class PDFEditUtils { + + //设置安全性 + public static void setPDFFileSecurity(String descFilePath,String srcFilePath) throws IOException { + checkOutFile(descFilePath); + PdfReader reader = new PdfReader(srcFilePath, new ReaderProperties()); + PdfWriter writer = new PdfWriter(descFilePath, new WriterProperties() + .setStandardEncryption(null, "1234qwer".getBytes(), EncryptionConstants.ALLOW_SCREENREADERS, + EncryptionConstants.ENCRYPTION_AES_128 | EncryptionConstants.DO_NOT_ENCRYPT_METADATA)); + PdfDocument pdfDoc = new PdfDocument(reader, writer); + pdfDoc.close(); + } + + private static void checkOutFile(String descFilePath){ + File desc=new File(descFilePath); + desc.getParentFile().mkdirs(); + } +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/common/SlidesTPdfUtils.java b/adc-da-convert/src/main/java/com/adc/da/convert/common/SlidesTPdfUtils.java new file mode 100644 index 00000000..8b38b699 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/common/SlidesTPdfUtils.java @@ -0,0 +1,72 @@ +package com.adc.da.convert.common; + +import com.aspose.slides.Presentation; +import com.aspose.slides.License; +import com.aspose.slides.SaveFormat; +import org.aspectj.weaver.ast.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; + +/** + * 采用破解版的Aspire插件转换文件 + */ +public class SlidesTPdfUtils { + + private static final Logger logger = LoggerFactory.getLogger(SlidesTPdfUtils.class); + private static final String myLicense = "Aspose.Total for JavaAspose.Words for JavaEnterprise20991231209912318bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU="; + + public static boolean getLicense() { + boolean result = false; + try { + ByteArrayInputStream is = new ByteArrayInputStream(myLicense.getBytes()); + License aposeLic = new License(); + aposeLic.setLicense(is); + result = true; + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return result; + } + + + public static void ppt2pdf(String inPath, String outPath) throws Exception{ + if (!getLicense()) { // 验证License 若不验证则转化出的pdf文档会有水印产生 + return; + } + File file = new File(outPath); // 新建一个空白pdf文档 + FileOutputStream os =null; + try { + long old = System.currentTimeMillis(); + os = new FileOutputStream(file); + Presentation pres = new Presentation(inPath); + pres.save(os, SaveFormat.Pdf); + os.flush(); + os.close(); + // EPUB, XPS, SWF 相互转换 + long now = System.currentTimeMillis(); + logger.info("转换文档:"+inPath+" "+"共耗时:" + ((now - old) / 1000.0) + "秒"); + } catch (Exception e) { + if(os!=null){ + os.flush(); + os.close(); + } + file.delete(); + logger.error("Document Convert Error:"+inPath); + logger.error(e.getMessage(),e); + throw new Exception("Document Convert Error:"+inPath); + } + } + + public static void main(String[] args) throws Exception { + String sourceFilePath="E:\\PPTTEXT\\2.pptx"; + String desFilePath="E:\\PPTTEXT\\2.pdf"; + ppt2pdf(sourceFilePath, desFilePath); + } + + +} \ No newline at end of file diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/common/SplitPdf.java b/adc-da-convert/src/main/java/com/adc/da/convert/common/SplitPdf.java new file mode 100644 index 00000000..7160d5c5 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/common/SplitPdf.java @@ -0,0 +1,169 @@ +package com.adc.da.convert.common; + +import com.adc.da.util.utils.UUID; +import com.itextpdf.text.*; +import com.itextpdf.text.log.Logger; +import com.itextpdf.text.log.LoggerFactory; +import com.itextpdf.text.pdf.*; +import org.apache.commons.lang.StringUtils; +import sun.misc.BASE64Encoder; + +import java.io.*; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class SplitPdf { + + private static final Logger logger = LoggerFactory.getLogger(SplitPdf.class); + + public static String splitPDFFile(String inputPath, + String outputPath, int fromPage, int toPage) { + Document document = new Document(); + InputStream inputStream = null; + OutputStream outputStream = null; + String allPassword = ""; + try { + logger.info("*********开始拆分pdf**********"); + inputStream = new FileInputStream(inputPath); + outputStream = new FileOutputStream(outputPath); + PdfReader inputPDF = new PdfReader(inputStream); + int totalPages = inputPDF.getNumberOfPages(); + //make fromPage equals to toPage if it is greater + if(fromPage > toPage ) { + fromPage = toPage; + } + if(toPage > totalPages) { + toPage = totalPages; + } + + // Create a writer for the outputstream + PdfWriter writer = PdfWriter.getInstance(document, outputStream); + Map pwdMap = setFilePassword(); + allPassword = pwdMap.get("allPwd"); + String filepassword = pwdMap.get("filePwd"); + writer.setEncryption(filepassword.getBytes(), "1234qwer".getBytes(), + PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128); + document.open(); + //构造文件,防止初始化文件为空 + //document.add(new Chunk("")); + PdfContentByte cb = writer.getDirectContent(); // Holds the PDF data + PdfImportedPage page; + + while(fromPage <= toPage) { + Rectangle pageSize = inputPDF.getPageSize(fromPage); + document.setPageSize(new Rectangle(pageSize.getWidth(),pageSize.getHeight())); + document.newPage(); + page = writer.getImportedPage(inputPDF, fromPage); + // 此处将文档的旋转参数写入新的文档中 + /* PdfDictionary pageN = inputPDF.getPageN(fromPage); + PdfNumber asNumber = pageN.getAsNumber(PdfName.ROTATE); + PdfDictionary additional = new PdfDictionary(); + additional.put(PdfName.ROTATE,asNumber); + page.setAdditional(additional);*/ + cb.addTemplate(page, 0, 0); + fromPage++; + } + outputStream.flush(); + document.close(); + inputStream.close(); + outputStream.close(); + //加密码 + /*String path = outputPath.replace("测试文件拆分\\","测试文件拆分\\加密码\\"); + PDFEditUtils.setPDFFileSecurity(outputPath,outputPath);*/ + }catch (IllegalArgumentException ie){ + logger.error("拆分过程中,读取文件失败"); + logger.error(ie.getMessage(),ie); + logger.error(ie.getMessage()); + } catch (IOException ioe) { + logger.error("拆分过程中,读取文件IO失败"); + logger.error(ioe.getMessage(),ioe); + logger.error(ioe.getMessage()); + }catch (Exception e) { + logger.error(e.getMessage(),e); + logger.error(e.getMessage()); + } finally { + if(document.isOpen()){ + document.close(); + } + try { + if (inputStream != null){ + inputStream.close(); + } + if (outputStream != null){ + outputStream.close(); + } + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + return allPassword; + } + + /** + * 利用libreOffice将office文档转换成pdf + * @param inputFile 目标文件地址 + * @param pdfFile 输出文件夹 + * @return + */ + public static boolean convertOffice2PDF(String inputFile, String pdfFile){ + long start = System.currentTimeMillis(); + String command; + boolean flag; + String osName = System.getProperty("os.name"); + if (osName.contains("Windows")) { + command = "cmd /c soffice --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile + " --outdir " + pdfFile; + }else { + command = "libreoffice --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile + " --outdir " + pdfFile; + } + flag = executeLibreOfficeCommand(command); + long end = System.currentTimeMillis(); + logger.debug("用时:{} ms"+(end - start)); + return flag; + } + + + /** + * 执行command指令 + * @param command + * @return + */ + public static boolean executeLibreOfficeCommand(String command) { + logger.info("开始进行转化......."); + Process process;// Process可以控制该子进程的执行或获取该子进程的信息 + try { + logger.info("convertOffice2PDF cmd : {}"+ command); + process = Runtime.getRuntime().exec(command);// exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。 + // 下面两个可以获取输入输出流 +// InputStream errorStream = process.getErrorStream(); +// InputStream inputStream = process.getInputStream(); + } catch (IOException e) { + logger.error(" convertOffice2PDF {} error"+command, e); + return false; + } + int exitStatus = 0; + try { + exitStatus = process.waitFor();// 等待子进程完成再往下执行,返回值是子线程执行完毕的返回值,返回0表示正常结束 + // 第二种接受返回值的方法 + int i = process.exitValue(); // 接收执行完毕的返回值 + logger.debug("返回值:"+i); + } catch (InterruptedException e) { + logger.info("InterruptedException convertOffice2PDF {}"+ command); + return false; + } + logger.info("convertOffice2PDF cmd exitStatus {}"+ exitStatus); + process.destroy(); // 销毁子进程 + logger.info("转化结束......."); + return true; + } + //设置文件密码 + public static Map setFilePassword(){ + String allPwd = UUID.randomUUID(20); + String filePwd = allPwd.substring(0,5) + allPwd.substring(15,20); + Map map = new HashMap<>(); + map.put("allPwd",allPwd); + map.put("filePwd",filePwd); + return map; + } + +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/common/WordTPdfUtils.java b/adc-da-convert/src/main/java/com/adc/da/convert/common/WordTPdfUtils.java new file mode 100644 index 00000000..c8c8a08f --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/common/WordTPdfUtils.java @@ -0,0 +1,65 @@ +package com.adc.da.convert.common; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; + +import com.adc.da.util.exception.AdcDaBaseException; +import com.aspose.words.Document; +import org.aspectj.weaver.ast.Test; +import com.aspose.words.License; +import com.aspose.words.SaveFormat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 采用破解版的Aspire插件转换文件 + */ +public class WordTPdfUtils { + + private static final Logger logger = LoggerFactory.getLogger(WordTPdfUtils.class); + + private static final String myLicense = "Aspose.Total for JavaAspose.Words for JavaEnterprise20991231209912318bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU="; + + public static boolean getLicense() { + boolean result = false; + try { + ByteArrayInputStream is = new ByteArrayInputStream(myLicense.getBytes()); + License aposeLic = new License(); + aposeLic.setLicense(is); + result = true; + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return result; + } + + + public static void doc2pdf(String inPath, String outPath) throws Exception{ + if (!getLicense()) { // 验证License 若不验证则转化出的pdf文档会有水印产生 + return; + } + File file = new File(outPath); // 新建一个空白pdf文档 + FileOutputStream os = new FileOutputStream(file); + try { + long old = System.currentTimeMillis(); + Document doc = new Document(inPath); // Address是将要被转化的word文档 + doc.save(os, SaveFormat.PDF);// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, + os.flush(); + os.close(); + // EPUB, XPS, SWF 相互转换 + long now = System.currentTimeMillis(); + logger.info("转换文档:"+inPath+" "+"共耗时:" + ((now - old) / 1000.0) + "秒"); + } catch (Exception e) { + if(os!=null){ + os.flush(); + os.close(); + } + file.delete(); + logger.error("Document Convert Error:"+inPath); + logger.error(e.getMessage(),e); + throw new Exception("Document Convert Error:"+inPath); + } + } + +} \ No newline at end of file diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/mq/CreateConvertMQService.java b/adc-da-convert/src/main/java/com/adc/da/convert/mq/CreateConvertMQService.java new file mode 100644 index 00000000..0782c7cc --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/mq/CreateConvertMQService.java @@ -0,0 +1,81 @@ +package com.adc.da.convert.mq; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.convert.common.AsposeOfficeConvertUtils; +import net.sf.json.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + + +@Component +public class CreateConvertMQService { + + + @Value("${file.path}") + private String localFilePath; + + @Autowired + private AmqpTemplate rabbitTemplate; + + @Autowired + private IAttFileEOService attFileEOService; + + private static final Logger logger = LoggerFactory.getLogger(CreateConvertMQService.class); + /** + * + * @param attFileEO 文件对象 + * @throws Exception + */ + public void sendConvertMQ(AttFileEO attFileEO){ + // 中间转换业务逻辑 + //发送消息队列 +// this.rabbitTemplate.convertAndSend("convert-exchange_SQ_GSAR", "convert-key_SQ_GSAR", attFileEO); + } + + + public AttFileVo convertWordFileToPdfFile(String attId){ + AttFileVo pdfFileVO = new AttFileVo(); + if(StringUtils.isNotBlank(attId)){ + try { + AttFileEO sourceFileEO = attFileEOService.getFileInfo(attId); + if(sourceFileEO!=null){ + String fileType = sourceFileEO.getFileSuffix(); + String path = localFilePath + sourceFileEO.getFilePath(); + String convertfilename = path +sourceFileEO.getFileName(); + String savePdfFileName = convertfilename.substring(0, convertfilename.lastIndexOf(".")); + String savePdfPath = savePdfFileName+".pdf"; + AsposeOfficeConvertUtils.convertOfficeFileToPDF(fileType,convertfilename,savePdfPath); + File pdfFile = new File(savePdfPath); + if(!savePdfPath.isEmpty() && pdfFile.length()>0){ + // 上传转换后文件 + pdfFileVO = attFileEOService.saveFileInfo(pdfFile); + }else{ + pdfFileVO.setStandName("文件转换失败"); + logger.error("文件转换失败啦!!!"); + } + }else{ + pdfFileVO.setStandName("当前文件ID未能找到对应的文件"); + logger.error("当前文件ID[{0}]未能找到对应文件 ",attId); + } + } catch (Exception e) { + pdfFileVO.setStandName("文件转换过程中报错啦"); + logger.error("文件转换失败啦"); + } + }else{ + pdfFileVO.setStandName("当前文件ID为空,不做处理"); + logger.error("当前文件ID为空,不做处理"); + } + return pdfFileVO; + } +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendConvertMQService.java b/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendConvertMQService.java new file mode 100644 index 00000000..ac385e22 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendConvertMQService.java @@ -0,0 +1,424 @@ +package com.adc.da.convert.mq; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.common.SarTypeEnum; +import com.adc.da.common.UseModuleEnum; +import com.adc.da.convert.common.AsposeOfficeConvertUtils; +import com.adc.da.convert.common.DocConverterPdf; +import com.adc.da.mq.CreateMQService; +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.adc.da.slrs.otConvertMq.service.IOtConvertMqService; +import com.adc.da.slrs.sarBussStandFile.dao.SarBussStandFileDao; +import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +import com.adc.da.slrs.sarLawsFile.dao.SarLawsFileDao; +import com.adc.da.slrs.sarLawsFile.entity.SarLawsFile; +import com.adc.da.slrs.sarStandFile.dao.SarStandFileDao; +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.StringUtils; +import com.adc.da.util.utils.UUID; +import com.alibaba.fastjson.JSONObject; +import com.rabbitmq.client.Channel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.support.AmqpHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.util.Date; +import java.util.Map; + +@Component +public class SendConvertMQService { + + // 文档转换远程服务IP地址 + @Value("${convert.host}") + private String convertHost; + + @Value("${server.port}") + private String port; + + @Value("${file.path}") + private String localFilePath; + + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private CreateMQService convertMq; + + @Autowired + private IOtConvertMqService convertMqEOService; + + @Autowired + private SarStandFileDao sarStandFileEODao; + + @Autowired + private SarBussStandFileDao sarBussStandFileEODao; + + @Autowired + private SarLawsFileDao sarLawsFileDao; + + private static final Logger logger = LoggerFactory.getLogger(SendConvertMQService.class); + +// @RabbitListener(bindings = @QueueBinding( +// value = @Queue(value = "createConvertStandMQ_SQ_GSAR_RELEASE", durable = "true"), +// exchange = @Exchange(value = "convert-exchange_SQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"), +// key = "convert-key_SQ_GSAR_RELEASE")) + public void createMQ(Message message, Channel channel) throws Exception{ + try{ + try{ + String messagePayload = (String) message.getPayload(); + Map convertInfo = JSONObject.parseObject(messagePayload, Map.class); + Thread.sleep(5000); + insertConvertMsg(convertInfo); + }catch(InterruptedException e){ + logger.error(e.toString()); + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + logger.error("文档转换消息队列进入添加数据方法前失败!"); + logger.error(e.getMessage(),e); + }finally { + Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); + channel.basicAck(tag,false); + } + + } + + public void insertConvertMsg(Map convertInfo) throws Exception{ + String attId = ""; + String filePath = ""; + String otId = ""; + String addUpFlag = ""; + String convertType = ""; + String standFileClassify = ""; + String lawsFileClassify = ""; + //资源与文件关联表转换成功的ID + String standFilePdfId = ""; + if(convertInfo.get("attId") != null){ + attId = convertInfo.get("attId").toString(); + } + if(convertInfo.get("path") != null){ + filePath = convertInfo.get("path").toString(); + } + if(convertInfo.get("otId") != null){ + otId = convertInfo.get("otId").toString(); + } + if(convertInfo.get("addUpFlag") != null){ + addUpFlag = convertInfo.get("addUpFlag").toString(); + } + if(convertInfo.get("convertType") != null){ + convertType = convertInfo.get("convertType").toString(); + } + if(convertInfo.get("standFilePdfId") != null){ + standFilePdfId = convertInfo.get("standFilePdfId").toString(); + } + if(convertInfo.get("standFileClassify") != null){ + standFileClassify = convertInfo.get("standFileClassify").toString(); + } + if(convertInfo.get("lawsFileClassify") != null){ + lawsFileClassify = convertInfo.get("lawsFileClassify").toString(); + } + + //更改完转换表信息后开始转换 + OtConvertMq convertMqEO = new OtConvertMq(); + if("0".equals(addUpFlag)){ + convertMqEO.setLawsId(convertInfo.get("lawsId").toString()); +// convertMqEO.setResId(convertInfo.get("resId").toString()); + } + convertMqEO.setConvertType(convertType); + convertMqEO.setAttId(attId); + convertMqEO.setOriAttId(attId); + convertMqEO.setId(otId); + convertMqEO.setFilePath(filePath); + convertMqEO.setAddOrUp(addUpFlag); + convertMqEO.setPdfId(standFilePdfId); + convertMqEO.setStandFileClassify(standFileClassify); + convertMqEO.setLawsFileClassify(lawsFileClassify); + int i = Integer.valueOf(convertInfo.get("againNum").toString()); + convertMqEO.setAgainNum(i); + docUploadConvert(convertMqEO); + } + + /** + * @Author yangxuenan + * @Description 文件转换 + * Date 2018/8/21 15:51 + * @Param [path] + * @return com.adc.da.util.http.ResponseMessage + **/ + public ResponseMessage docUploadConvert(OtConvertMq convertMqEO) throws Exception{ + //保存在数据库中的ID + String path = localFilePath + convertMqEO.getFilePath(); + path = path.replace("//","/"); + String convertId = convertMqEO.getId(); + try { + //进入转换方法中,修改OT_CONVERT表中状态为转换中 + convertMqEO.setId(convertId); + convertMqEO.setModifyTime(new Date()); + convertMqEO.setMqState(3); + convertMqEOService.updateById(convertMqEO); + //开始转换。。。。。。 + if(!"".equals(path)){ + String converfilename = path.replaceAll("\\\\", "/"); + logger.info("*****上传路径:*******"+localFilePath); + logger.info("************文件路径:**********" + convertMqEO.getFilePath()); +// logger.info("************接口:**********" + port); + logger.info("*****上传路径替换,加入文件名*******"+converfilename); + //截取文件类型 + int index = converfilename.lastIndexOf("."); + String fileType = converfilename.substring(index,converfilename.length()); + String fileOriName = converfilename.substring(0,index); +// //调用转换类DocConverter,并将需要转换的文件传递给该类的构造方法 +// DocConverterPdf d = new DocConverterPdf(converfilename,fileType); +// d.setConvertHost(convertHost); +// //调用conver方法开始转换,先执行doc2pdf()将office文件转换为pdf;再执行pdf2swf()将pdf转换为swf; +// File getPdf = d.conver(fileType); +// //调用getswfPath()方法,打印转换后的swf文件路径 +// String dPath = d.getpdfPath(); + String savePdfFileName = converfilename.substring(0, converfilename.lastIndexOf(".")); + String savePdfPath = savePdfFileName+".pdf"; + AsposeOfficeConvertUtils.convertOfficeFileToPDF(fileType,converfilename,savePdfPath); + File pdfFile = new File(savePdfPath); + logger.info("*****转换后的pdf文件路径*******"+savePdfPath); + //判断是否转换成功,修改数据状态 + if(!savePdfPath.isEmpty() && pdfFile.length()>0){ + // 上传转换后文件 + String pdfId = attFileEOService.saveFileAttId(pdfFile); + logger.info("////////转换后文件id"+pdfId); + int count = 0; + if("0".equals(convertMqEO.getAddOrUp())){ + count = insertConvertDocToFiles(convertMqEO,pdfId,fileOriName,fileType); + } else { + //查询之前在资源与文件关联表中是否有转换成功的数据,如果有执行修改,没有执行新增 + if(StringUtils.isNotEmpty(convertMqEO.getPdfId())){ + count = updateConvertDocToFIles(convertMqEO,pdfId); + } else { + count = insertConvertDocToFiles(convertMqEO,pdfId,fileOriName,fileType); + } + } + convertMqEO.setId(convertId); + if (count>0) { + // 转换成功 + convertMqEO.setModifyTime(new Date()); + convertMqEO.setMqState(1); + convertMqEOService.updateById(convertMqEO); + } else { + // 转换失败 + convertMqEO.setModifyTime(new Date()); + convertMqEO.setMqState(2); + convertMqEOService.updateById(convertMqEO); + } + } else { + // 转换失败 + convertMqEO.setId(convertId); + convertMqEO.setModifyTime(new Date()); + convertMqEO.setMqState(2); + convertMqEOService.updateById(convertMqEO); +// if(convertMqEO.getAgainNum()<=5){ +// throw new Exception("转换失败"); +// } + } + return Result.success(savePdfPath); + } else { + logger.error("转换时未获取到文件路径!"); + return Result.error("文件存储失败,请重试"); + } + } catch (Exception e) { + // 转换失败 + logger.error("转换过程中失败!"); + logger.error(e.getMessage(),e); + convertMqEO.setId(convertId); + convertMqEO.setMqState(2); + convertMqEOService.updateById(convertMqEO); +// this.restartUploadConvert(convertMqEO); + return Result.error("r0072", "文件转换失败,请重试"); + } + } + + public ResponseMessage restartUploadConvert(OtConvertMq convertInfo) throws Exception{ + OtConvertMq convertMqEO = new com.adc.da.slrs.otConvertMq.entity.OtConvertMq(); + convertMqEO.setLawsId(convertInfo.getLawsId()); + convertMqEO.setConvertType(convertInfo.getConvertType()); + convertMqEO.setAttId(convertInfo.getAttId()); + convertMqEO.setOriAttId(convertInfo.getOriAttId()); + convertMqEO.setId(convertInfo.getId()); + convertMqEO.setFilePath(convertInfo.getFilePath()); + convertMqEO.setAddOrUp(convertInfo.getAddOrUp()); + convertMqEO.setPdfId(convertInfo.getPdfId()); + convertMqEO.setStandFileClassify(convertInfo.getStandFileClassify()); + int countAdd = 0; + convertMqEO.setAddOrUp("1"); + int againNumNew = Integer.valueOf(convertInfo.getAgainNum()); + convertMqEO.setAgainNum(againNumNew+1); + convertMq.sendMQ(convertMqEO); + return Result.success("true","已重新加入转换",""); + + } + + /** + * @Author yangxuenan + * @Description 修改标准法规文件表pdf信息 + * Date 2018/10/31 17:09 + * @Param [convertMq, pdfId] + * @return int + **/ + public int updateConvertDocToFIles(OtConvertMq convertMq,String pdfId){ + int countSuccess = 0; + if(SarTypeEnum.STAND.getValue().equals(convertMq.getConvertType())){ + SarStandFile lawsFile = new SarStandFile(); + lawsFile.setId(convertMq.getPdfId()); + lawsFile.setAttId(pdfId); + lawsFile.setOriAttId(convertMq.getOriAttId()); + lawsFile.setModifyTime(new Date()); + lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); + countSuccess = sarStandFileEODao.updateByPrimaryKeySelective(lawsFile); + } else if (SarTypeEnum.LAWS_STAND.getValue().equals(convertMq.getConvertType())) { + SarLawsFile lawsFile = new SarLawsFile(); + lawsFile.setId(convertMq.getPdfId()); + lawsFile.setAttId(pdfId); + lawsFile.setOriAttId(convertMq.getOriAttId()); + lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); + lawsFile.setModifyTime(new Date()); + countSuccess = sarLawsFileDao.updateByPrimaryKeySelective(lawsFile); + } else if (SarTypeEnum.BUSINESS.getValue().equals(convertMq.getConvertType())) { + SarBussStandFile lawsFile = new SarBussStandFile(); + lawsFile.setId(convertMq.getPdfId()); + lawsFile.setAttId(pdfId); + lawsFile.setOriAttId(convertMq.getOriAttId()); + lawsFile.setUseModule(UseModuleEnum.WEB_FILE.getValue()); + lawsFile.setModifyTime(new Date()); + countSuccess = sarBussStandFileEODao.updateByPrimaryKeySelective(lawsFile); + }else if (SarTypeEnum.RECORDS.getValue().equals(convertMq.getConvertType())) { +// SarBussRecordsFileEO lawsFile = new SarBussRecordsFileEO(); +// lawsFile.setId(convertMq.getPdfId()); +// lawsFile.setRecordsId(convertMq.getLawsId()); +// lawsFile.setAttId(pdfId); +// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setValidFlag("0"); +// lawsFile.setCreationTime(new Date()); +// lawsFile.setModifyTime(new Date()); +// countSuccess = sarBussRecordsFileEODao.updateByPrimaryKeySelective(lawsFile); + } + else { +// SarFileSplitItemsFileEO lawsFile = new SarFileSplitItemsFileEO(); +// lawsFile.setId(convertMq.getPdfId()); +// lawsFile.setAttId(pdfId); +//// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setModifyTime(new Date()); +// countSuccess = sarFileSplitItemsFileEODao.updateByPrimaryKeySelective(lawsFile); + } + return countSuccess; + } + + /** + * @Author yangxuenan + * @Description 添加标准法规文件表pdf信息 + * Date 2018/10/30 21:52 + * @Param [convertMq] + * @return int + **/ + public int insertConvertDocToFiles(OtConvertMq convertMq,String pdfId,String fileOriName,String fileType) { + int countSuccess = 0; + String creationUser = LoginUserUtil.getUserId(); + if(SarTypeEnum.STAND.getValue().equals(convertMq.getConvertType())){ + SarStandFile lawsFile = new SarStandFile(); + lawsFile.setId(UUID.randomUUID(20)); + lawsFile.setStandId(convertMq.getLawsId()); +// lawsFile.setResId(convertMq.getResId()); + lawsFile.setAttId(pdfId); + lawsFile.setOriAttId(convertMq.getOriAttId()); + lawsFile.setValidFlag("0"); + lawsFile.setCreationUser(creationUser); + lawsFile.setCreationTime(new Date()); + lawsFile.setModifyTime(new Date()); + lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); + lawsFile.setStandFileClassify(convertMq.getStandFileClassify()); + lawsFile.setFileName(fileOriName+".pdf"); + lawsFile.setFileSuffix("pdf"); + countSuccess = sarStandFileEODao.insertSelective(lawsFile); + } else if (SarTypeEnum.LAWS_STAND.getValue().equals(convertMq.getConvertType())) { + SarLawsFile lawsFile = new SarLawsFile(); + lawsFile.setId(UUID.randomUUID(20)); + lawsFile.setLawsId(convertMq.getLawsId()); + lawsFile.setResId(convertMq.getResId()); + lawsFile.setAttId(pdfId); + lawsFile.setOriAttId(convertMq.getOriAttId()); + lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); + lawsFile.setValidFlag(0); + lawsFile.setCreationTime(new Date()); + lawsFile.setModifyTime(new Date()); + lawsFile.setLawsFileClassify(convertMq.getLawsFileClassify()); + lawsFile.setFileName(fileOriName+".pdf"); + lawsFile.setFileSuffix("pdf"); + countSuccess = sarLawsFileDao.insertSelective(lawsFile); + } else if (SarTypeEnum.BUSINESS.getValue().equals(convertMq.getConvertType())) { + SarBussStandFile lawsFile = new SarBussStandFile(); + lawsFile.setId(UUID.randomUUID(20)); + lawsFile.setStandId(convertMq.getLawsId()); + lawsFile.setResId(convertMq.getResId()); + lawsFile.setAttId(pdfId); + lawsFile.setOriAttId(convertMq.getOriAttId()); + lawsFile.setUseModule(UseModuleEnum.WEB_FILE.getValue()); + lawsFile.setStandFileClassify(convertMq.getStandFileClassify()); + lawsFile.setFileName(fileOriName+".pdf"); + lawsFile.setFileSuffix("pdf"); + lawsFile.setValidFlag(0); + lawsFile.setCreationTime(new Date()); + lawsFile.setModifyTime(new Date()); + countSuccess = sarBussStandFileEODao.insertSelective(lawsFile); + } + else if (SarTypeEnum.RECORDS.getValue().equals(convertMq.getConvertType())) { +// SarBussRecordsFileEO lawsFile = new SarBussRecordsFileEO(); +// lawsFile.setId(UUID.randomUUID(20)); +// lawsFile.setRecordsId(convertMq.getLawsId()); +// lawsFile.setResId(convertMq.getResId()); +// lawsFile.setAttId(pdfId); +// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setRecordsFileClassify(convertMq.getStandFileClassify()); +// lawsFile.setFileName(fileOriName+".pdf"); +// lawsFile.setFileSuffix("pdf"); +// lawsFile.setValidFlag("0"); +// lawsFile.setCreationTime(new Date()); +// lawsFile.setModifyTime(new Date()); +// countSuccess = sarBussRecordsFileEODao.insertSelective(lawsFile); + }else { +// SarFileSplitItemsFileEO lawsFile = new SarFileSplitItemsFileEO(); +// lawsFile.setId(UUID.randomUUID(20)); +// lawsFile.setStandId(convertMq.getLawsId()); +// lawsFile.setResId(convertMq.getResId()); +// lawsFile.setAttId(pdfId); +//// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setValidFlag(0); +// lawsFile.setCreationTime(new Date()); +// lawsFile.setModifyTime(new Date()); +// countSuccess = sarFileSplitItemsFileEODao.insertSelective(lawsFile); + } + return countSuccess; + } + + /** + * 文档转换逻辑 + * @param attFileEO + */ + public void insertOrUpdateStandInfo(AttFileEO attFileEO){ + + } + + +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendUploadConvertService.java b/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendUploadConvertService.java new file mode 100644 index 00000000..7a7b42e0 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendUploadConvertService.java @@ -0,0 +1,368 @@ +//package com.adc.da.convert.mq; +// +//import com.adc.da.att.entity.AttFileEO; +//import com.adc.da.att.service.IAttFileEOService; +//import com.adc.da.common.SarTypeEnum; +//import com.adc.da.common.UseModuleEnum; +//import com.adc.da.convert.common.AsposeOfficeConvertUtils; +//import com.adc.da.mq.CreateMQService; +//import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +//import com.adc.da.slrs.otConvertMq.service.IOtConvertMqService; +//import com.adc.da.slrs.sarBussStandFile.dao.SarBussStandFileDao; +//import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +//import com.adc.da.slrs.sarLawsFile.dao.SarLawsFileDao; +//import com.adc.da.slrs.sarLawsFile.entity.SarLawsFile; +//import com.adc.da.slrs.sarStandFile.dao.SarStandFileDao; +//import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +//import com.adc.da.sys.util.LoginUserUtil; +//import com.adc.da.util.http.ResponseMessage; +//import com.adc.da.util.http.Result; +//import com.adc.da.util.utils.StringUtils; +//import com.adc.da.util.utils.UUID; +//import com.rabbitmq.client.Channel; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.amqp.rabbit.annotation.Exchange; +//import org.springframework.amqp.rabbit.annotation.Queue; +//import org.springframework.amqp.rabbit.annotation.QueueBinding; +//import org.springframework.amqp.rabbit.annotation.RabbitListener; +//import org.springframework.amqp.support.AmqpHeaders; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.messaging.Message; +//import org.springframework.stereotype.Component; +// +//import java.io.File; +//import java.util.Date; +//import java.util.Map; +// +//@Component +//public class SendUploadConvertService { +// +// // 文档转换远程服务IP地址s +// @Value("${convert.host}") +// private String convertHost; +// +// @Value("${server.port}") +// private String port; +// +// @Value("${file.path}") +// private String localFilePath; +// +// @Autowired +// private IAttFileEOService attFileEOService; +// +// @Autowired +// private CreateMQService convertMq; +// +// @Autowired +// private IOtConvertMqService convertMqEOService; +// +// @Autowired +// private SarStandFileDao sarStandFileEODao; +// +// @Autowired +// private SarBussStandFileDao sarBussStandFileEODao; +// +// @Autowired +// private SarLawsFileDao sarLawsFileDao; +// +// private static final Logger logger = LoggerFactory.getLogger(SendUploadConvertService.class); +// +// @RabbitListener(bindings = @QueueBinding( +// value = @Queue(value = "createUploadConvertMQ_SQ_GSAR_RELEASE", durable = "true"), +// exchange = @Exchange(value = "convertUpload-exchange_SQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"), +// key = "convertUpload-key_SQ_GSAR_RELEASE")) +// public void createMQ(Map convertInfo, Message message, Channel channel) throws Exception{ +// try{ +// try{ +// Thread.sleep(5000); +// insertConvertMsg(convertInfo); +// }catch(InterruptedException e){ +// logger.error(e.toString()); +// Thread.currentThread().interrupt(); +// } +// } catch (Exception e) { +// logger.error("文档转换消息队列进入添加数据方法前失败!"); +// logger.error(e.getMessage(),e); +// }finally { +// Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); +// channel.basicAck(tag,false); +// } +// +// } +// +// public void insertConvertMsg(Map convertInfo) throws Exception{ +// docUploadConvert(convertMqEO); +// } +// +// /** +// * @Description 文件转换 +// * Date 2018/8/21 15:51 +// * @Param [path] +// * @return com.adc.da.util.http.ResponseMessage +// **/ +// public ResponseMessage docUploadConvert(OtConvertMq convertMqEO) throws Exception{ +// //保存在数据库中的ID +// String path = localFilePath + convertMqEO.getFilePath(); +// path = path.replace("//","/"); +// String convertId = convertMqEO.getId(); +// try { +// //进入转换方法中,修改OT_CONVERT表中状态为转换中 +// convertMqEO.setId(convertId); +// convertMqEO.setModifyTime(new Date()); +// convertMqEO.setMqState(3); +// convertMqEOService.updateById(convertMqEO); +// //开始转换。。。。。。 +// if(!"".equals(path)){ +// String converfilename = path.replaceAll("\\\\", "/"); +// logger.info("*****上传路径:*******"+localFilePath); +// logger.info("************文件路径:**********" + convertMqEO.getFilePath()); +//// logger.info("************接口:**********" + port); +// logger.info("*****上传路径替换,加入文件名*******"+converfilename); +// //截取文件类型 +// int index = converfilename.lastIndexOf("."); +// String fileType = converfilename.substring(index,converfilename.length()); +// String fileOriName = converfilename.substring(0,index); +//// //调用转换类DocConverter,并将需要转换的文件传递给该类的构造方法 +//// DocConverterPdf d = new DocConverterPdf(converfilename,fileType); +//// d.setConvertHost(convertHost); +//// //调用conver方法开始转换,先执行doc2pdf()将office文件转换为pdf;再执行pdf2swf()将pdf转换为swf; +//// File getPdf = d.conver(fileType); +//// //调用getswfPath()方法,打印转换后的swf文件路径 +//// String dPath = d.getpdfPath(); +// String savePdfFileName = converfilename.substring(0, converfilename.lastIndexOf(".")); +// String savePdfPath = savePdfFileName+".pdf"; +// AsposeOfficeConvertUtils.convertOfficeFileToPDF(fileType,converfilename,savePdfPath); +// File pdfFile = new File(savePdfPath); +// logger.info("*****转换后的pdf文件路径*******"+savePdfPath); +// //判断是否转换成功,修改数据状态 +// if(!savePdfPath.isEmpty() && pdfFile.length()>0){ +// // 上传转换后文件 +// String pdfId = attFileEOService.saveFileAttId(pdfFile); +// logger.info("////////转换后文件id"+pdfId); +// int count = 0; +// if("0".equals(convertMqEO.getAddOrUp())){ +// count = insertConvertDocToFiles(convertMqEO,pdfId,fileOriName,fileType); +// } else { +// //查询之前在资源与文件关联表中是否有转换成功的数据,如果有执行修改,没有执行新增 +// if(StringUtils.isNotEmpty(convertMqEO.getPdfId())){ +// count = updateConvertDocToFIles(convertMqEO,pdfId); +// } else { +// count = insertConvertDocToFiles(convertMqEO,pdfId,fileOriName,fileType); +// } +// } +// convertMqEO.setId(convertId); +// if (count>0) { +// // 转换成功 +// convertMqEO.setModifyTime(new Date()); +// convertMqEO.setMqState(1); +// convertMqEOService.updateById(convertMqEO); +// } else { +// // 转换失败 +// convertMqEO.setModifyTime(new Date()); +// convertMqEO.setMqState(2); +// convertMqEOService.updateById(convertMqEO); +// } +// } else { +// // 转换失败 +// convertMqEO.setId(convertId); +// convertMqEO.setModifyTime(new Date()); +// convertMqEO.setMqState(2); +// convertMqEOService.updateById(convertMqEO); +//// if(convertMqEO.getAgainNum()<=5){ +//// throw new Exception("转换失败"); +//// } +// } +// return Result.success(savePdfPath); +// } else { +// logger.error("转换时未获取到文件路径!"); +// return Result.error("文件存储失败,请重试"); +// } +// } catch (Exception e) { +// // 转换失败 +// logger.error("转换过程中失败!"); +// logger.error(e.getMessage(),e); +// convertMqEO.setId(convertId); +// convertMqEO.setMqState(2); +// convertMqEOService.updateById(convertMqEO); +//// this.restartUploadConvert(convertMqEO); +// return Result.error("r0072", "文件转换失败,请重试"); +// } +// } +// +// public ResponseMessage restartUploadConvert(OtConvertMq convertInfo) throws Exception{ +// OtConvertMq convertMqEO = new OtConvertMq(); +// convertMqEO.setLawsId(convertInfo.getLawsId()); +// convertMqEO.setConvertType(convertInfo.getConvertType()); +// convertMqEO.setAttId(convertInfo.getAttId()); +// convertMqEO.setOriAttId(convertInfo.getOriAttId()); +// convertMqEO.setId(convertInfo.getId()); +// convertMqEO.setFilePath(convertInfo.getFilePath()); +// convertMqEO.setAddOrUp(convertInfo.getAddOrUp()); +// convertMqEO.setPdfId(convertInfo.getPdfId()); +// convertMqEO.setStandFileClassify(convertInfo.getStandFileClassify()); +// int countAdd = 0; +// convertMqEO.setAddOrUp("1"); +// int againNumNew = Integer.valueOf(convertInfo.getAgainNum()); +// convertMqEO.setAgainNum(againNumNew+1); +// convertMq.sendMQ(convertMqEO); +// return Result.success("true","已重新加入转换",""); +// +// } +// +// /** +// * @Author yangxuenan +// * @Description 修改标准法规文件表pdf信息 +// * Date 2018/10/31 17:09 +// * @Param [convertMq, pdfId] +// * @return int +// **/ +// public int updateConvertDocToFIles(OtConvertMq convertMq,String pdfId){ +// int countSuccess = 0; +// if(SarTypeEnum.STAND.getValue().equals(convertMq.getConvertType())){ +// SarStandFile lawsFile = new SarStandFile(); +// lawsFile.setId(convertMq.getPdfId()); +// lawsFile.setAttId(pdfId); +// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setModifyTime(new Date()); +// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +// countSuccess = sarStandFileEODao.updateByPrimaryKeySelective(lawsFile); +// } else if (SarTypeEnum.LAWS_STAND.getValue().equals(convertMq.getConvertType())) { +// SarLawsFile lawsFile = new SarLawsFile(); +// lawsFile.setId(convertMq.getPdfId()); +// lawsFile.setAttId(pdfId); +// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setModifyTime(new Date()); +// countSuccess = sarLawsFileDao.updateByPrimaryKeySelective(lawsFile); +// } else if (SarTypeEnum.BUSINESS.getValue().equals(convertMq.getConvertType())) { +// SarBussStandFile lawsFile = new SarBussStandFile(); +// lawsFile.setId(convertMq.getPdfId()); +// lawsFile.setAttId(pdfId); +// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setUseModule(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setModifyTime(new Date()); +// countSuccess = sarBussStandFileEODao.updateByPrimaryKeySelective(lawsFile); +// }else if (SarTypeEnum.RECORDS.getValue().equals(convertMq.getConvertType())) { +//// SarBussRecordsFileEO lawsFile = new SarBussRecordsFileEO(); +//// lawsFile.setId(convertMq.getPdfId()); +//// lawsFile.setRecordsId(convertMq.getLawsId()); +//// lawsFile.setAttId(pdfId); +//// lawsFile.setOriAttId(convertMq.getOriAttId()); +//// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +//// lawsFile.setValidFlag("0"); +//// lawsFile.setCreationTime(new Date()); +//// lawsFile.setModifyTime(new Date()); +//// countSuccess = sarBussRecordsFileEODao.updateByPrimaryKeySelective(lawsFile); +// } +// else { +//// SarFileSplitItemsFileEO lawsFile = new SarFileSplitItemsFileEO(); +//// lawsFile.setId(convertMq.getPdfId()); +//// lawsFile.setAttId(pdfId); +////// lawsFile.setOriAttId(convertMq.getOriAttId()); +//// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +//// lawsFile.setModifyTime(new Date()); +//// countSuccess = sarFileSplitItemsFileEODao.updateByPrimaryKeySelective(lawsFile); +// } +// return countSuccess; +// } +// +// /** +// * @Author yangxuenan +// * @Description 添加标准法规文件表pdf信息 +// * Date 2018/10/30 21:52 +// * @Param [convertMq] +// * @return int +// **/ +// public int insertConvertDocToFiles(OtConvertMq convertMq,String pdfId,String fileOriName,String fileType) { +// int countSuccess = 0; +// String creationUser = LoginUserUtil.getUserId(); +// if(SarTypeEnum.STAND.getValue().equals(convertMq.getConvertType())){ +// SarStandFile lawsFile = new SarStandFile(); +// lawsFile.setId(UUID.randomUUID(20)); +// lawsFile.setStandId(convertMq.getLawsId()); +//// lawsFile.setResId(convertMq.getResId()); +// lawsFile.setAttId(pdfId); +// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setValidFlag("0"); +// lawsFile.setCreationUser(creationUser); +// lawsFile.setCreationTime(new Date()); +// lawsFile.setModifyTime(new Date()); +// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setStandFileClassify(convertMq.getStandFileClassify()); +// lawsFile.setFileName(fileOriName+".pdf"); +// lawsFile.setFileSuffix("pdf"); +// countSuccess = sarStandFileEODao.insertSelective(lawsFile); +// } else if (SarTypeEnum.LAWS_STAND.getValue().equals(convertMq.getConvertType())) { +// SarLawsFile lawsFile = new SarLawsFile(); +// lawsFile.setId(UUID.randomUUID(20)); +// lawsFile.setLawsId(convertMq.getLawsId()); +// lawsFile.setResId(convertMq.getResId()); +// lawsFile.setAttId(pdfId); +// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setValidFlag(0); +// lawsFile.setCreationTime(new Date()); +// lawsFile.setModifyTime(new Date()); +// lawsFile.setLawsFileClassify(convertMq.getLawsFileClassify()); +// lawsFile.setFileName(fileOriName+".pdf"); +// lawsFile.setFileSuffix("pdf"); +// countSuccess = sarLawsFileDao.insertSelective(lawsFile); +// } else if (SarTypeEnum.BUSINESS.getValue().equals(convertMq.getConvertType())) { +// SarBussStandFile lawsFile = new SarBussStandFile(); +// lawsFile.setId(UUID.randomUUID(20)); +// lawsFile.setStandId(convertMq.getLawsId()); +// lawsFile.setResId(convertMq.getResId()); +// lawsFile.setAttId(pdfId); +// lawsFile.setOriAttId(convertMq.getOriAttId()); +// lawsFile.setUseModule(UseModuleEnum.WEB_FILE.getValue()); +// lawsFile.setStandFileClassify(convertMq.getStandFileClassify()); +// lawsFile.setFileName(fileOriName+".pdf"); +// lawsFile.setFileSuffix("pdf"); +// lawsFile.setValidFlag(0); +// lawsFile.setCreationTime(new Date()); +// lawsFile.setModifyTime(new Date()); +// countSuccess = sarBussStandFileEODao.insertSelective(lawsFile); +// } +// else if (SarTypeEnum.RECORDS.getValue().equals(convertMq.getConvertType())) { +//// SarBussRecordsFileEO lawsFile = new SarBussRecordsFileEO(); +//// lawsFile.setId(UUID.randomUUID(20)); +//// lawsFile.setRecordsId(convertMq.getLawsId()); +//// lawsFile.setResId(convertMq.getResId()); +//// lawsFile.setAttId(pdfId); +//// lawsFile.setOriAttId(convertMq.getOriAttId()); +//// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +//// lawsFile.setRecordsFileClassify(convertMq.getStandFileClassify()); +//// lawsFile.setFileName(fileOriName+".pdf"); +//// lawsFile.setFileSuffix("pdf"); +//// lawsFile.setValidFlag("0"); +//// lawsFile.setCreationTime(new Date()); +//// lawsFile.setModifyTime(new Date()); +//// countSuccess = sarBussRecordsFileEODao.insertSelective(lawsFile); +// }else { +//// SarFileSplitItemsFileEO lawsFile = new SarFileSplitItemsFileEO(); +//// lawsFile.setId(UUID.randomUUID(20)); +//// lawsFile.setStandId(convertMq.getLawsId()); +//// lawsFile.setResId(convertMq.getResId()); +//// lawsFile.setAttId(pdfId); +////// lawsFile.setOriAttId(convertMq.getOriAttId()); +//// lawsFile.setUseModel(UseModuleEnum.WEB_FILE.getValue()); +//// lawsFile.setValidFlag(0); +//// lawsFile.setCreationTime(new Date()); +//// lawsFile.setModifyTime(new Date()); +//// countSuccess = sarFileSplitItemsFileEODao.insertSelective(lawsFile); +// } +// return countSuccess; +// } +// +// /** +// * 文档转换逻辑 +// * @param attFileEO +// */ +// public void insertOrUpdateStandInfo(AttFileEO attFileEO){ +// +// } +// +// +//} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/controller/OtConvertController.java b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/controller/OtConvertController.java new file mode 100644 index 00000000..3a182379 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/controller/OtConvertController.java @@ -0,0 +1,124 @@ +package com.adc.da.convert.otConvert.controller; + + +import com.adc.da.att.controller.AttFileEOController; +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.convert.common.AsposeOfficeConvertUtils; +import com.adc.da.convert.mq.CreateConvertMQService; +import com.adc.da.convert.otConvert.service.IOtConvertService; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import com.adc.da.convert.otConvert.entity.OtConvert; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** +*

+ * 流程文档转换记录表 前端控制器 + *

+* +* @author super_liu +* @since 2021-08-12 +*/ +@RestController +@Api(tags = "|OtConvert| 文档转换") +@RequestMapping("/${restPath}/OtConvert") +public class OtConvertController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(OtConvertController.class); + + @Value("${file.path}") + private String filePath;//文件存储路径 + + @Value("${upload.file.white.lists}") + private String uploadFileWhiteLists; //上传文件白名单 + + @Autowired + private IOtConvertService iOtConvertService; + + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private CreateConvertMQService createConvertMQService; + + @ApiOperation(value = "|OtActConvertEO|根据文件ID获取流程转换文档") + @GetMapping(value = "/getConvertFileByAttId") + public ResponseMessage getConvertFileByAttId(String attId) throws Exception { + // 根据attId查到地址 + if(StringUtils.isNotBlank(attId)){ + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("ACT_FILE_ID",attId); + List resultList = iOtConvertService.list(wrapper); + if(resultList!=null && !resultList.isEmpty()){ + OtConvert convertEO = resultList.get(0); + if(StringUtils.isNotBlank(convertEO.getConvertFileId())){ + AttFileEO attFileEO = attFileEOService.getFileInfo(convertEO.getConvertFileId()); + convertEO.setConvertFileInfo(attFileEO); + return Result.success(convertEO); + }else{ + return Result.success("-100","查询的转件文件未找到,请检查状态",convertEO); + } + }else{ + return Result.error("-1","查询的转换记录不存在",null); + } + }else{ + return Result.error("-1","查询的转换文档ID不存在",null); + } + } + + /** + * @Author super_liu + * @Description 查询文件信息 + * Date 2018/10/10 18:41 + * @Param [fileId] + * @return com.adc.da.util.http.ResponseMessage + **/ + @ApiOperation(value = "|File|查询文件信息") + @GetMapping("/convertFile") + public ResponseMessage getAttFileInfo(AttFileEO attFileEO){ + createConvertMQService.sendConvertMQ(attFileEO); + return Result.success(""); + } + + + + /** + * @Author zhangyanduan + * @Description 根据ATTID将文件转换为PDF文件并归档返回ATTID + * Date 2022年4月18日 + * @Param [fileId] + * @return com.adc.da.util.http.ResponseMessage + **/ + @ApiOperation(value = "根据ATTID将文件转换为PDF文件并归档返回ATTID") + @GetMapping("/convertFileToFileId") + public ResponseMessage convertFileToFileId(String attId){ + AttFileVo attFileVo = createConvertMQService.convertWordFileToPdfFile(attId); + return Result.success(attFileVo); + } + + + +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/dao/OtConvertDao.java b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/dao/OtConvertDao.java new file mode 100644 index 00000000..dde7e784 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/dao/OtConvertDao.java @@ -0,0 +1,16 @@ +package com.adc.da.convert.otConvert.dao; + +import com.adc.da.convert.otConvert.entity.OtConvert; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 流程文档转换记录表 Mapper 接口 + *

+ * + * @author super_liu + * @since 2021-08-12 + */ +public interface OtConvertDao extends BaseMapper { + +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/entity/OtActConvertEO.java b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/entity/OtActConvertEO.java new file mode 100644 index 00000000..a6d00c6d --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/entity/OtActConvertEO.java @@ -0,0 +1,144 @@ +package com.adc.da.convert.otConvert.entity; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + * 功能:OT_ACT_CONVERT OtActConvertEOEntity
+ * 作者:code generator
+ * 日期: 2021-03-19
+ * 版权所有:版权归北京卡达克数据技术中心所有。
+ */ +public class OtActConvertEO extends BaseEntity { + + private String id; + private String actFileId; + private String convertState; + private String convertFileId; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + // 转换后文件信息 + private AttFileEO ConvertFileInfo; + + + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
+ *

字段列表:

+ *
  • id -> id
  • + *
  • actFileId -> act_file_id
  • + *
  • convertState -> convert_state
  • + *
  • convertFileId -> convert_file_id
  • + *
  • createTime -> create_time
  • + *
  • modifyTime -> modify_time
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) { return null; }; + switch (fieldName) { + case "id": return "id"; + case "actFileId": return "act_file_id"; + case "convertState": return "convert_state"; + case "convertFileId": return "convert_file_id"; + case "createTime": return "create_time"; + case "modifyTime": return "modify_time"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • act_file_id -> actFileId
  • + *
  • convert_state -> convertState
  • + *
  • convert_file_id -> convertFileId
  • + *
  • create_time -> createTime
  • + *
  • modify_time -> modifyTime
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) { return null; }; + switch (columnName) { + case "id": return "id"; + case "act_file_id": return "actFileId"; + case "convert_state": return "convertState"; + case "convert_file_id": return "convertFileId"; + case "create_time": return "createTime"; + case "modify_time": return "modifyTime"; + default: return null; + } + } + + /** 主键 **/ + public String getId() { + return this.id; + } + + /** 主键 **/ + public void setId(String id) { + this.id = id; + } + + /** 流程中待转换文件ID **/ + public String getActFileId() { + return this.actFileId; + } + + /** 流程中待转换文件ID **/ + public void setActFileId(String actFileId) { + this.actFileId = actFileId; + } + + /** 转换状态:LODING:待转换 SUCCESS:成功 ERROR:错误 **/ + public String getConvertState() { + return this.convertState; + } + + /** 转换状态:LODING:待转换 SUCCESS:成功 ERROR:错误 **/ + public void setConvertState(String convertState) { + this.convertState = convertState; + } + + /** 转换后文件ID **/ + public String getConvertFileId() { + return this.convertFileId; + } + + /** 转换后文件ID **/ + public void setConvertFileId(String convertFileId) { + this.convertFileId = convertFileId; + } + + /** 数据创建时间 **/ + public Date getCreateTime() { + return this.createTime; + } + + /** 数据创建时间 **/ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** 数据修改时间 **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** 数据修改时间 **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + + public AttFileEO getConvertFileInfo() { + return ConvertFileInfo; + } + + public void setConvertFileInfo(AttFileEO convertFileInfo) { + ConvertFileInfo = convertFileInfo; + } +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/entity/OtConvert.java b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/entity/OtConvert.java new file mode 100644 index 00000000..317086c6 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/entity/OtConvert.java @@ -0,0 +1,69 @@ +package com.adc.da.convert.otConvert.entity; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * 流程文档转换记录表 + *

    + * + * @author super_liu + * @since 2021-08-12 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="OtConvert对象", description="流程文档转换记录表") +public class OtConvert extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "待转换文件ID") + @TableField("ACT_FILE_ID") + private String actFileId; + + @ApiModelProperty(value = "转换状态:LODING:待转换 SUCCESS:成功 ERROR:错误") + @TableField("CONVERT_STATE") + private String convertState; + + @ApiModelProperty(value = "转换后文件ID") + @TableField("CONVERT_FILE_ID") + private String convertFileId; + + @ApiModelProperty(value = "数据创建时间") + @TableField("CREATE_TIME") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "数据修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + // 转换后文件信息 + @TableField(exist = false) + private AttFileEO ConvertFileInfo; +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/service/IOtConvertService.java b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/service/IOtConvertService.java new file mode 100644 index 00000000..d276ba98 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/service/IOtConvertService.java @@ -0,0 +1,16 @@ +package com.adc.da.convert.otConvert.service; + +import com.adc.da.convert.otConvert.entity.OtConvert; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 流程文档转换记录表 服务类 + *

    + * + * @author super_liu + * @since 2021-08-12 + */ +public interface IOtConvertService extends IService { + +} diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/service/impl/OtConvertServiceImpl.java b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/service/impl/OtConvertServiceImpl.java new file mode 100644 index 00000000..a234a431 --- /dev/null +++ b/adc-da-convert/src/main/java/com/adc/da/convert/otConvert/service/impl/OtConvertServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.convert.otConvert.service.impl; + +import com.adc.da.convert.otConvert.entity.OtConvert; +import com.adc.da.convert.otConvert.dao.OtConvertDao; +import com.adc.da.convert.otConvert.service.IOtConvertService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 流程文档转换记录表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-08-12 + */ +@Service +public class OtConvertServiceImpl extends ServiceImpl implements IOtConvertService { + +} diff --git a/adc-da-convert/src/main/lib/aspose-cells-8.5.2.jar b/adc-da-convert/src/main/lib/aspose-cells-8.5.2.jar new file mode 100644 index 00000000..d0e1aca3 Binary files /dev/null and b/adc-da-convert/src/main/lib/aspose-cells-8.5.2.jar differ diff --git a/adc-da-convert/src/main/lib/aspose-words-15.8.0-jdk16.jar b/adc-da-convert/src/main/lib/aspose-words-15.8.0-jdk16.jar new file mode 100644 index 00000000..c0e699fc Binary files /dev/null and b/adc-da-convert/src/main/lib/aspose-words-15.8.0-jdk16.jar differ diff --git a/adc-da-convert/src/main/lib/aspose.slides-16.7.0.jar b/adc-da-convert/src/main/lib/aspose.slides-16.7.0.jar new file mode 100644 index 00000000..492ffa72 Binary files /dev/null and b/adc-da-convert/src/main/lib/aspose.slides-16.7.0.jar differ diff --git a/adc-da-convert/src/main/lib/jodconverter-2.2.2.jar b/adc-da-convert/src/main/lib/jodconverter-2.2.2.jar new file mode 100644 index 00000000..d033256e Binary files /dev/null and b/adc-da-convert/src/main/lib/jodconverter-2.2.2.jar differ diff --git a/adc-da-convert/src/main/resources/license.xml b/adc-da-convert/src/main/resources/license.xml new file mode 100644 index 00000000..244a16d7 --- /dev/null +++ b/adc-da-convert/src/main/resources/license.xml @@ -0,0 +1,14 @@ + + + + Aspose.Total for Java + Aspose.Words for Java + + Enterprise + 20991231 + 20991231 + 8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7 + + sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU= + + \ No newline at end of file diff --git a/adc-da-convert/src/main/resources/mybatis/mapper/OtConvert/OtConvertMapper.xml b/adc-da-convert/src/main/resources/mybatis/mapper/OtConvert/OtConvertMapper.xml new file mode 100644 index 00000000..c97fd46e --- /dev/null +++ b/adc-da-convert/src/main/resources/mybatis/mapper/OtConvert/OtConvertMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java new file mode 100644 index 00000000..549d2847 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java @@ -0,0 +1,31 @@ +package com.adc.da.login.exception; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * 全局异常处理 + * + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

    + * Created at 2020/8/6 5:03 下午 + */ +//@RestControllerAdvice +public class SysRuntimeExceptionHandler { + + @ExceptionHandler(TokenRuntimeException.class) + public ResponseMessage tokenRuntimeException(TokenRuntimeException e) { + e.printStackTrace(); + return Result.error(e.getCode(), e.getMsg()); + } + + @ExceptionHandler(Exception.class) + public ResponseMessage handlerException(Exception e){ + e.printStackTrace(); + return Result.error(); + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java new file mode 100644 index 00000000..01fa4a49 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java @@ -0,0 +1,24 @@ +package com.adc.da.login.exception; + +import lombok.Data; + +/** + * 自定义 token 异常 + * + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

    + * Created at 2020/8/6 4:58 下午 + */ +@Data +public class TokenRuntimeException extends Exception{ + + private String code = "401"; + private String msg; + + public TokenRuntimeException(String msg) { + super(msg); + } + +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/rest/LoginRestController.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/rest/LoginRestController.java index 9ab1480c..0f93f85a 100644 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/rest/LoginRestController.java +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/rest/LoginRestController.java @@ -3,211 +3,274 @@ package com.adc.da.login.rest; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; -import com.adc.da.login.util.JWTUtil; -import com.adc.da.login.util.UserUtils; -import com.adc.da.login.vo.LoginVO; -import com.adc.da.sys.entity.MenuEO; +import com.adc.da.login.util.IDMUtil; +import com.adc.da.login.util.IpUtil; +import com.adc.da.login.util.JwtUtils; +import com.adc.da.login.util.WeLinkUtil; +import com.adc.da.login.vo.WeLinkVO; +import com.adc.da.sys.entity.LoginInfoEO; import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.service.ILoginInfoEOService; import com.adc.da.sys.service.IUserEOService; import com.adc.da.util.Encodes; import com.adc.da.util.PasswordUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import sun.misc.BASE64Encoder; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; +import java.io.UnsupportedEncodingException; +import java.net.*; import java.nio.charset.StandardCharsets; -import java.util.List; -import java.util.Map; +import java.util.Enumeration; @Validated @Controller -@RequestMapping(value = "/auth") -@Api(description = "登录接口") +@RequestMapping(value = "/api") +@Api(tags = "登录接口") @Slf4j public class LoginRestController { @Autowired private IUserEOService userService; - - - /** - * 读取配置文件判断是否需要开启Base64加密,默认值为false - */ - @Value("${isPassEncrypted:false}") - private boolean isPassEncrypted; - - /** - * 无缓存,用于校验 - */ - private static final String NO_CACHE = "no-cache"; - - /** - * 登录失败Map字段 - */ - private static final String LOGIN_FAIL_MAP = "loginFailMap"; - - /** - * 验证码 - */ - private static final Object VERIFY_CODE = "VerifyCode"; - - /** - * 10分钟内最大错误次数 - */ - @Value("${maxLoginErrorCount:3}") - private int maxLoginErrorCount; - - - /** - * 读取验证码模式配置, - * 1为不开启,2为开启,3为三次输错用户名或密码才开启, - * 默认为1 - *

    - * 若配置文件缺少该参数,将设置为1 - */ - @Value("${verifyCodeMode:1}") - private int verifyCodeMode; - + @Autowired + private IDMUtil idmUtil; + @Autowired + private WeLinkUtil weLinkUtil; + @Autowired + private JwtUtils jwtUtils; + @Autowired + private ILoginInfoEOService loginInfoEOService; @ApiOperation(value = "登录") +// @GetMapping(value = "/login") @PostMapping(value = "/login") @ResponseBody - public ResponseMessage loginWithVerifyCode(HttpServletResponse response, @RequestBody LoginVO loginVO) { - String username = loginVO.getUsername(); - String password = loginVO.getPassword(); - String key = loginVO.getKey(); - - if (StringUtils.isBlank(username)) { - return Result.error("r0014", "登录名不能为空"); - } - if (StringUtils.isBlank(password)) { - return Result.error("r0016", "密码不能为空"); - } - if (StringUtils.isBlank(key)) { - return Result.error("key不能为空"); - } - - - - UserEO userEO = userService.getUserByLoginNameNotDeleted(username); - if (null == userEO) { - log.info("用户[{}]身份验证失败", username); - return Result.error("r0011", "您输入的帐号或密码有误"); - } - if (PasswordUtils.validatePassword(password, userEO.getPassword())) { - String token = JWTUtil.sign(username, userEO.getPassword(), userEO.getUsid()); - response.setHeader("Authorization", token); - response.addHeader("Access-Control-Allow-Headers", "Authorization"); - return Result.success(token); - } else { - log.info("用户[{}]密码验证失败", username); - return Result.error("r0011", "您输入的帐号或密码有误"); - } - } - - - - @ApiOperation(value = "登录") - @GetMapping(value = "/login") - @ResponseBody public ResponseMessage loginRest(HttpServletRequest request, HttpServletResponse response, @RequestParam @NotNull(message = "请输入用户名") String username, @RequestParam @NotNull(message = "请输入密码") String password, - @RequestParam(value = "isRememberMe", defaultValue = "false") Boolean isRememberMe, String verifyCode) { + @RequestParam(value = "isRememberMe", defaultValue = "false") Boolean isRememberMe, String verifyCode) throws UnsupportedEncodingException { UserEO userEO = userService.getUserByLoginNameNotDeleted(username); if (null == userEO) { log.info("用户[{}]身份验证失败", username); return Result.error("r0011", "您输入的帐号或密码有误"); } + userEO.setInstitutionNameDepartment(userService.getName(userEO.getInstitutionId())); if(userEO.getDisableFlag()==1){ log.info("用户[{}]身份验证失败", username); return Result.error("r0011", "您输入的帐号已禁用"); } if (PasswordUtils.validatePassword(password, userEO.getPassword())) { - String token = JWTUtil.sign(username, userEO.getUsid(),userEO.getPassword()); - response.setHeader("Authorization", token); - response.addHeader("Access-Control-Allow-Headers", "Authorization"); - return Result.success(token); + String token = jwtUtils.generateToken(userEO.getUsid()); + // 加密重要信息 + BASE64Encoder encoder = new BASE64Encoder(); + userEO.setToken(token); + String userStr = JSON.toJSONString(userEO); + String userStr2 = URLEncoder.encode(userStr,"UTF-8"); + userStr = encoder.encode(userStr2.getBytes()); + + LoginInfoEO loginInfoEO=new LoginInfoEO(); + loginInfoEO.setUserId(userEO.getUsid()); + loginInfoEO.setLoginAddress(IpUtil.getIpAddr(request)); + loginInfoEOService.saveBean(loginInfoEO); + return Result.success(userStr); } else { log.info("用户[{}]密码验证失败", username); return Result.error("r0011", "您输入的帐号或密码有误"); } } - - - - /** - * 退出登录,客户端把Token丢弃就可以 - */ - @ApiOperation(value = "退出登录") - @GetMapping("/logout") + @ApiOperation(value = "登录") +// @GetMapping(value = "/login") + @GetMapping(value = "/checkPage") @ResponseBody - public ResponseMessage logout(HttpServletResponse response,String ticket) { - UserUtils.logout(); - return Result.success(); - } - - @ApiOperation(value = "未授权访问") - @RequestMapping(path = "/401") - @ResponseBody - public ResponseMessage unauthorized() { - return Result.error("401", "Unauthorized"); - } - - /** - * 登录成功之后获取当前登录用户信息的接口 - */ - @ApiOperation(value = "获取登录用户信息") - @GetMapping("/userInfo") - @ResponseBody - public ResponseMessage userInfo(HttpServletResponse response) throws NumberFormatException { - UserEO user = UserUtils.getUser(); - if (user != null) { - return Result.success(user); + public ResponseMessage checkPage(HttpServletRequest request,@RequestParam @NotNull(message = "请输入用户名") String username) throws UnsupportedEncodingException { + username =new String(Encodes.decodeBase64(username), StandardCharsets.UTF_8); + UserEO userEO = userService.getUserByLoginNameNotDeleted(username); + if (null == userEO) { + log.info("用户[{}]身份验证失败", username); + return Result.error("r0011", "您输入的帐号不存在"); } - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - return Result.error(); + if(userEO.getDisableFlag()==1){ + log.info("用户[{}]身份验证失败", username); + return Result.error("r0011", "您输入的帐号已禁用"); + } + + String token = jwtUtils.generateToken(userEO.getUsid()); + // 加密重要信息 + BASE64Encoder encoder = new BASE64Encoder(); + userEO.setToken(token); + String userStr = JSON.toJSONString(userEO); + String userStr2 = URLEncoder.encode(userStr,"UTF-8"); + userStr = encoder.encode(userStr2.getBytes()); + + LoginInfoEO loginInfoEO=new LoginInfoEO(); + loginInfoEO.setUserId(userEO.getUsid()); + loginInfoEO.setLoginAddress(IpUtil.getIpAddr(request)); + loginInfoEOService.saveBean(loginInfoEO); + return Result.success(userStr); + } - /** - * 获取用户菜单,已用菜单管理实现 - */ - @ApiOperation(value = "获取登录用户菜单权限") - @GetMapping("/userMenu") + @ApiOperation(value = "通过welink免登录授权码查询iftapp免登录授权码") + @PostMapping(value = "/getTokenToWeLink") @ResponseBody - public ResponseMessage> userMenu(){ - return Result.success(UserUtils.getMenuList()); + public ResponseMessage getIftappCodeByWelinkCode(HttpServletRequest request, WeLinkVO linkVO) throws UnsupportedEncodingException { + log.info(JSONObject.toJSONString(linkVO)); + String account = weLinkUtil.getIftappCodeByWelinkCode(linkVO); +// String account = "zhangyanduan001"; + log.info("userAccount:" +account); + if(StringUtils.isBlank(account)){ + return Result.error("r0011", "用户不存在"); + } + UserEO userEO = userService.getUserByLoginNameNotDeleted(account); + if (null == userEO) { + return Result.error("r0011", "用户不存在"); + } + if(userEO.getDisableFlag()==1){ + return Result.error("r0011", "帐号已禁用"); + } + String position = userService.selectPositionByUserId(account); + if(StringUtils.isBlank(position)){ + return Result.error("r0011", "无配置岗位"); + } + String token = jwtUtils.generateToken(userEO.getUsid()); + userEO.setToken(token); + // 加密重要信息 + BASE64Encoder encoder = new BASE64Encoder(); + String userStr = JSON.toJSONString(userEO); + String userStr2 = URLEncoder.encode(userStr,"UTF-8"); + userStr = encoder.encode(userStr2.getBytes()); + LoginInfoEO loginInfoEO=new LoginInfoEO(); + loginInfoEO.setUserId(userEO.getUsid()); + loginInfoEO.setLoginAddress(IpUtil.getIpAddr(request)); + loginInfoEOService.saveBean(loginInfoEO); + return Result.success(userStr); } - /** - * 修改当前登录用户密码 - */ - @ApiOperation(value = "修改密码") - @PutMapping("/updatePassword") + @ApiOperation(value = "登录") +// @GetMapping(value = "/login") + @GetMapping(value = "/checkPageNoEncryption") @ResponseBody - public ResponseMessage updatePassword(@NotNull(message = "请输入旧密码") @RequestParam String oldPassword, - @NotNull(message = "请输入新密码") @RequestParam String newPassword) { - // 前台如果base64传输密文,则需要解码 - if (isPassEncrypted) { - oldPassword = new String(Encodes.decodeBase64(oldPassword), StandardCharsets.UTF_8); - newPassword = new String(Encodes.decodeBase64(newPassword), StandardCharsets.UTF_8); + public ResponseMessage checkPageNoEncryption(HttpServletRequest request,@RequestParam @NotNull(message = "请输入用户名") String username) throws UnsupportedEncodingException { + UserEO userEO = userService.getUserByLoginNameNotDeleted(username); + if (null == userEO) { + log.info("用户[{}]身份验证失败", username); + return Result.error("r0011", "您输入的帐号不存在"); } - if (!newPassword.matches("^(?![0-9]*$)[a-zA-Z0-9]{6,10}$")) { - return Result.error("r0018", "新密码必须6-10位且不能纯数字"); + if(userEO.getDisableFlag()==1){ + log.info("用户[{}]身份验证失败", username); + return Result.error("r0011", "您输入的帐号已禁用"); } - userService.updatePassword(UserUtils.getUserId(), oldPassword, newPassword); - return Result.success(); + + String token = jwtUtils.generateToken(userEO.getUsid()); + log.info(token); + // 加密重要信息 + BASE64Encoder encoder = new BASE64Encoder(); + userEO.setToken(token); + String userStr = JSON.toJSONString(userEO); + String userStr2 = URLEncoder.encode(userStr,"UTF-8"); + userStr = encoder.encode(userStr2.getBytes()); + + LoginInfoEO loginInfoEO=new LoginInfoEO(); + loginInfoEO.setUserId(userEO.getUsid()); + loginInfoEO.setLoginAddress(IpUtil.getIpAddr(request)); + loginInfoEOService.saveBean(loginInfoEO); + return Result.success(userStr); + } + + @ApiOperation(value = "登录") + @PostMapping(value = "/loginIdm") + @ResponseBody + public ResponseMessage loginRest(HttpServletRequest request,String code) throws UnsupportedEncodingException { + String account = idmUtil.idmLogin(code); + if(StringUtils.isBlank(account)){ + return Result.error("r0011", "用户不存在"); + } + /** + * TODO OA 用户不全 待同步 + */ + UserEO userEO = userService.getUserByLoginNameNotDeleted(account); + userEO.setInstitutionNameDepartment(userService.getName(userEO.getInstitutionId())); + if (null == userEO) { + return Result.error("r0011", "用户不存在"); + } + if(userEO.getDisableFlag()==1){ + return Result.error("r0011", "帐号已禁用"); + } + String position = userService.selectPositionByUserId(account); + if(StringUtils.isBlank(position)){ + return Result.error("r0011", "无配置岗位"); + } + String token = jwtUtils.generateToken(userEO.getUsid()); + userEO.setToken(token); + // 加密重要信息 + BASE64Encoder encoder = new BASE64Encoder(); + String userStr = JSON.toJSONString(userEO); + String userStr2 = URLEncoder.encode(userStr,"UTF-8"); + userStr = encoder.encode(userStr2.getBytes()); + LoginInfoEO loginInfoEO=new LoginInfoEO(); + loginInfoEO.setUserId(userEO.getUsid()); + loginInfoEO.setLoginAddress(IpUtil.getIpAddr(request)); + loginInfoEOService.saveBean(loginInfoEO); + return Result.success(userStr); + } + + @ApiOperation(value = "登出") + @PostMapping(value = "/logout") + public void logout(HttpServletRequest request, HttpServletResponse response){ + Cookie[] cookies = request.getCookies(); + try { + for(int i=0;i < cookies.length;i++) { + Cookie cookie = new Cookie(cookies[i].getName(), null); + cookie.setMaxAge(0); + cookie.setPath("testsso1.foton.com.cn");//根据你创建cookie的路径进行填写 + response.addCookie(cookie); + } + }catch(Exception ex) { + System.out.println("清空Cookies发生异常!"); + + } + } + + public static String getIpAddress() { + try { + Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces(); + InetAddress ip = null; + while (allNetInterfaces.hasMoreElements()) { + NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement(); + if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) { + continue; + } else { + Enumeration addresses = netInterface.getInetAddresses(); + while (addresses.hasMoreElements()) { + ip = addresses.nextElement(); + if (ip != null && ip instanceof Inet4Address) { + return ip.getHostAddress(); + } + } + } + } + } catch (Exception e) { + System.err.println("IP地址获取失败" + e.toString()); + } + return ""; + } + + + } diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTFilter.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTFilter.java deleted file mode 100644 index 03366e66..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTFilter.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.adc.da.login.security; - -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.serializer.SerializerFeature; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authc.AuthenticationToken; -import org.apache.shiro.subject.Subject; -import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.RequestMethod; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * JWT过滤器,针对请求进行拦截过滤 - */ -@Slf4j -public class JWTFilter extends BasicHttpAuthenticationFilter { - //10分钟后刷新token - private static final int tokenRefreshInterval = 60 * 10; - - /** - * 这里我们详细说明下为什么最终返回的都是true,即允许访问 - *例如我们提供一个地址 GET /article - *登入用户和游客看到的内容是不同的 - *如果在这里返回了false,请求会被直接拦截,用户看不到任何东西 - *所以我们在这里返回true,Controller中可以通过 subject.isAuthenticated() 来判断用户是否登入 - *如果有些资源只有登入用户才能访问,我们只需要在方法上面加上 @RequiresAuthentication 注解即可 - *但是这样做有一个缺点,就是不能够对GET,POST等请求进行分别过滤鉴权(因为我们重写了官方的方法),但实际上对应用影响不大 - */ - @Override - protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { - if (isLoginAttempt(request, response)) { - try { - return executeLogin(request, response); - } catch (Exception e) { - responseError(request, response); - return false; - } - }else{ - return false; - } - - } - - - /** - * 检测header里面是否包含Authorization字段 - * @param request - * @param response - * @return - */ - @Override - protected boolean isLoginAttempt(ServletRequest request, ServletResponse response) { - HttpServletRequest req = (HttpServletRequest) request; - String authorization = req.getHeader("Authorization"); - log.debug("判断用户是否想要登录:{}",authorization); - return authorization != null; - } - - - /** - * 认证失败后调用的方法 - * @param request - * @param response - * @return - * @throws Exception - */ - @Override - protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { - this.responseError(request,response); - return false; - } - - @Override - protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception{ - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - String authorization = httpServletRequest.getHeader("Authorization"); - log.debug("用户开始认证x:{}",authorization); - JWTToken token = new JWTToken(authorization); - // 提交给realm进行登入,如果错误他会抛出异常并被捕获 - getSubject(request, response).login(token); - // 如果没有抛出异常则代表登入成功,返回true - return true; - } - - @Override - protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, ServletResponse response) throws Exception { - if(token instanceof JWTToken){ - JWTToken jwtToken= (JWTToken) token; - //TODO 此处需要设置token自动续期功能 - } - - return true; - } - - @Override - protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin")); - httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE"); - httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers")); - httpServletResponse.addHeader("Access-Control-Allow-Headers", "Authorization"); - // 跨域时会首先发送一个option请求,这里我们给option请求直接返回正常状态 - if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) { - httpServletResponse.setStatus(HttpStatus.OK.value()); - return false; - } - return super.preHandle(request, response); - } - - /** - * 将非法请求跳转到 /401 - */ - private void responseError(ServletRequest req, ServletResponse resp) { - try { - HttpServletResponse httpServletResponse = (HttpServletResponse) resp; - if(httpServletResponse.isCommitted()){ - return; - } - //此处需要返回统一的错误对象 以便应对统一的异常处理 - JSONObject result=new JSONObject(); - result.put("respCode","A404"); - result.put("ok",false); - result.put("message","认证失败"); - result.put("data",null); - httpServletResponse.setHeader("Content-Type", "application/json"); - httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true"); - httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET, POST"); - httpServletResponse.setHeader("Access-Control-Allow-Origin", "*"); - httpServletResponse.setHeader("Access-Control-Max-Age", "3600"); - // response.setHeader("Content-type", "application/json;charset=UTF-8"); - httpServletResponse.setStatus(HttpServletResponse.SC_OK); - httpServletResponse.setContentType("application/json;charset=UTF-8"); - httpServletResponse.setCharacterEncoding("UTF-8"); - PrintWriter printWriter = httpServletResponse.getWriter(); - printWriter.append(result.toString(SerializerFeature.WriteMapNullValue)); - printWriter.flush(); -// httpServletResponse.sendRedirect("/401"); - } catch (IOException e) { - log.error(e.getMessage()); - } - } - - - private boolean shouldTokenRefresh(JWTToken jwtToken) { -// LocalDateTime issueTime = LocalDateTime.ofInstant(issueAt.toInstant(), ZoneId.systemDefault()); -// return LocalDateTime.now().minusSeconds(tokenRefreshInterval).isAfter(issueTime); - return true; - } - -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTRealm.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTRealm.java deleted file mode 100644 index e70c347e..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTRealm.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.adc.da.login.security; - -import com.adc.da.login.util.JWTUtil; -import com.adc.da.login.util.UserUtils; -import com.adc.da.sys.entity.UserEO; -import com.adc.da.sys.service.IUserEOService; -import org.apache.shiro.authc.AuthenticationException; -import org.apache.shiro.authc.AuthenticationInfo; -import org.apache.shiro.authc.AuthenticationToken; -import org.apache.shiro.authc.SimpleAuthenticationInfo; -import org.apache.shiro.authz.AuthorizationInfo; -import org.apache.shiro.authz.SimpleAuthorizationInfo; -import org.apache.shiro.realm.AuthorizingRealm; -import org.apache.shiro.subject.PrincipalCollection; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.io.Serializable; -import java.util.*; - -//@Service -public class JWTRealm extends AuthorizingRealm { - - private static final Logger logger = LoggerFactory.getLogger(JWTRealm.class); - - private IUserEOService userEOService; - - /** - * JWT签名密钥 - */ - public static final String SECRET = "AyX3TWpHIkPfE9rqaDiYV416d0nguURLQ8vhNzBlK7MGcOJjmoZ2w5stSeCFxb16"; - - @Autowired - public void setUserEOService(IUserEOService userEOService) { - this.userEOService = userEOService; - } - - /** - * 必须重写此方法,不然Shiro会报错 - */ - @Override - public boolean supports(AuthenticationToken token) { - return token instanceof JWTToken; - } - - - - /** - * 此方法调用hasRole,hasPermission的时候才会进行回调. - *

    - * 权限信息.(授权): - * 1、如果用户正常退出,缓存自动清空; - * 2、如果用户非正常退出,缓存自动清空; - * 3、如果我们修改了用户的权限,而用户不退出系统,修改的权限无法立即生效。 - * (需要手动编程进行实现;放在service进行调用) - * 在权限修改后调用realm中的方法,realm已经由spring管理,所以从spring中获取realm实例,调用clearCached方法; - * :Authorization 是授权访问控制,用于对用户进行的操作授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。 - * - * @param principalCollection - * @return - */ - @Override - protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { - String username = JWTUtil.getUsername(principalCollection.toString()); - if (username == null) { - return null; - } - UserEO user = userEOService.getUserByLoginNameNotDeleted(username); - if (user != null) { - try { - return UserUtils.getAuthInfo(); - } catch (NumberFormatException e) { - logger.error("AuthorizationInfo NumberFormatException", e); - } catch (Exception e) { - logger.error("AuthorizationInfo Exception", e); - } - } - return null; - } - - /** - * 认证信息(身份验证) - * Authentication 是用来验证用户身份 - * - * @param authenticationToken - * @return - * @throws AuthenticationException - */ - @Override - protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { - String token = (String) authenticationToken.getCredentials(); - // 解密获得username,用于和数据库进行对比 - String username = JWTUtil.getUsername(token); - if (username == null) { - throw new AuthenticationException("token 无效!"); - } - - UserEO user = userEOService.getUserByLoginNameNotDeleted(username); - if (user == null) { - throw new AuthenticationException("用户"+username+"不存在") ; - } - - if (!JWTUtil.verify(token, username,user.getUsid(),user.getPassword())) { - throw new AuthenticationException("账户密码错误!"); - } - return new SimpleAuthenticationInfo(token, token, "jwtRealm"); - } - - /** - * 授权用户信息 - */ - public static class Principal implements Serializable { - - private static final long serialVersionUID = 1L; - - private String id; - - private String loginName; - - private transient Map cacheMap; - - public Principal(UserEO user) { - this.id = user.getUsid() == null ? "" : String.valueOf(user.getUsid()); - this.loginName = user.getAccount(); - } - - public String getId() { - return id; - } - - public String getLoginName() { - return loginName; - } - - public Map getCacheMap() { - if (cacheMap == null) { - cacheMap = new HashMap<>(); - } - return cacheMap; - } - } - -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTToken.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTToken.java deleted file mode 100644 index 6d857613..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/JWTToken.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.adc.da.login.security; - -import org.apache.shiro.authc.AuthenticationToken; - -/** - * JWT认证token实体对象 - */ -public class JWTToken implements AuthenticationToken { - - - private static final long serialVersionUID = 613047528940906064L; - // 秘钥 - private String token; - - public JWTToken(String token) { - this.token = token; - } - - @Override - public Object getPrincipal() { - return getToken(); - } - - @Override - public Object getCredentials() { - return getToken(); - } - - public String getToken() { - return token; - } -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/TokenInterceptor.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/TokenInterceptor.java new file mode 100644 index 00000000..35f48538 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/TokenInterceptor.java @@ -0,0 +1,80 @@ +package com.adc.da.login.security; + +import com.adc.da.login.exception.TokenRuntimeException; +import com.adc.da.login.util.JwtUtils; +import io.jsonwebtoken.Claims; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Date; + +/** + * 创建一个 token 拦截器. + * 需要继承 HandlerInterceptorAdapter,并且声明为spring的组件 + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

    + * Created at 2020/7/30 2:19 下午 + */ +@Component +@Slf4j +public class TokenInterceptor extends HandlerInterceptorAdapter { + + // 注入jwt工具类 + @Autowired + private JwtUtils jwtUtils; + + // 重写 前置拦截方法 + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { + // 1、从请求头中获取token + String token = request.getHeader("token"); + + // 2、判断 token 是否存在 + if (token == null ||"".equals(token)) { + log.error("未登录"); + // 这里可以自定义 抛出 token 异常 + throw new TokenRuntimeException("未登录"); + } + + // 3、解析token + Claims claim = jwtUtils.getClaimsByToken(token); + + if (null == claim) { + System.out.println("token 解析错误"); + // 这里可以自定义 抛出 token 异常 + throw new TokenRuntimeException("token解析错误"); + } + + // 4、判断 token 是否过期 + Date expiration = claim.getExpiration(); + boolean tokenExpired = jwtUtils.isTokenExpired(expiration); + if (tokenExpired) { + System.out.println("token已过期,请重新登录"); + // 这里可以自定义 抛出 token 异常 + throw new TokenRuntimeException("token已过期"); + } + + // 5、 从 token 中获取员工信息 + String subject = claim.getSubject(); + + // 6、去数据库中匹配 id 是否存在 (这里直接写死了) + if (null == subject ) { + System.out.println("员工不存在"); + // 这里可以自定义 抛出 token 异常 + throw new TokenRuntimeException("员工不存在"); + } + + // 7、成功后 设置想设置的属性,比如员工姓名 + request.setAttribute("userId", subject); + request.setAttribute("userName", "张三"); + + return true; + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java new file mode 100644 index 00000000..1fb38073 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/security/WebMvcConfig.java @@ -0,0 +1,177 @@ +package com.adc.da.login.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + @Autowired + private TokenInterceptor interceptor; + + @Bean + public TokenInterceptor getSecurityInterceptor() { + return new TokenInterceptor(); + } + + /** + * 重写添加拦截器 + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + InterceptorRegistration addInterceptor = registry.addInterceptor(getSecurityInterceptor()); + + /** + * 登录三大金刚 + */ + addInterceptor.excludePathPatterns("/api/loginIdm"); + addInterceptor.excludePathPatterns("/api/checkPage"); + addInterceptor.excludePathPatterns("/api/checkPageNoEncryption"); + addInterceptor.excludePathPatterns("/api/getTokenToWeLink"); + + /** + * AWG 接口 + */ + addInterceptor.excludePathPatterns("/api/regulations/searchStandData"); + addInterceptor.excludePathPatterns("/api/regulationsTDM/standData"); + /** + * TODO 测试流程 开放 login 接口 正式环境 关闭 + */ + addInterceptor.excludePathPatterns("/api/login"); + addInterceptor.excludePathPatterns("/v2/api-docs"); + addInterceptor.excludePathPatterns("/favicon.ico"); + addInterceptor.excludePathPatterns("/webjars/**"); + addInterceptor.excludePathPatterns("/swagger-resources/**"); + addInterceptor.excludePathPatterns("/swagger-ui.html"); + addInterceptor.excludePathPatterns("/doc.html"); + addInterceptor.excludePathPatterns("/api/lawss/activiti/get_verify_by_instance"); + addInterceptor.excludePathPatterns("/api/sys/user/getById"); + addInterceptor.excludePathPatterns("/api/person/userInfo/getByUserInfoCode"); + addInterceptor.excludePathPatterns("/api/att/attFile/upload"); + // 标准拆分 模板下载 + addInterceptor.excludePathPatterns("/api/att/attFile/uploadModalFile"); + + addInterceptor.excludePathPatterns("/api/sarStandardsInfo/sar-standards-info/exportStandardsInfoExcel"); + addInterceptor.excludePathPatterns("/api/lawss/sarLawsInfo/exportStandardsInfoExcel"); + // 提供自动发起复审流程 复审数据 + addInterceptor.excludePathPatterns("/api/lawss/sarBussionessStandState/getSarBussionessStandStateProcessList"); + // 提供企标计划数据 + addInterceptor.excludePathPatterns("/api/esRevisePlan/es-revise-plan/getAllPlansByWk"); + //pcms项目数据下发开放接口 + addInterceptor.excludePathPatterns("/api/sarStandProjectLibrary/save"); + addInterceptor.excludePathPatterns("/api/sar-stand-project-team/save"); + //tc模块结构单元数据 + addInterceptor.excludePathPatterns("/api/sarModelTree/save"); + //PLM系统通过ESB推送模块单元数据 + addInterceptor.excludePathPatterns("/api/sarModelTree/syncModelDto"); + //同步用户数据 + addInterceptor.excludePathPatterns("/api/DataSync/importUserData"); + //同步组织机构数据 + addInterceptor.excludePathPatterns("/api/DataSync/importOrgData"); + //从excl中导入标准 + addInterceptor.excludePathPatterns("/api/ImportExcel/import"); + + //企标制修订-技术标准 意见导出 + addInterceptor.excludePathPatterns("/api/lawss/actSarItemsBuss/exportAllBZZXDJSBZ"); + //标准征求意见导出 + addInterceptor.excludePathPatterns("/api/slrs/sar-public-idea-all/tuallStand"); + // 标准征求意见流程意见导出 + addInterceptor.excludePathPatterns("/api/slrs/sar-public-idea-all/tuallStandYJCL"); + //标准法规清单导出 + addInterceptor.excludePathPatterns("/api/sarLawsAttrDetailedList/sar-laws-attr-detailed-list/ExportLawsById"); + //标准法规清单车型导出 + addInterceptor.excludePathPatterns("/api/sarStandProjectLibrary/exportStandAttrInfoExcel"); + //为符合项整改导出 + addInterceptor.excludePathPatterns("/api/sarStandUnqualified/sar-stand-unqualified/exportStandUnqulifiedExcel"); + //文件预览 + addInterceptor.excludePathPatterns("/api/att/attFile/getFileInfo"); + // onlyOffice 回调 + addInterceptor.excludePathPatterns("/api/lawss/activiti/recieveFile"); + + // 手机获取token + addInterceptor.excludePathPatterns("/api/lawss/activiti/loginMobile"); + + addInterceptor.excludePathPatterns("/api/lawss/activiti/processModelHisOne"); + + addInterceptor.excludePathPatterns("/api/lawss/activiti/downloadFileForSar"); + + addInterceptor.excludePathPatterns("/api/lawss/activiti/saveEditFile"); + + addInterceptor.excludePathPatterns("/api/lawss/activiti/processEditFile"); + + addInterceptor.excludePathPatterns("/api/lawss/activiti/processModelHisOneCount"); + + addInterceptor.excludePathPatterns("/api/att/attFile/getSyncPdfFileInfo"); + //附件下载 + addInterceptor.excludePathPatterns("/api/att/attFile/downloadFileForSar"); + //水印下载 + addInterceptor.excludePathPatterns("/api/att/attFile/downloadFileForSarWaterMark"); + //企业标准导出 + addInterceptor.excludePathPatterns("/api/lawss/sarBussionessStand/exportSarBussionessStand"); + + //预警导出 + addInterceptor.excludePathPatterns("/api/sys/EarlyWarning/exportWarning"); + + //标准文件检查接口 + addInterceptor.excludePathPatterns("/api/scheduled/checkFileByEncrypt"); + + //OCR回调存储文件 + addInterceptor.excludePathPatterns("/api/ocr/OCRRestful/OcrHandleResult"); + + addInterceptor.excludePathPatterns("/api/sarStandProjectLibrary/exportStandAttrInfoExcel"); + + // 拆分查看页,导出程序异常 + addInterceptor.excludePathPatterns("/api/lawss/sarFileSplitItems/exportSplitInfoZip"); + + //调研流程下载接口 + addInterceptor.excludePathPatterns("/api/att/attFile/downloadFile"); + + addInterceptor.excludePathPatterns("/api/lawss/activiti/exportProcessDetailInfo"); + + addInterceptor.excludePathPatterns("/api/lawss/activiti/getImg"); + + addInterceptor.excludePathPatterns("/api/lawss/activiti/loginMobile"); + + // 重置ES + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetALLSearchCenter"); + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/manualResetALLSearchCenter"); + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetALLSearchCenterToSearch"); + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetALLSearchCenterToFields"); + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetAStandSearchCenter"); + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetBLawsSearchCenter"); + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetCBussStandSearchCenter"); + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/syncSearchCenterData"); + //线上转换文件并保存 + addInterceptor.excludePathPatterns("/api/OtConvert/convertFileToFileId"); + + addInterceptor.excludePathPatterns("/api/att/attFile/downloadFileForSarNew"); + addInterceptor.excludePathPatterns("/api/att/attFile/downloadFileForSarWaterMarkNew"); + addInterceptor.excludePathPatterns("/api/att/attFile/uploadNew"); + addInterceptor.excludePathPatterns("/api/sarLawsDetailedList/sar-laws-detailed-list/importData"); + + //doc文檔重新轉換 + addInterceptor.excludePathPatterns("/api/sarStandardsInfo/sar-standards-info/convertDocAll_GNW"); + addInterceptor.excludePathPatterns("/api/sarStandardsInfo/sar-standards-info/convertDocAll_QB"); + + // 操作日志导出 + addInterceptor.excludePathPatterns("/api/sysLog/sys-log/exportSysLogExcelVOExcelData"); + + + + addInterceptor.excludePathPatterns("/api/search/resetSearchCenter/resetALLSearchCenterForExits"); + + +//// //测试接口使用 +// addInterceptor.excludePathPatterns("/api/**"); + + + + +// // 添加自定义拦截器,并拦截对应 url + addInterceptor.addPathPatterns("/**"); + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/CacheUtils.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/CacheUtils.java deleted file mode 100644 index 079403f4..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/CacheUtils.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.adc.da.login.util; - -import com.adc.da.util.SpringContextHolder; -import net.sf.ehcache.Cache; -import net.sf.ehcache.CacheManager; -import net.sf.ehcache.Element; - -/** - * Cache工具类 - */ -public class CacheUtils { - - private CacheUtils() { - super(); - } - - private static CacheManager cacheManager = (CacheManager) SpringContextHolder.getBean("ehCacheManagerFactoryBean"); - - private static final String SYS_CACHE = "sysCache"; - - private static final String ERROR_CACHE = "errorCache"; - - public static Object get(String key) { - return get(SYS_CACHE, key); - } - - public static void put(String key, Object value) { - put(SYS_CACHE, key, value); - } - - public static void remove(String key) { - remove(SYS_CACHE, key); - } - - //配合main模块下resource/cache/ehcache-local.xml - // - public static Object getErrorCache(String key) { - return get(ERROR_CACHE, key); - } - - public static void putErrorCache(String key, Object value) { - put(ERROR_CACHE, key, value); - } - - public static void removeErrorCache(String key) { - remove(ERROR_CACHE, key); - } - - - - public static Object get(String cacheName, String key) { - Element element = getCache(cacheName).get(key); - return element == null ? null : element.getObjectValue(); - } - - public static void put(String cacheName, String key, Object value) { - Element element = new Element(key, value); - getCache(cacheName).put(element); - } - - public static void remove(String cacheName, String key) { - getCache(cacheName).remove(key); - } - - /** - * 获得一个Cache,没有则创建一个。 - * @param cacheName - * @return - */ - private static Cache getCache(String cacheName) { - Cache cache = cacheManager.getCache(cacheName); - if (cache == null) { - cacheManager.addCache(cacheName); - cache = cacheManager.getCache(cacheName); - cache.getCacheConfiguration().setEternal(true); - } - return cache; - } - - public static CacheManager getCacheManager() { - return cacheManager; - } - -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IDMUtil.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IDMUtil.java new file mode 100644 index 00000000..73394161 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IDMUtil.java @@ -0,0 +1,73 @@ +package com.adc.da.login.util; + +import com.adc.da.ocr.util.OkHttpUtil; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Component +@Slf4j +public class IDMUtil { + + @Autowired + private OkHttpUtil okHttpUtil; + + private final String app_key = "app_slrs"; + private final String app_secret = "Fxi5LHbI5yGbQQDpVp86GcCdXeC5Bjfe"; + private final String access_url = "http://sso.foton.com.cn/oauth2.0/accessTokenByJson"; + private final String profile_ur = "http://sso.foton.com.cn/oauth2.0/profileByJson"; + private final String redirect_url = "https://srms.foton.com.cn"; + + public String idmLogin(String code){ + try{ + String access_token = ""; + Map param = new HashMap<>(); + param.put("client_id",app_key); + param.put("client_secret",app_secret); + param.put("grant_type","authorization_code"); + param.put("redirect_uri",redirect_url); + param.put("code",code); + String access_token_str = okHttpUtil.post(access_url,param,new HashMap<>()); + JSONObject atJsonObj = JSONObject.fromObject(access_token_str); + System.out.println("AccessTokenJSON:" + atJsonObj); + if (atJsonObj.has("status")) { + System.out.println("AccessTokenStatus:" + atJsonObj.get("status")); + if ("true".equals(atJsonObj.get("status").toString())) { + if (atJsonObj.has("access_token")) { + access_token = atJsonObj.get("access_token").toString(); + } + } + } + if(StringUtils.isBlank(access_token)){ + return ""; + } + Map param_p = new HashMap<>(); + param_p.put("access_token",access_token.substring(13)); + String principal_json = okHttpUtil.post(profile_ur,param_p,new HashMap<>()); + JSONObject pfjsonObj = JSONObject.fromObject(principal_json); + if (pfjsonObj.has("status")) { + System.out.println("ProfileStatus:" + pfjsonObj.get("status")); + if ("true".equals(pfjsonObj.get("status").toString())) { + if (pfjsonObj.has("id")) { + System.out.println("ID:" + pfjsonObj.get("id")); + } + if (pfjsonObj.has("attributes")) { + JSONObject attrObj = JSONObject.fromObject(pfjsonObj.get("attributes")); + if (attrObj.has("userid")) { + return attrObj.get("userid").toString(); + } + } + } + } + }catch(Exception e){ + log.error("单点登录获取用户信息失败"); + e.printStackTrace(); + } + return ""; + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IpUtil.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IpUtil.java new file mode 100644 index 00000000..9e15ea79 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/IpUtil.java @@ -0,0 +1,51 @@ +package com.adc.da.login.util; + +import javax.servlet.http.HttpServletRequest; +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * @program: LAWSSystem + * @description: 获取ip的工具类 + * @author: duyunbao + * @create: 2019-04-15 16:32 + */ +public class IpUtil { + public static String getIpAddr(HttpServletRequest request) { + String ipAddress = null; + try { + ipAddress = request.getHeader("x-forwarded-for"); + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (ipAddress.equals("127.0.0.1")) { + // 根据网卡取本机配置的IP + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ipAddress = inet.getHostAddress(); + } + } + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length() + // = 15 + if (ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + } + } catch (Exception e) { + ipAddress=""; + } + // ipAddress = this.getRequest().getRemoteAddr(); + + return ipAddress; + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JWTUtil.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JWTUtil.java deleted file mode 100644 index 1cd681d0..00000000 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JWTUtil.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.adc.da.login.util; - -import com.auth0.jwt.JWT; -import com.auth0.jwt.JWTVerifier; -import com.auth0.jwt.algorithms.Algorithm; -import com.auth0.jwt.exceptions.JWTDecodeException; -import com.auth0.jwt.interfaces.DecodedJWT; -import org.springframework.beans.factory.annotation.Value; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.Date; - -public class JWTUtil { - - // 设置过期时间,默认为2小时 - private static long EXPIRE_TIME = 120; - - @Value("${EXPIRE_TIME}") - public void setEnv(long expireTime) { - setExpireTime(expireTime); - } - - public static synchronized void setExpireTime(long expireTime) { - EXPIRE_TIME = expireTime; - } - - public static boolean verify(String token, String username,String userId, String secret) { - try { - Algorithm algorithm = Algorithm.HMAC512(secret); - JWTVerifier verifier = JWT.require(algorithm) - .withClaim("username", username).withClaim("userid", userId) - .build(); - verifier.verify(token); - return true; - } catch (Exception e) { - return false; - } - } - /** - * @Title: getUsername - * @Description: 获取token中的信息无需secret解密也能获得 - * @Author 刘仁 - * @DateTime 2019年4月1日 下午4:42:39 - * @param token - * @return - */ - public static String getUsername(String token) { - try { - DecodedJWT jwt = JWT.decode(token); - return jwt.getClaim("username").asString(); - } catch (JWTDecodeException e) { - return null; - } - } - - public static String getUserId(String token){ - try { - DecodedJWT jwt = JWT.decode(token); - return jwt.getClaim("userid").asString(); - } catch (JWTDecodeException e) { - return null; - } - } - - public static String sign(String username,String userId, String secret) { - Date date = Date - .from(LocalDateTime.now().plusMinutes(EXPIRE_TIME).atZone(ZoneId.systemDefault()).toInstant()); - Algorithm algorithm = Algorithm.HMAC512(secret); - String sign = JWT.create() - .withClaim("username", username).withClaim("userid", userId) - .withExpiresAt(date) - .sign(algorithm); - - // 附带username信息 - return sign; - } - -} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JwtUtils.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JwtUtils.java new file mode 100644 index 00000000..0296dd12 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/JwtUtils.java @@ -0,0 +1,102 @@ +package com.adc.da.login.util; + +import com.adc.da.att.entity.TsUser; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.service.IUserEOService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; + +/** + * token 工具类 + * + * @author ch + * @version 1.0.0 + * @since 1.0.0 + *

    + * Created at 2020/7/30 2:23 下午 + */ +@Component +public class JwtUtils { + + // 过期时间 + private static long expire = 6048000; + // 秘钥 + private static String secret = "HSyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9"; + + @Autowired + private IUserEOService userService; + + /** + * 创建一个token + * + * @param userId + * @return + */ + public String generateToken(String userId) { + Date now = new Date(); + Date expireDate = new Date(now.getTime() + expire); + return Jwts.builder().setHeaderParam("type", "JWT").setSubject(userId).setIssuedAt(now) + .setExpiration(expireDate).signWith( + SignatureAlgorithm.HS512, secret).compact(); + } + + /** + * 解析token + */ + public Claims getClaimsByToken(String token) { + Claims claims; + try { + claims = Jwts.parser() + .setSigningKey(secret) // 设置标识名 + .parseClaimsJws(token) //解析token + .getBody(); + } catch (ExpiredJwtException e) { + claims = e.getClaims(); + } + return claims; + } + + public String getUserIdByToken(){ + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + String user = ""; + if(attributes != null){ + HttpServletRequest request = attributes.getRequest(); + Claims claim = getClaimsByToken(request.getHeader("token")); + user = claim.getSubject(); + } + return user; + } + + public UserEO getUserByToken(){ + UserEO userEO = new UserEO(); + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + if(attributes != null){ + HttpServletRequest request = attributes.getRequest(); + //添加token + Claims claim = getClaimsByToken(request.getHeader("token")); + String subject = claim.getSubject(); + List userEOS = userService.getUser(subject); + userEO = userEOS.get(0); + } + return userEO; + } + + /** + * 判断 token 是否过期 + */ + public boolean isTokenExpired(Date expiration){ + return expiration.before(new Date()); + } + +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/UserUtils.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/UserUtils.java index ad20df07..dec6b6fb 100644 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/UserUtils.java +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/UserUtils.java @@ -1,22 +1,23 @@ package com.adc.da.login.util; -import com.adc.da.login.security.JWTRealm; -import com.adc.da.login.security.JWTRealm.Principal; +import cn.hutool.core.util.ObjectUtil; import com.adc.da.sys.entity.MenuEO; +import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.IMenuEOService; +import com.adc.da.sys.service.IRoleEOService; import com.adc.da.sys.service.IUserEOService; -import com.adc.da.util.SpringContextHolder; +import com.adc.da.util.SpringContextHolder1; import com.google.common.collect.Maps; -import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.UnavailableSecurityManagerException; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.session.InvalidSessionException; -import org.apache.shiro.subject.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import java.util.List; import java.util.Map; @@ -28,25 +29,43 @@ public class UserUtils { } private static Logger logger = LoggerFactory.getLogger(UserUtils.class); + /** - * 当前登陆用户 - */ + * 当前登陆用户 + */ public static final String CURRENT_USER = "currentUser"; - /** - * 菜单信息 - */ - public static final String CACHE_MENU_LIST = "menuList"; + /** + * 角色信息 + */ + public static final String CACHE_ROLE_LIST = "roleList"; + /** + * 菜单信息 + */ + public static final String CACHE_MENU_LIST = "menuList"; + public static final String CACHE_MENU_TREE = "menuTree"; + public static final String CACHE_AREA_LIST = "areaList"; + public static final String CACHE_OFFICE_LIST = "officeList"; + + /** + * @see JwtUtils + */ + private static JwtUtils jwtUtils = SpringContextHolder1.getBean(JwtUtils.class); /** * @see IUserEOService */ - private static IUserEOService userService = SpringContextHolder.getBean(IUserEOService.class); + private static IUserEOService userService = SpringContextHolder1.getBean(IUserEOService.class); /** * @see IMenuEOService */ - private static IMenuEOService menuService = SpringContextHolder.getBean(IMenuEOService.class); + private static IMenuEOService menuService = SpringContextHolder1.getBean(IMenuEOService.class); + + /** + * @see IRoleEOService + */ + private static IRoleEOService roleEOService = SpringContextHolder1.getBean(IRoleEOService.class); /** * 退出 @@ -65,9 +84,9 @@ public class UserUtils { * 获取当前登录用户名 */ public static String getUserName() { - JWTRealm.Principal principal = (Principal) SecurityUtils.getSubject().getPrincipal(); - if (principal != null) { - return principal.getLoginName(); + UserEO userEO = getUser(); + if (userEO != null) { + return userEO.getAccount(); } return null; } @@ -77,26 +96,25 @@ public class UserUtils { * @throws Exception */ public static String getUserId() { - UserEO userEO = getUser(); - if (userEO != null) { - return userEO.getUsid(); - } - return null; + return jwtUtils.getUserIdByToken(); } /** * 获取当前登录用户信息 */ public static UserEO getUser() { - UserEO user = (UserEO) CacheUtils.getCache(CURRENT_USER); + UserEO user = jwtUtils.getUserByToken(); if (user == null) { - String userName = getUserName(); + user = new UserEO(); + String userId = getUserId(); - if (StringUtils.isNotEmpty(userName)) { - UserEO userInDb = userService.getUserByLoginNameNotDeleted(userName); - user = ObjectUtils.clone(userInDb); - user.setPassword(null); - CacheUtils.putCache(CURRENT_USER, user); + if (StringUtils.isNotEmpty(userId)) { + List userEOS = userService.getUser(userId); + if(!userEOS.isEmpty()){ + user = ObjectUtil.clone(userEOS.get(0)); + user.setPassword(""); + CacheUtils.putCache(CURRENT_USER, user); + } } } return user; @@ -148,6 +166,33 @@ public class UserUtils { return info; } + /** + * 获取当前登录用户角色列表 + */ + public static List getRoleList() throws NumberFormatException, Exception { + List roleList = (List) CacheUtils.getCache(CACHE_ROLE_LIST); + if (roleList == null) { + UserEO user = getUser(); + if(user != null) { + roleList = roleEOService.getSysRoleListByUserId(user.getUsid()); + } + CacheUtils.putCache(CACHE_ROLE_LIST, roleList); + } + return roleList; + } + + public static String getRoleIds() throws NumberFormatException, Exception { + List roleList = getRoleList(); + if (CollectionUtils.isEmpty(roleList)) { + return ""; + } + StringBuilder roleIds = new StringBuilder(); + for (RoleEO sysRoleEO : roleList) { + roleIds.append(sysRoleEO.getId()).append(","); + } + return roleIds.substring(0, roleIds.length() - 1); + } + public static void flush() { CacheUtils.removeCache(CURRENT_USER); } @@ -173,15 +218,6 @@ public class UserUtils { public static Map getCacheMap() { Map map = Maps.newHashMap(); - try { - Subject subject = SecurityUtils.getSubject(); - JWTRealm.Principal principal = (JWTRealm.Principal) subject.getPrincipal(); - return principal != null ? principal.getCacheMap() : map; - } catch (UnavailableSecurityManagerException e) { - logger.error(e.getMessage(),e); - } catch (InvalidSessionException e) { - logger.error(e.getMessage(),e); - } return map; } } diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/WeLinkUtil.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/WeLinkUtil.java new file mode 100644 index 00000000..b76a6ec2 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/util/WeLinkUtil.java @@ -0,0 +1,72 @@ +package com.adc.da.login.util; + +import com.adc.da.login.vo.WeLinkVO; +import com.adc.da.ocr.util.OkHttpUtil; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Component +@Slf4j +public class WeLinkUtil { + + @Autowired + private OkHttpUtil okHttpUtil; + + + // 测试环境地址 +// private final String access_url = "https://iftappdev.foton.com.cn/devservertest/welink/"; + //正式环境地址 + private final String access_url = "https://iftappwelink.foton.com.cn/devserver/welink/"; + + public String getIftappCodeByWelinkCode(WeLinkVO linkVO){ + try{ + String authCode = ""; + Map param = new HashMap<>(); + param.put("code",linkVO.getCode()); + param.put("name",linkVO.getName().replace("-"," ")); + if(StringUtils.isNotBlank(linkVO.getType())){ + param.put("type",linkVO.getType()); + } + if(StringUtils.isNotBlank(linkVO.getCorpCode())){ + param.put("corpCode",linkVO.getCorpCode()); + } + log.debug("第一个接口请求地址:"+access_url+"getIftappCodeByWelinkCode"); + log.debug("请求参数为:"+ JSONObject.fromObject(param).toString()); + String access_token_str = okHttpUtil.post(access_url+"getIftappCodeByWelinkCode",param,new HashMap<>()); + JSONObject atJsonObj = JSONObject.fromObject(access_token_str); + log.info("AccessTokenJSON: "+access_token_str); + if (atJsonObj.has("data")) { + JSONObject obj = JSONObject.fromObject(atJsonObj.getOrDefault("data","")); + + if(obj.has("authCode")){ + authCode = obj.getOrDefault("authCode","").toString(); + } + } + if(StringUtils.isBlank(authCode)){ + return ""; + } + Map param_p = new HashMap<>(); + param_p.put("code",authCode); + log.debug("第二个接口请求地址:"+access_url+"getUserInfoByAuthCode"); + log.debug("请求参数为:"+JSONObject.fromObject(param_p).toString()); + String principal_json = okHttpUtil.get(access_url+"getUserInfoByAuthCode",param_p,new HashMap<>()); + JSONObject pfjsonObj = JSONObject.fromObject(principal_json); + log.info("getUserInfoByAuthCode "+principal_json); + if (pfjsonObj.has("data")) { + JSONObject obj = JSONObject.fromObject(pfjsonObj.getOrDefault("data","")); + if(obj.has("username")){ + return obj.getOrDefault("username","").toString(); + } + } + }catch(Exception e){ + log.error("通过iftapp授权码查询用户信息失败"); + } + return ""; + } +} diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/vo/WeLinkVO.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/vo/WeLinkVO.java new file mode 100644 index 00000000..6185f2d4 --- /dev/null +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/vo/WeLinkVO.java @@ -0,0 +1,12 @@ +package com.adc.da.login.vo; + +import lombok.Data; + +@Data +public class WeLinkVO { + + private String code; + private String name; + private String type; + private String corpCode; +} \ No newline at end of file diff --git a/adc-da-main/pom.xml b/adc-da-main/pom.xml index e5259ca9..352301fa 100644 --- a/adc-da-main/pom.xml +++ b/adc-da-main/pom.xml @@ -24,6 +24,26 @@ org.springframework.boot spring-boot-starter + + + org.springframework + spring-context-support + + + com.adc + adc-da-convert + 3.0.0 + + + com.adc + adc-da-slrs + 3.0.0 + + + com.adc + adc-da-activiti + 3.0.0 + com.adc adc-da-sys @@ -39,11 +59,38 @@ adc-da-jwtLogin 3.1.0 - - - - - + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + 2.2.0.RELEASE + + + + org.springframework.cloud + spring-cloud-starter-openfeign + 2.2.0.RELEASE + + + + com.adc + adc-da-search + 1.0.0 + compile + + + + + + eu.bitwalker + UserAgentUtils + 1.21 + + + + + + + @@ -61,3 +108,4 @@ + diff --git a/adc-da-main/src/main/java/com/adc/da/AdcDaApplication.java b/adc-da-main/src/main/java/com/adc/da/AdcDaApplication.java index 5525d6cc..52969ab4 100644 --- a/adc-da-main/src/main/java/com/adc/da/AdcDaApplication.java +++ b/adc-da-main/src/main/java/com/adc/da/AdcDaApplication.java @@ -1,16 +1,41 @@ package com.adc.da; +import org.apache.catalina.connector.Connector; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; +import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Bean; +import org.springframework.scheduling.annotation.EnableScheduling; +@EnableEurekaClient +@EnableFeignClients @ServletComponentScan @SpringBootApplication(exclude = SecurityAutoConfiguration.class) +@EnableScheduling +@MapperScan(value = {"com.adc.da.file.store"}) public class AdcDaApplication { public static void main(String[] args) { SpringApplication.run(AdcDaApplication.class, args); } + @Bean + public ConfigurableServletWebServerFactory webServerFactory() { + TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); + factory.addConnectorCustomizers(new TomcatConnectorCustomizer() { + @Override + public void customize(Connector connector) { + connector.setProperty("relaxedQueryChars", "|{}[]"); + } + }); + return factory; + } + } diff --git a/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java b/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java index 59b6ce91..38faf354 100644 --- a/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java +++ b/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java @@ -4,6 +4,7 @@ import com.adc.da.exception.AdcDaBaseException; import com.adc.da.http.ResponseMessage; import com.adc.da.http.ResponseMessageCodeEnum; import com.adc.da.http.Result; +import com.adc.da.login.exception.TokenRuntimeException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; @@ -12,11 +13,23 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; +import java.util.HashSet; +import java.util.Set; + @Slf4j @ControllerAdvice @Order(value=4) public class AdcDaBaseExceptionAdvice { + private static Set errMsg = new HashSet<>(); + + static { + errMsg.add("token已过期"); + errMsg.add("未登录"); + errMsg.add("token解析错误"); + errMsg.add("员工不存在"); + } + @ResponseStatus(HttpStatus.OK) @ExceptionHandler(AdcDaBaseException.class) @@ -32,6 +45,11 @@ public class AdcDaBaseExceptionAdvice { public ResponseMessage handlerAdcDaBaseException(Exception exception) { log.error(exception.getMessage(), exception); // TODO 在数据库中记录程序异常,这个地方的异常是未处理的异常,需要管理员查看并进行处理以防重复出现 + if(exception.getStackTrace() != null){ + if(errMsg.contains(exception.getMessage())){ + return Result.error(ResponseMessageCodeEnum.ERROR_TOKEN.getCode(), "token无效,请登录"); + } + } return Result.error(ResponseMessageCodeEnum.ERROR.getCode(), "程序异常,请重试。如果重复出现请联系管理员处理!"); } diff --git a/adc-da-main/src/main/java/com/adc/da/main/advice/ShiroExceptionAdvice.java b/adc-da-main/src/main/java/com/adc/da/main/advice/ShiroExceptionAdvice.java deleted file mode 100644 index 65bed1de..00000000 --- a/adc-da-main/src/main/java/com/adc/da/main/advice/ShiroExceptionAdvice.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.adc.da.main.advice; - -import com.adc.da.http.ResponseMessage; -import com.adc.da.http.Result; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authc.AuthenticationException; -import org.apache.shiro.authc.IncorrectCredentialsException; -import org.apache.shiro.authc.UnknownAccountException; -import org.apache.shiro.authz.UnauthenticatedException; -import org.apache.shiro.authz.UnauthorizedException; -import org.springframework.core.annotation.Order; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; - -@Slf4j -@ControllerAdvice -@Order(value=2) -public class ShiroExceptionAdvice { - - - @ResponseStatus(HttpStatus.UNAUTHORIZED) - @ExceptionHandler({AuthenticationException.class, UnknownAccountException.class, - UnauthenticatedException.class, IncorrectCredentialsException.class}) - @ResponseBody - public ResponseMessage unauthorized(Exception exception) { - log.warn(exception.getMessage(), exception); - log.info("catch UnknownAccountException"); - return Result.error("A404", "无权访问"); - } - - @ResponseStatus(HttpStatus.UNAUTHORIZED) - @ExceptionHandler(UnauthorizedException.class) - @ResponseBody - public ResponseMessage unauthorized1(UnauthorizedException exception) { - log.warn(exception.getMessage(), exception); - return Result.error("A404","无权访问"); - } -} diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/DefinitionUrlConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/DefinitionUrlConfig.java deleted file mode 100644 index ed910f84..00000000 --- a/adc-da-main/src/main/java/com/adc/da/main/config/DefinitionUrlConfig.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.adc.da.main.config; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * shiro 自定义URL规则设置 - */ -public class DefinitionUrlConfig { - - - - /** - * 匿名用户,无需登录 - */ - private static final String ANON = "anon"; - - - - // 拦截器 - //rest:比如/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。 - //port:比如/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的?后面的参数。 - //perms:比如/admins/user/**=perms[user:add:*],perms参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,比如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。 - //roles:比如/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,比如/admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。//要实现or的效果看http://zgzty.blog.163.com/blog/static/83831226201302983358670/ - //anon:比如/admins/**=anon 没有参数,表示可以匿名使用。 - //authc:比如/admins/user/**=authc表示需要认证才能使用,没有参数 - //authcBasic:比如/admins/user/**=authcBasic没有参数表示httpBasic认证 - //ssl:比如/admins/user/**=ssl没有参数,表示安全的url请求,协议为https - //user:比如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查 - public static Map definitionUrlOptions(){ - Map filterRuleMap = new LinkedHashMap<>(); - //TODO 此处设置URL过滤规则 默认是全部请求进行拦截,此处设置为不拦截的URL地址 - filterRuleMap.put("/api/auth/login",ANON);//登录接口 - // swagger接口文档 - filterRuleMap.put("/v2/api-docs", "anon"); - filterRuleMap.put("/webjars/**", "anon"); - filterRuleMap.put("/swagger-resources/**", "anon"); - filterRuleMap.put("/swagger-ui.html", "anon"); - filterRuleMap.put("/doc.html", "anon"); - return filterRuleMap; - } - - -} diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/DozerConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/DozerConfig.java new file mode 100644 index 00000000..446d3602 --- /dev/null +++ b/adc-da-main/src/main/java/com/adc/da/main/config/DozerConfig.java @@ -0,0 +1,24 @@ +package com.adc.da.main.config; + +import org.dozer.DozerBeanMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.Arrays; +import java.util.List; + +/** + * 各个模块的dozer配置文件 + */ +@Configuration +public class DozerConfig { + + @Bean(name = "org.dozer.Mapper") + public DozerBeanMapper dozer() { + List mappingFiles = Arrays.asList("dozer/dozer-mappings-sys.xml"); + DozerBeanMapper dozerBean = new DozerBeanMapper(); + dozerBean.setMappingFiles(mappingFiles); + return dozerBean; + } + +} diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/MyConfiguration.java b/adc-da-main/src/main/java/com/adc/da/main/config/MyConfiguration.java new file mode 100644 index 00000000..29cf1a0f --- /dev/null +++ b/adc-da-main/src/main/java/com/adc/da/main/config/MyConfiguration.java @@ -0,0 +1,25 @@ +package com.adc.da.main.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2021年08月19日 11:28 + */ +@Configuration +public class MyConfiguration implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOrigins("*") + .allowCredentials(true) + .allowedMethods("GET", "POST", "DELETE", "PUT") + .maxAge(3600); + } +} \ No newline at end of file diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/MybatisPlusConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/MybatisPlusConfig.java index 0ca71a89..58a5bb65 100644 --- a/adc-da-main/src/main/java/com/adc/da/main/config/MybatisPlusConfig.java +++ b/adc-da-main/src/main/java/com/adc/da/main/config/MybatisPlusConfig.java @@ -1,5 +1,6 @@ package com.adc.da.main.config; +import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; @@ -19,4 +20,14 @@ public class MybatisPlusConfig { return new PaginationInterceptor(); } + /*** + * 增加乐观锁机制 + * @return + */ + @Bean + public OptimisticLockerInterceptor optimisticLockerInterceptor(){ + return new OptimisticLockerInterceptor(); + } + + } diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/RestTemplateConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/RestTemplateConfig.java index 870c415d..795933c3 100644 --- a/adc-da-main/src/main/java/com/adc/da/main/config/RestTemplateConfig.java +++ b/adc-da-main/src/main/java/com/adc/da/main/config/RestTemplateConfig.java @@ -2,10 +2,13 @@ package com.adc.da.main.config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.client.RestTemplate; @@ -23,20 +26,9 @@ public class RestTemplateConfig { private static final Logger logger = LoggerFactory.getLogger(RestTemplateConfig.class); @Bean - public RestTemplate restTemplate(ClientHttpRequestFactory factory){ - RestTemplate restTemplate = new RestTemplate(factory); - // 使用 utf-8 编码集的 conver 替换默认的 conver(默认的 string conver 的编码集为"ISO-8859-1") - List> messageConverters = restTemplate.getMessageConverters(); - Iterator> iterator = messageConverters.iterator(); - while (iterator.hasNext()) { - HttpMessageConverter converter = iterator.next(); - if (converter instanceof StringHttpMessageConverter) { - iterator.remove(); - } - } - messageConverters.add(new StringHttpMessageConverter(Charset.forName("UTF-8"))); - - return restTemplate; + @LoadBalanced + public RestTemplate restTemplate(RestTemplateBuilder builder){ + return builder.build(); } @Bean diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfig.java deleted file mode 100644 index 3ab198c6..00000000 --- a/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfig.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.adc.da.main.config; - -import com.adc.da.login.security.JWTFilter; -import com.adc.da.login.security.JWTRealm; -import org.apache.shiro.cache.ehcache.EhCacheManager; -import org.apache.shiro.mgt.DefaultSecurityManager; -import org.apache.shiro.mgt.DefaultSessionStorageEvaluator; -import org.apache.shiro.mgt.DefaultSubjectDAO; -import org.apache.shiro.spring.LifecycleBeanPostProcessor; -import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; -import org.apache.shiro.spring.web.ShiroFilterFactoryBean; -import org.apache.shiro.web.mgt.DefaultWebSecurityManager; -import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; -import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; -import org.springframework.core.annotation.Order; -import org.springframework.core.io.ClassPathResource; - -import javax.servlet.Filter; -import java.util.HashMap; -import java.util.Map; - -@Configuration -@Order(value=1) -public class ShiroConfig { - - private static final String JWT_FILTER_NAME = "jwt"; - - private static final String URL_SUFFIX="/api"; - - /** - * 自定义realm,实现登录授权流程 - * @return - */ - @Bean(name="jwtRealm") - public JWTRealm jwtRealm() { - return new JWTRealm(); - } - - /** - * 配置securityManager 管理subject(默认),并把自定义realm交由manager - */ - @Bean - public DefaultSecurityManager securityManager() { - DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); - // 设置realm. - securityManager.setRealm(jwtRealm()); - //注入缓存管理器 - securityManager.setCacheManager(ehCacheManager()); - /* - * 关闭shiro自带的session,详情见文档 - * http://shiro.apache.org/session-management.html#SessionManagement-StatelessApplications%28Sessionless%29 - */ - DefaultSubjectDAO defaultSubjectDAO = new DefaultSubjectDAO(); - DefaultSessionStorageEvaluator storageEvaluator = new DefaultSessionStorageEvaluator(); - storageEvaluator.setSessionStorageEnabled(false); - defaultSubjectDAO.setSessionStorageEvaluator(storageEvaluator); - securityManager.setSubjectDAO(defaultSubjectDAO); - - return securityManager; - } - - /** - * 拦截链 - */ - @Bean - public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultSecurityManager securityManager) { - ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); - shiroFilterFactoryBean.setSecurityManager(securityManager); - shiroFilterFactoryBean.setFilters(filterMap()); - shiroFilterFactoryBean.setFilterChainDefinitionMap(definitionMap()); - - return shiroFilterFactoryBean; - } - - /** - * 自定义拦截器,处理所有请求 - */ - private Map filterMap() { - Map filterMap = new HashMap<>(); - filterMap.put(JWT_FILTER_NAME, new JWTFilter()); - return filterMap; - } - - /** - * url拦截规则 - */ - private Map definitionMap() { - // 拦截器 - //rest:比如/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。 - //port:比如/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的?后面的参数。 - //perms:比如/admins/user/**=perms[user:add:*],perms参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,比如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。 - //roles:比如/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,比如/admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。//要实现or的效果看http://zgzty.blog.163.com/blog/static/83831226201302983358670/ - //anon:比如/admins/**=anon 没有参数,表示可以匿名使用。 - //authc:比如/admins/user/**=authc表示需要认证才能使用,没有参数 - //authcBasic:比如/admins/user/**=authcBasic没有参数表示httpBasic认证 - //ssl:比如/admins/user/**=ssl没有参数,表示安全的url请求,协议为https - //user:比如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查 - Map definitionMap = DefinitionUrlConfig.definitionUrlOptions(); - definitionMap.put(URL_SUFFIX+"/**", JWT_FILTER_NAME); - return definitionMap; - } - -/* *//** - * 开启注解 - *//* - @Bean - @DependsOn("lifecycleBeanPostProcessor") - public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { - DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); - // 强制使用cglib代理,防止和aop冲突 - defaultAdvisorAutoProxyCreator.setProxyTargetClass(true); - return defaultAdvisorAutoProxyCreator; - } - - @Bean - public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { - return new LifecycleBeanPostProcessor(); - }*/ - - /** - * 开启shiro aop注解支持. 使用代理方式; 所以需要开启代码支持; - * - * @param securityManager 安全管理器 - * @return 授权Advisor - */ - @Bean("authorizationAttributeSourceAdvisor") - public AuthorizationAttributeSourceAdvisor advisor(DefaultSecurityManager securityManager) { - AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); - advisor.setSecurityManager(securityManager); - return advisor; - } - - /** - * shiro缓存管理器; - * 需要注入对应的其它的实体类中: - * 1、安全管理器:securityManager - * 可见securityManager是整个shiro的核心; - * - * @return - */ - @Bean - public EhCacheManager ehCacheManager() { - EhCacheManager cacheManager = new EhCacheManager(); - cacheManager.setCacheManagerConfigFile("classpath:cache/ehcache.xml"); - return cacheManager; - } - -} diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfiguration.java b/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfiguration.java deleted file mode 100644 index f40d34ce..00000000 --- a/adc-da-main/src/main/java/com/adc/da/main/config/ShiroConfiguration.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.adc.da.main.config; - -import com.adc.da.login.security.JWTRealm; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authc.credential.HashedCredentialsMatcher; -import org.apache.shiro.cache.ehcache.EhCacheManager; -import org.apache.shiro.mgt.DefaultSessionStorageEvaluator; -import org.apache.shiro.mgt.DefaultSubjectDAO; -import org.apache.shiro.mgt.SecurityManager; -import org.apache.shiro.spring.LifecycleBeanPostProcessor; -import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; -import org.apache.shiro.web.mgt.DefaultWebSecurityManager; -import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; -import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; -import org.springframework.core.io.ClassPathResource; - - -//@Configuration -public class ShiroConfiguration { - - @Bean(name = "ehCacheManagerFactoryBean") - public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() { - EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean(); - ClassPathResource classPathResource = new ClassPathResource("cache/ehcache-local.xml"); - ehCacheManagerFactoryBean.setConfigLocation(classPathResource); - return ehCacheManagerFactoryBean; - } - - @Bean(name = "shiroCacheManager") - @DependsOn({ "ehCacheManagerFactoryBean" }) - public EhCacheManager shiroCacheManager() { - EhCacheManager ehCacheManager = new EhCacheManager(); - ehCacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject()); - return ehCacheManager; - } - - @Bean - @DependsOn({ "lifecycleBeanPostProcessor" }) - public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { - DefaultAdvisorAutoProxyCreator proxyCreator = new DefaultAdvisorAutoProxyCreator(); - proxyCreator.setProxyTargetClass(true); - return proxyCreator; - } - - @Bean(name = "lifecycleBeanPostProcessor") - public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { - return new LifecycleBeanPostProcessor(); - } - - @Bean(name = "securityManager") - public SecurityManager securityManager() { - DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager(); - defaultWebSecurityManager.setRealm(jwtRealm()); - - // 关闭shiro自带的session - DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO(); - DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator(); - defaultSessionStorageEvaluator.setSessionStorageEnabled(false); - subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator); - defaultWebSecurityManager.setSubjectDAO(subjectDAO); - - // 自定义缓存管理器 - defaultWebSecurityManager.setCacheManager(shiroCacheManager()); - SecurityUtils.setSecurityManager(defaultWebSecurityManager); - return defaultWebSecurityManager; - } - - @Bean - public HashedCredentialsMatcher hashedCredentialsMatcher() { - HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher(); - hashedCredentialsMatcher.setHashAlgorithmName("md5");// 散列算法:这里使用MD5算法; - hashedCredentialsMatcher.setHashIterations(2);// 散列的次数,比如散列两次,相当于 - // md5(md5("")); - return hashedCredentialsMatcher; - } - - @Bean - public JWTRealm jwtRealm() { - JWTRealm jwtRealm = new JWTRealm(); - return jwtRealm; - } - - @Bean - public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() { - AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); - advisor.setSecurityManager(securityManager()); - return advisor; - } -} \ No newline at end of file diff --git a/adc-da-main/src/main/java/com/adc/da/main/config/SwaggerConfig.java b/adc-da-main/src/main/java/com/adc/da/main/config/SwaggerConfig.java index acba54fe..4d754ba5 100644 --- a/adc-da-main/src/main/java/com/adc/da/main/config/SwaggerConfig.java +++ b/adc-da-main/src/main/java/com/adc/da/main/config/SwaggerConfig.java @@ -35,7 +35,7 @@ public class SwaggerConfig { ParameterBuilder tokenPar = new ParameterBuilder(); List pars = new ArrayList<>(); - tokenPar.name("Authorization") + tokenPar.name("token") .description("令牌") .modelRef(new ModelRef("string")) .parameterType("header") diff --git a/adc-da-main/src/main/java/com/adc/da/main/file/FileUploadConfiuration.java b/adc-da-main/src/main/java/com/adc/da/main/file/FileUploadConfiuration.java new file mode 100644 index 00000000..778b921c --- /dev/null +++ b/adc-da-main/src/main/java/com/adc/da/main/file/FileUploadConfiuration.java @@ -0,0 +1,22 @@ +package com.adc.da.main.file; + +import org.springframework.boot.web.servlet.MultipartConfigFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.unit.DataSize; + +import javax.servlet.MultipartConfigElement; + +@Configuration +public class FileUploadConfiuration { + @Bean + public MultipartConfigElement multipartConfigElement() { + MultipartConfigFactory factory = new MultipartConfigFactory(); + //单个文件大小200mb + factory.setMaxFileSize(DataSize.ofMegabytes(200L)); + //设置总上传数据大小10GB + factory.setMaxRequestSize(DataSize.ofGigabytes(10L)); + + return factory.createMultipartConfig(); + } +} diff --git a/adc-da-main/src/main/java/com/adc/da/main/generate/CodeGen.java b/adc-da-main/src/main/java/com/adc/da/main/generate/CodeGen.java index ed1cb70c..6a4b9032 100644 --- a/adc-da-main/src/main/java/com/adc/da/main/generate/CodeGen.java +++ b/adc-da-main/src/main/java/com/adc/da/main/generate/CodeGen.java @@ -16,15 +16,15 @@ import java.util.Scanner; public class CodeGen { - private static final String PACKAGE_PATH="/adc-da-sys/src/main"; + private static final String PACKAGE_PATH="/adc-da-slrs/src/main"; - private static final String AUTHOR="91isoft"; + private static final String AUTHOR="zhaokaiyao"; - private static final String DB_IP="192.168.10.140:1521:orcl"; + private static final String DB_IP="123.56.177.15:3306/foton_slrs_test2"; - private static final String DB_USER="GSAR_TEST"; + private static final String DB_USER="root"; - private static final String DB_PWD="1q2w3e4r"; + private static final String DB_PWD="RsLDRj3dXtSwYjBI"; /** @@ -60,11 +60,20 @@ public class CodeGen { gc.setMapperName("%sDao"); mpg.setGlobalConfig(gc); - // 数据源配置 + // 数据源配置 ORACLE +// DataSourceConfig dsc = new DataSourceConfig(); +// dsc.setUrl("jdbc:oracle:thin:@"+DB_IP); +// // dsc.setSchemaName("public"); +// dsc.setDriverName("oracle.jdbc.OracleDriver"); +// dsc.setUsername(DB_USER); +// dsc.setPassword(DB_PWD); +// mpg.setDataSource(dsc); + + // 数据源配置 MYSQL DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:oracle:thin:@"+DB_IP); - // dsc.setSchemaName("public"); - dsc.setDriverName("oracle.jdbc.OracleDriver"); + dsc.setUrl("jdbc:mysql://"+DB_IP+"?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false"); + //dsc.setSchemaName("public");//PostgreSQL schemaName + dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername(DB_USER); dsc.setPassword(DB_PWD); mpg.setDataSource(dsc); @@ -73,7 +82,7 @@ public class CodeGen { PackageConfig pc = new PackageConfig(); pc.setModuleName(scanner("模块名")); pc.setMapper("dao"); - pc.setParent("com.adc.da"); + pc.setParent("com.adc.da.slrs"); mpg.setPackageInfo(pc); // 自定义配置 diff --git a/adc-da-main/src/main/resources/application-dev.properties b/adc-da-main/src/main/resources/application-dev.properties index 1d9acd09..a4aa4373 100644 --- a/adc-da-main/src/main/resources/application-dev.properties +++ b/adc-da-main/src/main/resources/application-dev.properties @@ -1,24 +1,27 @@ -# dev config + #============================================= # 数据库配置 #============================================= -spring.datasource.driverClassName = oracle.jdbc.OracleDriver -spring.datasource.url = jdbc:oracle:thin:@//192.168.10.140:1521/orcl -spring.datasource.username = LAWSDB -spring.datasource.password = 1q2w3e4r +spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver +spring.datasource.url = jdbc:mysql://10.100.5.111:3306/foton_slrs?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false +spring.datasource.username = tempuser +spring.datasource.password = Fting&8g35g#geg2 + + #============================================== # 应用设置 -spring.application.name=gsar +spring.application.name=FotonLAWSSystem application.code=20200101 application.center=1 #============================================== -#Eruept +#Eureka eureka.client.allow-redirects=true eureka.client.register-with-eureka=true -eureka.client.service-url.defaultZone=http://127.0.0.1:8671/eureka/ +eureka.client.service-url.defaultZone=http://10.100.5.117:4201/eureka/ + #============================================== -# 邮箱配置 +# 邮箱配置1 #============================================== mail.state=false spring.mail.host=outlook.geely.com @@ -31,17 +34,42 @@ spring.mail.properties.smtp.starttls.required=false spring.mail.properties.mail.smtp.ssl.enable=false spring.mail.port=587 -# ============================================== -# rabbitMQ -# ============================================== -spring.rabbitmq.host=rabbitmq-cluster-01.vs.test.geely.svc +#============================================== +# MQ配置 +#============================================== +spring.rabbitmq.host=10.100.5.119 spring.rabbitmq.port=5672 -spring.rabbitmq.virtual-host=uat_pcms -spring.rabbitmq.username=uat_pcms -spring.rabbitmq.password=VxsBLL5bJruwzXfS -# spring.rabbitmq.publisher-confirms=true - +spring.rabbitmq.username=admin +spring.rabbitmq.password=foton@admin +spring.rabbitmq.listener.simple.acknowledge-mode= manual +# 生产者 默认关闭 发版 需改为 true +spring.rabbitmq.listener.direct.auto-startup=true +# 消费者 默认关闭 发版 需改为 true +spring.rabbitmq.listener.simple.auto-startup=true +#消费失败消息干掉 +spring.rabbitmq.listener.simple.default-requeue-rejected= true +#5秒 +spring.rabbitmq.listener.simple.retry.initial-interval= 5000 +spring.rabbitmq.listener.simple.retry.enabled= true +#最大重试5次 +spring.rabbitmq.listener.simple.retry.max-attempts= 5 # ============================================== # 文档存储路径指向 # ============================================== -file.path=/usr/laws/file/ \ No newline at end of file +file.path=/data/slrs/file +file.split.path=/data/slrs/file/splitImage/ + +# 云端OCR识别集成配置参数 +#OCR请求识别URL地址 +OCR.handleFileUrl = http://61.136.1.103:8091/WebService.asmx/FileConversion +# OCR回调接口地址 配置客户本地的IP及端口号 +OCR.callBackUrl = https://srms.foton.com.cn/api/ocr/OCRRestful/OcrHandleResult +OCR.userId =dayuzhou1234 +OCR.authCode =123456 +OCR.publicKey =EC4KKA6ZDTCPAOCRBC5M +# OCR文件存储路径 +OCR.ocrPath=/data/slrs/ocrResultFile/ +# OCR文件请求下载或在线预览时URL +OCR.ocrDownPath=/data/slrs/ocrResultFile/ +OCR.times=20 +OCR.convertType=BOTH \ No newline at end of file diff --git a/adc-da-main/src/main/resources/application.properties b/adc-da-main/src/main/resources/application.properties index 3bd3954c..54de627f 100644 --- a/adc-da-main/src/main/resources/application.properties +++ b/adc-da-main/src/main/resources/application.properties @@ -9,10 +9,13 @@ spring.profiles.active=dev server.compression.enabled=true server.compression.mime-types=application/json,application/xml,text/html,text/plain,text/css,application/x-javascript # 端口号设置 -server.port=9999 +server.port=4202 #主服务session超时 server.servlet.session.timeout =600 +#tomcat /resource/local/version-manager 创建tomcat指定临时目录 +server.tomcat.basedir=/data/slrs/temp + # http-only server.session.cookie.http-only=true spring.mvc.async.request-timeout=20000 @@ -27,7 +30,19 @@ logging.level.org.springframework=info # 请求前缀 restPath=/api -#server.servlet.context-path=/api + +#是否将自己注册到Eureka Server上,默认为true +eureka.client.register-with-eureka=true +##是否从Eureka Server上获取注册信息,默认为true +eureka.client.fetch-registry=true +eureka.instance.prefer-ip-address=true + +eureka.client.service-url.defaultZone=http://10.100.5.117:4201/eureka/ + +# 请求连接的超时时间 默认的时间为 1 秒 +ribbon.ConnectTimeout=500000 +# 请求处理的超时时间 +ribbon.ReadTimeout=500000 # =============================== # = DATA SOURCE @@ -87,6 +102,24 @@ spring.activiti.check-process-definitions=false spring.activiti.job-executor-activate=false spring.activiti.process-definition-location-prefix=classpath:/mybatis/mapper/activiti/ +# ============================================================================= +# 邮箱配置 +# ============================================================================= +mail.valid=false +spring.mail.host=smtp.163.com +spring.mail.protocol=smtp +spring.mail.username=xxx@163.com +spring.mail.password=xxx +spring.mail.properties.smtp.auth=true +spring.mail.properties.smtp.starttls.enable=true +spring.mail.properties.smtp.starttls.required=true +spring.mail.properties.mail.smtp.ssl.enable=true +spring.mail.port=465 +#全球标准法规管理系统 十六进制码 +mail.personName=E585A8E79083E6A087E58786E6B395E8A784E7AEA1E79086E7B3BBE7BB9F +#邮箱内容中嵌入的系统地址 +Lawss.address =http://standard.gacrnd.com:60090 + # ========================================= # login value @@ -94,8 +127,32 @@ spring.activiti.process-definition-location-prefix=classpath:/mybatis/mapper/act maxLoginErrorCount=3 verifyCodeMode=1 -# ========================================= -# 上传文件配置 -# ========================================= +# ============================================================================= +# 文件上传管控及配置 +# ============================================================================= +# file模块上传文件的服务器地址 +file.path=/data/slrs/file + +stand.edit.file.path = /data/slrs/file/ +# onlyoffice 预览地址 +file.downloadUrl=https://srms.foton.com.cn/file/ + #上传文件白名单-以,分隔 -upload.file.white.lists = doc,docx,xls,xlsx,pdf,PDF,png,jpg \ No newline at end of file +upload.file.white.lists = doc,docx,xls,xlsx,pdf,PDF,png,jpg,pptx,ppt,pdg,rar,zip,dot + +# ============================================================================= +# elasticsearch 配置 +# ============================================================================= +elasticsearch.clustername=elasticsearch +elasticsearch.ip=10.100.5.122 +elasticsearch.port=9300 +elasticsearch.poolSize=5 +elas.flag=true + +# 文档转换TCP通讯地址 +convert.host=127.0.0.1 + +# ============================================================================= +# scheduled 配置 +# ============================================================================= +isNotScheduled=true \ No newline at end of file diff --git a/adc-da-main/src/main/resources/cache/ehcache.xml b/adc-da-main/src/main/resources/cache/ehcache.xml new file mode 100644 index 00000000..b580e227 --- /dev/null +++ b/adc-da-main/src/main/resources/cache/ehcache.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + diff --git a/adc-da-main/src/main/resources/logback-spring.xml b/adc-da-main/src/main/resources/logback-spring.xml index dec4b3f5..ee61bcce 100644 --- a/adc-da-main/src/main/resources/logback-spring.xml +++ b/adc-da-main/src/main/resources/logback-spring.xml @@ -8,7 +8,9 @@ - + + + diff --git a/adc-da-search/pom.xml b/adc-da-search/pom.xml new file mode 100644 index 00000000..74c6571f --- /dev/null +++ b/adc-da-search/pom.xml @@ -0,0 +1,218 @@ + + + 4.0.0 + + + com.adc + foton-slrs-system-rest + 3.0.0 + + + adc-da-search + 1.0.0 + + jar + + + UTF-8 + UTF-8 + 1.8 + 1.7 + 1.8 + 2.6.6 + 1.4.0-RC2 + 4.3.9.RELEASE + + + + + adc + http://60.247.58.121:8182/nexus/content/groups/public + + true + + + true + + + + + + + + thirdparty + Nexus Thirdparty Repository + http://60.247.58.121:8182/nexus/content/repositories/thirdparty/ + + + + + + + + + + + + + com.adc + adc-da-base + 3.0.0 + + + + + com.adc + adc-da-sys + 3.0.0 + + + com.adc + adc-da-excel + 2.0.3 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springframework.boot + spring-boot-starter-amqp + + + org.elasticsearch.client + transport + 7.6.2 + + + org.elasticsearch + elasticsearch + 7.6.2 + + + + org.apache.logging.log4j + log4j-core + + + org.springframework.boot + spring-boot-starter-web + + + + + + net.sourceforge.javacsv + javacsv + 2.0 + + + net.sf.opencsv + opencsv + 2.3 + + + + com.alibaba + fastjson + 1.2.9 + + + com.google.guava + guava + 19.0 + + + com.mashape.unirest + unirest-java + 1.4.9 + + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + commons-logging + commons-logging + + + commons-beanutils + commons-beanutils + + + commons-collections + commons-collections + + + + + org.apache.httpcomponents + httpclient + 4.4.1 + + + org.apache.httpcomponents + httpcore + 4.4.1 + + + + org.aspectj + aspectjweaver + + + + + cn.afterturn + easypoi-base + 4.1.2 + + + cn.afterturn + easypoi-web + 4.1.2 + + + cn.afterturn + easypoi-annotation + 4.1.2 + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + + + diff --git a/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchConfig.java b/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchConfig.java new file mode 100644 index 00000000..a86b7263 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchConfig.java @@ -0,0 +1,56 @@ +package com.adc.da.search.config; + + +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.transport.TransportAddress; +import org.elasticsearch.transport.client.PreBuiltTransportClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * gaoyan + * 2018-08-23 + * elasticsearch配置config + */ +@Configuration +public class ElasticsearchConfig { + + private static final Logger logger = LoggerFactory.getLogger(ElasticsearchConfig.class); + + @Autowired + private ElasticsearchProperties elasticsearchProperties; + + @Bean + public TransportClient client() throws UnknownHostException { + TransportClient client = null; + try { + Settings settings = Settings.builder() + .put("client.transport.sniff", true)//增加嗅探机制,找到ES集群 + .put("thread_pool.search.size", elasticsearchProperties.getPoolSize())//增加线程池个数,暂时设为5 + .put("cluster.name",elasticsearchProperties.getClustername()) + .build(); + client = new PreBuiltTransportClient(settings) + .addTransportAddress(new TransportAddress(InetAddress.getByName(elasticsearchProperties.getIp()),elasticsearchProperties.getPort())); + } catch (java.net.UnknownHostException e) { + logger.error(e.getMessage(),e); + } + return client; + } + + /*@After + public void tearDown() throws Exception { + if (client != null) { + client.close(); + } + }*/ + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchProperties.java b/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchProperties.java new file mode 100644 index 00000000..bedcc96c --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchProperties.java @@ -0,0 +1,17 @@ +package com.adc.da.search.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@Data +@ConfigurationProperties(prefix = "elasticsearch") +public class ElasticsearchProperties { + private String clustername; + private String ip; + private Integer port; + private Integer poolSize; + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java new file mode 100644 index 00000000..59214e17 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java @@ -0,0 +1,378 @@ +package com.adc.da.search.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.excel.poi.excel.ExcelExportUtil; +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.exception.AdcDaBaseException; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.dto.SearchBussExportDto; +import com.adc.da.search.dto.SearchLawsExportDto; +import com.adc.da.search.dto.SearchMsgExportDto; +import com.adc.da.search.dto.SearchStandExportDto; +import com.adc.da.search.entity.CommonSearchInfoEO; +import com.adc.da.search.entity.SarAdvanceSearchVO; +import com.adc.da.search.entity.SeniorSearchInfoEO; +import com.adc.da.search.service.ElasticsearchService; +import com.adc.da.search.service.SearchCenterService; +import com.adc.da.search.util.ElasticsearchConstant; +import com.adc.da.util.IOUtils; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; +import org.elasticsearch.client.transport.TransportClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +import static com.adc.da.sys.common.ReadExcelName.encodeFileName; + +@RestController +@RequestMapping("/${restPath}/search/searchCenter") +@Api(tags = "|SearchCenter|") +public class SearchCenterController extends BaseController> { + + @Autowired + private TransportClient client; + @Autowired + private SearchCenterService searchCenterService; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private ElasticsearchService elasticsearchService; + + /*@Autowired + private ITsDicTypeService iTsDictypeService; + + @ApiOperation("获取筛选条件") + @PostMapping("/getMenu") + public ResponseMessage> getSearchMenu(){ + return Result.success(iTsDictypeService.getSearchMenu()); + }*/ + + /** + * + * @param searchInfoEO + * @return + */ + @ApiOperation(value = "|SearchCenter|根据标准ID查询详情") + @PostMapping(value="/searchSarBykeyByDetils") + public ResponseMessage> searchSarBykeyByDetils(SeniorSearchInfoEO searchInfoEO){ + return Result.success(searchCenterService.searchSarBykeyAndHighLightByDetils(searchInfoEO)); + } + + /** + * + * @param searchInfoEO + * @return + */ + @ApiOperation(value = "|SearchCenter|查询") + @PostMapping(value="/searchSarBykey") + public ResponseMessage>> searchSarBykey(SeniorSearchInfoEO searchInfoEO) throws Exception{ + List> result; + if (StringUtils.isAlphanumericSpace(searchInfoEO.getSelectIndex())) { + if(elasticsearchService.isIndexExist(searchInfoEO.getSelectIndex())){ + if("fulltextserch".equals(searchInfoEO.getSelectIndex()) || "fulltextserch"== searchInfoEO.getSelectIndex()){ + if(StringUtils.isNotBlank(searchInfoEO.getSelectType()) && "titleSearch".equals(searchInfoEO.getSelectType())){ + result = searchCenterService.searchSarBykeyAndHighLightNumberForTitle(searchInfoEO); + }else { + Pattern pattern = Pattern.compile("^[0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:]+$"); + if (null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + if (pattern.matcher(searchInfoEO.getSelectValue()).matches()) { + result = searchCenterService.searchSarBykeyAndHighLightNumber(searchInfoEO); + }else { + result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); + } + } else { + result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); + } + } + for (int i = 0; i < result.size(); i++) { + String collectId = personCollectEOService.queryCollectByUserAndId(result.get(i).get("id").toString()); + result.get(i).put("collectId", collectId); + } + return Result.success(getPageInfo(searchInfoEO.getPager(), result)); + } else { + if (searchInfoEO.getQueryStatus() != null && StringUtils.isNotBlank(searchInfoEO.getQueryStatus()) && searchInfoEO.getQueryStatus().equals("advancedSearch") && null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + result = searchCenterService.searchSarBykey(searchInfoEO); + }else if("titleSearch".equals(searchInfoEO.getSelectType())){ + result = searchCenterService.searchSarConditionBykeyTitle(searchInfoEO); + }else{ + result = searchCenterService.searchSarConditionBykey(searchInfoEO); + } + // 非动态消息的需要查询为我推荐 + for (int i = 0; i < result.size(); i++) { + String collectId = personCollectEOService.queryCollectByUserAndId(result.get(i).get("id").toString()); + result.get(i).put("collectId", collectId); + result.get(i).put("content", ""); + result.get(i).put("baseSearchContent", ""); + } + return Result.success(getPageInfo(searchInfoEO.getPager(), result)); + } + } else { + return Result.error("未查到相关数据"); + } + } else { + return Result.error("数据错误"); + } + } + + @ApiOperation("根据多个key去查询") + @PostMapping("/searchByKey") + public void searchByKey(@RequestBody CommonSearchInfoEO commonSearchInfoEO){ + searchCenterService.searchByKey(commonSearchInfoEO); + } + + + + @ApiOperation(value = "|SearchCenter|查询用于导出数据") + @PostMapping(value="/searchIdToImport") + public ResponseMessage searchIdToImport(SeniorSearchInfoEO searchInfoEO){ + if (StringUtils.isAlphanumericSpace(searchInfoEO.getSelectIndex())) { + if(elasticsearchService.isIndexExist(searchInfoEO.getSelectIndex())){ + String [] result = searchCenterService.searchIdToImport(searchInfoEO); + return Result.success(result); + } + else { + return Result.error("未查到相关数据"); + } + } else { + return Result.error("数据错误"); + } + } + + @ApiOperation(value = "|SearchCenter|查询") + @PostMapping(value="/selectGroupdata") + public ResponseMessage> selectGroupdata(SeniorSearchInfoEO searchInfoEO){ + Map result = new HashMap<>(); + result = searchCenterService.selectGroupdata(searchInfoEO); + return Result.success(result); + } + + @ApiOperation(value = "|SarLawsInfoEO|导出搜索中心数据") + @GetMapping("/exportSearchCenterDatas") + public void exportSearchCenterDatas(String exportDatas,String searchType, HttpServletResponse response, HttpServletRequest request) throws Exception{ + OutputStream os = null; + if ("bussstand".equals(searchType)){ + searchType = "stand"; + }else if ("enterprise".equals(searchType)){ + searchType = "bussstand"; + } + Workbook workbook = null; + try{ + response.setHeader("Content-Disposition", + "attachment; filename=" + encodeFileName( "检索结果.xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + //集合 sarAdvanceSearc 的字符串 + + String sarAdvanceSearcString = subString(exportDatas,"[{","}]"); + if (StringUtils.isNotBlank(sarAdvanceSearcString)){ + sarAdvanceSearcString = sarAdvanceSearcString.replace("\\\"","\""); + } + SeniorSearchInfoEO searchInfoEO = null; + if (!"none".equals(sarAdvanceSearcString)) { + exportDatas = exportDatas.replace("[{" + sarAdvanceSearcString + "}]", ""); + JSONObject jsonObject = JSONObject.parseObject(exportDatas); + List sarAdvanceSearchVO = new ArrayList<>(Arrays.asList(sarAdvanceSearcString.split("},"))); + List advanceSearchVOList = new ArrayList<>(); + int flag = 0; + for (String sarAdvanceSearch : sarAdvanceSearchVO) { + JSONObject jsonObjectSAS = null; + if (flag == 0) { + jsonObjectSAS = JSONObject.parseObject("{" + sarAdvanceSearch + "}"); + } else { + jsonObjectSAS = JSONObject.parseObject(sarAdvanceSearch + "}"); + } + SarAdvanceSearchVO sarAdvanceSearchEO = JSONObject.toJavaObject(jsonObjectSAS, SarAdvanceSearchVO.class); + advanceSearchVOList.add(sarAdvanceSearchEO); + flag++; + } + searchInfoEO = JSONObject.toJavaObject(jsonObject, SeniorSearchInfoEO.class); + searchInfoEO.setAdvanceSearchVOList(advanceSearchVOList); + }else { + JSONObject jsonObject=JSONObject.parseObject(exportDatas); + searchInfoEO = JSONObject.toJavaObject(jsonObject, SeniorSearchInfoEO.class); + } + if ("INLAND_STAND".equals(searchType)) { + searchType = "stand"; //guonei + }else if ("INLAND_LAWS".equals(searchType)) { + searchType = "laws"; //zhengce + }else if ("BUSINESS_STAND".equals(searchType)) { + searchType = "bussstand"; //enterprise + }else if ("DYNAMIC_INFORMATION".equals(searchType)) { + searchType = "msgdyinfo"; + }else if ("items".equals(searchType)) { + searchType = "items"; + } + searchInfoEO.setSelectIndex(searchType); + searchInfoEO.setSelectValue(searchInfoEO.getKeywords()); + //存放需要导出的数据 + List> result = new ArrayList<>(); + result = searchCenterService.searchSarBykey(searchInfoEO); + if("stand".equals(searchType)){ + List dtoDatas = new ArrayList<>(); + for(int i=0;i dtoDatas = new ArrayList<>(); + for(int i=0;i dtoDatas = new ArrayList<>(); + for(int i=0;i dtoDatas = new ArrayList<>(); +// for(int i=0;i dtoDatas = new ArrayList<>(); + for(int i=0;i> { + + private static final Logger logger = LoggerFactory.getLogger(StandLawsSearchController.class); + + @Autowired + private ElasticsearchService elasticsearchService; + + /** + * + * @param + * @return + */ + @ApiOperation(value = "|BussnessStand|创建索引") + @PostMapping(value="/createBussstandIndex") + public ResponseMessage createBussstandIndex(){ + XContentBuilder mapping = null; + try { + mapping = XContentFactory.jsonBuilder() + .startObject() + .startObject("properties") //设置之定义字段 + .startObject("apply_arctic") + .field("type","text") //设置数据类型 + .endObject() + .startObject("applyarcticshow") + .field("type","text") + .endObject() + .startObject("energy_kind") + .field("type","text") //设置数据类型 + .endObject() + .startObject("id") + .field("type","text") //设置数据类型 + .endObject() + .startObject("issue_time") + .field("type","date") //设置Date类型 + // .field("format","yyyy-MM-dd HH:mm:ss") //设置Date的格式 + .endObject() + .startObject("nameshow") + .field("type","text") //设置数据类型 + .endObject() + .startObject("numbershow") + .field("type","text") //设置数据类型 + .endObject() + .startObject("put_time") + .field("type","date") //设置数据类型 + .endObject() + .startObject("replace_stand_num") + .field("type","text") //设置数据类型 + .endObject() + .startObject("replaced_stand_num") + .field("type","text") //设置数据类型 + .endObject() + .startObject("standstateshow") + .field("type","text") //设置数据类型 + .endObject() + .startObject("statecode") + .field("type","text") //设置数据类型 + .endObject() + .startObject("type") + .field("type","text") //设置数据类型 + .endObject() + .startObject("valid_flag") + .field("type","long") //设置数据类型 + .endObject() + .startObject("content") + .field("type","text") //设置数据类型 + .endObject() + .endObject() + .endObject(); + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + boolean restule = elasticsearchService.createIndex("newbussstand",mapping); + if (restule) { + return Result.success("创建成功"); + } else { + return Result.error("数据错误"); + } + } + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/controller/TestController.java b/adc-da-search/src/main/java/com/adc/da/search/controller/TestController.java new file mode 100644 index 00000000..419eed66 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/controller/TestController.java @@ -0,0 +1,161 @@ +package com.adc.da.search.controller; + +import com.adc.da.search.entity.PartProductEO; +import com.adc.da.search.service.ElasticsearchService; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.action.search.SearchRequestBuilder; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentFactory; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.query.RangeQueryBuilder; +import org.elasticsearch.search.SearchHit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import static com.adc.da.search.util.ElasticsearchConstant.SUCCESS_DELETED; + +@RestController +@RequestMapping("/${restPath}") +@Api(tags = "|testElasticsearch|") +public class TestController { + + private static final Logger logger = LoggerFactory.getLogger(TestController.class); + + @Autowired + private TransportClient client; + @Autowired + private ElasticsearchService elasticsearchService; + + + + @PostMapping("add/book/novel") + @ResponseBody + public ResponseEntity add(@RequestParam(name ="title") String title, + @RequestParam(name ="author") String author, + @RequestParam(name ="word_count") String wordCount, + @RequestParam(name ="publish_date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date publishDate){ + try { + XContentBuilder content =XContentFactory.jsonBuilder() + .startObject() + .field("title",title) + .field("author",author) + .field("word_count",wordCount) + .field("publish_date",publishDate.getTime()) + .endObject(); + IndexResponse result = this.client.prepareIndex("book","novel").setSource(content).get(); + return new ResponseEntity(result.getId(),HttpStatus.OK); + } + catch (IOException e) { + logger.error(e.getMessage(),e); + return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + + + @DeleteMapping("deleteOneDucumentTest") + @ResponseBody + public ResponseEntity delete(@RequestParam(name="id") String id) { + String response = elasticsearchService.deleteDataById("book","novel",id); + if(response.equals(SUCCESS_DELETED)){ + return new ResponseEntity(response, HttpStatus.OK); + } + else { + return new ResponseEntity(response, HttpStatus.NOT_FOUND); + } + } + + + + @PostMapping("query/book/novel") + @ResponseBody + public ResponseEntity query( + @RequestParam(name="title",required = false) String title, + @RequestParam(name="author",required = false) String author, + @RequestParam(name="gt_word_count",defaultValue = "0",required = false) int gtWordCount, + @RequestParam(name="lt_word_count",required = false) Integer ltWordCount + ){ + BoolQueryBuilder boolQueryBuilder =QueryBuilders.boolQuery(); + if(author!=null){ + boolQueryBuilder.must(QueryBuilders.matchQuery("author",author)); + } + if(title!=null){ + boolQueryBuilder.must(QueryBuilders.matchQuery("title",title)); + } + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("word_count").from(gtWordCount); + + if(ltWordCount!=null && ltWordCount>0 ){ + rangeQueryBuilder.to(ltWordCount); + } + boolQueryBuilder.filter(rangeQueryBuilder); + SearchRequestBuilder searchRequestBuilder =this.client.prepareSearch("book") + .setTypes("novel") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setQuery(boolQueryBuilder) + .setFrom(0) + .setSize(10); + System.out.println(searchRequestBuilder); + SearchResponse response =searchRequestBuilder.get(); + List> result = new ArrayList>(); + for (SearchHit hit:response.getHits()){ + result.add(hit.getSourceAsMap()); + } + return new ResponseEntity(result,HttpStatus.OK); + } + + + + @PostMapping("addIndexSerTest") + @ResponseBody + public String searchIndexTest() { + PartProductEO productEO= new PartProductEO(); + productEO.setCertNumber("er"); + productEO.setCorpId("cid"); + productEO.setCorpModel("cmodel"); + String indexstate = elasticsearchService.addData((JSONObject) JSON.toJSON(productEO),"testone","two"); + return indexstate; + } + + @PostMapping("bulktest") + @ResponseBody + public String bulkTest() throws IOException { + List list = new ArrayList(); + for(int i=0;i<100000;i++){ + PartProductEO productEO= new PartProductEO(); + productEO.setCertNumber("er"+i); + productEO.setCorpId("cid"+i); + productEO.setCorpModel("cmodel"+i); + list.add(JSONObject.parseObject(JSONObject.toJSON(productEO).toString())); + } + String indexstate = elasticsearchService.addBulkData("ymq_index","two",list); + return indexstate; + } + + @PostMapping("justtest") + @ResponseBody + public List> justtest() throws IOException { + String [] index={"bank","book"}; + String [] type={"_doc","_type"}; + String [] fields={"account_number", "balance"}; + List> indexstate = elasticsearchService.searchListDataGroupComplex(index,type); + return indexstate; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchBussExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchBussExportDto.java new file mode 100644 index 00000000..abe7336b --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchBussExportDto.java @@ -0,0 +1,61 @@ +package com.adc.da.search.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; + +public class SearchBussExportDto { + + @Excel(name = "企业标准号", orderNum = "1",width = 12) + private String numbershow; + + @Excel(name = "企业标准名称", orderNum = "1",width = 14) + private String nameshow; + + @Excel(name = "发布日期", orderNum = "1",width = 10) + private String issueTime; + +// @Excel(name = "实施日期", orderNum = "1",width = 10) + private String putTime; + + @Excel(name = "企业标准状态", orderNum = "1",width = 14) + private String standstateshow; + + public String getNumbershow() { + return numbershow; + } + + public void setNumbershow(String numbershow) { + this.numbershow = numbershow; + } + + public String getNameshow() { + return nameshow; + } + + public void setNameshow(String nameshow) { + this.nameshow = nameshow; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getPutTime() { + return putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } + + public String getStandstateshow() { + return standstateshow; + } + + public void setStandstateshow(String standstateshow) { + this.standstateshow = standstateshow; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchItemsExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchItemsExportDto.java new file mode 100644 index 00000000..533ed67d --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchItemsExportDto.java @@ -0,0 +1,74 @@ +package com.adc.da.search.dto; + +import com.adc.da.excel.annotation.Excel; + +public class SearchItemsExportDto { + + @Excel(name = "条款号",width = 16) + private String itemsNum; + + @Excel(name = "条款名称",width = 16) + private String itemsName; + + @Excel(name = "新车型实施日期",width = 16) + private String newcarPutTime; + + @Excel(name = "在产车实施日期",width = 16) + private String productPutTime; + + @Excel(name = "关联零部件",width = 16) + private String parts; + + @Excel(name = "适用车型",width = 16) + private String applyArcticShow; + + public String getItemsNum() { + return itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getItemsName() { + return itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + + + public String getParts() { + return parts; + } + + public void setParts(String parts) { + this.parts = parts; + } + + public String getNewcarPutTime() { + return newcarPutTime; + } + + public void setNewcarPutTime(String newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + public String getProductPutTime() { + return productPutTime; + } + + public void setProductPutTime(String productPutTime) { + this.productPutTime = productPutTime; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchLawsExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchLawsExportDto.java new file mode 100644 index 00000000..c3a97ca6 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchLawsExportDto.java @@ -0,0 +1,61 @@ +package com.adc.da.search.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; + +public class SearchLawsExportDto { + + @Excel(name = "文件号", orderNum = "1",width = 10) + private String numbershow; + + @Excel(name = "文件名称", orderNum = "1",width = 10) + private String nameshow; + + @Excel(name = "发布日期", orderNum = "1",width = 10) + private String issueTime; + +// @Excel(name = "实施日期", orderNum = "1",width = 10) +// private String putTime; + + @Excel(name = "文件状态", orderNum = "1",width = 10) + private String standstateshow; + + public String getNumbershow() { + return numbershow; + } + + public void setNumbershow(String numbershow) { + this.numbershow = numbershow; + } + + public String getNameshow() { + return nameshow; + } + + public void setNameshow(String nameshow) { + this.nameshow = nameshow; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + +// public String getPutTime() { +// return putTime; +// } + +// public void setPutTime(String putTime) { +// this.putTime = putTime; +// } +// + public String getStandstateshow() { + return standstateshow; + } + + public void setStandstateshow(String standstateshow) { + this.standstateshow = standstateshow; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchMsgExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchMsgExportDto.java new file mode 100644 index 00000000..bddee0c4 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchMsgExportDto.java @@ -0,0 +1,39 @@ +package com.adc.da.search.dto; + +import com.adc.da.excel.annotation.Excel; + +public class SearchMsgExportDto { + + @Excel(name = "所属模块", orderNum = "1",width = 10) + private String moduleName; + + @Excel(name = "动态标题", orderNum = "1",width = 10) + private String title; + + @Excel(name = "发布日期", orderNum = "1",width = 10) + private String issueTime; + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchStandExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchStandExportDto.java new file mode 100644 index 00000000..763605ea --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchStandExportDto.java @@ -0,0 +1,61 @@ +package com.adc.da.search.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; + +public class SearchStandExportDto { + + @Excel(name = "标准号", orderNum = "1",width = 10) + private String numbershow; + + @Excel(name = "标准名称", orderNum = "1",width = 10) + private String nameshow; + + @Excel(name = "发布日期", orderNum = "1",width = 10) + private String issueTime; + +// @Excel(name = "实施日期", orderNum = "1",width = 10) + private String putTime; + + @Excel(name = "标准状态", orderNum = "1",width = 10) + private String standstateshow; + + public String getNumbershow() { + return numbershow; + } + + public void setNumbershow(String numbershow) { + this.numbershow = numbershow; + } + + public String getNameshow() { + return nameshow; + } + + public void setNameshow(String nameshow) { + this.nameshow = nameshow; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getPutTime() { + return putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } + + public String getStandstateshow() { + return standstateshow; + } + + public void setStandstateshow(String standstateshow) { + this.standstateshow = standstateshow; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/BasicSearchEntity.java b/adc-da-search/src/main/java/com/adc/da/search/entity/BasicSearchEntity.java new file mode 100644 index 00000000..06379ba6 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/BasicSearchEntity.java @@ -0,0 +1,13 @@ +package com.adc.da.search.entity; + +import lombok.Data; + +import java.util.List; + +@Data +public class BasicSearchEntity { + private String key; + private String sign; + private String value; + private List values; +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/CommonSearchInfoEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/CommonSearchInfoEO.java new file mode 100644 index 00000000..fcdbd922 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/CommonSearchInfoEO.java @@ -0,0 +1,22 @@ +package com.adc.da.search.entity; + +import lombok.Data; + +import java.util.List; + +@Data +public class CommonSearchInfoEO { + + private List searchEntities; + + private String searchType; + + private String searchIndex; + + private String searchBox; + + private Integer currents; + + private Integer size; + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/EsPage.java b/adc-da-search/src/main/java/com/adc/da/search/entity/EsPage.java new file mode 100644 index 00000000..a1a9d14b --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/EsPage.java @@ -0,0 +1,117 @@ +package com.adc.da.search.entity; + +import java.util.List; +import java.util.Map; + +public class EsPage { + // 指定的或是页面参数 + private int currentPage; // 当前页 + private int pageSize; // 每页显示多少条 + + // 查询es结果 + private int recordCount; // 总记录数 + private List> recordList; // 本页的数据列表 + + // 计算 + private int pageCount; // 总页数 + private int beginPageIndex; // 页码列表的开始索引(包含) + private int endPageIndex; // 页码列表的结束索引(包含) + + /** + * 只接受前4个必要的属性,会自动的计算出其他3个属性的值 + * + * @param currentPage + * @param pageSize + * @param recordCount + * @param recordList + */ + public EsPage(int currentPage, int pageSize, int recordCount, List> recordList) { + this.currentPage = currentPage; + this.pageSize = pageSize; + this.recordCount = recordCount; + this.recordList = recordList; + + // 计算总页码 + pageCount = (recordCount + pageSize - 1) / pageSize; + + // 计算 beginPageIndex 和 endPageIndex + // >> 总页数不多于10页,则全部显示 + if (pageCount <= 10) { + beginPageIndex = 1; + endPageIndex = pageCount; + } + // >> 总页数多于10页,则显示当前页附近的共10个页码 + else { + // 当前页附近的共10个页码(前4个 + 当前页 + 后5个) + beginPageIndex = currentPage - 4; + endPageIndex = currentPage + 5; + // 当前面的页码不足4个时,则显示前10个页码 + if (beginPageIndex < 1) { + beginPageIndex = 1; + endPageIndex = 10; + } + // 当后面的页码不足5个时,则显示后10个页码 + if (endPageIndex > pageCount) { + endPageIndex = pageCount; + beginPageIndex = pageCount - 10 + 1; + } + } + } + + + public int getCurrentPage() { + return currentPage; + } + + public void setCurrentPage(int currentPage) { + this.currentPage = currentPage; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getRecordCount() { + return recordCount; + } + + public void setRecordCount(int recordCount) { + this.recordCount = recordCount; + } + + public List> getRecordList() { + return recordList; + } + + public void setRecordList(List> recordList) { + this.recordList = recordList; + } + + public int getPageCount() { + return pageCount; + } + + public void setPageCount(int pageCount) { + this.pageCount = pageCount; + } + + public int getBeginPageIndex() { + return beginPageIndex; + } + + public void setBeginPageIndex(int beginPageIndex) { + this.beginPageIndex = beginPageIndex; + } + + public int getEndPageIndex() { + return endPageIndex; + } + + public void setEndPageIndex(int endPageIndex) { + this.endPageIndex = endPageIndex; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/FullTextSearchEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/FullTextSearchEO.java new file mode 100644 index 00000000..e7e10925 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/FullTextSearchEO.java @@ -0,0 +1,93 @@ +package com.adc.da.search.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + */ +public class FullTextSearchEO extends BaseEntity { + + private String id; + private String indexType; + private String title; + private String textContent; + private Date issue_time; + private String issueTimeStr; + private Date put_time; + private String putTimeStr; + + private String itemsType; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIndexType() { + return indexType; + } + + public void setIndexType(String indexType) { + this.indexType = indexType; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getTextContent() { + return textContent; + } + + public void setTextContent(String textContent) { + this.textContent = textContent; + } + + public Date getIssue_time() { + return issue_time; + } + + public void setIssue_time(Date issue_time) { + this.issue_time = issue_time; + } + + public String getIssueTimeStr() { + return issueTimeStr; + } + + public void setIssueTimeStr(String issueTimeStr) { + this.issueTimeStr = issueTimeStr; + } + + public Date getPut_time() { + return put_time; + } + + public void setPut_time(Date put_time) { + this.put_time = put_time; + } + + public String getPutTimeStr() { + return putTimeStr; + } + + public void setPutTimeStr(String putTimeStr) { + this.putTimeStr = putTimeStr; + } + + public String getItemsType() { + return itemsType; + } + + public void setItemsType(String itemsType) { + this.itemsType = itemsType; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/PartProductEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/PartProductEO.java new file mode 100644 index 00000000..ef28e334 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/PartProductEO.java @@ -0,0 +1,37 @@ +package com.adc.da.search.entity; + +import com.adc.da.base.entity.BaseEntity; + +/** + * 功能:PART_PRODUCT PartProductEOEntity
    + * 作者:code generator
    + * 日期: 2018-08-22
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class PartProductEO extends BaseEntity { + + private String corpId; + private String certNumber; + private String corpModel; + public void setCorpId(String corpId) { + this.corpId = corpId; + } + public void setCertNumber(String certNumber) { + this.certNumber = certNumber; + } + public void setCorpModel(String corpModel) { + this.corpModel = corpModel; + } + + public String getCorpId() { + return corpId; + } + + public String getCertNumber() { + return certNumber; + } + + public String getCorpModel() { + return corpModel; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SarAdvanceSearchVO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SarAdvanceSearchVO.java new file mode 100644 index 00000000..1d771b3c --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SarAdvanceSearchVO.java @@ -0,0 +1,69 @@ +package com.adc.da.search.entity; + +/** + * @Description: 标准法规库高级查询 + * @Author: yangxuenan + * date: 2020/12/11 9:22 + */ +public class SarAdvanceSearchVO { + + private String field; //字段 如 标准类别 + + private String value; //值 + + private String type; //查询类型 如 = != like + + private String connect; //连接符号 如 and or + + private String timeSt; + + private String timeEd; + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getConnect() { + return connect; + } + + public void setConnect(String connect) { + this.connect = connect; + } + + public String getTimeSt() { + return timeSt; + } + + public void setTimeSt(String timeSt) { + this.timeSt = timeSt; + } + + public String getTimeEd() { + return timeEd; + } + + public void setTimeEd(String timeEd) { + this.timeEd = timeEd; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SarBussionessStandEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SarBussionessStandEO.java new file mode 100644 index 00000000..e5f77a38 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SarBussionessStandEO.java @@ -0,0 +1,548 @@ +package com.adc.da.search.entity; + +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_BUSSIONESS_STAND SarBussionessStandEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarBussionessStandEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String putUser; + private String citationUser; + private String responsibleUnit; + private String standFile; + private String tags; + private String standStatus; + private String replacedStandNum; + private String replaceStandNum; + private String quoteStand; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date firstPutTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putYear; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date issueTime; + private String energyKind; + private String applyArctic; + private String standEnName; + private String standName; + //标准编码 + private String standCode; + //分类代号 + private String classifyCode; + private String standSubclass; + private String standGenera; + private String id; + + //目录ID 非标准信息表中的字段 + private String menuId; + private String menuParentId; + private String standStatusShow; // 标准状态下拉框 --单选 + private String applyArcticShow; // 适用车型下拉框 --多选 + private String energyKindShow; // 能源种类下拉框 --多选 + private String standGeneraShow; + private String standSubclassShow; + private String responsibleUnitShow; + private List standFileList = new ArrayList(); + + private String collectId; + + //文件的下载id + private String attId; + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + //记录是否修改了替代文件号 + private int upReplaceNumFlag; + //记录是否修改了文件号 + private int upNumFlag; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • putUser -> put_user
  • + *
  • citationUser -> citation_user
  • + *
  • responsibleUnit -> responsible_unit
  • + *
  • standFile -> stand_file
  • + *
  • tags -> tags
  • + *
  • standStatus -> stand_status
  • + *
  • replacedStandNum -> replaced_stand_num
  • + *
  • replaceStandNum -> replace_stand_num
  • + *
  • quoteStand -> quote_stand
  • + *
  • firstPutTime -> first_put_time
  • + *
  • putYear -> put_year
  • + *
  • putTime -> put_time
  • + *
  • issueTime -> issue_time
  • + *
  • energyKind -> energy_kind
  • + *
  • applyArctic -> apply_arctic
  • + *
  • standEnName -> stand_en_name
  • + *
  • standName -> stand_name
  • + *
  • standCode -> stand_code
  • + *
  • classifyCode -> classify_code
  • + *
  • standSubclass -> stand_subclass
  • + *
  • standGenera -> stand_genera
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "validFlag": return "valid_flag"; + case "putUser": return "put_user"; + case "citationUser": return "citation_user"; + case "responsibleUnit": return "responsible_unit"; + case "standFile": return "stand_file"; + case "tags": return "tags"; + case "standStatus": return "stand_status"; + case "replacedStandNum": return "replaced_stand_num"; + case "replaceStandNum": return "replace_stand_num"; + case "quoteStand": return "quote_stand"; + case "firstPutTime": return "first_put_time"; + case "putYear": return "put_year"; + case "putTime": return "put_time"; + case "issueTime": return "issue_time"; + case "energyKind": return "energy_kind"; + case "applyArctic": return "apply_arctic"; + case "standEnName": return "stand_en_name"; + case "standName": return "stand_name"; + case "standCode": return "stand_code"; + case "classifyCode": return "classify_code"; + case "standSubclass": return "stand_subclass"; + case "standGenera": return "stand_genera"; + case "id": return "id"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • valid_flag -> validFlag
  • + *
  • put_user -> putUser
  • + *
  • citation_user -> citationUser
  • + *
  • responsible_unit -> responsibleUnit
  • + *
  • stand_file -> standFile
  • + *
  • tags -> tags
  • + *
  • stand_status -> standStatus
  • + *
  • replaced_stand_num -> replacedStandNum
  • + *
  • replace_stand_num -> replaceStandNum
  • + *
  • quote_stand -> quoteStand
  • + *
  • first_put_time -> firstPutTime
  • + *
  • put_year -> putYear
  • + *
  • put_time -> putTime
  • + *
  • issue_time -> issueTime
  • + *
  • energy_kind -> energyKind
  • + *
  • apply_arctic -> applyArctic
  • + *
  • stand_en_name -> standEnName
  • + *
  • stand_name -> standName
  • + *
  • stand_code -> standCode
  • + *
  • classify_code -> classifyCode
  • + *
  • stand_subclass -> standSubclass
  • + *
  • stand_genera -> standGenera
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "valid_flag": return "validFlag"; + case "put_user": return "putUser"; + case "citation_user": return "citationUser"; + case "responsible_unit": return "responsibleUnit"; + case "stand_file": return "standFile"; + case "tags": return "tags"; + case "stand_status": return "standStatus"; + case "replaced_stand_num": return "replacedStandNum"; + case "replace_stand_num": return "replaceStandNum"; + case "quote_stand": return "quoteStand"; + case "first_put_time": return "firstPutTime"; + case "put_year": return "putYear"; + case "put_time": return "putTime"; + case "issue_time": return "issueTime"; + case "energy_kind": return "energyKind"; + case "apply_arctic": return "applyArctic"; + case "stand_en_name": return "standEnName"; + case "stand_name": return "standName"; + case "stand_code": return "standCode"; + case "classify_code": return "classifyCode"; + case "stand_subclass": return "standSubclass"; + case "stand_genera": return "standGenera"; + case "id": return "id"; + default: return null; + } + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getPutUser() { + return this.putUser; + } + + /** **/ + public void setPutUser(String putUser) { + this.putUser = putUser; + } + + /** **/ + public String getCitationUser() { + return this.citationUser; + } + + /** **/ + public void setCitationUser(String citationUser) { + this.citationUser = citationUser; + } + + /** **/ + public String getResponsibleUnit() { + return this.responsibleUnit; + } + + /** **/ + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + /** **/ + public String getStandFile() { + return this.standFile; + } + + /** **/ + public void setStandFile(String standFile) { + this.standFile = standFile; + } + + /** **/ + public String getTags() { + return this.tags; + } + + /** **/ + public void setTags(String tags) { + this.tags = tags; + } + + /** **/ + public String getStandStatus() { + return this.standStatus; + } + + /** **/ + public void setStandStatus(String standStatus) { + this.standStatus = standStatus; + } + + /** **/ + public String getReplacedStandNum() { + return this.replacedStandNum; + } + + /** **/ + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + /** **/ + public String getReplaceStandNum() { + return this.replaceStandNum; + } + + /** **/ + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + /** **/ + public String getQuoteStand() { + return this.quoteStand; + } + + /** **/ + public void setQuoteStand(String quoteStand) { + this.quoteStand = quoteStand; + } + + /** **/ + public Date getFirstPutTime() { + return this.firstPutTime; + } + + /** **/ + public void setFirstPutTime(Date firstPutTime) { + this.firstPutTime = firstPutTime; + } + + /** **/ + public Date getPutYear() { + return this.putYear; + } + + /** **/ + public void setPutYear(Date putYear) { + this.putYear = putYear; + } + + /** **/ + public Date getPutTime() { + return this.putTime; + } + + /** **/ + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + /** **/ + public Date getIssueTime() { + return this.issueTime; + } + + /** **/ + public void setIssueTime(Date issueTime) { + this.issueTime = issueTime; + } + + /** **/ + public String getEnergyKind() { + return this.energyKind; + } + + /** **/ + public void setEnergyKind(String energyKind) { + this.energyKind = energyKind; + } + + /** **/ + public String getApplyArctic() { + return this.applyArctic; + } + + /** **/ + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + /** **/ + public String getStandEnName() { + return this.standEnName; + } + + /** **/ + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + /** **/ + public String getStandName() { + return this.standName; + } + + /** **/ + public void setStandName(String standName) { + this.standName = standName; + } + + /** **/ + public String getStandCode() { + return this.standCode; + } + + /** **/ + public void setStandCode(String standCode) { + this.standCode = standCode; + } + + /** **/ + public String getClassifyCode() { + return this.classifyCode; + } + + /** **/ + public void setClassifyCode(String classifyCode) { + this.classifyCode = classifyCode; + } + + /** **/ + public String getStandSubclass() { + return this.standSubclass; + } + + /** **/ + public void setStandSubclass(String standSubclass) { + this.standSubclass = standSubclass; + } + + /** **/ + public String getStandGenera() { + return this.standGenera; + } + + /** **/ + public void setStandGenera(String standGenera) { + this.standGenera = standGenera; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getStandStatusShow() { + return standStatusShow; + } + + public void setStandStatusShow(String standStatusShow) { + this.standStatusShow = standStatusShow; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } + + public String getEnergyKindShow() { + return energyKindShow; + } + + public void setEnergyKindShow(String energyKindShow) { + this.energyKindShow = energyKindShow; + } + + public String getStandGeneraShow() { + return standGeneraShow; + } + + public void setStandGeneraShow(String standGeneraShow) { + this.standGeneraShow = standGeneraShow; + } + + public String getStandSubclassShow() { + return standSubclassShow; + } + + public void setStandSubclassShow(String standSubclassShow) { + this.standSubclassShow = standSubclassShow; + } + + public List getStandFileList() { + return standFileList; + } + + public void setStandFileList(List standFileList) { + this.standFileList = standFileList; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public String getResponsibleUnitShow() { + return responsibleUnitShow; + } + + public void setResponsibleUnitShow(String responsibleUnitShow) { + this.responsibleUnitShow = responsibleUnitShow; + } + + public String getMenuParentId() { + return menuParentId; + } + + public void setMenuParentId(String menuParentId) { + this.menuParentId = menuParentId; + } + + public int getUpReplaceNumFlag() { + return upReplaceNumFlag; + } + + public void setUpReplaceNumFlag(int upReplaceNumFlag) { + this.upReplaceNumFlag = upReplaceNumFlag; + } + + public int getUpNumFlag() { + return upNumFlag; + } + + public void setUpNumFlag(int upNumFlag) { + this.upNumFlag = upNumFlag; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SearchInfoEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SearchInfoEO.java new file mode 100644 index 00000000..1e69ed01 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SearchInfoEO.java @@ -0,0 +1,192 @@ +package com.adc.da.search.entity; + +import com.adc.da.base.page.BasePage; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:SAR_STANDARDS_INFO SarStandardsInfoEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ + +public class SearchInfoEO extends BasePage { + + //标准编号 文件号laws_number 标准编号STAND_CODE + private String standNumber; + //标准名称 文件名称laws_name standNAME + private String standName; + //标准英文名称 无 standEnName + private String standEnName; + //标准状态 文件状态laws_status standStatus + private String standState; + //标准文本 支持PDF、doc、docx文件《此项需要按照标准正文内容修改》 无 标准文本文件standFile + private String standFile; + //适用车型 适用车型 适用车型 + private String applyArctic; + //发布日期 发布日期 发布日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date issueTime; + //实施日期 实施日期 实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime; + //起草人 无 有发布人和主要编织者putUser,citationUser + private String draftUser; + //起草单位 发布单位issueUnit 无,只有责任部门 + private String draftingUnit; + //代替标准号 代替文件号replaceLawsNum 代替标准号 + private String replaceStandNum; + //被代替标准号 无 被代替标准号 + private String replacedStandNum; + + //需求文档中还有 《文件名称》laws 中有 laws_name 标准库,企业标准库没有相关字段 + private String lawsName; + // 《动态标题》,标准库中找不到对应 都没有 + + //记录首页中的下拉选择的数据类别 + private String selectKey; + //记录首页搜索框中对应的数据 + private String selectValue; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date selectStartTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date selectEndTime; + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getStandEnName() { + return standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getStandState() { + return standState; + } + + public void setStandState(String standState) { + this.standState = standState; + } + + public String getStandFile() { + return standFile; + } + + public void setStandFile(String standFile) { + this.standFile = standFile; + } + + public String getApplyArctic() { + return applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public Date getIssueTime() { + return issueTime; + } + + public void setIssueTime(Date issueTime) { + this.issueTime = issueTime; + } + + public Date getPutTime() { + return putTime; + } + + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + public String getDraftUser() { + return draftUser; + } + + public void setDraftUser(String draftUser) { + this.draftUser = draftUser; + } + + public String getDraftingUnit() { + return draftingUnit; + } + + public void setDraftingUnit(String draftingUnit) { + this.draftingUnit = draftingUnit; + } + + public String getReplaceStandNum() { + return replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + public String getReplacedStandNum() { + return replacedStandNum; + } + + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + public String getLawsName() { + return lawsName; + } + + public void setLawsName(String lawsName) { + this.lawsName = lawsName; + } + + public String getSelectKey() { + return selectKey; + } + + public void setSelectKey(String selectKey) { + this.selectKey = selectKey; + } + + public String getSelectValue() { + return selectValue; + } + + public void setSelectValue(String selectValue) { + this.selectValue = selectValue; + } + + public Date getSelectStartTime() { + return selectStartTime; + } + + public void setSelectStartTime(Date selectStartTime) { + this.selectStartTime = selectStartTime; + } + + public Date getSelectEndTime() { + return selectEndTime; + } + + public void setSelectEndTime(Date selectEndTime) { + this.selectEndTime = selectEndTime; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SearchListDto.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SearchListDto.java new file mode 100644 index 00000000..b269022d --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SearchListDto.java @@ -0,0 +1,42 @@ +package com.adc.da.search.entity; + +import org.elasticsearch.index.query.BoolQueryBuilder; + +public class SearchListDto { + private BoolQueryBuilder boolQueryBuilder; + private int must; + private int should; + private int mustnot; + + public int getMustnot() { + return mustnot; + } + + public void setMustnot(int mustnot) { + this.mustnot = mustnot; + } + + public int getShould() { + return should; + } + + public void setShould(int should) { + this.should = should; + } + + public int getMust() { + return must; + } + + public void setMust(int must) { + this.must = must; + } + + public BoolQueryBuilder getBoolQueryBuilder() { + return boolQueryBuilder; + } + + public void setBoolQueryBuilder(BoolQueryBuilder boolQueryBuilder) { + this.boolQueryBuilder = boolQueryBuilder; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java new file mode 100644 index 00000000..c5aa6213 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java @@ -0,0 +1,282 @@ +package com.adc.da.search.entity; + +import com.adc.da.base.page.BasePage; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_STANDARDS_INFO SarStandardsInfoEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SeniorSearchInfoEO extends BasePage { + + /** + * -----------------------------FOTON------------------------------------- + * -------------------------- 动态属性字段--------------------------------- + */ + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "标准分类") + private String standType; + + @ApiModelProperty(value = "搜索分类") + private String type; + + @ApiModelProperty(value = "国家地区") + private String country; + + @ApiModelProperty(value = "标准类别") + private String standSort; + + @ApiModelProperty(value = "标准编号") + private String standNumber; + + @ApiModelProperty(value = "企标编号") + private String standCode; + + @ApiModelProperty(value = "标准年份") + private String standYear; + + @ApiModelProperty(value = "标准名称") + private String standName; + + @ApiModelProperty(value = "标准英文名称") + private String standEnName; + + @ApiModelProperty(value = "标准状态") + private String standState; + + @ApiModelProperty(value = "标准性质") + private String standNature; + + @ApiModelProperty(value = "标准发布日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date issueTime; + + @ApiModelProperty(value = "实施日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date putTime; + + @ApiModelProperty(value = "内容摘要") + private String synopsis; + + @ApiModelProperty(value = "代替标准号") + private String replaceStandNum; + + @ApiModelProperty(value = "被代替标准号") + private String replacedStandNum; + + @ApiModelProperty(value = "代替部分标准号") + private String replacePartStandNum; + + @ApiModelProperty(value = "被代替部分标准号") + private String replacedPartStandNum; + + private String creationUser; + + @ApiModelProperty(value = "是否有效") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date modifyTime; + + @ApiModelProperty(value = "是否纳入认证清单(0否 1是)") + private String isRelateAccess; + + + @ApiModelProperty(value = "引用标准") + private String citeStand; + + @ApiModelProperty(value = "被引用标准") + private String citedStand; + + // 新添加字段 + @ApiModelProperty(value = "文本状态") + private String textStatus; + + @ApiModelProperty(value = "文本状态-企标") + private String textStatusBuss; + + @ApiModelProperty(value = "标准体系") + private String standSystem; + + @ApiModelProperty(value = "新增修改时属性表信息") + private String sarStandAttrEOStr; + + + /** + * ---------其他字段------------ + */ + //标准性质 + private String nature; + //标准,文件号 + private String numberShow; + //标准,文件名称 + private String nameShow; + //适用车型 + private String applyArctic; + //适用认证 + private String applyAuth; + //所属类别 + private String category; + //能源种类 + private String energyKind; + //采标程度 + private String adoptExtent; + //标准大类 + private String bussBigClass; + //标准细类 + private String bussFineClass; + + //记录首页中的下拉选择的数据类别 + private String selectKey; + //记录首页搜索框中对应的数据 + private String selectValue; + //记录从哪个索引表中查数据 + private String selectIndex; + + //高级搜索 + //采用国际标准号 + private String interStandNum; + //新生产车实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date newproductPutTime; + //在产车实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date productPutTime; + //新定型车实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date newcarPutTime; + //起草人 + private String draftUser; + //起草单位 + private String draftingUnit; + //关键词 + private String tags; + //责任部门 + private String responsibleUnit; + //发布单位 + private String issueUnit; + //分类代号 + private String classifyCode; + //实施年份 + private String putYear; + //首发日期 + private String firstPutTime; + //引用标准 + private String quoteStand; + //主要编制者 + private String citationUser; + //动态标题 + private String title; + //发布人 + private String pubUserName; + //发布单位 + private String pubOrgName; + //所属模块 + private String module; + //注册车 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date registerPutTime; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date selectStartTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date selectEndTime; + + private String keywords; + private String resultKeyword; + //发布开始日期 + private Date issueTimeSt; + //发布结束日期 + private Date issueTimeEd; + //实施开始日期 + private Date putTimeSt; + //实施结束日期 + private Date putTimeEd; + + + // 条目搜索条件 + private String itemsName; + private String itemsNum; + private String parts; + + //新车型实施开始日期 + private Date newcarPutTimeSt; + //新车型实施结束日期 + private Date newcarPutTimeEd; + //在产实施开始日期 + private Date productPutTimeSt; + //在产实施结束日期 + private Date productPutTimeEd; + private List advanceSearchVOList; + private String advanceSearchVOStr; + private String CLLX; + private String CYSD; + private String QCDW; + private String CBCD; + private String ZRLX; + private String SYCLLX; + private String WSSFCY; + + private String ZQCBM; + private String stand_status; + private String isHigh; + + private String queryStatus; + + + private String lawsType; + private String lawsNumber; + private String lawsName; + private String lawsEnName; + private String lawsNo; + private String issueCompany; + private String commentCycleDate; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date commentCycleStart; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date commentCycleEnd; + private String lawsTextState; + private String lawsSyqy; + private String lawsSycx; + private String lawsYear; + private String lawsNotisyncNum; + private String lawsBulletin; + private String lawsLabel; + private String lawsRemark; + private String CYSDLAWS; + private String NYLXCLASS; + + + @ApiModelProperty(value = "检索方式 : 全文检索 allTextSearch 、标题检索 titleSearch") + private String selectType; + + @ApiModelProperty(value = "全文检索 标准ID") + private String standId; + + + private String clientType; // 客户端类型:空-web端, 2-手机端 + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/StandLawsEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/StandLawsEO.java new file mode 100644 index 00000000..eba8a648 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/StandLawsEO.java @@ -0,0 +1,926 @@ +package com.adc.da.search.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + * 功能:PART_PRODUCT PartProductEOEntity
    + * 作者:code generator
    + * 日期: 2018-11-22
    + * 版权所有:

    + */ +public class StandLawsEO extends BaseEntity { + private String id; + private String stand_type; + private String laws_type; + private String numbershow; + private String numbershowSplit; + private String standNumber; + private String nameshow; + private String nameshowSplit; + private String standEnName; + private String nature; + private String natureShow; + private String country; + private String countryShow; + private String stand_sort; + private String standSortShow; + private String apply_arctic; + private String applyArcticShow; + private String standYear; + private String apply_auth; + private String applyAuthShow; + private String category; + private String categoryShow; + private String energy_kind; + private String energyKindShow; + private String adopt_extent; + private String adoptExtentShow; + private String statecode; + private String statecodeShow; + private Date issue_time; + private String issueTimeStr; + private Date put_time; + private String putTimeStr; + private String draft_user; + private String drafting_unit; + private String replace_stand_num; + private String replaced_stand_num; + private Integer valid_flag; + private String type; + private String standstateshow; + private String content; + + private String lawsstateshow; + private String replace_laws_num; + + private String bussBigClass; + private String bussBigClassShow; + private String bussFineClassShow; + private String bussFineClass; + private String classifyCode; + private String putYear; + private String firstPutTime; + private String quoteStand; + private String citationUser; + private String responsibleUnit; + private String responsibleUnitShow; + private String interStandNum; + private Date newproductPutTime; + //在产车实施日期 + private Date productPutTime; + //新定型车实施日期 + private Date newcarPutTime; + private Date registerPutTime; + private String standTag; + private String synopsis; + //发布单位 + private String issueUnit; + //动态信息 + private String module; + private String moduleName; + private String title; + private String pubUser; + private String pubUserShow; + private String pubOrg; + private String pubOrgShow; + private String msgContent; + + //去掉编号中空格 + private String numberExpNull; + + // 条目信息 + private String itemsName; + private String itemsNum; + private String standId; + private String termsConditions; //条款要求 + private String mainPointImplementation; //实施要点 + private String parts; + private Date tackTime; + private String remarks; + private String itemsType; + // 新加属性字段 + private String issueUnitShow;//发布单位 + private String citeStand; + private String citedStand; + private String gkglbm; + private String gkglbmShow; + private String gzzxx; + private String cysd; + private String zrlx; + private String zrlxShow; + private String yqlx; + private String yqlxShow; + private String gxhbq; + private String gxhbqShow; + private String xgbm; + private String xgbmShow; + private String svpps; + private String fo; + private String foShow; + private String xmpgry; + private String xmpgryShow; + private String fgwhr; + + public String getApply_arctic() { + return apply_arctic; + } + + public void setApply_arctic(String apply_arctic) { + this.apply_arctic = apply_arctic; + } + + public String getEnergy_kind() { + return energy_kind; + } + + public void setEnergy_kind(String energy_kind) { + this.energy_kind = energy_kind; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Date getIssue_time() { + return issue_time; + } + + public void setIssue_time(Date issue_time) { + this.issue_time = issue_time; + } + + public String getNameshow() { + return nameshow; + } + + public void setNameshow(String nameshow) { + this.nameshow = nameshow; + } + + public String getNumbershow() { + return numbershow; + } + + public void setNumbershow(String numbershow) { + this.numbershow = numbershow; + } + + public Date getPut_time() { + return put_time; + } + + public void setPut_time(Date put_time) { + this.put_time = put_time; + } + + public String getReplace_stand_num() { + return replace_stand_num; + } + + public void setReplace_stand_num(String replace_stand_num) { + this.replace_stand_num = replace_stand_num; + } + + public String getReplaced_stand_num() { + return replaced_stand_num; + } + + public void setReplaced_stand_num(String replaced_stand_num) { + this.replaced_stand_num = replaced_stand_num; + } + + public String getStandstateshow() { + return standstateshow; + } + + public void setStandstateshow(String standstateshow) { + this.standstateshow = standstateshow; + } + + public String getStatecode() { + return statecode; + } + + public void setStatecode(String statecode) { + this.statecode = statecode; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Integer getValid_flag() { + return valid_flag; + } + + public void setValid_flag(Integer valid_flag) { + this.valid_flag = valid_flag; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getStand_type() { + return stand_type; + } + + public void setStand_type(String stand_type) { + this.stand_type = stand_type; + } + + public String getLaws_type() { + return laws_type; + } + + public void setLaws_type(String laws_type) { + this.laws_type = laws_type; + } + + public String getNature() { + return nature; + } + + public void setNature(String nature) { + this.nature = nature; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getStand_sort() { + return stand_sort; + } + + public void setStand_sort(String stand_sort) { + this.stand_sort = stand_sort; + } + + public String getApply_auth() { + return apply_auth; + } + + public void setApply_auth(String apply_auth) { + this.apply_auth = apply_auth; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getAdopt_extent() { + return adopt_extent; + } + + public void setAdopt_extent(String adopt_extent) { + this.adopt_extent = adopt_extent; + } + + public String getDraft_user() { + return draft_user; + } + + public void setDraft_user(String draft_user) { + this.draft_user = draft_user; + } + + public String getDrafting_unit() { + return drafting_unit; + } + + public void setDrafting_unit(String drafting_unit) { + this.drafting_unit = drafting_unit; + } + + public String getLawsstateshow() { + return lawsstateshow; + } + + public void setLawsstateshow(String lawsstateshow) { + this.lawsstateshow = lawsstateshow; + } + + public String getReplace_laws_num() { + return replace_laws_num; + } + + public void setReplace_laws_num(String replace_laws_num) { + this.replace_laws_num = replace_laws_num; + } + + public String getBussBigClass() { + return bussBigClass; + } + + public void setBussBigClass(String bussBigClass) { + this.bussBigClass = bussBigClass; + } + + public String getBussFineClass() { + return bussFineClass; + } + + public void setBussFineClass(String bussFineClass) { + this.bussFineClass = bussFineClass; + } + + public String getClassifyCode() { + return classifyCode; + } + + public void setClassifyCode(String classifyCode) { + this.classifyCode = classifyCode; + } + + public String getPutYear() { + return putYear; + } + + public void setPutYear(String putYear) { + this.putYear = putYear; + } + + public String getFirstPutTime() { + return firstPutTime; + } + + public void setFirstPutTime(String firstPutTime) { + this.firstPutTime = firstPutTime; + } + + public String getQuoteStand() { + return quoteStand; + } + + public void setQuoteStand(String quoteStand) { + this.quoteStand = quoteStand; + } + + public String getCitationUser() { + return citationUser; + } + + public void setCitationUser(String citationUser) { + this.citationUser = citationUser; + } + + public String getStandEnName() { + return standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getResponsibleUnit() { + return responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getInterStandNum() { + return interStandNum; + } + + public void setInterStandNum(String interStandNum) { + this.interStandNum = interStandNum; + } + + public Date getNewproductPutTime() { + return newproductPutTime; + } + + public void setNewproductPutTime(Date newproductPutTime) { + this.newproductPutTime = newproductPutTime; + } + + public Date getProductPutTime() { + return productPutTime; + } + + public void setProductPutTime(Date productPutTime) { + this.productPutTime = productPutTime; + } + + public Date getNewcarPutTime() { + return newcarPutTime; + } + + public void setNewcarPutTime(Date newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getIssueUnit() { + return issueUnit; + } + + public void setIssueUnit(String issueUnit) { + this.issueUnit = issueUnit; + } + + public String getNatureShow() { + return natureShow; + } + + public void setNatureShow(String natureShow) { + this.natureShow = natureShow; + } + + public String getCountryShow() { + return countryShow; + } + + public void setCountryShow(String countryShow) { + this.countryShow = countryShow; + } + + public String getStandSortShow() { + return standSortShow; + } + + public void setStandSortShow(String standSortShow) { + this.standSortShow = standSortShow; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } + + public String getApplyAuthShow() { + return applyAuthShow; + } + + public void setApplyAuthShow(String applyAuthShow) { + this.applyAuthShow = applyAuthShow; + } + + public String getCategoryShow() { + return categoryShow; + } + + public void setCategoryShow(String categoryShow) { + this.categoryShow = categoryShow; + } + + public String getEnergyKindShow() { + return energyKindShow; + } + + public void setEnergyKindShow(String energyKindShow) { + this.energyKindShow = energyKindShow; + } + + public String getAdoptExtentShow() { + return adoptExtentShow; + } + + public void setAdoptExtentShow(String adoptExtentShow) { + this.adoptExtentShow = adoptExtentShow; + } + + public String getStatecodeShow() { + return statecodeShow; + } + + public void setStatecodeShow(String statecodeShow) { + this.statecodeShow = statecodeShow; + } + + public String getIssueTimeStr() { + return issueTimeStr; + } + + public void setIssueTimeStr(String issueTimeStr) { + this.issueTimeStr = issueTimeStr; + } + + public String getPutTimeStr() { + return putTimeStr; + } + + public void setPutTimeStr(String putTimeStr) { + this.putTimeStr = putTimeStr; + } + + public String getBussBigClassShow() { + return bussBigClassShow; + } + + public void setBussBigClassShow(String bussBigClassShow) { + this.bussBigClassShow = bussBigClassShow; + } + + public String getBussFineClassShow() { + return bussFineClassShow; + } + + public void setBussFineClassShow(String bussFineClassShow) { + this.bussFineClassShow = bussFineClassShow; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getPubUser() { + return pubUser; + } + + public void setPubUser(String pubUser) { + this.pubUser = pubUser; + } + + public String getPubUserShow() { + return pubUserShow; + } + + public void setPubUserShow(String pubUserShow) { + this.pubUserShow = pubUserShow; + } + + public String getPubOrg() { + return pubOrg; + } + + public void setPubOrg(String pubOrg) { + this.pubOrg = pubOrg; + } + + public String getPubOrgShow() { + return pubOrgShow; + } + + public void setPubOrgShow(String pubOrgShow) { + this.pubOrgShow = pubOrgShow; + } + + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public String getResponsibleUnitShow() { + return responsibleUnitShow; + } + + public void setResponsibleUnitShow(String responsibleUnitShow) { + this.responsibleUnitShow = responsibleUnitShow; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public Date getRegisterPutTime() { + return registerPutTime; + } + + public void setRegisterPutTime(Date registerPutTime) { + this.registerPutTime = registerPutTime; + } + + public String getNumberExpNull() { + return numberExpNull; + } + + public void setNumberExpNull(String numberExpNull) { + this.numberExpNull = numberExpNull; + } + + public String getItemsName() { + return itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItemsNum() { + return itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getStandId() { + return standId; + } + + public void setStandId(String standId) { + this.standId = standId; + } + + public String getTermsConditions() { + return termsConditions; + } + + public void setTermsConditions(String termsConditions) { + this.termsConditions = termsConditions; + } + + public String getMainPointImplementation() { + return mainPointImplementation; + } + + public void setMainPointImplementation(String mainPointImplementation) { + this.mainPointImplementation = mainPointImplementation; + } + + public String getParts() { + return parts; + } + + public void setParts(String parts) { + this.parts = parts; + } + + public Date getTackTime() { + return tackTime; + } + + public void setTackTime(Date tackTime) { + this.tackTime = tackTime; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getItemsType() { + return itemsType; + } + + public void setItemsType(String itemsType) { + this.itemsType = itemsType; + } + + public String getNameshowSplit() { + return nameshowSplit; + } + + public void setNameshowSplit(String nameshowSplit) { + this.nameshowSplit = nameshowSplit; + } + + public String getNumbershowSplit() { + return numbershowSplit; + } + + public void setNumbershowSplit(String numbershowSplit) { + this.numbershowSplit = numbershowSplit; + } + + public String getMsgContent() { + return msgContent; + } + + public void setMsgContent(String msgContent) { + this.msgContent = msgContent; + } + + public String getStandTag() { + return standTag; + } + + public void setStandTag(String standTag) { + this.standTag = standTag; + } + + public String getIssueUnitShow() { + return issueUnitShow; + } + + public void setIssueUnitShow(String issueUnitShow) { + this.issueUnitShow = issueUnitShow; + } + + public String getCiteStand() { + return citeStand; + } + + public void setCiteStand(String citeStand) { + this.citeStand = citeStand; + } + + public String getCitedStand() { + return citedStand; + } + + public void setCitedStand(String citedStand) { + this.citedStand = citedStand; + } + + public String getGkglbm() { + return gkglbm; + } + + public void setGkglbm(String gkglbm) { + this.gkglbm = gkglbm; + } + + public String getGkglbmShow() { + return gkglbmShow; + } + + public void setGkglbmShow(String gkglbmShow) { + this.gkglbmShow = gkglbmShow; + } + + public String getGzzxx() { + return gzzxx; + } + + public void setGzzxx(String gzzxx) { + this.gzzxx = gzzxx; + } + + public String getCysd() { + return cysd; + } + + public void setCysd(String cysd) { + this.cysd = cysd; + } + + public String getZrlx() { + return zrlx; + } + + public void setZrlx(String zrlx) { + this.zrlx = zrlx; + } + + public String getZrlxShow() { + return zrlxShow; + } + + public void setZrlxShow(String zrlxShow) { + this.zrlxShow = zrlxShow; + } + + public String getYqlx() { + return yqlx; + } + + public void setYqlx(String yqlx) { + this.yqlx = yqlx; + } + + public String getYqlxShow() { + return yqlxShow; + } + + public void setYqlxShow(String yqlxShow) { + this.yqlxShow = yqlxShow; + } + + public String getGxhbq() { + return gxhbq; + } + + public void setGxhbq(String gxhbq) { + this.gxhbq = gxhbq; + } + + public String getGxhbqShow() { + return gxhbqShow; + } + + public void setGxhbqShow(String gxhbqShow) { + this.gxhbqShow = gxhbqShow; + } + + public String getXgbm() { + return xgbm; + } + + public void setXgbm(String xgbm) { + this.xgbm = xgbm; + } + + public String getXgbmShow() { + return xgbmShow; + } + + public void setXgbmShow(String xgbmShow) { + this.xgbmShow = xgbmShow; + } + + public String getSvpps() { + return svpps; + } + + public void setSvpps(String svpps) { + this.svpps = svpps; + } + + public String getFo() { + return fo; + } + + public void setFo(String fo) { + this.fo = fo; + } + + public String getFoShow() { + return foShow; + } + + public void setFoShow(String foShow) { + this.foShow = foShow; + } + + public String getXmpgry() { + return xmpgry; + } + + public void setXmpgry(String xmpgry) { + this.xmpgry = xmpgry; + } + + public String getXmpgryShow() { + return xmpgryShow; + } + + public void setXmpgryShow(String xmpgryShow) { + this.xmpgryShow = xmpgryShow; + } + + public String getFgwhr() { + return fgwhr; + } + + public void setFgwhr(String fgwhr) { + this.fgwhr = fgwhr; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/page/PartProductEOPage.java b/adc-da-search/src/main/java/com/adc/da/search/page/PartProductEOPage.java new file mode 100644 index 00000000..7aad57d3 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/page/PartProductEOPage.java @@ -0,0 +1,358 @@ +package com.adc.da.search.page; + +import com.adc.da.base.page.BasePage; + +import java.util.Date; + +/** + * 功能:PART_PRODUCT PartProductEOPage
    + * 作者:code generator
    + * 日期: 2018-08-22
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class PartProductEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String corpId; + private String corpIdOperator = "="; + private String partType; + private String partTypeOperator = "="; + private String partName; + private String partNameOperator = "="; + private String partNummber; + private String partNummberOperator = "="; + private String riskGrade; + private String riskGradeOperator = "="; + private String suitModel; + private String suitModelOperator = "="; + private String motoModel; + private String motoModelOperator = "="; + private String motoType; + private String motoTypeOperator = "="; + private String oemCode; + private String oemCodeOperator = "="; + private String certNumber; + private String certNumberOperator = "="; + private String delFlag; + private String delFlagOperator = "="; + private String insertTime; + private String insertTime1; + private String insertTime2; + private String insertTimeOperator = "="; + private String updateTime; + private String updateTime1; + private String updateTime2; + private String updateTimeOperator = "="; + private String corpModel; + private String corpModelOperator = "="; + private String partSup; + private String partSupOperator = "="; + private String qrCodeStatus; + private String qrCodeStatusOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getCorpId() { + return this.corpId; + } + + public void setCorpId(String corpId) { + this.corpId = corpId; + } + + public String getCorpIdOperator() { + return this.corpIdOperator; + } + + public void setCorpIdOperator(String corpIdOperator) { + this.corpIdOperator = corpIdOperator; + } + + public String getPartType() { + return this.partType; + } + + public void setPartType(String partType) { + this.partType = partType; + } + + public String getPartTypeOperator() { + return this.partTypeOperator; + } + + public void setPartTypeOperator(String partTypeOperator) { + this.partTypeOperator = partTypeOperator; + } + + public String getPartName() { + return this.partName; + } + + public void setPartName(String partName) { + this.partName = partName; + } + + public String getPartNameOperator() { + return this.partNameOperator; + } + + public void setPartNameOperator(String partNameOperator) { + this.partNameOperator = partNameOperator; + } + + public String getPartNummber() { + return this.partNummber; + } + + public void setPartNummber(String partNummber) { + this.partNummber = partNummber; + } + + public String getPartNummberOperator() { + return this.partNummberOperator; + } + + public void setPartNummberOperator(String partNummberOperator) { + this.partNummberOperator = partNummberOperator; + } + + public String getRiskGrade() { + return this.riskGrade; + } + + public void setRiskGrade(String riskGrade) { + this.riskGrade = riskGrade; + } + + public String getRiskGradeOperator() { + return this.riskGradeOperator; + } + + public void setRiskGradeOperator(String riskGradeOperator) { + this.riskGradeOperator = riskGradeOperator; + } + + public String getSuitModel() { + return this.suitModel; + } + + public void setSuitModel(String suitModel) { + this.suitModel = suitModel; + } + + public String getSuitModelOperator() { + return this.suitModelOperator; + } + + public void setSuitModelOperator(String suitModelOperator) { + this.suitModelOperator = suitModelOperator; + } + + public String getMotoModel() { + return this.motoModel; + } + + public void setMotoModel(String motoModel) { + this.motoModel = motoModel; + } + + public String getMotoModelOperator() { + return this.motoModelOperator; + } + + public void setMotoModelOperator(String motoModelOperator) { + this.motoModelOperator = motoModelOperator; + } + + public String getMotoType() { + return this.motoType; + } + + public void setMotoType(String motoType) { + this.motoType = motoType; + } + + public String getMotoTypeOperator() { + return this.motoTypeOperator; + } + + public void setMotoTypeOperator(String motoTypeOperator) { + this.motoTypeOperator = motoTypeOperator; + } + + public String getOemCode() { + return this.oemCode; + } + + public void setOemCode(String oemCode) { + this.oemCode = oemCode; + } + + public String getOemCodeOperator() { + return this.oemCodeOperator; + } + + public void setOemCodeOperator(String oemCodeOperator) { + this.oemCodeOperator = oemCodeOperator; + } + + public String getCertNumber() { + return this.certNumber; + } + + public void setCertNumber(String certNumber) { + this.certNumber = certNumber; + } + + public String getCertNumberOperator() { + return this.certNumberOperator; + } + + public void setCertNumberOperator(String certNumberOperator) { + this.certNumberOperator = certNumberOperator; + } + + public String getDelFlag() { + return this.delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getDelFlagOperator() { + return this.delFlagOperator; + } + + public void setDelFlagOperator(String delFlagOperator) { + this.delFlagOperator = delFlagOperator; + } + + public String getInsertTime() { + return this.insertTime; + } + + public void setInsertTime(String insertTime) { + this.insertTime = insertTime; + } + + public String getInsertTime1() { + return this.insertTime1; + } + + public void setInsertTime1(String insertTime1) { + this.insertTime1 = insertTime1; + } + + public String getInsertTime2() { + return this.insertTime2; + } + + public void setInsertTime2(String insertTime2) { + this.insertTime2 = insertTime2; + } + + public String getInsertTimeOperator() { + return this.insertTimeOperator; + } + + public void setInsertTimeOperator(String insertTimeOperator) { + this.insertTimeOperator = insertTimeOperator; + } + + public String getUpdateTime() { + return this.updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateTime1() { + return this.updateTime1; + } + + public void setUpdateTime1(String updateTime1) { + this.updateTime1 = updateTime1; + } + + public String getUpdateTime2() { + return this.updateTime2; + } + + public void setUpdateTime2(String updateTime2) { + this.updateTime2 = updateTime2; + } + + public String getUpdateTimeOperator() { + return this.updateTimeOperator; + } + + public void setUpdateTimeOperator(String updateTimeOperator) { + this.updateTimeOperator = updateTimeOperator; + } + + public String getCorpModel() { + return this.corpModel; + } + + public void setCorpModel(String corpModel) { + this.corpModel = corpModel; + } + + public String getCorpModelOperator() { + return this.corpModelOperator; + } + + public void setCorpModelOperator(String corpModelOperator) { + this.corpModelOperator = corpModelOperator; + } + + public String getPartSup() { + return this.partSup; + } + + public void setPartSup(String partSup) { + this.partSup = partSup; + } + + public String getPartSupOperator() { + return this.partSupOperator; + } + + public void setPartSupOperator(String partSupOperator) { + this.partSupOperator = partSupOperator; + } + + public String getQrCodeStatus() { + return this.qrCodeStatus; + } + + public void setQrCodeStatus(String qrCodeStatus) { + this.qrCodeStatus = qrCodeStatus; + } + + public String getQrCodeStatusOperator() { + return this.qrCodeStatusOperator; + } + + public void setQrCodeStatusOperator(String qrCodeStatusOperator) { + this.qrCodeStatusOperator = qrCodeStatusOperator; + } + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/dao/SarStandAttrDetailsSearchDao.java b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/dao/SarStandAttrDetailsSearchDao.java new file mode 100644 index 00000000..d4cfbf6f --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/dao/SarStandAttrDetailsSearchDao.java @@ -0,0 +1,41 @@ +package com.adc.da.search.sarStandAttrDetails.dao; + +import com.adc.da.search.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.search.sarStandAttrDetails.page.SarStandAttrDetailsEOPage; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Repository +public interface SarStandAttrDetailsSearchDao extends BaseMapper { + + List queryByPage(SarStandAttrDetailsEOPage page); + + List queryByList(SarStandAttrDetailsEOPage page); + + Integer queryByCount(SarStandAttrDetailsEOPage page); + + int deleteByIds(@Param("idList") List idList); + + String selectAllFieldToStr(SarStandAttrDetailsEOPage page); + + List selectFileFieldForSel(@Param("attrField") String attrField); + + List selectFileFieldForSel1(@Param("attrField") String attrField); + + String selectNameByField(@Param("attrField") String attrField, @Param("sarType") String sarType); + + SarStandAttrDetails selectFieldByName(@Param("attrName") String attrName, @Param("sarType") String sarType); + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/entity/SarStandAttrDetails.java b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/entity/SarStandAttrDetails.java new file mode 100644 index 00000000..d3274d6c --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/entity/SarStandAttrDetails.java @@ -0,0 +1,114 @@ +package com.adc.da.search.sarStandAttrDetails.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 java.util.Date; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandAttrDetails对象", description="") +public class SarStandAttrDetails extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "属性字段") + @TableField("ATTR_FIELD") + private String attrField; + + @ApiModelProperty(value = "属性名称") + @TableField("ATTR_NAME") + private String attrName; + + @ApiModelProperty(value = "类型(INPUT_STR字符串输入框,INPUT_NUM数字输入框,SELECT_OPTION下拉框,DATE_PICKER日期选择,FILE文件,TEXTAREA文本框)") + @TableField("ATTR_TYPE") + private String attrType; + + @ApiModelProperty(value = "属性字段长度") + @TableField("ATTR_LEN") + private Long attrLen; + + @ApiModelProperty(value = "展示顺序") + @TableField("ORDER_NUM") + private Long orderNum; + + @ApiModelProperty(value = "是否可编辑(0是,1否)") + @TableField("IS_EDIT") + private String isEdit; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date modifyTime; + + @ApiModelProperty(value = "是否必填") + @TableField("IS_MUST") + private String isMust; + + @ApiModelProperty(value = "是否展示") + @TableField("IS_SHOW_IMP") + private String isShowImp; + + @ApiModelProperty(value = "展示区域") + @TableField("SHOW_REGION_ID") + private String showRegionId; + + @ApiModelProperty(value = "下拉选项所用的值") + @TableField("SEL_VAL") + private String selVal; + + @ApiModelProperty(value = "模块类型(STAND标准,LAWS政策)") + @TableField("SAR_TYPE") + private String sarType; + + @ApiModelProperty(value = "是否作为检索条件") + @TableField("IS_SEARCH") + private String isSearch; + + @ApiModelProperty(value = "是否预警") + @TableField("IS_WARN") + private String isWarn; + + @ApiModelProperty(value = "是否检索字段") + @TableField("IS_JANSUO") + private String isJansuo; + + @TableField(exist = false) + private String attrValue; + + @TableField(exist = false) + private String areaName; + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/page/SarStandAttrDetailsEOPage.java b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/page/SarStandAttrDetailsEOPage.java new file mode 100644 index 00000000..b601f044 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/page/SarStandAttrDetailsEOPage.java @@ -0,0 +1,46 @@ +package com.adc.da.search.sarStandAttrDetails.page; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:SAR_STAND_ATTR_DETAILS SarStandAttrDetailsEOPage
    + * 作者:code generator
    + * 日期: 2020-08-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarStandAttrDetailsEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String attrField; + private String attrFieldOperator = "="; + private String attrName; + private String attrNameOperator = "="; + private String attrType; + private String attrTypeOperator = "="; + private String orderNum; + private String orderNumOperator = "="; + private String isEdit; + private String isEditOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String attrLen; + private String attrLenOperator = "="; + private String[] idList; + private String notId; + private String sarType; + private String isSearch; + private String isWarn; +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/service/ISarStandAttrDetailsSearchService.java b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/service/ISarStandAttrDetailsSearchService.java new file mode 100644 index 00000000..7676a3e2 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/service/ISarStandAttrDetailsSearchService.java @@ -0,0 +1,24 @@ +package com.adc.da.search.sarStandAttrDetails.service; + +import com.adc.da.search.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.search.sarStandAttrDetails.page.SarStandAttrDetailsEOPage; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarStandAttrDetailsSearchService extends IService { + + List selectFileFieldForSel(String attrField); + + List selectFileFieldForSel1(String attrField); + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/service/impl/SarStandAttrDetailsSearchServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/service/impl/SarStandAttrDetailsSearchServiceImpl.java new file mode 100644 index 00000000..1e0e6aa5 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/sarStandAttrDetails/service/impl/SarStandAttrDetailsSearchServiceImpl.java @@ -0,0 +1,39 @@ +package com.adc.da.search.sarStandAttrDetails.service.impl; + +import com.adc.da.search.sarStandAttrDetails.dao.SarStandAttrDetailsSearchDao; +import com.adc.da.search.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.search.sarStandAttrDetails.service.ISarStandAttrDetailsSearchService; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarStandAttrDetailsSearchServiceImpl extends ServiceImpl implements ISarStandAttrDetailsSearchService { + + private static final Logger logger = LoggerFactory.getLogger(ISarStandAttrDetailsSearchService.class); + + @Autowired + private SarStandAttrDetailsSearchDao dao; + + public List selectFileFieldForSel(String attrField){ + return dao.selectFileFieldForSel(attrField); + } + public List selectFileFieldForSel1(String attrField){ + return dao.selectFileFieldForSel1(attrField); + } + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java b/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java new file mode 100644 index 00000000..861693dc --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java @@ -0,0 +1,282 @@ +package com.adc.da.search.service; + +import com.adc.da.search.entity.EsPage; +import com.alibaba.fastjson.JSONObject; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.common.xcontent.XContentBuilder; + +import java.util.List; +import java.util.Map; + +public interface ElasticsearchService { + + /** + * Elasticsearch 创建索引定义 + * @param index 要创建的索引 + * @return true表示创建成功,false表示创建失败 + * @author gaoyan + * date 2018-08-27 + */ + boolean createIndex(String index, XContentBuilder mapping); + + /** + * Elasticsearch 删除索引定义 + * @param index 要删除的索引 + * @return true表示删除成功,false表示删除失败 + * @author gaoyan + * date 2018-08-27 + */ + boolean deleteIndex(String index); + + /** + * Elasticsearch 批量删除数据 + */ + void deleteBatchId(List list,String index); + + /** + * Elasticsearch 判断索引是否存在定义 + * @param index 要判断的索引名称 + * @return true表示该索引存在,false表示该索引不存在 + * @author gaoyan + * date 2018-08-28 + */ + boolean isIndexExist(String index); + + /** + * 指定ID数据添加接口定义, + * @param jsonObject 要增加的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 (自6.0改版以后,一个索引里只允许有一种类型, + * 如果索引中已经有类型,增加数据过程中,添加其他类型会报错) + * @param id 数据ID + * @return 返回创建的文档的id + * @author gaoyan + * date 2018-08-28 + */ + String addData(JSONObject jsonObject, String index, String type, String id); + + String addDataForMap(Map attrInfoMap, String index, String type, String id); + + /** + * 不指定ID数据添加接口定义, + * @param jsonObject 要增加的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 (自6.0改版以后,一个索引里只允许有一种类型, + * 如果索引中已经有类型,增加数据过程中,添加其他类型会报错) + * @return 返回创建的文档的id + * @author gaoyan + * date 2018-08-28 + */ + String addData(JSONObject jsonObject, String index, String type); + + /** + * 通过ID删除数据定义 + * + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @return 正确删除返回DELETED + * @author gaoyan + * date 2018-08-28 + */ + String deleteDataById(String index, String type, String id); + + /** + * Elasticsearch 删除某个index所有的文档接口定义 + * @param index 要插入的索引 + * @return 删除返回的结果 + * @author gaoyan + * date 2018-08-27 + */ + long deleteAllDataOfIndex(String index); + + /** + * 通过ID 更新数据定义 + * + * @param jsonObject 要更新的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @return 如果正确删除返回 UPDATED + * @author gaoyan + * date 2018-08-28 + */ + String updateDataById(JSONObject jsonObject, String index, String type, String id); + + String updateDataByIdForMap(Map attrInfoMap, String index, String type, String id); + + /** + * 通过ID获取数据定义 + * + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @return + * @author gaoyan + * date 2018-08-28 + */ + Map searchDataById(String index, String type, String id, String fields); + + /** + * 使用索引查询所有 + */ + + List> searchAll(String index,String search); + + List> searchAllForExists(String index,String search); + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + List> searchListData(String index, String type, String fields, String matchStr); + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + List> searchListData(String index, String type, String fields, String sortField, boolean matchPhrase, String matchStr); + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param size 文档大小限制 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + List> searchListData(String index, String type, Integer size, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr); + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param size 文档大小限制 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + List> searchListData(String index, String type, long startTime, long endTime, Integer size, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr); + + /** + * 使用分词查询,并分页 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param currentPage 当前页 + * @param pageSize 每页显示条数 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + EsPage searchDataPage(String index, String type, int currentPage, int pageSize, long startTime, long endTime, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr); + + /** + * 高亮结果集 特殊处理 + * + * @param searchResponse + * @param highlightField + */ + List> setSearchResponse(SearchResponse searchResponse, String highlightField); + + /** + * Elasticsearch 批量插入接口定义 + * @param index 要插入的索引 + * @param type 要插入数据对应的type + * @param list 插入数据的list + * @return + * @author gaoyan + * date 2018-08-27 + */ + String addBulkData(String index, String type, List list); + + /** + * 默认查询全部数据,并按照对应的字段排序,方法内写了部分基础查询,主要是针对单个field但条件 + * 具体业务查询可参考方法体中注释代码 + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @param sortfield 需要排序的字段, + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> searchListDataAndSort(String[] index, String[] type, String sortfield, String[] fields); + + + /** + * 涉及组合查询条件主要涉及到boolQueryBuilder的使用 + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @param sortfield 需要排序的字段, + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> searchListDataUnit(String[] index, String[] type, String sortfield, String[] fields); + + + /** + * 涉及组合查询条件主要涉及到聚合函数的使用,主要是分组求平均值,依靠平均值排序 terms + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> searchListDataGroup(String[] index, String[] type); + + + /** + * 涉及组合查询条件主要涉及到聚合函数的使用,较为复杂,按照年龄阶段分组后,再安装性别分组,求balance平均值 ranges + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @return + * @author gaoyan + * date 2018-08-29 + */ + List> searchListDataGroupComplex(String[] index, String[] type); + + + + /** + * 查询结果集searchResponse装换成List形式 + * @param searchResponse 需要转换的数据 + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> SearchResponseToList(SearchResponse searchResponse); + + + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java b/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java new file mode 100644 index 00000000..f95e82cc --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java @@ -0,0 +1,41 @@ +package com.adc.da.search.service; + +import com.adc.da.search.entity.CommonSearchInfoEO; +import com.adc.da.search.entity.SeniorSearchInfoEO; +import org.elasticsearch.action.search.SearchResponse; + +import java.util.List; +import java.util.Map; + +public interface SearchCenterService { + + List> searchSarBykey(SeniorSearchInfoEO searchInfoEO) throws Exception; + + List> searchSarConditionBykey(SeniorSearchInfoEO searchInfoEO) throws Exception; + + List> searchSarConditionBykeyTitle(SeniorSearchInfoEO searchInfoEO) throws Exception; + + /** + * 查询结果集searchResponse装换成List形式 + * @param searchResponse 需要转换的数据 + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> SearchResponseToList(SearchResponse searchResponse); + + Map selectGroupdata(SeniorSearchInfoEO searchInfoEO); + + Map searchSarBykeyAndHighLightByDetils(SeniorSearchInfoEO searchInfoEO); + + String [] searchIdToImport(SeniorSearchInfoEO searchInfoEO); + + List> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception; + + List> searchSarBykeyAndHighLightNumber(SeniorSearchInfoEO searchInfoEO) throws Exception; + + List> searchSarBykeyAndHighLightNumberForTitle(SeniorSearchInfoEO searchInfoEO) throws Exception; + + void searchByKey(CommonSearchInfoEO commonSearchInfoEO); + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/StandLawsSearchService.java b/adc-da-search/src/main/java/com/adc/da/search/service/StandLawsSearchService.java new file mode 100644 index 00000000..d462d504 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/StandLawsSearchService.java @@ -0,0 +1,21 @@ +package com.adc.da.search.service; + + +import com.adc.da.search.entity.StandLawsEO; + +import java.util.Map; + +public interface StandLawsSearchService { + + String addStandLawsSearch(StandLawsEO standLawsEO); + + String updateEsFulltextserch(Map fullTextSearchEO); + + String addStandLawsSearchForMap(Map attrInfoMap); + +// String updateStandLawsSearch(StandLawsEO standLawsEO); + + String updateStandLawsSearchForMap(Map attrInfoMap); + + String deleteStandLawsSearch(StandLawsEO standLawsEO); +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java new file mode 100644 index 00000000..f2a1780a --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java @@ -0,0 +1,859 @@ +package com.adc.da.search.service.impl; + +import com.adc.da.search.entity.EsPage; +import com.adc.da.search.service.ElasticsearchService; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder; +import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; +import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest; +import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse; +import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequestBuilder; +import org.elasticsearch.action.bulk.BulkRequest; +import org.elasticsearch.action.bulk.BulkRequestBuilder; +import org.elasticsearch.action.bulk.BulkResponse; +import org.elasticsearch.action.delete.DeleteRequest; +import org.elasticsearch.action.delete.DeleteResponse; +import org.elasticsearch.action.get.GetRequestBuilder; +import org.elasticsearch.action.get.GetResponse; +import org.elasticsearch.action.index.IndexRequestBuilder; +import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.action.search.SearchRequestBuilder; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.action.support.master.AcknowledgedResponse; +import org.elasticsearch.action.update.UpdateRequest; +import org.elasticsearch.action.update.UpdateResponse; +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.text.Text; +import org.elasticsearch.common.unit.TimeValue; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.Scroll; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.SearchHits; +import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.BucketOrder; +import org.elasticsearch.search.aggregations.bucket.range.Range; +import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; +import org.elasticsearch.search.aggregations.metrics.Avg; +import org.elasticsearch.search.aggregations.metrics.Max; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; +import org.elasticsearch.search.sort.FieldSortBuilder; +import org.elasticsearch.search.sort.SortOrder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +@Component +public class ElasticsearchServiceImpl implements ElasticsearchService { + private static final Logger logger = LoggerFactory.getLogger(ElasticsearchServiceImpl.class); + @Autowired + private TransportClient transportClient; + + private TransportClient client; + + @PostConstruct + public void init() { + client = this.transportClient; + } + + /** + * Elasticsearch 创建索引实现 + * @param index 要创建的索引 + * @return true表示创建成功,false表示创建失败 + * @author gaoyan + * date 2018-08-27 + */ + @Override + public boolean createIndex(String index ,XContentBuilder mapping){ + if (!isIndexExist(index)) { + logger.info("Index is not exits!"); + } + CreateIndexRequestBuilder cib=client.admin().indices().prepareCreate(index); + cib.addMapping(index, mapping); + CreateIndexResponse indexresponse = cib.execute().actionGet(); + logger.info("执行建立成功?" + indexresponse.isAcknowledged()); + return indexresponse.isAcknowledged(); + } + + /** + * Elasticsearch 删除索引实现 + * @param index 要删除的索引 + * @return true表示删除成功,false表示删除失败 + * @author gaoyan + * date 2018-08-27 + */ + @Override + public boolean deleteIndex(String index) { + if (!isIndexExist(index)) { + logger.info("Index is not exits!"); + } + AcknowledgedResponse dResponse = client.admin().indices().prepareDelete(index).get(); + + if (dResponse.isAcknowledged()) { + logger.info("delete index " + index + " successfully!"); + } else { + logger.info("Fail to delete index " + index); + } + return dResponse.isAcknowledged(); + } + + /** + * Elasticsearch 判断索引是否存在实现 + * @param index 要判断的索引名称 + * @return true表示该索引存在,false表示该索引不存在 + * @author gaoyan + * date 2018-08-28 + */ + @Override + public boolean isIndexExist(String index) { + IndicesExistsResponse inExistsResponse = client.admin().indices().exists(new IndicesExistsRequest(index)).actionGet(); + if (inExistsResponse.isExists()) { + logger.info("Index [" + index + "] is exist!"); + } else { + logger.info("Index [" + index + "] is not exist!"); + } + return inExistsResponse.isExists(); + } + + /** + * 指定ID数据添加接口实现 + * @param jsonObject 要增加的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 (自6.0改版以后,一个索引里只允许有一种类型, + * 如果索引中已经有类型,增加数据过程中,添加其他类型会报错) + * @param id 数据ID + * @return 返回创建的文档的id + * @author gaoyan + * date 2018-08-28 + */ + @Override + public String addData(JSONObject jsonObject, String index, String type, String id) { + IndexResponse response = client.prepareIndex(index, type, id).setSource(jsonObject).get(); + logger.info("addData response status:{},id:{}", response.status().getStatus(), response.getId()); + return response.getId(); + } + + @Override + public String addDataForMap(Map attrInfoMap, String index, String type, String id) { + IndexResponse response = client.prepareIndex(index, type, id).setSource(attrInfoMap).get(); + logger.info("addData response status:{},id:{}", response.status().getStatus(), response.getId()); + return response.getId(); + } + + /** + * 不指定ID数据添加接口实现, + * @param jsonObject 要增加的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 (自6.0改版以后,一个索引里只允许有一种类型, + * 如果索引中已经有类型,增加数据过程中,添加其他类型会报错) + * @return 返回创建的文档的id + * @author gaoyan + * date 2018-08-28 + */ + @Override + public String addData(JSONObject jsonObject, String index, String type) { + IndexResponse response = client.prepareIndex(index, type).setSource(jsonObject).get(); + logger.info("addData response status:{},id:{}", response.status().getStatus(), response.getId()); + return response.getId(); + } + + /** + * 通过ID删除数据实现 + * + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @return 正确删除返回DELETED + * @author gaoyan + * date 2018-08-28 + */ + @Override + public String deleteDataById(String index, String type, String id) { + DeleteResponse response = client.prepareDelete(index, type, id).get(); + logger.info("deleteDataById response status:{},id:{}", response.status().getStatus(), response.getId()); + return response.getResult().toString(); + } + + @Override + public void deleteBatchId( List lists,String index) { + logger.info("批量删除索引: "+index +", 正在删除:" + lists.size() + "条数据"); + BulkRequest request = new BulkRequest(); + for (String smsStr : lists) { + DeleteRequest deleteRequest=new DeleteRequest(index,smsStr); + request.add(deleteRequest); + } + client.bulk(request); + logger.info("批量删除索引: "+index +", 删除成功共:" + lists.size() + "条数据"); + } + + + /** + * Elasticsearch 删除某个index所有的文档接口实现 + * @param index 要插入的索引 + * @return 删除返回的结果,一共删除多少条 + * @author gaoyan + * date 2018-08-27 + */ + @Override + public long deleteAllDataOfIndex(String index) { + /*BulkByScrollResponse response = DeleteByQueryAction.INSTANCE.newRequestBuilder(client) + .filter(QueryBuilders.matchAllQuery()) + .source(index) + .get(); + //一共删除掉多少条 + long deleted = response.getDeleted(); + return deleted;*/ + return 0; + } + + /** + * 通过ID 更新数据实现 + * + * @param jsonObject 要更新的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @return 如果正确删除返回 UPDATED + * @author gaoyan + * date 2018-08-28 + */ + @Override + public String updateDataById(JSONObject jsonObject, String index, String type, String id) { + UpdateRequest updateRequest = new UpdateRequest(); + updateRequest.index(index).type(type).id(id).doc(jsonObject); + UpdateResponse result; + try { + result = this.client.update(updateRequest).get(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + return e.getMessage(); + } + return result.getResult().toString(); + } + + @Override + public String updateDataByIdForMap(Map attrInfoMap, String index, String type, String id) { + UpdateRequest updateRequest = new UpdateRequest(); + updateRequest.index(index).type(type).id(id).doc(attrInfoMap); + UpdateResponse result; + try { + result = this.client.update(updateRequest).get(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + return e.getMessage(); + } + return result.getResult().toString(); + } + + /** + * 通过ID获取数据实现 + * + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @return Map结构的数据集 + * @author gaoyan + * date 2018-08-28 + */ + @Override + public Map searchDataById(String index, String type, String id, String fields) { + + GetRequestBuilder getRequestBuilder = client.prepareGet(index, type, id); + if (StringUtils.isNotEmpty(fields)) { + getRequestBuilder.setFetchSource(fields.split(","), null); + } + GetResponse getResponse = getRequestBuilder.get(); + return getResponse.getSource(); + } + + /** + * 使用索引查询所有 + */ + @Override + public List> searchAll(String index,String search) { + List> sourceList = new ArrayList>(); + + //1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称 +// Settings settings = Settings.builder().put("cluster.name", "my-application").build(); + QueryBuilder qBuilder = QueryBuilders.matchAllQuery(); + SearchResponse sResponse = client.prepareSearch(index) + .setQuery(qBuilder).setTrackTotalHits(true) + .get(); + SearchHits hits = sResponse.getHits(); + if(hits.getTotalHits().value > 0){ + QueryBuilder queryBuilder1 = QueryBuilders.multiMatchQuery(""); + if(StringUtils.isNotBlank(search) && "fulltextserch".equals(index)){ + queryBuilder1 = QueryBuilders.multiMatchQuery(search, + "sortTitle","numberTitle","yearOrder","nameTitle","title","textContent","issue_time" + ).minimumShouldMatch("100%").field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f).field("textContent",100f).field("issue_time",10f); + } + SearchResponse scrollResp = search(index,queryBuilder1, 1,(int) hits.getTotalHits().value); + for (SearchHit hit : scrollResp.getHits().getHits()) { + sourceList.add(hit.getSourceAsMap()); + } + } + return sourceList; + } + + + /** + * 使用索引查询所有 + */ + @Override + public List> searchAllForExists(String index,String search) { + List> sourceList = new ArrayList>(); + + //1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称 +// Settings settings = Settings.builder().put("cluster.name", "my-application").build(); + BoolQueryBuilder boolQueryMustNot = QueryBuilders.boolQuery(); + QueryBuilder qBuilder = boolQueryMustNot.mustNot(QueryBuilders.existsQuery("titleBig")); + SearchResponse sResponse = client.prepareSearch(index) + .setQuery(qBuilder).setTrackTotalHits(true) + .get(); + SearchHits hits = sResponse.getHits(); + if(hits.getTotalHits().value > 0){ +// QueryBuilder queryBuilder1 = QueryBuilders.multiMatchQuery(""); +// if(StringUtils.isNotBlank(search) && "fulltextserch".equals(index)){ +// queryBuilder1 = QueryBuilders.multiMatchQuery(search, +// "sortTitle","numberTitle","yearOrder","nameTitle","title","textContent","issue_time" +// ).minimumShouldMatch("100%").field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f).field("textContent",100f).field("issue_time",10f); +// } + SearchResponse scrollResp = search(index,qBuilder, 1,(int) hits.getTotalHits().value); + for (SearchHit hit : scrollResp.getHits()) { + sourceList.add(hit.getSourceAsMap()); + } + } + return sourceList; + } + + + public SearchResponse search(String index, QueryBuilder query,int page, int size) { + + updateIndex(index, page,size); + + SearchResponse searchResponse = client.prepareSearch(index) + .setScroll(new TimeValue(360000)) + .setQuery(query).setTrackTotalHits(true).setSize(size) + .get(); + return searchResponse; + } + + //更新索引的max_result_window参数 + private boolean updateIndex(String indices, int from,int size) { + int records = from * size + size; + if (records <= 10000) return true; + AcknowledgedResponse indexResponse = client.admin().indices() + .prepareUpdateSettings(indices) + .setSettings(Settings.builder() + .put("index.max_result_window", records) + .build() + ).get(); + return indexResponse.isAcknowledged(); + } + + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + * @author gaoyan + * date 2018-08-28 + */ + @Override + public List> searchListData(String index, String type, String fields, String matchStr) { + return searchListData(index, type, 0, 0, null, fields, null, false, null, matchStr); + } + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + * @author gaoyan + * date 2018-08-28 + */ + @Override + public List> searchListData(String index, String type, String fields, String sortField, boolean matchPhrase, String matchStr) { + return searchListData(index, type, 0, 0, null, fields, sortField, matchPhrase, null, matchStr); + } + + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称 + * @param size 文档大小限制 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + @Override + public List> searchListData(String index, String type, Integer size, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr) { + return searchListData(index, type, 0, 0, size, fields, sortField, matchPhrase, highlightField, matchStr); + } + + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param size 文档大小限制 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + @Override + public List> searchListData(String index, String type, long startTime, long endTime, Integer size, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr) { + + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index); + if (StringUtils.isNotEmpty(type)) { + searchRequestBuilder.setTypes(type.split(",")); + } + BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); + + if (startTime > 0 && endTime > 0) { + boolQuery.must(QueryBuilders.rangeQuery("processTime") + .format("epoch_millis") + .from(startTime) + .to(endTime) + .includeLower(true) + .includeUpper(true)); + } + + //搜索的的字段 + if (StringUtils.isNotEmpty(matchStr)) { + for (String s : matchStr.split(",")) { + String[] ss = s.split("="); + if (ss.length > 1) { + if (matchPhrase == Boolean.TRUE) { + boolQuery.must(QueryBuilders.matchPhraseQuery(s.split("=")[0], s.split("=")[1])); + } else { + boolQuery.must(QueryBuilders.matchQuery(s.split("=")[0], s.split("=")[1])); + } + } + + } + } + + // 高亮(xxx=111,aaa=222) + if (StringUtils.isNotEmpty(highlightField)) { + HighlightBuilder highlightBuilder = new HighlightBuilder(); + + //highlightBuilder.preTags("");//设置前缀 + //highlightBuilder.postTags("");//设置后缀 + + // 设置高亮字段 + highlightBuilder.field(highlightField); + searchRequestBuilder.highlighter(highlightBuilder); + } + + + searchRequestBuilder.setQuery(boolQuery); + + if (StringUtils.isNotEmpty(fields)) { + searchRequestBuilder.setFetchSource(fields.split(","), null); + } + searchRequestBuilder.setFetchSource(true); + + if (StringUtils.isNotEmpty(sortField)) { + searchRequestBuilder.addSort(sortField, SortOrder.DESC); + } + + if (size != null && size > 0) { + searchRequestBuilder.setSize(size); + } + + //打印的内容 可以在 Elasticsearch head 和 Kibana 上执行查询 + logger.info("\n{}", searchRequestBuilder); + + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + + long totalHits = searchResponse.getHits().getTotalHits().value; + long length = searchResponse.getHits().getHits().length; + + logger.info("共查询到[{}]条数据,处理数据条数[{}]", totalHits, length); + + if (searchResponse.status().getStatus() == 200) { + // 解析对象 + return setSearchResponse(searchResponse, highlightField); + } + + return null; + + } + + /** + * 使用分词查询,并分页 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param currentPage 当前页 + * @param pageSize 每页显示条数 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + @Override + public EsPage searchDataPage(String index, String type, int currentPage, int pageSize, long startTime, long endTime, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr) { + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index); + if (StringUtils.isNotEmpty(type)) { + searchRequestBuilder.setTypes(type.split(",")); + } + searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); + + // 需要显示的字段,逗号分隔(缺省为全部字段) + if (StringUtils.isNotEmpty(fields)) { + searchRequestBuilder.setFetchSource(fields.split(","), null); + } + + //排序字段 + if (StringUtils.isNotEmpty(sortField)) { + searchRequestBuilder.addSort(sortField, SortOrder.DESC); + } + + BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); + + if (startTime > 0 && endTime > 0) { + boolQuery.must(QueryBuilders.rangeQuery("processTime") + .format("epoch_millis") + .from(startTime) + .to(endTime) + .includeLower(true) + .includeUpper(true)); + } + + // 查询字段 + if (StringUtils.isNotEmpty(matchStr)) { + for (String s : matchStr.split(",")) { + String[] ss = s.split("="); + if (matchPhrase == Boolean.TRUE) { + boolQuery.must(QueryBuilders.matchPhraseQuery(s.split("=")[0], s.split("=")[1])); + } else { + boolQuery.must(QueryBuilders.matchQuery(s.split("=")[0], s.split("=")[1])); + } + } + } + + // 高亮(xxx=111,aaa=222) + if (StringUtils.isNotEmpty(highlightField)) { + HighlightBuilder highlightBuilder = new HighlightBuilder(); + + //highlightBuilder.preTags("");//设置前缀 + //highlightBuilder.postTags("");//设置后缀 + + // 设置高亮字段 + highlightBuilder.field(highlightField); + searchRequestBuilder.highlighter(highlightBuilder); + } + + searchRequestBuilder.setQuery(QueryBuilders.matchAllQuery()); + searchRequestBuilder.setQuery(boolQuery); + + // 分页应用 + searchRequestBuilder.setFrom(currentPage).setSize(pageSize); + + // 设置是否按查询匹配度排序 + searchRequestBuilder.setExplain(true); + + //打印的内容 可以在 Elasticsearch head 和 Kibana 上执行查询 + logger.info("\n{}", searchRequestBuilder); + + // 执行搜索,返回搜索响应信息 + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + + long totalHits = searchResponse.getHits().getTotalHits().value; + long length = searchResponse.getHits().getHits().length; + + logger.debug("共查询到[{}]条数据,处理数据条数[{}]", totalHits, length); + + if (searchResponse.status().getStatus() == 200) { + // 解析对象 + List> sourceList = setSearchResponse(searchResponse, highlightField); + + return new EsPage(currentPage, pageSize, (int) totalHits, sourceList); + } + + return null; + + } + + /** + * 高亮结果集 特殊处理 + * + * @param searchResponse + * @param highlightField + */ + @Override + public List> setSearchResponse(SearchResponse searchResponse, String highlightField) { + List> sourceList = new ArrayList>(); + StringBuffer stringBuffer = new StringBuffer(); + + for (SearchHit searchHit : searchResponse.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + + if (StringUtils.isNotEmpty(highlightField)) { + logger.debug("遍历 高亮结果集,覆盖 正常结果集" + searchHit.getSourceAsMap()); + Text[] text = searchHit.getHighlightFields().get(highlightField).getFragments(); + + if (text != null) { + for (Text str : text) { + stringBuffer.append(str.string()); + } + //遍历 高亮结果集,覆盖 正常结果集 + searchHit.getSourceAsMap().put(highlightField, stringBuffer.toString()); + } + } + sourceList.add(searchHit.getSourceAsMap()); + } + return sourceList; + } + + /** + * Elasticsearch 批量插入接口实现 + * @param index + * @param type + * @param list + * @return + * @author gaoyan + * date 2018-08-27 + */ + @Override + public String addBulkData(String index, String type, List list) { + BulkRequestBuilder bulkRequestBuilder = client.prepareBulk(); + for(int i=0;i> searchListDataAndSort( String[] index,String[] type,String sortfield,String[] fields) { + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index) + .setTypes(type) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + //设置全文搜索 + //.setQuery(QueryBuilders.matchAllQuery()) + //设置某个field的搜索条件项,此处是模糊搜索;text:mill ,搜索address中含有关键字 mill;text:mill lane,搜索address中含有关键字mill或者lane的 + //.setQuery(QueryBuilders.matchQuery("address","mill lane")) + //使用matchPhraseQuery过程中,当text:mill lane ,搜索address中即含有关键字mill lane,mill lane 词组不会被拆分,作为一个整体当做查询条件。 + .setQuery(QueryBuilders.matchPhraseQuery("address","lane mill")); + //如果需要按照多个字段排序,直接依次添加addSort + //.addSort(sortfield,SortOrder.DESC) + //设置查询数量 + //.setSize(60) + //设置从第几个开始查 + //.setFrom(0) + //设置要查询的字段,fields + //.setFetchSource(fields,null) + /*.setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18)) // Filter + .setExplain(true);*/ + SearchResponse response = searchRequestBuilder.get(); + List> result = SearchResponseToList(response); + return result; + } + + @Override + public List> searchListDataUnit(String[] index, String[] type, String sortfield, String[] fields) { + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index) + .setTypes(type) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH); + + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + + //boolQueryBuilder两次.must ,如下,表示address中必须包含lane和mill + //boolQueryBuilder.must(QueryBuilders.matchQuery("address","lane")); + //boolQueryBuilder.must(QueryBuilders.matchQuery("address","mill")); + + //boolQueryBuilder两次.should ,如下,表示address中必须包含lane或者mill + //boolQueryBuilder.should(QueryBuilders.matchQuery("address","lane")); + //boolQueryBuilder.should(QueryBuilders.matchQuery("address","mill")); + + //boolQueryBuilder两次.mustNot ,如下,表示address中必须不能包含lane和mill + //boolQueryBuilder.mustNot(QueryBuilders.matchQuery("address","lane")); + //boolQueryBuilder.mustNot(QueryBuilders.matchQuery("address","mill")); + + //BoolQuerBuilder 可以使用must,should,mustnot 组合使用 + //boolQueryBuilder.mustNot(QueryBuilders.matchQuery("state","ID")); + //boolQueryBuilder.must(QueryBuilders.matchQuery("age",40)); + //boolQueryBuilder.must(QueryBuilders.matchQuery("balance",28969)); + + //boolQueryBuilder.filter中可以添加RangeQueryBuilder,下面注释中两种定义的RangeQueryBuilder是一样的,不同的两种方式 + //RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("balance").from(20000).to(30000).includeLower(true).includeUpper(true); + //RangeQueryBuilder rangeQueryBuilder2 = QueryBuilders.rangeQuery("age").gte(20).lte(23); + //boolQueryBuilder.filter(rangeQueryBuilder); + //boolQueryBuilder.filter(rangeQueryBuilder2); + + searchRequestBuilder.setQuery(boolQueryBuilder); + SearchResponse response = searchRequestBuilder.get(); + List> result = SearchResponseToList(response); + return result; + } + + /** + * 涉及组合查询条件主要涉及到聚合函数的使用,主要是分组求平均值,依靠平均值排序 + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @return + * @author gaoyan + * date 2018-08-29 + */ + @Override + public List> searchListDataGroup(String[] index, String[] type) { + SearchResponse sr = client.prepareSearch(index) + .setTypes(type) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .addAggregation( + //分组依靠关键字terms + AggregationBuilders.terms("by_state") + .field("state.keyword") + .subAggregation( + //分组后求平均值依靠关键字avg,其他具体聚合函数可以参考官网 + // https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_metrics_aggregations.html + AggregationBuilders.avg("average_balance") + .field("balance") + ) + //分组后的排序方法,分别是聚合函数平均值,分组后统计数据,分组后关键字key,根据需求选择合适的排序 + .order(BucketOrder.aggregation("average_balance",false)) + .order(BucketOrder.count(true)) + .order(BucketOrder.key(true)) + ) + .execute() + .actionGet(); + //分组后得到的数据整合 + StringTerms result = sr.getAggregations().get("by_state"); + List> sourceList = new ArrayList>(); + for (StringTerms.Bucket bucket : result.getBuckets()) { + Map map = new HashMap<>(); + map.put("key",bucket.getKeyAsString()); + map.put("count",bucket.getDocCount()); + Avg avg = bucket.getAggregations().get("average_balance"); + map.put("averagebalance",avg.getValue()); + sourceList.add(map); + } + return sourceList; + } + + /** + * 涉及组合查询条件主要涉及到聚合函数的使用,较为复杂,按照年龄阶段分组后,再安装性别分组,求balance平均值 ranges + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @return + * @author gaoyan + * date 2018-08-29 + */ + @Override + public List> searchListDataGroupComplex(String[] index, String[] type) { + SearchResponse sr = client.prepareSearch(index) + .setTypes(type) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .addAggregation( + //分组依靠关键字range + AggregationBuilders.range("by_age") + .field("age") + .addRange(20,30) + .addRange(30,40) + .addRange(40,50) + .subAggregation( + //分组依靠关键字terms + AggregationBuilders.terms("by_gender") + .field("gender.keyword") + .subAggregation( + //分组后求依靠关键字avg,其他具体聚合函数可以参考官网 + // https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_metrics_aggregations.html + AggregationBuilders.max("max_balance") + .field("balance") + ) + ) + ) + .execute() + .actionGet(); + //分组后得到的数据整合 + Range result = sr.getAggregations().get("by_age"); + List> sourceList = new ArrayList>(); + for (Range.Bucket bucket : result.getBuckets()) { + Map map = new HashMap<>(); + map.put("key",bucket.getKeyAsString()); + map.put("count",bucket.getDocCount()); + + List> sourcechildList = new ArrayList>(); + StringTerms resultchild = bucket.getAggregations().get("by_gender"); + for (StringTerms.Bucket bucketchild : resultchild.getBuckets()) { + Map childmap = new HashMap<>(); + childmap.put("key",bucketchild.getKeyAsString()); + childmap.put("count",bucketchild.getDocCount()); + Max max = bucketchild.getAggregations().get("max_balance"); + map.put("maxbalance",max.getValue()); + sourcechildList.add(childmap); + } + + map.put("gender",sourcechildList); + sourceList.add(map); + } + return sourceList; + } + + + @Override + public List> SearchResponseToList(SearchResponse searchResponse) { + List> sourceList = new ArrayList>(); + for (SearchHit searchHit : searchResponse.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + sourceList.add(searchHit.getSourceAsMap()); + } + return sourceList; + } + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java new file mode 100644 index 00000000..93fb2b23 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java @@ -0,0 +1,2210 @@ +package com.adc.da.search.service.impl; + +import com.adc.da.search.entity.*; +import com.adc.da.search.service.SearchCenterService; +import com.adc.da.search.util.DateUtil; +import com.adc.da.search.util.InitStandAttrSearchUtil; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; +import org.elasticsearch.action.search.SearchRequestBuilder; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.action.support.master.AcknowledgedResponse; +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.collect.HppcMaps; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.text.Text; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.query.RangeQueryBuilder; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.aggregations.Aggregation; +import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; +import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightField; +import org.elasticsearch.search.sort.ScoreSortBuilder; +import org.elasticsearch.search.sort.SortOrder; +import org.json.JSONTokener; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@Component +@Slf4j +public class SearchCenterServiceImpl implements SearchCenterService { + private final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(SearchCenterServiceImpl.class); + + + @Autowired + private TransportClient transportClient; + + private TransportClient client; + + // 函数式接口,获取next数组 + @FunctionalInterface + public interface NextArray { + int[] getNext(String target); + } + + @Autowired + private DicTypeEODao dicTypeEODao; + + @PostConstruct + public void init() { + client = this.transportClient; + } + + private static final String ISSUE_TIME = "issue_time_data"; + private static final String PUT_TIME = "put_time"; + private static final String EPOCH_MILLIS = "epoch_millis"; + + //关键字检索 + @Override + public List> searchSarBykey(SeniorSearchInfoEO searchInfoEO) throws Exception { + //判断是否高级查询 isHight = true(searchInfoEO.getIsHigh()为空)时,证明不是高级查询 + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + + updateIndex(searchInfoEO.getSelectIndex()); + searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex()) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .addSort("issue_time_data", SortOrder.DESC) + .setSize(searchInfoEO.getPageSize()); + + if(searchInfoEO.getSelectIndex().equals("stand")) { + boolQueryShould = queryStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + } else if(searchInfoEO.getSelectIndex().equals("laws")){ + boolQueryShould = queryLawsMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + } else if(searchInfoEO.getSelectIndex().equals("bussstand")){ + boolQueryShould = queryBussStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + } + + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isBlank(searchInfoEO.getIsHigh())){ + QueryBuilder multiQueryBuilder; + switch (searchInfoEO.getSelectIndex()){ + case "stand": + if (isRqFormat(searchInfoEO.getSelectValue())) { + Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder); + } + boolQueryShould.should(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*")) + .should(QueryBuilders.wildcardQuery("nameshow.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standNatureName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("textStatusName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("isRelateAccessName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.matchPhraseQuery("content", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standSystem.keyword", "*"+searchInfoEO.getSelectValue()+"*")); + break; + case "laws": + boolQueryShould.should(QueryBuilders.wildcardQuery("CYSDShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("SYCLLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("accessCountry", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZRLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("isRelateAccess", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("YQLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("SYCLLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("GXHBQShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XCXSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZCCSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("EOPSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZCGCSShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FBJG", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("SVPPSName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XGBMShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZRBMName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZRBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FOShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("GKGLBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("content", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("WSSFCYShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("replaceLawsNum", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("replacedLawsNum", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XMPGJSShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XGLC", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_number", "*"+searchInfoEO.getSelectValue()+"*")); + break; + case "bussstand": + boolQueryShould.should(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_code.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*")) + .should(QueryBuilders.wildcardQuery("nameshow.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*")); + if (isRqFormat(searchInfoEO.getSelectValue())) { + Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder); + RangeQueryBuilder rangeQueryBuilder2 = QueryBuilders.rangeQuery("put_time_data").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder2); + } + break; + default: break; + } + } + + if(boolQueryShould!=null){ + boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0)); + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ + if (StringUtils.isNotBlank(searchInfoEO.getStandType())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getStandSort()+" "+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*")); + } + boolQueryBuilder.must(boolQueryShould); + }else { + boolQueryBuilder.must(boolQueryShould); + } + searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isNotBlank(searchInfoEO.getIsHigh())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + // 获取查询到的结果 + result = countStandSearchResult(searchRequestBuilder,searchInfoEO); + } + + return result; + } + + @Override + public List> searchSarConditionBykeyTitle(SeniorSearchInfoEO searchInfoEO) throws Exception { + //判断是否高级查询 isHight = true(searchInfoEO.getIsHigh()为空)时,证明不是高级查询 + boolean isHight = StringUtils.isBlank(searchInfoEO.getIsHigh()); + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + + updateIndex(searchInfoEO.getSelectIndex()); + String sortField1 = ""; + String sortField2 = ""; + String sortField3 = ""; + if("laws".equals(searchInfoEO.getSelectIndex())){ + sortField1 = "lawsNumber"; + sortField2 = "lawsYear"; + sortField3 = "lawsType.keyword"; + }else { + sortField1 = "standNumber"; + sortField2 = "standYear"; + sortField3 = "standSort.keyword"; + } + searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex()) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .addSort(new ScoreSortBuilder().order(SortOrder.DESC)) + .addSort("standSortOrder", SortOrder.ASC) + .addSort(sortField1, SortOrder.ASC) + .addSort(sortField2, SortOrder.DESC) + .addSort(sortField3, SortOrder.ASC) + .addSort("issue_time_data", SortOrder.DESC) + .setSize(searchInfoEO.getPageSize()); + + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ + QueryBuilder multiQueryBuilder; + switch (searchInfoEO.getSelectIndex()){ + case "stand": + boolQueryShould + .should(QueryBuilders.wildcardQuery("standSort.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1005f)) + .should(QueryBuilders.termQuery("standNumber", searchInfoEO.getSelectValue().toUpperCase()).boost(1004f)) + .should(QueryBuilders.wildcardQuery("standYear.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1003f)) + .should(QueryBuilders.wildcardQuery("nameshow.keyword", "*" +searchInfoEO.getSelectValue().toUpperCase()+ "*").boost(1002f)) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f)) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*" + searchInfoEO.getSelectValue() + "*").boost(999f)) + .should(QueryBuilders.wildcardQuery("numberShowBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(999f)) + .should(QueryBuilders.wildcardQuery("nameshowBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(1002f)) + .should(QueryBuilders.wildcardQuery("standEnNameBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(1002f)); + break; + case "laws": + boolQueryShould.should(QueryBuilders.wildcardQuery("lawsNumber.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsNo.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")); + break; + case "bussstand": + boolQueryShould + .should(QueryBuilders.wildcardQuery("standSort.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1005f)) + .should(QueryBuilders.termQuery("standNumber", searchInfoEO.getSelectValue().toUpperCase()).boost(1004f)) + .should(QueryBuilders.wildcardQuery("standYear.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1003f)) + .should(QueryBuilders.wildcardQuery("nameshow.keyword", "*" +searchInfoEO.getSelectValue().toUpperCase()+ "*").boost(1002f)) + .should(QueryBuilders.wildcardQuery("stand_code.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f)) + .should(QueryBuilders.wildcardQuery("stand_code.keyword", "*" + searchInfoEO.getSelectValue() + "*").boost(999f)) + .should(QueryBuilders.wildcardQuery("numberShowBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(999f)) + .should(QueryBuilders.wildcardQuery("nameshowBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(1002f)) + .should(QueryBuilders.wildcardQuery("standEnNameBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(1002f)); + break; + default: break; + } + } + + switch (searchInfoEO.getSelectIndex()){ + case "stand": + case "bussstand": + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + List list = Arrays.asList(searchInfoEO.getStandSort().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.termQuery("standSort.keyword", s)); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.termQuery("standSort.keyword", searchInfoEO.getStandSort())); + } + } + } + break; +// case "laws": +// break; + default: break; + } + + if(boolQueryShould!=null){ + boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0)); + + if(searchInfoEO.getCLLX() != null && StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + List fieldList = Arrays.asList(searchInfoEO.getCLLX() .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + fieldList.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.termQuery("CLLX", s)); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + } + + if(searchInfoEO.getNYLXCLASS() != null && StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS())){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + List fieldList = Arrays.asList(searchInfoEO.getNYLXCLASS() .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + fieldList.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.termQuery("NYLXCLASS", s)); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + } + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ + if (StringUtils.isNotBlank(searchInfoEO.getType())) { + boolQueryShould.must(QueryBuilders.wildcardQuery("type.keyword", "*"+searchInfoEO.getType()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandType()) && StringUtils.isNotBlank(searchInfoEO.getSelectIndex())) { + if(searchInfoEO.getSelectIndex().equals("bussstand")){ + boolQueryBuilder.must(QueryBuilders.wildcardQuery("type.keyword", "*"+searchInfoEO.getStandType()+"*")); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); + } + } + if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsSyqy())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSyqy.keyword", "*"+searchInfoEO.getLawsSyqy()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsSycx())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSycx.keyword", "*"+searchInfoEO.getLawsSycx()+"*")); + } + boolQueryBuilder.must(boolQueryShould); + }else { + if ("stand".equals(searchInfoEO.getSelectIndex()) && StringUtils.isNotBlank(searchInfoEO.getStandType())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); + } + boolQueryBuilder.must(boolQueryShould); + } + + searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); + + // 获取查询到的结果 + result = countStandSearchResult(searchRequestBuilder,searchInfoEO); + } + + return result; + } + + // 条件 + @Override + public List> searchSarConditionBykey(SeniorSearchInfoEO searchInfoEO) throws Exception { + //判断是否高级查询 isHight = true(searchInfoEO.getIsHigh()为空)时,证明不是高级查询 + boolean isHight = StringUtils.isBlank(searchInfoEO.getIsHigh()); + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + + updateIndex(searchInfoEO.getSelectIndex()); + String sortField1 = ""; + String sortField2 = ""; + String sortField3 = ""; + if("laws".equals(searchInfoEO.getSelectIndex())){ + sortField1 = "lawsNumber"; + sortField2 = "lawsYear"; + sortField3 = "lawsType.keyword"; + }else { + sortField1 = "standNumber"; + sortField2 = "standYear"; + sortField3 = "standSort.keyword"; + } + searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex()) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .addSort(new ScoreSortBuilder().order(SortOrder.DESC)) + .addSort("standSortOrder", SortOrder.ASC) + .addSort(sortField1, SortOrder.ASC) + .addSort(sortField2, SortOrder.DESC) + .addSort(sortField3, SortOrder.ASC) + .addSort("issue_time_data", SortOrder.DESC) + .setSize(searchInfoEO.getPageSize()); + + if(StringUtils.isNotBlank(searchInfoEO.getSelectIndex())) { + if(searchInfoEO.getSelectIndex().equals("stand")) { + boolQueryShould = queryStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + } else if(searchInfoEO.getSelectIndex().equals("laws")){ + boolQueryShould = queryLawsMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + } else if(searchInfoEO.getSelectIndex().equals("bussstand")){ + boolQueryShould = queryBussStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + } + } + + + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isBlank(searchInfoEO.getIsHigh())){ + QueryBuilder multiQueryBuilder; + switch (searchInfoEO.getSelectIndex()){ + case "stand": + if (isRqFormat(searchInfoEO.getSelectValue())) { + Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder); + } + boolQueryShould.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("numberShowBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(999f)) + .should(QueryBuilders.wildcardQuery("nameshowBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(1002f)) + .should(QueryBuilders.wildcardQuery("standEnNameBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(1002f)); + break; + case "laws": + boolQueryShould.should(QueryBuilders.wildcardQuery("lawsNumber.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsNo.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")); + if (isRqFormat(searchInfoEO.getSelectValue())) { + Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder); + RangeQueryBuilder rangeQueryBuilder2 = QueryBuilders.rangeQuery("commentCycleStart_data").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder2); + RangeQueryBuilder rangeQueryBuilder3 = QueryBuilders.rangeQuery("commentCycleEnd_data").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder3); + } + break; + case "bussstand": + boolQueryShould.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("nameshow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("numberShowBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(999f)) + .should(QueryBuilders.wildcardQuery("nameshowBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(1002f)) + .should(QueryBuilders.wildcardQuery("standEnNameBig.keyword", "*"+searchInfoEO.getSelectValue().toUpperCase()+"*").boost(1002f)); + if (isRqFormat(searchInfoEO.getSelectValue())) { + Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder); + RangeQueryBuilder rangeQueryBuilder2 = QueryBuilders.rangeQuery("put_time_data").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryShould.should(rangeQueryBuilder2); + } + break; + default: break; + } + } + + if(boolQueryShould!=null){ + boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0)); + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ + if (StringUtils.isNotBlank(searchInfoEO.getType())) { + boolQueryShould.must(QueryBuilders.wildcardQuery("type.keyword", "*"+searchInfoEO.getType()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandType()) && StringUtils.isNotBlank(searchInfoEO.getSelectIndex())) { + if(searchInfoEO.getSelectIndex().equals("bussstand")){ + boolQueryShould.must(QueryBuilders.wildcardQuery("type.keyword", "*"+searchInfoEO.getStandType()+"*")); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); + } + } + if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsSyqy())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSyqy.keyword", "*"+searchInfoEO.getLawsSyqy()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsSycx())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSycx.keyword", "*"+searchInfoEO.getLawsSycx()+"*")); + } + boolQueryBuilder.must(boolQueryShould); + }else { + if ("stand".equals(searchInfoEO.getSelectIndex()) && StringUtils.isNotBlank(searchInfoEO.getStandType())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); + } + boolQueryBuilder.must(boolQueryShould); + } + + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && !isRqFormat(searchInfoEO.getSelectValue())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + + searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); + + // 获取查询到的结果 + result = countStandSearchResult(searchRequestBuilder,searchInfoEO); + } + + return result; + } + + private Date dateFormatToStr(String dateStr){ + Date date = new Date(); + try { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + date = dateFormat.parse(dateStr.trim().substring(0,10)); + }catch (Exception e){ + e.getMessage(); + } + return date; + } + + public static boolean isRqFormat(String mes){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + try { + if (mes.equals(sdf.format(sdf.parse(mes)))) { + return true; + } + }catch (Exception e){ + return false; + } + + return false; + } + + /** + * 自动匹配动态字段条件查询 ES + * @param searchInfoEO + * @param boolQueryBuilder + * @return + */ + private BoolQueryBuilder querySeniorMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder) { + BoolQueryBuilder boolQueryBuilderMust = new BoolQueryBuilder(); + String sarStandAttrEOStr = searchInfoEO.getSarStandAttrEOStr(); + Map sarStandAttrMap = net.sf.json.JSONObject.fromObject(sarStandAttrEOStr); + + // MAP通过JAVA8新特性流过滤NULL值或对象 + Map collectAttrMap = sarStandAttrMap.entrySet().stream().filter((e) -> e.getValue() != null && StringUtils.isNotBlank(e.getValue().toString())).collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue)); + + if(sarStandAttrEOStr == null){ + collectAttrMap = new TreeMap<>(); + + if(searchInfoEO.getQCDW() != null && StringUtils.isNotBlank(searchInfoEO.getQCDW())){ + List fieldList = Arrays.asList(searchInfoEO.getQCDW() .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + JSONArray array= JSONArray.parseArray(JSON.toJSONString(fieldList)); + collectAttrMap.put("QCDW",array); + } + + if(searchInfoEO.getCYSD() != null && StringUtils.isNotBlank(searchInfoEO.getCYSD())){ + List fieldList = Arrays.asList(searchInfoEO.getCYSD().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + JSONArray array= JSONArray.parseArray(JSON.toJSONString(fieldList)); + collectAttrMap.put("CYSD",array); + } + + if(searchInfoEO.getCLLX() != null && StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + List fieldList = Arrays.asList(searchInfoEO.getCLLX() .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + JSONArray array= JSONArray.parseArray(JSON.toJSONString(fieldList)); + collectAttrMap.put("CLLX",array); + } + + if(searchInfoEO.getCYSDLAWS() != null && StringUtils.isNotBlank(searchInfoEO.getCYSDLAWS())){ + List fieldList = Arrays.asList(searchInfoEO.getCYSDLAWS() .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + JSONArray array= JSONArray.parseArray(JSON.toJSONString(fieldList)); + collectAttrMap.put("CYSDLAWS",array); + } + + if(searchInfoEO.getNYLXCLASS() != null && StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS())){ + List fieldList = Arrays.asList(searchInfoEO.getNYLXCLASS() .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + JSONArray array= JSONArray.parseArray(JSON.toJSONString(fieldList)); + collectAttrMap.put("NYLXCLASS",array); + } + + } + + List fieldList = getStringField(searchInfoEO); + // 自动匹配动态属性字段 es 查询 + for (String field : fieldList) { + // 关键字查询属性字段 + String keyWordField = field + ".keyword"; + String keyWordField2 = field + "Name.keyword"; +// if(field.equals("NYLX")){ +// field = field+"CLASS"; +// } + if(collectAttrMap.containsKey(field)){ + List fields = new ArrayList<>(); + Object json= new JSONTokener(collectAttrMap.get(field).toString()).nextValue(); + if(json instanceof org.json.JSONArray){ + fields = JSONObject.parseArray(collectAttrMap.get(field).toString(),String.class); + }else { + if(!json.equals("null")){ + fields.add(collectAttrMap.get(field).toString()); + } + } + if(!fields.isEmpty()){ + + if(fields.size() > 1){ + if(field.equals("SSRQ") || field.equals("XCXSSRQ") || field.equals("ZCCSSRQ")){ + List fieldRQList = DateUtil.getAllDate(fields.get(0),fields.get(1)); + fields.addAll(fieldRQList); + } + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + fields.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery(keyWordField, "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(keyWordField, "*"+fields.get(0)+"*")); + } + + } + } +// if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ +//// boolQueryBuilderMust.should(QueryBuilders.wildcardQuery(keyWordField2, "*"+searchInfoEO.getSelectValue()+"*")); +// }else { +// +// } + } + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())) { +// boolQueryBuilder.should(boolQueryBuilderMust); + if(searchInfoEO.getQCDW() != null && StringUtils.isNotBlank(searchInfoEO.getQCDW())){ + List list = Arrays.asList(searchInfoEO.getQCDW().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("QCDW.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("QCDW.keyword", "*"+searchInfoEO.getQCDW()+"*")); + } + } + + if(searchInfoEO.getCYSD() != null && StringUtils.isNotBlank(searchInfoEO.getCYSD())){ + List list = Arrays.asList(searchInfoEO.getCYSD().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("CYSD.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("CYSD.keyword", "*"+searchInfoEO.getCYSD()+"*")); + } + } + + if(searchInfoEO.getCLLX() != null && StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + List list = Arrays.asList(searchInfoEO.getCLLX().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("CLLX.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("CLLX.keyword", "*"+searchInfoEO.getCLLX()+"*")); + } + } + }else { + boolQueryBuilder.must(boolQueryBuilderMust); + } + return boolQueryBuilder; + } + + private List getStringField(SeniorSearchInfoEO searchInfoEO) { + String fieldInfo = InitStandAttrSearchUtil.queryField; + List fieldTimeInfo = InitStandAttrSearchUtil.timeFieldList; + String fieldLawsInfo = InitStandAttrSearchUtil.queryFieldLaws; + List fieldLawsTimeInfo = InitStandAttrSearchUtil.timeFieldListLaws; + String fieldBussInfo = InitStandAttrSearchUtil.queryFieldBuss; + List fieldBussTimeInfo = InitStandAttrSearchUtil.timeFieldListBuss; + if(!fieldBussTimeInfo.isEmpty()){ + fieldBussTimeInfo.add("FSRQBUSS"); + } + List fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + List fieldLawsInfoList = Arrays.asList(fieldLawsInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + List fieldBussInfoList = Arrays.asList(fieldBussInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + List fieldList = new ArrayList<>(); + if(StringUtils.isNotBlank(searchInfoEO.getSelectIndex())){ + fieldInfoList = fieldInfoList.stream().filter(s -> !fieldTimeInfo.contains(s)).collect(Collectors.toList()); + fieldLawsInfoList = fieldLawsInfoList.stream().filter(s -> !fieldLawsTimeInfo.contains(s)).collect(Collectors.toList()); + fieldBussInfoList = fieldBussInfoList.stream().filter(s -> !fieldBussTimeInfo.contains(s)).collect(Collectors.toList()); + if(searchInfoEO.getSelectIndex().equals("stand")){ + fieldList.addAll(fieldInfoList); + }else if(searchInfoEO.getSelectIndex().equals("bussstand")){ + fieldList.addAll(fieldBussInfoList); + }else if(searchInfoEO.getSelectIndex().equals("laws")){ + fieldList.addAll(fieldLawsInfoList); + }else if(searchInfoEO.getSelectIndex().equals("fulltextserch")){ + fieldList.addAll(fieldInfoList); + fieldList.addAll(fieldBussInfoList); + fieldList.addAll(fieldLawsInfoList); + } + } + return fieldList; + } + + //检索国内外标准数据 + public BoolQueryBuilder queryStandMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{ + String nameshowStr = "nameshow"; + // 高级搜索项,只针对标准 + + // 高级搜索项,只针对标准 + if (StringUtils.isNotBlank(searchInfoEO.getStandType())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + List list = Arrays.asList(searchInfoEO.getStandSort().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.termQuery("standSort.keyword", s)); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.termQuery("standSort.keyword", searchInfoEO.getStandSort())); + } + } + if (StringUtils.isNotBlank(searchInfoEO.getStandNumber())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getStandNumber()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandYear())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getStandYear()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandName())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standName.keyword", "*"+searchInfoEO.getStandName()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandEnName())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getStandEnName()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*")); + } + + if (searchInfoEO.getIssueTime() != null) { + Long starttime = searchInfoEO.getIssueTime().getTime(); + Long endtime = searchInfoEO.getIssueTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + + if (StringUtils.isNotBlank(searchInfoEO.getIsRelateAccess())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("isRelateAccess.keyword", "*"+searchInfoEO.getIsRelateAccess()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getStandNature())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNature.keyword", "*"+searchInfoEO.getStandNature()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getStandSystem())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standSystem.keyword", "*"+searchInfoEO.getStandSystem()+"*")); + } + + querySeniorMsg(searchInfoEO,boolQueryBuilder); + return boolQueryBuilder; + } + + //检索国内外政策数据 + public BoolQueryBuilder queryLawsMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{ + + if (StringUtils.isNotBlank(searchInfoEO.getLawsType())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsType.keyword", "*"+searchInfoEO.getLawsType()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getLawsNumber())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsNumber.keyword", "*"+searchInfoEO.getLawsNumber()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getLawsName())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsName.keyword", "*"+searchInfoEO.getLawsName()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getLawsEnName())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsEnName.keyword", "*"+searchInfoEO.getLawsEnName()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getLawsNo())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsNo.keyword", "*"+searchInfoEO.getLawsNo()+"*")); + } + + if (searchInfoEO.getIssueTime() != null) { + Long starttime = searchInfoEO.getIssueTime().getTime(); + Long endtime = searchInfoEO.getIssueTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + if (StringUtils.isNotBlank(searchInfoEO.getIssueCompany())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("issueCompany.keyword", "*"+searchInfoEO.getIssueCompany()+"*")); + } + if (searchInfoEO.getIssueTime() != null) { + Long startTime = searchInfoEO.getIssueTime().getTime(); + Long endTime = searchInfoEO.getIssueTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(startTime).to(endTime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + if (searchInfoEO.getCommentCycleStart() != null) { + Long startTime = searchInfoEO.getCommentCycleStart().getTime(); + Long endTime = searchInfoEO.getCommentCycleStart().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("commentCycleStart_data").format(EPOCH_MILLIS).from(startTime).to(endTime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + if (searchInfoEO.getCommentCycleEnd() != null) { + Long startTime = searchInfoEO.getCommentCycleEnd().getTime(); + Long endTime = searchInfoEO.getCommentCycleEnd().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("commentCycleEnd_data").format(EPOCH_MILLIS).from(startTime).to(endTime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsTextState())) { + List list = Arrays.asList(searchInfoEO.getLawsTextState().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("lawsTextState.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsTextState.keyword", "*"+searchInfoEO.getLawsTextState()+"*")); + } + } + if (StringUtils.isNotBlank(searchInfoEO.getLawsSyqy())) { + List list = Arrays.asList(searchInfoEO.getLawsSyqy().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("lawsSyqy.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSyqy.keyword", "*"+searchInfoEO.getLawsSyqy()+"*")); + } + } + if (StringUtils.isNotBlank(searchInfoEO.getLawsSycx())) { + List list = Arrays.asList(searchInfoEO.getLawsSycx().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("lawsSycx.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSycx.keyword", "*"+searchInfoEO.getLawsSycx()+"*")); + } + } + + if (StringUtils.isNotBlank(searchInfoEO.getIsRelateAccess())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("isRelateAccess.keyword", "*"+searchInfoEO.getIsRelateAccess()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsYear())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsYear.keyword", "*"+searchInfoEO.getLawsYear()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsNotisyncNum())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsNotisyncNum.keyword", "*"+searchInfoEO.getLawsNotisyncNum()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsBulletin())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsBulletin.keyword", "*"+searchInfoEO.getLawsBulletin()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsLabel())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsLabel.keyword", "*"+searchInfoEO.getLawsLabel()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsRemark())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsRemark.keyword", "*"+searchInfoEO.getLawsRemark()+"*")); + } + + querySeniorMsg(searchInfoEO,boolQueryBuilder); + return boolQueryBuilder; + } + + //检索企业标准数据 + /** + * boolQueryBuilder :must + * */ + public BoolQueryBuilder queryBussStandMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{ + + // 高级搜索项,只针对标准 + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + List list = Arrays.asList(searchInfoEO.getStandSort().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.termQuery("standSort.keyword", s)); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.termQuery("standSort.keyword", searchInfoEO.getStandSort())); + } + } + } + if (StringUtils.isNotBlank(searchInfoEO.getStandCode())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getStandCode()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandYear())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getStandYear()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandName())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getStandName()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandEnName())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getStandEnName()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getTextStatusBuss())) { + List list = Arrays.asList(searchInfoEO.getTextStatusBuss().split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + if(list.size() > 1){ + BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder(); + list.forEach(s -> { + boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+s+"*")); + }); + boolQueryBuilder.must(boolQueryBuilderShould); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getTextStatusBuss()+"*")); + } + } + + if (searchInfoEO.getIssueTime() != null) { + Long starttime = searchInfoEO.getIssueTime().getTime(); + Long endtime = searchInfoEO.getIssueTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + + if (searchInfoEO.getPutTime() != null) { + Long starttime = searchInfoEO.getPutTime().getTime(); + Long endtime = searchInfoEO.getPutTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("put_time_data").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + querySeniorMsg(searchInfoEO,boolQueryBuilder); + return boolQueryBuilder; + } + + //结果中检索 + public QueryBuilder queryInResult(SeniorSearchInfoEO searchInfoEO){ + // 记录搜索记录到数据库中 + QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); + BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); + List fieldList = getStringField(searchInfoEO); + List fieldNameList = new ArrayList<>(); + String[] standStr = null; + String[] lawsStr = null; + String[] bussstandStr = null; + if (StringUtils.isNotBlank(searchInfoEO.getSelectType()) && "titleSearch".equals(searchInfoEO.getSelectType())){ + standStr = new String[]{"numbershow","nameshow","standNumber"}; + lawsStr = new String[]{"lawsNo","lawsName"}; + bussstandStr = new String[]{"numbershow","nameshow"}; + }else { + standStr = new String[]{"standEnName", "standNatureName","standNumber", + "textStatusName", "isRelateAccessName", "numbershow","nameshow", "standSystem", "NYLXCLASS", "CLLX"}; + lawsStr = new String[]{"lawsEnName","lawsName", "lawsNo", "issueCompany", "lawsTextState", "lawsSyqy", "lawsSycx", "isRelateAccess", "lawsNotisyncNum", "lawsBulletin", "lawsLabel", "lawsRemark"}; + bussstandStr = new String[]{"stand_code", "standEnName", "nameshow", "standstateshow", "numbershow", "textStatusBuss", "textStatusBussName", "NYLXCLASS", "CLLX"}; + for (String field : fieldList) { + // 关键字查询属性字段 + String keyWordField2 = field + "Name"; + fieldNameList.add(keyWordField2); + } + } + switch (searchInfoEO.getSelectIndex()){ + case "stand": + List listStrings = Stream.of(standStr).collect(Collectors.toList()); + listStrings.addAll(fieldNameList); + String[] fieldArr = listStrings.stream().toArray(String[]::new); + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldArr + ).minimumShouldMatch("100%").field("numbershow",1001f).field("nameshow",1000f); +// boolQueryBuilder.should(); +// for (String field : fieldList) { +// // 关键字查询属性字段 +// String keyWordField2 = field + "Name.keyword"; +// boolQueryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),keyWordField2).minimumShouldMatch("100%")); +// } + break; + case "laws": + List listStringLaws = Stream.of(lawsStr).collect(Collectors.toList()); + listStringLaws.addAll(fieldNameList); + String[] fieldLawsArr = listStringLaws.stream().toArray(String[]::new); + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldLawsArr + ).minimumShouldMatch("100%").field("lawsNo",1001f).field("lawsName",1000f); + break; + case "bussstand": + List listStringBussstand = Stream.of(bussstandStr).collect(Collectors.toList()); + listStringBussstand.addAll(fieldNameList); + String[] fieldBussstandArr = listStringBussstand.stream().toArray(String[]::new); + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldBussstandArr + ).minimumShouldMatch("100%").field("numbershow",1001f).field("nameshow",1000f); + break; + default: break; + } + return multiQueryBuilder; + } + + /** + * @Author yangxuenan + * @Description 循环统计 + * Date 2018/12/21 10:16 + * @Param [searchRequestBuilder, searchInfoEO] + * @return void + **/ + public List> countStandSearchResult(SearchRequestBuilder searchRequestBuilder, SeniorSearchInfoEO searchInfoEO){ + List> result = new ArrayList<>(); + // 循环统计各种类型数据 + String[] seniortype; + if("stand".equals(searchInfoEO.getSelectIndex())) { + String[] seniortypeStand = {"standSort", "numbershow","statecode","CYSD","ZRLX","CLLX","CBCD","textStatus","textStatusName","NYLXCLASS","NYLX"}; + seniortype = seniortypeStand.clone(); + } else if("laws".equals(searchInfoEO.getSelectIndex())){ + String[] seniortypeLaws = {"lawsSyqy","lawsSycx","CYSDLAWS"}; + seniortype = seniortypeLaws.clone(); + } else if ("bussstand".equals(searchInfoEO.getSelectIndex())) { + String[] seniortypeBuss = {"standSort", "numbershow", "statecode","CLLX","textStatus","textStatusName","NYLXCLASS","SYCXCLASS"}; + seniortype = seniortypeBuss.clone(); + } else { + String[] seniortypeMsg = {"module"}; + seniortype = seniortypeMsg.clone(); + } + String standType = searchInfoEO.getStandType(); + String[] standVerify = {"GB","GB/T","QC/T","JT","JB","GA","GJB","HJ"}; + String[] standEnVerify = {"ECE","EU","EC","EEC","ISO","IEC","GTR","CFR", + "JASO","JIS","GSO","GOST","ΓOCT","TP","SASO","UAE","CONTRAN","DENATRAN","ABNT NBR","NBR","INMETRO","CONAMA","Normative Instruction","ADR"}; + String[] bussStandVerify = {"Q/FT A","Q/FT B","Q/FT E","Q/FT F","Q/FT G","Q/FT M","Q/FT Q","Q/FT R","Q/FT S","Q/FT T","Q/FT V","Q/FT X","Q/FT Y","Q/FT Z","Q/QCBFC"}; + List list = new ArrayList<>(); + + Map map = new HashMap<>(); + for (int i = 0; i < seniortype.length; i++) { + //分组依靠关键字terms + TermsAggregationBuilder aggregationBuilders = AggregationBuilders.terms("by_" + seniortype[i]).field(seniortype[i] + ".keyword").size(100000); + searchRequestBuilder.addAggregation(aggregationBuilders); + } + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + result = SearchResponseToList(response); + searchInfoEO.getPager().setRowCount((int) response.getHits().getTotalHits().value); + Map aggmap = response.getAggregations().asMap(); + + if(StringUtils.isNotBlank(standType)){ + if(standType.equals("INLAND")){ + list = Stream.of(standVerify).collect(Collectors.toList()); + }else if(standType.equals("bussstand")){ + list = Stream.of(bussStandVerify).collect(Collectors.toList()); + }else if(standType.equals("FOREIGN")){ + list = Stream.of(standEnVerify).collect(Collectors.toList()); + } + if (!result.isEmpty()) { + for (int i = 0; i < seniortype.length; i++) { + //分组后得到的数据整合 + Object results = aggmap.get("by_" + seniortype[i]); + if(results instanceof StringTerms){ + StringTerms stResult = (StringTerms) results; + Map submap = new HashMap<>(); + for (StringTerms.Bucket bucket : stResult.getBuckets()) { + // 多选处理,当前全部允许多选 + String keyName = bucket.getKeyAsString(); + String[] keyNameList = keyName.split(","); + // 对于属性允许多选,此处做出处理 + if(keyNameList.length>0){ + for (String itemKeyName: keyNameList){ + // put 之前判断是否已存在该key ,如果不存在,直接放入值,如果存在,需要进行一个累加 + keyNameFilter(standType, list, submap, bucket, itemKeyName); + } + } + else { + keyNameFilter(standType, list, submap, bucket, keyName); + } + } + map.put(seniortype[i], submap); + } + else{ + Map submap = new HashMap<>(); + map.put(seniortype[i], submap); + } + + } + if(standType.equals("bussstand")){ + map.forEach((s, o) -> { + if(s.equals("numbershow")){ + map.put("standSort",o); + } + }); + } + result.get(0).put("groupdata", map); + } + } + return result; + } + + public static Map objectToMap(Object obj){ + if(obj == null){ + return null; + } + + Map map = new HashMap(); + + Field[] declaredFields = obj.getClass().getDeclaredFields(); + try { + for (Field field : declaredFields) { + field.setAccessible(true); + map.put(field.getName(), field.get(obj)); + } + }catch (Exception e){ + e.getMessage(); + } + + return map; + } + + private void keyNameFilter(String standType, List list, Map submap, StringTerms.Bucket bucket, String keyname) { + if(standType.equals("bussstand")){ + if(!list.isEmpty()){ + String finalKeyName = keyname; + List list1 = list.stream().filter(string-> (finalKeyName.contains(string))).collect(Collectors.toList()); + if(!list1.isEmpty()){ + if(submap.containsKey(list1.get(0))){ + submap.put(list1.get(0).trim(), (long)submap.get(list1.get(0).trim())+ bucket.getDocCount()); + }else { + submap.put(list1.get(0).trim(), bucket.getDocCount()); + } + } + } + }else { + if(submap.containsKey(keyname)){ + submap.put(keyname.trim(), (long)submap.get(keyname)+ bucket.getDocCount()); + }else { + submap.put(keyname.trim(), bucket.getDocCount()); + } + } + } + + @Override + public List> SearchResponseToList(SearchResponse searchResponse) { + List> sourceList = new ArrayList>(); + for (SearchHit searchHit : searchResponse.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + sourceList.add(searchHit.getSourceAsMap()); + } + return sourceList; + } + + @Override + public Map selectGroupdata(SeniorSearchInfoEO searchInfoEO){ + // 按标准性质统计 + String []index={"stand","bussstand","laws"}; + String []seniortype = {"country","stand_sort","energy_kind","adopt_extent","statecode"}; + Map map = new HashMap<>(); + for(int i=0;i submap = new HashMap<>(); + for (StringTerms.Bucket bucket : result.getBuckets()) { + submap.put(bucket.getKeyAsString(),bucket.getDocCount()); + } + map.put(seniortype[i],submap); + } + return map; + } + + @Override + public String [] searchIdToImport(SeniorSearchInfoEO searchInfoEO) { + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + String numbershowStr = "numbershow"; + String nameshowStr = "nameshow"; + String replacedStandNumStr = "replaced_stand_num"; + String replaceStandNumStr = "replace_stand_num"; + if(StringUtils.isNotBlank(searchInfoEO.getSelectKey())){ + switch (searchInfoEO.getSelectKey()){ + // 修改过后,前台不会传 all + case "all": + boolQueryBuilder.should(QueryBuilders.matchPhraseQuery(numbershowStr,searchInfoEO.getSelectValue())); + boolQueryBuilder.should(QueryBuilders.matchQuery(nameshowStr,searchInfoEO.getSelectValue())); + boolQueryBuilder.should(QueryBuilders.matchQuery("standstateshow",searchInfoEO.getSelectValue())); + boolQueryBuilder.should(QueryBuilders.matchQuery("lawsstateshow",searchInfoEO.getSelectValue())); + boolQueryBuilder.should(QueryBuilders.matchQuery("applyarcticshow",searchInfoEO.getSelectValue())); + break; + case "standNumber": + case "lawsNumber": + case "bussstandsNumber": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())){ + boolQueryBuilder.must(QueryBuilders.matchPhraseQuery(numbershowStr,searchInfoEO.getSelectValue())); + } + break; + case "standName": + case "lawsName": + case "bussstandName": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(nameshowStr, searchInfoEO.getSelectValue())); + } + break; + case "standState": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("standstateshow", searchInfoEO.getSelectValue())); + } + break; + case "standFile": + //标准正文 暂缺 + break; + case "applyArctic": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("applyarcticshow", searchInfoEO.getSelectValue())); + } + break; + case "issueTime": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(searchInfoEO.getSelectStartTime().getTime()).to(searchInfoEO.getSelectEndTime().getTime()).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + break; + case "putTime": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + RangeQueryBuilder rangeQueryBuilders = QueryBuilders.rangeQuery("put_time").format(EPOCH_MILLIS).from(searchInfoEO.getSelectStartTime().getTime()).to(searchInfoEO.getSelectEndTime().getTime()).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilders); + } + break; + case "draftUser": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("draft_user", searchInfoEO.getSelectValue())); + } + break; + case "draftingUnit": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("drafting_unit", searchInfoEO.getSelectValue())); + } + break; + case "replaceStandNum": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(replaceStandNumStr, searchInfoEO.getSelectValue())); + } + break; + case "replacedStandNum": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(replacedStandNumStr, searchInfoEO.getSelectValue())); + } + break; + case "msgTitle": + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("title", searchInfoEO.getSelectValue())); + } + break; + default:break; + } + } + searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex()) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setFrom(0).setSize(10000); + + boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0)); + + if(searchInfoEO.getSelectIndex().equals("stand")) { + // 高级搜索项,只针对标准 + //标准性质,国内外标准,法规有此属性 + if (StringUtils.isNotBlank(searchInfoEO.getNature())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getNature().equals("all") && !searchInfoEO.getNature().equals("[]")) { + String[] arrlist = searchInfoEO.getNature().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("nature.keyword", arrlist)); + } + } + //国家,国内外标准,国内外法规有此属性 + if (StringUtils.isNotBlank(searchInfoEO.getCountry())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCountry().equals("all") && !searchInfoEO.getCountry().equals("[]")) { + String[] arrlist = searchInfoEO.getCountry().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("country.keyword", arrlist)); + } + } + //标准类别,国内外标准有此属性 + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandSort().equals("all") && !searchInfoEO.getStandSort().equals("[]")) { + String[] arrlist = searchInfoEO.getStandSort().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("stand_sort.keyword", arrlist)); + } + } + //编号,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtils.isNotBlank(searchInfoEO.getNumberShow())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(numbershowStr, searchInfoEO.getNumberShow())); + } + //名称,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtils.isNotBlank(searchInfoEO.getNameShow())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(nameshowStr, searchInfoEO.getNameShow())); + } + //适用认证,国内外标准,国内外法规,企业标准 有此属性 录入可多选 + if (StringUtils.isNotBlank(searchInfoEO.getApplyArctic())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getApplyArctic().equals("all") && !searchInfoEO.getApplyArctic().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("apply_arctic", searchInfoEO.getApplyArctic())); + } + } + + //认证类型,国内外标准,国内外法规 有此属性 录入可多选 + if (StringUtils.isNotBlank(searchInfoEO.getApplyAuth())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getApplyAuth().equals("all") && !searchInfoEO.getApplyAuth().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("apply_auth", searchInfoEO.getApplyAuth())); + } + } + //所属类别,国内外标准, 有此属性 + if (StringUtils.isNotBlank(searchInfoEO.getCategory())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCategory().equals("all") && !searchInfoEO.getCategory().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("category", searchInfoEO.getCategory())); + } + } + //能源种类,国内外标准,国内外法规,企业标准 有此属性 录入可多选 + if (StringUtils.isNotBlank(searchInfoEO.getEnergyKind())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getEnergyKind().equals("all") && !searchInfoEO.getEnergyKind().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("energy_kind", searchInfoEO.getEnergyKind())); + } + } + //采标程度,国内外标准, 有此属性 + if (StringUtils.isNotBlank(searchInfoEO.getAdoptExtent())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getAdoptExtent().equals("all") && !searchInfoEO.getAdoptExtent().equals("[]")) { + /*String[] arrlist = searchInfoEO.getAdoptExtent().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("adopt_extent", arrlist));*/ + boolQueryBuilder.must(QueryBuilders.matchQuery("adopt_extent", searchInfoEO.getAdoptExtent())); + } + } + //标准状态,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtils.isNotBlank(searchInfoEO.getStandState())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandState().equals("all") && !searchInfoEO.getStandState().equals("[]")) { + /*String[] arrlist = searchInfoEO.getStandState().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("stateCode", arrlist));*/ + boolQueryBuilder.must(QueryBuilders.matchQuery("statecode", searchInfoEO.getStandState())); + } + } + } + searchRequestBuilder.setQuery(boolQueryBuilder); + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + result = SearchResponseToList(response); + String [] resultid = new String[result.size()]; + for(int i=0;i item = result.get(i); + resultid[i] = item.get("id").toString(); + } + return resultid; + } + + @Override + public Map searchSarBykeyAndHighLightByDetils(SeniorSearchInfoEO searchInfoEO){ +// if () + Map resultMap = new HashMap<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + BoolQueryBuilder boolSelectValue = new BoolQueryBuilder(); + + // 记录搜索记录到数据库中 + if(StringUtils.isNotBlank(searchInfoEO.getStandId())){ + QueryBuilder multiQueryBuilderById = QueryBuilders.multiMatchQuery(""); + QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); + multiQueryBuilderById = QueryBuilders.multiMatchQuery(searchInfoEO.getStandId(), + "id" + ); + boolQueryBuilder.must(multiQueryBuilderById); + } + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isNotBlank(searchInfoEO.getStandId())){ + QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "textContent" + ).minimumShouldMatch("100%"); + boolQueryBuilder.must(multiQueryBuilder); + } + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + + BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS()) || StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getNYLXCLASS(), + "textContent" + ).minimumShouldMatch("100%").field("title",10f)); + } + + if(StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getCLLX(), + "textContent" + ).minimumShouldMatch("100%").field("title",10f)); + } + + boolQueryBuilder.must(queryBuilder); + } + + HighlightBuilder hiBuilder=new HighlightBuilder(); + HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); + highlightUser.numOfFragments(0); + hiBuilder.field(highlightUser); + hiBuilder.preTags(""); + hiBuilder.postTags(""); + updateIndex("fulltextserch"); + // _score 全文词频排序 + searchRequestBuilder = client.prepareSearch("fulltextserch") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .highlighter(hiBuilder); + + // boolQueryBuilder.must(QueryBuilders.matchQuery("valid_flag", 0)); +// boolQueryBuilder.should(boolQueryBuilderShould); + searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + for (SearchHit searchHit : response.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + resultMap = searchHit.getSourceAsMap(); + //解析高亮字段 + Map highlightFieldsnameshowStr = searchHit.getHighlightFields(); + HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); + if(fieldnameshowStr!= null){ + Text[] fragments = fieldnameshowStr.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + resultMap.put("textContent",n_field); + } + + // 条款内容 + Map highlightFieldItemStr = searchHit.getHighlightFields(); + HighlightField fieldItemStr= highlightFieldItemStr.get("textItems"); + if(fieldItemStr!= null){ + Text[] fragments = fieldItemStr.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + resultMap.put("textItems",n_field); + } + //发布日期添加高亮 +// Map highlightFieldsDatehowStr = searchHit.getHighlightFields(); +// HighlightField fieldDateshowStr= highlightFieldsDatehowStr.get("issue_time"); +// if(fieldDateshowStr!= null){ +// Text[] fragments = fieldDateshowStr.fragments(); +// String n_field = ""; +// for (Text fragment : fragments) { +// n_field += fragment; +// } +// //高亮标题覆盖原标题 +// sourceAsMap.put("issue_time",n_field); +// } + } + return resultMap; + } + + @Override + public List> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception { +// if () + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + BoolQueryBuilder boolSelectValue = new BoolQueryBuilder(); + + // 记录搜索记录到数据库中 + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ + QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "sortTitle","numberTitle","yearOrder","nameTitle","title","titleBig","textContent","issue_time" + ).minimumShouldMatch("100%").field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f).field("titleBig",1000f).field("textContent",100f).field("issue_time",10f); + boolQueryBuilder.must(multiQueryBuilder); + } + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + + BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS()) || StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getNYLXCLASS(), + "NYLXName" + ).minimumShouldMatch("100%")); +// .field("title",10f)); + } + + if(StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getCLLX(), + "CLLXName" + ).minimumShouldMatch("100%")); +// .field("title",10f)); + } + + boolQueryBuilder.must(queryBuilder); + } + + HighlightBuilder hiBuilder=new HighlightBuilder(); + HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title"); + hiBuilder.field(highlightTitle); + HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); + highlightUser.numOfFragments(3); + hiBuilder.field(highlightUser); + HighlightBuilder.Field highlightItem = new HighlightBuilder.Field("textItems"); + hiBuilder.field(highlightItem); + HighlightBuilder.Field highlightDate = new HighlightBuilder.Field("issue_time"); + hiBuilder.field(highlightDate); + hiBuilder.preTags(""); + hiBuilder.postTags(""); + updateIndex("fulltextserch"); + // _score 全文词频排序 + searchRequestBuilder = client.prepareSearch("fulltextserch") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .highlighter(hiBuilder) + .addSort("_score",SortOrder.DESC) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .setSize(searchInfoEO.getPageSize()); + + // boolQueryBuilder.must(QueryBuilders.matchQuery("valid_flag", 0)); +// boolQueryBuilder.should(boolQueryBuilderShould); + searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + for (SearchHit searchHit : response.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + Map sourceAsMap = searchHit.getSourceAsMap(); + String textStatusColor = ""; + if(StringUtils.isNotBlank(sourceAsMap.getOrDefault("textStatusFull","").toString())){ + String textStatus = sourceAsMap.getOrDefault("textStatusFull","").toString(); + if("废止".equals(textStatus) || "作废".equals(textStatus) ){ + textStatusColor = "redClass"; + }else if("参考".equals(textStatus) || "被代替".equals(textStatus)){ + textStatusColor = "greenClass"; + } + } + //解析高亮字段 + Map highlightFields = searchHit.getHighlightFields(); + HighlightField field= highlightFields.get("title"); + if(field!= null){ + Text[] fragments = field.fragments(); + StringBuilder n_field = new StringBuilder(); + for (Text fragment : fragments) { + n_field.append(fragment); + } + //高亮标题覆盖原标题 + if(StringUtils.isNotBlank(textStatusColor)){ + sourceAsMap.put("title", ""+ n_field.toString()+""); + }else { + sourceAsMap.put("title", n_field.toString()); + } + } + + Map highlightFieldsnameshowStr = searchHit.getHighlightFields(); + HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); + if(fieldnameshowStr!= null){ + Text[] fragments = fieldnameshowStr.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + sourceAsMap.put("textContent",n_field); + } + + // 条款内容 + Map highlightFieldItemStr = searchHit.getHighlightFields(); + HighlightField fieldItemStr= highlightFieldItemStr.get("textItems"); + if(fieldItemStr!= null){ + Text[] fragments = fieldItemStr.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + sourceAsMap.put("textItems",n_field); + } + //发布日期添加高亮 +// Map highlightFieldsDatehowStr = searchHit.getHighlightFields(); +// HighlightField fieldDateshowStr= highlightFieldsDatehowStr.get("issue_time"); +// if(fieldDateshowStr!= null){ +// Text[] fragments = fieldDateshowStr.fragments(); +// String n_field = ""; +// for (Text fragment : fragments) { +// n_field += fragment; +// } +// //高亮标题覆盖原标题 +// sourceAsMap.put("issue_time",n_field); +// } + result.add(sourceAsMap); + } + searchInfoEO.getPager().setRowCount((int) response.getHits().getTotalHits().value); + return result; + } + + @Override + public List> searchSarBykeyAndHighLightNumberForTitle(SeniorSearchInfoEO searchInfoEO) throws Exception { + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + // 记录搜索记录到数据库中 + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + QueryBuilder multiQueryBuilder; + QueryBuilder multiQueryBuilder1; + QueryBuilder queryBuilder1 = QueryBuilders.multiMatchQuery(""); + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())){ +// if(searchInfoEO.getSelectValue().length() > 1){ +// String str0 = searchInfoEO.getSelectValue().substring(0,1); +// String Str1 = searchInfoEO.getSelectValue().substring(1,2); +// String reg = ".*[0-9].*"; +// Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); +// if (pattern.matcher(str0).matches() && Str1.matches(reg)) { +// String value = searchInfoEO.getSelectValue().replace(str0,str0+" "); +// searchInfoEO.setSelectValue(value); +// } +// } + boolQueryShould + .should(QueryBuilders.wildcardQuery("sortTitle.keyword", "*" + searchInfoEO.getSelectValue() + "*").boost(1005f)) + //非 .keyword 无法查询出结果 + .should(QueryBuilders.termQuery("numberTitle.keyword",searchInfoEO.getSelectValue()).boost(1004f)) + .should(QueryBuilders.wildcardQuery("numberTitle.keyword","*" + searchInfoEO.getSelectValue() + "*").boost(1004f)) + .should(QueryBuilders.wildcardQuery("yearOrder.keyword","*" + searchInfoEO.getSelectValue() + "*").boost(1003f)) + .should(QueryBuilders.wildcardQuery("nameTitle.keyword","*" + searchInfoEO.getSelectValue() + "*").boost(1002f)) + .should(QueryBuilders.wildcardQuery("title.keyword", "*" + searchInfoEO.getSelectValue() + "*").boost(1000f)) + .should(QueryBuilders.wildcardQuery("titleBig.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f)); +// queryBuilder1 = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), +// "sortTitle","numberTitle","yearOrder","nameTitle","title" +// ).field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f); + +// queryBuilder1 = QueryBuilders.wildcardQuery("title.keyword","*" + searchInfoEO.getSelectValue() + "*"); +// queryBuilder1 = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), +// "title" +// ).minimumShouldMatch("100%").field("title",1000f); + + // 手机端搜索,不要搜不来企标 + if ("2".equals(searchInfoEO.getClientType())) { + boolQueryBuilder.mustNot(QueryBuilders.termQuery("standTypeOrder", "3")); + } + boolQueryBuilder.must(boolQueryShould); + } + + + BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS()) || StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getNYLXCLASS(), + "NYLXName" + ).minimumShouldMatch("100%")); + /* queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getNYLXCLASS(), + "textContent" + ).minimumShouldMatch("100%").field("title",1000f));*/ + } + + if(StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getCLLX(), + "CLLXName" + ).minimumShouldMatch("100%")); + /* queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getCLLX(), + "textContent" + ).minimumShouldMatch("100%").field("title",1000f));*/ + } + + boolQueryBuilder.must(queryBuilder); + } + + //在结果中检索 + HighlightBuilder hiBuilder=new HighlightBuilder(); + HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title.keyword"); + hiBuilder.field(highlightTitle); + HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); + highlightUser.numOfFragments(1); + highlightUser.fragmentSize(100); + hiBuilder.field(highlightUser); + hiBuilder.preTags(""); + hiBuilder.postTags(""); + updateIndex("fulltextserch"); + //1.按照资源库分类排序可实现数据的第一层排序(增加资源库自定义顺序标记,按标记排序) + //2.标准类别根据资源库分类基础上进行第二层排序(需提前维护标准类别的自定义顺序) + //3.标准编号则在标准类别的基础上进行第三层排序(此类排序针对国标、企标等规范类数据,海外标准由于历史数据不规范,可能会影响到检索的实际效果) + //4.标准年份为第四层排序规则 + searchRequestBuilder = client.prepareSearch("fulltextserch") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .highlighter(hiBuilder) + .addSort("standTypeOrder",SortOrder.ASC) + .addSort("standSortOrder",SortOrder.ASC) + .addSort(new ScoreSortBuilder().order(SortOrder.DESC)) + .addSort("numberTitle",SortOrder.ASC) + .addSort("yearOrder.keyword",SortOrder.DESC) + .addSort("sortTitle.keyword",SortOrder.ASC) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .setSize(searchInfoEO.getPageSize()); + + searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); + SearchResponse response = searchRequestBuilder.get(); + for (SearchHit searchHit : response.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + Map sourceAsMap = searchHit.getSourceAsMap(); +// String textContent = sourceAsMap.getOrDefault("textContent","").toString(); + + String textStatusColor = ""; +// if(StringUtils.isNotBlank(textContent) && StringUtils.isNotBlank(searchInfoEO.getSelectValue())){ +// String[] standStr = new String[]{"废止","被代替","作废","参考"}; +// for (String textStatus : standStr) { +// int i = indexOfToKMP(textContent, "文本状态:"+textStatus, 0, getNextValInstance()); +// if(i > 0 && ("废止".equals(textStatus) || "被代替".equals(textStatus) || "作废".equals(textStatus) )){ +// textStatusColor = "redClass"; +// break; +// }else if("参考".equals(textStatus)){ +// textStatusColor = "greenClass"; +// break; +// } +// } +// +// } + if(StringUtils.isNotBlank(searchInfoEO.getSelectValue())){ + + if(StringUtils.isNotBlank(sourceAsMap.getOrDefault("textStatusFull","").toString())){ + String textStatus = sourceAsMap.getOrDefault("textStatusFull","").toString(); + if("废止".equals(textStatus) || "作废".equals(textStatus) ){ + textStatusColor = "redClass"; + }else if("参考".equals(textStatus) || "被代替".equals(textStatus)){ + textStatusColor = "greenClass"; + } + } + + //高亮标题覆盖原标题 + String titleStr = sourceAsMap.get("title").toString(); + int i = indexOfToKMP(titleStr.toUpperCase(), searchInfoEO.getSelectValue().toUpperCase(), 0, getNextValInstance()); + String selectValue = titleStr.substring(i,i+searchInfoEO.getSelectValue().length()); + titleStr = titleStr.replace(selectValue,""+selectValue+""); + if(StringUtils.isNotBlank(textStatusColor)){ + sourceAsMap.put("title", ""+titleStr+""); + }else { + sourceAsMap.put("title", titleStr); + } + } + //解析高亮字段 +// Map highlightFields = searchHit.getHighlightFields(); +// HighlightField field= highlightFields.get("title.keyword"); +// if(field!= null){ +// Text[] fragments = field.fragments(); +// StringBuilder n_field = new StringBuilder(); +// for (Text fragment : fragments) { +// n_field.append(fragment); +// } +// //高亮标题覆盖原标题 +// if(StringUtils.isNotBlank(textStatusColor)){ +// sourceAsMap.put("title", ""+n_field.toString()+""); +// }else { +// sourceAsMap.put("title", n_field.toString()); +// } +// } + result.add(sourceAsMap); + } + searchInfoEO.getPager().setRowCount((int) response.getHits().getTotalHits().value); + return result; + } + + public static void main(String[] args) { + String str = "GB B005-2022 啊啊啊啊啊"; + String str1 = "B005"; + int i = indexOfToKMP(str, str1, 0, getNextValInstance()); + System.out.println(i); + + } + + // 改进版的nextVal数组 + public static NextArray getNextValInstance() { + return target -> { + // 初始化数组大小 + int[] nextVal = new int[target.length()]; + // 0 位置默认为-1 + nextVal[0] = -1; + // 遍历字符串每一位,计算每个位置上的值 + for (int i = 0, k = -1; i < target.length() - 1; ) { + if (k == -1 || target.charAt(i) == target.charAt(k)) { + i++; + k++; + // 判断当前字符和求的k位置的字符是否相等 + if (target.charAt(i) == target.charAt(k)) { + // 若相等,则继承k位置的值 + nextVal[i] = nextVal[k]; + } else { + // 不等,则还是使用原来next数组的值 + nextVal[i] = k; + } + } else { + k = nextVal[k]; + } + } + return nextVal; + }; + } + + /** + * 采用KMP算法,查找字符串子串的位置 + * + * @param source 源字符串 + * @param target 目标(子)字符串 + * @param pos 源字符串的起始索引 + * @param nextArray 函数式接口,传入获取next数组的方法(因为next数组上面定义了两种获取方式) + * @return 目标字符串在源字符串中第一次出现的索引位置 + */ + public static int indexOfToKMP(String source, String target, int pos, NextArray nextArray) { + int i, j; + // 调用接口中的方法,获取next数组 + int[] next = nextArray.getNext(target); + // 初始化遍历 + i = pos; + j = 0; + // 判断i和j的索引都不能大于等于字符串长度,否则说明比较完成 + while (i < source.length() && j < target.length()) { + // 如果j==-1,说明需要从头开始比较;或者由公共元素相等,继续比较 + if (j == -1 || source.charAt(i) == target.charAt(j)) { + i++; + j++; + } else { + // 需要按照数组回溯j + j = next[j]; + } + } + // 判断子字符的索引是否大于等于子字符串,如果为true说明查找成功,返回源字符串当前位置-子字符串长度 + return j >= target.length() ? i - target.length() : -1; + } + + @Override + public List> searchSarBykeyAndHighLightNumber(SeniorSearchInfoEO searchInfoEO) throws Exception { + String real = searchInfoEO.getSelectValue(); + boolean isReal = false; + int num = searchInfoEO.getSelectValue().indexOf(" "); + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_id","dic_type_code", "dic_type_name"); + Map dicMap = dicInfo.stream() + .filter(item-> ("JKSADFH564S".equals(item.getDicId()) || "NGETEMDJDI".equals(item.getDicId()) || "sg9gb7liywkrnv3pa5uh".equals(item.getDicId())) && !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getDicTypeName,(value1, value2 )->value2)); + String value = ""; + String select = ""; + if (-1 != num) { + value = searchInfoEO.getSelectValue().substring(0, num).trim().toUpperCase(); + if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))){ + select = searchInfoEO.getSelectValue().substring(num + 1).trim(); + real = value + " " + select; + }else { + select = null; + value = real; + } + }else{ + String reg = ".*[0-9].*"; + if(real.contains("-")){ + String content = real.split("-")[0]; + value = content.replaceAll("[^(A-Za-z\\/)]", ""); + if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) { + String[] valArr = value.split("\\/"); + if (valArr.length > 2) { + value = valArr[0] + "/" + valArr[1]; + if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) { + select = content.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,""); + }else { + select = content.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", ""); + } + // 如果类别小写 转 大写 + Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); + if (pattern.matcher(value).matches()) { + value = value.toUpperCase(); + } + }else{ + value = valArr[0]; + if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) { + select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,""); + }else { + select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", ""); + } + // 如果类别小写 转 大写 + Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); + if (pattern.matcher(value).matches()) { + value = value.toUpperCase(); + } + } + if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))){ + real = value + " " + select; + }else { + select = real; + value = null; + } + }else { + select = real; + value = null; + } + }else if(real.matches(reg)){ + value = real.replaceAll("[^(A-Za-z\\/)]", ""); + System.out.println(dicMap.containsKey(value.toUpperCase())); + if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) { + String[] valArr = value.split("\\/"); + if (valArr.length > 2) { + value = valArr[0] + "/" + valArr[1]; + String[] str = real.split(value); + String sel = str[1].replaceAll("[^(0-9\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", ""); + String[] valArr2 = sel.split("\\/"); + if(valArr2.length > 2){ + select = valArr2[0] + '/' + valArr[3] + valArr2[1]; + }else { + select = sel; + } + }else{ + if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))) { + select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", "").replace(value,""); + }else { + select = real.replaceAll("[^(0-9a-zA-Z\\.\\(\\(\\)\\)\\s\\/\\-\\:)]", ""); + } + + // 如果类别小写 转 大写 + Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); + if (pattern.matcher(value).matches()) { + value = value.toUpperCase(); + } + } + if (dicMap.containsKey(value.toUpperCase()) && dicMap.get(value.toUpperCase()) != null && !"".equals(dicMap.get(value.toUpperCase()))){ + real = value + " " + select; + }else { + select = real; + value = null; + } + }else { + select = real; + value = null; + } + }else { + value = real; + select = ""; + // 如果类别小写 转 大写 + Pattern pattern = Pattern.compile("^[a-zA-Z\\/]+$"); + if (pattern.matcher(value).matches()) { + value = value.toUpperCase(); + } + } + } + searchInfoEO.setSelectValue(select); + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + // 记录搜索记录到数据库中 + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + BoolQueryBuilder boolSelectValue = new BoolQueryBuilder(); + QueryBuilder multiQueryBuilder; + String[] selects = null; +// if (StringUtils.isNotBlank(select)) { +// //判断标准号是否企标SMTC ,标准列别 (),/,字母 +// Pattern pattern = Pattern.compile("^[a-zA-Z\\/\\(\\)\\(\\)]+$"); +// if (pattern.matcher(value).matches()) { +// Pattern patternbianhao = Pattern.compile("^[0-9a-zA-Z\\.\\(\\(\\)\\)\\-\\s]+$"); +// if (patternbianhao.matcher(select).matches()) { +// //符合标准编号 +// selects = select.replace(" ","-").split("-"); +// } else { +// //不符合标准编号 使用wildcard查询 编号 +// selects = select.replace(" ","-").split("-"); +// } +// } else { +// //不符合标准类别,wildcard 查询整体 real 6/23 解决搜索DRE的问题 +// selects = null; +// value = real; +//// isReal = true; +// } +// }else{ +// //没有空格,存在问题,使用wildcard查询 real +// selects = null; +// value = real; +//// isReal = true; +// } + + if (isReal){ + //查询real + value = null; + selects = null; + } + + if(null != value || null != select){ + if (null != value && select == null) { + QueryBuilder queryBuilder1 = QueryBuilders.multiMatchQuery(""); + queryBuilder1 = QueryBuilders.multiMatchQuery(value, + "sortTitle","numberTitle","yearOrder","nameTitle","title","titleBig","textContent","issue_time" + ).minimumShouldMatch("100%").field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f).field("titleBig",1000f).field("textContent",100f).field("issue_time",10f); + boolQueryShould.must(queryBuilder1); + } +// searchInfoEO.setSelectValue(searchInfoEO.getSelectValue().replace("-","\\-")); + if (null != select) { + QueryBuilder queryBuilder2 = QueryBuilders.multiMatchQuery(""); + queryBuilder2 = QueryBuilders.multiMatchQuery(real, + "sortTitle","numberTitle","yearOrder","nameTitle","title","titleBig","textContent","issue_time" + ).minimumShouldMatch("100%").field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f).field("titleBig",1000f).field("textContent",100f).field("issue_time",10f); + boolQueryShould.must(queryBuilder2); +// for (String se : selects) { +// if (StringUtils.isNotBlank(se)) { +// boolSelectValue +// .should(QueryBuilders.wildcardQuery("title.keyword", "*" + real + "*").boost(10f)) +// .should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + se + "*").boost(0.0000000000000000000000000000000001f)) +// .should(QueryBuilders.wildcardQuery("issue_time", "*" + se + "*")); +// } +// } + } +// if (isReal){ +// boolSelectValue.should(QueryBuilders.wildcardQuery("title.keyword", "*" + real + "*").boost(1000f)) +// .should(QueryBuilders.wildcardQuery("textContent.keyword", "*" + real + "*").boost(0.0000000000000000000000000000000001f)) +// .should(QueryBuilders.wildcardQuery("issue_time", "*" + real + "*")); +// boolQueryShould.must(boolSelectValue); +// } + } + + BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS()) || StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + if(StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getNYLXCLASS(), + "textContent" + ).minimumShouldMatch("100%").field("title",10f)); + } + + if(StringUtils.isNotBlank(searchInfoEO.getCLLX())){ + queryBuilder.should(QueryBuilders.multiMatchQuery(searchInfoEO.getCLLX(), + "textContent" + ).minimumShouldMatch("100%").field("title",10f)); + } + + boolQueryShould.must(queryBuilder); + } + //在结果中检索 +// boolQueryBuilder.must(multiQueryBuilder); + HighlightBuilder hiBuilder=new HighlightBuilder(); + HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title"); + hiBuilder.field(highlightTitle); + HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); + highlightUser.numOfFragments(3); + hiBuilder.field(highlightUser); + HighlightBuilder.Field highlightDate = new HighlightBuilder.Field("issue_time"); + hiBuilder.field(highlightDate); + hiBuilder.preTags(""); + hiBuilder.postTags(""); + + updateIndex("fulltextserch"); + // _score 全文词频排序 + searchRequestBuilder = client.prepareSearch("fulltextserch") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .highlighter(hiBuilder) + .addSort("_score",SortOrder.DESC) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .setSize(searchInfoEO.getPageSize()); + + searchRequestBuilder.setQuery(boolQueryShould).setTrackTotalHits(true); + + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + for (SearchHit searchHit : response.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + Map sourceAsMap = searchHit.getSourceAsMap(); + + String textStatusColor = ""; + if(StringUtils.isNotBlank(sourceAsMap.getOrDefault("textStatusFull","").toString())){ + String textStatus = sourceAsMap.getOrDefault("textStatusFull","").toString(); + if("废止".equals(textStatus) || "作废".equals(textStatus) ){ + textStatusColor = "redClass"; + }else if("参考".equals(textStatus) || "被代替".equals(textStatus)){ + textStatusColor = "greenClass"; + } + } + + //解析高亮字段 + Map highlightFields = searchHit.getHighlightFields(); + HighlightField field= highlightFields.get("title"); + if(field!= null){ + Text[] fragments = field.fragments(); + StringBuilder n_field = new StringBuilder(); + for (Text fragment : fragments) { + n_field.append(fragment); + } + //高亮标题覆盖原标题 + if(StringUtils.isNotBlank(textStatusColor)){ + sourceAsMap.put("title", ""+n_field.toString()+""); + }else { + sourceAsMap.put("title", n_field.toString()); + } + } + + Map highlightFieldsnameshowStr = searchHit.getHighlightFields(); + HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); + if(fieldnameshowStr!= null){ + Text[] fragments = fieldnameshowStr.fragments(); + StringBuilder n_field = new StringBuilder(); + for (Text fragment : fragments) { + n_field.append(fragment); + } + //高亮标题覆盖原标题 + sourceAsMap.put("textContent", n_field.toString()); + } + result.add(sourceAsMap); + } + searchInfoEO.getPager().setRowCount((int) response.getHits().getTotalHits().value); + //给aqi升序排,null放到最后 +// result.sort((o1, o2) -> { +// if (o1.get("issue_time") != null && o2.get("issue_time") != null) { +// return o2.get("issue_time").toString().compareTo(o1.get("issue_time").toString()); +// } else { +// return o1.get("issue_time") == null ? 1 : -1; +// } +// }); + return result; + } + + private String getValue(String real) { + String value = real.replaceAll("[^(A-Za-z\\/)]", ""); + String[] valArr = value.split("\\/"); + if (valArr.length > 2) { + value = valArr[0] + "/" + valArr[1]; + }else{ + value = valArr[0]; + } + return value; + } + + //更新索引的max_result_window参数 + private boolean updateIndex(String indices) { + AcknowledgedResponse indexResponse = client.admin().indices() + .prepareUpdateSettings(indices) + .setSettings(Settings.builder() + .put("index.max_result_window", 100000000) + .put("highlight.max_analyzed_offset", 100000000) + .put("index.highlight.max_analyzed_offset", 100000000) + .build() + ).get(); + return indexResponse.isAcknowledged(); + } + + @Override + public void searchByKey(CommonSearchInfoEO commonSearchInfoEO) { + + //写个假的根据字段查询 + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + + for (BasicSearchEntity entity: commonSearchInfoEO.getSearchEntities()) { + if(entity.getKey()!=null&&entity.getValue()!=null&&(entity.getSign()==null||entity.getSign().equals("=")))boolQueryMust.must(QueryBuilders.wildcardQuery(entity.getKey(),"*"+entity.getValue()+"*")); + } + + searchRequestBuilder=client.prepareSearch(commonSearchInfoEO.getSearchIndex()) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setFrom((commonSearchInfoEO.getCurrents()-1)*commonSearchInfoEO.getSize()) + .setSize(commonSearchInfoEO.getSize()); + boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0)); + + boolQueryBuilder.must(boolQueryMust); + boolQueryShould.should(boolQueryShould); + + searchRequestBuilder.setQuery(boolQueryBuilder); + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + + log.info(response.getHits().toString()); + + } +} + + + +// multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), +// numbershowSplit,nameshowSplit,numbershowStr,nameshowStr,"numberExpNull","standstateshow", "standEnName",replaceStandNumStr, +// replacedStandNumStr,"countryShow","synopsis","standSortShow","putYear","firstPutTime","ZQCBMShow","ZQCBM","stand_status", +// "baseSearchContent",content,"numbershow","nameshow","standstateshow","issue_time","FORMENDTIME","replaceStandNum","replacedStandNum","QBMJ","QBSQShow","XHQBMShow","SVPPSName","XGBMName","ZYQCRShow","ZRBMShow","ZQCBMName","QTQCRShow","XGLC").minimumShouldMatch("100%"); +// boolQueryMust.must(multiQueryBuilder); +// boolQueryShould.should(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery(numbershowStr, "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery(numbershowSplit, "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery(nameshowSplit, "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZQCBMShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZQCBM", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("stand_status", "*"+searchInfoEO.getSelectValue()+"*")) +// +// .should(QueryBuilders.wildcardQuery("numbershow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("nameshow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("FORMENDTIME", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("replaceStandNum", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("replacedStandNum", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("QBMJ", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("QBSQShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("XHQBMShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("SVPPSName", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("XGBMName", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZYQCRShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZRBMShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZQCBMName", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("QTQCRShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("XGLC", "*"+searchInfoEO.getSelectValue()+"*")) diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java new file mode 100644 index 00000000..1c450a90 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java @@ -0,0 +1,664 @@ +package com.adc.da.search.service.impl; + +import com.adc.da.search.entity.FullTextSearchEO; +import com.adc.da.search.entity.StandLawsEO; +import com.adc.da.search.service.ElasticsearchService; +import com.adc.da.search.service.StandLawsSearchService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.util.DateUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.elasticsearch.client.transport.TransportClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class StandLawsSearchServiceImpl implements StandLawsSearchService { + private static final Logger logger = LoggerFactory.getLogger(StandLawsSearchServiceImpl.class); + + + @Autowired + private TransportClient transportClient; + + private TransportClient client; + + @PostConstruct + public void init() { + client = this.transportClient; + } + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private ElasticsearchService elasticsearchService; + + @Override + public String addStandLawsSearch(StandLawsEO standLawsEO) { + String indexstate = ""; + //if(elasticsearchService.isIndexExist(standLawsEO.getType())){ + indexstate = elasticsearchService.addData((JSONObject) JSON.toJSON(standLawsEO),standLawsEO.getType(),standLawsEO.getType(),standLawsEO.getId()); + // 方便全文检索,重新建索引 + FullTextSearchEO fullTextSearchEO =getFullTextSearch(standLawsEO); + indexstate = elasticsearchService.addData((JSONObject) JSON.toJSON(fullTextSearchEO),"fulltextserch","fulltextserch",fullTextSearchEO.getId()); + return indexstate; + } + + @Override + public String addStandLawsSearchForMap(Map attrInfoMap) { + String indexstate = ""; + String type = String.valueOf(attrInfoMap.get("type")); + indexstate = elasticsearchService.addDataForMap(attrInfoMap,type,type,String.valueOf(attrInfoMap.get("id"))); + if ("stand".equals(type) || "laws".equals(type) || "bussstand".equals(type)) { + // 方便全文检索,重新建索引 + Map fullTextSearchEO =getFullTextSearchForMap(attrInfoMap); + indexstate = elasticsearchService.addDataForMap(fullTextSearchEO,"fulltextserch","fulltextserch",String.valueOf(fullTextSearchEO.get("id"))); + } + + return indexstate; + } + + @Override + public String updateEsFulltextserch(Map fullTextSearchEO){ + Set keys = fullTextSearchEO.keySet(); + for (String key:keys) { + String value = String.valueOf(fullTextSearchEO.get(key)); + if (StringUtils.isNotBlank(value) && !"null".equals(value)){ + value = value.replace(","," , "); + fullTextSearchEO.put(key,value); + } + } + String result = ""; + String id = String.valueOf(fullTextSearchEO.get("id")); + // 方便全文检索,重新建索引 + if(StringUtils.isNotBlank(id) && elasticsearchService.isIndexExist("fulltextserch")){ + result = elasticsearchService.updateDataByIdForMap(fullTextSearchEO,"fulltextserch","fulltextserch",id); + } + return result; + } + + @Override + public String updateStandLawsSearchForMap(Map attrInfoMap){ + Set keys = attrInfoMap.keySet(); + for (String key:keys) { + String value = String.valueOf(attrInfoMap.get(key)); + if (StringUtils.isNotBlank(value) && !"null".equals(value)){ + value = value.replace(","," , "); + attrInfoMap.put(key,value); + } + } + String result = ""; + // 先判断索引是否存在 + String type = String.valueOf(attrInfoMap.get("type")); + String id = String.valueOf(attrInfoMap.get("id")); + if(elasticsearchService.isIndexExist(type)){ + Map indexstate = elasticsearchService.searchDataById(type,type,id,null); + if(indexstate == null || indexstate.isEmpty()){ + result = elasticsearchService.addDataForMap(attrInfoMap,type,type,id); + } else { + result = elasticsearchService.updateDataByIdForMap(attrInfoMap,type,type,id); + } + } else { + result = elasticsearchService.addDataForMap(attrInfoMap,type,type,id); + } + if ("stand".equals(type) || "laws".equals(type) || "bussstand".equals(type)) { + // 方便全文检索,重新建索引 + Map fullTextSearchEO =getFullTextSearchForMap(attrInfoMap); + if(elasticsearchService.isIndexExist("fulltextserch")){ + Map indexstate = elasticsearchService.searchDataById("fulltextserch","fulltextserch",id,null); + if(indexstate == null || indexstate.isEmpty()){ + result = elasticsearchService.addDataForMap(fullTextSearchEO,"fulltextserch","fulltextserch",id); + } else { + result = elasticsearchService.updateDataByIdForMap(fullTextSearchEO,"fulltextserch","fulltextserch",id); + } + } else { + result = elasticsearchService.addDataForMap(fullTextSearchEO,"fulltextserch","fulltextserch",id); + } + } + return result; + } + + + @Override + public String deleteStandLawsSearch(StandLawsEO standLawsEO){ + String result = ""; + // 先判断索引是否存在 + if(elasticsearchService.isIndexExist(standLawsEO.getType())){ + Map indexstate = elasticsearchService.searchDataById(standLawsEO.getType(),standLawsEO.getType(),standLawsEO.getId(),null); + if(indexstate != null && !indexstate.isEmpty()){ + result = elasticsearchService.deleteDataById(standLawsEO.getType(),standLawsEO.getType(),standLawsEO.getId()); + } + } + if(elasticsearchService.isIndexExist("fulltextserch")){ + Map indexstate = elasticsearchService.searchDataById("fulltextserch","fulltextserch",standLawsEO.getId(),null); + if(indexstate != null && !indexstate.isEmpty()){ + result = elasticsearchService.deleteDataById("fulltextserch","fulltextserch",standLawsEO.getId()); + } + } + return result; + } + + Map getFullTextSearchForMap(Map attrInfoMap){ + + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_id","dic_type_code", "dic_type_name","show_index"); + dicInfo = dicInfo.stream().filter(dicTypeEO -> { + if(StringUtils.isNotBlank(dicTypeEO.getDicTypeCode())){ + dicTypeEO.setDicTypeCode(dicTypeEO.getDicTypeCode().replace(" ","")); + return true; + } + return false; + }).collect(Collectors.toList()); + Map dicMap = dicInfo.stream() + .filter(item-> ("2klxdk7fo3tvpvin70dk".equals(item.getDicId()) || "18mg1g4x0rwubcto7fdd".equals(item.getDicId()) || "08rerbsn8ucjfk13z2ci".equals(item.getDicId()) || "pnv0ik979yqogocqujwo".equals(item.getDicId())) && !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getShowIndex,(value1, value2 )->value2)); + + boolean isForeign = false; + Map fullTextSearchEO = new HashMap<>(); + fullTextSearchEO.put("titleBig",attrInfoMap.get("sortTitle")); + Map mapItems = new TreeMap<>(); + if(attrInfoMap.get("mapItems") != null){ + mapItems = net.sf.json.JSONObject.fromObject(attrInfoMap.get("mapItems").toString()); + } + fullTextSearchEO.put("id",String.valueOf(attrInfoMap.get("id"))); + if ("FOREIGN".equals(String.valueOf(attrInfoMap.get("standType")))){ + fullTextSearchEO.put("indexType",String.valueOf(attrInfoMap.get("standType"))); + isForeign = true; + }else { + fullTextSearchEO.put("indexType", String.valueOf(attrInfoMap.get("type"))); + } + if("stand".equals(attrInfoMap.get("type"))){ + // 标准全文 + if(StringUtils.isNotBlank(attrInfoMap.getOrDefault("nameshow","").toString())){ + fullTextSearchEO.put("title",attrInfoMap.get("numbershow")+" "+attrInfoMap.getOrDefault("nameshow","")); + }else{ + fullTextSearchEO.put("title",attrInfoMap.get("numbershow")+" "+attrInfoMap.getOrDefault("standEnName","")); + } + + for (String key : attrInfoMap.keySet()) { + if (null == attrInfoMap.get(key) || "".equals(attrInfoMap.get(key))){ + attrInfoMap.put(key, "null"); + } + } + + // 逻辑字段 + if ("FOREIGN".equals(String.valueOf(attrInfoMap.get("standType")))){ + fullTextSearchEO.put("standTypeOrder","2"); + }else { + fullTextSearchEO.put("standTypeOrder","1"); + } + fullTextSearchEO.put("standSortOrder",esStateOrder(String.valueOf(attrInfoMap.get("standSort")),dicMap)); + fullTextSearchEO.put("yearOrder", String.valueOf(attrInfoMap.get("standYear"))); + fullTextSearchEO.put("sortTitle", String.valueOf(attrInfoMap.get("standSort"))); + fullTextSearchEO.put("numberTitle", String.valueOf(attrInfoMap.get("standNumber"))); + fullTextSearchEO.put("nameTitle", String.valueOf(attrInfoMap.get("standName"))); + fullTextSearchEO.put("nameEnTitle", String.valueOf(attrInfoMap.get("standEnName"))); + fullTextSearchEO.put("textStatusFull", attrInfoMap.getOrDefault("textStatusName","")); + + + // 全文检索 加入 发布稿 分解单条款内容逻辑 + StringBuilder itemBuilder = new StringBuilder(); + + mapItems.forEach((s, s2) -> { + itemBuilder.append(s+" ").append(s2).append("
    "); + }); + StringBuilder textItemContent = replaceAll(itemBuilder, "null", "--"); + fullTextSearchEO.put("textItems",textItemContent.toString()); + + if (null != attrInfoMap.get("issueTime") && !"".equals(attrInfoMap.get("issueTime")) && !"null".equals(attrInfoMap.get("issueTime"))) { + fullTextSearchEO.put("issue_time", dateFormatToStr(String.valueOf(attrInfoMap.get("issueTime")))); + fullTextSearchEO.put("issue_time_order", dateFormatToStr(String.valueOf(attrInfoMap.get("issueTime"))).replace("-","")); + }else { + fullTextSearchEO.put("issue_time", "--"); + fullTextSearchEO.put("issue_time_order", "--"); + } + + // 文本内容字段 + try { + StringBuilder contentBuilder = new StringBuilder(); + + contentBuilder.append("标准类别:").append(attrInfoMap.get("standSort")).append(" "); + contentBuilder.append("标准编号:").append(attrInfoMap.get("standNumber")).append(" "); + contentBuilder.append("标准年份:").append(attrInfoMap.get("standYear")).append(" "); + contentBuilder.append("标准名称:").append(attrInfoMap.get("standName")).append(" "); + contentBuilder.append("标准英文名称:").append(attrInfoMap.get("standEnName")).append(" "); + contentBuilder.append("标准性质:").append(attrInfoMap.get("standNatureName")).append(" "); + contentBuilder.append("文本状态:").append(attrInfoMap.get("textStatusName")).append(" "); + contentBuilder.append("标准发布日期:").append(attrInfoMap.get("issueTime")).append(" "); + contentBuilder.append("是否纳入认证清单:").append(attrInfoMap.get("isRelateAccessName")).append(" "); + + // 区分国内、海外 + if (isForeign) { + contentBuilder.append("标准状态:").append(attrInfoMap.get("standstateshow")).append(" "); + contentBuilder.append("标签:").append(attrInfoMap.get("gxhbq")).append(" "); + }else { + contentBuilder.append("标准体系:").append(attrInfoMap.get("standSystem")).append(" "); + if (StringUtils.isBlank(String.valueOf(attrInfoMap.get("BDTBH")))){ + contentBuilder.append("被代替标准编号: ").append(attrInfoMap.get("BDTBHName")).append(" "); + }else { + contentBuilder.append("被代替标准编号: ").append(attrInfoMap.get("BDTBZBHName")).append(" "); + } + } + + contentBuilder.append("实施日期(标准文本):").append(attrInfoMap.get("SSRQName")).append(" "); + contentBuilder.append("新车型实施日期(标准文本):").append(attrInfoMap.get("XCXSSRQName")).append(" "); + contentBuilder.append("在产车实施日期(标准文本):").append(attrInfoMap.get("ZCCSSRQName")).append(" "); + + if (isForeign) { + contentBuilder.append("体系类别:").append(attrInfoMap.get("TXLBName")).append(" "); + }else { + contentBuilder.append("归口管理部门:").append(attrInfoMap.get("GKDWName")).append(" "); +// contentBuilder.append("起草单位:").append(attrInfoMap.get("FBJGName")).append(" "); + contentBuilder.append("起草单位:").append(attrInfoMap.get("QCDW")).append(" "); +// contentBuilder.append("我司署名人:").append(attrInfoMap.get("WSSMRName")).append(" "); + contentBuilder.append("我司署名人:").append(attrInfoMap.get("WSSMR")).append(" "); + contentBuilder.append("我司参与深度:").append(attrInfoMap.get("CYSDName")).append(" "); + contentBuilder.append("我司参与制标排名:").append(attrInfoMap.get("CYZBPMName")).append(" "); + } + contentBuilder.append("适用车型:").append(attrInfoMap.get("CLLXName")).append(" "); + contentBuilder.append("能源类型:").append(attrInfoMap.get("NYLXName")).append(" "); + contentBuilder.append("适用产品线:").append(attrInfoMap.get("SYCPXName")).append(" "); + contentBuilder.append("适用认证:").append(attrInfoMap.get("SYRZName")).append(" "); +// contentBuilder.append("责任部门:").append(attrInfoMap.get("ZRBMName")).append(" "); + contentBuilder.append("责任部门:").append(attrInfoMap.get("ZRBM")).append(" "); +// contentBuilder.append("责任工程师:").append(attrInfoMap.get("ZRGCSName")).append(" "); + contentBuilder.append("责任工程师:").append(attrInfoMap.get("ZRGCS")).append(" "); + contentBuilder.append("关联模块--乘用车VPPS编码:").append(attrInfoMap.get("CYCVPPSBMName")).append(" "); + contentBuilder.append("关联模块--乘用车vpps中文名称:").append(attrInfoMap.get("CYCVPPSCNName")).append(" "); + contentBuilder.append("关联模块--卡车VPPS编码:").append(attrInfoMap.get("KCCVPPSBMName")).append(" "); + contentBuilder.append("关联模块--卡车vpps中文名称:").append(attrInfoMap.get("KCCVPPSCNName")).append(" "); +// contentBuilder.append("模块结构单元变型号:").append(attrInfoMap.get("DYBXHName")).append(" "); +// contentBuilder.append("模块结构单元名称:").append(attrInfoMap.get("DYMCName")).append(" "); + + contentBuilder.append("代替标准号:").append(attrInfoMap.get("DTBJHName")).append(" "); + contentBuilder.append("引用标准:").append(attrInfoMap.get("YYBJName")).append(" "); + contentBuilder.append("被引用标准:").append(attrInfoMap.get("BYYBJName")).append(" "); + if (isForeign) { + contentBuilder.append("体系类别:").append(attrInfoMap.get("TXLBName")).append(" "); + }else { + contentBuilder.append("采标编号:").append(attrInfoMap.get("CBBHName")).append(" "); + contentBuilder.append("采标程度:").append(attrInfoMap.get("CBCDName")).append(" "); + contentBuilder.append("部分代替标准号:").append(attrInfoMap.get("BFDTBZName")).append(" "); + contentBuilder.append("被部分代替标准号:").append(attrInfoMap.get("BBFDTBZName")).append(" "); + } + + if (attrInfoMap.containsKey("content")){ + if (null !=attrInfoMap.get("content") && StringUtils.isNotBlank(String.valueOf(attrInfoMap.get("content")))){ + String con = String.valueOf(attrInfoMap.get("content")); + con = con.replace(",",""); + if (StringUtils.isBlank(con)){ + attrInfoMap.put("content","--"); + } + } + } + + contentBuilder.append("标准文本: ").append(attrInfoMap.get("content")).append(" "); + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.put("textContent",textContent.toString()); + }catch (Exception e){ + logger.info("err:" + errFilter(e.getMessage())); + } + } else if("laws".equals(attrInfoMap.get("type"))){ + // 政策全文 + for (String key : attrInfoMap.keySet()) { + if (null == attrInfoMap.get(key) || "".equals(attrInfoMap.get(key))){ + attrInfoMap.put(key, "null"); + } + } + // 逻辑字段 + if(StringUtils.isNotBlank(attrInfoMap.getOrDefault("lawsName","").toString())){ + fullTextSearchEO.put("title",attrInfoMap.get("lawsTypeName")+" "+attrInfoMap.getOrDefault("lawsNumber","")+" "+attrInfoMap.getOrDefault("lawsName","")); + }else{ + fullTextSearchEO.put("title",attrInfoMap.get("lawsTypeName")+" "+attrInfoMap.getOrDefault("lawsNumber","")+" "+attrInfoMap.getOrDefault("lawsEnName","")); + } + fullTextSearchEO.put("standTypeOrder","4"); + fullTextSearchEO.put("standSortOrder",esStateOrder(String.valueOf(attrInfoMap.get("lawsTypeName")),dicMap)); + fullTextSearchEO.put("yearOrder", String.valueOf(attrInfoMap.get("lawsYearName"))); + fullTextSearchEO.put("sortTitle", String.valueOf(attrInfoMap.get("lawsTypeName"))); + fullTextSearchEO.put("numberTitle", String.valueOf(attrInfoMap.get("lawsNumber"))); + fullTextSearchEO.put("nameTitle", String.valueOf(attrInfoMap.get("lawsName"))); + fullTextSearchEO.put("nameEnTitle", String.valueOf(attrInfoMap.get("lawsEnName"))); + fullTextSearchEO.put("textStatusFull", attrInfoMap.getOrDefault("lawsTextStateName","")); + + + if (null != attrInfoMap.get("issueTime") && !"".equals(attrInfoMap.get("issueTime")) && !"null".equals(attrInfoMap.get("issueTime"))) { + fullTextSearchEO.put("issue_time", dateFormatToStr(String.valueOf(attrInfoMap.get("issueTime")))); + fullTextSearchEO.put("issue_time_order", dateFormatToStr(String.valueOf(attrInfoMap.get("issueTime"))).replace("-","")); + }else { + fullTextSearchEO.put("issue_time", "--"); + fullTextSearchEO.put("issue_time_order", "--"); + } + + // 文本内容字段 + try { + StringBuilder contentBuilder = new StringBuilder(); + contentBuilder.append("政策分类: ").append(attrInfoMap.get("lawsTypeName")).append(" "); + contentBuilder.append("政策编号: ").append(attrInfoMap.get("lawsNumber")).append(" "); + contentBuilder.append("中文名称: ").append(attrInfoMap.get("lawsName")).append(" "); + contentBuilder.append("英文名称: ").append(attrInfoMap.get("lawsEnName")).append(" "); + contentBuilder.append("政策文号: ").append(attrInfoMap.get("lawsNo")).append(" "); +// contentBuilder.append("发布日期:"+attrInfoMap.get("issueTime")+" "); + contentBuilder.append("地区: ").append(attrInfoMap.get("country")).append(" "); + contentBuilder.append("发文日期: ").append(attrInfoMap.get("issueTime")).append(" "); + contentBuilder.append("发文单位: ").append(attrInfoMap.get("issueCompany")).append(" "); + contentBuilder.append("征集意见周期-起始时间: ").append(attrInfoMap.get("commentCycleStart")).append(" "); + contentBuilder.append("征集意见周期-结束时间: ").append(attrInfoMap.get("commentCycleEnd")).append(" "); + contentBuilder.append("文本状态: ").append(attrInfoMap.get("lawsTextStateName")).append(" "); + contentBuilder.append("适用区域: ").append(attrInfoMap.get("lawsSyqyName")).append(" "); + contentBuilder.append("适用车型: ").append(attrInfoMap.get("lawsSycxName")).append(" "); + contentBuilder.append("是否纳入认证清单: ").append(attrInfoMap.get("isRelateAccessName")).append(" "); + contentBuilder.append("年度: ").append(attrInfoMap.get("lawsYearName")).append(" "); + contentBuilder.append("福田转发通知文号: ").append(attrInfoMap.get("lawsNotisyncNum")).append(" "); + contentBuilder.append("信息简报: ").append(attrInfoMap.get("lawsBulletin")).append(" "); + contentBuilder.append("标签: ").append(attrInfoMap.get("lawsLabel")).append(" "); + contentBuilder.append("备注: ").append(attrInfoMap.get("lawsRemark")).append(" "); + contentBuilder.append("实施日期(文本): ").append(attrInfoMap.get("SSRQLAWSName")).append(" "); + contentBuilder.append("新车型实施日期(文本): ").append(attrInfoMap.get("XCXSSRQLAWSName")).append(" "); + contentBuilder.append("在产车实施日期(文本): ").append(attrInfoMap.get("ZCXSSRQLAWSName")).append(" "); + contentBuilder.append("发布机构: ").append(attrInfoMap.get("FBJGLAWSName")).append(" "); + contentBuilder.append("我司参与深度: ").append(attrInfoMap.get("CYSDLAWSName")).append(" "); + contentBuilder.append("投稿人: ").append(attrInfoMap.get("TGRLAWSName")).append(" "); + contentBuilder.append("投稿单位: ").append(attrInfoMap.get("TGRLAWSName")).append(" "); + contentBuilder.append("能源类型: ").append(attrInfoMap.get("NYLXLAWSName")).append(" "); + contentBuilder.append("适用认证: ").append(attrInfoMap.get("YYRZLAWSName")).append(" "); + contentBuilder.append("责任部门: ").append(attrInfoMap.get("ZRBMLAWSName")).append(" "); + contentBuilder.append("责任工程师: ").append(attrInfoMap.get("ZRGCSLAWSName")).append(" "); + contentBuilder.append("代替文件号: ").append(attrInfoMap.get("DTWJHLAWSName")).append(" "); + contentBuilder.append("被代替文件号: ").append(attrInfoMap.get("BDTWJHLAWSName")).append(" "); + contentBuilder.append("引用标准&政策: ").append(attrInfoMap.get("YYBZZCLAWSName")).append(" "); +// contentBuilder.append("相关资料:"+attrInfoMap.get("")+" "); + if (attrInfoMap.containsKey("content")){ + if (null !=attrInfoMap.get("content") && StringUtils.isNotBlank(String.valueOf(attrInfoMap.get("content")))){ + String con = String.valueOf(attrInfoMap.get("content")); + con = con.replace(",",""); + if (StringUtils.isBlank(con)){ + attrInfoMap.put("content",""); + } + } + } + contentBuilder.append("标准文本: ").append(attrInfoMap.get("content")).append(" "); + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.put("textContent",textContent.toString()); + }catch (Exception e){ + logger.info("err:" + errFilter(e.getMessage())); + } + }else if ("bussstand".equals(attrInfoMap.get("type"))){ + + for (String key : attrInfoMap.keySet()) { + if (null == attrInfoMap.get(key) || "".equals(attrInfoMap.get(key))){ + attrInfoMap.put(key, "null"); + } + } + if(StringUtils.isNotBlank(attrInfoMap.getOrDefault("stand_name","").toString())){ + fullTextSearchEO.put("title",attrInfoMap.get("stand_code")+" "+attrInfoMap.getOrDefault("stand_name","")); + }else{ + fullTextSearchEO.put("title",attrInfoMap.get("stand_code")+" "+attrInfoMap.getOrDefault("stand_en_name","")); + } + // 逻辑字段 + fullTextSearchEO.put("standTypeOrder","3"); + fullTextSearchEO.put("standSortOrder",esStateOrder(String.valueOf(attrInfoMap.get("standSort")),dicMap)); + fullTextSearchEO.put("yearOrder", String.valueOf(attrInfoMap.get("standYear"))); + fullTextSearchEO.put("sortTitle", String.valueOf(attrInfoMap.get("standSort"))); + fullTextSearchEO.put("numberTitle", String.valueOf(attrInfoMap.get("standNumber"))); + fullTextSearchEO.put("nameTitle", String.valueOf(attrInfoMap.get("stand_name"))); + fullTextSearchEO.put("nameEnTitle", String.valueOf(attrInfoMap.get("stand_en_name"))); + fullTextSearchEO.put("textStatusFull", attrInfoMap.getOrDefault("textStatusBussName","")); + + if (null != attrInfoMap.get("issueTime") && !"".equals(attrInfoMap.get("issueTime")) && !"null".equals(attrInfoMap.get("issueTime"))) { + fullTextSearchEO.put("issue_time", dateFormatToStr(String.valueOf(attrInfoMap.get("issueTime")))); + fullTextSearchEO.put("issue_time_order", dateFormatToStr(String.valueOf(attrInfoMap.get("issueTime"))).replace("-","")); + }else { + fullTextSearchEO.put("issue_time", "--"); + fullTextSearchEO.put("issue_time_order", "--"); + } + // 文本内容字段 + try { + StringBuilder contentBuilder = new StringBuilder(); + contentBuilder.append("企标类别:").append(attrInfoMap.get("standSort")).append(" "); + contentBuilder.append("标准年份:").append(attrInfoMap.get("standYear")).append(" "); + contentBuilder.append("企标名称:").append(attrInfoMap.get("stand_name")).append(" "); + contentBuilder.append("企标英文名称:").append(attrInfoMap.get("stand_en_name")).append(" "); + contentBuilder.append("文本状态:").append(attrInfoMap.get("textStatusBussName")).append(" "); + contentBuilder.append("企标实施日期:").append(attrInfoMap.get("putTime")).append(" "); + contentBuilder.append("企标发布日期:").append(attrInfoMap.get("issueTime")).append(" "); + contentBuilder.append("废止日期:").append(attrInfoMap.get("FZRQBUSSName")).append(" "); + contentBuilder.append("复审日期:").append(attrInfoMap.get("FSRQBUSSName")).append(" "); +// contentBuilder.append("起草部门:").append(attrInfoMap.get("QCDWName")).append(" "); + contentBuilder.append("起草部门:").append(attrInfoMap.get("QCDW")).append(" "); +// contentBuilder.append("起草人:").append(attrInfoMap.get("QCRBUSSName")).append(" "); + contentBuilder.append("起草人:").append(attrInfoMap.get("QCRBUSS")).append(" "); + contentBuilder.append("文件上传人员:").append(attrInfoMap.get("WJSCRYBUSSName")).append(" "); + contentBuilder.append("适用车型:").append(attrInfoMap.get("SYCXCLASSName")).append(" "); + contentBuilder.append("能源类型:").append(attrInfoMap.get("NYLXCLASSName")).append(" "); + contentBuilder.append("适用产品线:").append(attrInfoMap.get("SYCPXCLASSName")).append(" "); + contentBuilder.append("体系类别:").append(attrInfoMap.get("TXLBBUSSName")).append(" "); + contentBuilder.append("关联模块VPPS编码:").append(attrInfoMap.get("VPPSBMBUSSName")).append(" "); + contentBuilder.append("关联模块中文名称:").append(attrInfoMap.get("VPPSCNBUSSName")).append(" "); + contentBuilder.append("代替企标编号:").append(attrInfoMap.get("DTQBBHBUSSName")).append(" "); + contentBuilder.append("被代替企标编号:").append(attrInfoMap.get("BDTQBBHBUSSName")).append(" "); + + attrInfoMap.put("CLLXName",attrInfoMap.get("SYCXCLASSName")); + attrInfoMap.put("NYLXName",attrInfoMap.get("NYLXCLASSName")); + attrInfoMap.put("CLLX",attrInfoMap.get("SYCXCLASS")); + attrInfoMap.put("NYLX",attrInfoMap.get("NYLXCLASS")); + + if (attrInfoMap.containsKey("content")){ + if (null !=attrInfoMap.get("content") && StringUtils.isNotBlank(String.valueOf(attrInfoMap.get("content")))){ + String con = String.valueOf(attrInfoMap.get("content")); + con = con.replace(",",""); + if (StringUtils.isBlank(con)){ + attrInfoMap.put("content","--"); + } + } + } + contentBuilder.append("标准文本: ").append(attrInfoMap.get("content")).append(" "); +// contentBuilder.append("相关计划:"+String.valueOf(attrInfoMap.get(""))+" "); + + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.put("textContent",textContent.toString()); + }catch (Exception e){ + logger.info("err:" + errFilter(e.getMessage())); + } + } + String title = String.valueOf(fullTextSearchEO.getOrDefault("title","")); + fullTextSearchEO.put("titleBig",title.toUpperCase()); + fullTextSearchEO.put("CLLXName",attrInfoMap.get("CLLXName")); + fullTextSearchEO.put("NYLXName",attrInfoMap.get("NYLXName")); + fullTextSearchEO.put("CLLX",attrInfoMap.get("CLLX")); + fullTextSearchEO.put("NYLX",attrInfoMap.get("NYLX")); + return fullTextSearchEO; + } + + private String errFilter(String str){ + if (str.contains("Cause")){ + str = str.split("Cause")[0].replaceAll("\\r\\n###",""); + } + return str; + } + + private String esStateOrder(String data, Map dicMap){ + if(StringUtils.isNotBlank(data)){ + data = data.replace(" ",""); + if(dicMap.get(data.trim().toUpperCase()) != null){ + return String.valueOf(dicMap.get(data.trim().toUpperCase())); + }else { + return "99999"; + } + }else { + return "99999"; + } + } + + private String dateFormatToStr(String dateStr){ + if(dateStr == null || dateStr.equals("")){ + return ""; + } + String dateToStr = ""; + try { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + dateToStr = dateFormat.format(dateFormat.parse(dateStr.trim().substring(0,10))); + }catch (Exception e){ + e.getMessage(); + } + return dateToStr; + } + + FullTextSearchEO getFullTextSearch(StandLawsEO standLawsEO){ + FullTextSearchEO fullTextSearchEO = new FullTextSearchEO(); + fullTextSearchEO.setId(standLawsEO.getId()); + fullTextSearchEO.setIndexType(standLawsEO.getType()); + if(standLawsEO.getType().equals("stand")){ + // 标准全文 + fullTextSearchEO.setTitle(standLawsEO.getNumbershow()+" "+standLawsEO.getNameshow()); + fullTextSearchEO.setIssue_time(standLawsEO.getIssue_time()); + fullTextSearchEO.setIssueTimeStr(standLawsEO.getIssueTimeStr()); + fullTextSearchEO.setPut_time(standLawsEO.getPut_time()); + fullTextSearchEO.setPutTimeStr(standLawsEO.getPutTimeStr()); + StringBuilder contentBuilder = new StringBuilder(); + contentBuilder.append("区域:东亚 "); + contentBuilder.append("国家/地区:"+standLawsEO.getCountryShow()+" "); + contentBuilder.append("标准性质:"+standLawsEO.getNatureShow()+" "); + contentBuilder.append("标准状态:"+standLawsEO.getStatecodeShow()+" "); + contentBuilder.append("内容摘要:"+standLawsEO.getSynopsis()+" "); + contentBuilder.append("标准文本:"+standLawsEO.getContent()+" "); + contentBuilder.append("标准类别:"+standLawsEO.getStandSortShow()+" "); + contentBuilder.append("标准号:"+standLawsEO.getNumbershow()+" "); + contentBuilder.append("标准名称:"+standLawsEO.getNameshow()+" "); + contentBuilder.append("标准英文名称:"+standLawsEO.getStandEnName()+" "); + contentBuilder.append("发布日期:"+DateUtils.dateToString(standLawsEO.getIssue_time(),"yyyy-MM-dd")+" "); + contentBuilder.append("实施日期:"+DateUtils.dateToString(standLawsEO.getPut_time(),"yyyy-MM-dd")+" "); + //时间处理 + contentBuilder.append("新定型车实施日期:"+ DateUtils.dateToString(standLawsEO.getNewcarPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("新生产车实施日期:"+DateUtils.dateToString(standLawsEO.getNewproductPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("注册登记车实施日期:"+DateUtils.dateToString(standLawsEO.getRegisterPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("在产车实施日期:"+DateUtils.dateToString(standLawsEO.getRegisterPutTime(),"yyyy-MM-dd")+" "); + //时间处理 + contentBuilder.append("适用认证:"+standLawsEO.getApplyAuthShow()+" "); + contentBuilder.append("发布部门:"+standLawsEO.getIssueUnit()+" "); + contentBuilder.append("代替标准号:"+standLawsEO.getReplace_stand_num()+" "); + contentBuilder.append("被代替标准号:"+standLawsEO.getReplaced_stand_num()+" "); + contentBuilder.append("采用国际标准号:"+standLawsEO.getInterStandNum()+" "); + contentBuilder.append("采标程度:"+standLawsEO.getAdoptExtentShow()+" "); + contentBuilder.append("适用车型:"+standLawsEO.getApplyArcticShow()+" "); + contentBuilder.append("能源种类:"+standLawsEO.getEnergyKindShow()+" "); + contentBuilder.append("起草单位:"+standLawsEO.getDrafting_unit()+" "); + contentBuilder.append("起草人:"+standLawsEO.getDraft_user()+" "); + contentBuilder.append("关键词:"+standLawsEO.getStandTag()+" "); + contentBuilder.append("备注:"+standLawsEO.getRemarks()+" "); + contentBuilder.append("责任部门:"+standLawsEO.getResponsibleUnitShow()+" "); + contentBuilder.append("所属专业领域:"+standLawsEO.getCategoryShow()+" "); + // contentBuilder.append("总成分类:"+" "); + + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.setTextContent(textContent.toString()); + } else if(standLawsEO.getType().equals("bussstand")){ + //企业标准全文 + fullTextSearchEO.setTitle(standLawsEO.getNumbershow()+" "+standLawsEO.getNameshow()); + fullTextSearchEO.setIssue_time(standLawsEO.getIssue_time()); + fullTextSearchEO.setIssueTimeStr(standLawsEO.getIssueTimeStr()); + fullTextSearchEO.setPut_time(standLawsEO.getPut_time()); + fullTextSearchEO.setPutTimeStr(standLawsEO.getPutTimeStr()); + + StringBuilder contentBuilder = new StringBuilder(); + // contentBuilder.append("区域:东亚 "); + contentBuilder.append("国家:"+standLawsEO.getCountryShow()+" "); + contentBuilder.append("标准类别:"+standLawsEO.getStandSortShow()+" "); + contentBuilder.append("标准编号:"+standLawsEO.getNumbershow()+" "); + contentBuilder.append("标准名称:"+standLawsEO.getNameshow()+" "); + contentBuilder.append("标准英文名称:"+standLawsEO.getStandEnName()+" "); + contentBuilder.append("标准状态:"+standLawsEO.getStatecodeShow()+" "); + contentBuilder.append("标准性质:"+standLawsEO.getNatureShow()+" "); + // contentBuilder.append("规范性引用标准:"+standLawsEO.getNatureShow()+" "); + contentBuilder.append("责任部门:"+standLawsEO.getResponsibleUnitShow()+" "); + //contentBuilder.append("主要编制者:"+standLawsEO.getResponsibleUnitShow()+" "); + contentBuilder.append("发布日期:"+standLawsEO.getIssueTimeStr()+" "); + contentBuilder.append("实施日期:"+standLawsEO.getPutTimeStr()+" "); + contentBuilder.append("实施年份:"+standLawsEO.getPutYear()+" "); + contentBuilder.append("首发日期:"+standLawsEO.getFirstPutTime()+" "); + contentBuilder.append("标准文本:"+standLawsEO.getContent()+" "); + contentBuilder.append("适用认证:"+standLawsEO.getApplyAuthShow()+" "); + contentBuilder.append("适用车型:"+standLawsEO.getApplyArcticShow()+" "); + contentBuilder.append("能源种类:"+standLawsEO.getEnergyKindShow()+" "); + contentBuilder.append("代替标准号:"+standLawsEO.getReplace_stand_num()+" "); + contentBuilder.append("被代替标准号:"+standLawsEO.getReplaced_stand_num()+" "); + contentBuilder.append("关键词:"+standLawsEO.getStandTag()+" "); + contentBuilder.append("内容摘要:"+standLawsEO.getSynopsis()+" "); + contentBuilder.append("备注:"+standLawsEO.getRemarks()+" "); + + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.setTextContent(textContent.toString()); + } else if(standLawsEO.getType().equals("laws")){ + // 政策全文 + fullTextSearchEO.setTitle(standLawsEO.getNumbershow()+" "+standLawsEO.getNameshow()); + fullTextSearchEO.setIssue_time(standLawsEO.getIssue_time()); + fullTextSearchEO.setIssueTimeStr(standLawsEO.getIssueTimeStr()); + fullTextSearchEO.setPut_time(standLawsEO.getPut_time()); + fullTextSearchEO.setPutTimeStr(standLawsEO.getPutTimeStr()); + + StringBuilder contentBuilder = new StringBuilder(); + contentBuilder.append("国家/地区:"+standLawsEO.getCountryShow()+" "); + contentBuilder.append("文件号:"+standLawsEO.getNumbershow()+" "); + contentBuilder.append("文件名称:"+standLawsEO.getNameshow()+" "); + contentBuilder.append("文件英文名称:"+standLawsEO.getStandEnName()+" "); + contentBuilder.append("文件状态:"+standLawsEO.getStatecodeShow()+" "); + contentBuilder.append("文件性质:"+standLawsEO.getNatureShow()+" "); + contentBuilder.append("发布日期:"+DateUtils.dateToString(standLawsEO.getIssue_time(),"yyyy-MM-dd")+" "); + contentBuilder.append("实施日期:"+DateUtils.dateToString(standLawsEO.getPut_time(),"yyyy-MM-dd")+" "); + //时间处理 + contentBuilder.append("新定型车实施日期:"+ DateUtils.dateToString(standLawsEO.getNewcarPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("新生产车实施日期:"+DateUtils.dateToString(standLawsEO.getNewproductPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("注册登记车实施日期:"+DateUtils.dateToString(standLawsEO.getRegisterPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("在产车实施日期:"+DateUtils.dateToString(standLawsEO.getRegisterPutTime(),"yyyy-MM-dd")+" "); + //时间处理 + contentBuilder.append("发布部门:"+standLawsEO.getIssueUnit()+" "); + contentBuilder.append("责任部门:"+standLawsEO.getResponsibleUnitShow()+" "); + contentBuilder.append("文件附件全文:"+standLawsEO.getContent()+" "); + contentBuilder.append("适用车型:"+standLawsEO.getApplyArcticShow()+" "); + contentBuilder.append("适用认证:"+standLawsEO.getApplyAuthShow()+" "); + contentBuilder.append("能源种类:"+standLawsEO.getEnergyKindShow()+" "); + contentBuilder.append("所属专业领域:"+standLawsEO.getCategoryShow()+" "); + contentBuilder.append("代替标准号:"+standLawsEO.getReplace_stand_num()+" "); + contentBuilder.append("被代替标准号:"+standLawsEO.getReplaced_stand_num()+" "); + contentBuilder.append("关键词:"+standLawsEO.getStandTag()+" "); + contentBuilder.append("内容摘要:"+standLawsEO.getSynopsis()+" "); + contentBuilder.append("备注:"+standLawsEO.getRemarks()+" "); + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.setTextContent(textContent.toString()); + } + return fullTextSearchEO; + } + + + /** + * 实现StringBuilder的replaceAll + * + * @param stb + * @param oldStr 被替换的字符串 + * @param newStr 替换oldStr + * @return + */ + public static StringBuilder replaceAll(StringBuilder stb, String oldStr, String newStr) { + if (stb == null || oldStr == null || newStr == null || stb.length() == 0 || oldStr.length() == 0) + return stb; + int index = stb.indexOf(oldStr); + if (index > -1 && !oldStr.equals(newStr)) { + int lastIndex = 0; + while (index > -1) { + stb.replace(index, index + oldStr.length(), newStr); + lastIndex = index + newStr.length(); + index = stb.indexOf(oldStr, lastIndex); + } + } + return stb; + } + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/util/DateUtil.java b/adc-da-search/src/main/java/com/adc/da/search/util/DateUtil.java new file mode 100644 index 00000000..d6a0440d --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/util/DateUtil.java @@ -0,0 +1,124 @@ +package com.adc.da.search.util; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @Description: 判断是否为日期格式 + * @Author: super_liu + * date: 2020/12/31 11:25 + */ +public class DateUtil { + + /** + * 取起始时间到结束时间 所有的时间 + * @param startTime + * @param endTime + * @return + */ + + public static List getAllDate(String startTime, String endTime) { + List list = new ArrayList(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar cal = Calendar.getInstance(); + + try { + cal.setTime(sdf.parse(startTime)); + for (long d = cal.getTimeInMillis(); d <= sdf.parse(endTime).getTime(); d = get_D_Plaus_1(cal)) { + list.add(sdf.format(d)); + } + } catch (ParseException e) { + System.out.println("date change err"); + } + + return list; + } + + public static long get_D_Plaus_1(Calendar c) { + c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1); + return c.getTimeInMillis(); + } + + /*** + * @Description: 判断多个日期是否都符合日期格式 + * @Author: super_liu + * @Date: 2020/12/31 11:31 + * @Param: [str] + * @Return: boolean + */ + public static boolean isValidDate(String str) throws Exception{ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String[] strArr = str.split(","); + for (String dateStr : strArr) { + try { + simpleDateFormat.setLenient(false); + simpleDateFormat.parse(dateStr); + } catch (Exception e){ + return false; + } + } + return true; + } + + /** + * utc 时间格式转换正常格式 2018-08-07T03:41:59Z + * @param utcTime 时间 + * @return + */ + public static String formatStrUTCToDateStr(String utcTime) { + SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.SIMPLIFIED_CHINESE); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + TimeZone utcZone = TimeZone.getTimeZone("UTC"); + sf.setTimeZone(utcZone); + Date date = null; + String dateTime = ""; + try { + date = sf.parse(utcTime); + dateTime = sdf.format(date); + } catch (ParseException e) { + e.printStackTrace(); + } + return dateTime; + } + + /** + * 将日期对象转换为指定的日期字符串 + * + * @param date 传入的日期对象 + * @param format 格式 + * @return 日期字符串 + * @author 赵肖云 + */ + public static String dateToString(Date date, String format) { + String string = ""; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); + if (date != null) { + string = simpleDateFormat.format(date); + } + return string; + } + + /** + * 将日期字符串转换为一个日期对象 + * + * @param datestr 日期字符串 + * @param format 格式 + * @return Date + * @author 赵肖云 + */ + public static Date stingToDate(String datestr, String format) throws ParseException { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); + return simpleDateFormat.parse(datestr); + } + + + public static void main(String[] args) { + String utcTime = "2021-04-15T01:43:54.296Z"; + String time = formatStrUTCToDateStr("2021-04-15T01:43:54.296Z"); + System.out.println("utcTime 转换前:" + utcTime); + System.out.println("utcTime 转换后 time :" + time); + } + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java b/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java new file mode 100644 index 00000000..88578e2a --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java @@ -0,0 +1,32 @@ +package com.adc.da.search.util; + +/** + *Elasticsearch接口实现过程中用到的常量定义 + * @author gaoyan + * date 2018/08/27 + */ +public class ElasticsearchConstant { + //构造方法 + public ElasticsearchConstant() { + // 不做操作 + } + //正确删除后返回结构 + public static final String SUCCESS_DELETED = "DELETED"; + //删除过程中未找到对应数据返回结果 + public static final String HAVE_NOT_FOUND= "NOT_FOUND"; + + //字符串转换为小写 + public static String exChangeLower(String str){ + //把一个字符串中的大写转为小写 + String real = ""; + for(int i=0;i standTypeList = new ArrayList<>(); + private final static List lawsTypeList = new ArrayList<>(); + public final static List standStateList = new ArrayList<>(); + static { + standTypeList.add(SarTypeEnum.STAND.getValue()); + standTypeList.add(SarTypeEnum.INLAND_STAND.getValue()); + standTypeList.add(SarTypeEnum.FOREIGN_STAND.getValue()); + lawsTypeList.add(SarTypeEnum.LAWS_STAND.getValue()); + standStateList.add("DRAFT"); + standStateList.add("ADVICE"); + standStateList.add("RADYSUBMIT"); + standStateList.add("SUBMIT"); + standStateList.add("FJNVYX9Q7J"); + standStateList.add("ZTJJSS"); + standStateList.add("TOVOID"); + standStateList.add("ZTXXYX"); + standStateList.add("5E5Z3CELX6"); + standStateList.add("N5KLTFLNRC"); + } + + // 标准属性字段信息 + public static String queryField = ""; //所有属性表需要查询的字段以逗号分隔 + public static String queryFieldNames = ""; //所有属性表需要查询的字段名以逗号分隔 + public static List queryFieldList = new ArrayList<>(); //所有属性表需要查询的字段 + public static List selectionFieldList = new ArrayList<>(); // 属性表下拉选项类型字段 + public static List fileFieldList = new ArrayList<>(); // 属性表文件类型字段 + public static List clobFieldList = new ArrayList<>(); // 属性表clob类型字段 + public static List timeFieldList = new ArrayList<>(); // 属性表日期类型字段 + public static List multiTimeFieldList = new ArrayList<>(); // 属性表多个日期类型字段 + public static List numFieldList = new ArrayList<>(); // 属性表数字类型字段 + public static List standInlandAttrFieldList = new ArrayList<>(); // 全部国内标准字段属性 + public static List standForeignAttrFieldList = new ArrayList<>(); // 全部海外标准字段属性 + public static Map selectFieldMap = new HashMap<>(); // 下拉属性字段及选项值 + + // 政策属性字段信息 + public static String queryFieldLaws = ""; //所有属性表需要查询的字段以逗号分隔 + public static String queryFieldNamesLaws = ""; //所有属性表需要查询的字段名以逗号分隔 + public static List queryFieldListLaws = new ArrayList<>(); //所有属性表需要查询的字段 + public static List selectionFieldListLaws = new ArrayList<>(); // 属性表下拉选项类型字段 + public static List fileFieldListLaws = new ArrayList<>(); // 属性表文件类型字段 + public static List clobFieldListLaws = new ArrayList<>(); // 属性表clob类型字段 + public static List timeFieldListLaws = new ArrayList<>(); // 属性表日期类型字段 + public static List multiTimeFieldListLaws = new ArrayList<>(); // 属性表多个日期类型字段 + public static List numFieldListLaws = new ArrayList<>(); // 属性表数字类型字段 + public static List lawsInlandAttrFieldList = new ArrayList<>(); // 属性表数字类型字段 + public static List lawsForeignAttrFieldList = new ArrayList<>(); // 全部政策字段属性 + public static List lawsStandAttrFieldList = new ArrayList<>(); // 全部政策字段属性 + public static Map selectFieldMapLaws = new HashMap<>(); // 下拉属性字段及选项值 + + // 企标属性字段信息 + public static String queryFieldBuss = ""; //所有属性表需要查询的字段以逗号分隔 + public static String queryFieldNamesBuss = ""; //所有属性表需要查询的字段名以逗号分隔 + public static List queryFieldListBuss = new ArrayList<>(); //所有属性表需要查询的字段 + public static List selectionFieldListBuss = new ArrayList<>(); // 属性表下拉选项类型字段 + public static List fileFieldListBuss = new ArrayList<>(); // 属性表文件类型字段 + public static List clobFieldListBuss = new ArrayList<>(); // 属性表clob类型字段 + public static List timeFieldListBuss = new ArrayList<>(); // 属性表日期类型字段 + public static List multiTimeFieldListBuss = new ArrayList<>(); // 属性表多个日期类型字段 + public static List numFieldListBuss = new ArrayList<>(); // 属性表数字类型字段 + public static List bussAttrFieldList = new ArrayList<>(); // 全部企标字段属性 + public static Map selectFieldMapBuss = new HashMap<>(); // 下拉属性字段及选项值 + + @Override + public void run(ApplicationArguments args) throws Exception { + logger.info("项目启动时加载--查询标准属性类!"); + // 属性表需要查询的字段 + StringBuilder fieldInfoBuilder = new StringBuilder(); + StringBuilder fieldInfoBuilderLaws = new StringBuilder(); + StringBuilder fieldInfoBuilderBuss = new StringBuilder(); + StringBuilder fieldInfoNameBuilder = new StringBuilder(); + StringBuilder fieldInfoNameBuilderLaws = new StringBuilder(); + StringBuilder fieldInfoNameBuilderBuss = new StringBuilder(); + QueryWrapper qw = new QueryWrapper(); + qw.eq("VALID_FLAG","0"); + qw.orderByAsc("ORDER_NUM"); + List getDetailsList = sarStandAttrDetailsEOService.list(qw); + if (getDetailsList != null && !getDetailsList.isEmpty()) { + logger.info("项目启动时加载--查询标准属性类--查询到" + getDetailsList.size() + "条属性字段数据!"); + for (SarStandAttrDetails detailsEO : getDetailsList) { + String sarType = detailsEO.getSarType(); + String attrType = detailsEO.getAttrType(); + if (standTypeList.contains(sarType)) { + if (!SarTypeEnum.FOREIGN_STAND.getValue().equals(sarType)) { + standInlandAttrFieldList.add(detailsEO); + } + if (!SarTypeEnum.INLAND_STAND.getValue().equals(sarType)) { + standForeignAttrFieldList.add(detailsEO); + } + fieldInfoBuilder.append(detailsEO.getAttrField() + ","); + fieldInfoNameBuilder.append(detailsEO.getAttrName() + ","); + queryFieldList.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldList.add(detailsEO.getAttrField()); + selectFieldMap.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldList.add(detailsEO.getAttrField()); + } + } else if (lawsTypeList.contains(sarType)) { + if (SarTypeEnum.FOREIGN_LAWS.getValue().equals(sarType)) { + lawsForeignAttrFieldList.add(detailsEO); + } + if (SarTypeEnum.LAWS_STAND.getValue().equals(sarType)) { + lawsStandAttrFieldList.add(detailsEO); + } + + if (SarTypeEnum.INLAND_LAWS.getValue().equals(sarType)) { + lawsInlandAttrFieldList.add(detailsEO); + } + fieldInfoBuilderLaws.append(detailsEO.getAttrField() + ","); + fieldInfoNameBuilderLaws.append(detailsEO.getAttrName() + ","); + queryFieldListLaws.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldListLaws.add(detailsEO.getAttrField()); + selectFieldMapLaws.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldListLaws.add(detailsEO.getAttrField()); + } + } else if (SarTypeEnum.BUSS.getValue().equals(sarType)) { + bussAttrFieldList.add(detailsEO); + fieldInfoBuilderBuss.append(detailsEO.getAttrField() + ","); + fieldInfoNameBuilderBuss.append(detailsEO.getAttrName() + ","); + queryFieldListBuss.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldListBuss.add(detailsEO.getAttrField()); + selectFieldMapBuss.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldListBuss.add(detailsEO.getAttrField()); + } + } + } + queryField = fieldInfoBuilder.toString(); + queryFieldLaws = fieldInfoBuilderLaws.toString(); + queryFieldBuss = fieldInfoBuilderBuss.toString(); + if (StringUtils.isNotBlank(queryField)) { + queryField = queryField.substring(0,queryField.length()-1); + } + if (StringUtils.isNotBlank(queryFieldLaws)) { + queryFieldLaws = queryFieldLaws.substring(0,queryFieldLaws.length()-1); + } + if (StringUtils.isNotBlank(queryFieldBuss)) { + queryFieldBuss = queryFieldBuss.substring(0,queryFieldBuss.length()-1); + } + logger.info("项目启动时加载--查询标准属性类--查询到属性字段为:" + queryField); + logger.info("项目启动时加载--查询政策属性类--查询到属性字段为:" + queryFieldLaws); + logger.info("项目启动时加载--查询企标属性类--查询到属性字段为:" + queryFieldBuss); + queryFieldNames = fieldInfoNameBuilder.toString(); + queryFieldNamesLaws = fieldInfoNameBuilderLaws.toString(); + queryFieldNamesBuss = fieldInfoNameBuilderBuss.toString(); + if (StringUtils.isNotBlank(queryFieldNames)) { + queryFieldNames = queryFieldNames.substring(0,queryFieldNames.length()-1); + } + if (StringUtils.isNotBlank(queryFieldNamesLaws)) { + queryFieldNamesLaws = queryFieldNamesLaws.substring(0,queryFieldNamesLaws.length()-1); + } + if (StringUtils.isNotBlank(queryFieldNamesBuss)) { + queryFieldNamesBuss = queryFieldNamesBuss.substring(0,queryFieldNamesBuss.length()-1); + } + logger.info("项目启动时加载--查询标准属性类--查询到属性字段名称为:" + queryFieldNames); + logger.info("项目启动时加载--查询政策属性类--查询到属性字段名称为:" + queryFieldNamesLaws); + logger.info("项目启动时加载--查询企标属性类--查询到属性字段名称为:" + queryFieldNamesBuss); + } else { + logger.error("项目启动时加载--查询标准属性类--未查询到属性字段数据!"); + } + } + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/util/SarTypeEnum.java b/adc-da-search/src/main/java/com/adc/da/search/util/SarTypeEnum.java new file mode 100644 index 00000000..6ffdf0e8 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/util/SarTypeEnum.java @@ -0,0 +1,44 @@ +package com.adc.da.search.util; + +/** + * 标准法规分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum SarTypeEnum { + + INLAND_STAND("INLAND_STAND","国内标准法规"),INLAND_LAWS("INLAND_LAWS","国内政策"), + FOREIGN_STAND("FOREIGN_STAND","国外标准法规"),FOREIGN_LAWS("FOREIGN_LAWS","国外政策"), + STAND("STAND","国内外标准法规"), + LAWS("LAWS","国内外政策"), + LAWS_STAND("LAWS_STAND","国内外政策"), + BUSINESS("BUSINESS","企业标准"), + BUSS("BUSS","企业标准"), + SPLIT("SPLIT","标准拆分"), + ACCESS("ACCESS","标准法规清单"), + // 增加清单临时分类代码 后续通过同步按钮同步时切换类型 + INLAND_STAND_ACCESS("INLAND_STAND_ACCESS","国内标准法规清单"), + FOREIGN_STAND_ACCESS("FOREIGN_STAND_ACCESS","国外标准法规清单"), + FOREIGN_LAWS_ACCESS("FOREIGN_LAWS_ACCESS","国内外政策清单"), + BUSS_ACCESS("BUSS","企业标准清单"), + PRODUCT("PRODUCT","车型/项目库"), + RECORDS("RECORDS","企标备案库"); + + private String value; + private String lable; + + private SarTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/util/StandAttrTypeEnum.java b/adc-da-search/src/main/java/com/adc/da/search/util/StandAttrTypeEnum.java new file mode 100644 index 00000000..0d9d6496 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/util/StandAttrTypeEnum.java @@ -0,0 +1,28 @@ +package com.adc.da.search.util; + +/** + * @Description: 属性类型枚举类 + * @Author: super_liu + * date: 2020/8/17 17:02 + */ +public enum StandAttrTypeEnum { + + INPUT_STR("INPUT_STR","输入框(字符串)"),INPUT_NUM("INPUT_NUM","输入框(数字)"), + SELECT_OPTION("SEL_OPTION","单选下拉框"),SEL_OPTS("SEL_OPTS","多选下拉框"),DATE_PICKER("DATE_PICKER","日期选择"), + DATE_PIC_OPTS("DATE_PIC_OPTS","多日期选择"),FILE("FILE","文件"), + TEXTAREA("TEXTAREA","文本框") ; + + private String value; + private String lable; + + private StandAttrTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-slrs/pom.xml b/adc-da-slrs/pom.xml new file mode 100644 index 00000000..889ae6ed --- /dev/null +++ b/adc-da-slrs/pom.xml @@ -0,0 +1,142 @@ + + + + foton-slrs-system-rest + com.adc + 3.0.0 + + 4.0.0 + + adc-da-slrs + + + + org.springframework + spring-context-support + + + com.adc + adc-da-base + 3.0.0 + compile + + + com.adc + adc-da-sys + 3.0.0 + compile + + + net.sf.json-lib + json-lib + 2.2.3 + jdk15 + + + com.adc + adc-da-jwtLogin + 3.1.0 + compile + + + com.adc + adc-da-search + 1.0.0 + compile + + + + + + org.apache.poi + poi + 4.1.2 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi-ooxml-schemas + 4.1.2 + + + xerces + xercesImpl + + + + + org.apache.poi + poi-scratchpad + 4.1.2 + + + + org.apache.pdfbox + pdfbox + 1.8.8 + + + + com.itextpdf + itextpdf + 5.5.13 + + + + com.zip4j + zip4j + system + 1.3.1 + ${basedir}/src/main/lib/zip4j-1.3.1.jar + + + + com.janeluo + ikanalyzer + 2012_u6 + + + org.apache.lucene + lucene-core + + + org.apache.lucene + lucene-queryparser + + + org.apache.lucene + lucene-analyzers-common + + + + + + org.jsoup + jsoup + 1.11.3 + + + + com.hankcs + hanlp + portable-1.7.5 + + + com.google.guava + guava + 19.0 + compile + + + com.google.code.gson + gson + + + + diff --git a/adc-da-slrs/src/main/java/com/adc/da/Log/BusinessType.java b/adc-da-slrs/src/main/java/com/adc/da/Log/BusinessType.java new file mode 100644 index 00000000..6a7716ef --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/Log/BusinessType.java @@ -0,0 +1,32 @@ +package com.adc.da.Log; + +public enum BusinessType { + /** + * 其他 + */ + 其他, + /** + * 新增 + */ + 新增, + /** + * 修改 + */ + 修改, + /** + * 删除 + */ + 删除, + /** + * 查询 + */ + 查询, + /** + * 下载 + */ + 下载, + + 带水印下载, + + 预览, +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/Log/EpcLog.java b/adc-da-slrs/src/main/java/com/adc/da/Log/EpcLog.java new file mode 100644 index 00000000..0ac527eb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/Log/EpcLog.java @@ -0,0 +1,30 @@ +package com.adc.da.Log; + +import org.apache.poi.ss.usermodel.DataValidationConstraint; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +@Target({ElementType.PARAMETER, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface EpcLog { + + /** + * 模块 + */ + public String title() default ""; + + /** + * 功能 + */ + public BusinessType businessType() default BusinessType.其他; + + //描述接口 可以理解为 接口在哪个模块下简单描述 + String description(); + //某些个接口需要特殊的返回语法 所以需要在这注解写死的部分 + String speclaiValue() default ""; + //可以给接口一个特殊标志位能够 对数据进行特殊处理 + String speclaiFlag() default ""; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/Log/logs.java b/adc-da-slrs/src/main/java/com/adc/da/Log/logs.java new file mode 100644 index 00000000..76c32163 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/Log/logs.java @@ -0,0 +1,214 @@ +package com.adc.da.Log; + +import cn.hutool.core.date.DateTime; +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.adc.da.slrs.sysLog.service.ISysLogService; +import com.adc.da.util.LoginUserUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.google.gson.Gson; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Method; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +@Aspect +@Component +@Slf4j +public class logs { +//日志 注解方式存储日志 + + long beginTime; + + + @Autowired + ISysLogService sysLogService; + + @Autowired(required = false) + private HttpServletRequest request; + + // 配置织入点 + @Pointcut("@annotation(EpcLog)") + public void logPointCut() { + log.info("=================已进入监听=========="); + beginTime = System.currentTimeMillis(); + } + + + /** + * 后置通知(在方法执行之后并返回数据) 用于拦截Controller层无异常的操作 + * @param joinPoint 切点 + */ + @AfterReturning(value = "logPointCut()",returning="returnValue") + public void after(JoinPoint joinPoint, Object returnValue){ + Executor executor = Executors.newCachedThreadPool(); + try { + String description = getControllerMethodInfo(joinPoint).get("description").toString(); + String speclaiValue = getControllerMethodInfo(joinPoint).get("speclaiValue").toString(); + String speclaiFlag = getControllerMethodInfo(joinPoint).get("speclaiFlag").toString(); + Map logParams = request.getParameterMap(); + System.out.println(returnValue); + SysLog log = new SysLog(); +// ##请求用户 + log.setUserId(LoginUserUtil.getUserId()); +// ##日志标题 + log.setOperLocation(description); +// ##日志类型 + log.setOper(String.valueOf(getControllerMethodInfo(joinPoint).get("type"))); +// ##请求参数 + StringBuilder stringBuilder=new StringBuilder(); + for (String s:logParams.keySet()) { + if (!s.equals("_t")) { + stringBuilder.append("," + s + "=" + logParams.get(s)[0]); + } + } + log.setJson(stringBuilder.substring(1,stringBuilder.length())); + + //特殊处理 + if ("1".equals(speclaiFlag)){ + //这个是国内或者海外的查询接口 + String gson=new Gson().toJson(returnValue); + JSONObject jsonObject= JSON.parseObject(gson); + JSONObject object= JSON.parseObject(jsonObject.getString("data")); + if (null!=object.getString("standName") && !"".equals(object.getString("standName"))) { + log.setSpecial(object.getString("standSort") + " " + object.getString("standNumber") + "-" + object.getString("standYear") + " " + object.getString("standName") + " " + speclaiValue); + }else { + log.setSpecial(object.getString("standSort") + " " + object.getString("standNumber") + "-" + object.getString("standYear") + " " + object.getString("standEnName") + " " + speclaiValue); + } + }else if ("Invaliddownload1".equals(speclaiFlag) || "Invaliddownload2".equals(speclaiFlag) || "2".equals(speclaiFlag)){ + //国内预览 下载 带水印下载 + StringBuilder stringBuilder1=new StringBuilder(); + for (String s:logParams.keySet()){ + if (s.equals("standNumber")) { + stringBuilder1.append(logParams.get(s)[0]); + } else if (s.equals("standName")) { + stringBuilder1.append(" "+logParams.get(s)[0]); + } + } + stringBuilder1.append(" "+speclaiValue); + log.setSpecial(stringBuilder1.toString()); + }else if ("Foreigndownload1".equals(speclaiFlag) || "Foreigndownload2".equals(speclaiFlag) || "3".equals(speclaiFlag)){ + //海外预览 下载 带水印下载 + StringBuilder stringBuilder1=new StringBuilder(); + for (String s:logParams.keySet()){ + if (s.equals("standNumber")) { + stringBuilder1.append(logParams.get(s)[0]); + } else if (s.equals("standName")) { + stringBuilder1.append(" "+logParams.get(s)[0]); + } + } + stringBuilder1.append(" "+speclaiValue); + log.setSpecial(stringBuilder1.toString()); + }else if ("5".equals(speclaiFlag)){ + //企标详情 + String gson=new Gson().toJson(returnValue); + JSONObject jsonObject= JSON.parseObject(gson); + JSONObject object= JSON.parseObject(jsonObject.getString("data")); + log.setSpecial(object.getString("standCode")+" "+object.getString("standName")+" "+speclaiValue); + }else if ("Buss".equals(speclaiFlag)){ + //企标下载 预览 带水印下载 + StringBuilder stringBuilder1=new StringBuilder(); + for (String s:logParams.keySet()){ + if (s.equals("standCode")) { + stringBuilder1.append(logParams.get(s)[0]); + } else if (s.equals("standName")) { + stringBuilder1.append(" "+logParams.get(s)[0]); + } + } + + log.setSpecial(stringBuilder1+" "+speclaiValue); + } +// ##请求开始时间 + long endTime = System.currentTimeMillis(); +// ##请求耗时 + Long logElapsedTime = endTime - beginTime; + log.setRunTime(logElapsedTime.intValue()); + log.setOperTime(new Date()); +// ##调用线程保存至log表 + executor.execute(new SaveSystemLogThread(log, sysLogService)); + } catch (Exception e) { + log.error("AOP后置通知异常", e); + } + ((ExecutorService) executor).shutdown(); + } + + /** + * 保存日志至数据库 + */ + protected static class SaveSystemLogThread implements Runnable { + + private SysLog log; + private ISysLogService logService; + + public SaveSystemLogThread(SysLog esLog, ISysLogService logService) { + this.log = esLog; + this.logService = logService; + } + + @Override + public void run() { + log.setId(String.valueOf(UUID.randomUUID())); + logService.save(log); + } + } + + /** + * 获取注解中对方法的描述信息 用于Controller层注解 + * @param joinPoint 切点 + * @return 方法描述 + * @throws Exception + */ + public static Map getControllerMethodInfo(JoinPoint joinPoint) throws Exception{ + + Map map = new HashMap(16); +// ## 获取目标类名 + String targetName = joinPoint.getTarget().getClass().getName(); +// ## 获取方法名 + String methodName = joinPoint.getSignature().getName(); +// ## 获取相关参数 + Object[] arguments = joinPoint.getArgs(); +// ## 生成类对象 + Class targetClass = Class.forName(targetName); +// ## 获取该类中的方法 + Method[] methods = targetClass.getMethods(); + + String description = ""; + String type = null; + String speclaiValue = ""; + String speclaiFlag = ""; + + for(Method method : methods) { + if(!method.getName().equals(methodName)) { + continue; + } + Class[] clazzs = method.getParameterTypes(); + if(clazzs.length != arguments.length) { +// ## 比较方法中参数个数与从切点中获取的参数个数是否相同,原因是方法可以重载 + continue; + } + description = method.getAnnotation(EpcLog.class).description(); + type = method.getAnnotation(EpcLog.class).businessType().name(); + speclaiValue = method.getAnnotation(EpcLog.class).speclaiValue(); + speclaiFlag = method.getAnnotation(EpcLog.class).speclaiFlag(); + map.put("description", description); + map.put("type", type); + map.put("speclaiValue",speclaiValue); + map.put("speclaiFlag",speclaiFlag); + } + return map; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/ConvertHtml2Excel.java b/adc-da-slrs/src/main/java/com/adc/da/common/ConvertHtml2Excel.java new file mode 100644 index 00000000..ac75765a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/ConvertHtml2Excel.java @@ -0,0 +1,283 @@ +package com.adc.da.common; + +import com.adc.da.util.utils.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.dom4j.Document; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/2/26 10:10 + */ +public class ConvertHtml2Excel { + /** + * html表格转excel + */ + public static HSSFWorkbook table2Excel(String tableHtml, HSSFWorkbook wb, String sheetName) throws Exception { +// HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet(sheetName); + List moneyCols =new ArrayList<>(); + moneyCols.add(1); + int headEndRow = 1; + List crossRowEleMetaLs = new ArrayList(); + int rowIndex = 0; + try { + tableHtml=tableHtml.replaceAll("\''","\'"); + Document data = DocumentHelper.parseText(tableHtml); + HSSFCellStyle contentStyle = getContentStyle(wb); + // 生成表头 + Element thead = data.getRootElement().element("thead"); + HSSFCellStyle titleStyle = getTitleStyle(wb); + int ls = 0;//列数 + if (thead != null) { + List trLs = thead.elements("tr"); + for (Element trEle : trLs) { + HSSFCellStyle style = rowIndex<=headEndRow?titleStyle:contentStyle; + style.setWrapText(true); + HSSFRow row = sheet.createRow(rowIndex); + List thLs = trEle.elements("th"); + if(ls tdLs = trEle.elements("td"); + if(ls trBody = tbody.elements("tr"); + for (Element trEle : trBody) { + HSSFCellStyle style = rowIndex<=headEndRow?titleStyle:contentStyle; + style.setWrapText(true); + HSSFRow row = sheet.createRow(rowIndex); + List thLs = trEle.elements("th"); + if(ls tdLs = trEle.elements("td"); + if(ls trFoot = tfoot.elements("tr"); + for (Element trEle : trFoot) { + HSSFCellStyle style = rowIndex<=headEndRow?titleStyle:contentStyle; + style.setWrapText(true); + HSSFRow row = sheet.createRow(rowIndex); + List thLs = trEle.elements("th"); + if(ls tdLs = trEle.elements("td"); + if(ls tdLs, int rowIndex, HSSFRow row, int startCellIndex, HSSFCellStyle cellStyle, + List crossRowEleMetaLs, boolean inHead, List moneyCols) { + int i = startCellIndex; + for (int eleIndex = 0; eleIndex < tdLs.size(); i++, eleIndex++) { + int captureCellSize = getCaptureCellSize(rowIndex, i, crossRowEleMetaLs); + while (captureCellSize > 0) { + for (int j = 0; j < captureCellSize; j++) {// 当前行跨列处理(补单元格) + row.createCell(i); + i++; + } + captureCellSize = getCaptureCellSize(rowIndex, i, crossRowEleMetaLs); + } + Element thEle = tdLs.get(eleIndex); + String val = thEle.getText(); + if (StringUtils.isEmpty(val)) { + Element e = thEle.element("a"); + if (e != null) { + val = e.getText(); + } + } + HSSFCell c = row.createCell(i); + if (NumberUtils.isNumber(val)) { + if (moneyCols != null && moneyCols.contains(i)) { + c.setCellType(CellType.STRING); + c.setCellValue(val); + } else { + c.setCellValue(Double.parseDouble(val)); + c.setCellType(CellType.STRING); + } + + } else { + c.setCellType(CellType.STRING); + c.setCellValue(new HSSFRichTextString(val)); + } + int rowSpan = NumberUtils.toInt(thEle.attributeValue("rowspan"), 1); + int colSpan = NumberUtils.toInt(thEle.attributeValue("colspan"), 1); + c.setCellStyle(cellStyle); + if (rowSpan > 1 || colSpan > 1) { // 存在跨行或跨列 + crossRowEleMetaLs.add(new CrossRangeCellMeta(rowIndex, i, rowSpan, colSpan, inHead)); + } + if (colSpan > 1) {// 当前行跨列处理(补单元格) + for (int j = 1; j < colSpan; j++) { + i++; + row.createCell(i); + } + } + } + return i; + } + + /** + * 设置合并单元格的边框样式 + * + * @param sheet + * @param region + * @param cs + */ + public static void setRegionStyle(HSSFSheet sheet, CellRangeAddress region, HSSFCellStyle cs) { + for (int i = region.getFirstRow(); i <= region.getLastRow(); i++) { + HSSFRow row = sheet.getRow(i); + for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) { + HSSFCell cell = row.getCell(j); + cell.setCellStyle(cs); + } + } + } + + /** + * 获得因rowSpan占据的单元格 + * + * @param rowIndex 行号 + * @param colIndex 列号 + * @param crossRowEleMetaLs 跨行列元数据 + * @return 当前行在某列需要占据单元格 + */ + private static int getCaptureCellSize(int rowIndex, int colIndex, List crossRowEleMetaLs) { + int captureCellSize = 0; + for (CrossRangeCellMeta crossRangeCellMeta : crossRowEleMetaLs) { + if (crossRangeCellMeta.getFirstRow() < rowIndex && crossRangeCellMeta.getLastRow() >= rowIndex) { + if (crossRangeCellMeta.getFirstCol() <= colIndex && crossRangeCellMeta.getLastCol() >= colIndex) { + captureCellSize = crossRangeCellMeta.getLastCol() - colIndex + 1; + } + } + } + return captureCellSize; + } + + /** + * 获得标题样式 + * + * @param workbook + * @return + */ + private static HSSFCellStyle getTitleStyle(HSSFWorkbook workbook) { + short titlebackgroundcolor = HSSFColor.HSSFColorPredefined.WHITE.getIndex(); + short fontSize = 11; + String fontName = "宋体"; + HSSFCellStyle style = workbook.createCellStyle(); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setAlignment(HorizontalAlignment.CENTER); + style.setBorderBottom(BorderStyle.THIN); //下边框 + style.setBorderLeft(BorderStyle.THIN);//左边框 + style.setBorderTop(BorderStyle.THIN);//上边框 + style.setBorderRight(BorderStyle.THIN);//右边框 + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setFillForegroundColor(titlebackgroundcolor);// 背景色 + style.setWrapText(true); + HSSFFont font = workbook.createFont(); +// font.setFontName(fontName); + font.setFontHeightInPoints(fontSize); +// font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + style.setFont(font); + return style; + } + + /** + * 获得内容样式 + * + * @param wb + * @return + */ + private static HSSFCellStyle getContentStyle(HSSFWorkbook wb) { + short fontSize = 11; +// String fontName = "宋体"; + HSSFCellStyle style = wb.createCellStyle(); + style.setBorderBottom(BorderStyle.THIN); + style.setBorderTop(BorderStyle.THIN); + style.setBorderLeft(BorderStyle.THIN); + style.setBorderRight(BorderStyle.THIN); + HSSFFont font = wb.createFont(); +// font.setFontName(fontName); + font.setFontHeightInPoints(fontSize); + style.setFont(font); + style.setAlignment(HorizontalAlignment.CENTER);//水平居中 + style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中 + style.setWrapText(true); + return style; + } + + public static void main(String[] args) throws Exception { + String cnt = "\n"; + List c =new ArrayList<>(); + c.add(1); + String tableHtml = "
    111111113333333333444444444
    555555566666
    324234
    "; + tableHtml = tableHtml.replaceAll("<[\\s]*?br[^>]*?>|<[\\s]*?\\/[\\s]*?br[\\s]*?>", cnt); +// HSSFWorkbook hssfWorkbook = ConvertHtml2Excel.table2Excel(tableHtml,c,1); +// hssfWorkbook.write(FileUtils.openOutputStream(new File("D:\\test\\test1.xls"))); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/ConvertMqEO.java b/adc-da-slrs/src/main/java/com/adc/da/common/ConvertMqEO.java new file mode 100644 index 00000000..65db4f60 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/ConvertMqEO.java @@ -0,0 +1,232 @@ +package com.adc.da.common; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:OT_CONVERT_MQ OtConvertMqEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-25
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class ConvertMqEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String attId; + private String filePath; + private String fileOriginPath; + private String userId; + private Integer mqState; + private String mqCode; + private String id; + private String addOrUp; + private String name; + + //向文件表添加信息 + private String lawsId; + private String resId; + private String convertType; + private String pdfPath; + private String pdfId; + private String fileSuffix; + private String standFileClassify; + private String oriAttId; + private String lawsFileClassify; + + private int againNum; + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getAttId() { + return this.attId; + } + + /** **/ + public void setAttId(String attId) { + this.attId = attId; + } + + /** **/ + public String getFilePath() { + return this.filePath; + } + + /** **/ + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + /** **/ + public String getUserId() { + return this.userId; + } + + /** **/ + public void setUserId(String userId) { + this.userId = userId; + } + + /** **/ + public Integer getMqState() { + return this.mqState; + } + + /** **/ + public void setMqState(Integer mqState) { + this.mqState = mqState; + } + + /** **/ + public String getMqCode() { + return this.mqCode; + } + + /** **/ + public void setMqCode(String mqCode) { + this.mqCode = mqCode; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public String getFileOriginPath() { + return fileOriginPath; + } + + public void setFileOriginPath(String fileOriginPath) { + this.fileOriginPath = fileOriginPath; + } + + public String getLawsId() { + return lawsId; + } + + public void setLawsId(String lawsId) { + this.lawsId = lawsId; + } + + public String getResId() { + return resId; + } + + public void setResId(String resId) { + this.resId = resId; + } + + public String getConvertType() { + return convertType; + } + + public void setConvertType(String convertType) { + this.convertType = convertType; + } + + public String getPdfPath() { + return pdfPath; + } + + public void setPdfPath(String pdfPath) { + this.pdfPath = pdfPath; + } + + public String getAddOrUp() { + return addOrUp; + } + + public void setAddOrUp(String addOrUp) { + this.addOrUp = addOrUp; + } + + public String getPdfId() { + return pdfId; + } + + public void setPdfId(String pdfId) { + this.pdfId = pdfId; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public String getFileSuffix() { + return fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getStandFileClassify() { + return standFileClassify; + } + + public void setStandFileClassify(String standFileClassify) { + this.standFileClassify = standFileClassify; + } + + public String getOriAttId() { + return oriAttId; + } + + public void setOriAttId(String oriAttId) { + this.oriAttId = oriAttId; + } + + public int getAgainNum() { + return againNum; + } + + public void setAgainNum(int againNum) { + this.againNum = againNum; + } + + public String getLawsFileClassify() { + return lawsFileClassify; + } + + public void setLawsFileClassify(String lawsFileClassify) { + this.lawsFileClassify = lawsFileClassify; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/CrossRangeCellMeta.java b/adc-da-slrs/src/main/java/com/adc/da/common/CrossRangeCellMeta.java new file mode 100644 index 00000000..1cbbb748 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/CrossRangeCellMeta.java @@ -0,0 +1,53 @@ +package com.adc.da.common; + +/** + * @Description: table转excel 跨行元素元数据 + * @Author: yangxuenan + * date: 2020/2/26 10:14 + */ +public class CrossRangeCellMeta { + + public CrossRangeCellMeta(int firstRowIndex, int firstColIndex, int rowSpan, int colSpan, boolean inHead) { + super(); + this.firstRowIndex = firstRowIndex; + this.firstColIndex = firstColIndex; + this.rowSpan = rowSpan; + this.colSpan = colSpan; + this.inHead = inHead; + } + + private int firstRowIndex; + private int firstColIndex; + private int rowSpan;// 跨越行数 + private int colSpan;// 跨越列数 + private boolean inHead; + + public boolean isInHead() { + return inHead; + } + + public CrossRangeCellMeta setInHead(boolean inHead) { + this.inHead = inHead; + return this; + } + + public int getFirstRow() { + return firstRowIndex; + } + + public int getLastRow() { + return firstRowIndex + rowSpan - 1; + } + + public int getFirstCol() { + return firstColIndex; + } + + public int getLastCol() { + return firstColIndex + colSpan - 1; + } + + public int getColSpan() { + return colSpan; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/FileUnZip.java b/adc-da-slrs/src/main/java/com/adc/da/common/FileUnZip.java new file mode 100644 index 00000000..15c9124b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/FileUnZip.java @@ -0,0 +1,178 @@ +package com.adc.da.common; + +import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; +import org.apache.commons.compress.archivers.zip.ZipFile; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.zip.ZipEntry; + +public class FileUnZip { + + private static final Logger logger = LoggerFactory.getLogger(FileUnZip.class); + + /** + * 解压zip文件 + * + * @param sourceFile,待解压的zip文件; toFolder,解压后的存放路径 + * @throws Exception + * @author gaoyan + **/ + public static String unZipFiles(String sourceFile, String descDir) throws IOException { + File zipFile = new File(sourceFile); + + File pathFile = new File(descDir); + if (!pathFile.exists()) { + pathFile.mkdirs(); + } + ZipFile zip = new ZipFile(zipFile,"gbk"); + String orgMkdirs = ""; + for (Enumeration entries = zip.getEntries(); entries.hasMoreElements(); ) { + ZipArchiveEntry entry = (ZipArchiveEntry) entries.nextElement(); + String zipEntryName = entry.getName(); + String outPath = (descDir + "/" + zipEntryName).replaceAll("\\*", "/"); + //判断路径是否存在,不存在则创建文件路径 + File file = new File(outPath.substring(0, outPath.lastIndexOf('/'))); + if (!file.exists()) { + orgMkdirs = outPath.substring(0, outPath.lastIndexOf('/')); + file.mkdirs(); + }else{ + orgMkdirs = outPath.substring(0, outPath.lastIndexOf('/')); + } + //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压 + if (new File(outPath).isDirectory()) { + continue; + } + //输出文件路径信息 +// InputStream in = null; +// OutputStream out = null; + System.gc(); + try(InputStream in =zip.getInputStream(entry); + OutputStream out =new FileOutputStream(outPath) + ){ + byte[] buf1 = new byte[1024]; + int len; + while ((len = in.read(buf1)) > 0) { + out.write(buf1, 0, len); + } + }catch(IOException e){ + logger.error(e.getMessage(),e); + } + } + System.gc(); + zip.close(); + return orgMkdirs; + } + + /** + * 递归删除文件及文件夹 + * + * @throws Exception + * @author gaoyan + * toFolder,解压后的存放路径 + **/ + public static boolean deleteDir(File dir) { + if (dir.isDirectory()) { + String[] children = dir.list(); + for (int i = 0; i < children.length; i++) { + File files = new File(dir, children[i]); + boolean success = deleteDir(files); + if (!success) { + return false; + } + } + } + // 目录此时为空,可以删除 + return dir.delete(); + } + + /** + * 读取一个目录下所有的Excel文件 + * gaoyan + * + * @param path + */ + public static List readExcelFile(String path) { + File file = new File(path); + List resultlist = new ArrayList<>(); + if (file.isDirectory()) { + File[] files = file.listFiles(); + for (File fi : files) { + // 对文件进行过滤,只读取Excel文件 + if (fi.getName().contains(".xls") || fi.getName().contains(".xlsx")) { + resultlist.add(fi); + } + } + } + return resultlist; + } + + public static List readImpExcelFile(String path) { + File file = new File(path); + List resultlist = new ArrayList<>(); + if (file.isDirectory()) { + File[] files = file.listFiles(); + for (File fi : files) { + // 对文件进行过滤,只读取Excel文件 + String name = fi.getName(); +// "导入模板".equals(fi.getName()) || "导入模板.xlsx".equals(fi.getName()) + if (name != null &&( fi.getName().contains(".xls") || fi.getName().contains(".xlsx") )){ + resultlist.add(fi); + } + } + } + return resultlist; + } + + /** + * 根据文件名称读取固定目录下文件 + * gaoyan + * @param filename + */ + public static List readFileByFilename(String path,String filename) { + List resultlist = new ArrayList<>(); + if (StringUtils.isNotEmpty(path)){ + File file = new File(path); + if (file.isDirectory()) { + File[] files = file.listFiles(); + for (File fi : files) { + // 对文件进行过滤 + if (fi.getName().equals(filename)) { + resultlist.add(fi); + } + } + } + } + return resultlist; + } + + /** + *@Description: 删除某个文件 + *@Param: [file] + *@return: void + *@Author: duyunbao + *@date: 2019/5/23 20:31 + */ + public static void delete(File file) { + if (!file.exists()) return; + + if (file.isFile() || file.list() == null) { + file.delete(); + logger.info("删除了" + file.getName()); + } else { + File[] files = file.listFiles(); + for (File a : files) { + delete(a); + } + file.delete(); + logger.info("删除了" + file.getName()); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/GetBeanUtil.java b/adc-da-slrs/src/main/java/com/adc/da/common/GetBeanUtil.java new file mode 100644 index 00000000..a3bfc75c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/GetBeanUtil.java @@ -0,0 +1,28 @@ +package com.adc.da.common; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年05月27日 14:26 + */ + +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +@Component +public class GetBeanUtil implements ApplicationContextAware { + private static ApplicationContext applicationContext; + + public void setApplicationContext(ApplicationContext context) { + GetBeanUtil.applicationContext = context; + } + + public static Object getBean(String name) { + return applicationContext.getBean(name); + } + + public static ApplicationContext getApplicationContext() { + return applicationContext; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/HandleFileIOMsg.java b/adc-da-slrs/src/main/java/com/adc/da/common/HandleFileIOMsg.java new file mode 100644 index 00000000..2d22aca7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/HandleFileIOMsg.java @@ -0,0 +1,40 @@ +package com.adc.da.common; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import sun.misc.BASE64Encoder; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +public class HandleFileIOMsg { + + private static final Logger logger = LoggerFactory.getLogger(HandleFileIOMsg.class); + + /** + * @Description: 根据文件地址转换为base64编码字符串 + */ + public String getFileBase64Str(String filePath) throws Exception { + byte[] data = null; + try (InputStream inputStream = new FileInputStream(filePath)){ + File file = new File(filePath); + data = new byte[(int) file.length()]; + inputStream.read(data); + inputStream.close(); + } catch (IOException e) { + logger.info(e.getMessage(),e); + } + // 加密 + BASE64Encoder encoder = new BASE64Encoder(); + String codeStr = ""; + if(data != null){ + codeStr = encoder.encode(data); + codeStr = codeStr.replaceAll("\r|\n", ""); + } + return codeStr; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/HtmlTextExcel.java b/adc-da-slrs/src/main/java/com/adc/da/common/HtmlTextExcel.java new file mode 100644 index 00000000..70c9d0e2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/HtmlTextExcel.java @@ -0,0 +1,68 @@ +package com.adc.da.common; + +import com.adc.da.slrs.standardSplit.vo.MarkTextVO; +import org.apache.commons.lang.StringUtils; +import java.util.List; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/3/24 15:28 + */ +public class HtmlTextExcel { + + public static String changeHtmlToExcel (String itemContent, List addList, List delList) { + if (StringUtils.isNotEmpty(itemContent)) { + itemContent = itemContent.replaceAll("
    ",""); + itemContent = itemContent.replaceAll("
    ",""); + itemContent = itemContent.replaceAll("
    ","\n"); + itemContent = itemContent.replaceAll("

    ",""); + itemContent = itemContent.replaceAll("

    ","\n"); + //获取所有新增内容的位置 + String splitContentAdd = itemContent; + int addSpiltIndex = 0; + int cirIndex = 0; + int stLen = "".length(); + int edLen = "".length(); + while (splitContentAdd.contains("")) { + int addStIndex = splitContentAdd.indexOf(""); + int addEdIndex = splitContentAdd.indexOf(""); + if (addStIndex > -1) { + MarkTextVO markTextVO = new MarkTextVO(); + markTextVO.setStartIndex(addSpiltIndex + addStIndex - (cirIndex*(stLen+edLen))); + markTextVO.setEndIndex(addSpiltIndex + addEdIndex - (cirIndex*(stLen+edLen)) - stLen); + addList.add(markTextVO); + addSpiltIndex = addSpiltIndex + addEdIndex + 7; +// String replaceStr = splitContentAdd.substring(0,addStIndex); + splitContentAdd = splitContentAdd.substring(addEdIndex + 7,splitContentAdd.length()); + cirIndex++; + } + } + //获取所有删除内容的位置 + String splitContentDel = itemContent; + int delSpiltIndex = 0; + int cirIndexDel = 0; + int stLenDel = "".length(); + int edLenDel = "".length(); + while (splitContentDel.contains("")) { + int delStIndex = splitContentDel.indexOf(""); + int delEdIndex = splitContentDel.indexOf(""); + if (delStIndex > -1) { + MarkTextVO markTextVO = new MarkTextVO(); + markTextVO.setStartIndex(delSpiltIndex + delStIndex - (cirIndexDel*(stLenDel+edLenDel))); + markTextVO.setEndIndex(delSpiltIndex + delEdIndex - (cirIndexDel*(stLenDel+edLenDel)) - stLenDel); + delList.add(markTextVO); + delSpiltIndex = delSpiltIndex + delEdIndex + 7; +// String replaceStr = splitContentDel.substring(0,delStIndex); + splitContentDel = splitContentDel.substring(delEdIndex + 7,splitContentDel.length()); + cirIndexDel++; + } + } + itemContent = itemContent.replaceAll("",""); + itemContent = itemContent.replaceAll("",""); + itemContent = itemContent.replaceAll("",""); + itemContent = itemContent.replaceAll("",""); + } + return itemContent; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/MapImportHandler.java b/adc-da-slrs/src/main/java/com/adc/da/common/MapImportHandler.java new file mode 100644 index 00000000..febd0d41 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/MapImportHandler.java @@ -0,0 +1,31 @@ +package com.adc.da.common; + +import cn.afterturn.easypoi.handler.impl.ExcelDataHandlerDefaultImpl; +import cn.afterturn.easypoi.util.PoiPublicUtil; + +import java.util.Map; + +public class MapImportHandler extends ExcelDataHandlerDefaultImpl> { + + @Override + public void setMapValue(Map map, String originKey, Object value) { + if (value instanceof Double) { + map.put(originKey, PoiPublicUtil.doubleToString((Double) value)); + } else { + map.put(originKey, value != null ? value.toString() : null); + } + } + + private String getRealKey(String originKey) { + if (originKey.equals("交易账户")) { + return "accountNo"; + } + if (originKey.equals("姓名")) { + return "name"; + } + if (originKey.equals("客户类型")) { + return "type"; + } + return originKey; + } +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/NewsFeedEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/NewsFeedEnum.java new file mode 100644 index 00000000..fbb633ed --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/NewsFeedEnum.java @@ -0,0 +1,30 @@ +package com.adc.da.common; + +/** + * @Author: qk + * @Date: 2022/5/23 0023 14:28 + * @Version 1.0 + */ +public enum NewsFeedEnum { + GNWBZFG("GNWBZFG","国内外标准法规入库"), + ZYBZFG("ZYBZFG","在研标准法规入库"), + QYBZFB("QYBZFB","企业标准发布"); + + + + + private String value; + private String lable; + + private NewsFeedEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/ProcessConformStateEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/ProcessConformStateEnum.java new file mode 100644 index 00000000..020a85c5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/ProcessConformStateEnum.java @@ -0,0 +1,27 @@ +package com.adc.da.common; + +/** + * @Description: 项目库标准符合性枚举类 + * @Author: super_liu + * date: 2020/11/5 14:14 + */ +public enum ProcessConformStateEnum { + + CHECK("3","待验证"),FIT("1","符合"), + UNFIT("2","不符合"), + NOT_INVOLVE("4","不涉及"); + + private String value; + private String lable; + + private ProcessConformStateEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/PropertyTypeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/PropertyTypeEnum.java new file mode 100644 index 00000000..2f5b3336 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/PropertyTypeEnum.java @@ -0,0 +1,29 @@ +package com.adc.da.common; + +/** + * 标准库参数类型枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum PropertyTypeEnum { + + PROVETYPE("PROVETYPE","适用车型"),APPLY_ARCTIC("APPLY_ARCTIC","适用车型"), + ENERGY_KIND("ENERGY_KIND","能源种类"),APPLY_AUTH("APPLY_AUTH","适用认证"), + CAR_MODEL("CAR_MODEL","公告车型号"), + CATEGORY("CATEGORY","所属专业领域"),PRODUCT_TYPE("PRODUCT_TYPE","产品类别"); + + private String value; + private String lable; + + private PropertyTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/ReadExcel.java b/adc-da-slrs/src/main/java/com/adc/da/common/ReadExcel.java new file mode 100644 index 00000000..53de254a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/ReadExcel.java @@ -0,0 +1,175 @@ +package com.adc.da.common; + +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; + +/** + * @des : excel信息读取 + * @author: duyunbao + * @email: 1114808306@qq.com + * @date 2017/10/27 17:06 + **/ +public class ReadExcel { + private static final Logger logger = LoggerFactory.getLogger(ReadExcel.class); + + /** + * 总行数 + */ + private int totalRows = 0; + /** + * 总条数 + */ + private int totalCells = 0; + /** + * 错误信息接收器 + */ + private String errorMsg; + + public ReadExcel() { + // 不做操作 + } + + public int getTotalRows() { + return totalRows; + } + + public int getTotalCells() { + return totalCells; + } + + public String getErrorInfo() {//获取错误信息 + return errorMsg; + } + + /** + * @method_name: validateExcel + * @des : 验证excel格式 + * @author: duyunbao + * @param: [filePath] + * @return: boolean + * @date: 2017/10/27 17:07 + **/ + public boolean validateExcel(String filePath) { + if (filePath == null || !(WDWUtil.isExcel2003(filePath) || WDWUtil.isExcel2007(filePath))) { + errorMsg = "文件名不是excel格式"; + return false; + } + return true; + } + + /** + * @method_name: getExcelInfo + * @des : 读EXCEL文件,获取信息集合 + * @author: duyunbao + * @param: [fileName, Mfile] + * @return: org.apache.poi.ss.usermodel.Workbook + * @date: 2017/10/27 17:08 + **/ + public Workbook getExcelInfo(String fileName, MultipartFile Mfile) { + Workbook wb = null; + //把spring文件上传的MultipartFile转换成CommonsMultipartFile类型 + CommonsMultipartFile cf = (CommonsMultipartFile) Mfile; //获取本地存储路径 + //初始化输入流 + InputStream is = null; + try { + //根据文件名判断文件是2003版本还是2007版本 + boolean isExcel2003 = true; + if (WDWUtil.isExcel2007(fileName)) { + isExcel2003 = false; + } + is = cf.getInputStream(); + //根据excel里面的内容读取客户信息 + wb = getExcelInfo(is, isExcel2003, wb); + is.close(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + is = null; + logger.error(e.getMessage(),e); + } + } + } + return wb; + } + + /*** + * @method_name: getExcelInfo + * @des : 判断excel版本 + * @author: duyunbao + * @param: [is, isExcel2003, wb] + * @return: org.apache.poi.ss.usermodel.Workbook + * @date: 2017/10/27 17:08 + **/ + private Workbook getExcelInfo(InputStream is, boolean isExcel2003, Workbook wb) { + Workbook workbook =wb; + try { + /** 根据版本选择创建Workbook的方式 */ + //当excel是2003时 + if (isExcel2003) { + workbook = new HSSFWorkbook(is); + } else {//当excel是2007时 + workbook = new XSSFWorkbook(is); + } + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + return workbook; + } + + /** + * 获取sheet的名称 + * @MethodName:getSheetName + * @author: 马晓晨 + * @email: 747052172@qq.com + * @date 2017年11月24日 上午9:49:22 + * @version V1.0 + * @param filename + * @param file + * @param sheetIndex + * @return + */ + public String getSheetName(String filename, MultipartFile file, Integer sheetIndex) { + Workbook wb = getExcelInfo(filename, file); + return wb.getSheetName(sheetIndex); + } + + /** + * + * @Title: encodeFileName + * @Description: 导出文件转换文件名称编码 + * @param @param fileNames + * @param @param request + * @param @return 设定文件 + * @return String 返回类型 + * @throws + */ + public static String encodeFileName(String fileNames , HttpServletRequest request) { + try { + String agent = request.getHeader("User-Agent"); + if (agent.contains("Firefox")) { + fileNames = new String(fileNames.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器 + } else { + fileNames = URLEncoder.encode(fileNames, "utf-8"); + //谷歌中空格变为+问题 + fileNames = fileNames.replaceAll("\\+","%20"); + } + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return fileNames ; + } +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/ReadWordTable.java b/adc-da-slrs/src/main/java/com/adc/da/common/ReadWordTable.java new file mode 100644 index 00000000..0b0c83a7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/ReadWordTable.java @@ -0,0 +1,236 @@ +package com.adc.da.common; + +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; + +import java.io.FileInputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: + * @Author: super_liu + * date: 2020/2/25 16:58 + */ +public class ReadWordTable { + + + /** + * 保存生成HTML时需要被忽略的单元格 + */ + private List omitCellsList = new ArrayList<>(); + + /** + * 生成忽略的单元格列表中的格式 + * + * @param row + * @param col + * @return + */ + public String generateOmitCellStr(int row, int col) { + return row + ":" + col; + } + + /** + * 获取当前单元格的colspan(列合并)的列数 + * + * @param tcPr 单元格属性 + * @return + */ + public int getColspan(CTTcPr tcPr) { + // 判断是否存在列合并 + CTDecimalNumber gridSpan = null; + if ((gridSpan = tcPr.getGridSpan()) != null) { // 合并的起始列 + // 获取合并的列数 + BigInteger num = gridSpan.getVal(); + return num.intValue(); + } else { // 其他被合并的列或正常列 + return 1; + } + } + + /** + * 获取当前单元格的rowspan(行合并)的行数 + * + * @param table 表格 + * @param row 行值 + * @param col 列值 + * @return + */ + public int getRowspan(XWPFTable table, int row, int col) { + + XWPFTableCell cell = table.getRow(row).getCell(col); + // 正常独立单元格 + if (!isContinueRow(cell) && !isRestartRow(cell)) { + return 1; + } + // 当前单元格的宽度 + int cellWidth = getCellWidth(table, row, col); + // 当前单元格距离左侧边框的距离 + int leftWidth = getLeftWidth(table, row, col); + + // 用户保存当前单元格行合并的单元格数-1(因为不包含自身) + List list = new ArrayList<>(); + getRowspan(table, row, cellWidth, leftWidth, list); + + return list.size() + 1; + } + + private void getRowspan(XWPFTable table, int row, int cellWidth, int leftWidth, + List list) { + // 已达到最后一行 + if (row + 1 >= table.getNumberOfRows()) { + return; + } + row = row + 1; + int colsNum = table.getRow(row).getTableCells().size(); + // 因为列合并单元格可能导致行合并的单元格并不在同一列,所以从头遍历列,通过属性、宽度以及距离左边框间距来判断是否是行合并 + for (int i = 0; i < colsNum; i++) { + XWPFTableCell testTable = table.getRow(row).getCell(i); + // 是否为合并单元格的中间行(包括结尾行) + if (isContinueRow(testTable)) { + // 是被上一行单元格合并的单元格 + if (getCellWidth(table, row, i) == cellWidth + && getLeftWidth(table, row, i) == leftWidth) { + list.add(true); + // 被合并的单元格在生成html时需要忽略 + addOmitCell(row, i); + // 去下一行继续查找 + getRowspan(table, row, cellWidth, leftWidth, list); + break; + } + } + } + } + + /** + * 判断是否是合并行的起始行单元格 + * + * @param tableCell + * @return + */ + public boolean isRestartRow(XWPFTableCell tableCell) { + CTTcPr tcPr = tableCell.getCTTc().getTcPr(); + if (tcPr.getVMerge() == null) { + return false; + } + if (tcPr.getVMerge().getVal() == null) { + return false; + } + if (tcPr.getVMerge().getVal().toString().equalsIgnoreCase("restart")) { + return true; + } + return false; + } + + /** + * 判断是否是合并行的中间行单元格(包括结尾的最后一行的单元格) + * + * @param tableCell + * @return + */ + public boolean isContinueRow(XWPFTableCell tableCell) { + CTTcPr tcPr = tableCell.getCTTc().getTcPr(); + if (tcPr.getVMerge() == null) { + return false; + } + if (tcPr.getVMerge().getVal() == null) { + return true; + } + return false; + } + + public int getLeftWidth(XWPFTable table, int row, int col) { + int leftWidth = 0; + for (int i = 0; i < col; i++) { + leftWidth += getCellWidth(table, row, i); + } + return leftWidth; + } + + public int getCellWidth(XWPFTable table, int row, int col) { + BigInteger width = table.getRow(row).getCell(col).getCTTc().getTcPr().getTcW().getW(); + return width.intValue(); + } + + /** + * 添加忽略的单元格(被行合并的单元格,生成HTML时需要忽略) + * + * @param row + * @param col + */ + public void addOmitCell(int row, int col) { + String omitCellStr = generateOmitCellStr(row, col); + omitCellsList.add(omitCellStr); + } + + public boolean isOmitCell(int row, int col) { + String cellStr = generateOmitCellStr(row, col); + return omitCellsList.contains(cellStr); + } + + public String readTable(XWPFTable table) throws IOException { + // 表格行数 + int tableRowsSize = table.getRows().size(); + StringBuilder tableToHtmlStr = new StringBuilder(""); + + for (int i = 0; i < tableRowsSize; i++) { + tableToHtmlStr.append(""); + int tableCellsSize = table.getRow(i).getTableCells().size(); + for (int j = 0; j < tableCellsSize; j++) { + if (isOmitCell(i, j)) { + continue; + } + XWPFTableCell tableCell = table.getRow(i).getCell(j); + // 获取单元格的属性 + CTTcPr tcPr = tableCell.getCTTc().getTcPr(); + int colspan = getColspan(tcPr); + if (colspan > 1) { // 合并的列 + tableToHtmlStr.append(""); + + } + tableToHtmlStr.append(""); + } + tableToHtmlStr.append("
    1) { // 合并的行 + tableToHtmlStr.append(" rowspan='" + rowspan + "'>"); + } else { + tableToHtmlStr.append(">"); + } + String text = tableCell.getText(); + tableToHtmlStr.append(text + "
    "); + + clearTableInfo(); + + return tableToHtmlStr.toString(); + } + + public void clearTableInfo() { + // System.out.println(omitCellsList); + omitCellsList.clear(); + } + + public static void main(String[] args) { + ReadWordTable readWordTable = new ReadWordTable(); + + try (FileInputStream fileInputStream = new FileInputStream("E:\\下载\\table1.docx"); + XWPFDocument document = new XWPFDocument(fileInputStream);) { + List tables = document.getTables(); + for (XWPFTable table : tables) { + System.out.println(readWordTable.readTable(table)); + } + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarAskNatureEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarAskNatureEnum.java new file mode 100644 index 00000000..b1c68bc1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarAskNatureEnum.java @@ -0,0 +1,20 @@ +package com.adc.da.common; + +public enum SarAskNatureEnum { + ZR("ZR","准入"),ZRYY("ZRYY","准入引用"), + UNFIT("ZRWG","准入无关"); + + private String value; + private String lable; + + private SarAskNatureEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarAttrFieldEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarAttrFieldEnum.java new file mode 100644 index 00000000..0aec0817 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarAttrFieldEnum.java @@ -0,0 +1,25 @@ +package com.adc.da.common; + +/** + * @Description: 自定义属性字段 + * date: 2020/11/5 14:14 + */ +public enum SarAttrFieldEnum { + + FO("FO","FO"),YQLX("YQLX","要求类型"), + ZRBM("ZRBM","责任部门"),XMPGJS("XMPGJS","项目评估角色"); + + private String value; + private String lable; + + private SarAttrFieldEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarBussStandStatus.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarBussStandStatus.java new file mode 100644 index 00000000..16ddeeba --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarBussStandStatus.java @@ -0,0 +1,66 @@ +package com.adc.da.common; + +import java.util.HashMap; +import java.util.Map; + +/** + * @program: LAWSSystem + * @description: + * @version: 1.0 + * @author: LiuJiaQi + * @create: 2020-11-03 15:09 + **/ +public class SarBussStandStatus { + private Map planStatusMap = new HashMap(); + private Map planTypeMap =new HashMap(); + private Map planStatusMapExport =new HashMap(); + private Map planTypeMapExport =new HashMap(); + + public SarBussStandStatus() { + planStatusMap.put("制定中", "1"); + planStatusMap.put("修订中", "2"); + planStatusMap.put("已发布", "3"); + planStatusMap.put("计划已确认", "4"); + planTypeMap.put("制定", "1"); + planTypeMap.put("修订", "2"); + //用于导出 + planStatusMapExport.put("1", "制定中"); + planStatusMapExport.put("2", "修订中"); + planStatusMapExport.put("3", "已发布"); + planStatusMapExport.put("4", "计划已确认"); + planTypeMapExport.put("1", "制定"); + planTypeMapExport.put("2", "修订"); + } + + public Map getPlanStatusMap() { + return planStatusMap; + } + + public void setPlanStatusMap(Map planStatusMap) { + this.planStatusMap = planStatusMap; + } + + public Map getPlanTypeMap() { + return planTypeMap; + } + + public void setPlanTypeMap(Map planTypeMap) { + this.planTypeMap = planTypeMap; + } + + public Map getPlanStatusMapExport() { + return planStatusMapExport; + } + + public void setPlanStatusMapExport(Map planStatusMapExport) { + this.planStatusMapExport = planStatusMapExport; + } + + public Map getPlanTypeMapExport() { + return planTypeMapExport; + } + + public void setPlanTypeMapExport(Map planTypeMapExport) { + this.planTypeMapExport = planTypeMapExport; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarConformStateEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarConformStateEnum.java new file mode 100644 index 00000000..56041bd7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarConformStateEnum.java @@ -0,0 +1,28 @@ +package com.adc.da.common; + +/** + * @Description: 项目库标准符合性枚举类 + * @Author: super_liu + * date: 2020/11/5 14:14 + */ +public enum SarConformStateEnum { + + CHECK(1,"待验证"),FIT(2,"符合"), + UNFIT(3,"不符合"),PART_FIT(4,"部分符合"), + NOT_INVOLVE(5,"不涉及"),ASSESS(6,"评估中"), + RESET(7,"整改中"),NOT_EVAL(8,"未评估"); + + private Integer value; + private String lable; + + private SarConformStateEnum(Integer value, String lable) { + this.value = value; + this.lable = lable; + } + public Integer getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarNumberTypeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarNumberTypeEnum.java new file mode 100644 index 00000000..14f48c72 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarNumberTypeEnum.java @@ -0,0 +1,30 @@ +package com.adc.da.common; + +/** + * 编号类型分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum SarNumberTypeEnum { + + STAND_NUMBER("STAND_NUMBER","标准编号"),LAWS_NUMBER("LAWS_NUMBER","文件号"), + STAND_REPLACE_NUMBER("STAND_REPLACE_NUMBER","代替标准号"),LAWS_REPLACE_NUMBER("LAWS_REPLACE_NUMBER","代替文件号"); + + private String value; + private String lable; + + private SarNumberTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarPutTimeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarPutTimeEnum.java new file mode 100644 index 00000000..8efd87a1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarPutTimeEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * @Description: 预警实施日期种类 + * @Author: super_liu + * date: 2020/10/19 15:59 + */ +public enum SarPutTimeEnum { + XDXCSSRQ("XDXCSSRQ","新定型车实施日期"),ZCCSSRQ("ZCCSSRQ","在产车实施日期"), + XSCCSSRQ("XSCCSSRQ","新生产车实施日期"); + + private String value; + private String lable; + + private SarPutTimeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarStandStateEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarStandStateEnum.java new file mode 100644 index 00000000..032b9d0e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarStandStateEnum.java @@ -0,0 +1,42 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: super_liu + * date: 2020/12/18 13:51 + */ +public enum SarStandStateEnum { + + DRAFT("DRAFT","草稿"),ADVICE("ADVICE","征求意见稿"), + SUBMIT("SUBMIT","送审稿"),RADYSUBMIT("RADYSUBMIT","报批稿"), + FJNVYX9Q7J("FJNVYX9Q7J","发布稿"),ZTXXYX("ZTXXYX","计划修订"), + ZTJJSS("ZTJJSS","修订中"),TOVOID("TOVOID","已作废"), + N5KLTFLNRC("N5KLTFLNRC","已修订"),QBXDZ("XB2USRPXY5","企标修订中"), + QBYZF("AY9L9FMSEW","企标已作废"),QBYXD("7ZT7YWXFPK","企标已修订"), + QBJHYQR("4VKQX3V2QU","企标计划已确认"),QBYFB("N75QKJ5MWB","企标已发布"); + + private String value; + private String lable; + + private SarStandStateEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + + public static String getLableByVal(String val){ + for (SarStandStateEnum stateEnum : SarStandStateEnum.values()) { + if (stateEnum.getValue() == val) { + return stateEnum.getLable(); + } + } + return ""; + } + + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarStateColorEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarStateColorEnum.java new file mode 100644 index 00000000..e8a8d000 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarStateColorEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * @Description: 合规性分级颜色枚举 + * @Author: super_liu + * date: 2021/3/10 15:45 + */ +public enum SarStateColorEnum { + + GREEN("green","绿色"),RED("red","红色"),BLUE("blue","蓝色"), + YELLOW("yellow","黄色"),NA("grey","灰色"),NOT("notSure","未反馈"); + + private String value; + private String lable; + + private SarStateColorEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarSychronEO.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarSychronEO.java new file mode 100644 index 00000000..0edfc679 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarSychronEO.java @@ -0,0 +1,54 @@ +package com.adc.da.common; + +public class SarSychronEO { + + private String sychronId; + + private String sarId; + + private String sarNumber; + + private String conflictType; + + private String standName; + + public String getSychronId() { + return sychronId; + } + + public void setSychronId(String sychronId) { + this.sychronId = sychronId; + } + + public String getSarId() { + return sarId; + } + + public void setSarId(String sarId) { + this.sarId = sarId; + } + + public String getSarNumber() { + return sarNumber; + } + + public void setSarNumber(String sarNumber) { + this.sarNumber = sarNumber; + } + + public String getConflictType() { + return conflictType; + } + + public void setConflictType(String conflictType) { + this.conflictType = conflictType; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarSynInputEO.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarSynInputEO.java new file mode 100644 index 00000000..68de1874 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarSynInputEO.java @@ -0,0 +1,72 @@ +package com.adc.da.common; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +public class SarSynInputEO { + private String id; + private String standSort; + private String standNumber; + private String standYear; + private String standType; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String standName; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStandSort() { + return standSort; + } + + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public String getStandType() { + return standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SarTypeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SarTypeEnum.java new file mode 100644 index 00000000..ccf9bb73 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SarTypeEnum.java @@ -0,0 +1,44 @@ +package com.adc.da.common; + +/** + * 标准法规分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum SarTypeEnum { + + INLAND_STAND("INLAND_STAND","国内标准法规"),INLAND_LAWS("INLAND_LAWS","国内政策"), + FOREIGN_STAND("FOREIGN_STAND","国外标准法规"),FOREIGN_LAWS("FOREIGN_LAWS","国内外政策"), + STAND("STAND","国内外标准法规"), + LAWS("LAWS","国内外政策"), + LAWS_STAND("LAWS_STAND","国内外政策"), + BUSINESS("BUSINESS","企业标准"), + BUSS("BUSS","企业标准"), + SPLIT("SPLIT","标准拆分"), + ACCESS("ACCESS","标准法规清单"), + // 增加清单临时分类代码 后续通过同步按钮同步时切换类型 + INLAND_STAND_ACCESS("INLAND_STAND_ACCESS","国内标准法规清单"), + FOREIGN_STAND_ACCESS("FOREIGN_STAND_ACCESS","国外标准法规清单"), + FOREIGN_LAWS_ACCESS("FOREIGN_LAWS_ACCESS","国内外政策清单"), + BUSS_ACCESS("BUSS","企业标准清单"), + PRODUCT("PRODUCT","车型/项目库"), + RECORDS("RECORDS","企标备案库"); + + private String value; + private String lable; + + private SarTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SelectionTypeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SelectionTypeEnum.java new file mode 100644 index 00000000..70e1c5b6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SelectionTypeEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: super_liu + * date: 2020/12/17 11:23 + */ +public enum SelectionTypeEnum { + + ORGLIST("ORGLIST","组织机构"),USERLIST("USERLIST","用户"), + ROLELIST("ROLELIST","角色"),SVPPS("SVPPS","SVPPS"),GZZXX("GZZXX","工作组信息"); + + private String value; + private String lable; + + private SelectionTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SorDivideEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SorDivideEnum.java new file mode 100644 index 00000000..204c1b2c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SorDivideEnum.java @@ -0,0 +1,31 @@ +package com.adc.da.common; + +/** + * 标准法规分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum SorDivideEnum { + + INLAND_STAND("INLAND_STAND","国内标准法规"),INLAND_LAWS("INLAND_LAWS","国内政策"), + FOREIGN_STAND("FOREIGN_STAND","国外标准法规"),FOREIGN_LAWS("FOREIGN_LAWS","国外政策"), + BUSINESS_STAND("BUSINESS_STAND","企业标准") ; + + private String value; + private String lable; + + private SorDivideEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SplitFilePragraTypeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/SplitFilePragraTypeEnum.java new file mode 100644 index 00000000..9a7bfe56 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SplitFilePragraTypeEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * 标准库参数类型枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum SplitFilePragraTypeEnum { + + TEXT("TEXT","文字"),IMG("IMG","图片"),TABLE("TABLE","表格"); + + private String value; + private String lable; + + private SplitFilePragraTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/SplitTableInfo.java b/adc-da-slrs/src/main/java/com/adc/da/common/SplitTableInfo.java new file mode 100644 index 00000000..374cd5ad --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/SplitTableInfo.java @@ -0,0 +1,28 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: super_liu + * date: 2020/5/11 10:29 + */ +public class SplitTableInfo { + private String tableName; + + private String tableHtml; + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getTableHtml() { + return tableHtml; + } + + public void setTableHtml(String tableHtml) { + this.tableHtml = tableHtml; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/StandAttrTypeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/StandAttrTypeEnum.java new file mode 100644 index 00000000..462fdc0e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/StandAttrTypeEnum.java @@ -0,0 +1,28 @@ +package com.adc.da.common; + +/** + * @Description: 属性类型枚举类 + * @Author: super_liu + * date: 2020/8/17 17:02 + */ +public enum StandAttrTypeEnum { + + INPUT_STR("INPUT_STR","输入框(字符串)"),INPUT_NUM("INPUT_NUM","输入框(数字)"), + SELECT_OPTION("SEL_OPTION","单选下拉框"),SEL_OPTS("SEL_OPTS","多选下拉框"),DATE_PICKER("DATE_PICKER","日期选择"), + DATE_PIC_OPTS("DATE_PIC_OPTS","多日期选择"),FILE("FILE","文件"), + TEXTAREA("TEXTAREA","文本框") ; + + private String value; + private String lable; + + private StandAttrTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/StandFileClassifyEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/StandFileClassifyEnum.java new file mode 100644 index 00000000..88a7b26f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/StandFileClassifyEnum.java @@ -0,0 +1,32 @@ +package com.adc.da.common; + +/** + * 资源库文件分类枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum StandFileClassifyEnum { + + STAND_FILE("STAND_FILE","标准文本/法规文件"),STAND_MODIFY_FILE("STAND_MODIFY_FILE","标准修改单"), + DRAFT_FILE("DRAFT_FILE","草案文件"),OPINION_FILE("OPINION_FILE","征求意见稿"), + SENT_SCREEN_FILE("SENT_SCREEN_FILE","送审稿"),APPROVAL_FILE("APPROVAL_FILE","报批稿"), + RELEVANCE_FILE("RELEVANCE_FILE","关联文件"),LAWS_FILE("LAWS_FILE","法规文件") ; + + private String value; + private String lable; + + private StandFileClassifyEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/StandPlanSchedule.java b/adc-da-slrs/src/main/java/com/adc/da/common/StandPlanSchedule.java new file mode 100644 index 00000000..48baf5ff --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/StandPlanSchedule.java @@ -0,0 +1,54 @@ +package com.adc.da.common; + +public class StandPlanSchedule { + + private String value; + + private int countPlanSubmit = 0; + + private int countRealSubmit = 0; + + private int countPlanRelease = 0; + + private int countRealRelease = 0; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public int getCountPlanSubmit() { + return countPlanSubmit; + } + + public void setCountPlanSubmit(int countPlanSubmit) { + this.countPlanSubmit = countPlanSubmit; + } + + public int getCountRealSubmit() { + return countRealSubmit; + } + + public void setCountRealSubmit(int countRealSubmit) { + this.countRealSubmit = countRealSubmit; + } + + public int getCountPlanRelease() { + return countPlanRelease; + } + + public void setCountPlanRelease(int countPlanRelease) { + this.countPlanRelease = countPlanRelease; + } + + public int getCountRealRelease() { + return countRealRelease; + } + + public void setCountRealRelease(int countRealRelease) { + this.countRealRelease = countRealRelease; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/TaskCommonQuery.java b/adc-da-slrs/src/main/java/com/adc/da/common/TaskCommonQuery.java new file mode 100644 index 00000000..926117d9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/TaskCommonQuery.java @@ -0,0 +1,40 @@ +package com.adc.da.common; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class TaskCommonQuery { + + @ApiModelProperty(value = "当前页") + private int current; + @ApiModelProperty(value = "数量") + private int size; + @ApiModelProperty(value = "名称") + private String name; + @ApiModelProperty(value = "开始时间从") + private String startTime; + @ApiModelProperty(value = "到") + private String endTime; + @ApiModelProperty(value = "结束时间从") + private String finishStartTime; + @ApiModelProperty(value = "到") + private String finishEndTime; + @ApiModelProperty(value = "流程分类") + private String category_id; + + @ApiModelProperty(value = "用户Id") + private String userId; + + @ApiModelProperty(value = "流程名称") + private String prcName; + + @ApiModelProperty(value = "流程编号") + private String prcNum; + + @ApiModelProperty(value = "流程类型") + private String prcType; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/TemplateOriData.java b/adc-da-slrs/src/main/java/com/adc/da/common/TemplateOriData.java new file mode 100644 index 00000000..39e0d689 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/TemplateOriData.java @@ -0,0 +1,45 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: super_liu + * date: 2020/2/21 16:34 + */ +public class TemplateOriData { + private String preMsg = "

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。

    本标准由广州汽车集团股份有限公司汽车工程研究院XXX提出。

    本标准由广州汽车集团股份有限公司汽车工程研究院质量管理部归口。

    本标准由广州汽车集团股份有限公司汽车工程研究院XXXX起草。

    本标准由广州汽车集团股份有限公司汽车工程研究院XXXX解释。

    本标准主要起草人:XXX、XXX、XXX。

    本标准于20XX年XX月首次发布。

    本标准于20XX年XX月进行第X次修订,标准修订人:XXX。

    本次主要修订内容如下:

    a) 增加内容的表述

    ——增加第X.X条XXXX的要求。

    b)修改内容的表述

    ——第X.X条XXXX的要求由“XXX”改为“XXX”。

    c)删除内容的表述

    ——删除原标准第X.X条XXXX的要求。

    本标准所替代标准的历次版本发布情况为:

    ——QJ/GAC XXXX.XXX-XXXX。


    "; + private String titleOne = "

        本标准规定了XXXX的术语和定义、技术要求、试验方法、检验规则和标志、包装、运输及贮存。

        本标准适用于广汽研究院开发的乘用车用的XXXX。


    "; + private String titleTwo = "

           下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

           [国家标准]

           [行业标准]

           [地方标准]

           [法规、规程、规范和其它有关文件]

           [ISO标准]

           [IEC标准]

           [ISO、IEC有关文件]

           [其它国际标准]

           [其它国际有关文件]

           [本企业已发布的院级标准]


    "; + private String titleThree = "

            下列术语和定义适用于本标准。


    "; + + public String getPreMsg() { + return preMsg; + } + + public void setPreMsg(String preMsg) { + this.preMsg = preMsg; + } + + public String getTitleOne() { + return titleOne; + } + + public void setTitleOne(String titleOne) { + this.titleOne = titleOne; + } + + public String getTitleTwo() { + return titleTwo; + } + + public void setTitleTwo(String titleTwo) { + this.titleTwo = titleTwo; + } + + public String getTitleThree() { + return titleThree; + } + + public void setTitleThree(String titleThree) { + this.titleThree = titleThree; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/TextCompare.java b/adc-da-slrs/src/main/java/com/adc/da/common/TextCompare.java new file mode 100644 index 00000000..00db0aae --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/TextCompare.java @@ -0,0 +1,9 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: super_liu + * date: 2019/12/5 13:50 + */ +public class TextCompare { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/UploadFile.java b/adc-da-slrs/src/main/java/com/adc/da/common/UploadFile.java new file mode 100644 index 00000000..6a96f877 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/UploadFile.java @@ -0,0 +1,64 @@ +package com.adc.da.common; + +public class UploadFile { + + private String id; + + private String fileName; + + private String oldFileName; + + private String fileSuffix; + + private String filePath; + + private String attId; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getOldFileName() { + return oldFileName; + } + + public void setOldFileName(String oldFileName) { + this.oldFileName = oldFileName; + } + + public String getFileSuffix() { + return fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/UploadFileInfo.java b/adc-da-slrs/src/main/java/com/adc/da/common/UploadFileInfo.java new file mode 100644 index 00000000..80e8050a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/UploadFileInfo.java @@ -0,0 +1,36 @@ +package com.adc.da.common; + +/** + * @Description: + * @Author: super_liu + * date: 2020/1/9 18:59 + */ +public class UploadFileInfo { + private String id; + private String filePath; + private String name; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/UseModuleEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/UseModuleEnum.java new file mode 100644 index 00000000..ea7125c7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/UseModuleEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.common; + +/** + * 标准库参数类型枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum UseModuleEnum { + + SOURCE_FILE("SOURCE_FILE","源文件"),WEB_FILE("WEB_FILE","PC预览文件"),MOBLE_FILE("MOBLE_FILE","手机预览文件"); + + private String value; + private String lable; + + private UseModuleEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/WDWUtil.java b/adc-da-slrs/src/main/java/com/adc/da/common/WDWUtil.java new file mode 100644 index 00000000..7abbc115 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/WDWUtil.java @@ -0,0 +1,164 @@ +package com.adc.da.common; + +import org.apache.commons.lang3.StringUtils; + +import java.util.regex.Pattern; + +/** + * @des : excel版本判断类 + * @author: duyunbao + * @email: 1114808306@qq.com + * @date 2017/10/27 16:59 + **/ +public class WDWUtil { + + /** + * @method_name: isExcel2003 + * @des :是否是2003的excel,返回true是2003 + * @author: duyunbao + * @param: [filePath] + * @return: boolean + * @date: 2017/10/27 16:57 + **/ + public static boolean isExcel2003(String filePath) { + return filePath.matches("^.+\\.(?i)(xls)$"); + } + + /** + * @method_name: isExcel2007 + * @des : 是否是2007的excel,返回true是2007 + * @author: duyunbao + * @param: [filePath] + * @return: boolean + * @date: 2017/10/27 16:57 + **/ + public static boolean isExcel2007(String filePath) { + return filePath.matches("^.+\\.(?i)(xlsx)$"); + } + + + /** + * 判断字符串是否是整数 + * @MethodName:isInteger + * @author: DuYunbao + * @date: 2018/5/22 18:00 + */ + public static boolean isNumeric(String str){ + for (int i = str.length();--i>=0;){ + if (!Character.isDigit(str.charAt(i))){ + return false; + } + } + return true; + } + + /**方法二:推荐,速度最快 + * 判断是否为整数 + * @param str 传入的字符串 + * @return 是整数返回true,否则返回false + */ + public static boolean isInteger(String str) { + Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + return pattern.matcher(str).matches(); + } + + /** + * 字母或数字 + * + * @MethodName:isLetterDigitOrChinese + * @author: DuYunbao + * @date: 2018/5/30 15:26 + */ + public static boolean isLetterOrNumber(String str) { + String regex = "^(\\d|[a-zA-Z])+$"; + return !str.matches(regex); + } + + /** + * 汉字、字母、() + * + * @MethodName:isLetterOrChineseOrChar1 + * @author: DuYunbao + * @date: 2018/5/30 15:53 + */ + public static boolean isLetterOrChineseOrChar1(String str) { + String regex = "[^\\a-\\z\\A-\\Z\\u4E00-\\u9FA5\\()\\()]"; + return str.matches(regex); + } + + /** + * 汉字、字母、数字 + * + * @MethodName:isLetterOrChineseOrNumber + * @author: DuYunbao + * @date: 2018/5/30 15:56 + */ + public static boolean isLetterOrChineseOrNumber(String str) { + String regex = "^[\\u4E00-\\u9FA5A-Za-z0-9]+$"; + return !str.matches(regex); + } + + /** + * 汉字、字母、()、-、下划线 + * + * @MethodName:isChineseOrLetterOrUnderlineOrChar1 + * @author: DuYunbao + * @date: 2018/5/30 16:03 + */ + public static boolean isChineseOrLetterOrUnderlineOrChar1(String str) { + String regex = "^[\\u4E00-\\u9FA5A-Za-z_\\-\\()\\()]+$"; + return !str.matches(regex); + } + + /** + * 数字 + * + * @MethodName:isNumbee + * @author: DuYunbao + * @date: 2018/5/30 16:09 + */ + public static boolean isNumber(String str) { + String regex = "\\D"; + return str.matches(regex); + } + + /** + * 数字、大写字母、- + * + * @MethodName:isNumberOrLowerLetterOrChar1 + * @author: DuYunbao + * @date: 2018/5/30 16:41 + */ + public static boolean isNumberOrLowerLetterOrChar1(String str) { + String regex = "^[A-Z0-9\\-]+$"; + return !str.matches(regex); + } + + /** + * 汉字、数字、字母、()、-、下划线 + * + * @MethodName:isChineseOrNumberOrLetterOrUnderlineOrChar + * @author: DuYunbao + * @date: 2018/5/30 16:45 + */ + public static boolean isChineseOrNumberOrLetterOrUnderlineOrChar(String str) { + String regex = "^[\\u4E00-\\u9FA5A-Za-z0-9_\\-\\()\\()]+$"; + return !str.matches(regex); + } + + + /** + * 去除整数含有小数点 + * @MethodName:subStr + * @author: DuYunbao + * @date: 2018/5/31 11:19 + */ + public static String subStr(String text) { + if (StringUtils.isNotEmpty(text)) { + if(text.contains(".0") && text.substring(text.length()-2,text.length()).equals(".0")) { + text = text.substring(0,text.length()-2); + } + } + return text; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/WarnPutTypeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/WarnPutTypeEnum.java new file mode 100644 index 00000000..b670c489 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/WarnPutTypeEnum.java @@ -0,0 +1,30 @@ +package com.adc.da.common; + +/** + * 标准法规分类 + * @author gaoyan + * date 2018/09/19 + */ +public enum WarnPutTypeEnum { + + NEWCAR("NEWCAR","新定车型"),NEWPRODUCT("NEWPRODUCT","新生产车型"), + PRODUCT("PRODUCT","在产车型"); + + private String value; + private String lable; + + private WarnPutTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/WarnTimeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/common/WarnTimeEnum.java new file mode 100644 index 00000000..9a8e3725 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/WarnTimeEnum.java @@ -0,0 +1,33 @@ +package com.adc.da.common; + +/** + * 预警时间间隔 + * @author syt + * date 2018/09/19 + */ +public enum WarnTimeEnum { + + THREEMONTH("THREEMONTH","三个月",3),SIXMONTH("SIXMONTH","六个月",6), + ONEYEAR("ONEYEAR","一年",12),TWOYEAR("TWOYEAR","两年",24); + + private String value; + private String lable; + private int month; + + private WarnTimeEnum(String value, String lable,int month) { + this.value = value; + this.lable = lable; + this.month = month; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + public int getMonth() { + return month; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/Wrapper.java b/adc-da-slrs/src/main/java/com/adc/da/common/Wrapper.java new file mode 100644 index 00000000..ebf1743f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/Wrapper.java @@ -0,0 +1,94 @@ +package com.adc.da.common; + +import java.io.Serializable; + +public class Wrapper implements Serializable { + private static final long serialVersionUID = 1L; + public static final int SUCCESS_CODE = 200; + public static final String SUCCESS_MESSAGE = "操作成功"; + public static final int ERROR_CODE = 500; + public static final String ERROR_MESSAGE = "内部异常"; + public static final int ILLEGAL_ARGUMENT_CODE_ = 100; + public static final String ILLEGAL_ARGUMENT_MESSAGE = "参数非法"; + private boolean success; + private int code; + private String message; + private T result; + + Wrapper() { + this(200, "操作成功"); + } + + Wrapper(int code, String message) { + this(code, message, (T) null); + } + + Wrapper(int code, String message, T result) { + this.success = true; + this.code(code).message(message).result(result); + } + + private Wrapper code(int code) { + this.setCode(code); + return this; + } + + private Wrapper message(String message) { + this.setMessage(message); + return this; + } + + public Wrapper result(T result) { + this.setResult(result); + return this; + } + + public boolean success() { + return 200 == this.code; + } + + public boolean error() { + return !this.success(); + } + + public boolean isSuccess() { + return this.success; + } + + public int getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } + + public T getResult() { + return this.result; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public void setCode(int code) { + this.code = code; + } + + public void setMessage(String message) { + this.message = message; + } + + public void setResult(T result) { + this.result = result; + } + + protected boolean canEqual(Object other) { + return other instanceof Wrapper; + } + + + public String toString() { + return "Wrapper(success=" + this.isSuccess() + ", code=" + this.getCode() + ", message=" + this.getMessage() + ", result=" + this.getResult() + ")"; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/CreateEsMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateEsMQService.java new file mode 100644 index 00000000..c354eefd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateEsMQService.java @@ -0,0 +1,28 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import net.sf.json.JSONObject; +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Component +public class CreateEsMQService { + @Autowired + private AmqpTemplate rabbitTemplate; + + /** + * + * @param standMap 全文检索存储Map + * @param addOrUpdate + */ + public void sendEsUpdFullMQ(Map standMap, String addOrUpdate){ + standMap.put("addOrUpdate", addOrUpdate); + + //发送消息队列 + this.rabbitTemplate.convertAndSend("esUpdFull-exchange_SQ_GSAR_RELEASE", "esUpdFull-key_SQ_GSAR_RELEASE", standMap); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/CreateMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateMQService.java new file mode 100644 index 00000000..ac3db538 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateMQService.java @@ -0,0 +1,78 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.otConvertMq.dao.OtConvertMqDao; +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.adc.da.util.UUIDUtils; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Component +public class CreateMQService { + @Autowired + private AmqpTemplate rabbitTemplate; + + @Autowired + private OtConvertMqDao otConvertEODao; + /** + * @Author yangxuenan + * @Description 创建消息队列 + * Date 2018/8/24 13:59 + * @Param [convert, convertType] + * @return int + **/ + public void sendMQ(OtConvertMq convert) throws Exception{ + String otId = UUIDUtils.randomUUID20(); + //向OT_CONVERT_EO表中添加/修改数据 + //判断用户是初次发送还是重新发送,初次将添加到数据库,重新发送将修改原数据信息 + convert.setMqState(0); + convert.setModifyTime(new Date()); + if("0".equals(convert.getAddOrUp()) && StringUtils.isEmpty(convert.getId())){ + convert.setId(otId); + convert.setMqCode(convert.getConvertType()); + convert.setCreationTime(new Date()); + convert.setValidFlag(0); + otConvertEODao.insert(convert); + } else { + otConvertEODao.updateById(convert); + } + + //将数据信息保存并发送给消息队列 + Map convertInfo = new HashMap(); + //标准/政策ID + convertInfo.put("lawsId", convert.getLawsId()); + //标准/政策关联的res表ID + convertInfo.put("resId", convert.getResId()); + //文档的ID + convertInfo.put("attId", convert.getAttId()); + //判断当前操作是新增还是修改 + convertInfo.put("addUpFlag", convert.getAddOrUp()); + //资源类型(标准,政策,企标) + convertInfo.put("convertType", convert.getConvertType()); + //文档路径 + convertInfo.put("path", convert.getFilePath()); + convertInfo.put("standFileClassify", convert.getStandFileClassify()); + convertInfo.put("lawsFileClassify", convert.getLawsFileClassify()); + if("0".equals(convert.getAddOrUp())){ + //otId在转换表中数据ID + convertInfo.put("otId", otId); + //在stand_file等资源与文件关联表中转换成功的pdf数据ID + convertInfo.put("standFilePdfId", UUIDUtils.randomUUID20()); + convertInfo.put("againNum",0); + } else { + convertInfo.put("otId", convert.getId()); + convertInfo.put("standFilePdfId", convert.getPdfId()); + convertInfo.put("againNum",convert.getAgainNum()); + } + String body = JSONObject.toJSONString(convertInfo); + //发送消息队列 + this.rabbitTemplate.convertAndSend("convert-exchange_SQ_GSAR_RELEASE", "convert-key_SQ_GSAR_RELEASE", body); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/CreateStandMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateStandMQService.java new file mode 100644 index 00000000..d72f08db --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateStandMQService.java @@ -0,0 +1,60 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import net.sf.json.JSONObject; +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Component +public class CreateStandMQService { + @Autowired + private AmqpTemplate rabbitTemplate; + + /** + * + * @param sarStandardsInfoEO 标准实体 + * @param addOrUpdate + * @throws Exception + */ + public void sendStandMQ(Object sarStandardsInfoEO, String addOrUpdate) throws Exception{ + JSONObject json = JSONObject.fromObject(sarStandardsInfoEO); + String sarStandardsInfoStr = json.toString(); + Map standMap = new HashMap(); + standMap.put("sarStandards", sarStandardsInfoStr); + standMap.put("addOrUpdate", addOrUpdate); + + //发送消息队列 + this.rabbitTemplate.convertAndSend("stand-exchange_SQ_GSAR_RELEASE", "stand-key_SQ_GSAR_RELEASE", standMap); + } + + public void sendLawsMQ(SarLawsStandInfo sarLawsStandInfo, String addOrUpdate) throws Exception{ +// JSONObject json = JSONObject.fromObject(sarLawsStandInfo); + com.alibaba.fastjson.JSONObject object = (com.alibaba.fastjson.JSONObject) com.alibaba.fastjson.JSONObject.toJSON(sarLawsStandInfo); + + String sarLawsInfoStr = object.toString(); + Map lawsMap = new HashMap(); + lawsMap.put("sarLaws", sarLawsInfoStr); + lawsMap.put("addOrUpdate", addOrUpdate); + + //发送消息队列 + this.rabbitTemplate.convertAndSend("laws-exchange_SQ_GSAR_RELEASE", "laws-key_SQ_GSAR_RELEASE", lawsMap); + } + + public void sendBussStandMQ(Object sarBussionessStandEO, String addOrUpdate) throws Exception{ + JSONObject json = JSONObject.fromObject(sarBussionessStandEO); + String sarBussInfoStr = json.toString(); + Map bussMap = new HashMap(); + bussMap.put("sarBuss", sarBussInfoStr); + bussMap.put("addOrUpdate", addOrUpdate); + + //发送消息队列 + this.rabbitTemplate.convertAndSend("buss-exchange_SQ_GSAR_RELEASE", "buss-key_SQ_GSAR_RELEASE", bussMap); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/CreateStandardMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateStandardMQService.java new file mode 100644 index 00000000..305a4bd1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateStandardMQService.java @@ -0,0 +1,34 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.sarStandardsInfo.entity.DSarStandardDTO; +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +@Component +public class CreateStandardMQService { + @Autowired + private AmqpTemplate rabbitTemplate; + + /** + * @Author yuezhihang + * @Description 创建消息队列 + * Date 2018/8/24 13:59 + * @Param [convert, convertType] + * @return int + **/ + public void sendMQ(List changeJJSS, List changeXXYX ){ + Map map=new HashMap<>(); + map.put("changeJJSS",changeJJSS); + map.put("changeXXYX",changeXXYX); +// map.put("map",hashMap); + //发送消息队列 + this.rabbitTemplate.convertAndSend("standard-exchange_updateText_RELEASE", "standard-key_updateText_RELEASE", map); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/CreateUpdateMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateUpdateMQService.java new file mode 100644 index 00000000..23707d42 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/CreateUpdateMQService.java @@ -0,0 +1,35 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Hashtable; +import java.util.List; +import java.util.Map; + + +@Component +public class CreateUpdateMQService { + @Autowired + private AmqpTemplate rabbitTemplate; + + /** + * @Author yuezhihang + * @Description 创建消息队列 + * Date 2018/8/24 13:59 + * @Param [convert, convertType] + * @return int + **/ + public void sendMQ(Hashtable hashtable , List remove , List add){ + Map map=new HashMap<>(); + map.put("tableData",hashtable); + map.put("remove",remove); + map.put("add",add); + //发送消息队列 + this.rabbitTemplate.convertAndSend("qd-update-exchange_SQ_GSAR_RELEASE", "qd-update-key_SQ_GSAR_RELEASE", map); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java new file mode 100644 index 00000000..c3321cf7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/SendBussMQService.java @@ -0,0 +1,316 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.otSvpps.service.IOtSvppsService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.rabbitmq.client.Channel; +import net.sf.json.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.support.AmqpHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class SendBussMQService { + + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private IOtSvppsService otSvppsEOService; + + private static final Logger logger = LoggerFactory.getLogger(SendBussMQService.class); + + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(value = "createBussMQ_SQ_GSAR_RELEASE", durable = "true"), + exchange = @Exchange(value = "buss-exchange_SQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"), + key = "buss-key_SQ_GSAR_RELEASE")) + public void createMQ(Map bussMap, Message message, Channel channel) throws Exception{ + try{ + try{ + Thread.sleep(5000); + insertOrUpdateBussInfo(bussMap); + }catch(InterruptedException e){ + logger.error(e.toString()); + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + logger.error("搜索中心企业标准消息队列进入转换前失败!"); + logger.error(e.getMessage(),e); + } finally { + Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); + channel.basicAck(tag,false); + logger.debug("消息确认成功!!!!!!!!!"); + } + } + + public void insertOrUpdateBussInfo(Map bussMap) throws Exception { + String addOrUpdate = bussMap.get("addOrUpdate").toString(); + String sarBuss = bussMap.get("sarBuss").toString(); + JSONObject jsonobject = JSONObject.fromObject(sarBuss); + SarBussionessStand infoEO = (SarBussionessStand) JSONObject.toBean(jsonobject,SarBussionessStand.class); + String FZRQFSRQ = null; + if ("updateFromAct".equals(addOrUpdate)){ + addOrUpdate = "update"; + FZRQFSRQ = "1"; + } + + String sarStandAttrEOStr = infoEO.getSarStandAttrEOStr(); + Map attrInfoMap = JSONObject.fromObject(sarStandAttrEOStr); + Map infoMap = infoEO.getAttrInfoCaseMap(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + //修改索引信息表 + // 往索引表中插入数据 + String baseSearchContent = ""; + String getCodeName = ""; + Map saveMap = new HashMap<>(); + + //发布日期 高级查询 + saveMap.put("issueTime",dateFormatToStr(infoEO.getIssueTime())); + Date issue_time_data = null; + if (StringUtils.isNotBlank(infoEO.getIssueTime())) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + issue_time_data = format.parse(dateFormatToStr(infoEO.getIssueTime())+" 00:00:00"); + } catch (ParseException ignored) { + } + } + if (issue_time_data != null) { + saveMap.put("issue_time_data",issue_time_data.getTime()); + }else{ + saveMap.put("issue_time_data",-1000000000000000000L); + } + + //实施日期 高级查询 + saveMap.put("putTime",dateFormatToStr(infoEO.getPutTime())); + Date put_time_data = null; + if (StringUtils.isNotBlank(infoEO.getPutTime())) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + put_time_data = format.parse(dateFormatToStr(infoEO.getPutTime())+" 00:00:00"); + } catch (ParseException ignored) { + } + } + if (put_time_data != null) { + saveMap.put("put_time_data",put_time_data.getTime()); + }else{ + saveMap.put("put_time_data",-1000000000000000000L); + } + + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_id","dic_type_code", "dic_type_name","show_index"); + dicInfo = dicInfo.stream().filter(dicTypeEO -> { + if(org.apache.commons.lang3.StringUtils.isNotBlank(dicTypeEO.getDicTypeCode())){ + dicTypeEO.setDicTypeCode(dicTypeEO.getDicTypeCode().replace(" ","")); + return true; + } + return false; + }).collect(Collectors.toList()); + Map dicMap = dicInfo.stream() + .filter(item-> ("2klxdk7fo3tvpvin70dk".equals(item.getDicId()) || "18mg1g4x0rwubcto7fdd".equals(item.getDicId()) || "08rerbsn8ucjfk13z2ci".equals(item.getDicId()) || "pnv0ik979yqogocqujwo".equals(item.getDicId())) && !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getShowIndex,(value1, value2 )->value2)); + + + saveMap.put("id",infoEO.getId()); + saveMap.put("standSortOrder",esStateOrder(String.valueOf(infoEO.getStandSort()),dicMap)); + + saveMap.put("standSort",infoEO.getStandSort()); + saveMap.put("stand_sort",infoEO.getStandSort()); + if(StringUtils.isNotEmpty(infoEO.getStandSort())){ + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandSort(),"JKSADFH564S"); + saveMap.put("standSortShow",codeName); + getCodeName = codeName; + } + saveMap.put("standYear",infoEO.getStandYear()); + saveMap.put("stand_year",infoEO.getStandYear()); + if(jsonobject.get("standNumber") != null){ + saveMap.put("standNumber",jsonobject.get("standNumber")); + }else { + saveMap.put("standNumber",""); + } + + saveMap.put("stand_code",infoEO.getStandCode()); + saveMap = dealNumberMsg(saveMap,infoEO,infoEO.getStandSort()); + saveMap.put("nameshow",infoEO.getStandName()); + saveMap.put("stand_name",infoEO.getStandName()); + saveMap.put("standEnName",infoEO.getStandEnName()); + saveMap.put("stand_en_name",infoEO.getStandEnName()); + saveMap.put("replaceStandNum",infoEO.getReplaceStandNum()); + saveMap.put("replace_stand_num",infoEO.getReplaceStandNum()); + saveMap.put("replacedStandNum",infoEO.getReplacedStandNum()); + saveMap.put("replaced_stand_num",infoEO.getReplacedStandNum()); + saveMap.put("statecode",infoEO.getStandStatus()); + saveMap.put("stand_status",infoEO.getStandStatus()); + if (StringUtils.isNotEmpty(infoEO.getStandStatus())) { + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandStatus(),""); + saveMap.put("standstateshow",codeName); + } + String textStatusBussName = ""; + if(infoEO.getTextStatusBuss() != null && StringUtils.isNotBlank(infoEO.getTextStatusBuss())){ + List valArr = Arrays.asList(infoEO.getTextStatusBuss().split(",")); + textStatusBussName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("textStatusBuss",infoEO.getTextStatusBuss()); + saveMap.put("textStatusBussName",textStatusBussName); + //新加字段 + saveMap.put("country",infoEO.getApplyCountry()); + if(StringUtils.isNotEmpty(infoEO.getApplyCountry())){ + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getApplyCountry(),"RFRFRFSCXVB"); + saveMap.put("countryShow",codeName); + } + // 自定义属性字段 + if (attrInfoMap != null && !attrInfoMap.isEmpty()) { + attrInfoMap = sysInfoEOService.changeSelectInfo(attrInfoMap, "stand",baseSearchContent); + saveMap.putAll(attrInfoMap); + } + + saveMap.put("type","bussstand"); + saveMap.put("validFlag","0"); + saveMap.put("content",infoEO.getFileIds()); + + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + List fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + + // 动态存储属性字段 + for (String field : fieldInfoList) { + saveMap.put(field,attrInfoMap.getOrDefault(field,"")); + String fieldValue = ""; + String fieldFilter = field.toLowerCase(); + if(infoMap.get(fieldFilter) != null && StringUtils.isNotBlank(infoMap.get(fieldFilter).toString())){ + Object json= new JSONTokener(infoMap.get(fieldFilter).toString()).nextValue(); + if(json instanceof org.json.JSONArray){ + fieldValue = String.join(",", com.alibaba.fastjson.JSONObject.parseArray(infoMap.get(fieldFilter).toString(),String.class)); + }else { + if(!("null").equals(json)){ + fieldValue = infoMap.get(fieldFilter).toString(); + } + } + if(fieldValue.contains("null")){ + fieldValue = fieldValue.replace("null",""); + } + } + saveMap.put(field+"Name",fieldValue); + } + + //当建立代替时,产生的没有文件的问题 + if (StringUtils.isBlank(String.valueOf(saveMap.get("content")))) { + String context = filterStringIsNotBlank(String.valueOf(saveMap.get("FBGBUSS")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("BZSMBUSS")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("LSBBBUSS")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("QTWJBUSS")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("GLWJBUSS")),true); + context = context.replace(",,", ","); + saveMap.put("content", context); + } + String numberShow = String.valueOf(saveMap.get("numbershow")); + if (!"null".equals(numberShow) && StringUtils.isNotBlank(numberShow)) { + saveMap.put("titleBig", numberShow.toUpperCase()); + } + if("add".equals(addOrUpdate)){ + sarStandardsInfoService.insertIntoIndexForMap(saveMap); + } else { + sarStandardsInfoService.updateIntoIndexForMap(saveMap); + } + } + + private String esStateOrder(String data, Map dicMap){ + if(StringUtils.isNotBlank(data)){ + data = data.replace(" ",""); + if(dicMap.get(data.trim().toUpperCase()) != null){ + return String.valueOf(dicMap.get(data.trim().toUpperCase())); + }else { + return "99999"; + } + }else { + return "99999"; + } + } + + private String filterStringIsNotBlank(String str,boolean boo){ + String f = ","; + return (str == null || str.equals("") || str.equals("null")) ? "" : (boo ? str+f : str); + } + + private String dateFormatToStr(String dateStr){ + if(dateStr == null || dateStr.equals("")){ + return ""; + } + String dateToStr = ""; + try { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + dateToStr = dateFormat.format(dateFormat.parse(dateStr.trim().substring(0,10))); + }catch (Exception e){ + e.getMessage(); + } + return dateToStr; + } + + public Map dealNumberMsg (Map saveMap,SarBussionessStand infoEO,String getCodeName) { + /*if(StringUtils.isNotEmpty(infoEO.getStandYear())){ + String num = getCodeName + " " + infoEO.getStandCode() + "-" + infoEO.getStandYear(); + saveMap.put("numbershow",num); + int index = infoEO.getStandCode().indexOf("."); + int index1 = infoEO.getStandCode().indexOf(":"); + String numberExpNull = ""; + if(index > -1){ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + num.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandCode().substring(0,index) + "-" + infoEO.getStandCode().substring(0,index); + }else if(index1 > -1){ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + num.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandCode().substring(0,index1) + "-" + infoEO.getStandCode().substring(0,index1); + }else{ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + num.replaceAll(" ",""); + } + } else { + String number = getCodeName + " " + infoEO.getStandCode(); + saveMap.put("numbershow",number); + String numberExpNull = ""; + int index = infoEO.getStandCode().indexOf("."); + if(index > -1){ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + number.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandCode().substring(0,index) + "-" + infoEO.getStandCode().substring(0,index); + }else{ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + number.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + }*/ + String number = infoEO.getStandCode(); + saveMap.put("numbershow",number); + String numberExpNull = ""; + int index = infoEO.getStandCode().indexOf("."); + if(index > -1){ + numberExpNull = infoEO.getStandCode() + "-" + number.replaceAll(" ","") + + "-" + infoEO.getStandCode().substring(0,index) + "-" + infoEO.getStandCode().substring(0,index); + }else{ + numberExpNull = infoEO.getStandCode() + "-" + number.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + return saveMap; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/SendEsUpdFullMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/SendEsUpdFullMQService.java new file mode 100644 index 00000000..bae44239 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/SendEsUpdFullMQService.java @@ -0,0 +1,139 @@ +package com.adc.da.mq; + +import com.adc.da.search.service.StandLawsSearchService; +import com.adc.da.slrs.otSvpps.service.IOtSvppsService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.rabbitmq.client.Channel; +import net.sf.json.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.support.AmqpHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class SendEsUpdFullMQService { + + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private StandLawsSearchService standLawsSearchService; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private DicTypeEODao dicTypeEODao; + + + @Autowired + private IOtSvppsService otSvppsEOService; + + + private static final Logger logger = LoggerFactory.getLogger(SendEsUpdFullMQService.class); + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(value = "CreateEsUpdFullMQ_SQ_GSAR_RELEASE", durable = "true"), + exchange = @Exchange(value = "esUpdFull-exchange_SQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"), + key = "esUpdFull-key_SQ_GSAR_RELEASE")) + public void createMQ(Map standMap, Message message, Channel channel) throws Exception{ + try{ + try{ + Thread.sleep(5000); + insertOrUpdateStandInfo(standMap); + }catch(InterruptedException e){ + logger.error(e.toString()); + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + logger.error("搜索中心-多字段更新-标准消息队列进入添加数据方法前失败!"); + logger.error(e.getMessage(),e); + }finally { + Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); + channel.basicAck(tag,false); + logger.debug("搜索中心-多字段更新-消息确认成功!!!!!!!!!"); + } + + } + + public void insertOrUpdateStandInfo(Map standMap){ + String addOrUpdate = standMap.get("addOrUpdate").toString(); + + if("add".equals(addOrUpdate)){ +// standLawsSearchService.addStandLawsSearchForMap(attrInfoMap); + } else { + standLawsSearchService.updateEsFulltextserch(standMap); + } + } + + private String filterStringIsNotBlank(String str,boolean boo){ + String f = ","; + return (str == null || str.equals("") || str.equals("null")) ? "" : (boo ? str+f : str); + } + + private String dateFormatToStr(String dateStr){ + if(dateStr == null || dateStr.equals("")){ + return ""; + } + String dateToStr = ""; + try { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + dateToStr = dateFormat.format(dateFormat.parse(dateStr.trim().substring(0,10))); + }catch (Exception e){ + e.getMessage(); + } + return dateToStr; + } + + public Map dealNumberMsg (Map saveMap,SarStandardsInfo infoEO,String getCodeName) { + if(StringUtils.isNotEmpty(infoEO.getStandYear())){ + String number = getCodeName + " " + infoEO.getStandNumber() + "-" + infoEO.getStandYear(); + saveMap.put("numbershow",number); + int index = infoEO.getStandNumber().indexOf("."); + int index1 = infoEO.getStandNumber().indexOf(":"); + String numberExpNull = ""; + if(index > -1){ + numberExpNull = (getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index) + "-" + infoEO.getStandNumber().substring(0,index)); + } else if (index1 > -1) { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index1) + "-" + infoEO.getStandNumber().substring(0,index1); + } else { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + } else { + String num = getCodeName + " " + infoEO.getStandNumber(); + saveMap.put("numbershow",num); + int index = infoEO.getStandNumber().indexOf("."); + String numberExpNull = ""; + if(index > -1){ + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + num.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index) + "-" + infoEO.getStandNumber().substring(0,index); + } else { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + num.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + } + return saveMap; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/SendLawsMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/SendLawsMQService.java new file mode 100644 index 00000000..18937562 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/SendLawsMQService.java @@ -0,0 +1,364 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.otSvpps.service.IOtSvppsService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.alibaba.fastjson.JSON; +import com.rabbitmq.client.Channel; +import net.sf.json.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.support.AmqpHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class SendLawsMQService { + + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private DicTypeEODao dicTypeEODao; + + private static final Logger logger = LoggerFactory.getLogger(SendLawsMQService.class); + + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(value = "createLawsMQ_SQ_GSAR_RELEASE", durable = "true"), + exchange = @Exchange(value = "laws-exchange_SQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"), + key = "laws-key_SQ_GSAR_RELEASE")) + public void createMQ(Map bussMap, Message message, Channel channel) throws Exception{ + try{ + try{ + Thread.sleep(5000); + insertOrUpdateBussInfo(bussMap); + }catch(InterruptedException e){ + logger.error(e.toString()); + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + logger.error("搜索中心国内外政策消息队列进入转换前失败!"); + logger.error(e.getMessage(),e); + } finally { + Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); + channel.basicAck(tag,false); + logger.debug("消息确认成功!!!!!!!!!"); + } + } + + public void insertOrUpdateBussInfo(Map bussMap) throws Exception { + String addOrUpdate = bussMap.get("addOrUpdate").toString(); + String sarBuss = bussMap.get("sarLaws").toString(); + JSONObject jsonobject = JSONObject.fromObject(sarBuss); + SarLawsStandInfo infoEO = com.alibaba.fastjson.JSONObject.parseObject(sarBuss,SarLawsStandInfo.class); + + if(infoEO.getMapItems() == null || infoEO.getMapItems().isEmpty()){ + if(jsonobject.get("mapItems") != null){ + infoEO.setMapItems(net.sf.json.JSONObject.fromObject(jsonobject.get("mapItems"))); + } + } +// SarLawsStandInfo infoEO = (SarLawsStandInfo) JSONObject.toBean(jsonobject,SarLawsStandInfo.class); + + String FZRQFSRQ = null; + if ("updateFromAct".equals(addOrUpdate)){ + addOrUpdate = "update"; + FZRQFSRQ = "1"; + } + + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_id","dic_type_code", "dic_type_name","show_index"); + dicInfo = dicInfo.stream().filter(dicTypeEO -> { + if(org.apache.commons.lang3.StringUtils.isNotBlank(dicTypeEO.getDicTypeCode())){ + dicTypeEO.setDicTypeCode(dicTypeEO.getDicTypeCode().replace(" ","")); + return true; + } + return false; + }).collect(Collectors.toList()); + Map dicMap = dicInfo.stream() + .filter(item-> ("2klxdk7fo3tvpvin70dk".equals(item.getDicId()) || "18mg1g4x0rwubcto7fdd".equals(item.getDicId()) || "08rerbsn8ucjfk13z2ci".equals(item.getDicId()) || "pnv0ik979yqogocqujwo".equals(item.getDicId())) && !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getShowIndex,(value1, value2 )->value2)); + + + String sarStandAttrEOStr = infoEO.getSarStandAttrEOStr(); + Map attrInfoMap = JSONObject.fromObject(sarStandAttrEOStr); + Map infoMap = infoEO.getAttrInfoCaseMap(); + Map infoEOMapItems = infoEO.getMapItems(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + //修改索引信息表 + // 往索引表中插入数据 + String baseSearchContent = ""; + String getCodeName = ""; + Map saveMap = new HashMap<>(); + saveMap.put("standType","laws"); + //发布日期 高级查询 + saveMap.put("issueTime",dateFormatToStr(infoEO.getIssueTime())); + Date issue_time_data = null; + if (StringUtils.isNotBlank(infoEO.getIssueTime())) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + issue_time_data = format.parse(dateFormatToStr(infoEO.getIssueTime())+" 00:00:00"); + } catch (ParseException ignored) { + } + } + if (issue_time_data != null) { + saveMap.put("issue_time_data",issue_time_data.getTime()); + }else{ + saveMap.put("issue_time_data",-1000000000000000000L); + } + + //征集意见周期-起始时间 + saveMap.put("commentCycleStart",dateFormatToStr(infoEO.getCommentCycleStart())); + Date commentCycleStart_data = null; + if (StringUtils.isNotBlank(infoEO.getCommentCycleStart())) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + commentCycleStart_data = format.parse(dateFormatToStr(infoEO.getCommentCycleStart())+" 00:00:00"); + } catch (ParseException ignored) { + } + } + if (commentCycleStart_data != null) { + saveMap.put("commentCycleStart_data",commentCycleStart_data.getTime()); + }else{ + saveMap.put("commentCycleStart_data",-1000000000000000000L); + } + + //征集意见周期-结束时间 + saveMap.put("commentCycleEnd",dateFormatToStr(infoEO.getCommentCycleEnd())); + Date commentCycleEnd_data = null; + if (StringUtils.isNotBlank(infoEO.getCommentCycleStart())) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + commentCycleEnd_data = format.parse(dateFormatToStr(infoEO.getCommentCycleStart())+" 00:00:00"); + } catch (ParseException ignored) { + } + } + if (commentCycleEnd_data != null) { + saveMap.put("commentCycleEnd_data",commentCycleEnd_data.getTime()); + }else{ + saveMap.put("commentCycleEnd_data",-1000000000000000000L); + } + + saveMap.put("id",infoEO.getId()); + String lawsTypeName = ""; + if(infoEO.getLawsTextState() != null && StringUtils.isNotBlank(infoEO.getLawsType())){ + List valArr = Arrays.asList(infoEO.getLawsType().split(",")); + lawsTypeName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("standSortOrder",esStateOrder(infoEO.getLawsType(),dicMap)); + saveMap.put("lawsType",infoEO.getLawsType()); + saveMap.put("lawsTypeName",lawsTypeName); + saveMap.put("lawsNumber",infoEO.getLawsNumber()); + saveMap.put("lawsName",infoEO.getLawsName()); + saveMap.put("lawsEnName",infoEO.getLawsEnName()); + saveMap.put("lawsNo",infoEO.getLawsNo()); + saveMap.put("issueCompany",infoEO.getIssueCompany()); + String lawsSyqyName = ""; + if(infoEO.getLawsTextState() != null && StringUtils.isNotBlank(infoEO.getLawsSyqy())){ + List valArr = Arrays.asList(infoEO.getLawsSyqy().split(",")); + lawsSyqyName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("lawsSyqy",infoEO.getLawsSyqy()); + saveMap.put("lawsSyqyName",lawsSyqyName); + String lawsSycxName = ""; + if(infoEO.getLawsTextState() != null && StringUtils.isNotBlank(infoEO.getLawsSycx())){ + List valArr = Arrays.asList(infoEO.getLawsSycx().split(",")); + lawsSycxName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("lawsSycx",infoEO.getLawsSycx()); + saveMap.put("lawsSycxName",lawsSycxName); + String isRelateAccessName = ""; + if(infoEO.getIsRelateAccess() != null && StringUtils.isNotBlank(infoEO.getIsRelateAccess())){ + if(infoEO.getIsRelateAccess().equals("1")){ + isRelateAccessName = "是"; + }else { + isRelateAccessName = "否"; + } + } + saveMap.put("isRelateAccess",infoEO.getIsRelateAccess()); + saveMap.put("isRelateAccessName",isRelateAccessName); + String lawsYearName = ""; + if(infoEO.getLawsTextState() != null && StringUtils.isNotBlank(infoEO.getLawsYear())){ + List valArr = Arrays.asList(infoEO.getLawsYear().split(",")); + lawsYearName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("lawsYear",infoEO.getLawsYear()); + saveMap.put("lawsYearName",lawsYearName); + saveMap.put("lawsNotisyncNum",infoEO.getLawsNotisyncNum()); + saveMap.put("lawsBulletin",infoEO.getLawsBulletin()); + String lawsLabelName = ""; + if(infoEO.getLawsTextState() != null && StringUtils.isNotBlank(infoEO.getLawsLabel())){ + List valArr = Arrays.asList(infoEO.getLawsLabel().split(",")); + lawsLabelName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("lawsLabel",infoEO.getLawsLabel()); + saveMap.put("lawsLabelName",lawsLabelName); + saveMap.put("lawsRemark",infoEO.getLawsRemark()); + String lawsTextStateName = ""; + if(infoEO.getLawsTextState() != null && StringUtils.isNotBlank(infoEO.getLawsTextState())){ + List valArr = Arrays.asList(infoEO.getLawsTextState().split(",")); + lawsTextStateName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("lawsTextState",infoEO.getLawsTextState()); + saveMap.put("lawsTextStateName",lawsTextStateName); + //新加字段 + saveMap.put("country",infoEO.getCountry()); + if(StringUtils.isNotEmpty(infoEO.getCountry())){ + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getCountry(),"RFRFRFSCXVB"); + saveMap.put("countryShow",codeName); + } + // 自定义属性字段 + if (attrInfoMap != null && !attrInfoMap.isEmpty()) { + attrInfoMap = sysInfoEOService.changeSelectInfo(attrInfoMap, "laws",baseSearchContent); + saveMap.putAll(attrInfoMap); + } + + saveMap.put("type","laws"); + saveMap.put("validFlag","0"); + saveMap.put("content",infoEO.getFileIds()); + + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + List fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + + // 动态存储属性字段 + for (String field : fieldInfoList) { + saveMap.put(field,attrInfoMap.getOrDefault(field,"")); + String fieldValue = ""; + String fieldFilter = field.toLowerCase(); + if(infoMap.get(fieldFilter) != null && StringUtils.isNotBlank(infoMap.get(fieldFilter).toString())){ + Object json= new JSONTokener(infoMap.get(fieldFilter).toString()).nextValue(); + if(json instanceof org.json.JSONArray){ + fieldValue = String.join(",", com.alibaba.fastjson.JSONObject.parseArray(infoMap.get(fieldFilter).toString(),String.class)); + }else { + if(!("null").equals(json)){ + fieldValue = infoMap.get(fieldFilter).toString(); + } + } + if(fieldValue.contains("null")){ + fieldValue = fieldValue.replace("null",""); + } + } + saveMap.put(field+"Name",fieldValue); + } + + if(infoEOMapItems != null && !infoEOMapItems.isEmpty()){ + saveMap.put("mapItems",infoEOMapItems); + } + + //当建立代替时,产生的没有文件的问题 + if (StringUtils.isBlank(String.valueOf(saveMap.get("content")))) { + String context = filterStringIsNotBlank(String.valueOf(saveMap.get("ZCWBLAWS")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("GCWBLAWS")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("JDWJLAWS")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("GLWJLAWS")),true); + context = context.replace(",,", ","); + saveMap.put("content", context); + } + String numberShow = String.valueOf(saveMap.get("numbershow")); + if (!"null".equals(numberShow) && StringUtils.isNotBlank(numberShow)) { + saveMap.put("titleBig", numberShow.toUpperCase()); + } + if("add".equals(addOrUpdate)){ + sarStandardsInfoService.insertIntoIndexForMap(saveMap); + } else { + sarStandardsInfoService.updateIntoIndexForMap(saveMap); + } + } + + private String esStateOrder(String data, Map dicMap){ + if(StringUtils.isNotBlank(data)){ + data = data.replace(" ",""); + if(dicMap.get(data.trim().toUpperCase()) != null){ + return String.valueOf(dicMap.get(data.trim().toUpperCase())); + }else { + return "99999"; + } + }else { + return "99999"; + } + } + + private String filterStringIsNotBlank(String str,boolean boo){ + String f = ","; + return (str == null || str.equals("") || str.equals("null")) ? "" : (boo ? str+f : str); + } + + private String dateFormatToStr(String dateStr){ + if(dateStr == null || dateStr.equals("")){ + return ""; + } + String dateToStr = ""; + try { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + dateToStr = dateFormat.format(dateFormat.parse(dateStr.trim().substring(0,10))); + }catch (Exception e){ + e.getMessage(); + } + return dateToStr; + } + + public Map dealNumberMsg (Map saveMap,SarBussionessStand infoEO,String getCodeName) { + /*if(StringUtils.isNotEmpty(infoEO.getStandYear())){ + String num = getCodeName + " " + infoEO.getStandCode() + "-" + infoEO.getStandYear(); + saveMap.put("numbershow",num); + int index = infoEO.getStandCode().indexOf("."); + int index1 = infoEO.getStandCode().indexOf(":"); + String numberExpNull = ""; + if(index > -1){ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + num.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandCode().substring(0,index) + "-" + infoEO.getStandCode().substring(0,index); + }else if(index1 > -1){ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + num.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandCode().substring(0,index1) + "-" + infoEO.getStandCode().substring(0,index1); + }else{ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + num.replaceAll(" ",""); + } + } else { + String number = getCodeName + " " + infoEO.getStandCode(); + saveMap.put("numbershow",number); + String numberExpNull = ""; + int index = infoEO.getStandCode().indexOf("."); + if(index > -1){ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + number.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandCode().substring(0,index) + "-" + infoEO.getStandCode().substring(0,index); + }else{ + numberExpNull = getCodeName + infoEO.getStandCode() + "-" + number.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + }*/ + String number = infoEO.getStandCode(); + saveMap.put("numbershow",number); + String numberExpNull = ""; + int index = infoEO.getStandCode().indexOf("."); + if(index > -1){ + numberExpNull = infoEO.getStandCode() + "-" + number.replaceAll(" ","") + + "-" + infoEO.getStandCode().substring(0,index) + "-" + infoEO.getStandCode().substring(0,index); + }else{ + numberExpNull = infoEO.getStandCode() + "-" + number.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + return saveMap; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/SendQdUpdateMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/SendQdUpdateMQService.java new file mode 100644 index 00000000..9cc9c3d3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/SendQdUpdateMQService.java @@ -0,0 +1,291 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.sarLawsAttrInfo.service.ISarLawsAttrInfoService; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.service.ISarLawsStandInfoService; +import com.adc.da.slrs.sarStandAttrInfo.service.ISarStandAttrInfoService; +import com.adc.da.slrs.sarStandardsInfo.entity.DSarStandardDTO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.sys.service.IDicTypeEOService; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.rabbitmq.client.Channel; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.support.AmqpHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; + +import java.util.*; + +@Component +public class SendQdUpdateMQService { + + @Autowired + private ISarStandAttrInfoService iSarStandAttrInfoService; + + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private ISarLawsStandInfoService lawsStandInfoService; + + @Autowired + private ISarLawsAttrInfoService lawsAttrInfoService; + + + //查询数据字典 + @Autowired + private IDicTypeEOService dicTypeEOService; + + + private static final Logger logger = LoggerFactory.getLogger(SendQdUpdateMQService.class); + + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(value = "createQdUpdateMQ_SQ_GSAR_RELEASE", durable = "true"), + exchange = @Exchange(value = "qd-update-exchange_SQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"), + key = "qd-update-key_SQ_GSAR_RELEASE")) + public void createMQ(Map bussMap, Message message, Channel channel) throws Exception { + + try { + //数据字典数据组装 + Map dicTypeEO = dicTypeEOService.getDicTypeListCode(); + Map dict = new HashMap<>(); + List> arr = (List>) dicTypeEO.get("SYRZCLASS"); + arr.forEach(stringStringMap -> { + dict.put(stringStringMap.get("label"), stringStringMap.get("value")); + }); + + + //写修改逻辑 + Thread.sleep(5000); + Hashtable tool = (Hashtable) bussMap.get("tableData"); + List remove = (List) bussMap.get("remove"); + List add = (List) bussMap.get("add"); + remove.forEach(s -> { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("ID", s); + List infos = sarStandardsInfoService.list(wrapper); + if (null != infos && infos.size() > 0) { + SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); + sarStandardsInfo.setId(s); + sarStandardsInfo.setIsRelateAccess("2"); + sarStandardsInfo.setModifyTime(new Date()); + Map bussAttrInfoMap = iSarStandAttrInfoService.getBussAttrInfo(s); + + if (bussAttrInfoMap != null) { + StringBuilder stringBuilder = new StringBuilder(); + if (null != tool.get(s)) { + if (tool.get(s).contains(",")) { + for (String e : tool.get(s).split(",")) { + stringBuilder.append(dict.get(e) + ","); + } + } else { + stringBuilder.append(dict.get(tool.get(s)) + ","); + } + bussAttrInfoMap.put("SYRZ", stringBuilder.toString().substring(0, stringBuilder.length() - 1)); + } else { + bussAttrInfoMap.put("SYRZ", ""); + } + } + sarStandardsInfo.setSarStandAttrEOStr(JSONObject.toJSONString(bussAttrInfoMap)); + try { + sarStandardsInfoService.updateSarStandardsInfo(sarStandardsInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("ID", s); + List infos1 = lawsStandInfoService.list(wrapper1); + if (null != infos1 && infos1.size() > 0) { + SarLawsStandInfo sarLawsStandInfo = new SarLawsStandInfo(); + sarLawsStandInfo.setId(s); + sarLawsStandInfo.setIsRelateAccess("2"); + sarLawsStandInfo.setModifyTime(new Date()); + Map bussAttrInfoMap = lawsAttrInfoService.getBussAttrInfo(s); + if (bussAttrInfoMap != null) { + StringBuilder stringBuilder = new StringBuilder(); + if (null != tool.get(s)) { + if (tool.get(s).contains(",")) { + for (String e : tool.get(s).split(",")) { + stringBuilder.append(dict.get(e) + ","); + } + } else { + stringBuilder.append(dict.get(tool.get(s)) + ","); + } + } else { + bussAttrInfoMap.put("SYRZ", ""); + } + bussAttrInfoMap.put("SYRZ", stringBuilder.toString().substring(0, stringBuilder.length() - 1)); + sarLawsStandInfo.setSarStandAttrEOStr(JSONObject.toJSONString(bussAttrInfoMap)); + try { + lawsStandInfoService.updateSarLawsStandInfo(sarLawsStandInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }); + + add.forEach(s -> { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("ID", s); + List infos = sarStandardsInfoService.list(wrapper); + if (null != infos && infos.size() > 0) { + SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); + sarStandardsInfo.setId(s); + sarStandardsInfo.setIsRelateAccess("1"); + sarStandardsInfo.setModifyTime(new Date()); + Map bussAttrInfoMap = iSarStandAttrInfoService.getBussAttrInfo(s); + if (bussAttrInfoMap != null) { + StringBuilder stringBuilder = new StringBuilder(); + if (null != tool.get(s)) { + if (tool.get(s).contains(",")) { + for (String e : tool.get(s).split(",")) { + stringBuilder.append(dict.get(e) + ","); + } + } else { + stringBuilder.append(dict.get(tool.get(s)) + ","); + } + bussAttrInfoMap.put("SYRZ", stringBuilder.toString().substring(0, stringBuilder.length() - 1)); + } else { + bussAttrInfoMap.put("SYRZ", ""); + } + sarStandardsInfo.setSarStandAttrEOStr(JSONObject.toJSONString(bussAttrInfoMap)); + try { + sarStandardsInfoService.updateSarStandardsInfo(sarStandardsInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper.eq("ID", s); + List infos1 = lawsStandInfoService.list(wrapper1); + if (null != infos1 && infos1.size() > 0) { + SarLawsStandInfo sarLawsStandInfo = new SarLawsStandInfo(); + sarLawsStandInfo.setId(s); + sarLawsStandInfo.setIsRelateAccess("1"); + sarLawsStandInfo.setModifyTime(new Date()); + Map bussAttrInfoMap = lawsAttrInfoService.getBussAttrInfo(s); + if (bussAttrInfoMap != null) { + StringBuilder stringBuilder = new StringBuilder(); + if (null != tool.get(s)) { + if (tool.get(s).contains(",")) { + for (String e : tool.get(s).split(",")) { + stringBuilder.append(dict.get(e) + ","); + } + } else { + stringBuilder.append(dict.get(tool.get(s)) + ","); + } + bussAttrInfoMap.put("SYRZ", stringBuilder.toString().substring(0, stringBuilder.length() - 1)); + } else { + bussAttrInfoMap.put("SYRZ", ""); + } + sarLawsStandInfo.setSarStandAttrEOStr(JSONObject.toJSONString(bussAttrInfoMap)); + try { + lawsStandInfoService.updateSarLawsStandInfo(sarLawsStandInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }); + }catch(Exception e){ + logger.error(e.getMessage()); + }finally { + Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); + channel.basicAck(tag,false); + logger.debug("消息确认成功!!!!!!!!!"); + } + + + } + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(value = "createMQ_Standard_updateText_RELEASE", durable = "true"), + exchange = @Exchange(value = "standard-exchange_updateText_RELEASE", ignoreDeclarationExceptions = "true"), + key = "standard-key_updateText_RELEASE")) + public void createStandardMQ(Map bussMap, Message message, Channel channel) throws Exception { + + try { + //数据字典数据组装 + //数据字典数据组装 + Map dicTypeEO = dicTypeEOService.getDicTypeListCode(); + Map map = new HashMap<>(); + List> arr = (List>) dicTypeEO.get("WBZTCLASS"); + arr.forEach(stringStringMap -> { + map.put(stringStringMap.get("label"), stringStringMap.get("value")); + }); + + + List changeJJSS = (List) bussMap.get("changeJJSS"); + List changeXXYX = (List) bussMap.get("changeXXYX"); + + + //写修改逻辑 + Thread.sleep(5000); + for (DSarStandardDTO jjss : changeJJSS) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("ID", jjss.getId()); + List infos = sarStandardsInfoService.list(wrapper); + if (null != infos && infos.size() > 0) { + SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); + sarStandardsInfo.setId(jjss.getId()); + sarStandardsInfo.setModifyTime(new Date()); + sarStandardsInfo.setTextStatus(map.get("即将实施")); + Map bussAttrInfoMap = iSarStandAttrInfoService.getBussAttrInfo(jjss.getId()); + if (bussAttrInfoMap != null) { + sarStandardsInfo.setSarStandAttrEOStr(JSONObject.toJSONString(bussAttrInfoMap)); + } + try { + + sarStandardsInfoService.updateSarStandardsInfo(sarStandardsInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + for (DSarStandardDTO jjss : changeXXYX) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("ID", jjss.getId()); + List infos = sarStandardsInfoService.list(wrapper); + if (null != infos && infos.size() > 0) { + SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); + sarStandardsInfo.setId(jjss.getId()); + sarStandardsInfo.setModifyTime(new Date()); + sarStandardsInfo.setTextStatus(map.get("现行有效")); + Map bussAttrInfoMap = iSarStandAttrInfoService.getBussAttrInfo(jjss.getId()); + if (bussAttrInfoMap != null) { + sarStandardsInfo.setSarStandAttrEOStr(JSONObject.toJSONString(bussAttrInfoMap)); + } + try { + sarStandardsInfoService.updateSarStandardsInfo(sarStandardsInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }catch(Exception e){ + logger.error(e.getMessage()); + }finally { + Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); + channel.basicAck(tag,false); + logger.debug("消息确认成功!!!!!!!!!"); + } + + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/SendStandMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/SendStandMQService.java new file mode 100644 index 00000000..8c881c6c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/SendStandMQService.java @@ -0,0 +1,381 @@ +package com.adc.da.mq; + +import com.adc.da.slrs.otSvpps.service.IOtSvppsService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.Utils; +import com.rabbitmq.client.Channel; +import net.sf.json.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.support.AmqpHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class SendStandMQService { + + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private DicTypeEODao dicTypeEODao; + + + @Autowired + private IOtSvppsService otSvppsEOService; + + + private static final Logger logger = LoggerFactory.getLogger(SendStandMQService.class); + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(value = "createStandMQ_SQ_GSAR_RELEASE", durable = "true"), + exchange = @Exchange(value = "stand-exchange_SQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"), + key = "stand-key_SQ_GSAR_RELEASE")) + public void createMQ(Map standMap, Message message, Channel channel) throws Exception{ + try{ + try{ + Thread.sleep(5000); + insertOrUpdateStandInfo(standMap); + }catch(InterruptedException e){ + logger.error(e.toString()); + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + logger.error("搜索中心标准消息队列进入添加数据方法前失败!"); + logger.error(e.getMessage(),e); + }finally { + Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); + channel.basicAck(tag,false); + logger.debug("消息确认成功!!!!!!!!!"); + } + + } + + public void insertOrUpdateStandInfo(Map standMap){ + String addOrUpdate = standMap.get("addOrUpdate").toString(); + String sarStandards = standMap.get("sarStandards").toString(); + JSONObject jsonobject = JSONObject.fromObject(sarStandards); + SarStandardsInfo infoEO = (SarStandardsInfo) JSONObject.toBean(jsonobject,SarStandardsInfo.class); + if(infoEO.getMapItems() == null || infoEO.getMapItems().isEmpty()){ + if(jsonobject.get("mapItems") != null){ + infoEO.setMapItems(net.sf.json.JSONObject.fromObject(jsonobject.get("mapItems"))); + } + } + String sarStandAttrEOStr = infoEO.getSarStandAttrEOStr(); + Map attrInfoMap = new TreeMap<>(); + Map attrInfoMapForAuth = new TreeMap<>(); + if(StringUtils.isNotBlank(sarStandAttrEOStr)){ + attrInfoMap = JSONObject.fromObject(sarStandAttrEOStr); + attrInfoMapForAuth.putAll(attrInfoMap); + } + Map infoMap = infoEO.getAttrInfoMap(); + Map infoEOMapItems = infoEO.getMapItems(); + + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_id","dic_type_code", "dic_type_name","show_index"); + dicInfo = dicInfo.stream().filter(dicTypeEO -> { + if(org.apache.commons.lang3.StringUtils.isNotBlank(dicTypeEO.getDicTypeCode())){ + dicTypeEO.setDicTypeCode(dicTypeEO.getDicTypeCode().replace(" ","")); + return true; + } + return false; + }).collect(Collectors.toList()); + Map dicMap = dicInfo.stream() + .filter(item-> ("2klxdk7fo3tvpvin70dk".equals(item.getDicId()) || "18mg1g4x0rwubcto7fdd".equals(item.getDicId()) || "08rerbsn8ucjfk13z2ci".equals(item.getDicId()) || "pnv0ik979yqogocqujwo".equals(item.getDicId())) && !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getShowIndex,(value1, value2 )->value2)); + + + // 往索引表中插入数据 + String getCodeName = ""; + Map saveMap = new HashMap<>(); + String baseSearchContent = ""; + // 开始存放数据 -------- 国内外标准 ----------- + saveMap.put("id",infoEO.getId()); + saveMap.put("BYYBJ", attrInfoMap.getOrDefault("BYYBJ", "")); + saveMap.put("BDTBH", attrInfoMap.getOrDefault("BDTBH", "")); + saveMap.put("country",infoEO.getCountry()); + + if (StringUtils.isNotEmpty(infoEO.getCountry())) { + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getCountry(),"RFRFRFSCXVB"); + saveMap.put("countryShow",codeName); + } + saveMap.put("standSortOrder",esStateOrder(String.valueOf(infoEO.getStandSort()),dicMap)); + saveMap.put("standSort",infoEO.getStandSort()); + saveMap.put("stand_sort",infoEO.getStandSort()); + if (StringUtils.isNotEmpty(infoEO.getStandSort())) { + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandSort(),"JKSADFH564S"); + saveMap.put("standSortShow",codeName); + getCodeName = codeName; + } + saveMap.put("standNumber",infoEO.getStandNumber()); + saveMap.put("stand_number",infoEO.getStandNumber()); + saveMap = dealNumberMsg(saveMap,infoEO,infoEO.getStandSort()); + saveMap.put("standYear",infoEO.getStandYear()); + saveMap.put("stand_year",infoEO.getStandYear()); + saveMap.put("nameshow",infoEO.getStandName()); + saveMap.put("stand_name",infoEO.getStandName()); + saveMap.put("standName",infoEO.getStandName()); + saveMap.put("standEnName",infoEO.getStandEnName()); + saveMap.put("stand_en_name",infoEO.getStandEnName()); + + if (StringUtils.isNotEmpty(infoEO.getStandState())) { + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandState(),""); + saveMap.put("standstateshow",codeName); + } + saveMap.put("issueTime",dateFormatToStr(infoEO.getIssueTime())); + Date issue_time_data = null; + if (StringUtils.isNotBlank(infoEO.getIssueTime())) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + issue_time_data = format.parse(dateFormatToStr(infoEO.getIssueTime())+" 00:00:00"); + } catch (ParseException ignored) { + } + } + if (issue_time_data != null) { + saveMap.put("issue_time_data",issue_time_data.getTime()); + }else{ + saveMap.put("issue_time_data",-1000000000000000000L); + } + String standNatureName = ""; + if(infoEO.getStandNature() != null && StringUtils.isNotBlank(infoEO.getStandNature())){ + List valArr = Arrays.asList(infoEO.getStandNature().split(",")); + standNatureName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("standNature",infoEO.getStandNature()); + saveMap.put("standNatureName",standNatureName); + saveMap.put("synopsis",infoEO.getSynopsis()); + saveMap.put("standType",infoEO.getStandType()); + String textStatusName = ""; + if(infoEO.getTextStatus() != null && StringUtils.isNotBlank(infoEO.getTextStatus())){ + List valArr = Arrays.asList(infoEO.getTextStatus().split(",")); + textStatusName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + saveMap.put("textStatus",infoEO.getTextStatus()); + saveMap.put("textStatusName",textStatusName); + String isRelateAccessName = ""; + if(infoEO.getIsRelateAccess() != null && StringUtils.isNotBlank(infoEO.getIsRelateAccess())){ + if(infoEO.getIsRelateAccess().equals("1")){ + isRelateAccessName = "是"; + }else { + isRelateAccessName = "否"; + } + } + saveMap.put("isRelateAccess",infoEO.getIsRelateAccess()); + saveMap.put("isRelateAccessName",isRelateAccessName); + saveMap.put("standSystem",infoEO.getStandSystem()); + + // 自定义属性字段 + if (attrInfoMap != null && !attrInfoMap.isEmpty()) { + attrInfoMap = sysInfoEOService.changeSelectInfo(attrInfoMap, "stand",baseSearchContent); + saveMap.putAll(attrInfoMap); + } + saveMap.put("baseSearchContent",baseSearchContent); + saveMap.put("type","stand"); + saveMap.put("validFlag","0"); + saveMap.put("content",infoEO.getFileIds()); + saveMap.put("CHJL",infoEO.getCHJL()); + + String fieldInfo = InitStandAttrUtil.queryField; + List fieldInfoList = Arrays.asList(fieldInfo .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + + // 动态存储属性字段 + for (String field : fieldInfoList) { + String fieldValue = ""; + try { + saveMap.put(field,attrInfoMap.getOrDefault(field,"")); + if(infoMap.get(field) != null && StringUtils.isNotBlank(infoMap.get(field).toString())){ + Object json= new JSONTokener(infoMap.get(field).toString()).nextValue(); + if(json instanceof org.json.JSONArray){ + fieldValue = String.join(",", com.alibaba.fastjson.JSONObject.parseArray(infoMap.get(field).toString(),String.class)); + }else { + if(!("null").equals(json)){ + fieldValue = infoMap.get(field).toString(); + } + } + if(fieldValue.contains("null")){ + fieldValue = fieldValue.replace("null",""); + } + } + saveMap.put(field+"Name",fieldValue); + }catch (Exception e){ + logger.info("国内外标准 消息队列: "+addOrUpdate+", 标准ID:"+infoEO.getId()+",问题字段:"+field); + logger.error(e.getMessage(),e); + saveMap.put(field+"Name",fieldValue); + } + + } + + if(infoEOMapItems != null && !infoEOMapItems.isEmpty()){ + saveMap.put("mapItems",infoEOMapItems); + } + + + //当建立代替时,产生的没有文件的问题 + if (StringUtils.isBlank(String.valueOf(saveMap.get("content")))) { + List list = new ArrayList<>(); + + String context = filterStringIsNotBlank(String.valueOf(saveMap.get("FBGBJBD")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("XXZLXX")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("ZQYJG")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("BPG")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("CA")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("SSG")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("JDWJ")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("XGD")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("KWJ")),true) + + filterStringIsNotBlank(String.valueOf(saveMap.get("ZBJBD")),false); + context = context.replace(",,", ","); + saveMap.put("content", context); + } + +// 如果出现提示查询报错,而且提示 查询内容无法转换为 日期格式的 情况,原因可能是没有把日期转换为字符串,可以考虑放开下面的代码(目前,域内没有报错,但是,本地有问题) +// //部分字段没有转为汉字,在此处转为汉字 +// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("XCXSSRQName")))) { +// saveMap.put("XCXSSRQName"," " + String.valueOf(saveMap.get("XCXSSRQName"))); +// } +// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("ZCCSSRQName")))) { +// saveMap.put("ZCCSSRQName"," " + String.valueOf(saveMap.get("ZCCSSRQName"))); +// } +// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("SSRQName")))) { +// saveMap.put("SSRQName"," " + String.valueOf(saveMap.get("SSRQName"))); +// } +// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("issueTime")))) { +// saveMap.put("issueTime"," " + String.valueOf(saveMap.get("issueTime"))); +// } +// if(StringUtils.isNotBlank(String.valueOf(saveMap.get("ZCCSSRQ")))) { +// saveMap.put("ZCCSSRQ"," " + String.valueOf(saveMap.get("ZCCSSRQ"))); +// } + String numberShow = String.valueOf(saveMap.get("numbershow")); + if (!"null".equals(numberShow) && StringUtils.isNotBlank(numberShow)) { + saveMap.put("numberShowBig", numberShow.toUpperCase()); + } + String nameshow = String.valueOf(saveMap.get("nameshow")); + if (!"null".equals(nameshow) && StringUtils.isNotBlank(nameshow)) { + saveMap.put("nameshowBig", nameshow.toUpperCase()); + } + String standEnName = String.valueOf(saveMap.get("standEnName")); + if (!"null".equals(standEnName) && StringUtils.isNotBlank(standEnName)) { + saveMap.put("standEnNameBig", standEnName.toUpperCase()); + } + if ("1".equals(attrInfoMapForAuth.get("updateAuth"))) { + Map getAttrMap = new TreeMap<>(attrInfoMapForAuth); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { + if (StringUtils.isNotBlank(entry.getValue().toString())) { + Object json = null; + if (Utils.isJson(entry.getValue().toString())) { + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if (json instanceof org.json.JSONArray) { + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(), String.class); + } else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if (!valArr.isEmpty()) { + value = dicTypeEODao.getDicNamesByCodes(valArr, ""); + } + } + saveMap.put(name + "Name",value); + } + } + } + } + if("add".equals(addOrUpdate)){ + sarStandardsInfoService.insertIntoIndexForMap(saveMap); + } else { + sarStandardsInfoService.updateIntoIndexForMap(saveMap); + } + } + + private String esStateOrder(String data, Map dicMap){ + if(StringUtils.isNotBlank(data)){ + data = data.replace(" ",""); + if(dicMap.get(data.trim().toUpperCase()) != null){ + return String.valueOf(dicMap.get(data.trim().toUpperCase())); + }else { + return "99999"; + } + }else { + return "99999"; + } + } + + private String filterStringIsNotBlank(String str,boolean boo){ + String f = ","; + return (str == null || str.equals("") || str.equals("null")) ? "" : (boo ? str+f : str); + } + + private String dateFormatToStr(String dateStr){ + if(dateStr == null || dateStr.equals("")){ + return ""; + } + String dateToStr = ""; + try { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + dateToStr = dateFormat.format(dateFormat.parse(dateStr.trim().substring(0,10))); + }catch (Exception e){ + e.getMessage(); + } + return dateToStr; + } + + public Map dealNumberMsg (Map saveMap,SarStandardsInfo infoEO,String getCodeName) { + if(StringUtils.isNotEmpty(infoEO.getStandYear())){ + String number = getCodeName + " " + infoEO.getStandNumber() + "-" + infoEO.getStandYear(); + saveMap.put("numbershow",number); + int index = infoEO.getStandNumber().indexOf("."); + int index1 = infoEO.getStandNumber().indexOf(":"); + String numberExpNull = ""; + if(index > -1){ + numberExpNull = (getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index) + "-" + infoEO.getStandNumber().substring(0,index)); + } else if (index1 > -1) { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index1) + "-" + infoEO.getStandNumber().substring(0,index1); + } else { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + } else { + String num = getCodeName + " " + infoEO.getStandNumber(); + saveMap.put("numbershow",num); + int index = infoEO.getStandNumber().indexOf("."); + String numberExpNull = ""; + if(index > -1){ + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + num.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index) + "-" + infoEO.getStandNumber().substring(0,index); + } else { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + num.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + } + return saveMap; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/CheckEncryFileJob.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/CheckEncryFileJob.java new file mode 100644 index 00000000..8b51559d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/CheckEncryFileJob.java @@ -0,0 +1,34 @@ +package com.adc.da.scheduled; + + +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Component; + +@EnableScheduling +@Component +@Slf4j +public class CheckEncryFileJob { + + @Autowired + ISarBussionessStandService iSarBussionessStandService; + + @Autowired + ISarStandardsInfoService iSarStandardsInfoService; + + @Async + public void asyncCheckBussStandEncryptFile(){ + iSarBussionessStandService.checkFileByEncrypt(); + } + + + @Async + public void asyncCheckStandEncryptFile(){ + iSarStandardsInfoService.checkFileByEncrypt(); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJob.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJob.java new file mode 100644 index 00000000..dfcf4f39 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJob.java @@ -0,0 +1,617 @@ +package com.adc.da.scheduled; + +import com.adc.da.mq.CreateStandardMQService; +import com.adc.da.scheduled.dao.SarStandardInfoDao; +import com.adc.da.scheduled.dao.SarStandardItemDao; +import com.adc.da.scheduled.dao.SarStandardWarningDao; +import com.adc.da.scheduled.entity.TermDTO; + +import com.adc.da.slrs.processModel.utils.TrainFormDate; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; + +import com.adc.da.slrs.sarStandWarning.entity.EarlyWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.WarningDate; +import com.adc.da.slrs.sarStandWarning.service.IWarningDateService; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.DSarStandardDTO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +@EnableScheduling +@Component +@Slf4j +public class ScheduledJob { + + /** + * 根据配置文件设置是否开启定时器 + */ + + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + + @Autowired + private SarStandardInfoDao sarStandardInfoDao; //标准信息表 + + @Autowired + private SarStandardsInfoDao sarStandardsInfoDao;//标准信息表 + + @Autowired + private SarStandardWarningDao sarStandardWarningDao;//预警表 + + @Autowired + private SarStandardItemDao sarStandardItemDao; //分解单表 + + @Autowired + private SarStandAttrInfoDao sarStandAttrInfoDao; //属性字段表 + + @Autowired + private IWarningDateService iWarningDateService;// 预警日期 + + @Autowired + CreateStandardMQService createStandardMQService; + + @Autowired + private IDicTypeEOService dicTypeEOService; + + // @PostConstruct //程序启动时执行一次 +// @Scheduled(cron = "0 0 0 * * ?") //每天的凌晨0点执行 +// @Scheduled(cron="*/5 * * * * ?") +// @Scheduled(fixedDelay = 120000) + @Async + public void warningSchedulingTasks() { + Logger logger = LoggerFactory.getLogger(ScheduledJob.class); + + /** + * 1.查询标准属性字段表(sar_stand_attr_info) XCXSSEQ ZCCSSRQ ZRGCS + * 联接标准信息表sar_standards_info表的STAND_NAME + * 2.查询分解单(条款表) + * 3.查询预警表 + * 4.去掉预警表中已存在的的数据 + * 5.插入预警表 + */ + + /** + mark:标识预警的种类 + 3:新车标准预警 + 4:在产车标准预警 + 1:新车条款预警 + 2:在产车条款预警 + + 2021/12/1 日需求修改 + 分为标准预警与条款预警 + mark:标识预警的种类 stand 标准 item 条款 + */ + + +// Runnable runnable = () -> { +// try { +// Thread.sleep(60000); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// }; +// +// runnable.run(); + + logger.info("========================================================================================================="); + logger.info("========================================================================================================="); + + logger.info("开始执行预警!!!"); + logger.info("========================================================================================================"); + logger.info("========================================================================================================"); + //删除不在预警范围的标准 +// int remove = sarStandardWarningDao.autoCancelWarning(); + int remove = sarStandardWarningDao.delete(null); + log.info("开始修整"+new Date()+"!"); + try { + Thread.sleep(20000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + log.info("结束修整"+new Date()+"!"); + logger.info("取消" + remove + "条预警"); + + //预警期限(当前日期至3个月后) + TermDTO term = new TermDTO(); + //查询符合预警期限的标准 多个 + List warningDateList = sarStandardWarningDao.getWarningDate(term); + + ArrayList data = new ArrayList<>(); + warningDateList.forEach(item -> { + + for (String s : item.getSSRQ().split(",")) { + + String pattern = term.getTermStr(); + + Pattern r = Pattern.compile(pattern); + Matcher m = r.matcher(s); + //判断是否是日期格式 + if (m.matches()) { + WarningDate warningDate = new WarningDate(); + BeanUtils.copyProperties(item, warningDate); + warningDate.setId(UUIDUtils.randomUUID20()); + warningDate.setSSRQ(s); + warningDate.setType("0"); + data.add(warningDate); + } + } + }); + //此处开始处理条款中的预警数据 + //查询符合预警期限的标准 多个 + List warningDateOfItems = sarStandardWarningDao.getWarningDateOfItems(term); + //第二步便利相同的 +// List second = sarStandardWarningDao.getWarningDateOfItems(term); + Map> standMap = new HashMap<>(); + warningDateOfItems.forEach(item -> { + for (String s : item.getSSRQ().split(",")) { +// String id = item.getLawId(); +// if (id.equals("vgh0j186ve7uhxjelctt")){ +// System.out.println(id); +// } +// System.out.println(id); + String pattern = term.getTermStr(); + Pattern r = Pattern.compile(pattern); + Matcher m = r.matcher(s); + //判断是否是日期格式 + if (m.matches()) { + //此处判断当前条款的数据是否是最新状态的 + String lawsId = item.getLawId(); +// String fileType =item.getFileType(); +// String textState = sarStandardWarningDao.getStandTextStateByStandId(lawsId); + List warningDates = null; + if(standMap.containsKey(lawsId)){ + warningDates = standMap.get(lawsId); + }else{ + warningDates=new ArrayList<>(); + } + WarningDate warningDate = new WarningDate(); + BeanUtils.copyProperties(item, warningDate); + warningDate.setId(UUIDUtils.randomUUID20()); + warningDate.setSSRQ(s); + warningDate.setType("1"); + warningDates.add(warningDate); + standMap.put(lawsId,warningDates); + } + } + }); + for (String lawId : standMap.keySet()){ + List warningDates = standMap.get(lawId); + List warningDateSend = compareState(warningDates); + if (null != warningDateSend) { + data.addAll(warningDateSend); + } + } + + //清空标准的日期子表 + iWarningDateService.remove(null); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 保存进入标准的日期子表 保存标准的实施日期 新车型实施日期 在产车实施日期 多个 + iWarningDateService.saveBatch(data); + //联接标准的日期子表 和分解单表 查询符合预警期限的标准和分解项 + List warningList = sarStandardWarningDao.getWarningId(term); + + warningList.forEach(item -> { + item.setId(UUIDUtils.randomUUID20()); + }); + //持久化至预警表 忽略标准id和标志位都一样的数据 + if (warningList.size() != 0) { + //此表的STAND_ID和MARK字段以及ITEMS_ID字段需个建立唯一性约束 + int count = sarStandardWarningDao.ignoreInsert(warningList); + logger.info("==================================预警结束======================================"); + logger.info("==================================预警结束======================================"); + logger.info("已预警" + count + "条标准或条款!!"); + logger.info("==================================预警结束======================================"); + logger.info("==================================预警结束======================================"); + + } + } + + private List compareState(List warningDates){ + List ca = new ArrayList<>(); + List zqyjg = new ArrayList<>(); + List bpg = new ArrayList<>(); + List ssg = new ArrayList<>(); + List fbgbjbd = new ArrayList<>(); + for (WarningDate warningDate :warningDates){ + if (null == warningDate.getFileType()){ + warningDate.setFileType(""); + } + switch (warningDate.getFileType()){ + case "CA"://草稿 + ca.add(warningDate); +// fileType="CA"; + break; + case "ZQYJG"://征求意见稿 + zqyjg.add(warningDate); +// fileType="ZQYJG"; + break; + case "BPG"://报批稿 + bpg.add(warningDate); +// fileType="BPG"; + break; + case "SSG"://送审稿 + ssg.add(warningDate); +// fileType="SSG"; + break; + case "FBGBJBD"://发布稿 + fbgbjbd.add(warningDate); +// fileType="FBGBJBD"; + break; +// case "vsaga7nwub"://已实施 +// fbgbjbd.add(warningDate); +//// fileType="FBGBJBD"; +// break; + default: + break; + } + } + if (!CollectionUtils.isEmpty(fbgbjbd)){ + return fbgbjbd; + }else if (!CollectionUtils.isEmpty(ssg)){ + return ssg; + }else if (!CollectionUtils.isEmpty(bpg)){ + return bpg; + }else if (!CollectionUtils.isEmpty(zqyjg)){ + return zqyjg; + }else if (!CollectionUtils.isEmpty(ca)){ + return ca; + }else{ + return null; + } + } + + /** + * 将文本状态转换成文件类型 + * @param textState + * @return + */ + private String convertTextStateToItemType(String textState){ + String fileType =""; + switch (textState){ + case "hya6gay4vx"://草稿 + fileType="CA"; + break; + case "8rjsx83ows"://征求意见稿 + fileType="ZQYJG"; + break; + case "3dx7oy5jff"://报批稿 + fileType="BPG"; + break; + case "ncb6osftj8"://送审稿 + fileType="SSG"; + break; + case "hc99551723c"://发布稿 + fileType="FBGBJBD"; + break; + case "ZTJJSS"://修订中 + fileType=null; + break; + case "TOVOID"://已作废 + fileType=null; + break; + case "ZTXXYX"://计划修订 + fileType=null; + break; + case "vsaga7nwub"://已实施 + fileType="FBGBJBD"; + break; + case "N5KLTFLNRC"://已修订 + fileType=null; + break; + default: + fileType=null; + break; + } + return fileType; + } + + + + @Autowired + private ISarUpdLogService sarUpdLogEOService; + + + /** + * 定时更新文本状态 + */ +// @Scheduled(cron = "0 0 0 * * ?") //每天的凌晨0点执行 +// @Scheduled(cron="*/5 * * * * ?") + @Async + public void TextStatusSchedulingTasks() { + Logger logger = LoggerFactory.getLogger(ScheduledJob.class); + + + logger.info("========================================================================================================="); + logger.info("========================================================================================================="); + logger.info("开始更新文本状态!!!"); + logger.info("========================================================================================================="); + logger.info("========================================================================================================="); +// QueryWrapper wrapper = new QueryWrapper<>(); + +// TermDTO data = new TermDTO(LocalDate.now(), LocalDate.now()); + + /** + *实施日期是当前系统时间的标准文本状态变为'现行有效' + */ + QueryWrapper columnsAndCondition = new QueryWrapper<>(); + columnsAndCondition.select("STAND_ID").like("SSRQ", LocalDate.now()); + List> effectiveList = sarStandAttrInfoDao.selectMaps(columnsAndCondition); +// List effectiveList = sarStandardInfoDao.selectWithinTerm(data, "SSRQ"); + + effectiveList.forEach(item -> { + try { + SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); + sarStandardsInfo.setId(item.get("STAND_ID").toString()); + sarStandardsInfo.setTextStatus("vsaga7nwub"); + + sarStandardsInfoDao.updateById(sarStandardsInfo); +// sarStandardInfoDao.updateStandardInfo(item.getStandId(),"vsaga7nwub"); + + } catch (Exception e) { + System.out.println("标准id为==" + item.get("STAND_ID").toString() + "==文本状态更新失败"); + } + }); + + + /** + * 被多个标准代替的标准变为“被代替”,只被一个标准代替的自动变为“废止” + */ + QueryWrapper columnForDTBJH = new QueryWrapper<>(); + + columnForDTBJH.select("DTBJH") + .eq("VALID_FLAG", "0") + .ne("DTBJH", ""); + //查询代替标准字段得到一个 被代替了的标准的id的键值对列表 + List> replaceStandIdMaps = sarStandAttrInfoDao.selectMaps(columnForDTBJH); + HashMap replaceIdCountMap = new HashMap<>(); + + +// 格式为 T/CSAE 175-2021 + /** + * 国内外表准号格式不统一 + */ +// Pattern pattern = Pattern.compile("^\\S*\\s\\S*[\\u2014\\u002d\\s]\\d{4}$"); + replaceStandIdMaps.forEach(item -> { + if (item != null) { + //此标准代替的标准的标准号的数组 + String DTBJHStr = item.get("DTBJH").toString(); + + //数据格式: (GB 123-2000,GB 4233434-2021,GB 423423423-2021) + if (!DTBJHStr.equals("")) { + String[] DTBJHArray = DTBJHStr.split(","); + for (String DTBJH : DTBJHArray) { + +// if (!pattern.matcher(DTBJH).matches()){ +// continue; +// } + +// String[] split = DTBJH.split("[\\u2014\\u002d\\s]");//以空格或'-'或'—'分割 +// String sort = split[0]; +// String number = split[1]; +// String year = split[2]; +// +// QueryWrapper infoWrapper = new QueryWrapper<>(); +// infoWrapper.select("ID") +// .eq("STAND_SORT", sort) +// .eq("STAND_NUMBER", number) +// .eq("STAND_YEAR", year); + + + List standId = sarStandardsInfoDao.selectIdFormDTBZH(DTBJH); + if (standId.size() > 0) { + boolean b = replaceIdCountMap.containsKey(standId.get(0)); + //如果代替标准id已存在则映射为2不存在则添加并映射为1 + if (b) { + replaceIdCountMap.replace(standId.get(0), 2); + } else { + replaceIdCountMap.put(standId.get(0), 1); + } + } + } + } + } + }); + //一个被代替标准号时,文本状态更新为废止状态,两个及以上时更新为被代替状态 + for (String key : replaceIdCountMap.keySet()) { + SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); + String reasonMsg = ""; + switch (replaceIdCountMap.get(key)) { + case 1: + //废止状态 + sarStandardsInfo.setTextStatus("chblaarg77"); + sarStandardsInfo.setId(key); + reasonMsg = "该标准被一个标准代替"; + break; + case 2: + //被代替状态 + sarStandardsInfo.setTextStatus("qke0ckro2p"); + sarStandardsInfo.setId(key); + reasonMsg = "该标准被一个以上标准代替"; + break; + default: + break; + } + + + try { + //更新日志 + SarStandardsInfo beforeSarStandardsInfoEO = sarStandardsInfoDao.selectById(sarStandardsInfo.getId()); + sarStandardsInfo.setStandType(beforeSarStandardsInfoEO.getStandType()); + sarStandardsInfo.setStandSort(beforeSarStandardsInfoEO.getStandSort()); + sarStandardsInfo.setStandNumber(beforeSarStandardsInfoEO.getStandNumber()); + sarStandardsInfo.setStandYear(beforeSarStandardsInfoEO.getStandYear()); + sarStandardsInfo.setStandName(beforeSarStandardsInfoEO.getStandName()); + saveUpdateLog(sarStandardsInfo, beforeSarStandardsInfoEO, reasonMsg); + //更新日志 + sarStandardsInfoDao.updateById(sarStandardsInfo); + } catch (Exception e) { + System.out.println("代替标准状态更新:id为" + key + "文本状态更新失败"); + } + } + logger.info("==================================更新文本状态结束======================================"); + logger.info("==================================更新文本状态结束======================================"); + + } + + + public void saveUpdateLog(SarStandardsInfo sarStandardsInfoEO, SarStandardsInfo beforeSarStandardsInfo, String reasonMsg) throws Exception { + Map newMap = new HashMap<>(); + Map oldMap = new HashMap<>(); + String attrStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + if (StringUtils.isNotBlank(attrStr)) { + newMap = JSONObject.fromObject(attrStr); + } + newMap.put("textStatus", sarStandardsInfoEO.getTextStatus()); + oldMap.put("textStatus", beforeSarStandardsInfo.getTextStatus()); + // 增加关联事件 + String number = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + if (StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) { + number += "-" + sarStandardsInfoEO.getStandYear(); + } + String content = "==定时任务执行修改==:" + number + " 《" + sarStandardsInfoEO.getStandName() + "》" + reasonMsg; + sarUpdLogEOService.createUpdateLog(sarStandardsInfoEO.getStandType() + "_STAND", sarStandardsInfoEO.getId(), oldMap, newMap, content); + } + + + // @Scheduled(cron = "0 0 0 * * ?") //每天的凌晨0点执行 +// @Scheduled(cron = "*/30 * * * * ?") + @Async + public void TextStatusUpdateStandard() { + Logger logger = LoggerFactory.getLogger(ScheduledJob.class); + logger.info("=======================================开始更新文本状态======================================"); + //第一步 查询满足条件的数据 第一步只能查询 需要的标准id和日期 + //查询出两组数据 + Map map = new HashMap<>(); + List types = new ArrayList<>(); + types.add("WBZTCLASS"); + Map dicTypeEO = dicTypeEOService.getDicTypeListCodeByType(types); + List> arr = (List>) dicTypeEO.get("WBZTCLASS"); + arr.forEach(stringStringMap -> { + stringStringMap.keySet().forEach(s -> { + map.put(stringStringMap.get("label"), stringStringMap.get("value")); + }); + }); + //只针对国内标准 INLAND + +// 查询国标 实施日期 晚于现在 +// 标准状态属于发布 +// 标准状态改为即将实施 + List changeJJSS = new ArrayList<>(); + List strings = new ArrayList<>(); + strings.add(map.get("发布")); + List sarStandardsInfos = sarStandardsInfoDao.dealWithDS("INLAND", strings); + //判定时间 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + if (null != sarStandardsInfos && sarStandardsInfos.size() > 0) { + for (DSarStandardDTO s : sarStandardsInfos) { + if (null != s.getSSRQ()) { + if (s.getSSRQ().contains(",")) { + //多个日期拆分 一个满足就都满足 + if (findFirstTime(s.getSSRQ()).compareTo(new Date()) >= 0 && !changeJJSS.contains(s)) { + changeJJSS.add(s); + } + } else { + Date date = null; + try { + date = dateFormat.parse(TrainFormDate.dealWithTimeZoneyyyy(s.getSSRQ(), "yyyy-MM-dd")); + } catch (ParseException e) { + e.printStackTrace(); + } + logger.info("时间为:" + date); + //与现在时间进行比较 + if (date.compareTo(new Date()) >= 0 && !changeJJSS.contains(s)) { + changeJJSS.add(s); + } + } + } + } + + +// 标桩状态 属于即将实施 或 发布 +// 实施日期 在今天之前 +// 标准状态 改为现行有效 + List changeXXYX = new ArrayList<>(); + List strings2 = new ArrayList<>(); + strings2.add(map.get("即将实施")); + strings2.add(map.get("发布")); + List sarStandardsInfos1 = sarStandardsInfoDao.dealWithDS("INLAND", strings2); + if (null != sarStandardsInfos1 && sarStandardsInfos1.size() > 0) { + for (DSarStandardDTO s : sarStandardsInfos1) { + if (null != s.getSSRQ()) { + if (s.getSSRQ().contains(",")) { + //多个日期拆分 一个满足就都满足 + if (findFirstTime(s.getSSRQ()).compareTo(new Date()) < 0 && !changeXXYX.contains(s)) { + changeXXYX.add(s); + } + } else { + Date date = null; + try { + date = dateFormat.parse(TrainFormDate.dealWithTimeZoneyyyy(s.getSSRQ(), "yyyy-MM-dd")); + } catch (ParseException e) { + e.printStackTrace(); + } + logger.info("时间为:" + date); + //与现在时间进行比较 + if (date.compareTo(new Date()) < 0 && !changeXXYX.contains(s)) { + changeXXYX.add(s); + } + } + } + } + } + logger.info("改为即将实施的有" + changeJJSS.size() + "条"); + logger.info("改为现行有效的有" + changeXXYX.size() + "条"); + logger.info("============================="); + createStandardMQService.sendMQ(changeJJSS,changeXXYX); + } + } + + private Date findFirstTime(String ssrq) { + String[] as = ssrq.split(","); + List dates = new ArrayList<>(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + for (String s : as) { + Date date = null; + try { + date = dateFormat.parse(TrainFormDate.dealWithTimeZoneyyyy(s, "yyyy-MM-dd")); + } catch (ParseException e) { + e.printStackTrace(); + } + dates.add(date); + } + dates.sort(Comparator.comparing(date -> date)); + return dates.get(0); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJobRunner.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJobRunner.java new file mode 100644 index 00000000..b707764b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledJobRunner.java @@ -0,0 +1,27 @@ +package com.adc.da.scheduled; + + +import com.adc.da.search.conf.SchedulerConf; +import com.adc.da.search.util.InitStandAttrSearchUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Component +@Order(value = 2) +public class ScheduledJobRunner implements ApplicationRunner { + + private static final Logger logger = LoggerFactory.getLogger(ScheduledJobRunner.class); + + @Autowired + private SchedulerConf schedulerConf; + + @Override + public void run(ApplicationArguments args) throws Exception { + schedulerConf.startByIp(); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java new file mode 100644 index 00000000..276d5349 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/ScheduledSync.java @@ -0,0 +1,44 @@ +package com.adc.da.scheduled; + +import com.adc.da.slrs.DataSync.DataSyncController; +import com.adc.da.slrs.DataSync.service.IDataSyncService; +import com.sun.org.apache.bcel.internal.generic.NEW; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + + +/** + * 定时同步用户和组织机构信息 + */ +@EnableScheduling +@Component +@Slf4j +public class ScheduledSync { + + @Autowired + private IDataSyncService iDataSyncService; + + /** + * 根据配置文件设置是否开启定时器 + */ + + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + //每天凌晨两点执行 + @Scheduled(cron="0 0 2 * * ?") + @Async + public void syncSchedulingTasks() { + if(isNotScheduled){ + log.info("======================================开始同步基础数据========================================"); + iDataSyncService.orgDataSync(); //时间短 + iDataSyncService.dataSync(); //时间长 + log.info("======================================结束同步基础数据========================================"); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/WarningSchedulingTasks.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/WarningSchedulingTasks.java new file mode 100644 index 00000000..4d16ec86 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/WarningSchedulingTasks.java @@ -0,0 +1,29 @@ +package com.adc.da.scheduled; + +import com.adc.da.common.GetBeanUtil; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Slf4j +public class WarningSchedulingTasks implements Runnable{ + + + Logger logger = LoggerFactory.getLogger(WarningSchedulingTasks.class); + + private ScheduledJob scheduledJob; + + public WarningSchedulingTasks() { + scheduledJob= GetBeanUtil.getApplicationContext().getBean(ScheduledJob.class); + } + + @Override + public void run() { + try{ + Thread.sleep(2000); + scheduledJob.warningSchedulingTasks(); + }catch(Exception e){ + logger.info(e.getMessage()); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/controller/Controller.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/controller/Controller.java new file mode 100644 index 00000000..af254984 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/controller/Controller.java @@ -0,0 +1,43 @@ +package com.adc.da.scheduled.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.scheduled.CheckEncryFileJob; +import com.adc.da.scheduled.ScheduledJob; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/${restPath}/scheduled") +public class Controller { + + + + @Autowired + ScheduledJob scheduledJob; + + @Autowired + CheckEncryFileJob checkEncryFileJob; + + @PutMapping("/warning") + public void warning(){ + scheduledJob.warningSchedulingTasks(); + } + + @PutMapping("textStatus") + public void textStatus(){ + scheduledJob.TextStatusSchedulingTasks(); + } + + + @ApiOperation(value = "标准原始文件判断是否是加密文件") + @GetMapping("/checkFileByEncrypt") + public ResponseMessage checkFileByEncrypt() { + checkEncryFileJob.asyncCheckStandEncryptFile(); + checkEncryFileJob.asyncCheckBussStandEncryptFile(); + return Result.success("开始判断中稍后到服务器中查看文件"); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardInfoDao.java new file mode 100644 index 00000000..5fcefabf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardInfoDao.java @@ -0,0 +1,18 @@ +package com.adc.da.scheduled.dao; + + +import com.adc.da.scheduled.entity.TermDTO; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SarStandardInfoDao{ + + public List selectWithinTerm(TermDTO date, String str); + + public int updateStandardInfo(@Param("id")String id, @Param("textStatus") String textStatus); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardItemDao.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardItemDao.java new file mode 100644 index 00000000..6472758c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardItemDao.java @@ -0,0 +1,16 @@ +package com.adc.da.scheduled.dao; + +import com.adc.da.scheduled.entity.TermDTO; +import com.adc.da.scheduled.entity.WarningEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SarStandardItemDao extends BaseMapper{ + + public List selectWithinTerm(TermDTO date, String str); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardWarningDao.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardWarningDao.java new file mode 100644 index 00000000..2cc741f2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/dao/SarStandardWarningDao.java @@ -0,0 +1,30 @@ +package com.adc.da.scheduled.dao; + +import com.adc.da.scheduled.entity.TermDTO; +import com.adc.da.slrs.sarStandWarning.entity.EarlyWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.WarningDate; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.LinkedList; +import java.util.List; + +@Repository +public interface SarStandardWarningDao extends BaseMapper { + + public int ignoreInsert(@Param(value = "warningEOS") List warningEOS); + + + public int autoCancelWarning(); + + public List getWarningId(TermDTO term); + + public List getWarningDate(TermDTO term); + + public List getWarningDateOfItems(TermDTO term); + + public String getStandTextStateByStandId(@Param(value = "standId") String standId); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/entity/TermDTO.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/entity/TermDTO.java new file mode 100644 index 00000000..a148c45d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/entity/TermDTO.java @@ -0,0 +1,119 @@ +package com.adc.da.scheduled.entity; + +import com.alibaba.druid.sql.visitor.functions.Char; +import com.sun.org.apache.bcel.internal.generic.NEW; +import lombok.Data; +import lombok.experimental.Accessors; +import net.bytebuddy.asm.Advice; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.format.annotation.DateTimeFormat; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +@Data +@Accessors(chain = true) +public class TermDTO { + /** + * 预警的期限为系统日期的次日至3个月后 + */ + + + private String startDate; + + private String endDate; + + private String termStr; + + private List termList; + + public TermDTO() { + //系统当前日期 + LocalDate starDate = LocalDate.now(); + //系统当前日期36个月后 + LocalDate endDate = LocalDate.now().plusMonths(36); + + convertToStr(starDate,endDate); + } + + public TermDTO(LocalDate startDate, LocalDate endDate){ + convertToStr(startDate,endDate); + } + + //判断日期是否在期限内 + public boolean isTerm(Date date) { + + + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + String dateString = formatter.format(date); + int compareStart = dateString.compareTo(startDate); + int compareEnd = dateString.compareTo(startDate); + if (compareStart >= 0 && compareEnd <=0) { + return true; + } else { + return false; + } + + } + + + + + /** + * 此时的mybatis-plus对localDate类型没有完全支持,则转换为字符串使用 + * @param startDate + * @param endDate + */ + private void convertToStr(LocalDate startDate,LocalDate endDate){ + + /** + * 使用DateTimeFormatter线程安全,但不晓得怎么支持Date类型转换为字符串 ¯\_(ツ)_/¯ + */ + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + +// SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");//线程不安全且不支持LocalDate + + this.startDate =formatter.format(startDate); + this.endDate=formatter.format(endDate); + + this.termList= forDate(); + this.termStr= StringUtils.join(this.termList,"|"); + + } + + + + private List forDate() { + // 日期格式化 + LinkedList termList = new LinkedList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + try { + // 起始日期 + Date d1 = sdf.parse(this.startDate); + // 结束日期 + Date d2 = sdf.parse(this.endDate); + Date tmp = d1; + Calendar dd = Calendar.getInstance(); + dd.setTime(d1); + // 循环之间的每一天 + while (tmp.getTime() < d2.getTime()) { + tmp = dd.getTime(); + termList.add(sdf.format(tmp)); + // 天数加上1 + dd.add(Calendar.DAY_OF_MONTH, 1); + } + } catch (ParseException e) { + e.printStackTrace(); + } + + + return termList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduled/entity/WarningEO.java b/adc-da-slrs/src/main/java/com/adc/da/scheduled/entity/WarningEO.java new file mode 100644 index 00000000..4dddeadc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduled/entity/WarningEO.java @@ -0,0 +1,36 @@ +package com.adc.da.scheduled.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.sarStandWarning.entity.EarlyWarningEO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.experimental.Accessors; +import lombok.experimental.SuperBuilder; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@Accessors(chain = true) +public class WarningEO extends EarlyWarningEO { + private static final long serialVersionUID = 1L; + + @DateTimeFormat(pattern = "YYYY-MM-dd") + private Date XCXSSRQ; + + @DateTimeFormat(pattern = "YYYY-MM-dd") + private Date ZCCSSRQ; + + @DateTimeFormat(pattern = "YYYY-MM-dd") + private Date SSRQ; + + private String standNum; + + private String standSort; + + private String standYear; + + private String issueTime; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSync.java b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSync.java new file mode 100644 index 00000000..b8db762d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSync.java @@ -0,0 +1,301 @@ +//package com.adc.da.scheduledState.server; +// +//import com.adc.da.mq.CreateStandMQService; +//import com.adc.da.person.service.IPersonCollectEOService; +//import com.adc.da.scheduledState.utils.Util; +//import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +//import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService; +//import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; +//import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +//import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +//import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +//import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +//import com.adc.da.sys.dao.DicTypeEODao; +//import com.adc.da.utils.util.FieldConvertUtil; +//import com.adc.da.utils.util.InitStandAttrUtil; +//import com.alibaba.fastjson.JSONObject; +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.lang3.StringUtils; +//import org.json.JSONTokener; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.scheduling.annotation.Async; +//import org.springframework.scheduling.annotation.EnableScheduling; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Component; +// +//import java.sql.Clob; +//import java.time.LocalDate; +//import java.time.LocalDateTime; +//import java.time.format.DateTimeFormatter; +//import java.util.*; +//import java.util.stream.Collectors; +// +///** +// * @Description: TODO +// * @author: super_liu +// * @date: 2022年01月25日 3:34 +// */ +//@EnableScheduling +//@Component +//@Slf4j +//public class UpdateStateBussSync { +// Logger logger = LoggerFactory.getLogger(UpdateStateBussSync.class); +// +// @Autowired +// private DicTypeEODao dicTypeEODao; +// +// @Autowired +// private SarStandItemsDao standItemsDao; +// +// @Autowired +// private CreateStandMQService createStandMQService; +// +// @Autowired +// private IPersonCollectEOService personCollectEOService; +// +// @Autowired +// private SarBussionessStandDao sarBussionessStandDao; +// +// @Autowired +// private ISarBussionessStandService iSarBussionessStandService; +// +// @Autowired +// private ISarBussStandAttrInfoService sarBussStandAttrInfoService; +// +// @Autowired +// private SarBussStandAttrInfoDao sarBussStandAttrInfoEODao; +// +// /** +// * 根据配置文件设置是否开启定时器 +// */ +// +// @Value("${isNotScheduled}") +// private boolean isNotScheduled; //是否开启定时器 +// +// +// // 每天0点1分执行 企标标准文本状态 即将实施和现行有效状态自动变更逻辑 +//// @Scheduled(cron="0 0 1 1 * ?") +//// @Scheduled(cron="*/60 * * * * ?") +//// @Scheduled(cron = "0 1 0 * * ?") +// @Async +// public void BussScheduled(){ +// if(isNotScheduled){ +// try{ +// Thread.sleep(2000); +// logger.info("每天0点1分执行 企标标准文本状态 即将实施和现行有效状态自动变更逻辑:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); +// +// // 发布、即将实施 +// List list = new ArrayList<>(); +// // 发布 +// list.add("6jnqba2mby"); +// // 即将实施 +// list.add("rpvoxsvr60"); +// QueryWrapper wrapper = new QueryWrapper(); +// wrapper.eq("A.VALID_FLAG","0"); +// wrapper.in("A.TEXT_STATUS_BUSS",list); +// List getStateScheduledList = sarBussionessStandDao.getStateScheduledList(wrapper); +// if(!getStateScheduledList.isEmpty()){ +// // N个实施日期中大于当前日期 +// List getStateScheduledListToIsAfter = getStateScheduledList.stream().filter(info -> { +// if(StringUtils.isNotBlank(info.getPutTime())){ +// List dateList = Arrays.stream(info.getPutTime().split(",")).map(String::trim).collect(Collectors.toList()); +// List dateIsAfterList = dateList.stream().filter(s -> { +// if(Util.isValidDate(s)){ +// LocalDateTime now = LocalDateTime.now(); +// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); +// LocalDateTime parse = LocalDate.parse(s, dateTimeFormatter).atStartOfDay(); +// // 实施日期是否大于当前日期 +// return parse.isAfter(now); +// } +// return false; +// }).collect(Collectors.toList()); +// +// return !dateIsAfterList.isEmpty(); +// } +// return false; +// }).collect(Collectors.toList()); +// +// +// // N个实施日期中小于当前时间 +// List getStateScheduledListToIsBefore = getStateScheduledList.stream().filter(info -> { +// if(StringUtils.isNotBlank(info.getPutTime())){ +// List dateList = Arrays.stream(info.getPutTime().split(",")).map(String::trim).collect(Collectors.toList()); +// List dateIsBeforeList = dateList.stream().filter(s -> { +// if(Util.isValidDate(s)){ +// LocalDateTime now = LocalDateTime.now(); +// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); +// LocalDateTime parse = LocalDate.parse(s, dateTimeFormatter).atStartOfDay(); +// // 实施日期是否小于当前时间 +// return parse.isBefore(now); +// } +// return false; +// }).collect(Collectors.toList()); +// +// return !dateIsBeforeList.isEmpty(); +// } +// return false; +// }).collect(Collectors.toList()); +// +// // N个实施日期中大于当前日期 执行逻辑 更为即将实施 +// if(!getStateScheduledListToIsAfter.isEmpty()){ +// execStandDate(getStateScheduledListToIsAfter,"rpvoxsvr60"); +// } +// +// // N个实施日期中小于当前时间 执行逻辑 更为现行有效 +// if(!getStateScheduledListToIsBefore.isEmpty()){ +// execStandDate(getStateScheduledListToIsBefore,"9z741h2m3j"); +// } +// +// } +// +// logger.info("每天0点1分执行 企标标准文本状态 即将实施和现行有效状态自动变更逻辑:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); +// }catch(Exception e){ +// logger.info(e.getMessage()); +// } +// } +// } +// +// // 每天0点1分执行 企标标准文本状态被代替逻辑 自动变更作废状态 +//// @Scheduled(cron="0 0 1 1 * ?") +//// @Scheduled(cron="*/60 * * * * ?") +//// @Scheduled(cron = "0 1 0 * * ?") +// @Async +// public void BussScheduledToAbolish(){ +// if(isNotScheduled){ +// try{ +// Thread.sleep(2000); +// logger.info("每天0点1分执行 企标标准文本状态被代替逻辑 自动变更作废状态:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); +// +// // 现行有效、即将实施 +// List list = new ArrayList<>(); +// // 现行有效 +// list.add("9z741h2m3j"); +// // 即将实施 +// list.add("rpvoxsvr60"); +// QueryWrapper wrapper = new QueryWrapper(); +// wrapper.eq("A.VALID_FLAG","0"); +// wrapper.in("A.TEXT_STATUS_BUSS",list); +// List getStateScheduledList = sarBussionessStandDao.getStateScheduledList(wrapper); +// if(!getStateScheduledList.isEmpty()){ +// +// // 需要更新为作废状态的集合 +// List invalidList = getStateScheduledList.stream().filter(info -> { +// if(StringUtils.isNotBlank(info.getBDTQBBHBUSS())){ +// List bdtList = Arrays.stream(info.getBDTQBBHBUSS().split(",")).map(String::trim).collect(Collectors.toList()); +// // 现行有效、作废 +// List bdtStateList = new ArrayList<>(); +// // 现行有效 +// bdtStateList.add("9z741h2m3j"); +// // 作废 +// bdtStateList.add("3lqnlgmgcn"); +// QueryWrapper wrapperBdt = new QueryWrapper(); +// wrapperBdt.eq("VALID_FLAG","0"); +// wrapperBdt.in("STAND_CODE",bdtList); +// wrapperBdt.in("TEXT_STATUS_BUSS",bdtStateList); +// List queryBDTBussList = sarBussionessStandDao.selectList(wrapperBdt); +// // 所有的被代替标准号中的有效标准中有一个标准标准状态是现行有效、作废 +// return !queryBDTBussList.isEmpty(); +// } +// return false; +// }).collect(Collectors.toList()); +// +// +// // 作废状态的集合 执行逻辑 更为作废 +// if(!invalidList.isEmpty()){ +// execStandDate(invalidList,"3lqnlgmgcn"); +// } +// +// } +// +// logger.info("每天0点1分执行 企标标准文本状态被代替逻辑 自动变更作废状态:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); +// }catch(Exception e){ +// logger.info(e.getMessage()); +// } +// } +// } +// +// +// @Async +// public void execStandDate(List infoList, String textStatusStand) throws Exception { +// List list = new ArrayList<>(); +// for (SarBussionessStand info : infoList) { +// info.setTextStatusBuss(textStatusStand); +// bussAttrInfoShowSearchDetails(info); +// if (info.getAttrInfoMap() != null) { +// info.setSarStandAttrEOStr(JSONObject.toJSONString(info.getAttrInfoMap())); +// } +// createStandMQService.sendBussStandMQ(info,"update"); +// +// // 只批量更新文本字段 +// SarBussionessStand newInfo = new SarBussionessStand(); +// newInfo.setTextStatusBuss(textStatusStand); +// newInfo.setId(info.getId()); +// newInfo.setModifyTime(new Date()); +// list.add(newInfo); +// } +// +// if(!list.isEmpty()){ +// iSarBussionessStandService.updateBatchById(list); +// } +// } +// +// +// /** +// * 获取属性字段 +// * @param row +// */ +// +// public void bussAttrInfoShowSearchDetails(SarBussionessStand row) throws Exception { +// if (row != null) { +// bussAttrInfoSearchDetails(row); +// Map getAttrMap = row.getAttrInfoCaseMap(); +// if (getAttrMap != null && getAttrMap.size() > 0) { +// for (Map.Entry entry : getAttrMap.entrySet()) { +// String name = entry.getKey().toUpperCase(); +// String value = ""; +// List valArr = new ArrayList<>(); +// if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { +// if(org.apache.commons.lang.StringUtils.isNotBlank(entry.getValue().toString())){ +// Object json= new JSONTokener(entry.getValue().toString()).nextValue(); +// if(json instanceof org.json.JSONArray){ +// valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(),String.class); +// }else { +// value = entry.getValue().toString(); +// valArr = Arrays.asList(value.split(",")); +// } +// if(!valArr.isEmpty()){ +// value = dicTypeEODao.getDicNamesByCodes(valArr,""); +// } +// } +// entry.setValue(value); +// } +// } +// } +// } +// } +// +// public void bussAttrInfoSearchDetails(SarBussionessStand row) throws Exception { +// String fieldInfo = InitStandAttrUtil.queryFieldBuss; +// String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); +// row.setCollectId(collectId); +// // 查询属性表数据 +// if (org.apache.commons.lang.StringUtils.isNotBlank(fieldInfo)) { +// Map getAttrMap = sarBussStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); +// if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { +// // 遍历修改所有clob类型的值 +// for (String clobField : InitStandAttrUtil.clobFieldList) { +// Clob clobValue = (Clob) getAttrMap.get(clobField); +// String fieldValue = FieldConvertUtil.ClobToString(clobValue); +// getAttrMap.put(clobField, fieldValue); +// } +// } +// +// row.setAttrInfoMap(getAttrMap); +// } +// } +// +//} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSyncFz.java b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSyncFz.java new file mode 100644 index 00000000..965bda7e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSyncFz.java @@ -0,0 +1,250 @@ +package com.adc.da.scheduledState.server; + +import com.adc.da.common.GetBeanUtil; +import com.adc.da.common.SarTypeEnum; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.bean.SearchCenter; +import com.adc.da.search.server.ResetSearchCenterService; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService; +import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.utils.util.FieldConvertUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.Utils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; + +import java.sql.Clob; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年01月25日 3:34 + */ + +@Slf4j +public class UpdateStateBussSyncFz implements Runnable { + Logger logger = LoggerFactory.getLogger(UpdateStateBussSyncFz.class); + + private DicTypeEODao dicTypeEODao; + + private SarStandItemsDao standItemsDao; + + private CreateStandMQService createStandMQService; + + private IPersonCollectEOService personCollectEOService; + + private SarBussionessStandDao sarBussionessStandDao; + + private ISarBussionessStandService iSarBussionessStandService; + + private ISarBussStandAttrInfoService sarBussStandAttrInfoService; + + private SarBussStandAttrInfoDao sarBussStandAttrInfoEODao; + + private ISarUpdLogService sarUpdLogEOService; + + /** + * 根据配置文件设置是否开启定时器 + */ + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + public UpdateStateBussSyncFz(){ + sarBussionessStandDao = GetBeanUtil.getApplicationContext().getBean(SarBussionessStandDao.class); + createStandMQService = GetBeanUtil.getApplicationContext().getBean(CreateStandMQService.class); + iSarBussionessStandService = GetBeanUtil.getApplicationContext().getBean(ISarBussionessStandService.class); + dicTypeEODao = GetBeanUtil.getApplicationContext().getBean(DicTypeEODao.class); + personCollectEOService = GetBeanUtil.getApplicationContext().getBean(IPersonCollectEOService.class); + sarBussStandAttrInfoEODao = GetBeanUtil.getApplicationContext().getBean(SarBussStandAttrInfoDao.class); + sarUpdLogEOService = GetBeanUtil.getApplicationContext().getBean(ISarUpdLogService.class); + } + + + /** + * 每天0点1分执行 企标标准文本状态被代替逻辑 自动变更作废状态 + */ + @Override + public void run() { + try{ + Thread.sleep(2000); + logger.info("每天0点1分执行 企标标准文本状态被代替逻辑 自动变更作废状态:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); + + // 现行有效、即将实施 + List list = new ArrayList<>(); + // 现行有效 + list.add("9z741h2m3j"); + // 即将实施 + list.add("rpvoxsvr60"); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("A.VALID_FLAG","0"); + wrapper.in("A.TEXT_STATUS_BUSS",list); + List getStateScheduledList = sarBussionessStandDao.getStateScheduledList(wrapper); + if(!getStateScheduledList.isEmpty()){ + + // 需要更新为作废状态的集合 + List invalidList = getStateScheduledList.stream().filter(info -> { + if(StringUtils.isNotBlank(info.getBDTQBBHBUSS())){ + List bdtList = Arrays.stream(info.getBDTQBBHBUSS().split(",")).map(String::trim).collect(Collectors.toList()); + // 现行有效、作废 + List bdtStateList = new ArrayList<>(); + // 现行有效 + bdtStateList.add("9z741h2m3j"); + // 作废 + bdtStateList.add("3lqnlgmgcn"); + QueryWrapper wrapperBdt = new QueryWrapper(); + wrapperBdt.eq("VALID_FLAG","0"); + wrapperBdt.in("STAND_CODE",bdtList); + wrapperBdt.in("TEXT_STATUS_BUSS",bdtStateList); + List queryBDTBussList = sarBussionessStandDao.selectList(wrapperBdt); + // 所有的被代替标准号中的有效标准中有一个标准标准状态是现行有效、作废 + return !queryBDTBussList.isEmpty(); + } + return false; + }).collect(Collectors.toList()); + + + // 作废状态的集合 执行逻辑 更为作废 + if(!invalidList.isEmpty()){ + execStandDate(invalidList,"3lqnlgmgcn"); + } + + } + + logger.info("每天0点1分执行 企标标准文本状态被代替逻辑 自动变更作废状态:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); + }catch(Exception e){ + logger.info(e.getMessage()); + } + } + + // 每天0点1分执行 企标标准文本状态被代替逻辑 自动变更作废状态 +// @Scheduled(cron="0 0 1 1 * ?") +// @Scheduled(cron="*/60 * * * * ?") +// @Scheduled(cron = "0 1 0 * * ?") +// @Async +// public void BussScheduledToAbolish(){ +// if(isNotScheduled){ +// +// } +// } + + + @Async + public void execStandDate(List infoList, String textStatusStand) throws Exception { + List list = new ArrayList<>(); + for (SarBussionessStand info : infoList) { + info.setTextStatusBuss(textStatusStand); + bussAttrInfoShowSearchDetails(info); + if (info.getAttrInfoMap() != null) { + info.setSarStandAttrEOStr(JSONObject.toJSONString(info.getAttrInfoMap())); + } + createStandMQService.sendBussStandMQ(info,"update"); + + saveUpdateLog(info,textStatusStand); + + // 只批量更新文本字段 + SarBussionessStand newInfo = new SarBussionessStand(); + newInfo.setTextStatusBuss(textStatusStand); + newInfo.setId(info.getId()); + newInfo.setModifyTime(new Date()); + list.add(newInfo); + } + + if(!list.isEmpty()){ + iSarBussionessStandService.updateBatchById(list); + } + } + + public void saveUpdateLog(SarBussionessStand sarStandardsInfoEO, String textStatusStand){ + try { + Map newMap = new HashMap<>(); + newMap.put("textStatus", verifyObj(textStatusStand)); + Map oldMap = new HashMap<>(); + oldMap.put("textStatus", verifyObj(sarStandardsInfoEO.getTextStatusBuss())); + + String content = sarStandardsInfoEO.getStandCode() + " 《" + sarStandardsInfoEO.getStandName() + "》"; + sarUpdLogEOService.createUpdateLog(SarTypeEnum.BUSINESS.getValue(),sarStandardsInfoEO.getId(),oldMap,newMap,content); + }catch (Exception e){ + System.out.println(e.getMessage()); + } + } + + private Object verifyObj(Object str) { + return str == null ? "" : str; + } + + + /** + * 获取属性字段 + * @param row + */ + + public void bussAttrInfoShowSearchDetails(SarBussionessStand row) throws Exception { + if (row != null) { + bussAttrInfoSearchDetails(row); + Map getAttrMap = row.getAttrInfoCaseMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey().toUpperCase(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + if(org.apache.commons.lang.StringUtils.isNotBlank(entry.getValue().toString())){ + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if(json instanceof org.json.JSONArray){ + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(),String.class); + }else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if(!valArr.isEmpty()){ + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + entry.setValue(value); + } + } + } + } + } + + public void bussAttrInfoSearchDetails(SarBussionessStand row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (org.apache.commons.lang.StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarBussStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + row.setAttrInfoMap(getAttrMap); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSyncSsAndYx.java b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSyncSsAndYx.java new file mode 100644 index 00000000..edcb7719 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateBussSyncSsAndYx.java @@ -0,0 +1,274 @@ +package com.adc.da.scheduledState.server; + +import com.adc.da.common.GetBeanUtil; +import com.adc.da.common.SarTypeEnum; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.scheduledState.utils.Util; +import com.adc.da.search.server.ResetSearchCenterService; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService; +import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.utils.util.FieldConvertUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.Utils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; + +import java.sql.Clob; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年01月25日 3:34 + */ + +@Slf4j +public class UpdateStateBussSyncSsAndYx implements Runnable { + Logger logger = LoggerFactory.getLogger(UpdateStateBussSyncSsAndYx.class); + + private DicTypeEODao dicTypeEODao; + + private SarStandItemsDao standItemsDao; + + private CreateStandMQService createStandMQService; + + private IPersonCollectEOService personCollectEOService; + + private SarBussionessStandDao sarBussionessStandDao; + + private ISarBussionessStandService iSarBussionessStandService; + + private SarBussStandAttrInfoDao sarBussStandAttrInfoEODao; + + private ISarUpdLogService sarUpdLogEOService; + + /** + * 根据配置文件设置是否开启定时器 + */ + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + public UpdateStateBussSyncSsAndYx(){ + sarBussionessStandDao = GetBeanUtil.getApplicationContext().getBean(SarBussionessStandDao.class); + createStandMQService = GetBeanUtil.getApplicationContext().getBean(CreateStandMQService.class); + iSarBussionessStandService = GetBeanUtil.getApplicationContext().getBean(ISarBussionessStandService.class); + dicTypeEODao = GetBeanUtil.getApplicationContext().getBean(DicTypeEODao.class); + personCollectEOService = GetBeanUtil.getApplicationContext().getBean(IPersonCollectEOService.class); + sarBussStandAttrInfoEODao = GetBeanUtil.getApplicationContext().getBean(SarBussStandAttrInfoDao.class); + sarUpdLogEOService = GetBeanUtil.getApplicationContext().getBean(ISarUpdLogService.class); + } + + + /** + * 每天0点1分执行 企标标准文本状态 即将实施和现行有效状态自动变更逻辑 + */ + @Override + public void run() { + try{ + Thread.sleep(2000); + logger.info("每天0点1分执行 企标标准文本状态 即将实施和现行有效状态自动变更逻辑:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); + + // 发布、即将实施 + List list = new ArrayList<>(); + // 发布 + list.add("6jnqba2mby"); + // 即将实施 + list.add("rpvoxsvr60"); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("A.VALID_FLAG","0"); + wrapper.in("A.TEXT_STATUS_BUSS",list); + List getStateScheduledList = sarBussionessStandDao.getStateScheduledList(wrapper); + if(!getStateScheduledList.isEmpty()){ + // N个实施日期中大于当前日期 + List getStateScheduledListToIsAfter = getStateScheduledList.stream().filter(info -> { + if(StringUtils.isNotBlank(info.getPutTime())){ + List dateList = Arrays.stream(info.getPutTime().split(",")).map(String::trim).collect(Collectors.toList()); + List dateIsAfterList = dateList.stream().filter(s -> { + if(Util.isValidDate(s)){ + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDateTime parse = LocalDate.parse(s, dateTimeFormatter).atStartOfDay(); + // 实施日期是否大于当前日期 + return parse.isAfter(now); + } + return false; + }).collect(Collectors.toList()); + + return !dateIsAfterList.isEmpty(); + } + return false; + }).collect(Collectors.toList()); + + + // N个实施日期中小于当前时间 + List getStateScheduledListToIsBefore = getStateScheduledList.stream().filter(info -> { + if(StringUtils.isNotBlank(info.getPutTime())){ + List dateList = Arrays.stream(info.getPutTime().split(",")).map(String::trim).collect(Collectors.toList()); + List dateIsBeforeList = dateList.stream().filter(s -> { + if(Util.isValidDate(s)){ + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDateTime parse = LocalDate.parse(s, dateTimeFormatter).atStartOfDay(); + // 实施日期是否小于当前时间 + return parse.isBefore(now); + } + return false; + }).collect(Collectors.toList()); + + return !dateIsBeforeList.isEmpty(); + } + return false; + }).collect(Collectors.toList()); + + // N个实施日期中大于当前日期 执行逻辑 更为即将实施 + if(!getStateScheduledListToIsAfter.isEmpty()){ + execStandDate(getStateScheduledListToIsAfter,"rpvoxsvr60"); + } + + // N个实施日期中小于当前时间 执行逻辑 更为现行有效 + if(!getStateScheduledListToIsBefore.isEmpty()){ + execStandDate(getStateScheduledListToIsBefore,"9z741h2m3j"); + } + + } + + logger.info("每天0点1分执行 企标标准文本状态 即将实施和现行有效状态自动变更逻辑:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); + }catch(Exception e){ + logger.info(e.getMessage()); + } + } + + // 每天0点1分执行 企标标准文本状态被代替逻辑 自动变更作废状态 +// @Scheduled(cron="0 0 1 1 * ?") +// @Scheduled(cron="*/60 * * * * ?") +// @Scheduled(cron = "0 1 0 * * ?") +// @Async +// public void BussScheduledToAbolish(){ +// if(isNotScheduled){ +// +// } +// } + + + @Async + public void execStandDate(List infoList, String textStatusStand) throws Exception { + List list = new ArrayList<>(); + for (SarBussionessStand info : infoList) { + info.setTextStatusBuss(textStatusStand); + bussAttrInfoShowSearchDetails(info); + if (info.getAttrInfoMap() != null) { + info.setSarStandAttrEOStr(JSONObject.toJSONString(info.getAttrInfoMap())); + } + createStandMQService.sendBussStandMQ(info,"update"); + + saveUpdateLog(info,textStatusStand); + + // 只批量更新文本字段 + SarBussionessStand newInfo = new SarBussionessStand(); + newInfo.setTextStatusBuss(textStatusStand); + newInfo.setId(info.getId()); + newInfo.setModifyTime(new Date()); + list.add(newInfo); + } + + if(!list.isEmpty()){ + iSarBussionessStandService.updateBatchById(list); + } + } + + public void saveUpdateLog(SarBussionessStand sarStandardsInfoEO, String textStatusStand){ + try { + Map newMap = new HashMap<>(); + newMap.put("textStatus", verifyObj(textStatusStand)); + Map oldMap = new HashMap<>(); + oldMap.put("textStatus", verifyObj(sarStandardsInfoEO.getTextStatusBuss())); + + String content = sarStandardsInfoEO.getStandCode() + " 《" + sarStandardsInfoEO.getStandName() + "》"; + sarUpdLogEOService.createUpdateLog(SarTypeEnum.BUSINESS.getValue(),sarStandardsInfoEO.getId(),oldMap,newMap,content); + }catch (Exception e){ + System.out.println(e.getMessage()); + } + } + + private Object verifyObj(Object str) { + return str == null ? "" : str; + } + + + /** + * 获取属性字段 + * @param row + */ + + public void bussAttrInfoShowSearchDetails(SarBussionessStand row) throws Exception { + if (row != null) { + bussAttrInfoSearchDetails(row); + Map getAttrMap = row.getAttrInfoCaseMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey().toUpperCase(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + if(org.apache.commons.lang.StringUtils.isNotBlank(entry.getValue().toString())){ + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if(json instanceof org.json.JSONArray){ + valArr = JSONObject.parseArray(entry.getValue().toString(),String.class); + }else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if(!valArr.isEmpty()){ + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + entry.setValue(value); + } + } + } + } + } + + public void bussAttrInfoSearchDetails(SarBussionessStand row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (org.apache.commons.lang.StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarBussStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + row.setAttrInfoMap(getAttrMap); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSync.java b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSync.java new file mode 100644 index 00000000..fc035d4d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSync.java @@ -0,0 +1,405 @@ +//package com.adc.da.scheduledState.server; +// +//import com.adc.da.mq.CreateStandMQService; +//import com.adc.da.person.service.IPersonCollectEOService; +//import com.adc.da.scheduledState.utils.Util; +//import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +//import com.adc.da.slrs.sarStandAttrInfo.service.ISarStandAttrInfoService; +//import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +//import com.adc.da.slrs.sarStandItems.entity.FindSarItemsPageReqDTO; +//import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +//import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +//import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +//import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +//import com.adc.da.sys.dao.DicTypeEODao; +//import com.adc.da.utils.util.FieldConvertUtil; +//import com.adc.da.utils.util.InitStandAttrUtil; +//import com.alibaba.fastjson.JSONObject; +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.lang3.StringUtils; +//import org.json.JSONTokener; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.scheduling.annotation.Async; +//import org.springframework.scheduling.annotation.EnableScheduling; +//import org.springframework.scheduling.annotation.Scheduled; +//import org.springframework.stereotype.Component; +// +//import java.sql.Clob; +//import java.time.LocalDate; +//import java.time.LocalDateTime; +//import java.time.format.DateTimeFormatter; +//import java.util.*; +//import java.util.stream.Collectors; +// +///** +// * @Description: TODO +// * @author: super_liu +// * @date: 2022年01月25日 3:34 +// */ +//@EnableScheduling +//@Component +//@Slf4j +//public class UpdateStateStandSync { +// Logger logger = LoggerFactory.getLogger(UpdateStateStandSync.class); +// +// @Autowired +// private DicTypeEODao dicTypeEODao; +// +// @Autowired +// private SarStandItemsDao standItemsDao; +// +// @Autowired +// private CreateStandMQService createStandMQService; +// +// @Autowired +// private IPersonCollectEOService personCollectEOService; +// +// @Autowired +// private SarStandAttrInfoDao sarStandAttrInfoEODao; +// +// @Autowired +// private SarStandardsInfoDao sarStandardsInfoDao; +// +// @Autowired +// private ISarStandardsInfoService iSarStandardsInfoService; +// +// @Autowired +// private ISarStandAttrInfoService sarStandAttrInfoEOService; +// +// /** +// * 根据配置文件设置是否开启定时器 +// */ +// +// @Value("${isNotScheduled}") +// private boolean isNotScheduled; //是否开启定时器 +// +// +// // 每天0点1分执行 国内标准文本状态 即将实施和现行有效状态自动变更逻辑 +//// @Scheduled(cron="0 0 1 1 * ?") +//// @Scheduled(cron="0 37 9 * * ?") +//// @Scheduled(cron = "0 1 0 * * ?") +// @Async +// public void StandScheduled(){ +// if(isNotScheduled){ +// try{ +// Thread.sleep(2000); +// logger.info("每天0点1分执行 国内标准文本状态 即将实施和现行有效状态自动变更逻辑:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); +// +// // 发布、即将实施 只查询国内标准 +// List list = new ArrayList<>(); +// // 发布 +// list.add("hc99551723c"); +// // 即将实施 +// list.add("hb0iy9z23c"); +// QueryWrapper wrapper = new QueryWrapper(); +// wrapper.eq("A.VALID_FLAG","0"); +// wrapper.eq("STAND_TYPE","INLAND"); +// wrapper.in("A.TEXT_STATUS",list); +// List getStateScheduledList = sarStandardsInfoDao.getStateScheduledList(wrapper); +// if(!getStateScheduledList.isEmpty()){ +// // N个实施日期中大于当前日期 +// List getStateScheduledListToIsAfter = getStateScheduledList.stream().filter(info -> { +// if(StringUtils.isNotBlank(info.getSSRQ())){ +// List dateList = Arrays.stream(info.getSSRQ().split(",")).map(String::trim).collect(Collectors.toList()); +// List dateIsAfterList = dateList.stream().filter(s -> { +// if(Util.isValidDate(s)){ +// LocalDateTime now = LocalDateTime.now(); +// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); +// LocalDateTime parse = LocalDate.parse(s, dateTimeFormatter).atStartOfDay(); +// // 实施日期是否大于当前日期 +// return parse.isAfter(now); +// } +// return false; +// }).collect(Collectors.toList()); +// +// return !dateIsAfterList.isEmpty(); +// } +// return false; +// }).collect(Collectors.toList()); +// +// +// // N个实施日期中小于当前时间 +// List getStateScheduledListToIsBefore = getStateScheduledList.stream().filter(info -> { +// if(StringUtils.isNotBlank(info.getSSRQ())){ +// List dateList = Arrays.stream(info.getSSRQ().split(",")).map(String::trim).collect(Collectors.toList()); +// List dateIsBeforeList = dateList.stream().filter(s -> { +// if(Util.isValidDate(s)){ +// LocalDateTime now = LocalDateTime.now(); +// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); +// LocalDateTime parse = LocalDate.parse(s, dateTimeFormatter).atStartOfDay(); +// // 实施日期是否小于当前时间 +// return parse.isBefore(now); +// } +// return false; +// }).collect(Collectors.toList()); +// +// return !dateIsBeforeList.isEmpty(); +// } +// return false; +// }).collect(Collectors.toList()); +// +// // N个实施日期中大于当前日期 执行逻辑 更为即将实施 +// if(!getStateScheduledListToIsAfter.isEmpty()){ +// logger.info("=============N个实施日期中大于当前日期 执行============"); +// // 文本状态更为即将实施 +// execStandDate(getStateScheduledListToIsAfter,"hb0iy9z23c"); +// } +// +// // N个实施日期中小于当前时间 执行逻辑 更为现行有效 +// if(!getStateScheduledListToIsBefore.isEmpty()){ +// logger.info("=============N个实施日期中小于当前时间 执行============"); +// // 文本状态更为现行有效 +// execStandDate(getStateScheduledListToIsBefore,"vsaga7nwub"); +// } +// +// } +// +// +// logger.info("每天0点1分执行 国内标准文本状态 即将实施和现行有效状态自动变更逻辑:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); +// }catch(Exception e){ +// logger.info(e.getMessage()); +// } +// } +// } +// +// // 每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止 +//// @Scheduled(cron="0 0 1 1 * ?") +//// @Scheduled(cron="*/60 * * * * ?") +//// @Scheduled(cron = "0 1 0 * * ?") +// @Async +// public void StandScheduledToAbolish(){ +// if(isNotScheduled){ +// try{ +// Thread.sleep(2000); +// logger.info("每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); +// +// // 现行有效、即将实施、被代替 只查询国内标准 +// List list = new ArrayList<>(); +// // 现行有效 +// list.add("vsaga7nwub"); +// // 即将实施 +// list.add("hb0iy9z23c"); +// // 被代替 +// list.add("qke0ckro2p"); +// QueryWrapper wrapper = new QueryWrapper(); +// wrapper.eq("A.VALID_FLAG","0"); +// wrapper.eq("STAND_TYPE","INLAND"); +// wrapper.in("A.TEXT_STATUS",list); +// List getStateStandScheduledList = sarStandardsInfoDao.getStateScheduledList(wrapper); +// +// if(!getStateStandScheduledList.isEmpty()){ +// +// List invalidStandToGBList = new ArrayList<>(); +// List bdtStandToGBList = new ArrayList<>(); +// +// // 当前标准的标准类别是否是GB类 GB集合逻辑 +// getStateStandScheduledList.forEach(info -> { +// if(StringUtils.isNotBlank(info.getBDTBZH())){ +// List bdtList = Arrays.stream(info.getBDTBZH().split(",")).map( +// s -> s.replace(" ","").trim()).collect(Collectors.toList()); +// // 查询等于GB的国内标准 +// QueryWrapper wrapperGB = new QueryWrapper(); +// wrapperGB.eq("SAR_STANDARDS_INFO.VALID_FLAG","0"); +// wrapperGB.eq("SAR_STANDARDS_INFO.STAND_SORT","GB"); +// wrapperGB.in("trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-'," + +// "SAR_STANDARDS_INFO.STAND_YEAR),' ',''))",bdtList); +// List queryGBList = sarStandardsInfoDao.selectList(wrapperGB); +// +// if(!queryGBList.isEmpty()){ +// int queryGbCount = queryGBList.size(); +// +// //被代替标准号中所有有效标准的状态都是现行有效状态 +// List yxList = queryGBList.stream().filter(info1 -> +// "vsaga7nwub".equals(info1.getTextStatus())).collect(Collectors.toList()); +// +// //被代替标准号中所有有效标准的状态都是被代替状态 +// List bdtStateList = queryGBList.stream().filter(info1 -> +// "qke0ckro2p".equals(info1.getTextStatus())).collect(Collectors.toList()); +// +// //被代替标准号中所有有效标准的状态都是废止状态 +// List fzList = queryGBList.stream().filter(info1 -> +// "chblaarg77".equals(info1.getTextStatus())).collect(Collectors.toList()); +// +// // 满足其上存入更新废止逻辑 如果只有一个被代替标准 优先更新废止状态 +// if(yxList.size() == queryGbCount || bdtStateList.size() == queryGbCount || fzList.size() == queryGbCount){ +// invalidStandToGBList.add(info); +// }else { +// // 被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的 +// List singleList = queryGBList.stream().filter(info1 -> { +// if("hc99551723c".equals(info1.getTextStatus()) || "hb0iy9z23c".equals(info1.getTextStatus()) +// || "vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus())){ +// return true; +// } +// return false; +// }).collect(Collectors.toList()); +// +// // 满足其上存入更新被代替逻辑 +// if(!singleList.isEmpty()){ +// bdtStandToGBList.add(info); +// } +// } +// } +// } +// }); +// +// +// // 当前标准的标准类别是否是GB类 NOT GB集合逻辑 +// List bdtStandToNotGBList = getStateStandScheduledList.stream().filter(info -> { +// if(StringUtils.isNotBlank(info.getBDTBZH())){ +// List bdtList = Arrays.stream(info.getBDTBZH().split(",")).map( +// s -> s.replace(" ","").trim()).collect(Collectors.toList()); +// +// //发布、即将实施、现行有效、被代替 +// List bdtStateList = new ArrayList<>(); +// // 发布 +// bdtStateList.add("hc99551723c"); +// // 作废 +// bdtStateList.add("hb0iy9z23c"); +// // 即将实施 +// bdtStateList.add("vsaga7nwub"); +// // 被代替 +// bdtStateList.add("qke0ckro2p"); +// +// // 查询不等于GB的国内标准 且 有效的被代替标准 +// QueryWrapper wrapperNotGB = new QueryWrapper(); +// wrapperNotGB.eq("VALID_FLAG","0"); +// wrapperNotGB.ne("STAND_SORT","GB"); +// wrapperNotGB.in("TEXT_STATUS",wrapperNotGB); +// wrapperNotGB.in("trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-'," + +// "SAR_STANDARDS_INFO.STAND_YEAR),' ',''))",bdtList); +// List queryNotGBList = sarStandardsInfoDao.selectList(wrapperNotGB); +// +// // 被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的 +// // 满足其上过滤更新被代替数据 +// return !queryNotGBList.isEmpty(); +// } +// return false; +// }).collect(Collectors.toList()); +// +// if(!invalidStandToGBList.isEmpty()){ +// logger.info("=============被代替标准号中所有有效标准的状态都是现行有效、被代替、废止状态 执行============"); +// // 文本状态更为废止状态 +// execStandDate(invalidStandToGBList,"chblaarg77"); +// } +// +// if(!bdtStandToGBList.isEmpty()){ +// logger.info("=============GB=======被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的 执行============"); +// // 文本状态更为被代替 +// execStandDate(bdtStandToGBList,"qke0ckro2p"); +// } +// +// if(!bdtStandToNotGBList.isEmpty()){ +// logger.info("=============NOT GB ===被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的 执行============"); +// // 文本状态更为被代替 +// execStandDate(bdtStandToNotGBList,"qke0ckro2p"); +// } +// +// +// +// } +// +// logger.info("每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); +// }catch(Exception e){ +// logger.info(e.getMessage()); +// } +// } +// } +// +// +// +// @Async +// public void execStandDate(List infoList, String textStatusStand) throws Exception { +// List list = new ArrayList<>(); +// for (SarStandardsInfo info : infoList) { +// info.setTextStatus(textStatusStand); +// standFunc(info); +// createStandMQService.sendStandMQ(info,"update"); +// +// // 只批量更新文本字段 +// SarStandardsInfo newInfo = new SarStandardsInfo(); +// newInfo.setTextStatus(textStatusStand); +// newInfo.setId(info.getId()); +// newInfo.setModifyTime(new Date()); +// list.add(newInfo); +// } +// +// if(!list.isEmpty()){ +// iSarStandardsInfoService.updateBatchById(list); +// } +// } +// +// private void standFunc(SarStandardsInfo sarStandardsInfoEO) throws Exception { +// attrInfoSearchDetails(sarStandardsInfoEO); +// FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); +// pageInfo.setStandId(sarStandardsInfoEO.getId()); +// pageInfo.setFileType("FBGBJBD"); +// +// /** +// * SarItemVO换为sarItemVOS +// * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); +// * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); +// */ +// +// List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); +// if (!sarItemVOS.isEmpty()) { +// Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) +// .collect(Collectors.toMap(SarStandItems::getItemsNum, SarStandItems::getTermsConditions)); +// sarStandardsInfoEO.setMapItems(collectMap); +// } +// if (sarStandardsInfoEO.getAttrInfoMap() != null) { +// sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); +// } +// } +// +// public void attrInfoSearchDetails(SarStandardsInfo row) throws Exception { +// if (row != null) { +// String fieldInfo = InitStandAttrUtil.queryField; +// String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); +// row.setCollectId(collectId); +// // 查询属性表数据 +// if (StringUtils.isNotBlank(fieldInfo)) { +// Map getAttrMap = sarStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); +// if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { +// // 遍历修改所有clob类型的值 +// for (String clobField : InitStandAttrUtil.clobFieldList) { +// Clob clobValue = (Clob) getAttrMap.get(clobField); +// String fieldValue = FieldConvertUtil.ClobToString(clobValue); +// getAttrMap.put(clobField, fieldValue); +// } +// } +// +// row.setAttrInfoMap(getAttrMap); +// } +// +// Map getAttrMap = row.getAttrInfoMap(); +// if (getAttrMap != null && getAttrMap.size() > 0) { +// for (Map.Entry entry : getAttrMap.entrySet()) { +// String name = entry.getKey(); +// String value = ""; +// List valArr = new ArrayList<>(); +// if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { +// if (StringUtils.isNotBlank(entry.getValue().toString())) { +// Object json = new JSONTokener(entry.getValue().toString()).nextValue(); +// if (json instanceof org.json.JSONArray) { +// valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(), String.class); +// } else { +// value = entry.getValue().toString(); +// valArr = Arrays.asList(value.split(",")); +// } +// if (!valArr.isEmpty()) { +// value = dicTypeEODao.getDicNamesByCodes(valArr, ""); +// } +// } +// entry.setValue(value); +// } +// } +// } +// } +// } +// +// +//} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSyncFz.java b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSyncFz.java new file mode 100644 index 00000000..34370397 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSyncFz.java @@ -0,0 +1,298 @@ +package com.adc.da.scheduledState.server; + +import com.adc.da.common.GetBeanUtil; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.bean.SearchCenter; +import com.adc.da.search.server.ResetSearchCenterService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandAttrInfo.service.ISarStandAttrInfoService; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.entity.FindSarItemsPageReqDTO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.utils.util.FieldConvertUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.Utils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; + +import java.sql.Clob; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年01月25日 3:34 + */ + +@Slf4j +public class UpdateStateStandSyncFz implements Runnable { + Logger logger = LoggerFactory.getLogger(UpdateStateStandSyncFz.class); + + private DicTypeEODao dicTypeEODao; + + private SarStandItemsDao standItemsDao; + + private CreateStandMQService createStandMQService; + + private IPersonCollectEOService personCollectEOService; + + private SarStandAttrInfoDao sarStandAttrInfoEODao; + + private SarStandardsInfoDao sarStandardsInfoDao; + + private ISarStandardsInfoService iSarStandardsInfoService; + + private ISarStandAttrInfoService sarStandAttrInfoEOService; + + private ISarUpdLogService sarUpdLogEOService; + + + /** + * 根据配置文件设置是否开启定时器 + */ + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + + public UpdateStateStandSyncFz(){ + dicTypeEODao = GetBeanUtil.getApplicationContext().getBean(DicTypeEODao.class); + standItemsDao = GetBeanUtil.getApplicationContext().getBean(SarStandItemsDao.class); + createStandMQService = GetBeanUtil.getApplicationContext().getBean(CreateStandMQService.class); + personCollectEOService = GetBeanUtil.getApplicationContext().getBean(IPersonCollectEOService.class); + sarStandAttrInfoEODao = GetBeanUtil.getApplicationContext().getBean(SarStandAttrInfoDao.class); + sarStandardsInfoDao = GetBeanUtil.getApplicationContext().getBean(SarStandardsInfoDao.class); + iSarStandardsInfoService = GetBeanUtil.getApplicationContext().getBean(ISarStandardsInfoService.class); + sarStandAttrInfoEOService = GetBeanUtil.getApplicationContext().getBean(ISarStandAttrInfoService.class); + sarUpdLogEOService = GetBeanUtil.getApplicationContext().getBean(ISarUpdLogService.class); + } + + + /** + * 每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止 + */ + @Override + public void run() { + try{ + Thread.sleep(2000); + logger.info("每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); + + // 现行有效、即将实施、被代替 只查询国内标准 + List list = new ArrayList<>(); + // 现行有效 + list.add("vsaga7nwub"); + // 即将实施 + list.add("hb0iy9z23c"); + // 被代替 + list.add("qke0ckro2p"); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("A.VALID_FLAG","0"); + wrapper.eq("STAND_TYPE","INLAND"); + wrapper.in("A.TEXT_STATUS",list); + List getStateStandScheduledList = sarStandardsInfoDao.getStateScheduledList(wrapper); + + if(!getStateStandScheduledList.isEmpty()){ + + List invalidStandToGBList = new ArrayList<>(); + List bdtStandToGBList = new ArrayList<>(); + List bdtStandToNotGBList = new ArrayList<>(); + // 当前标准的标准类别是否是GB类 GB集合逻辑 + getStateStandScheduledList.forEach(info -> { + if(StringUtils.isNotBlank(info.getBDTBZH())){ + List bdtList = Arrays.stream(info.getBDTBZH().split(",")).map( + s -> s.replace(" ","").trim()).collect(Collectors.toList()); + int bdtStandNumCount = bdtList.size(); + QueryWrapper wrapperGB = new QueryWrapper(); + wrapperGB.eq("SAR_STANDARDS_INFO.VALID_FLAG","0"); +// wrapperGB.eq("SAR_STANDARDS_INFO.STAND_SORT","GB"); + wrapperGB.in("trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-'," + + "SAR_STANDARDS_INFO.STAND_YEAR),' ',''))",bdtList); + List queryGBList = sarStandardsInfoDao.selectList(wrapperGB); + //被代替标准号中所有有效标准的状态都是现行有效状态 + List fzList = queryGBList.stream().filter(info1 -> + "vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus()) + || "chblaarg77".equals(info1.getTextStatus())).collect(Collectors.toList()); + // 检查当前标准是否为GB类 + if(StringUtils.equals(info.getStandSort(),"GB")){ + if(fzList.size() == bdtStandNumCount){//当所有标准都是现行有效状态时 + invalidStandToGBList.add(info); + }else{//其中被代替标准号中存在 + List singleList = queryGBList.stream().filter(info1 -> { + if("hc99551723c".equals(info1.getTextStatus()) || "hb0iy9z23c".equals(info1.getTextStatus()) + || "vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus())){ + return true; + } + return false; + }).collect(Collectors.toList()); + // 满足其上存入更新被代替逻辑 + if(!singleList.isEmpty()){ + bdtStandToGBList.add(info); + } + } + }else{//非GB类 + if(fzList.size()>0){ + bdtStandToNotGBList.add(info); + } + } + } + }); + + if(!invalidStandToGBList.isEmpty()){ + logger.info("=============被代替标准号中所有有效标准的状态都是现行有效、被代替、废止状态 执行============"); + // 文本状态更为废止状态 + execStandDate(invalidStandToGBList,"chblaarg77"); + } + + if(!bdtStandToGBList.isEmpty()){ + logger.info("=============GB=======被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的 执行============"); + // 文本状态更为被代替 + execStandDate(bdtStandToGBList,"qke0ckro2p"); + } + + if(!bdtStandToNotGBList.isEmpty()){ + logger.info("=============NOT GB ===被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的 执行============"); + // 文本状态更为被代替 + execStandDate(bdtStandToNotGBList,"qke0ckro2p"); + } + } + + logger.info("每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); + }catch(Exception e){ + logger.error(e.getMessage(),e); + } + } + + @Async + public void execStandDate(List infoList, String textStatusStand) throws Exception { + List list = new ArrayList<>(); + for (SarStandardsInfo info : infoList) { + saveUpdateLog(info,textStatusStand); + info.setTextStatus(textStatusStand); + standFunc(info); + createStandMQService.sendStandMQ(info,"update"); + + // 只批量更新文本字段 + SarStandardsInfo newInfo = new SarStandardsInfo(); + newInfo.setTextStatus(textStatusStand); + newInfo.setId(info.getId()); + newInfo.setModifyTime(new Date()); + list.add(newInfo); + } + + if(!list.isEmpty()){ + iSarStandardsInfoService.updateBatchById(list); + } + } + + public void saveUpdateLog(SarStandardsInfo sarStandardsInfoEO, String textStatusStand){ + try { + Map newMap = new HashMap<>(); + newMap.put("textStatus", verifyObj(textStatusStand)); + Map oldMap = new HashMap<>(); + oldMap.put("textStatus", verifyObj(sarStandardsInfoEO.getTextStatus())); + + // 增加关联事件 + String number = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + if (StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) { + number += "-" + sarStandardsInfoEO.getStandYear(); + } + String content = number + " 《" + sarStandardsInfoEO.getStandName() + "》"; + sarUpdLogEOService.createUpdateLog(sarStandardsInfoEO.getStandType() + "_STAND", sarStandardsInfoEO.getId(), oldMap, newMap, content); + }catch (Exception e){ + System.out.println(e.getMessage()); + } + } + + private Object verifyObj(Object str) { + return str == null ? "" : str; + } + + + private void standFunc(SarStandardsInfo sarStandardsInfoEO) throws Exception { + attrInfoSearchDetails(sarStandardsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarStandardsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + if (!sarItemVOS.isEmpty()) { + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarStandItems::getItemsNum, SarStandItems::getTermsConditions)); + sarStandardsInfoEO.setMapItems(collectMap); + } + if (sarStandardsInfoEO.getAttrInfoMap() != null) { + sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); + } + } + + public void attrInfoSearchDetails(SarStandardsInfo row) throws Exception { + if (row != null) { + String fieldInfo = InitStandAttrUtil.queryField; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + row.setAttrInfoMap(getAttrMap); + } + + Map getAttrMap = row.getAttrInfoMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { + if (StringUtils.isNotBlank(entry.getValue().toString())) { + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if (json instanceof org.json.JSONArray) { + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(), String.class); + } else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if (!valArr.isEmpty()) { + value = dicTypeEODao.getDicNamesByCodes(valArr, ""); + } + } + entry.setValue(value); + } + } + } + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSyncSsAndYx.java b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSyncSsAndYx.java new file mode 100644 index 00000000..1e17fa14 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/server/UpdateStateStandSyncSsAndYx.java @@ -0,0 +1,292 @@ +package com.adc.da.scheduledState.server; + +import com.adc.da.common.GetBeanUtil; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.scheduledState.utils.Util; +import com.adc.da.search.server.ResetSearchCenterService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandAttrInfo.service.ISarStandAttrInfoService; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.entity.FindSarItemsPageReqDTO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.utils.util.FieldConvertUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.Utils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; + +import java.sql.Clob; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年01月25日 3:34 + */ + +@Slf4j +public class UpdateStateStandSyncSsAndYx implements Runnable { + Logger logger = LoggerFactory.getLogger(UpdateStateStandSyncSsAndYx.class); + + private ResetSearchCenterService resetSearchCenterService; + + private DicTypeEODao dicTypeEODao; + + private SarStandItemsDao standItemsDao; + + private CreateStandMQService createStandMQService; + + private IPersonCollectEOService personCollectEOService; + + private SarStandAttrInfoDao sarStandAttrInfoEODao; + + private SarStandardsInfoDao sarStandardsInfoDao; + + private ISarStandardsInfoService iSarStandardsInfoService; + + private ISarStandAttrInfoService sarStandAttrInfoEOService; + + private ISarUpdLogService sarUpdLogEOService; + + + /** + * 根据配置文件设置是否开启定时器 + */ + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + public UpdateStateStandSyncSsAndYx(){ + dicTypeEODao = GetBeanUtil.getApplicationContext().getBean(DicTypeEODao.class); + standItemsDao = GetBeanUtil.getApplicationContext().getBean(SarStandItemsDao.class); + createStandMQService = GetBeanUtil.getApplicationContext().getBean(CreateStandMQService.class); + personCollectEOService = GetBeanUtil.getApplicationContext().getBean(IPersonCollectEOService.class); + sarStandAttrInfoEODao = GetBeanUtil.getApplicationContext().getBean(SarStandAttrInfoDao.class); + sarStandardsInfoDao = GetBeanUtil.getApplicationContext().getBean(SarStandardsInfoDao.class); + iSarStandardsInfoService = GetBeanUtil.getApplicationContext().getBean(ISarStandardsInfoService.class); + sarStandAttrInfoEOService = GetBeanUtil.getApplicationContext().getBean(ISarStandAttrInfoService.class); + sarUpdLogEOService = GetBeanUtil.getApplicationContext().getBean(ISarUpdLogService.class); + } + + + /** + * 每天0点1分执行 国内标准文本状态 即将实施和现行有效状态自动变更逻辑 + */ + @Override + public void run() { + try{ + Thread.sleep(2000); + logger.info("每天0点1分执行 国内标准文本状态 即将实施和现行有效状态自动变更逻辑:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); + + // 发布、即将实施 只查询国内标准 + List list = new ArrayList<>(); + // 发布 + list.add("hc99551723c"); + // 即将实施 + list.add("hb0iy9z23c"); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("A.VALID_FLAG","0"); + wrapper.eq("STAND_TYPE","INLAND"); + wrapper.in("A.TEXT_STATUS",list); + List getStateScheduledList = sarStandardsInfoDao.getStateScheduledList(wrapper); + if(!getStateScheduledList.isEmpty()){ + // N个实施日期中大于当前日期 + List getStateScheduledListToIsAfter = getStateScheduledList.stream().filter(info -> { + if(StringUtils.isNotBlank(info.getSSRQ())){ + List dateList = Arrays.stream(info.getSSRQ().split(",")).map(String::trim).collect(Collectors.toList()); + List dateIsAfterList = dateList.stream().filter(s -> { + if(Util.isValidDate(s)){ + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDateTime parse = LocalDate.parse(s, dateTimeFormatter).atStartOfDay(); + // 实施日期是否大于当前日期 + return parse.isAfter(now); + } + return false; + }).collect(Collectors.toList()); + + return !dateIsAfterList.isEmpty(); + } + return false; + }).collect(Collectors.toList()); + + + // N个实施日期中小于当前时间 + List getStateScheduledListToIsBefore = getStateScheduledList.stream().filter(info -> { + if(StringUtils.isNotBlank(info.getSSRQ())){ + List dateList = Arrays.stream(info.getSSRQ().split(",")).map(String::trim).collect(Collectors.toList()); + List dateIsBeforeList = dateList.stream().filter(s -> { + if(Util.isValidDate(s)){ + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDateTime parse = LocalDate.parse(s, dateTimeFormatter).atStartOfDay(); + // 实施日期是否小于当前时间 + return parse.isBefore(now); + } + return false; + }).collect(Collectors.toList()); + + return !dateIsBeforeList.isEmpty(); + } + return false; + }).collect(Collectors.toList()); + + // N个实施日期中大于当前日期 执行逻辑 更为即将实施 + if(!getStateScheduledListToIsAfter.isEmpty()){ + logger.info("=============N个实施日期中大于当前日期 执行============"); + // 文本状态更为即将实施 + execStandDate(getStateScheduledListToIsAfter,"hb0iy9z23c"); + } + + // N个实施日期中小于当前时间 执行逻辑 更为现行有效 + if(!getStateScheduledListToIsBefore.isEmpty()){ + logger.info("=============N个实施日期中小于当前时间 执行============"); + // 文本状态更为现行有效 + execStandDate(getStateScheduledListToIsBefore,"vsaga7nwub"); + } + + } + + + logger.info("每天0点1分执行 国内标准文本状态 即将实施和现行有效状态自动变更逻辑:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); + }catch(Exception e){ + logger.info(e.getMessage()); + } + } + + @Async + public void execStandDate(List infoList, String textStatusStand) throws Exception { + List list = new ArrayList<>(); + for (SarStandardsInfo info : infoList) { + info.setTextStatus(textStatusStand); + standFunc(info); + createStandMQService.sendStandMQ(info,"update"); + + saveUpdateLog(info,textStatusStand); + + // 只批量更新文本字段 + SarStandardsInfo newInfo = new SarStandardsInfo(); + newInfo.setTextStatus(textStatusStand); + newInfo.setId(info.getId()); + newInfo.setModifyTime(new Date()); + list.add(newInfo); + } + + if(!list.isEmpty()){ + iSarStandardsInfoService.updateBatchById(list); + } + } + + public void saveUpdateLog(SarStandardsInfo sarStandardsInfoEO, String textStatusStand){ + try { + Map newMap = new HashMap<>(); + newMap.put("textStatus", verifyObj(textStatusStand)); + Map oldMap = new HashMap<>(); + oldMap.put("textStatus", verifyObj(sarStandardsInfoEO.getTextStatus())); + + // 增加关联事件 + String number = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + if (StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) { + number += "-" + sarStandardsInfoEO.getStandYear(); + } + String content = number + " 《" + sarStandardsInfoEO.getStandName() + "》"; + sarUpdLogEOService.createUpdateLog(sarStandardsInfoEO.getStandType() + "_STAND", sarStandardsInfoEO.getId(), oldMap, newMap, content); + }catch (Exception e){ + System.out.println(e.getMessage()); + } + } + + private Object verifyObj(Object str) { + return str == null ? "" : str; + } + + private void standFunc(SarStandardsInfo sarStandardsInfoEO) throws Exception { + attrInfoSearchDetails(sarStandardsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarStandardsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + if (!sarItemVOS.isEmpty()) { + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarStandItems::getItemsNum, SarStandItems::getTermsConditions)); + sarStandardsInfoEO.setMapItems(collectMap); + } + if (sarStandardsInfoEO.getAttrInfoMap() != null) { + sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); + } + } + + public void attrInfoSearchDetails(SarStandardsInfo row) throws Exception { + if (row != null) { + String fieldInfo = InitStandAttrUtil.queryField; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + row.setAttrInfoMap(getAttrMap); + } + + Map getAttrMap = row.getAttrInfoMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { + if (StringUtils.isNotBlank(entry.getValue().toString())) { + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if (json instanceof org.json.JSONArray) { + valArr = JSONObject.parseArray(entry.getValue().toString(), String.class); + } else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if (!valArr.isEmpty()) { + value = dicTypeEODao.getDicNamesByCodes(valArr, ""); + } + } + entry.setValue(value); + } + } + } + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/scheduledState/utils/Util.java b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/utils/Util.java new file mode 100644 index 00000000..0ab4a92c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/scheduledState/utils/Util.java @@ -0,0 +1,37 @@ +package com.adc.da.scheduledState.utils; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年05月11日 15:36 + */ +public class Util { + /** + * 判断字符串是否为合法的日期格式 + * @param dateStr 待判断的字符串 + * @return + */ + public static boolean isValidDate(String dateStr){ + //判断结果 默认为true + boolean judgeresult=true; + //1、首先使用SimpleDateFormat初步进行判断,过滤掉注入 yyyy-01-32 或yyyy-00-0x等格式 + //此处可根据实际需求进行调整,如需判断yyyy/MM/dd格式将参数改掉即可 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + try{ + //增加强判断条件,否则 诸如2022-02-29也可判断出去 + format.setLenient(false); + Date date =format.parse(dateStr); + }catch(Exception e){ + judgeresult=false; + } + //由于上述方法只能验证正常的日期格式,像诸如 0001-01-01、11-01-01,10001-01-01等无法校验,此处再添加校验年费是否合法 + String yearStr=dateStr.split("-")[0]; + if(yearStr.startsWith("0")||yearStr.length()!=4){ + judgeresult=false; + } + return judgeresult; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/search/ResetSearchCenterController.java b/adc-da-slrs/src/main/java/com/adc/da/search/ResetSearchCenterController.java new file mode 100644 index 00000000..93ea333b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/search/ResetSearchCenterController.java @@ -0,0 +1,178 @@ +package com.adc.da.search; + +import com.adc.da.base.web.BaseController; +import com.adc.da.search.bean.SearchCenter; +import com.adc.da.search.bean.SearchFields; +import com.adc.da.search.server.ResetSearchCenterService; +import com.adc.da.search.server.ResetSearchCenterServiceTemp; +import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/${restPath}/search/resetSearchCenter") +@Api(tags = "搜索中心重置索引及数据") +public class ResetSearchCenterController extends BaseController> { + + private static final Logger logger = LoggerFactory.getLogger(ResetSearchCenterController.class); + + @Autowired + private ResetSearchCenterService resetSearchCenterService; + + @ApiOperation(value = "|Search|ES规则排序字段重置数据维护ES") + @PostMapping(value = "/resetALLSearchCenterToFields") + public ResponseMessage resetALLSearchCenterToFields(@RequestBody SearchFields searchFields) throws Exception { + + return resetSearchCenterService.resetALLSearchCenterToFields(searchFields); + } + + @ApiOperation(value = "|Search|文本条件搜索更新标准数据索引") + @PostMapping(value = "/resetALLSearchCenterToSearch") + public ResponseMessage resetALLSearchCenterToSearch(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + return resetSearchCenterService.resetALLSearchCenterToSearch(searchCenter); + } + + @ApiOperation(value = "|SearchCenter|重新创建ALL标准数据索引") + @PostMapping(value = "/resetALLSearchCenter") + public ResponseMessage resetALLSearchCenter(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + return resetSearchCenterService.resetALLSearchCenter(searchCenter); + } + + + @ApiOperation(value = "|SearchCenter|重新创建ALL标准数据索引") + @PostMapping(value = "/resetALLSearchCenterForExits") + public ResponseMessage resetALLSearchCenterForExits(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + return resetSearchCenterService.resetALLSearchCenterForExits(searchCenter); + } + + + @ApiOperation(value = "|SearchCenter|手动重新创建(---7天内---)ALL标准数据索引(凌晨有自动程序会跑)") + @PostMapping(value = "/manualResetALLSearchCenter") + public ResponseMessage manualResetALLSearchCenter(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + return resetSearchCenterService.syncResetALLSearchCenter(searchCenter); + } + + @ApiOperation(value = "|SearchCenter|手动重新创建 ALL标准数据索引(凌晨有自动程序会跑)") + @PostMapping(value = "/manualResetALLSearchCenter1") + public ResponseMessage manualResetALLSearchCenter1(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + return resetSearchCenterService.syncResetALLSearchCenter1(searchCenter); + } + + private ResponseMessage verifySearchCenter(SearchCenter searchCenter) { + if (searchCenter.getExecType() == null || "".equals(searchCenter.getExecType())) { + return Result.error("执行参数 ALL 存在更新 不存在新增 ,UPD 只 更新存在 es 里的标准 ,ADD 只新增不存在 es 的标准, DEL 只删除不存在标准库的数据"); + } + + return null; + } + + @ApiOperation(value = "|SearchCenter|重新创建国内外标准数据索引") + @PostMapping(value = "/resetAStandSearchCenter") + public ResponseMessage resetStandSearchCenter(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + SarStandardsInfoEOPage sarStandardsInfoEOPage = new SarStandardsInfoEOPage(); + return resetSearchCenterService.resetStandSearchCenter(sarStandardsInfoEOPage, searchCenter); + } + + @ApiOperation(value = "|SearchCenter|重新创建国内外政策数据索引") + @PostMapping(value = "/resetBLawsSearchCenter") + public ResponseMessage resetLawsSearchCenter(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + SarLawsStandInfoPage sarLawsInfoEOPage = new SarLawsStandInfoPage(); + return resetSearchCenterService.resetLawsSearchCenter(sarLawsInfoEOPage, searchCenter); + } + + @ApiOperation(value = "|SearchCenter|重新创建企业标准数据索引") + @PostMapping(value = "/resetCBussStandSearchCenter") + public ResponseMessage resetBussStandSearchCenter(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + SarBussionessStandEOPage sarBussionessStandEOPage = new SarBussionessStandEOPage(); + return resetSearchCenterService.resetBussStandSearchCenter(sarBussionessStandEOPage, searchCenter); + } + + /** + * 根据资源ID对搜索中心数据进行处理 + * @param standId + * @param dataType(STAND BUSS) + * @return + */ + @ApiOperation(value = "|SearchCenter|根据资源ID对搜索中心数据进行处理") + @GetMapping(value = "/syncSearchCenterData") + public ResponseMessage syncSearchCenterData(@RequestParam("standId") String standId, + @RequestParam("dataType") String dataType) { + if (StringUtils.isNotBlank(standId) && StringUtils.isNotBlank(dataType)) { + try { + if ("STAND".equals(dataType)) { + resetSearchCenterService.syncStandSearchCenterData(standId); + } else if ("BUSS".equals(dataType)) { + resetSearchCenterService.syncBussStandSearchCenterData(standId); + } else { + return Result.error("-1", "资源类型错误,请检查", null); + } + return Result.success("200", "开始同步", null); + } catch (Exception e) { + logger.error(e.getMessage(), e); + return Result.error("-1", "请求错误,请检查", null); + } + } else { + return Result.error("-1", "参数有误,请检查", null); + } + } + + @Autowired + private ResetSearchCenterServiceTemp resetSearchCenterServiceTemp; + + @ApiOperation(value = "|SearchCenter|临时手动更新ALL标准数据索引") + @PostMapping(value = "/manualResetALLSearchCenterTemp") + public ResponseMessage manualResetALLSearchCenterTemp(@RequestBody SearchCenter searchCenter) throws Exception { + ResponseMessage x = verifySearchCenter(searchCenter); + if (x != null) { + return x; + } + return resetSearchCenterServiceTemp.syncResetALLSearchCenter(searchCenter); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/search/bean/SearchCenter.java b/adc-da-slrs/src/main/java/com/adc/da/search/bean/SearchCenter.java new file mode 100644 index 00000000..4565eb87 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/search/bean/SearchCenter.java @@ -0,0 +1,34 @@ +package com.adc.da.search.bean; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年03月08日 14:21 + */ +@Data +public class SearchCenter { + + @ApiModelProperty(value = "根据搜索条件") + private String search; + +// @ApiModelProperty(value = "分页查询总数 可不填 自动带入总数") +// private Integer countStand; + + @NotNull + @ApiModelProperty(value = "执行参数 ALL 存在更新 不存在新增 ,UPD 只 更新存在 es 里的标准 ,ADD 只新增不存在 es 的标准," + + " DEL 只删除不存在标准库的数据(删除只能用DEL 减少自动错删)," + + "UPDNONEXISTENT (只支持文本查询接口)更新不存在字段业务数据(其他任务导致ES不同步), UPDNONEXISTENT_TEXTSTATUS (只支持文本查询接口,文本状态高亮字段不同步重置)," + + "UPDNONEXISTENT_NAMEEN (只支持文本查询接口,维护ES 英文字段不存在的数据)") + private String execType; + + @NotNull + @ApiModelProperty(value = "指定可执行的标准ID集合") + private List idList; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/search/bean/SearchFields.java b/adc-da-slrs/src/main/java/com/adc/da/search/bean/SearchFields.java new file mode 100644 index 00000000..a4c7d80f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/search/bean/SearchFields.java @@ -0,0 +1,18 @@ +package com.adc.da.search.bean; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: TODO + * @author: super_liu + */ +@Data +public class SearchFields { + + @ApiModelProperty(value = "根据搜索条件") + private String search; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/search/conf/SchedulerConf.java b/adc-da-slrs/src/main/java/com/adc/da/search/conf/SchedulerConf.java new file mode 100644 index 00000000..648dc42d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/search/conf/SchedulerConf.java @@ -0,0 +1,199 @@ +package com.adc.da.search.conf; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年05月27日 10:17 + */ + +import com.adc.da.slrs.tsTask.dao.TbTaskDao; +import com.adc.da.slrs.tsTask.entity.TbTask; +import com.adc.da.slrs.tsTask.service.ITbTaskService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; +import org.springframework.scheduling.support.CronTrigger; +import org.springframework.stereotype.Component; + +import java.net.Inet4Address; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ScheduledFuture; + +/** + * 动态定时器 + */ +@Slf4j +@Component +public class SchedulerConf { + + //数据库的任务 + public static ConcurrentHashMap tasks = new ConcurrentHashMap<>(50); + + //正在运行的任务 + public static ConcurrentHashMap runTasks = new ConcurrentHashMap<>(50); + + //线程池任务调度 + private ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); + + @Autowired + TbTaskDao tbTaskDao; + + @Autowired + ITbTaskService iTbTaskService; + + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + + /** + * 初始化线程池任务调度 + */ + @Autowired + public SchedulerConf() { + this.threadPoolTaskScheduler.setPoolSize(50); + this.threadPoolTaskScheduler.setThreadNamePrefix("task-thread-"); + this.threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true); + this.threadPoolTaskScheduler.initialize(); + } + + /** + * 获取所有数据库里的定时任务 + */ + private void getAllTbTask() { + //查询所有,并put到tasks + SchedulerConf.tasks.clear(); + List list = iTbTaskService.list(); + list.forEach((task) -> SchedulerConf.tasks.put(task.getId(), task)); + } + + /** + * 根据定时任务id,启动定时任务 + */ + public void start(String taskId) { + try { + //重新获取最新执行任务周期 + this.getAllTbTask(); + + TbTask tbTask = SchedulerConf.tasks.get(taskId); + + //获取并实例化Runnable任务类 + Class clazz = Class.forName(tbTask.getTaskClass()); + Runnable runnable = (Runnable) clazz.newInstance(); + + //Cron表达式 + CronTrigger cron = new CronTrigger(tbTask.getTaskExp()); + + //执行,并put到runTasks + SchedulerConf.runTasks.put(taskId, Objects.requireNonNull(this.threadPoolTaskScheduler.schedule(runnable, cron))); + + this.updateTaskStatus(taskId, 1); + + log.info("{},任务启动!", taskId); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { + log.error("{},任务启动失败...", taskId); + log.error(e.getMessage(),e); + } + + } + + /** + * 根据定时任务id,停止定时任务 + */ + public void stop(String taskId) { + SchedulerConf.runTasks.get(taskId).cancel(true); + + SchedulerConf.runTasks.remove(taskId); + + this.updateTaskStatus(taskId, 0); + + log.info("{},任务停止...", taskId); + } + + public TbTask manualRunTask(String taskId){ + TbTask task = iTbTaskService.getById(taskId); + if(task!=null){ + try { + //获取并实例化Runnable任务类 + Class clazz = Class.forName(task.getTaskClass()); + Runnable runnable = (Runnable) clazz.newInstance(); + Thread runTaskThread = new Thread(runnable); + runTaskThread.start(); + log.info("{},任务开始启动执行!", task.getTaskDesc()); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { + log.error("{},任务启动失败...", task.getTaskDesc()); + log.error(e.getMessage(),e); + + } + return task; + }else{ + return null; + } + } + + + /** + * 根据ip开启定时任务 + */ + public void startByIp() throws Exception { + if(isNotScheduled){ + List addr = getIpAddress(); + //查询 + List tbTaskList = tbTaskDao.selectList(null); + for (TbTask tbTask : tbTaskList) { + if (addr == null){ + log.error("本机地址未获取到!!"); + break; + } + String ips = tbTask.getIp(); + String[] ipArray = ips.split(","); + for (String realIp : ipArray) { + if (addr.contains(realIp)) { + log.info("本机ip地址:" + addr); + this.start(tbTask.getId()); + log.info("执行了:" + tbTask.getTaskDesc()); + } + } + } + } + } + + private static List getIpAddress() { + try { + List ips = new ArrayList<>(); + Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces(); + while (allNetInterfaces.hasMoreElements()) { + NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement(); + Enumeration addresses = netInterface.getInetAddresses(); + while (addresses.hasMoreElements()) { + InetAddress ip = (InetAddress) addresses.nextElement(); + if (ip != null + && ip instanceof Inet4Address + && !ip.isLoopbackAddress() //loopback地址即本机地址,IPv4的loopback范围是127.0.0.0 ~ 127.255.255.255 + && ip.getHostAddress().indexOf(":") == -1) { + log.info("本机的IP = " + ip.getHostAddress()); + ips.add(ip.getHostAddress()); + } + } + } + return ips; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 更新数据库动态定时任务状态 + */ + private void updateTaskStatus(String taskId, int status) { + TbTask task = iTbTaskService.getById(taskId); + task.setTaskStatus(status); + task.setUpdateTime(new Date()); + iTbTaskService.updateById(task); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/search/server/ResetSearchCenterService.java b/adc-da-slrs/src/main/java/com/adc/da/search/server/ResetSearchCenterService.java new file mode 100644 index 00000000..eeb2ec26 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/search/server/ResetSearchCenterService.java @@ -0,0 +1,2061 @@ +package com.adc.da.search.server; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.mq.CreateEsMQService; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.bean.SearchCenter; +import com.adc.da.search.bean.SearchFields; +import com.adc.da.search.service.ElasticsearchService; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarLawsAttrInfo.dao.SarLawsAttrInfoDao; +import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; +import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; +import com.adc.da.slrs.sarLawsItems.dao.SarLawsItemsDao; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoPage; +import com.adc.da.slrs.sarLawsStandInfo.service.ISarLawsStandInfoService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.entity.FindSarItemsPageReqDTO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.standardSplit.service.SarStandardsInfoEOService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.utils.util.DateUtil; +import com.adc.da.utils.util.FieldConvertUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.Utils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.elasticsearch.client.transport.TransportClient; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.BeanClassLoaderAware; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; +import java.sql.Clob; +import java.util.*; +import java.util.stream.Collectors; + +@Service("resetSearchCenterService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ResetSearchCenterService { + private static final Logger logger = LoggerFactory.getLogger(ResetSearchCenterService.class); + + @Autowired + private ElasticsearchService elasticsearchService; + + @Autowired + private TransportClient transportClient; + + @Autowired + private TransportClient client; + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private SarStandItemsDao standItemsDao; + + @Autowired + private SarLawsItemsDao sarLawsItemsDao; + + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private SarLawsAttrInfoDao sarLawsAttrInfoDao; + + @Autowired + private ISarStandardsInfoService iSarStandardsInfoService; + + @Autowired + private ISarLawsStandInfoService iSarLawsStandInfoService; + + @Autowired + private ISarBussionessStandService iSarBussionessStandService; + + @Autowired + private CreateStandMQService createStandMQService; + + @Autowired + private CreateEsMQService createEsMQService; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private SarStandAttrInfoDao sarStandAttrInfoEODao; + + @Autowired + private SarBussStandAttrInfoDao sarBussStandAttrInfoEODao; + + @Autowired + private ISarStandardsInfoService sarStandardsInfoEOService; + + + @PostConstruct + public void init() { + client = this.transportClient; + } + + @Async + public ResponseMessage resetALLSearchCenterToFields(SearchFields searchFields) throws Exception { + + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_id","dic_type_code", "dic_type_name","show_index"); + dicInfo = dicInfo.stream().filter(dicTypeEO -> { + if(StringUtils.isNotBlank(dicTypeEO.getDicTypeCode())){ + dicTypeEO.setDicTypeCode(dicTypeEO.getDicTypeCode().replace(" ","")); + return true; + } + return false; + }).collect(Collectors.toList()); + Map dicMap = dicInfo.stream() + .filter(item-> ("2klxdk7fo3tvpvin70dk".equals(item.getDicId()) || "18mg1g4x0rwubcto7fdd".equals(item.getDicId()) || "08rerbsn8ucjfk13z2ci".equals(item.getDicId()) || "pnv0ik979yqogocqujwo".equals(item.getDicId())) && !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getShowIndex,(value1, value2 )->value2)); + + String search = ""; + if(StringUtils.isNotBlank(searchFields.getSearch())) { + search = searchFields.getSearch(); + } + + Boolean getStandIndex = elasticsearchService.isIndexExist("fulltextserch"); + + if(!getStandIndex){ + logger.info("ES 不存在索引:fulltextserch"); + return Result.error("ES 不存在索引:fulltextserch"); + } + + List> searchListData = elasticsearchService.searchAll("fulltextserch",search); + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + logger.info("ES 国内外标准 fulltextserch "); + resetStandSearchCenterToFields(esIdList,dicMap); + logger.info("ES 国内外政策 fulltextserch "); + resetLawsSearchCenterToFields(esIdList,dicMap); + logger.info("ES 企标 fulltextserch "); + resetBussStandSearchCenterToFields(esIdList,dicMap); + } + + return Result.success(); + } + + @Async + public ResponseMessage resetALLSearchCenterToSearch(SearchCenter searchCenter) throws Exception{ + Boolean getFulltextserchIndex = elasticsearchService.isIndexExist("fulltextserch"); + SearchCenter standSearch = new SearchCenter(); + standSearch.setExecType(searchCenter.getExecType()); + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + standSearch.setSearch(searchCenter.getSearch()); + } + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + standSearch.setIdList(searchCenter.getIdList()); + } + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); + ResponseMessage stand = resetStandSearchCenterToSearch(page,standSearch); + List r = new ArrayList<>(); + if(stand.isOk() && StringUtils.isNotBlank(stand.getData().toString())){ + r.add(stand.getData().toString()); + } + + SearchCenter lawsSearch = new SearchCenter(); + lawsSearch.setExecType(searchCenter.getExecType()); + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + lawsSearch.setSearch(searchCenter.getSearch()); + } + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + lawsSearch.setIdList(searchCenter.getIdList()); + } + SarLawsStandInfoPage lawsPage = new SarLawsStandInfoPage(); + ResponseMessage laws = resetLawsSearchCenterToSearch(lawsPage,lawsSearch); + if(laws.isOk() && StringUtils.isNotBlank(laws.getData().toString())){ + r.add(laws.getData().toString()); + } + + SearchCenter bussSearch = new SearchCenter(); + bussSearch.setExecType(searchCenter.getExecType()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + bussSearch.setIdList(searchCenter.getIdList()); + } + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + bussSearch.setSearch(searchCenter.getSearch()); + } + SarBussionessStandEOPage bussPage = new SarBussionessStandEOPage(); + ResponseMessage buss = resetBussStandSearchCenterToSearch(bussPage,bussSearch); + if(buss.isOk() && StringUtils.isNotBlank(buss.getData().toString())){ + r.add(buss.getData().toString()); + } + + String res = String.join(", ", r); + logger.info(res); + + return Result.success(res); + } + + @Async + public ResponseMessage resetALLSearchCenter(SearchCenter searchCenter) throws Exception{ + Boolean getFulltextserchIndex = elasticsearchService.isIndexExist("fulltextserch"); + SearchCenter standSearch = new SearchCenter(); + standSearch.setExecType(searchCenter.getExecType()); + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + standSearch.setSearch(searchCenter.getSearch()); + } + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + standSearch.setIdList(searchCenter.getIdList()); + } + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); + ResponseMessage stand = resetStandSearchCenter(page,standSearch); + List r = new ArrayList<>(); + if(stand.isOk() && StringUtils.isNotBlank(stand.getData().toString())){ + r.add(stand.getData().toString()); + } + + SearchCenter lawsSearch = new SearchCenter(); + lawsSearch.setExecType(searchCenter.getExecType()); + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + lawsSearch.setSearch(searchCenter.getSearch()); + } + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + lawsSearch.setIdList(searchCenter.getIdList()); + } + SarLawsStandInfoPage lawsPage = new SarLawsStandInfoPage(); + ResponseMessage laws = resetLawsSearchCenter(lawsPage,lawsSearch); + if(laws.isOk() && StringUtils.isNotBlank(laws.getData().toString())){ + r.add(laws.getData().toString()); + } + + SearchCenter bussSearch = new SearchCenter(); + bussSearch.setExecType(searchCenter.getExecType()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + bussSearch.setIdList(searchCenter.getIdList()); + } + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + bussSearch.setSearch(searchCenter.getSearch()); + } + SarBussionessStandEOPage bussPage = new SarBussionessStandEOPage(); + ResponseMessage buss = resetBussStandSearchCenter(bussPage,bussSearch); + if(buss.isOk() && StringUtils.isNotBlank(buss.getData().toString())){ + r.add(buss.getData().toString()); + } + + String res = String.join(", ", r); + logger.info(res); + + return Result.success(res); + } + + + @Async + public ResponseMessage resetALLSearchCenterForExits(SearchCenter searchCenter) throws Exception{ +// Boolean getFulltextserchIndex = elasticsearchService.isIndexExist("fulltextserch"); + SearchCenter standSearch = new SearchCenter(); + standSearch.setExecType(searchCenter.getExecType()); + if(StringUtils.isNotBlank(searchCenter.getSearch())){ + standSearch.setSearch(searchCenter.getSearch()); + } + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + standSearch.setIdList(searchCenter.getIdList()); + } + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); + ResponseMessage stand = resetfulltextForExists(page,standSearch); + List r = new ArrayList<>(); + if(stand.isOk() && StringUtils.isNotBlank(stand.getData().toString())){ + r.add(stand.getData().toString()); + } + String res = String.join(", ", r); + logger.info(res); + + return Result.success(res); + } + + @Async + public ResponseMessage syncResetALLSearchCenter(SearchCenter searchCenter) throws Exception{ + Boolean getFulltextserchIndex = elasticsearchService.isIndexExist("fulltextserch"); + SearchCenter standSearch = new SearchCenter(); + standSearch.setExecType(searchCenter.getExecType()); + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); + page.setSyncParam("sync"); + ResponseMessage stand = resetStandSearchCenter(page,standSearch); + List r = new ArrayList<>(); + if(stand.isOk() && StringUtils.isNotBlank(stand.getData().toString())){ + r.add(stand.getData().toString()); + } + + SearchCenter lawsSearch = new SearchCenter(); + lawsSearch.setExecType(searchCenter.getExecType()); + SarLawsStandInfoPage lawsPage = new SarLawsStandInfoPage(); + lawsPage.setSyncParam("sync"); + ResponseMessage laws = resetLawsSearchCenter(lawsPage,lawsSearch); + if(laws.isOk() && StringUtils.isNotBlank(laws.getData().toString())){ + r.add(laws.getData().toString()); + } + + SearchCenter bussSearch = new SearchCenter(); + bussSearch.setExecType(searchCenter.getExecType()); + SarBussionessStandEOPage bussPage = new SarBussionessStandEOPage(); + bussPage.setSyncParam("sync"); + ResponseMessage buss = resetBussStandSearchCenter(bussPage,bussSearch); + if(buss.isOk() && StringUtils.isNotBlank(buss.getData().toString())){ + r.add(buss.getData().toString()); + } + + String res = String.join(", ", r); + logger.info(res); + + return Result.success(res); + } + + + @Async + public ResponseMessage syncResetALLSearchCenter1(SearchCenter searchCenter) throws Exception{ + Boolean getFulltextserchIndex = elasticsearchService.isIndexExist("fulltextserch"); + SearchCenter standSearch = new SearchCenter(); + standSearch.setExecType(searchCenter.getExecType()); + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); + page.setSyncParam("sync"); + ResponseMessage stand = resetStandSearchCenterId(page,standSearch); + List r = new ArrayList<>(); + if(stand.isOk() && StringUtils.isNotBlank(stand.getData().toString())){ + r.add(stand.getData().toString()); + } + + SearchCenter lawsSearch = new SearchCenter(); + lawsSearch.setExecType(searchCenter.getExecType()); + SarLawsStandInfoPage lawsPage = new SarLawsStandInfoPage(); + lawsPage.setSyncParam("sync"); + ResponseMessage laws = resetLawsSearchCenterId(lawsPage,lawsSearch); + if(laws.isOk() && StringUtils.isNotBlank(laws.getData().toString())){ + r.add(laws.getData().toString()); + } + + SearchCenter bussSearch = new SearchCenter(); + bussSearch.setExecType(searchCenter.getExecType()); + SarBussionessStandEOPage bussPage = new SarBussionessStandEOPage(); + bussPage.setSyncParam("sync"); + ResponseMessage buss = resetBussStandSearchCenterId(bussPage,bussSearch); + if(buss.isOk() && StringUtils.isNotBlank(buss.getData().toString())){ + r.add(buss.getData().toString()); + } + + String res = String.join(", ", r); + logger.info(res); + + return Result.success(res); + } + + //重建国内外标准 + @Async + public ResponseMessage resetStandSearchCenterToFields(List esIdList,Map dicMap) throws Exception { + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); + page.setValidFlag("0"); + QueryWrapper qw = new QueryWrapper(); + qw.eq("VALID_FLAG","0"); + int count = iSarStandardsInfoService.count(qw); + if(count > 0){ + page.setPageSize(count); + page.setMenuId("nomenu"); + page.setStandType("ALL"); + List rowsStand = iSarStandardsInfoService.getSarStandardsInfoPage(page); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + if(!esIdList.isEmpty()){ + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(!intersection.isEmpty()){ + updList.addAll(intersection); + } + + } + + if(!updList.isEmpty()){ + for(SarStandardsInfo sarStandardsInfoEO : updList){ + countUpdateSuccess++; + Map fullTextSearchEO = new HashMap<>(); + fullTextSearchEO.put("id",sarStandardsInfoEO.getId()); + if ("FOREIGN".equals(sarStandardsInfoEO.getStandType())){ + fullTextSearchEO.put("standTypeOrder","2"); + }else { + fullTextSearchEO.put("standTypeOrder","1"); + } + fullTextSearchEO.put("standSortOrder",esStateOrder(sarStandardsInfoEO.getStandSort(),dicMap)); + fullTextSearchEO.put("yearOrder", sarStandardsInfoEO.getStandYear()); + fullTextSearchEO.put("sortTitle", sarStandardsInfoEO.getStandSort()); + fullTextSearchEO.put("numberTitle", sarStandardsInfoEO.getStandNumber()); + fullTextSearchEO.put("nameTitle", sarStandardsInfoEO.getStandName()); + String textStatusName = ""; + if(sarStandardsInfoEO.getTextStatus() != null && StringUtils.isNotBlank(sarStandardsInfoEO.getTextStatus())){ + List valArr = Arrays.asList(sarStandardsInfoEO.getTextStatus().split(",")); + textStatusName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + fullTextSearchEO.put("textStatusFull", textStatusName); + createEsMQService.sendEsUpdFullMQ(fullTextSearchEO,"update"); + } + } + + logger.info("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + return Result.success("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + }else { + logger.info("未查询到标准数据"); + return Result.error("未查询到标准数据"); + } + + } + + private String esStateOrder(String data, Map dicMap){ + if(StringUtils.isNotBlank(data)){ + data = data.replace(" ",""); + if(dicMap.get(data.trim().toUpperCase()) != null){ + return String.valueOf(dicMap.get(data.trim().toUpperCase())); + }else { + return "99999"; + } + }else { + return "99999"; + } + } + + //重建国内外标准 + @Async + public ResponseMessage resetStandSearchCenterToSearch(SarStandardsInfoEOPage page,SearchCenter searchCenter) throws Exception{ + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + + Boolean getStandIndex = elasticsearchService.isIndexExist("fulltextserch"); + + if(!getStandIndex){ + logger.info("ES 不存在索引:fulltextserch"); + return Result.error("ES 不存在索引:fulltextserch"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("fulltextserch",search); + List esIdList = new ArrayList<>(); + if("UPDNONEXISTENT".equals(searchCenter.getExecType().toUpperCase())){ + List> filterList = searchListData.stream().filter(stringObjectMap -> { + if(stringObjectMap.get("standTypeOrder") == null){ + return true; + }else { + return false; + } + }).collect(Collectors.toList()); + esIdList = filterList.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + }else if("UPDNONEXISTENT_TEXTSTATUS".equals(searchCenter.getExecType().toUpperCase())){ + List> filterList = searchListData.stream().filter(stringObjectMap -> { + if(stringObjectMap.get("textStatusFull") == null){ + return true; + }else { + return false; + } + }).collect(Collectors.toList()); + esIdList = filterList.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + }else { + esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + } + + + page.setValidFlag("0"); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + page.setIdlist(result); + } + QueryWrapper qw = new QueryWrapper(); + qw.eq("VALID_FLAG","0"); + int count = iSarStandardsInfoService.count(qw); + if(count > 0){ + page.setPageSize(count); + page.setMenuId("nomenu"); + page.setStandType("ALL"); + List rowsStand = iSarStandardsInfoService.getSarStandardsInfoPage(page); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 交集 更新 + List finalEsIdList = esIdList; + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(finalEsIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()) + || "UPDNONEXISTENT".equals(searchCenter.getExecType().toUpperCase()) + || "UPDNONEXISTENT_TEXTSTATUS".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : updList){ + countUpdateSuccess++; + standFunc(sarStandardsInfoEO); + createStandMQService.sendStandMQ(sarStandardsInfoEO,"update"); + } + } + + logger.info("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + return Result.success("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + }else { + logger.info("未查询到标准数据"); + return Result.error("未查询到标准数据"); + } + + } + + //重建国内外标准 + @Async + public ResponseMessage resetStandSearchCenter(SarStandardsInfoEOPage page,SearchCenter searchCenter) throws Exception{ + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + + Boolean getStandIndex = elasticsearchService.isIndexExist("stand"); + + if(!getStandIndex){ + logger.info("ES 不存在索引:stand"); + return Result.error("ES 不存在索引:stand"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("stand",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + logger.info("esIdList 的id集合" + esIdList); + page.setValidFlag("0"); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + page.setIdlist(result); + } + QueryWrapper qw = new QueryWrapper(); + qw.eq("VALID_FLAG","0"); + int count = iSarStandardsInfoService.count(qw); + if(count > 0){ + page.setPageSize(count); + page.setMenuId("nomenu"); + page.setStandType("ALL"); + logger.info("国内外标准查询:" + page.toString()); + List rowsStand = iSarStandardsInfoService.getSarStandardsInfoPage(page); + //如果时自动触发,删除需要根据全部的结果进行数据处理 + SarStandardsInfoEOPage infoEOPage = new SarStandardsInfoEOPage(); + List allStand = null; + if (StringUtils.isNotBlank(page.getSyncParam())) { + BeanUtils.copyProperties(page, infoEOPage); + infoEOPage.setSyncParam(null); + allStand = iSarStandardsInfoService.getSarStandardsInfoPage(infoEOPage); + } + String isAll = null == allStand ? "否" : "是"; + logger.info("是否查询了全部数据信息:" + isAll); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + }else{ + insList.addAll(distinctByUniqueList); + } + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + List finalStandIdList = null; + // 差集 (list2 - list1) 删除 + if (allStand != null && !allStand.isEmpty()) { + finalStandIdList = allStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + }else{ + finalStandIdList = rowsStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + } + List finalStandIdList1 = finalStandIdList; + List delDataList = esIdList.stream().filter(num -> !finalStandIdList1.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + + }else { + // 新增 + insList.addAll(rowsStand); + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : updList){ + countUpdateSuccess++; + standFunc(sarStandardsInfoEO); + createStandMQService.sendStandMQ(sarStandardsInfoEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : insList){ + countAddSuccess++; + standFunc(sarStandardsInfoEO); + if (sarStandardsInfoEO.getAttrInfoMap() != null) { + sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); + } + createStandMQService.sendStandMQ(sarStandardsInfoEO,"add"); + } + } + if(!delList.isEmpty() && !"sync".equals(page.getSyncParam()) && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ + elasticsearchService.deleteBatchId(delList,"stand"); + elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置国内外标准:删除-共"+delList.size()+"条数据"); + }else{ + logger.info("重置国内外标准:没有删除数据,但应该删除"+delList.size()+"条数据"); + } + logger.info("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + return Result.success("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + }else { + logger.info("未查询到标准数据"); + return Result.error("未查询到标准数据"); + } + + } + + //重建国内外标准 + @Async + public ResponseMessage resetfulltextForExists(SarStandardsInfoEOPage page,SearchCenter searchCenter) throws Exception{ + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + + Boolean getStandIndex = elasticsearchService.isIndexExist("stand"); + + if(!getStandIndex){ + logger.info("ES 不存在索引:stand"); + return Result.error("ES 不存在索引:stand"); + } + + String search = getSearch(searchCenter); + String result = "error"; + List> searchListData = elasticsearchService.searchAllForExists("fulltextserch",search); + for (Map map : searchListData) { + String title = String.valueOf(map.get("title")); + if (!"".equals(title) && !"null".equals(title)) { + map.put("titleBig",title.toUpperCase()); + } + result = elasticsearchService.updateDataByIdForMap(map, "fulltextserch", "fulltextserch", String.valueOf(map.get("id"))); + } + return Result.success(result); + + } + + //重建国内外标准 + @Async + public ResponseMessage resetStandSearchCenterId(SarStandardsInfoEOPage page,SearchCenter searchCenter) throws Exception{ + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + + Boolean getStandIndex = elasticsearchService.isIndexExist("stand"); + + if(!getStandIndex){ + logger.info("ES 不存在索引:stand"); + return Result.error("ES 不存在索引:stand"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("stand",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + page.setValidFlag("0"); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + page.setIdlist(result); + } + QueryWrapper qw = new QueryWrapper(); + qw.eq("VALID_FLAG","0"); + int count = iSarStandardsInfoService.count(qw); + if(count > 0){ + page.setPageSize(count); + page.setMenuId("nomenu"); + page.setStandType("ALL"); + List rowsStand = iSarStandardsInfoService.getSarStandardsInfoPage(page); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List insIdList = new ArrayList<>(); + List updIdList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + for (SarStandardsInfo sarStandardsInfo : collect) { + insIdList.add(sarStandardsInfo.getId()); + } + }else{ + insList.addAll(distinctByUniqueList); + for (SarStandardsInfo sarStandardsInfo : distinctByUniqueList) { + insIdList.add(sarStandardsInfo.getId()); + } + } + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + for (SarStandardsInfo sarStandardsInfo : collect) { + updIdList.add(sarStandardsInfo.getId()); + } + }else{ + updList.addAll(intersection); + for (SarStandardsInfo sarStandardsInfo : intersection) { + updIdList.add(sarStandardsInfo.getId()); + } + } + + // 差集 (list2 - list1) 删除 + List delDataList = esIdList.stream().filter(num -> !standIdList.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + + }else { + // 新增 + insList.addAll(rowsStand); + for (SarStandardsInfo sarStandardsInfo : rowsStand) { + insIdList.add(sarStandardsInfo.getId()); + } + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : updList){ + countUpdateSuccess++; + standFunc(sarStandardsInfoEO); +// createStandMQService.sendStandMQ(sarStandardsInfoEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : insList){ + countAddSuccess++; + standFunc(sarStandardsInfoEO); + if (sarStandardsInfoEO.getAttrInfoMap() != null) { + sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); + } +// createStandMQService.sendStandMQ(sarStandardsInfoEO,"add"); + } + } + String a = ""; + if(!delList.isEmpty() && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ +// elasticsearchService.deleteBatchId(delList,"stand"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置国内外标准:删除-共"+delList.size()+"条数据"); + a = "国内外政策:应删除-共"+delList.size()+"条数据:"+ String.join(",",delList); + } + String b = "国内外政策:新增-"+ String.join(",",insIdList); + String c = "国内外政策:修改-"+ String.join(",",updIdList); + logger.info("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+0+"条)删除-共"+delList.size()+"条数据"); + return Result.success(a+b+c); + }else { + logger.info("未查询到标准数据"); + return Result.error("未查询到标准数据"); + } + + } + + private String getSearch(SearchCenter searchCenter) { + String search = ""; + if(StringUtils.isNotBlank(searchCenter.getSearch())) { + search = searchCenter.getSearch(); + } + return search; + } + + private void standFunc(SarStandardsInfo sarStandardsInfoEO) throws Exception { + attrInfoSearchDetails(sarStandardsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarStandardsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + if (!sarItemVOS.isEmpty()) { + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarStandItems::getItemsNum, SarStandItems::getTermsConditions)); + sarStandardsInfoEO.setMapItems(collectMap); + } + if (sarStandardsInfoEO.getAttrInfoMap() != null) { + sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); + } + } + + public void attrInfoSearchDetails(SarStandardsInfo row) throws Exception { + if (row != null) { + String fieldInfo = InitStandAttrUtil.queryField; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + logger.info("getAttrMap 查询1前: " + getAttrMap); + if (null == getAttrMap){ + logger.info("国内外标准详情表查询出了null"); + }else { + getAttrMap.put("updateAuth", "1"); + } + row.setAttrInfoMap(getAttrMap); + } + +// Map getAttrMap = row.getAttrInfoMap(); +// if (getAttrMap != null && getAttrMap.size() > 0) { +// for (Map.Entry entry : getAttrMap.entrySet()) { +// String name = entry.getKey(); +// String value = ""; +// List valArr = new ArrayList<>(); +// if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { +// if (StringUtils.isNotBlank(entry.getValue().toString())) { +// Object json = null; +// if(Utils.isJson(entry.getValue().toString())){ +// json = new JSONTokener(entry.getValue().toString()).nextValue(); +// } +// if (json instanceof org.json.JSONArray) { +// valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(), String.class); +// } else { +// value = entry.getValue().toString(); +// valArr = Arrays.asList(value.split(",")); +// } +// if (!valArr.isEmpty()) { +// value = dicTypeEODao.getDicNamesByCodes(valArr, ""); +// } +// } +// entry.setValue(value); +// } +// } +// } +// if (getAttrMap != null) { +// row.setSarStandAttrEOStr(JSONObject.toJSONString(getAttrMap)); +// } + } + } + + @Async + public ResponseMessage resetLawsSearchCenterToFields(List esIdList,Map dicMap) throws Exception{ + + SarLawsStandInfoPage sarLawsInfoEOPage = new SarLawsStandInfoPage(); + sarLawsInfoEOPage.setLawsType("FOREIGN"); + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + QueryWrapper qw2 = new QueryWrapper(); + qw2.eq("VALID_FLAG","0"); + int count2 = iSarLawsStandInfoService.count(qw2); + if(count2 > 0){ + sarLawsInfoEOPage.setPageSize(count2); + List rowsStand = iSarLawsStandInfoService.getSarStandardsInfoPage(sarLawsInfoEOPage); + List updList = new ArrayList<>(); + + if(!esIdList.isEmpty()){ + + // 交集 更新 + List finalEsIdList = esIdList; + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(finalEsIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(!intersection.isEmpty()){ + updList.addAll(intersection); + } + } + + if(!updList.isEmpty()){ + for(SarLawsStandInfo sarLawsInfoEO : updList){ + countUpdateSuccess++; + Map fullTextSearchEO = new HashMap<>(); + fullTextSearchEO.put("id",sarLawsInfoEO.getId()); + fullTextSearchEO.put("standTypeOrder","4"); + fullTextSearchEO.put("standSortOrder",esStateOrder(sarLawsInfoEO.getLawsType(),dicMap)); + fullTextSearchEO.put("yearOrder", sarLawsInfoEO.getLawsYear()); + fullTextSearchEO.put("sortTitle", sarLawsInfoEO.getLawsType()); + fullTextSearchEO.put("numberTitle", sarLawsInfoEO.getLawsNumber()); + fullTextSearchEO.put("nameTitle", sarLawsInfoEO.getLawsName()); + String textStatusName = ""; + if(sarLawsInfoEO.getLawsTextState() != null && StringUtils.isNotBlank(sarLawsInfoEO.getLawsTextState())){ + List valArr = Arrays.asList(sarLawsInfoEO.getLawsTextState().split(",")); + textStatusName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + fullTextSearchEO.put("textStatusFull", textStatusName); + createEsMQService.sendEsUpdFullMQ(fullTextSearchEO,"update"); } + } + + logger.info("重置国内外政策:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外政策共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到国内外政策数据"); + return Result.error("未查询到国内外政策数据"); + } + + } + + @Async + public ResponseMessage resetLawsSearchCenterToSearch(SarLawsStandInfoPage sarLawsInfoEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getLawsIndex = elasticsearchService.isIndexExist("fulltextserch"); + + if(!getLawsIndex){ + logger.info("ES 不存在索引:fulltextserch"); + return Result.error("ES 不存在索引:fulltextserch"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("fulltextserch",search); + + List esIdList = new ArrayList<>(); + if("UPDNONEXISTENT".equals(searchCenter.getExecType().toUpperCase())){ + List> filterList = searchListData.stream().filter(stringObjectMap -> { + if(stringObjectMap.get("standTypeOrder") == null){ + return true; + }else { + return false; + } + }).collect(Collectors.toList()); + esIdList = filterList.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + }else if("UPDNONEXISTENT_TEXTSTATUS".equals(searchCenter.getExecType().toUpperCase())){ + List> filterList = searchListData.stream().filter(stringObjectMap -> { + if(stringObjectMap.get("textStatusFull") == null){ + return true; + }else { + return false; + } + }).collect(Collectors.toList()); + esIdList = filterList.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + }else { + esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + } + + sarLawsInfoEOPage.setLawsType("FOREIGN"); + + // page idlist 赋值 + idListFunc(sarLawsInfoEOPage, searchCenter); + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + QueryWrapper qw2 = new QueryWrapper(); + qw2.eq("VALID_FLAG","0"); + int count2 = iSarLawsStandInfoService.count(qw2); + if(count2 > 0){ + sarLawsInfoEOPage.setPageSize(count2); + List rowsStand = iSarLawsStandInfoService.getSarStandardsInfoPage(sarLawsInfoEOPage); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 交集 更新 + List finalEsIdList = esIdList; + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(finalEsIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()) + || "UPDNONEXISTENT".equals(searchCenter.getExecType().toUpperCase()) + || "UPDNONEXISTENT_TEXTSTATUS".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : updList){ + countUpdateSuccess++; + lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } + createStandMQService.sendLawsMQ(sarLawsInfoEO,"update"); + } + } + + logger.info("重置国内外政策:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外政策共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到国内外政策数据"); + return Result.error("未查询到国内外政策数据"); + } + + } + + @Async + public ResponseMessage resetLawsSearchCenter(SarLawsStandInfoPage sarLawsInfoEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getLawsIndex = elasticsearchService.isIndexExist("laws"); + + if(!getLawsIndex){ + logger.info("ES 不存在索引:laws"); + return Result.error("ES 不存在索引:laws"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("laws",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + sarLawsInfoEOPage.setLawsType("FOREIGN"); + + // page idlist 赋值 + idListFunc(sarLawsInfoEOPage, searchCenter); + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + QueryWrapper qw2 = new QueryWrapper(); + qw2.eq("VALID_FLAG","0"); + int count2 = iSarLawsStandInfoService.count(qw2); + if(count2 > 0){ + sarLawsInfoEOPage.setPageSize(count2); + List rowsStand = iSarLawsStandInfoService.getSarStandardsInfoPage(sarLawsInfoEOPage); + //如果时自动触发,删除需要根据全部的结果进行数据处理 + SarLawsStandInfoPage infoEOPage = new SarLawsStandInfoPage(); + List allStand = null; + if (StringUtils.isNotBlank(sarLawsInfoEOPage.getSyncParam())) { + BeanUtils.copyProperties(sarLawsInfoEOPage, infoEOPage); + infoEOPage.setSyncParam(null); + allStand = iSarLawsStandInfoService.getSarStandardsInfoPage(infoEOPage); + } + String isAll = null == allStand ? "否" : "是"; + logger.info("是否查询了全部数据信息:" + isAll); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + }else{ + insList.addAll(distinctByUniqueList); + } + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + // 差集 (list2 - list1) 删除 + List finalStandIdList = null; + // 差集 (list2 - list1) 删除 + if (allStand != null && !allStand.isEmpty()) { + finalStandIdList = allStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + }else{ + finalStandIdList = rowsStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + } + List finalStandIdList1 = finalStandIdList; + List delDataList = esIdList.stream().filter(num -> !finalStandIdList1.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + + }else { + // 新增 + insList.addAll(rowsStand); + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : updList){ + countUpdateSuccess++; + lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } + createStandMQService.sendLawsMQ(sarLawsInfoEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : insList){ + countAddSuccess++; + lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } + createStandMQService.sendLawsMQ(sarLawsInfoEO,"add"); + } + } + + if(!delList.isEmpty() && !"sync".equals(sarLawsInfoEOPage.getSyncParam()) && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ + elasticsearchService.deleteBatchId(delList,"laws"); + elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置国内外政策:删除-共"+delList.size()+"条数据"); + }else{ + logger.info("重置国内外政策:没有删除数据,但应该删除"+delList.size()+"条数据"); + } + + logger.info("重置国内外政策:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外政策共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到国内外政策数据"); + return Result.error("未查询到国内外政策数据"); + } + + } + + @Async + public ResponseMessage resetLawsSearchCenterId(SarLawsStandInfoPage sarLawsInfoEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getLawsIndex = elasticsearchService.isIndexExist("laws"); + + if(!getLawsIndex){ + logger.info("ES 不存在索引:laws"); + return Result.error("ES 不存在索引:laws"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("laws",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + sarLawsInfoEOPage.setLawsType("FOREIGN"); + + // page idlist 赋值 + idListFunc(sarLawsInfoEOPage, searchCenter); + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + QueryWrapper qw2 = new QueryWrapper(); + qw2.eq("VALID_FLAG","0"); + int count2 = iSarLawsStandInfoService.count(qw2); + if(count2 > 0){ + sarLawsInfoEOPage.setPageSize(count2); + List rowsStand = iSarLawsStandInfoService.getSarStandardsInfoPage(sarLawsInfoEOPage); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List insIdList = new ArrayList<>(); + List updIdList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + for (SarLawsStandInfo sarLawsStandInfo : insList) { + insIdList.add(sarLawsStandInfo.getId()); + } + }else{ + insList.addAll(distinctByUniqueList); + for (SarLawsStandInfo sarLawsStandInfo : distinctByUniqueList) { + insIdList.add(sarLawsStandInfo.getId()); + } + } + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + for (SarLawsStandInfo sarLawsStandInfo : collect) { + updIdList.add(sarLawsStandInfo.getId()); + } + }else{ + updList.addAll(intersection); + for (SarLawsStandInfo sarLawsStandInfo : intersection) { + updIdList.add(sarLawsStandInfo.getId()); + } + } + + // 差集 (list2 - list1) 删除 + List delDataList = esIdList.stream().filter(num -> !standIdList.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + + }else { + // 新增 + insList.addAll(rowsStand); + for (SarLawsStandInfo sarLawsStandInfo : rowsStand) { + insIdList.add(sarLawsStandInfo.getId()); + } + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : updList){ + countUpdateSuccess++; + lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } +// createStandMQService.sendLawsMQ(sarLawsInfoEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : insList){ + countAddSuccess++; + lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } +// createStandMQService.sendLawsMQ(sarLawsInfoEO,"add"); + } + } + String rett = ""; + String a = ""; + if(!delList.isEmpty() && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ +// elasticsearchService.deleteBatchId(delList,"laws"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("国内外政策:应删除-共"+delList.size()+"条数据:"+ String.join(",",delList)); + a = "国内外政策:应删除-共"+delList.size()+"条数据:"+ String.join(",",delList); + } + String b = "国内外政策:新增-"+ String.join(",",insIdList); + String c = "国内外政策:修改-"+ String.join(",",updIdList); + logger.info("重置国内外政策:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外政策共:"+rowsStand.size()+"条)数据"); + return Result.success(a+b+c); + }else { + logger.info("未查询到国内外政策数据"); + return Result.error("未查询到国内外政策数据"); + } + + } + + public void lawsAttrInfoSearchDetails(SarLawsStandInfo row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (org.apache.commons.lang.StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarLawsAttrInfoDao.selectLawsFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + if (getAttrMap != null && !getAttrMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + +// row.setAttrInfoMap(getAttrMap); + } + } + + private Map transformUpperCase(Map orgMap) { + Map resultMap = new HashMap<>(); + + for (Map.Entry entry : orgMap.entrySet()) { + String newKey = entry.getKey().toLowerCase(); + resultMap.put(newKey, orgMap.get(entry.getKey())); + if (entry.getValue() != null && InitStandAttrUtil.fileFieldListLaws != null && !InitStandAttrUtil.fileFieldListLaws.isEmpty() && InitStandAttrUtil.fileFieldListLaws.contains(entry.getKey())) { + String value = entry.getValue().toString(); + if (org.apache.commons.lang.StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + if(!fileObj.isEmpty()){ + resultMap.put(newKey + "Name", fileObj.get(0).getOldFileName()); + } + } + } + } + + return resultMap; + } + + public void lawsAttrInfoShowSearchDetails(SarLawsStandInfo row) throws Exception { + if (row != null) { + lawsAttrInfoSearchDetails(row); + Map getAttrMap = row.getAttrInfoCaseMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey().toUpperCase(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + if(org.apache.commons.lang.StringUtils.isNotBlank(entry.getValue().toString())){ + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if(json instanceof org.json.JSONArray){ + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(),String.class); + }else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if(!valArr.isEmpty()){ + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + entry.setValue(value); + } + } + } + } + } + + private void idListFunc(SarLawsStandInfoPage sarLawsInfoEOPage, SearchCenter searchCenter) { + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + sarLawsInfoEOPage.setIdlist(result); + } + } + + /** + * 文本搜索 + */ + + @Async + public ResponseMessage resetBussStandSearchCenterToFields(List esIdList,Map dicMap) throws Exception{ + + SarBussionessStandEOPage sarBussionessStandEOPage = new SarBussionessStandEOPage(); + sarBussionessStandEOPage.setValidFlag("0"); + sarBussionessStandEOPage.setOrderBy("SAR_BUSSIONESS_STAND.issue_time is null,SAR_BUSSIONESS_STAND.issue_time desc,SAR_BUSSIONESS_STAND.id"); + sarBussionessStandEOPage.setMenuRoleList(null); + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + sarBussionessStandEOPage.setMenuId("0"); + + QueryWrapper qw3 = new QueryWrapper(); + qw3.eq("VALID_FLAG","0"); + int count3 = iSarBussionessStandService.count(qw3); + + if(count3 > 0){ + sarBussionessStandEOPage.setPageSize(count3); + + List rowsStand = iSarBussionessStandService.getSarBussionStandPage(sarBussionessStandEOPage); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 交集 更新 + List finalEsIdList = esIdList; + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(finalEsIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(!intersection.isEmpty()){ + updList.addAll(intersection); + } + } + + if(!updList.isEmpty()){ + for(SarBussionessStand sarBussionessStandEO : updList){ + countUpdateSuccess++; + Map fullTextSearchEO = new HashMap<>(); + fullTextSearchEO.put("id",sarBussionessStandEO.getId()); + fullTextSearchEO.put("standTypeOrder","3"); + fullTextSearchEO.put("standSortOrder",esStateOrder(sarBussionessStandEO.getStandSort(),dicMap)); + fullTextSearchEO.put("yearOrder", sarBussionessStandEO.getStandYear()); + fullTextSearchEO.put("sortTitle", sarBussionessStandEO.getStandSort()); + fullTextSearchEO.put("numberTitle", sarBussionessStandEO.getStandNumber()); + fullTextSearchEO.put("nameTitle", sarBussionessStandEO.getStandName()); + String textStatusBussName = ""; + if(sarBussionessStandEO.getTextStatusBuss() != null && StringUtils.isNotBlank(sarBussionessStandEO.getTextStatusBuss())){ + List valArr = Arrays.asList(sarBussionessStandEO.getTextStatusBuss().split(",")); + textStatusBussName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + fullTextSearchEO.put("textStatusFull", textStatusBussName); + createEsMQService.sendEsUpdFullMQ(fullTextSearchEO,"update"); + } + } + logger.info("重置企标:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(企标共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到企标数据"); + return Result.error("未查询到企标数据"); + } + + } + + @Async + public ResponseMessage resetBussStandSearchCenterToSearch(SarBussionessStandEOPage sarBussionessStandEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getbussstandIndex = elasticsearchService.isIndexExist("fulltextserch"); + + if(!getbussstandIndex){ + logger.info("ES 不存在索引:fulltextserch"); + return Result.error("ES 不存在索引:fulltextserch"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("fulltextserch",search); + + List esIdList = new ArrayList<>(); + if("UPDNONEXISTENT".equals(searchCenter.getExecType().toUpperCase())){ + List> filterList = searchListData.stream().filter(stringObjectMap -> { + if(stringObjectMap.get("standTypeOrder") == null){ + return true; + }else { + return false; + } + }).collect(Collectors.toList()); + esIdList = filterList.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + }else if("UPDNONEXISTENT_TEXTSTATUS".equals(searchCenter.getExecType().toUpperCase())){ + List> filterList = searchListData.stream().filter(stringObjectMap -> { + if(stringObjectMap.get("textStatusFull") == null){ + return true; + }else { + return false; + } + }).collect(Collectors.toList()); + esIdList = filterList.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + }else if("UPDNONEXISTENT_NAMEEN".equals(searchCenter.getExecType().toUpperCase())){ + List> filterList = searchListData.stream().filter(stringObjectMap -> { + if(stringObjectMap.get("nameEnTitle") == null){ + return true; + }else { + return false; + } + }).collect(Collectors.toList()); + esIdList = filterList.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + }else { + esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + } + + sarBussionessStandEOPage.setValidFlag("0"); + sarBussionessStandEOPage.setOrderBy("SAR_BUSSIONESS_STAND.issue_time is null,SAR_BUSSIONESS_STAND.issue_time desc,SAR_BUSSIONESS_STAND.id"); + sarBussionessStandEOPage.setMenuRoleList(null); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + sarBussionessStandEOPage.setIdlist(result); + } + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + sarBussionessStandEOPage.setMenuId("0"); + + QueryWrapper qw3 = new QueryWrapper(); + qw3.eq("VALID_FLAG","0"); + int count3 = iSarBussionessStandService.count(qw3); + + if(count3 > 0){ + sarBussionessStandEOPage.setPageSize(count3); + + List rowsStand = iSarBussionessStandService.getSarBussionStandPage(sarBussionessStandEOPage); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 交集 更新 + List finalEsIdList = esIdList; + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(finalEsIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()) + || "UPDNONEXISTENT".equals(searchCenter.getExecType().toUpperCase()) + || "UPDNONEXISTENT_TEXTSTATUS".equals(searchCenter.getExecType().toUpperCase()) + || "UPDNONEXISTENT_NAMEEN".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : updList){ + countUpdateSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } + createStandMQService.sendBussStandMQ(sarBussionessStandEO,"update"); + } + } + logger.info("重置企标:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(企标共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到企标数据"); + return Result.error("未查询到企标数据"); + } + + } + + @Async + public ResponseMessage resetBussStandSearchCenter(SarBussionessStandEOPage sarBussionessStandEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getbussstandIndex = elasticsearchService.isIndexExist("bussstand"); + + if(!getbussstandIndex){ + logger.info("ES 不存在索引:bussstand"); + return Result.error("ES 不存在索引:bussstand"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("bussstand",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + logger.info("企标查询ids" + esIdList); + sarBussionessStandEOPage.setValidFlag("0"); + sarBussionessStandEOPage.setOrderBy("SAR_BUSSIONESS_STAND.issue_time is null,SAR_BUSSIONESS_STAND.issue_time desc,SAR_BUSSIONESS_STAND.id"); + sarBussionessStandEOPage.setMenuRoleList(null); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + sarBussionessStandEOPage.setIdlist(result); + } + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + sarBussionessStandEOPage.setMenuId("0"); + + QueryWrapper qw3 = new QueryWrapper(); + qw3.eq("VALID_FLAG","0"); + int count3 = iSarBussionessStandService.count(qw3); + logger.info("企标查询数量" + count3); + if(count3 > 0){ + sarBussionessStandEOPage.setPageSize(count3); + + List rowsStand = iSarBussionessStandService.getSarBussionStandPage(sarBussionessStandEOPage); + //如果时自动触发,删除需要根据全部的结果进行数据处理 + SarBussionessStandEOPage infoEOPage = new SarBussionessStandEOPage(); + List allStand = null; + if (StringUtils.isNotBlank(sarBussionessStandEOPage.getSyncParam())) { + BeanUtils.copyProperties(sarBussionessStandEOPage, infoEOPage); + infoEOPage.setSyncParam(null); + allStand = iSarBussionessStandService.getSarBussionStandPage(infoEOPage); + } + String isAll = null == allStand ? "否" : "是"; + logger.info("是否查询了全部数据信息:" + isAll); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + }else{ + insList.addAll(distinctByUniqueList); + } + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + List finalStandIdList = null; + // 差集 (list2 - list1) 删除 + if (allStand != null && !allStand.isEmpty()) { + finalStandIdList = allStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + }else{ + finalStandIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + } + List finalStandIdList1 = finalStandIdList; + List delDataList = esIdList.stream().filter(num -> !finalStandIdList1.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + }else { + // 新增 + insList.addAll(rowsStand); + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : updList){ + countUpdateSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } + createStandMQService.sendBussStandMQ(sarBussionessStandEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : insList){ + countAddSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } + createStandMQService.sendBussStandMQ(sarBussionessStandEO,"add"); + } + } + + if(!delList.isEmpty() && !"sync".equals(sarBussionessStandEOPage.getSyncParam()) && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ + elasticsearchService.deleteBatchId(delList,"bussstand"); + elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置企标:删除-共"+delList.size()+"条数据"); + }else{ + logger.info("重置企标:没有删除数据,但应该删除"+delList.size()+"条数据"); + } + logger.info("重置企标:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(企标共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到企标数据"); + return Result.error("未查询到企标数据"); + } + + } + + @Async + public ResponseMessage resetBussStandSearchCenterId(SarBussionessStandEOPage sarBussionessStandEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getbussstandIndex = elasticsearchService.isIndexExist("bussstand"); + + if(!getbussstandIndex){ + logger.info("ES 不存在索引:bussstand"); + return Result.error("ES 不存在索引:bussstand"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("bussstand",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + sarBussionessStandEOPage.setValidFlag("0"); + sarBussionessStandEOPage.setOrderBy("SAR_BUSSIONESS_STAND.issue_time is null,SAR_BUSSIONESS_STAND.issue_time desc,SAR_BUSSIONESS_STAND.id"); + sarBussionessStandEOPage.setMenuRoleList(null); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + sarBussionessStandEOPage.setIdlist(result); + } + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + sarBussionessStandEOPage.setMenuId("0"); + + QueryWrapper qw3 = new QueryWrapper(); + qw3.eq("VALID_FLAG","0"); + int count3 = iSarBussionessStandService.count(qw3); + + if(count3 > 0){ + sarBussionessStandEOPage.setPageSize(count3); + + List rowsStand = iSarBussionessStandService.getSarBussionStandPage(sarBussionessStandEOPage); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List insIdList = new ArrayList<>(); + List updIdList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + for (SarBussionessStand sarBussionessStand : collect) { + insIdList.add(sarBussionessStand.getId()); + } + }else{ + insList.addAll(distinctByUniqueList); + for (SarBussionessStand sarBussionessStand : distinctByUniqueList) { + insIdList.add(sarBussionessStand.getId()); + } + } + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + for (SarBussionessStand sarBussionessStand : collect) { + updIdList.add(sarBussionessStand.getId()); + } + }else{ + updList.addAll(intersection); + for (SarBussionessStand sarBussionessStand : intersection) { + updIdList.add(sarBussionessStand.getId()); + } + } + + // 差集 (list2 - list1) 删除 + List delDataList = esIdList.stream().filter(num -> !standIdList.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + }else { + // 新增 + insList.addAll(rowsStand); + for (SarBussionessStand sarBussionessStand : rowsStand) { + insIdList.add(sarBussionessStand.getId()); + } + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : updList){ + countUpdateSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } +// createStandMQService.sendBussStandMQ(sarBussionessStandEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : insList){ + countAddSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } +// createStandMQService.sendBussStandMQ(sarBussionessStandEO,"add"); + } + } + String a = ""; + if(!delList.isEmpty() && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ +// elasticsearchService.deleteBatchId(delList,"bussstand"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置企标:删除-共"+delList.size()+"条数据"); + a = "国内外政策:应删除-共"+delList.size()+"条数据:"+ String.join(",",delList); + } + String b = "国内外政策:新增-"+ String.join(",",insIdList); + String c = "国内外政策:修改-"+ String.join(",",updIdList); + logger.info("重置企标:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(企标共:"+rowsStand.size()+"条)数据"); + return Result.success(a+b+c); + }else { + logger.info("未查询到企标数据"); + return Result.error("未查询到企标数据"); + } + + } + + public void bussAttrInfoShowSearchDetails(SarBussionessStand row) throws Exception { + if (row != null) { + bussAttrInfoSearchDetails(row); + Map getAttrMap = row.getAttrInfoCaseMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey().toUpperCase(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + if(org.apache.commons.lang.StringUtils.isNotBlank(entry.getValue().toString())){ + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if(json instanceof org.json.JSONArray){ + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(),String.class); + }else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if(!valArr.isEmpty()){ + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + entry.setValue(value); + } + } + } + } + } + + public void bussAttrInfoSearchDetails(SarBussionessStand row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (org.apache.commons.lang.StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarBussStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + row.setAttrInfoMap(getAttrMap); + } + } + + /** + * 同步添加标准搜索中心数据内容 + * @param standId + */ + public void syncStandSearchCenterData(String standId) throws Exception { + if(StringUtils.isNotBlank(standId)){ + SarStandardsInfo sarStandardsInfo = iSarStandardsInfoService.selectStandardsInfoByKey(standId); + logger.debug("本次处理的标准信息:"+JSONObject.toJSONString(sarStandardsInfo)); + if(sarStandardsInfo!=null){ + if (sarStandardsInfo.getAttrInfoMap() != null) { + sarStandardsInfo.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfo.getAttrInfoMap())); + } + Map indexstate = elasticsearchService.searchDataById("stand","stand",standId,null); + if(indexstate!=null && !indexstate.isEmpty()){ + createStandMQService.sendStandMQ(sarStandardsInfo,"update"); + }else{ + createStandMQService.sendStandMQ(sarStandardsInfo,"add"); + } + } + } + + } + + /** + * 同步添加企业标准搜索中心数据内容 + * @param standId + */ + public void syncBussStandSearchCenterData(String standId) throws Exception { + if(StringUtils.isNotBlank(standId)){ + SarBussionessStand sarBussionessStand = iSarBussionessStandService.selectStandardsInfoByKey(standId); + logger.debug("本次处理的标准信息:"+JSONObject.toJSONString(sarBussionessStand)); + if(sarBussionessStand!=null){ + if (sarBussionessStand.getAttrInfoMap() != null) { + sarBussionessStand.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStand.getAttrInfoMap())); + } + Map indexstate = elasticsearchService.searchDataById("bussstand","bussstand",standId,null); + if(indexstate!=null && !indexstate.isEmpty()){ + createStandMQService.sendBussStandMQ(sarBussionessStand,"update"); + }else{ + createStandMQService.sendBussStandMQ(sarBussionessStand,"add"); + } + } + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/search/server/ResetSearchCenterServiceTemp.java b/adc-da-slrs/src/main/java/com/adc/da/search/server/ResetSearchCenterServiceTemp.java new file mode 100644 index 00000000..c1909b14 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/search/server/ResetSearchCenterServiceTemp.java @@ -0,0 +1,815 @@ +package com.adc.da.search.server; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.mq.CreateEsMQService; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.bean.SearchCenter; +import com.adc.da.search.service.ElasticsearchService; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarLawsAttrInfo.dao.SarLawsAttrInfoDao; +import com.adc.da.slrs.sarLawsItems.dao.SarLawsItemsDao; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoPage; +import com.adc.da.slrs.sarLawsStandInfo.service.ISarLawsStandInfoService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.entity.FindSarItemsPageReqDTO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.utils.util.FieldConvertUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.NullToEmptyUtil; +import com.adc.da.utils.util.Utils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.elasticsearch.client.transport.TransportClient; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.sql.Clob; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ResetSearchCenterServiceTemp { + private static final Logger logger = LoggerFactory.getLogger(ResetSearchCenterServiceTemp.class); + + @Autowired + private ElasticsearchService elasticsearchService; + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private SarStandItemsDao standItemsDao; + + @Autowired + private SarLawsItemsDao sarLawsItemsDao; + + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private SarLawsAttrInfoDao sarLawsAttrInfoDao; + + @Autowired + private ISarStandardsInfoService iSarStandardsInfoService; + + @Autowired + private ISarLawsStandInfoService iSarLawsStandInfoService; + + @Autowired + private ISarBussionessStandService iSarBussionessStandService; + + @Autowired + private CreateStandMQService createStandMQService; + + @Autowired + private CreateEsMQService createEsMQService; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private SarStandAttrInfoDao sarStandAttrInfoEODao; + + @Autowired + private SarBussStandAttrInfoDao sarBussStandAttrInfoEODao; + + @Autowired + private ISarStandardsInfoService sarStandardsInfoEOService; + + // 全部 + @Async + public ResponseMessage syncResetALLSearchCenter(SearchCenter searchCenter) throws Exception{ + Boolean getFulltextserchIndex = elasticsearchService.isIndexExist("fulltextserch"); + SearchCenter standSearch = new SearchCenter(); + standSearch.setExecType(searchCenter.getExecType()); + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); +// page.setSyncParam("sync"); + ResponseMessage stand = resetStandSearchCenter(page,standSearch); + List r = new ArrayList<>(); + if(stand.isOk() && StringUtils.isNotBlank(stand.getData().toString())){ + r.add(stand.getData().toString()); + } + +// SearchCenter lawsSearch = new SearchCenter(); +// lawsSearch.setExecType(searchCenter.getExecType()); +// SarLawsStandInfoPage lawsPage = new SarLawsStandInfoPage(); +// lawsPage.setSyncParam("sync"); +// ResponseMessage laws = resetLawsSearchCenter(lawsPage,lawsSearch); +// if(laws.isOk() && StringUtils.isNotBlank(laws.getData().toString())){ +// r.add(laws.getData().toString()); +// } + + SearchCenter bussSearch = new SearchCenter(); + bussSearch.setExecType(searchCenter.getExecType()); + SarBussionessStandEOPage bussPage = new SarBussionessStandEOPage(); +// bussPage.setSyncParam("sync"); + ResponseMessage buss = resetBussStandSearchCenter(bussPage,bussSearch); + if(buss.isOk() && StringUtils.isNotBlank(buss.getData().toString())){ + r.add(buss.getData().toString()); + } + + String res = String.join(", ", r); + logger.info(res); + + return Result.success(res); + } + + //重建国内外标准 + @Async + public ResponseMessage resetStandSearchCenter(SarStandardsInfoEOPage page,SearchCenter searchCenter) throws Exception{ + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + + Boolean getStandIndex = elasticsearchService.isIndexExist("stand"); + + if(!getStandIndex){ + logger.info("ES 不存在索引:stand"); + return Result.error("ES 不存在索引:stand"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("stand",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + page.setValidFlag("0"); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + page.setIdlist(result); + } + QueryWrapper qw = new QueryWrapper(); + qw.eq("VALID_FLAG","0"); + int count = iSarStandardsInfoService.count(qw); + if(count > 0){ + page.setPageSize(count); + page.setMenuId("nomenu"); + page.setStandType("ALL"); + List rowsStand = new ArrayList<>(); + for (SarStandardsInfo sarStandardsInfo : iSarStandardsInfoService.getSarStandardsInfoPage(page)) { + SarStandardsInfo info = NullToEmptyUtil.noNullStringAttr(sarStandardsInfo); + rowsStand.add(info); + } + //如果时自动触发,删除需要根据全部的结果进行数据处理 + SarStandardsInfoEOPage infoEOPage = new SarStandardsInfoEOPage(); + List allStand = null; + if (StringUtils.isNotBlank(page.getSyncParam())) { + BeanUtils.copyProperties(page, infoEOPage); + infoEOPage.setSyncParam(null); + allStand = new ArrayList<>(); + for (SarStandardsInfo sarStandardsInfo : iSarStandardsInfoService.getSarStandardsInfoPage(page)) { + SarStandardsInfo info = NullToEmptyUtil.noNullStringAttr(sarStandardsInfo); + allStand.add(info); + } + } + String isAll = null == allStand ? "否" : "是"; + logger.info("是否查询了全部数据信息:" + isAll); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + }else{ + insList.addAll(distinctByUniqueList); + } + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + List finalStandIdList = null; + // 差集 (list2 - list1) 删除 + if (allStand != null && !allStand.isEmpty()) { + finalStandIdList = allStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + }else{ + finalStandIdList = rowsStand.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + } + List finalStandIdList1 = finalStandIdList; + List delDataList = esIdList.stream().filter(num -> !finalStandIdList1.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + + }else { + // 新增 + insList.addAll(rowsStand); + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : updList){ + countUpdateSuccess++; + standFunc(sarStandardsInfoEO); + createStandMQService.sendStandMQ(sarStandardsInfoEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarStandardsInfo sarStandardsInfoEO : insList){ + countAddSuccess++; + standFunc(sarStandardsInfoEO); + if (sarStandardsInfoEO.getAttrInfoMap() != null) { + sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); + } + createStandMQService.sendStandMQ(sarStandardsInfoEO,"add"); + } + } + if(!delList.isEmpty() && !"sync".equals(page.getSyncParam()) && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ +// elasticsearchService.deleteBatchId(delList,"stand"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置国内外标准:删除-共"+delList.size()+"条数据"); + }else{ + logger.info("重置国内外标准:没有删除数据,但应该删除"+delList.size()+"条数据"); + } + logger.info("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+rowsStand.size()+"条)删除-共"+delList.size()+"条数据"); + return Result.success("重置国内外标准:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外标准共:"+rowsStand.size()+"条)删除-共"+delList.size()+"条数据"); + }else { + logger.info("未查询到标准数据"); + return Result.error("未查询到标准数据"); + } + + } + + // 国内外政策 + @Async + public ResponseMessage resetLawsSearchCenter(SarLawsStandInfoPage sarLawsInfoEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getLawsIndex = elasticsearchService.isIndexExist("laws"); + + if(!getLawsIndex){ + logger.info("ES 不存在索引:laws"); + return Result.error("ES 不存在索引:laws"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("laws",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + sarLawsInfoEOPage.setLawsType("FOREIGN"); + + // page idlist 赋值 + idListFunc(sarLawsInfoEOPage, searchCenter); + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + QueryWrapper qw2 = new QueryWrapper(); + qw2.eq("VALID_FLAG","0"); + int count2 = iSarLawsStandInfoService.count(qw2); + if(count2 > 0){ + sarLawsInfoEOPage.setPageSize(count2); + List rowsStand = iSarLawsStandInfoService.getSarStandardsInfoPage(sarLawsInfoEOPage); + //如果时自动触发,删除需要根据全部的结果进行数据处理 + SarLawsStandInfoPage infoEOPage = new SarLawsStandInfoPage(); + List allStand = null; + if (StringUtils.isNotBlank(sarLawsInfoEOPage.getSyncParam())) { + BeanUtils.copyProperties(sarLawsInfoEOPage, infoEOPage); + infoEOPage.setSyncParam(null); + allStand = iSarLawsStandInfoService.getSarStandardsInfoPage(infoEOPage); + } + String isAll = null == allStand ? "否" : "是"; + logger.info("是否查询了全部数据信息:" + isAll); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + }else{ + insList.addAll(distinctByUniqueList); + } + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + // 差集 (list2 - list1) 删除 + List finalStandIdList = null; + // 差集 (list2 - list1) 删除 + if (allStand != null && !allStand.isEmpty()) { + finalStandIdList = allStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + }else{ + finalStandIdList = rowsStand.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + } + List finalStandIdList1 = finalStandIdList; + List delDataList = esIdList.stream().filter(num -> !finalStandIdList1.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + + }else { + // 新增 + insList.addAll(rowsStand); + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : updList){ + countUpdateSuccess++; + lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } +// createStandMQService.sendLawsMQ(sarLawsInfoEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarLawsStandInfo sarLawsInfoEO : insList){ + countAddSuccess++; + lawsAttrInfoShowSearchDetails(sarLawsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsInfoEO.setMapItems(collectMap); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } + if (sarLawsInfoEO.getAttrInfoMap() != null) { + sarLawsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarLawsInfoEO.getAttrInfoMap())); + } +// createStandMQService.sendLawsMQ(sarLawsInfoEO,"add"); + } + } + + if(!delList.isEmpty() && !"sync".equals(sarLawsInfoEOPage.getSyncParam()) && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ +// elasticsearchService.deleteBatchId(delList,"laws"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置国内外政策:删除-共"+delList.size()+"条数据"); + }else{ + logger.info("重置国内外政策:没有删除数据,但应该删除"+delList.size()+"条数据"); + } + + logger.info("重置国内外政策:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(国内外政策共:"+rowsStand.size()+"条)数据"); + return Result.success(""); + }else { + logger.info("未查询到国内外政策数据"); + return Result.error("未查询到国内外政策数据"); + } + + } + + + // 企业标准 + @Async + public ResponseMessage resetBussStandSearchCenter(SarBussionessStandEOPage sarBussionessStandEOPage,SearchCenter searchCenter) throws Exception{ + Boolean getbussstandIndex = elasticsearchService.isIndexExist("bussstand"); + + if(!getbussstandIndex){ + logger.info("ES 不存在索引:bussstand"); + return Result.error("ES 不存在索引:bussstand"); + } + + String search = getSearch(searchCenter); + + List> searchListData = elasticsearchService.searchAll("bussstand",search); + + List esIdList = searchListData.stream().map(stringObjectMap -> stringObjectMap.get("id").toString()).collect(Collectors.toList()); + + sarBussionessStandEOPage.setValidFlag("0"); + sarBussionessStandEOPage.setOrderBy("SAR_BUSSIONESS_STAND.issue_time is null,SAR_BUSSIONESS_STAND.issue_time desc,SAR_BUSSIONESS_STAND.id"); + sarBussionessStandEOPage.setMenuRoleList(null); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + sarBussionessStandEOPage.setIdlist(result); + } + + int countUpdateSuccess = 0; + int countAddSuccess = 0; + sarBussionessStandEOPage.setMenuId("0"); + + QueryWrapper qw3 = new QueryWrapper(); + qw3.eq("VALID_FLAG","0"); + int count3 = iSarBussionessStandService.count(qw3); + + if(count3 > 0){ + sarBussionessStandEOPage.setPageSize(count3); + List rowsStand = new ArrayList<>(); + for (SarBussionessStand bussionessStand : iSarBussionessStandService.getSarBussionStandPage(sarBussionessStandEOPage)) { + SarBussionessStand stand = NullToEmptyUtil.noNullStringAttr(bussionessStand); + rowsStand.add(stand); + } + //如果时自动触发,删除需要根据全部的结果进行数据处理 + SarBussionessStandEOPage infoEOPage = new SarBussionessStandEOPage(); + List allStand = null; + if (StringUtils.isNotBlank(sarBussionessStandEOPage.getSyncParam())) { + BeanUtils.copyProperties(sarBussionessStandEOPage, infoEOPage); + infoEOPage.setSyncParam(null); + allStand = new ArrayList<>(); + for (SarBussionessStand bussionessStand : iSarBussionessStandService.getSarBussionStandPage(infoEOPage)) { + SarBussionessStand stand = NullToEmptyUtil.noNullStringAttr(bussionessStand); + allStand.add(stand); + } + } + String isAll = null == allStand ? "否" : "是"; + logger.info("是否查询了全部数据信息:" + isAll); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + List delList = new ArrayList<>(); + List standIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + + if(!esIdList.isEmpty()){ + + // 差集 (list1 - list2) 新增 + List distinctByUniqueList = rowsStand.stream() + .filter(item -> !new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !distinctByUniqueList.isEmpty()){ + List collect = distinctByUniqueList.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + insList.addAll(collect); + }else{ + insList.addAll(distinctByUniqueList); + } + + // 交集 更新 + List intersection = rowsStand.stream() + .filter(item -> new ArrayList<>(esIdList) + .contains(item.getId())) + .collect(Collectors.toList()); + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && !intersection.isEmpty()){ + List collect = intersection.stream() + .filter(item -> searchCenter.getIdList().contains(item.getId())).collect(Collectors.toList()); + updList.addAll(collect); + }else{ + updList.addAll(intersection); + } + + List finalStandIdList = null; + // 差集 (list2 - list1) 删除 + if (allStand != null && !allStand.isEmpty()) { + finalStandIdList = allStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + }else{ + finalStandIdList = rowsStand.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + } + List finalStandIdList1 = finalStandIdList; + List delDataList = esIdList.stream().filter(num -> !finalStandIdList1.contains(num)) + .collect(Collectors.toList()); + // 可以更新IDLIST 删除 ES + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty() && "DEL".equals(searchCenter.getExecType().toUpperCase())){ + delList.addAll(searchCenter.getIdList()); + }else{ + delList.addAll(delDataList); + } + }else { + // 新增 + insList.addAll(rowsStand); + } + + if(!updList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "UPD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : updList){ + countUpdateSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } + createStandMQService.sendBussStandMQ(sarBussionessStandEO,"update"); + } + } + + if(!insList.isEmpty() && ("ALL".equals(searchCenter.getExecType().toUpperCase()) || "ADD".equals(searchCenter.getExecType().toUpperCase()))){ + for(SarBussionessStand sarBussionessStandEO : insList){ + countAddSuccess++; + bussAttrInfoShowSearchDetails(sarBussionessStandEO); + if (sarBussionessStandEO.getAttrInfoMap() != null) { + sarBussionessStandEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarBussionessStandEO.getAttrInfoMap())); + } + createStandMQService.sendBussStandMQ(sarBussionessStandEO,"add"); + } + } + + if(!delList.isEmpty() && !"sync".equals(sarBussionessStandEOPage.getSyncParam()) && ("DEL".equals(searchCenter.getExecType().toUpperCase()) || "ALL".equals(searchCenter.getExecType().toUpperCase()))){ +// elasticsearchService.deleteBatchId(delList,"bussstand"); +// elasticsearchService.deleteBatchId(delList,"fulltextserch"); + logger.info("重置企标:删除-共"+delList.size()+"条数据"); + }else{ + logger.info("重置企标:没有删除数据,但应该删除"+delList.size()+"条数据"); + } + logger.info("重置企标:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(企标共:"+rowsStand.size()+"条)数据"); + return Result.success("重置企标:新增-"+ countAddSuccess + "条 更新-"+countUpdateSuccess+"条(企标共:"+rowsStand.size()+"条)数据"); + }else { + logger.info("未查询到企标数据"); + return Result.error("未查询到企标数据"); + } + + } + + private String getSearch(SearchCenter searchCenter) { + String search = ""; + if(StringUtils.isNotBlank(searchCenter.getSearch())) { + search = searchCenter.getSearch(); + } + return search; + } + + private void standFunc(SarStandardsInfo sarStandardsInfoEO) throws Exception { + attrInfoSearchDetails(sarStandardsInfoEO); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarStandardsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + if (!sarItemVOS.isEmpty()) { + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarStandItems::getItemsNum, SarStandItems::getTermsConditions)); + sarStandardsInfoEO.setMapItems(collectMap); + } + if (sarStandardsInfoEO.getAttrInfoMap() != null) { + sarStandardsInfoEO.setSarStandAttrEOStr(JSONObject.toJSONString(sarStandardsInfoEO.getAttrInfoMap())); + } + } + + public void attrInfoSearchDetails(SarStandardsInfo row) throws Exception { + if (row != null) { + String fieldInfo = InitStandAttrUtil.queryField; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); +// if (CollectionUtil.isNotEmpty(getAttrMap)) { + if (ObjectUtils.isEmpty(getAttrMap)){ + getAttrMap = new HashMap<>(); + } + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + getAttrMap.put("updateAuth", "1"); + row.setAttrInfoMap(getAttrMap); +// } + } + +// Map getAttrMap = row.getAttrInfoMap(); +// if (getAttrMap != null && getAttrMap.size() > 0) { +// for (Map.Entry entry : getAttrMap.entrySet()) { +// String name = entry.getKey(); +// String value = ""; +// List valArr = new ArrayList<>(); +// if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { +// if (StringUtils.isNotBlank(entry.getValue().toString())) { +// Object json = null; +// if(Utils.isJson(entry.getValue().toString())){ +// json = new JSONTokener(entry.getValue().toString()).nextValue(); +// } +// if (json instanceof org.json.JSONArray) { +// valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(), String.class); +// } else { +// value = entry.getValue().toString(); +// valArr = Arrays.asList(value.split(",")); +// } +// if (!valArr.isEmpty()) { +// value = dicTypeEODao.getDicNamesByCodes(valArr, ""); +// } +// } +// entry.setValue(value); +// } +// } +// } +// if (getAttrMap != null) { +// row.setSarStandAttrEOStr(JSONObject.toJSONString(getAttrMap)); +// } + } + } + + public void bussAttrInfoShowSearchDetails(SarBussionessStand row) throws Exception { + if (row != null) { + bussAttrInfoSearchDetails(row); + Map getAttrMap = row.getAttrInfoCaseMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey().toUpperCase(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + if(org.apache.commons.lang.StringUtils.isNotBlank(entry.getValue().toString())){ + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if(json instanceof org.json.JSONArray){ + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(),String.class); + }else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if(!valArr.isEmpty()){ + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + entry.setValue(value); + } + } + } + } + } + + public void bussAttrInfoSearchDetails(SarBussionessStand row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (org.apache.commons.lang.StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarBussStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + row.setAttrInfoMap(getAttrMap); + } + } + + private void idListFunc(SarLawsStandInfoPage sarLawsInfoEOPage, SearchCenter searchCenter) { + if(searchCenter.getIdList() != null && !searchCenter.getIdList().isEmpty()){ + String[] result = searchCenter.getIdList().toArray(new String[0]); + sarLawsInfoEOPage.setIdlist(result); + } + } + + public void lawsAttrInfoShowSearchDetails(SarLawsStandInfo row) throws Exception { + if (row != null) { + lawsAttrInfoSearchDetails(row); + Map getAttrMap = row.getAttrInfoCaseMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey().toUpperCase(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + if(org.apache.commons.lang.StringUtils.isNotBlank(entry.getValue().toString())){ + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if(json instanceof org.json.JSONArray){ + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(),String.class); + }else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if(!valArr.isEmpty()){ + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + entry.setValue(value); + } + } + } + } + } + public void lawsAttrInfoSearchDetails(SarLawsStandInfo row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (org.apache.commons.lang.StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarLawsAttrInfoDao.selectLawsFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + if (getAttrMap != null && !getAttrMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + +// row.setAttrInfoMap(getAttrMap); + } + } + + private Map transformUpperCase(Map orgMap) { + Map resultMap = new HashMap<>(); + + for (Map.Entry entry : orgMap.entrySet()) { + String newKey = entry.getKey().toLowerCase(); + resultMap.put(newKey, orgMap.get(entry.getKey())); + if (entry.getValue() != null && InitStandAttrUtil.fileFieldListLaws != null && !InitStandAttrUtil.fileFieldListLaws.isEmpty() && InitStandAttrUtil.fileFieldListLaws.contains(entry.getKey())) { + String value = entry.getValue().toString(); + if (org.apache.commons.lang.StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + if(!fileObj.isEmpty()){ + resultMap.put(newKey + "Name", fileObj.get(0).getOldFileName()); + } + } + } + } + + return resultMap; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/search/sync/restSearchSync.java b/adc-da-slrs/src/main/java/com/adc/da/search/sync/restSearchSync.java new file mode 100644 index 00000000..ffcb662e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/search/sync/restSearchSync.java @@ -0,0 +1,78 @@ +package com.adc.da.search.sync; + +import com.adc.da.common.GetBeanUtil; +import com.adc.da.search.bean.SearchCenter; +import com.adc.da.search.server.ResetSearchCenterService; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import java.util.Date; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年01月25日 3:34 + */ + +@Slf4j +public class restSearchSync implements Runnable { + Logger logger = LoggerFactory.getLogger(restSearchSync.class); + + private ResetSearchCenterService resetSearchCenterService; + + /** + * 根据配置文件设置是否开启定时器 + */ + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + public restSearchSync(){ + resetSearchCenterService = GetBeanUtil.getApplicationContext().getBean(ResetSearchCenterService.class); + } + + + /** + * 动态调用重置ES7天内标准数据 + */ + @Override + public void run() { + try{ + Thread.sleep(2000); + logger.info("每天0点1分执行 重置ES 自动更新、新增:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); + + SearchCenter searchCenter = new SearchCenter(); + // ALL 执行全部 + searchCenter.setExecType("ALL"); + resetSearchCenterService.syncResetALLSearchCenter(searchCenter); + + logger.info("每天0点1分执行 重置ES 自动更新、新增:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); + }catch(Exception e){ + logger.info(e.getMessage()); + } + } + + // 每天0点1分执行 重置ES 自动更新、新增 +// @Scheduled(cron="0 0 1 1 * ?") +// @Scheduled(cron = "0 1 0 * * ?") +// @Async +// public void StandScheduledJobMonthBegin(){ +// if(isNotScheduled){ +// try{ +// Thread.sleep(2000); +// logger.info("每天0点1分执行 重置ES 自动更新、新增:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---START-01"); +// +// SearchCenter searchCenter = new SearchCenter(); +// // ALL 执行全部 +// searchCenter.setExecType("ALL"); +// resetSearchCenterService.syncResetALLSearchCenter(searchCenter); +// +// logger.info("每天0点1分执行 重置ES 自动更新、新增:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); +// }catch(Exception e){ +// logger.info(e.getMessage()); +// } +// } +// } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/controller/ActivityDataController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/controller/ActivityDataController.java new file mode 100644 index 00000000..09c319d7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/controller/ActivityDataController.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.ActivityDatas.controller; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.ActivityDatas.entity.receiveData; +import com.adc.da.slrs.ActivityDatas.service.ActivityDataService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Api(description = "|EsRevisePlan|") +@RequestMapping("api/activityData") +public class ActivityDataController { + + @Autowired + ActivityDataService activityDataService; + + @ApiOperation(value = "返回拼接的数据") + @PostMapping("/backData") + public ResponseMessage queryAllPlans(receiveData receiveData){ + return Result.success(activityDataService.dealWithDatas(receiveData.getJson())); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/controller/tools/JsonDateValueProcessor.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/controller/tools/JsonDateValueProcessor.java new file mode 100644 index 00000000..a50a610e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/controller/tools/JsonDateValueProcessor.java @@ -0,0 +1,41 @@ +package com.adc.da.slrs.ActivityDatas.controller.tools; + +import net.sf.json.JsonConfig; +import net.sf.json.processors.JsonValueProcessor; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class JsonDateValueProcessor implements JsonValueProcessor { + + private String datePattern = "yyyy-MM-dd HH:mm:ss";//默认样式,可以在构造方法中修改 + public JsonDateValueProcessor() { + super(); + } + public JsonDateValueProcessor(String datePattern) { + super(); + this.datePattern = datePattern; + } + public Object processArrayValue(Object value, JsonConfig jsonConfig) { + try { + if(value instanceof Date){ + SimpleDateFormat sdf = new SimpleDateFormat(datePattern); + Date date = (Date)value; + return sdf.format(date); + } + return value == null ? null : value.toString(); + } catch (Exception e) { + return null; + } + } + public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { + return processArrayValue(value, jsonConfig); + } + public String getDatePattern() { + return datePattern; + } + public void setDatePattern(String datePattern) { + this.datePattern = datePattern; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/BreakdownList.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/BreakdownList.java new file mode 100644 index 00000000..cca2a921 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/BreakdownList.java @@ -0,0 +1,93 @@ +/** + * Copyright 2021 bejson.com + */ +package com.adc.da.slrs.ActivityDatas.entity; +import lombok.Data; + +/** + * Auto-generated: 2021-07-09 16:11:32 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +public class BreakdownList { + + private String id; + private String svpps; + private String standId; + private String itemsNum; + private String claimType; + private String itemsName; + private String applyArctic; + private String busStandCover; + private String responsibleUnit; + private String responsibleEngineer; + private String technicalRequir; + private String changePoint; + private String xcxssrq; + private String zccssrq; + public void setId(String id) { + this.id = id; + } + public String getId() { + return id; + } + + public void setSvpps(String svpps) { + this.svpps = svpps; + } + public String getSvpps() { + return svpps; + } + + public void setStandId(String standId) { + this.standId = standId; + } + public String getStandId() { + return standId; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + public String getItemsNum() { + return itemsNum; + } + + public void setClaimType(String claimType) { + this.claimType = claimType; + } + public String getClaimType() { + return claimType; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + public String getItemsName() { + return itemsName; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + public String getApplyArctic() { + return applyArctic; + } + + public void setBusStandCover(String busStandCover) { + this.busStandCover = busStandCover; + } + public String getBusStandCover() { + return busStandCover; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + public String getResponsibleUnit() { + return responsibleUnit; + } + +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/DataList.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/DataList.java new file mode 100644 index 00000000..e7b493df --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/DataList.java @@ -0,0 +1,77 @@ +/** + * Copyright 2021 bejson.com + */ +package com.adc.da.slrs.ActivityDatas.entity; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * Auto-generated: 2021-07-09 16:11:32 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +public class DataList { + + private String uname; + private String productLine; + private String distributePerson; + private String distributePersonId; + private String projectManager; + + //合规评估添加的数据 + + private String itemNum; + private String xCXSSRQ; + private String zCCSSRQ; + private String itemsName; + private String standName; + private String implementer; + private String projectName; + private String standNumber; + private String noCompliance; + private String implementerId; + private String projectNumber; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date completionTime; + private String zcNoCompliance; + private String countermeasures; + private String qualityEngineer; + private String responsibleUnit; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date zcCompletionTime; + private String certifiedEngineer; + private String complianceReasons; + private String zcCountermeasures; + private String responsibleEngineer; + private String zcComplianceReasons; + private String technicalRequir; + private String changePoint; + + private List sarStandProjectLibraries; + public void setUname(String uname) { + this.uname = uname; + } + public String getUname() { + return uname; + } + + public void setProductLine(String productLine) { + this.productLine = productLine; + } + public String getProductLine() { + return productLine; + } + + public void setSarStandProjectLibraries(List sarStandProjectLibraries) { + this.sarStandProjectLibraries = sarStandProjectLibraries; + } + public List getSarStandProjectLibraries() { + return sarStandProjectLibraries; + } + +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/PEPDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/PEPDTO.java new file mode 100644 index 00000000..7405ab40 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/PEPDTO.java @@ -0,0 +1,132 @@ +package com.adc.da.slrs.ActivityDatas.entity; +import lombok.Data; + +import java.util.List; + +@Data +public class PEPDTO { + + private String id; + private List dataList; + private SarStandProjectLibraries sarStandProjectLibraries; + private String jlUserId; + private String passFlag; + private String zrUserId; + private String standName; + private String standNumber; + private List breakdownList; + private String prcCreateUser; + private String applyUpdUserId; + private String approvalOpinion; + private String qualityEngineer; + private String qualityEngineerName; + private String certifiedEngineer; + private String certifiedEngineerName; + private String prcCreateUserName; + //返回分发责任人 + private String distributePerson; + private String distributePersonId; + private String uname; + private String projectManager; + //责任人 (对应到每条数据一个责任人) + private String workPeople; + //在研在产字段!!! 待定中 下发落实人需要使用 + //时间字段 + private String ZCCSSRQ; + private String XCXSSRQ; + + private String commentText; + + private List step3DTOS; + public void setId(String id) { + this.id = id; + } + public String getId() { + return id; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } + public List getDataList() { + return dataList; + } + + public void setJlUserId(String jlUserId) { + this.jlUserId = jlUserId; + } + public String getJlUserId() { + return jlUserId; + } + + public void setZrUserId(String zrUserId) { + this.zrUserId = zrUserId; + } + public String getZrUserId() { + return zrUserId; + } + + public void setStandName(String standName) { + this.standName = standName; + } + public String getStandName() { + return standName; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + public String getStandNumber() { + return standNumber; + } + + public void setBreakdownList(List breakdownList) { + this.breakdownList = breakdownList; + } + public List getBreakdownList() { + return breakdownList; + } + + public void setPrcCreateUser(String prcCreateUser) { + this.prcCreateUser = prcCreateUser; + } + public String getPrcCreateUser() { + return prcCreateUser; + } + + public void setApplyUpdUserId(String applyUpdUserId) { + this.applyUpdUserId = applyUpdUserId; + } + public String getApplyUpdUserId() { + return applyUpdUserId; + } + + public void setApprovalOpinion(String approvalOpinion) { + this.approvalOpinion = approvalOpinion; + } + public String getApprovalOpinion() { + return approvalOpinion; + } + + public void setQualityEngineer(String qualityEngineer) { + this.qualityEngineer = qualityEngineer; + } + public String getQualityEngineer() { + return qualityEngineer; + } + + public void setCertifiedEngineer(String certifiedEngineer) { + this.certifiedEngineer = certifiedEngineer; + } + public String getCertifiedEngineer() { + return certifiedEngineer; + } + + public void setPrcCreateUserName(String prcCreateUserName) { + this.prcCreateUserName = prcCreateUserName; + } + public String getPrcCreateUserName() { + return prcCreateUserName; + } + +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/PEPres.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/PEPres.java new file mode 100644 index 00000000..4cea7eed --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/PEPres.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.ActivityDatas.entity; + +import lombok.Data; + +import java.util.List; + +@Data +public class PEPres { + + private List pepdtos; + + + private List step3DTOS; + } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/SarStandProjectLibraries.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/SarStandProjectLibraries.java new file mode 100644 index 00000000..12aceb8f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/SarStandProjectLibraries.java @@ -0,0 +1,127 @@ +/** + * Copyright 2021 bejson.com + */ +package com.adc.da.slrs.ActivityDatas.entity; +import java.util.Date; + +/** + * Auto-generated: 2021-07-09 16:11:32 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +public class SarStandProjectLibraries { + + private String id; + private String uname; + private String currentNode; + private String productLine; + private String projectName; + private String projectGroup; + private String projectLevel; + private String projectNumber; + private String projectStatus; + private Date projectEndDate; + private String projectManager; + private String projectPlatfor; + private Date projectStartDate; + private String projectClassification; + public void setId(String id) { + this.id = id; + } + public String getId() { + return id; + } + + public void setUname(String uname) { + this.uname = uname; + } + public String getUname() { + return uname; + } + + public void setCurrentNode(String currentNode) { + this.currentNode = currentNode; + } + public String getCurrentNode() { + return currentNode; + } + + public void setProductLine(String productLine) { + this.productLine = productLine; + } + public String getProductLine() { + return productLine; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + public String getProjectName() { + return projectName; + } + + public void setProjectGroup(String projectGroup) { + this.projectGroup = projectGroup; + } + public String getProjectGroup() { + return projectGroup; + } + + public void setProjectLevel(String projectLevel) { + this.projectLevel = projectLevel; + } + public String getProjectLevel() { + return projectLevel; + } + + public void setProjectNumber(String projectNumber) { + this.projectNumber = projectNumber; + } + public String getProjectNumber() { + return projectNumber; + } + + public void setProjectStatus(String projectStatus) { + this.projectStatus = projectStatus; + } + public String getProjectStatus() { + return projectStatus; + } + + public void setProjectEndDate(Date projectEndDate) { + this.projectEndDate = projectEndDate; + } + public Date getProjectEndDate() { + return projectEndDate; + } + + public void setProjectManager(String projectManager) { + this.projectManager = projectManager; + } + public String getProjectManager() { + return projectManager; + } + + public void setProjectPlatfor(String projectPlatfor) { + this.projectPlatfor = projectPlatfor; + } + public String getProjectPlatfor() { + return projectPlatfor; + } + + public void setProjectStartDate(Date projectStartDate) { + this.projectStartDate = projectStartDate; + } + public Date getProjectStartDate() { + return projectStartDate; + } + + public void setProjectClassification(String projectClassification) { + this.projectClassification = projectClassification; + } + public String getProjectClassification() { + return projectClassification; + } + +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/Step3DTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/Step3DTO.java new file mode 100644 index 00000000..200506b3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/Step3DTO.java @@ -0,0 +1,48 @@ +/** + * Copyright 2021 bejson.com + */ +package com.adc.da.slrs.ActivityDatas.entity; +import lombok.Data; + +/** + * Auto-generated: 2021-07-12 17:52:47 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +public class Step3DTO { + + private String id; + private String uname; + private String itemNum; + private String itemsName; + private String standName; + private String implementer; + private String productLine; + private String projectName; + private String standNumber; + private String implementerId; + private String projectNumber; + private String projectManager; + private String qualityEngineer; + private String qualityEngineerName; + private String qaEngineer; + private String distributePerson; + private String certifiedEngineer; + private String certifiedEngineerName; + private String authEngineer; + private String distributePersonId; + private String zCCSSRQ; + private String xCXSSRQ; + private String responsibleUnit; + private String responsibleEngineer; + private String dutyEngineer; + private String standId; + private String standardInfo; + private String typeId; + + private String technicalRequir; + private String changePoint; + +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/receiveData.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/receiveData.java new file mode 100644 index 00000000..027f5b2b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/entity/receiveData.java @@ -0,0 +1,10 @@ +package com.adc.da.slrs.ActivityDatas.entity; + +import lombok.Data; + +@Data +public class receiveData { + + private String json; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/service/ActivityDataService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/service/ActivityDataService.java new file mode 100644 index 00000000..d5ee85d4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/service/ActivityDataService.java @@ -0,0 +1,9 @@ +package com.adc.da.slrs.ActivityDatas.service; + + +public interface ActivityDataService { + + public String dealWithDatas(String json); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/service/impl/ActivityDataServiceimpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/service/impl/ActivityDataServiceimpl.java new file mode 100644 index 00000000..6545ad97 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ActivityDatas/service/impl/ActivityDataServiceimpl.java @@ -0,0 +1,81 @@ +package com.adc.da.slrs.ActivityDatas.service.impl; + +import com.adc.da.slrs.ActivityDatas.controller.tools.JsonDateValueProcessor; +import com.adc.da.slrs.ActivityDatas.entity.*; +import com.adc.da.slrs.ActivityDatas.service.ActivityDataService; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import net.sf.json.JsonConfig; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +public class ActivityDataServiceimpl implements ActivityDataService { + + public String dealWithDatas(String json){ + JSONObject object = JSONObject.parseObject(json); + //先获取标准的数据 + List breakdownList = JSONArray.parseArray(object.getString("breakdownList"), BreakdownList.class); + //再获取产品线和项目对应信息 + List dataList = JSONArray.parseArray(object.getString("dataList"), DataList.class); + + PEPDTO pepdto = JSONObject.parseObject(json, PEPDTO.class); + + //生成任务信息 + Map numberWithId=new HashMap<>(); + + PEPres pePres = new PEPres(); + for (DataList da : dataList) { + List pepdtos = new ArrayList<>(); + for (SarStandProjectLibraries sa : da.getSarStandProjectLibraries()) { + numberWithId.put(sa.getProjectNumber(), sa.getId()); + for (BreakdownList breakdownList1 : breakdownList) { + //造数据 + //项目 + PEPDTO res = new PEPDTO(); + BeanUtils.copyProperties(pepdto, res); + List dataLists = new ArrayList<>(); + DataList dataList1 = new DataList(); + List list = new ArrayList<>(); + SarStandProjectLibraries libraries = new SarStandProjectLibraries(); + BeanUtils.copyProperties(sa, libraries); + res.setSarStandProjectLibraries(libraries); + list.add(sa); + dataList1.setSarStandProjectLibraries(list); + dataLists.add(dataList1); + res.setDataList(dataLists); + //标准 数据 + BreakdownList breakdownList2 = new BreakdownList(); + BeanUtils.copyProperties(breakdownList1, breakdownList2); + List breakdownLists = new ArrayList<>(); + breakdownLists.add(breakdownList2); + res.setBreakdownList(breakdownLists); + res.setCertifiedEngineerName(object.getString("certifiedEngineerName")); + res.setQualityEngineerName(object.getString("qualityEngineerName")); + //存储终点数据 + res.setDistributePerson(da.getDistributePerson()); + res.setDistributePersonId(da.getDistributePersonId()); + res.setUname(da.getUname()); + res.setProjectManager(da.getProjectManager()); + //时间 + res.setXCXSSRQ(breakdownList1.getXcxssrq()); + res.setZCCSSRQ(breakdownList1.getZccssrq()); + pepdtos.add(res); + } + } + pePres.setPepdtos(pepdtos); + } + return delWithTime(pePres); + } + + + public static String delWithTime(PEPres a){ + JsonConfig jsonConfig = new JsonConfig(); + jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor()); + net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(a,jsonConfig); + return jsonObject.toString(); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java new file mode 100644 index 00000000..3920a3bc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/DataSyncController.java @@ -0,0 +1,56 @@ +package com.adc.da.slrs.DataSync; + +import com.adc.da.slrs.DataSync.service.IDataSyncService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.sql.Timestamp; +import java.util.*; + +@RestController +@Api(description = "|数据同步及处理逻辑代码|") +@RequestMapping("/${restPath}/DataSync") +public class DataSyncController { + + + + @Autowired + private IDataSyncService iDataSyncService; + + + @ApiOperation("国内外标准库代替被代替 数据补全") + @PostMapping("/dtAndBdtToStandData") + public void dtAndBdtToStandData() { + iDataSyncService.dtAndBdtToStandData(); + } + + @ApiOperation("企业标准库代替被代替 数据补全") + @PostMapping("/dtAndBdtToBussData") + public void dtAndBdtToBussData() { + iDataSyncService.dtAndBdtToBussData(); + } + + @ApiOperation("同步用户数据") + @PostMapping("/importUserData") + public String importUserData() throws Exception { + return iDataSyncService.dataSync(); + } + + @ApiOperation("同步组织机构") + @PostMapping("/importOrgData") + public String importOrgData() throws Exception { + return iDataSyncService.orgDataSync(); + } + + @ApiOperation("同步组织机构,添加参数") + @PostMapping("/updateByOrgs") + public String updateByOrgs() throws Exception { + return iDataSyncService.updateByOrgs(); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java new file mode 100644 index 00000000..5b174abe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/IDataSyncService.java @@ -0,0 +1,13 @@ +package com.adc.da.slrs.DataSync.service; + +public interface IDataSyncService { + + void dtAndBdtToStandData(); + void dtAndBdtToBussData(); + + public String dataSync(); + + public String orgDataSync(); + + public String updateByOrgs(); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java new file mode 100644 index 00000000..d6eeb052 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/DataSync/service/impl/DataSyncServiceImpl.java @@ -0,0 +1,493 @@ +package com.adc.da.slrs.DataSync.service.impl; + +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.DataSync.service.IDataSyncService; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarInstitution.dao.TsInstitutionDao; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; +import com.adc.da.slrs.sarStandAttrInfo.service.ISarStandAttrInfoService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.sync.service.SyncUserService; +import com.adc.da.sys.constant.ValidFlagEnum; +import com.adc.da.sys.entity.UserOrgEO; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.log4j.Log4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.jdbc.Null; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import java.sql.Timestamp; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class DataSyncServiceImpl implements IDataSyncService { + + + @Autowired + ITsPositionService tsPositionService; + @Autowired + ITsUserService tsUserService; + @Autowired + ITsInstitutionService tsInstitutionService; + @Autowired + TsInstitutionDao tsInstitutionDao; + @Autowired + private ISarStandardsInfoService iSarStandardsInfoService; + @Autowired + private ISarBussionessStandService iSarBussionessStandService; + + @Autowired + private SarStandAttrInfoDao sarStandAttrInfoEODao; + + @Autowired + private ISarStandAttrInfoService iSarStandAttrInfoService; + + @Autowired + private SarBussStandAttrInfoDao sarBussStandAttrInfoEODao; + + @Autowired + private ISarBussStandAttrInfoService iSarBussStandAttrInfoService; + + + + private static Logger logger = LoggerFactory.getLogger(DataSyncServiceImpl.class); + + + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) + @Async + public void dtAndBdtToStandData(){ + QueryWrapper wrapper = new QueryWrapper(); + wrapper.select("sar_standards_info.*, r.DTBJH AS dtbzh, r.BDTBZH"); + wrapper.last("LEFT JOIN sar_stand_attr_info r ON r.STAND_ID = sar_standards_info.ID WHERE sar_standards_info.VALID_FLAG = '0'"); + List standardsInfos = iSarStandardsInfoService.list(wrapper); + + if(!standardsInfos.isEmpty()){ + + // 1. 遍历全部数据 + standardsInfos.forEach(info -> { + // 1.1 判断代替标准号 + if(StringUtils.isNotBlank(info.getDtbzh())){ + // 1.1.1 找出当前代替标准版所有被代替标准 + List dtList = Arrays.stream(info.getDtbzh().split(",")).map(String::trim).collect(Collectors.toList()); + if(!dtList.isEmpty()){ + for (String s : dtList) { + + if(s.contains("null")){ + continue; + } + List bdtList = standardsInfos.stream().filter(info1 -> { + if(StringUtils.isNotBlank(info1.getDtbzh()) && info1.getDtbzh().contains(s)){ + return true; + } + return false; + }).collect(Collectors.toList()); + // 1.1.1.1合并被代替标准 + if(!bdtList.isEmpty()){ + // 1.1.1.1.1 获取需要更新的代替标准 + List updInfo = standardsInfos.stream().filter(info1 -> { + String addStrandNumber = ""; + if (StringUtils.isNotEmpty(info1.getStandYear())) { + addStrandNumber = info1.getStandSort() + " " + info1.getStandNumber() + "-" + info1.getStandYear(); + } else { + addStrandNumber = info1.getStandSort() + " " + info1.getStandNumber(); + } + if(StringUtils.isNotBlank(addStrandNumber) && s.trim().equals(addStrandNumber.trim())){ + return true; + } + return false; + }).collect(Collectors.toList()); + + + // 1.1.1.1.2 是否存在需要更新的代替标准 + if(!updInfo.isEmpty()){ + // 1.1.1.1.2.1 拼接 被代替标准号 + String btd = bdtList.stream().map(info1 -> { + String addStrandNumber = ""; + if (StringUtils.isNotEmpty(info1.getStandYear())) { + addStrandNumber = info1.getStandSort() + " " + info1.getStandNumber() + "-" + info1.getStandYear(); + } else { + addStrandNumber = info1.getStandSort() + " " + info1.getStandNumber(); + } + return addStrandNumber; + }).collect(Collectors.joining(",")); + System.out.println(btd); + + // 1.1.1.1.2.2 找出已存在的被代替标准 及 去重, 如没找出,则使用最新被代替 + List notExBtdList = Arrays.stream(btd.split(",")).map(String::trim).collect(Collectors.toList()); + if(StringUtils.isNotBlank(updInfo.get(0).getBDTBZH())){ + List exBdtList = Arrays.stream(updInfo.get(0).getBDTBZH().split(",")).map(String::trim).collect(Collectors.toList()); + if(!exBdtList.isEmpty()){ + exBdtList = exBdtList.stream().filter(String -> { + if(StringUtils.isNotBlank(String) && !String.contains("null")){ + return true; + } + return false; + }).collect(Collectors.toList()); + notExBtdList.addAll(exBdtList); + notExBtdList = notExBtdList.stream().distinct().collect(Collectors.toList()); + } + } + String btdStr = notExBtdList.stream().map(String::toString).collect(Collectors.joining(",")); + + // 1.1.1.1.2.3 更新 + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("STAND_ID",updInfo.get(0).getId()); + updateWrapper.set("BDTBZH",btdStr); + iSarStandAttrInfoService.update(updateWrapper); + } + } + } + } + } + }); + + } + + } + + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) + @Async + public void dtAndBdtToBussData(){ + QueryWrapper wrapper = new QueryWrapper(); + wrapper.select("sar_bussioness_stand.*, r.DTQBBHBUSS, r.BDTQBBHBUSS"); + wrapper.last("LEFT JOIN sar_buss_stand_attr_info r ON r.STAND_ID = sar_bussioness_stand.ID WHERE sar_bussioness_stand.VALID_FLAG = '0'"); + List bussionessStands = iSarBussionessStandService.list(wrapper); + + if(!bussionessStands.isEmpty()){ + + + + // 1. 遍历全部数据 + bussionessStands.forEach(info -> { + // 1.1 判断代替标准号 + if(StringUtils.isNotBlank(info.getDTQBBHBUSS())){ + // 1.1.1 找出当前代替标准版所有被代替标准 + List dtList = Arrays.stream(info.getDTQBBHBUSS().split(",")).map(String::trim).collect(Collectors.toList()); + if(!dtList.isEmpty()){ + for (String s : dtList) { + + if(s.contains("null")){ + continue; + } + List bdtList = bussionessStands.stream().filter(info1 -> { + if(StringUtils.isNotBlank(info1.getDTQBBHBUSS()) && info1.getDTQBBHBUSS().contains(s)){ + return true; + } + return false; + }).collect(Collectors.toList()); + // 1.1.1.1合并被代替标准 + if(!bdtList.isEmpty()){ + // 1.1.1.1.1 获取需要更新的代替标准 + List updInfo = bussionessStands.stream().filter(info1 -> { + if(StringUtils.isNotBlank(info1.getStandCode()) && s.trim().equals(info1.getStandCode().trim())){ + return true; + } + return false; + }).collect(Collectors.toList()); + + + // 1.1.1.1.2 是否存在需要更新的代替标准 + if(!updInfo.isEmpty()){ + // 1.1.1.1.2.1 拼接 被代替标准号 + String btd = bdtList.stream().map(info1 -> { + String addStrandNumber = ""; + //var judgeFn = new RegExp(/\s+/g); + //if(judgeFn.test(nowstandinfo.standSort)){ + // nowstandinfo.standCode = nowstandinfo.standSort + "" + nowstandinfo.standNumber + (nowstandinfo.standYear === '' ? '' : '-' + nowstandinfo.standYear) + //}else if(nowstandinfo.standSort === 'Q/QCBFC'){ + // nowstandinfo.standCode = nowstandinfo.standSort + "" + nowstandinfo.standNumber + (nowstandinfo.standYear === '' ? '' : '-' + nowstandinfo.standYear) + //}else { + // nowstandinfo.standCode = nowstandinfo.standSort + " " + nowstandinfo.standNumber + (nowstandinfo.standYear === '' ? '' : '-' + nowstandinfo.standYear) + //} + if(StringUtils.isNotBlank(info1.getStandSort()) && info1.getStandSort().indexOf(" ")>0){ + addStrandNumber = info1.getStandSort() + info1.getStandNumber() +(StringUtils.isNotBlank(info1.getStandYear())?("-" + info1.getStandYear()):""); + }else if(StringUtils.isNotBlank(info1.getStandSort()) && info1.getStandSort() =="Q/QCBFC"){ + addStrandNumber = info1.getStandSort() + info1.getStandNumber() +(StringUtils.isNotBlank(info1.getStandYear())?("-" + info1.getStandYear()):""); + }else{ + addStrandNumber = info1.getStandSort()+" "+ info1.getStandNumber() +(StringUtils.isNotBlank(info1.getStandYear())?("-" + info1.getStandYear()):""); + } + return addStrandNumber; + }).collect(Collectors.joining(",")); + System.out.println(btd); + + // 1.1.1.1.2.2 找出已存在的被代替标准 及 去重, 如没找出,则使用最新被代替 + List notExBtdList = Arrays.stream(btd.split(",")).map(String::trim).collect(Collectors.toList()); + if(StringUtils.isNotBlank(updInfo.get(0).getBDTQBBHBUSS())){ + List exBdtList = Arrays.stream(updInfo.get(0).getBDTQBBHBUSS().split(",")).map(String::trim).collect(Collectors.toList()); + if(!exBdtList.isEmpty()){ + exBdtList = exBdtList.stream().filter(String -> { + if(StringUtils.isNotBlank(String) && !String.contains("null")){ + return true; + } + return false; + }).collect(Collectors.toList()); + notExBtdList.addAll(exBdtList); + notExBtdList = notExBtdList.stream().distinct().collect(Collectors.toList()); + } + } + String btdStr = notExBtdList.stream().map(String::toString).collect(Collectors.joining(",")); + + // 1.1.1.1.2.3 更新 + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("STAND_ID",updInfo.get(0).getId()); + updateWrapper.set("BDTQBBHBUSS",btdStr); + iSarBussStandAttrInfoService.update(updateWrapper); + } + } + } + } + } + }); + + } + + } + + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) + public String dataSync(){ + try{ + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonUser(); + if(res!=null && !res.isEmpty()){ + //存放岗位信息 + Map positionMap = new HashMap<>(); + TsPosition position = new TsPosition(); + position.setCurrent(1); + position.setPageSize(100000); + IPage iPage = tsPositionService.getPosition(position); + List positions=iPage.getRecords(); + if (!positions.isEmpty()) { + positions.forEach(tsPosition -> { + positionMap.put(tsPosition.getName(), tsPosition.getId()); + }); + } + List addUserList = new ArrayList<>(); + List upUserList = new ArrayList<>(); + for (String s : res) { + JSONObject userData = JSONObject.parseObject(s); + if(userData.containsKey("results")){ + JSONArray jsonArray = userData.getJSONArray("results"); + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + String userid = jsonObject.getString("userid"); + TsUser userEO = tsUserService.getById(userid); + String userState = ""; + if(userEO != null){ + userState = "UPDATE"; + }else{ + userState = "ADD"; + userEO = new TsUser(); + } + //先获取岗位以及岗位id + //设置岗位 + if (null != jsonObject.getString("title")) { + //通过岗位名称查询系统表中是否有岗位,有则设定用户的岗位为系统中的岗位,否则新增 + if (null == positionMap.get(jsonObject.getString("title"))) { + TsPosition tsPosition = new TsPosition(); + tsPosition.setId(String.valueOf(UUID.randomUUID())); + tsPosition.setName(jsonObject.getString("title")); + tsPositionService.addPosition(tsPosition); + //放入岗位的map集合中 + positionMap.put(tsPosition.getName(), tsPosition.getId()); + //放入类中 + userEO.setPositionName(tsPosition.getName()); + userEO.setPositionId(tsPosition.getId()); + } else { + userEO.setPositionName(jsonObject.getString("title").trim()); + userEO.setPositionId(positionMap.get(jsonObject.getString("title").trim())); + } + }else{ + userEO.setPositionId(null); + userEO.setPositionName(null); + } + //设置其他数据 + Timestamp createTime = new Timestamp(new Date().getTime()); + userEO.setState(jsonObject.getString("userStatus")); + userEO.setUname(null!=jsonObject.getString("name")?jsonObject.getString("name"):""); + userEO.setCreationTime(createTime); + userEO.setUserId(jsonObject.getString("userid")); + userEO.setAccount(jsonObject.getString("userid")); + userEO.setInstitutionId(null!=jsonObject.getString("orgNumber")?jsonObject.getString("orgNumber"):"" ); + userEO.setInstitutionName(null!=jsonObject.getString("orgName")?jsonObject.getString("orgName"):"" ); + //2022-05-23:用户同步增加状态标识,将停用的用户过滤掉 + if("1".equals(jsonObject.getString("userStatus"))){ + userEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()+""); + userEO.setDisableFlag(ValidFlagEnum.VALID_TRUE.getValue()+""); + }else{ + userEO.setValidFlag(ValidFlagEnum.VALID_FALSE.getValue()+""); + userEO.setDisableFlag(ValidFlagEnum.VALID_FALSE.getValue()+""); + } + if("ADD".equals(userState)){ + addUserList.add(userEO); + }else { + upUserList.add(userEO); + } + }); + } + } + if(!addUserList.isEmpty()){ + logger.debug("本次新增的用户为:"+JSONObject.toJSONString(addUserList)); + tsUserService.saveBatch(addUserList); + } + if(!upUserList.isEmpty()){ + logger.debug("本次更新的用户为:"+JSONObject.toJSONString(upUserList)); + tsUserService.updateBatchById(upUserList); + } + }else{ + logger.info("本次获取用户的数据为空,原因有2种:1、没有同步数据 2、请求接口报错"); + } + }catch(Exception e){ + logger.error(e.getMessage(),e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return "1"; + + } + + + + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) + public String orgDataSync(){ + try{ + SyncUserService syncUserService = new SyncUserService(); + List res = syncUserService.syncFotonOrg(); + if(res!=null && !res.isEmpty()){ + //获取到所有用户数据 + List strings=new ArrayList<>(); + //tsInstitutionService.clearData(); + for (String s : res) { + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + strings.add(jsonObject.getString("parentOrgNumber")); + }); + } + List allTsInstitutionList = tsInstitutionService.list(); + List addTsInstitutionList = new ArrayList<>(); + List updateTsInstitutionList = new ArrayList<>(); + List delTsInstitutionList = new ArrayList<>(); + Set syncAllIdList = new HashSet<>(); + for (String s : res) { + JSONArray jsonArray = JSONArray.parseArray(JSONObject.parseObject(s.toString()).getString("results")); + if(jsonArray!=null){ + jsonArray.forEach(object -> { + JSONObject jsonObject = JSONObject.parseObject(object.toString()); + TsInstitution tsInstitution=new TsInstitution(); + tsInstitution.setId(jsonObject.getString("orgNumber")); + tsInstitution.setName(jsonObject.getString("orgName")); + tsInstitution.setHasChild(strings.contains(jsonObject.getString("orgNumber"))?"1":"0"); + tsInstitution.setParentId(jsonObject.getString("parentOrgNumber")); + //部门为"null"的数据不保存 + if (!"null".equals(jsonObject.getString("orgName"))){ + TsInstitution institution = tsInstitutionService.getById(tsInstitution.getId()); + if(institution!=null){ + updateTsInstitutionList.add(tsInstitution); + }else{ + addTsInstitutionList.add(tsInstitution); + } + syncAllIdList.add(tsInstitution.getId()); + } + }); + } + } + //遍历出来需要删除的数据 + for(TsInstitution data :allTsInstitutionList){ + if(!syncAllIdList.contains(data.getId())){ + delTsInstitutionList.add(data); + } + } + //需要新增的数据 + if(!addTsInstitutionList.isEmpty()){ + logger.debug("本次新增的组织机构为:"+JSONObject.toJSONString(addTsInstitutionList)); + tsInstitutionService.saveBatch(addTsInstitutionList); + } + //需要更新的数据 + if(!updateTsInstitutionList.isEmpty()){ + logger.debug("本次更新的组织机构为:"+JSONObject.toJSONString(updateTsInstitutionList)); + tsInstitutionService.updateBatchById(updateTsInstitutionList); + } + //需要删除的数据 + if(!delTsInstitutionList.isEmpty()){ + logger.debug("本次删除的组织机构为:"+JSONObject.toJSONString(delTsInstitutionList)); + List delIdList = new ArrayList<>(); + for(TsInstitution data : delTsInstitutionList){ + delIdList.add(data.getId()); + } + tsInstitutionService.removeByIds(delIdList); + } + //全部部门 + List allTsInstitutionListForPids = new ArrayList<>(addTsInstitutionList); + allTsInstitutionListForPids.addAll(updateTsInstitutionList); + for (TsInstitution tsInstitution : allTsInstitutionListForPids){ + List parentIds = new ArrayList<>(); + getParentTaxCompanyIds(allTsInstitutionListForPids, tsInstitution.getId(), parentIds); + tsInstitution.setParentIds(String.join(",",parentIds)); + } + tsInstitutionService.updateBatchById(allTsInstitutionListForPids); + }else{ + logger.info("本次获取组织机构的数据为空,原因有2种:1、没有同步数据 2、请求接口报错"); + } + }catch(Exception e){ + logger.error(e.getMessage(),e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return "1"; + } + + public String updateByOrgs(){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ne("id",""); + List tsInstitutions = tsInstitutionDao.selectList(queryWrapper); + //全部部门 + List allTsInstitutionListForPids = new ArrayList<>(tsInstitutions); +// allTsInstitutionListForPids.addAll(updateTsInstitutionList); + for (TsInstitution tsInstitution : allTsInstitutionListForPids){ + List parentIds = new ArrayList<>(); + getParentTaxCompanyIds(allTsInstitutionListForPids, tsInstitution.getId(), parentIds); + tsInstitution.setParentIds(String.join(",",parentIds)); + logger.info(String.valueOf(tsInstitution)); + } + tsInstitutionService.updateBatchById(allTsInstitutionListForPids); + return allTsInstitutionListForPids.toString(); + } + + /** + * 递归获取父级ids + * @param taxCompanyList + * @param id + */ + private void getParentTaxCompanyIds(List taxCompanyList, String id, List parentIds) { + for (TsInstitution taxCompany : taxCompanyList) { + if (StringUtils.isEmpty(taxCompany.getParentId())) { + continue; + } + //判断是否有父节点 + if (id.equals(taxCompany.getId())) { + parentIds.add(taxCompany.getParentId()); + getParentTaxCompanyIds(taxCompanyList, taxCompany.getParentId(), parentIds); + } + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/POIUtil/POIUtil.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/POIUtil/POIUtil.java new file mode 100644 index 00000000..922a3c88 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/POIUtil/POIUtil.java @@ -0,0 +1,81 @@ +package com.adc.da.slrs.ImportExcelDatas.POIUtil; + + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.DateUtil; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; + +@Component +public class POIUtil { + + + //获取单元格各类型值,返回字符串类型 + public static String getCellValueByCell(Cell cell) { + //判断是否为null或空串 + if (cell==null || cell.toString().trim().equals("")) { + return ""; + } + String cellValue = ""; + CellType cellType = cell.getCellType(); + cell.getCellType(); + switch (cellType) { + case NUMERIC: // 数字 + short format = cell.getCellStyle().getDataFormat(); + if (DateUtil.isCellDateFormatted(cell)) { + SimpleDateFormat sdf = null; + //System.out.println("cell.getCellStyle().getDataFormat()="+cell.getCellStyle().getDataFormat()); + if (format == 20 || format == 32) { + sdf = new SimpleDateFormat("HH:mm"); + } else if (format == 14 || format == 31 || format == 57 || format == 58) { + // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58) + sdf = new SimpleDateFormat("yyyy-MM-dd"); + double value = cell.getNumericCellValue(); + Date date = org.apache.poi.ss.usermodel.DateUtil + .getJavaDate(value); + cellValue = sdf.format(date); + }else {// 日期 + sdf = new SimpleDateFormat("yyyy-MM-dd"); + } + try { + cellValue = sdf.format(cell.getDateCellValue());// 日期 + } catch (Exception e) { + try { + throw new Exception("exception on get date data !".concat(e.toString())); + } catch (Exception e1) { + e1.printStackTrace(); + } + }finally{ + sdf = null; + } + } else { + BigDecimal bd = new BigDecimal(cell.getNumericCellValue()); + cellValue = bd.toPlainString();// 数值 这种用BigDecimal包装再获取plainString,可以防止获取到科学计数值 + } + break; + case STRING: // 字符串 + cellValue = cell.getStringCellValue(); + break; + case BOOLEAN: // Boolean + cellValue = cell.getBooleanCellValue()+"";; + break; + case FORMULA: // 公式 + cellValue = cell.getCellFormula(); + break; + case BLANK: // 空值 + cellValue = ""; + break; + case ERROR: // 故障 + cellValue = "ERROR VALUE"; + break; + default: + cellValue = "UNKNOW VALUE"; + break; + } + return cellValue; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/POIUtil/ZIPUtil.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/POIUtil/ZIPUtil.java new file mode 100644 index 00000000..254bf664 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/POIUtil/ZIPUtil.java @@ -0,0 +1,189 @@ +package com.adc.da.slrs.ImportExcelDatas.POIUtil; + + +import java.io.*; +import java.nio.file.Files; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +public class ZIPUtil { + + private static final int BUFFER_SIZE = 2 * 1024; + + /** + * 压缩成ZIP 方法1 + * @param srcDir 压缩文件夹路径 + * @param out 压缩文件输出流 + * @param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构; + * false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败) + * @throws RuntimeException 压缩失败会抛出运行时异常 + */ + public static void toZip(String srcDir, OutputStream out, boolean KeepDirStructure) + throws RuntimeException{ + +// long start = System.currentTimeMillis(); + ZipOutputStream zos = null ; + try { + zos = new ZipOutputStream(out); + File sourceFile = new File(srcDir); + compress(sourceFile,zos,sourceFile.getName(),KeepDirStructure); +// long end = System.currentTimeMillis(); + } catch (Exception e) { + throw new RuntimeException("zip error from ZipUtils",e); + }finally{ + if(zos != null){ + try { + zos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + } + + /** + * 压缩成ZIP 方法2 + * @param srcFiles 需要压缩的文件列表 + * @param out 压缩文件输出流 + * @throws RuntimeException 压缩失败会抛出运行时异常 + */ + public static void toZip(List srcFiles , OutputStream out)throws RuntimeException { +// long start = System.currentTimeMillis(); + ZipOutputStream zos = null ; + try { + zos = new ZipOutputStream(out); + for (File srcFile : srcFiles) { + byte[] buf = new byte[BUFFER_SIZE]; + zos.putNextEntry(new ZipEntry(srcFile.getName())); + int len; + FileInputStream in = new FileInputStream(srcFile); + while ((len = in.read(buf)) != -1){ + zos.write(buf, 0, len); + } + zos.closeEntry(); + in.close(); + } +// long end = System.currentTimeMillis(); + + } catch (Exception e) { + throw new RuntimeException("zip error from ZipUtils",e); + }finally{ + if(zos != null){ + try { + zos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + /** + * 递归压缩方法 + * @param sourceFile 源文件 + * @param zos zip输出流 + * @param name 压缩后的名称 + * @param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构; + * false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败) + + * @throws Exception + + */ + + private static void compress(File sourceFile, ZipOutputStream zos, String name, + + boolean KeepDirStructure) throws Exception{ + + byte[] buf = new byte[BUFFER_SIZE]; + + if(sourceFile.isFile()){ + + // 向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字 + + zos.putNextEntry(new ZipEntry(name)); + + // copy文件到zip输出流中 + + int len; + + FileInputStream in = new FileInputStream(sourceFile); + + while ((len = in.read(buf)) != -1){ + + zos.write(buf, 0, len); + + } + + // Complete the entry + + zos.closeEntry(); + + in.close(); + + } else { + + File[] listFiles = sourceFile.listFiles(); + + if(listFiles == null || listFiles.length == 0){ + + // 需要保留原来的文件结构时,需要对空文件夹进行处理 + + if(KeepDirStructure){ + + // 空文件夹的处理 + + zos.putNextEntry(new ZipEntry(name + "/")); + + // 没有文件,不需要文件的copy + + zos.closeEntry(); + + } + + + + }else { + + for (File file : listFiles) { + + // 判断是否需要保留原来的文件结构 + + if (KeepDirStructure) { + + // 注意:file.getName()前面需要带上父文件夹的名字加一斜杠, + + // 不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了 + + compress(file, zos, name + "/" + file.getName(),KeepDirStructure); + + } else { + + compress(file, zos, file.getName(),KeepDirStructure); + + } + + + + } + + } + + } + + } + + /** + * 根据java.nio.*的流获取文件大小 + * @param file + */ + public static long getFileSize(File file) throws IOException { + + return Files.walk(file.toPath()) + .map(f -> f.toFile()) + .filter(f -> f.isFile()) + .mapToLong(f -> f.length()).sum(); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Analysis.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Analysis.java new file mode 100644 index 00000000..b5b83639 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Analysis.java @@ -0,0 +1,137 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashSet; +import java.util.List; +import java.util.stream.Collectors; + +@Component +public class Analysis { + + private static final Logger logger = LoggerFactory.getLogger(Contrast.class); + + private int sortColumn=0; + + + public void run(MultipartFile file, MultipartFile sort) throws IOException { + + InputStream inputStream = file.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + + HashSet sortSet = getSet(sort); + + for (Row row : sheet) { + if (row.getCell(1)!=null){ + //获取表1的标准号 + String value = row.getCell(1).toString(); + Cell sortCell = row.createCell(11); + Cell numberCell = row.createCell(12); + Cell yearCell = row.createCell(13); + + sortCell.setCellType(CellType.STRING); + numberCell.setCellType(CellType.STRING); + yearCell.setCellType(CellType.STRING); + + List collect = sortSet.stream() + .filter(item ->{ + int length = item.length(); + if (value.length()>length){ + return value.substring(0, length).contains(item); + }else return false; + }) + .collect(Collectors.toList()); + + //对比在表2中是否存在 + if (collect.size()==1){ + + String sortStr = collect.get(0); + int length = sortStr.length(); + logger.info("*"); +// Pattern pattern = Pattern.compile("^\\S*\\s\\S*[\\u2014\\u002d\\s]\\d{4}$"); +// pattern.matcher(standId).matches() + if (value.length()>=length+5){ + sortCell.setCellValue(collect.get(0)); + numberCell.setCellValue(value.substring(length,value.length()-5)); + yearCell.setCellValue(value.substring(value.length()-4)); + } + }else if (collect.size()>1){ + String maxLenSort=""; + for (String s : collect) { + if (s.length()>maxLenSort.length()){ + maxLenSort=s; + } + } + + int length = maxLenSort.length(); + + if (value.length()>=length+5){ + logger.info("+"); + + + sortCell.setCellValue(maxLenSort); + numberCell.setCellValue(value.substring(length,value.length()-5)); + yearCell.setCellValue(value.substring(value.length()-4)); + } + + } else { + logger.info("-"); + + sortCell.setCellValue("-"); + numberCell.setCellValue("-"); + yearCell.setCellValue("-"); + } + } + } + File result = new File("C:\\Users\\22501\\Desktop\\foton标准数据\\拆分标准号-企标.xlsx"); + FileOutputStream os = new FileOutputStream(result); + workbook.write(os); +// HashMap map = new HashMap<>(); + + } + + + public void setSortColumn(int sortColumn){ + this.sortColumn=sortColumn; + } + + /** + * 获取标准类别set集合 + * @param file + * @return + * @throws IOException + */ + private HashSet getSet(MultipartFile file) throws IOException { + InputStream inputStream = file.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + +// int lastNum = sheet.getLastRowNum(); + + HashSet stringHashSet= new HashSet<>(); + + for (Row row : sheet) { + if (row.getCell(sortColumn)!=null){ + stringHashSet.add(row.getCell(sortColumn).toString()); + } + } + + return stringHashSet; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Contrast.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Contrast.java new file mode 100644 index 00000000..9002a91f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Contrast.java @@ -0,0 +1,77 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.HashSet; + +@Component +public class Contrast { + private static final Logger logger = LoggerFactory.getLogger(Contrast.class); + + public void run(MultipartFile file,MultipartFile sort) throws IOException { + + InputStream inputStream = file.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + + HashSet set = getSet(sort); + for (Row row : sheet) { + if (row.getCell(0)!=null){ + //获取表1的标准号 + String value = row.getCell(0).toString().trim(); + Cell cell = row.createCell(11); + + //对比在表2中是否存在 + if (set.contains(value.trim())){ + logger.info("*"); + cell.setCellType(CellType.STRING); + cell.setCellValue("1"); + }else { + logger.info("-"); + cell.setCellType(CellType.STRING); + cell.setCellValue("0"); + } + } + } + File result = new File("C:\\Users\\22501\\Desktop\\foton标准数据\\海外对比全数据.xlsx"); + FileOutputStream os = new FileOutputStream(result); + workbook.write(os); +// HashMap map = new HashMap<>(); + + } + + private HashSet getSet(MultipartFile file) throws IOException { + InputStream inputStream = file.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + +// int lastNum = sheet.getLastRowNum(); + + HashSet stringHashSet= new HashSet<>(); + + for (Row row : sheet) { + if (row.getCell(1)!=null){ + stringHashSet.add(row.getCell(1).toString().trim()); + } + } + + return stringHashSet; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclErrorOut.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclErrorOut.java new file mode 100644 index 00000000..f8a81979 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclErrorOut.java @@ -0,0 +1,80 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import com.adc.da.utils.util.BussStandExportUtil; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; +import java.util.List; + + +@Component +public class ExclErrorOut { + private static final Logger logger = LoggerFactory.getLogger(ExclErrorOut.class); + + public static Workbook exportDatas (List datas,String header) { + Workbook workbook = new XSSFWorkbook(); + try { + + + //创建工作表对象 + Sheet sheet = workbook.createSheet(); + // 创建头部 + createHeader(workbook,sheet,header); + // 创建数据 + createDatas(workbook,sheet,datas); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return workbook; + } + + + public static void createHeader(Workbook workbook, Sheet sheet, String header){ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + Row rowHeader = sheet.createRow(0);//开始创建标题行 + if (StringUtils.isNotBlank(header)) { + String[] headerArr = header.split(","); + for (int i=0;i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); +// rowHeader.createCell(i).setCellStyle(cellStyle); + } + } + } + + + + public static void createDatas(Workbook workbook,Sheet sheet,List datas) throws Exception{ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + if (datas != null && !datas.isEmpty()) { + for (int i=0;i < datas.size(); i++) { + ImportDto importDto = datas.get(i); + Row row = sheet.createRow(i+1); + + int sheetNum = 0; + + Class cls = importDto.getClass(); + Field[] fields = cls.getDeclaredFields(); + for (Field field : fields) { + field.setAccessible(true); + if (field.get(importDto)!=null){ + String value = field.get(importDto).toString(); + row.createCell(sheetNum).setCellValue(value); + }else { + row.createCell(sheetNum).setCellValue(""); + } + sheetNum++; + } + } + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclExport.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclExport.java new file mode 100644 index 00000000..40b9703e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/ExclExport.java @@ -0,0 +1,116 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import java.util.*; +import java.util.stream.Collectors; + + +@Component +public class ExclExport extends ExclErrorOut { + + private static final Logger logger = LoggerFactory.getLogger(ExclErrorOut.class); + + /** + * 导出多个sheet页的excl + */ + public Workbook exportData(Map> dataMap, String header) { + Workbook workbook=new XSSFWorkbook(); + + try { + for (Map.Entry> entry : dataMap.entrySet()) { + List datas = entry.getValue(); + Sheet sheet = workbook.createSheet(entry.getKey()); + sheet.setDefaultColumnWidth(25); + super.createHeader(workbook,sheet,header); + super.createDatas(workbook,sheet,datas); + + } + } catch (Exception e) { + e.printStackTrace(); + } + + return workbook; + } + + /** + * 比对表格中的数据是否在数据库表中 + * @param sourceFile + * @return + */ + public void contrast(MultipartFile sourceFile, HashSet> set) throws IOException { + + + InputStream inputStream = sourceFile.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + + + +// HashMap map = new HashMap<>(); + int lastNum = sheet.getLastRowNum(); + for (int i = 0; i < lastNum; i++) { + + XSSFRow row = sheet.getRow(i); + + + if (row.getCell(1)!=null){ +// String value = row.getCell(1).toString(); + +// map.put(value,String.valueOf(i)); + String value = row.getCell(1).toString(); + Cell cell = row.createCell(11); + Set> collect = set.stream() + .filter(item -> + value.contains(item.get(0).trim()) + && value.contains(item.get(1).trim()) + && value.contains(item.get(2).trim()) + ) + .collect(Collectors.toSet()); + + + if (!collect.isEmpty()){ + logger.info("*"); + cell.setCellType(CellType.STRING); + cell.setCellValue("1"); + }else { + logger.info("-"); + cell.setCellType(CellType.STRING); + cell.setCellValue("0"); + } + } + +// map.strea +// List filterList=map.stre() +// .filter(user -> serviceCodes.contains(user.getOrgId())) +// .collect(Collectors.toList()); + + + + } + + File file = new File("C:\\Users\\22501\\Desktop\\foton标准数据\\ouhuo.xlsx"); + FileOutputStream os = new FileOutputStream(file); + workbook.write(os); + } + + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/PathMatcher.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/PathMatcher.java new file mode 100644 index 00000000..2a34d582 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/PathMatcher.java @@ -0,0 +1,120 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + + +import com.alibaba.fastjson.JSON; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; + +public class PathMatcher { + private static final Logger logger = LoggerFactory.getLogger(PathMatcher.class); + + + + public void run(MultipartFile target, MultipartFile attach) throws IOException { + InputStream inputStream = target.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet mySheet = workbook.getSheetAt(0); + + HashMap fileMap = getFileMap(attach); + + + for (Row row : mySheet) { + if (row.getCell(1) == null || row.getCell(10) == null) { + logger.info("+"); + continue; + } + + + String latter = row.getCell(1).getStringCellValue().trim();//标准号 + + String[] fileIdArray = row.getCell(10).getStringCellValue().trim().split(",");//文档id + + HashMap idMapPath = new HashMap<>(); //文件id和路径的键值对 + + + + + for (String fileId : fileIdArray) { //遍历文件id + + StringBuilder builder = new StringBuilder(); + builder.append(fileId) + .append(latter);//拼接文件id和标准号 + + + if (!fileMap.containsKey(builder.toString())) { + logger.info("-"); + continue; + }else { + Cell cell = row.createCell(9); + + + idMapPath.put(fileId,fileMap.get(builder.toString())); + String json = JSON.toJSONString(idMapPath); + + cell.setCellType(CellType.STRING); + cell.setCellValue(json); + logger.info("*"); + } + + } + + + + + + } + + File file = new File("C:\\Users\\22501\\Desktop\\foton标准数据\\匹配带入文件路径-国内-多个路径.xlsx"); + FileOutputStream os = new FileOutputStream(file); + workbook.write(os); + + + } + + + private HashMap getFileMap(MultipartFile excel) throws IOException { + + InputStream inputStream = excel.getInputStream(); + + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + + HashMap resultMap = new HashMap<>(); + for (Row row : sheet) { + + String value = row.getCell(0).getStringCellValue(); + + String[] strArray = value.split(","); + + StringBuilder builder = new StringBuilder(); + builder.append(strArray[1].trim()) //文档id + .append(strArray[2].trim()); //标准号 + + + String path = strArray[3]; + + resultMap.put(builder.toString(), path); + + } + + return resultMap; + + + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/StandMatcher.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/StandMatcher.java new file mode 100644 index 00000000..b6be69cd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/StandMatcher.java @@ -0,0 +1,201 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import static org.apache.poi.ss.usermodel.CellType.NUMERIC; + +public class StandMatcher { + + + private static final Logger logger = LoggerFactory.getLogger(StandMatcher.class); + + + public void run(MultipartFile target,MultipartFile attach) throws IOException { + InputStream inputStream = target.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + + Map matchSet = getMatchSet(attach); + + for (Row row : sheet) { + + /** + * 企标 + */ +// String letter =convertCellValueToString(row.getCell(1));//标准号 +// String publish = convertCellValueToString(row.getCell(4));//发布日期 +// String impl= convertCellValueToString(row.getCell(5));//实施日期 +// String state = convertCellValueToString(row.getCell(3));//状态 +// String replace= convertCellValueToString(row.getCell(6));//代替标准号 + + /** + * 国内 + */ + String letter =convertCellValueToString(row.getCell(1));//标准号 + String publish = convertCellValueToString(row.getCell(3));//发布日期 + String impl= convertCellValueToString(row.getCell(4));//实施日期 + String state = convertCellValueToString(row.getCell(2));//状态 + String replace= convertCellValueToString(row.getCell(5));//代替标准号 + + + + + StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(letter) + .append(publish) + .append(impl) + .append(state) + .append(replace); + String str = strBuilder.toString(); + + if (matchSet.containsKey(str)){ + Cell cell = row.createCell(10); //再第10列存放文件id + cell.setCellType(CellType.STRING); + cell.setCellValue(matchSet.get(str)); + logger.info("*"); + }else { + logger.info("-"); + + } + + } + + File result = new File("C:\\Users\\22501\\Desktop\\foton标准数据\\匹配带入文件id-国内-多个文件id.xlsx"); + FileOutputStream os = new FileOutputStream(result); + workbook.write(os); + } + + + + + private Map getMatchSet(MultipartFile excel) throws IOException { + InputStream inputStream = excel.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + + XSSFSheet sheet = workbook.getSheetAt(0); + + Map resultSet = new HashMap<>(); + + + for (Row row : sheet) { + + String letter =convertCellValueToString(row.getCell(0));//标准号 + + String publish = convertCellValueToString(row.getCell(3));//发布日期 + + String impl= convertCellValueToString(row.getCell(4));//实施日期 + + String state = convertCellValueToString(row.getCell(5));//状态 + + String replace= convertCellValueToString(row.getCell(6));//代替标准号 + + + + StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(letter) + .append(publish) + .append(impl) + .append(state) + .append(replace); + + + + if (row.getCell(7).getCellType()== NUMERIC){ + String s = row.getCell(7).toString(); + String fileId =s.substring(0,s.length()-2);//文件id + String standStr = strBuilder.toString(); + if(resultSet.containsKey(standStr)){ + String s1 = resultSet.get(standStr); + + resultSet.replace(standStr,s1+","+fileId); + }else { + resultSet.put(standStr,fileId); + + } + + } + + } + + + return resultSet; + } + + + + + + + /** + * 将单元格内容转化为字符串 + */ + private static String convertCellValueToString(Cell cell) { + if (null == cell) { + return ""; + } + String returnValue = ""; + switch (cell.getCellType()) { + case STRING: //字符串 + returnValue = cell.getStringCellValue().trim(); + break; + case NUMERIC: //数字 + + + + if (DateUtil.isCellDateFormatted(cell)) { + Date tempValue = cell.getDateCellValue(); + SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + returnValue = simpleFormat.format(tempValue); + }else { + returnValue = String.valueOf(cell.getNumericCellValue()); + } + + + returnValue=cell.toString().trim(); + + + break; + case BOOLEAN: //布尔 + boolean booleanCellValue = cell.getBooleanCellValue(); + returnValue = Boolean.toString(booleanCellValue).trim(); + break; + case BLANK: //空值 + break; + case FORMULA: //公式 + cell.getCellFormula(); + break; + case ERROR: //故障 + break; + default: + break; + } + return returnValue; + } + /** + * 判断是否为整数,是返回true,否则返回false. + */ + public static boolean isIntegerForDouble(Double num) { + double eqs = 1e-10; //精度范围 + return num - Math.floor(num) < eqs; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Standard.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Standard.java new file mode 100644 index 00000000..5403054b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/comment/Standard.java @@ -0,0 +1,169 @@ +package com.adc.da.slrs.ImportExcelDatas.comment; + +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.slrs.ImportExcelDatas.POIUtil.POIUtil; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.alibaba.fastjson.JSON; +import com.google.gson.Gson; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +@Component +public class Standard { + + + @Autowired + private IAttFileEOService attFileEOService; + + + + private static final Logger logger = LoggerFactory.getLogger(Standard.class); + Map standAttrMap = new TreeMap<>(); + private String standType=""; + + + + Standard(){ + /** + * 初始化国内外标准属性字段 + */ + List listStandField = InitStandAttrUtil.queryFieldList; + listStandField.forEach(item ->{ + this.standAttrMap.put(item,""); + }); + } + + + + + public void setStandType(String standType) { + + if (!"INLAND,FOREIGN".contains(standType)){ + logger.error("标准类别错误"); + }else { + this.standType = standType; + } + } + + + + + + public SarStandardsInfo getStandardsInfo(Row row){ + + + SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); + + + if ("".equals(standType)){ + logger.error("未设置标准类型"); + }else { + sarStandardsInfo.setStandType(standType); + } + + + sarStandardsInfo.setValidFlag("0"); + Map fieldMap = standAttrMap;//标准字段初化 + for (int i=0;i<10;i++){ + Cell cell = row.getCell(i); + String value = POIUtil.getCellValueByCell(cell); + switch (i){ + case 0://标准名称 + sarStandardsInfo.setStandName(value); + break; + case 2://标准状态 + //TODO 标准状态转换为代码 + switch (value){ + case "有效": + value="vsaga7nwub"; + break; + case "作废": + value="chblaarg77"; + break; + case "参考": + value="-"; + break; + case "0": + value="-"; + break; + default:value="-"; + } + sarStandardsInfo.setTextStatus(value); + break; + case 3://发布日期 + //日期格式转换 1970/1/1 时发布日期为空 + if ("1970/1/1".equals(value.trim())){ + value=""; + } + sarStandardsInfo.setIssueTime(value); + break; + case 4://实施日期 + fieldMap.put("SSRQ", value); + break; + case 5://代替标准号 + fieldMap.put("DTBJH", value); + break; + case 6://标准类别 + sarStandardsInfo.setStandSort(value); + break; + case 7://标准号 + sarStandardsInfo.setStandNumber(value); + break; + case 8://标准年份 + sarStandardsInfo.setStandYear(value); + break; + case 9://附件路径 ->上传 + HashMap pathMap = JSON.parseObject(value, HashMap.class); + if (pathMap!=null){ + Cell standCodeCell = row.getCell(1); + String standCode = POIUtil.getCellValueByCell(standCodeCell); + + StringBuilder fileNameBuilder = new StringBuilder(); + fileNameBuilder.append(standCode) //标准号 + .append(sarStandardsInfo.getStandName());//标准名称 + AttFileVo fileInfo = importFile(pathMap,fileNameBuilder.toString());//上传文件 + fieldMap.put("FBGBJBD", fileInfo.getAttId()); + } + break; + } + } + + Gson gson = new Gson(); + String attrInfoJson = gson.toJson(fieldMap); + sarStandardsInfo.setSarStandAttrEOStr(attrInfoJson);//新增修改时属性表信息 + + return sarStandardsInfo; + } + + + private AttFileVo importFile(HashMap pathMap,String customName){ + String realPath = ""; + + for(String path: pathMap.values()) { + String filePath[] = path.split("/"); + for (int i = 3; i < filePath.length; i++) { + realPath = realPath + "/" + filePath[i]; + + } + break; + } + + File file = new File("/data/from12/Attach_swf_bak" + realPath); + + + return attFileEOService.insertFileInfo(file,customName); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/controller/ImportExcelController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/controller/ImportExcelController.java new file mode 100644 index 00000000..9f481dc5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/controller/ImportExcelController.java @@ -0,0 +1,217 @@ +package com.adc.da.slrs.ImportExcelDatas.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.common.ReadExcel; +import com.adc.da.slrs.ImportExcelDatas.POIUtil.ZIPUtil; +import com.adc.da.slrs.ImportExcelDatas.comment.*; +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import com.adc.da.slrs.ImportExcelDatas.service.IImportStandExcelService; +import com.adc.da.slrs.ImportExcelDatas.service.ImportExcelService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.IOUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.nio.channels.FileChannel; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@RestController +@Api(description = "|SarStandPutTime|") +@RequestMapping("/api/ImportExcel") +public class ImportExcelController extends BaseController { + + @Autowired + private ImportExcelService importExcelService; + + @Autowired + private ExclErrorOut exclErrorOut; + + + @ApiOperation("从excl中导入标准信息") + @PostMapping("/import") + public void deleteList(MultipartFile file, MultipartFile file2, HttpServletResponse response, HttpServletRequest request) throws IOException { + Map> mapMap=importExcelService.getExcelData(file,file2); + /** + * 导入系统 + */ +// List errorList = importExcelService.storageExclData(mapMap); +// mapMap.put("导入后的信息",errorList); +// List guonei= mapMap.get("GNBZ"); +// List haiwai = mapMap.get("HWBZ"); +// List qibiao = mapMap.get("QYBZ"); + + + + + /** + * 生成错误表格 + */ + OutputStream os = null; + Workbook workbook = null; + try { + + String exportName="错误表格"; + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx",request)); + response.setContentType("application/force-download"); + //导出数据 + String headStr="标准号,标准名称,英文名称,发布时间,实施时间,标准状态,代替标准号,附件路径,错误原因"; +// workbook = exclErrorOut.exportDatas(guonei,headStr); + + ExclExport exclExport = new ExclExport(); + workbook = exclExport.exportData(mapMap, headStr); + + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + if (workbook != null) { + workbook.close(); + } + } + + +// return responseMessage; + + } + + + @ApiOperation("从excl分解出标准号") + @PostMapping("/analysisExcl") + public void analysisExcl(MultipartFile exclFile,MultipartFile standSort, HttpServletResponse response, HttpServletRequest request) throws IOException { + /** + * 分解数据 + */ + String headStr="标准号,标准类别,内容,标准名称,英文名称,发布时间,实施时间,标准状态,代替标准号,//,//"; + Map> stringListMap = importExcelService.analysisExcl(exclFile,standSort); + + + + /** + * 生成错误表格 + */ + OutputStream os = null; + Workbook workbook = null; + try { + + String exportName="错误表格"; + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx",request)); + response.setContentType("application/force-download"); + //导出数据 +// workbook = exclErrorOut.exportDatas(guonei,headStr); + + ExclExport exclExport = new ExclExport(); + workbook = exclExport.exportData(stringListMap, headStr); + + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + if (workbook != null) { + workbook.close(); + } + } + } + + + + @ApiOperation("excel表中的信息是否在数据库中存在") + @PostMapping("/isExist") + public String isExist(MultipartFile exclFile){ + return importExcelService.isExist(exclFile); + } + + @ApiOperation("对比两个excel表中的标准名称") + @PostMapping("/contrast") + public void contrast(MultipartFile targetExcel,MultipartFile excel) throws IOException { + Contrast contrast = new Contrast(); + contrast.run(targetExcel,excel); + + } + + + @ApiOperation("根据标准从excl中分解出标准号,类别,年份") + @PostMapping("/analysis") + public void analysis(MultipartFile targetExcel,MultipartFile attachExcel) throws IOException { + Analysis analysis = new Analysis(); + analysis.setSortColumn(1); + analysis.run(targetExcel,attachExcel); + } + + + + @ApiOperation("匹配文件id(多个id)") + @PostMapping("/matching") + public void matching(MultipartFile targetExcel,MultipartFile attachExcel) throws IOException { + StandMatcher standMatcher = new StandMatcher(); + standMatcher.run(targetExcel, attachExcel); + } + + + @ApiOperation("根据文件id和标准号匹配文件路径") + @PostMapping("/matchingPath") + public void matchingPath(MultipartFile targetExcel,MultipartFile attachExcel) throws IOException { + + PathMatcher pathMatcher = new PathMatcher(); + pathMatcher.run(targetExcel,attachExcel); + } + + + @Autowired + private IImportStandExcelService iImportStandExcelService; + + @ApiOperation("根据分解后的excel表 导入标准数据和附件") + @PostMapping("importStandFormExcel") + public void importStandFormExcel(MultipartFile targetExcel,String standType) throws IOException { + iImportStandExcelService.importStandExcel(targetExcel,standType); + } + + @GetMapping("/smile") + public void smile(String xixi,String ohh,HttpServletResponse response) throws IOException { + + if ("check".equals(ohh)){ + File file = new File(xixi); + long fileSize = ZIPUtil.getFileSize(file); + response.setContentType("text/html;charset=UTF-8"); + ServletOutputStream os = response.getOutputStream(); + os.write(String.valueOf(fileSize).getBytes()); + + }else if("down".equals(ohh) ){ + /** 3.设置response的header */ + + response.setContentType("application/zip"); + + response.setHeader("Content-Disposition", "attachment; filename=excel.zip"); + + ZIPUtil.toZip(xixi, response.getOutputStream(),true); + } + + + + + + + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/dao/ImportExcelDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/dao/ImportExcelDao.java new file mode 100644 index 00000000..29293c7e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/dao/ImportExcelDao.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.ImportExcelDatas.dao; + +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Map; + +public interface ImportExcelDao extends BaseMapper { + + Map>> getExcelData(MultipartFile file); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/entity/ImportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/entity/ImportDto.java new file mode 100644 index 00000000..f473618d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/entity/ImportDto.java @@ -0,0 +1,32 @@ +package com.adc.da.slrs.ImportExcelDatas.entity; + +import com.adc.da.base.entity.BaseEntity; +import lombok.Data; + +@Data +public class ImportDto extends BaseEntity { + +// 标准号 + private String standId; +//标准类别 + private String standSort; + // + private String standIdExcludeSort; +// 标准名称 + private String standName; +// 英文名称 + private String standNameEN; +// 发布时间 + private String publishTime; +// 实施时间 + private String implementedTime; +// 标准状态 + private String standStatus; +// 代替标准号 + private String replaceId; +// 附件路径 + private String path; + +// 错误原因 + private String errorStr; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/IImportStandExcelService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/IImportStandExcelService.java new file mode 100644 index 00000000..43fdad64 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/IImportStandExcelService.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.ImportExcelDatas.service; + +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +public interface IImportStandExcelService { + + String importStandExcel(MultipartFile file,String standType) throws IOException; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/ImportExcelService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/ImportExcelService.java new file mode 100644 index 00000000..36f41c34 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/ImportExcelService.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.ImportExcelDatas.service; + +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Map; + +public interface ImportExcelService extends IService { + + Map> getExcelData(MultipartFile file,MultipartFile file2); + + + public List storageExclData(Map> importListMap); + + public Map> analysisExcl(MultipartFile exclFile,MultipartFile standSort); + + + public String isExist(MultipartFile exclFile); + + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportExcelServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportExcelServiceImpl.java new file mode 100644 index 00000000..0ca0dff9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportExcelServiceImpl.java @@ -0,0 +1,884 @@ +package com.adc.da.slrs.ImportExcelDatas.service.impl; + +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.slrs.ImportExcelDatas.comment.ExclExport; +import com.adc.da.slrs.ImportExcelDatas.dao.ImportExcelDao; +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import com.adc.da.slrs.ImportExcelDatas.service.ImportExcelService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.service.impl.DicTypeEOServiceImpl; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.Gson; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.InputStream; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@Service +public class ImportExcelServiceImpl extends ServiceImpl implements ImportExcelService { + + + @Autowired + private IAttFileEOService attFileEOService; + +// @Autowired +// private CreateStandMQService createStandMQService; +// +// @Autowired +// private SarStandardsInfoServiceImpl sarStandardsInfoService; +// +// +// +// @Autowired +// private SarBussionessStandServiceImpl sarBussionessStandService; + + + + + + + private final static String GN = "GB,GB/T,QC/T,GJB,JB,JT,HG,YV,SY,SH,GA,HJ,QB,JG,NB,JC,YS/T,FZ/T,TB/T,JJG,SJ/T,T/TBPS" + + ",NB/T,CJ/T,YS/T,SJ/T,BB/T,SN/T,SB/T,MH/T,DB11,SZDB/Z,HKG,T/ZSA,CSAE,T/CAS,T/CADA,T/CHTS,T/ITS,T/BJQC"; + private final static String QB = "Q/QCBFC,Q/FT,Q/FL,Q/QCFLC,Q/BQB,Q/SGT," + + "Q-AMSN,QB-NE,Q-IOUM,Q房/AYJ,KNT"; + + // file 为主 file2 为附件 + @Override + public Map> getExcelData(MultipartFile file, MultipartFile file2) { + + List dates = new ArrayList<>(); + for (int i = 1669; i < 2023; i++) { + dates.add("-" + i); + dates.add("—" + i); + dates.add("- " + i); + dates.add("— " + i); + dates.add("-" + i); + } + + if (file == null || file.getSize() == 0) { + log.error("文件上传错误,重新上传"); + } + String filename = file.getOriginalFilename(); + if (!(filename.endsWith(".xls") || filename.endsWith(".xlsx"))) { + log.error("文件上传格式错误,请重新上传"); + } + + if (file2 == null || file2.getSize() == 0) { + log.error("文件上传错误,重新上传"); + } + String filename2 = file2.getOriginalFilename(); + if (!(filename2.endsWith(".xls") || filename2.endsWith(".xlsx"))) { + log.error("文件上传格式错误,请重新上传"); + } + + List datas = new ArrayList<>(); + List fujian = new ArrayList<>(); + try { + if (filename.endsWith(".xls")) { + datas = isXls(file); + } else { + datas = isXlsx(file); + } + + if (filename2.endsWith(".xls")) { + fujian = isXls(file2); + } else { + fujian = isXlsx(file2); + } + } catch (Exception e) { + log.error(e.getMessage()); + } + Map> res = new HashMap<>(); +// 国内标准 + List GNS = new ArrayList<>(Arrays.asList(GN.split(","))); +// 企业标准 + List QBS = new ArrayList<>(Arrays.asList(QB.split(","))); + //处理数据 + List InCountry = new ArrayList<>(); + List OutCountry = new ArrayList<>(); + List QiBiao = new ArrayList<>(); + List error = new ArrayList<>(); + //中间的Map 判断标准号属于哪种类型 + Map middle = new HashMap<>(); + datas.forEach(items -> { + System.out.print("."); + //判断是否是正确的数据 + String[] as = items.split(","); + if( as.length < 8){ + ImportDto importDto = new ImportDto(); + importDto.setErrorStr(items); + error.add(importDto); + + } else if (!inDate(as[0], dates) ) { + ImportDto importDto = getImportDto(as); + error.add(importDto); + middle.put(as[7].trim(), "error-" + error.size()); + } else { + //数据二次拆解 针对标准进行拆解 + String[] step2 = as[0].trim().split(" "); +// 是否国内? 企标 ? 海外 + if (isCheck(GNS, step2[0].trim())) { + ImportDto importDto = getImportDto(as); + InCountry.add(importDto); + middle.put(as[7].trim(), "GNBZ-" + InCountry.size()); + } else if (isCheck(QBS, step2[0].trim())) { + ImportDto importDto = getImportDto(as); + QiBiao.add(importDto); + middle.put(as[7].trim(), "QYBZ-" + QiBiao.size()); + } else { + ImportDto importDto = getImportDto(as); + OutCountry.add(importDto); + middle.put(as[7].trim(), "HWBZ-" + OutCountry.size()); + } + } + }); + res.put("error", error); + res.put("GNBZ", InCountry); + res.put("QYBZ", QiBiao); + res.put("HWBZ", OutCountry); + + fujian.forEach(items2 -> { + String[] fj = items2.split(","); + if (fj.length > 2) { + if (null != middle.get(null != fj[1] ? fj[1].trim() : "")) { + //对应数据位置 + String[] location = middle.get(fj[1].trim()).split("-"); +// List importDtos = res.get(location[0]); + + res.get(location[0]).get(Integer.parseInt(location[1]) - 1).setPath(fj[3]); + } + } + }); + + + return res; + } + + private boolean inDate(String as, List dates) { + if (null != as && !"".equals(as)) { + for (String s : dates) { + if (s.equals(as.trim())) { + return true; + } else if (as.trim().contains(s)) { + return true; + } + } + } + return false; + } + + + private boolean isCheck(List QB, String item) { + for (String s : QB) { + if (s.equals(item)) { + return true; + } else if (item.contains(s) && item.startsWith(s)) { + return true; + } + } + return false; + } + + + /** + * 数据数组转换为实体类 + * @param as + * @return + */ + //赋值方法 + private ImportDto getImportDto(String[] as) { + ImportDto importDto = new ImportDto(); + String content = as[0]; + int length = as.length; + if (length>6){ + + for (String s : sortList) { + int sortLength = s.length();//标准类别长度 + if (s.equals(content.substring(0,sortLength ))){ + importDto.setStandSort(s); + importDto.setStandIdExcludeSort(content.substring(sortLength)); + } + + } + + + importDto.setStandId(null != as[0] ? as[0].trim() : ""); + importDto.setStandName(null != as[1] ? as[1].trim() : ""); + importDto.setStandNameEN(null != as[2] ? as[2].trim() : ""); + importDto.setPublishTime(null != as[3] ? as[3].trim() : ""); + importDto.setImplementedTime(null != as[4] ? as[4].trim() : ""); + importDto.setStandStatus(null != as[5] ? as[5].trim() : ""); + if (length==7){ + importDto.setReplaceId(""); + }else if (length==8){ + importDto.setReplaceId(null != as[6] ? as[6].trim() : ""); + } + + } + + return importDto; + } + + + private List isXls(MultipartFile multipartFile) { + List strings = new ArrayList<>(); + try { + InputStream inputStream = multipartFile.getInputStream(); + HSSFWorkbook workbook = new HSSFWorkbook(inputStream); +// 读取有多少页 + int sheetNum = workbook.getNumberOfSheets(); +// 遍历sheet页 + for (int i = 0; i < sheetNum; i++) { + HSSFSheet sheet = workbook.getSheetAt(i); +// 获取有多少行 + int lastNum = sheet.getLastRowNum(); + for (int j = 0; j <= lastNum; j++) { + HSSFRow row = sheet.getRow(j); + if (null != row) { + strings.add(row.getCell(0).getStringCellValue()); + } + } + } + } catch (Exception e) { + log.error(e.getMessage()); + } + return strings; + } + + private List isXlsx(MultipartFile multipartFile) { + List strings = new ArrayList<>(); + try { + InputStream inputStream = multipartFile.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); +// 读取有多少页 + int sheetNum = workbook.getNumberOfSheets(); +// 遍历sheet页 + for (int i = 0; i <= sheetNum; i++) { + XSSFSheet sheet = workbook.getSheetAt(i); +// 获取有多少行 0行开始 + int lastNum = sheet.getLastRowNum(); + for (int j = 0; j <= lastNum; j++) { + XSSFRow row = sheet.getRow(j); + if (null != row) { + System.out.println("正在读取第"+j+"行..."); + strings.add(row.getCell(0).getStringCellValue()); + } + } + } + } catch (Exception e) { + log.error(e.getMessage()); + } + return strings; + } + + + + + + + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private DicTypeEOServiceImpl dicTypeEOService; + + @Autowired + private ISarBussionessStandService sarBussionessStandService; + + + private List error = new ArrayList<>(); + + private List fileError = new ArrayList<>(); + + private HashSet sarSort = new HashSet<>(); + + + + @Override + public List storageExclData(Map> importListMap) { +//TODO 利用stream把list变为set +// List list = dicTypeEOService.list(); +// list.stream().flatMap(dicTypeEO -> { +// return dicTypeEO; +// }.co) + List isExist = dicTypeEOService.getTypeIdByDicIdAndTypeName("JKSADFH564S", null, null, null); + isExist.forEach(item->{ + sarSort.add(item.getDicTypeCode()); + });//标准类别集合 + + + error = importListMap.get("error"); + + /** + * 计数 + */ + AtomicInteger QYBZcount= new AtomicInteger(); + AtomicInteger QYBZcountUpdate= new AtomicInteger(); + AtomicInteger HWBZcount= new AtomicInteger(); + AtomicInteger HWBZcountUpdate= new AtomicInteger(); + AtomicInteger GNBZcount= new AtomicInteger(); + AtomicInteger GNBZcountUpdate= new AtomicInteger(); + + /** + * 初始化国内外标准属性字段 + */ + List listStandField = InitStandAttrUtil.queryFieldList; + Map standAttrMap = new TreeMap<>(); + listStandField.forEach(item ->{ + standAttrMap.put(item,""); + }); + + /** + * 海外标准 + */ + + + importListMap.get("HWBZ").forEach(item -> { + if (true ) { + String standID = UUIDUtils.randomUUID20(); + + //使用初始化的属性字段映射 获得key值,value为"" + Map mapField = standAttrMap; + SarStandardsInfo ForeignEO = parseImportDtoToStandardsInfo(item,mapField, standID); + + if (ForeignEO != null) { + ForeignEO.setValidFlag("0"); + ForeignEO.setStandType("FOREIGN"); + QueryWrapper standSaveWrapper = new QueryWrapper<>(); + standSaveWrapper + .eq("STAND_SORT", ForeignEO.getStandSort()) + .eq("STAND_NUMBER", ForeignEO.getStandNumber()) + .eq("STAND_YEAR", ForeignEO.getStandYear()); + + SarStandardsInfo one = sarStandardsInfoService.getOne(standSaveWrapper); + + + + if (one != null) { + ForeignEO.setId(one.getId()); + + try { + sarStandardsInfoService.updateSarStandardsInfo(ForeignEO); + HWBZcountUpdate.getAndIncrement(); + HWBZcount.getAndIncrement(); + System.out.println("海外标准执行更新===第: "+HWBZcount+"行"); + } catch (Exception e) { + item.setErrorStr("标准更新失败"); + error.add(item); + e.printStackTrace(); + } + + } else { + try { + sarStandardsInfoService.createSarStandardsInfo(ForeignEO); + HWBZcount.getAndIncrement(); + System.out.println("海外标准执行新增===第: "+HWBZcount+"行"); + } catch (Exception e) { + item.setErrorStr("标准新增失败"); + error.add(item); + e.printStackTrace(); + } + + } + + + } else { + item.setErrorStr("标准号无法解析"); + error.add(item); + } + } + + + + + + }); + + + /** + * 国内标准 + */ + + importListMap.get("GNBZ").forEach(item -> { + + + if (true) { + String standID = UUIDUtils.randomUUID20(); + //使用初始化的属性字段映射 获得key值,value为"" + Map mapStandField = standAttrMap; + SarStandardsInfo InlandEO = parseImportDtoToStandardsInfo(item, mapStandField, standID); + + if (InlandEO != null) { + + + InlandEO.setValidFlag("0"); + InlandEO.setStandType("INLAND"); + + + QueryWrapper standSaveWrapper = new QueryWrapper<>(); + standSaveWrapper + .eq("STAND_SORT", InlandEO.getStandSort()) + .eq("STAND_NUMBER", InlandEO.getStandNumber()) + .eq("STAND_YEAR", InlandEO.getStandYear()); + + + SarStandardsInfo one = sarStandardsInfoService.getOne(standSaveWrapper); + if (one != null) { + + + InlandEO.setId(one.getId()); + try { + sarStandardsInfoService.updateSarStandardsInfo(InlandEO); + } catch (Exception e) { + item.setErrorStr("国内标准更新失败"); + error.add(item); + e.printStackTrace(); + } + + + } else { + + + try { + sarStandardsInfoService.createSarStandardsInfo(InlandEO); + } catch (Exception e) { + item.setErrorStr("国内标准新增失败"); + error.add(item); + e.printStackTrace(); + } + } + } else { + item.setErrorStr("标准号无法解析"); + error.add(item); + importListMap.replace("error", error); + } + + } + + }); + + + /** + * 企业标准 + */ + + /** + * 初始化企业标准属性字段 + */ + List listStandBussField = InitStandAttrUtil.queryFieldListBuss; + Map bussAttrMap = new TreeMap<>(); + listStandBussField.forEach(item->{ + bussAttrMap.put(item,""); + }); + + importListMap.get("QYBZ").forEach(item -> { + + + if (true){ +// if (item.getStandId().contains("Q/FT T396—2021") ){ + + String standId = UUIDUtils.randomUUID20(); + SarBussionessStand BussEO = parseImportDtoToSarBussionessStand(item, bussAttrMap,standId); + + if (BussEO != null) { + + try { + QueryWrapper saveWrapper = new QueryWrapper<>(); + saveWrapper.eq("STAND_CODE", item.getStandId()); + SarBussionessStand one = sarBussionessStandService.getOne(saveWrapper); + if (one != null) { + BussEO.setId(one.getId()); + sarBussionessStandService.updateSarBussionessStand(BussEO); + QYBZcountUpdate.getAndIncrement(); + QYBZcount.getAndIncrement(); + System.out.println("企业标准执行更新====第: "+QYBZcount+"行"); + + } else { + sarBussionessStandService.createSarBussionessStand(BussEO); + QYBZcount.getAndIncrement(); + System.out.println("企业标准执行新增第: "+QYBZcount+"行"); + } + + + } catch (Exception e) { + item.setErrorStr("数据格式错误"); + error.add(item); + + e.printStackTrace(); + + } + + } + } + + + }); + + + error.addAll(fileError); + System.out.println("执行结束"); + System.out.println("执行国内标准"+GNBZcount+"条"); + System.out.println("国内标准执行更新"+GNBZcountUpdate+"条"); + System.out.println("执行国外标准"+HWBZcount+"条"); + System.out.println("海外标准执行更新"+HWBZcountUpdate+"条"); + System.out.println("执行企业标准"+QYBZcount+"条"); + System.out.println("企业标准执行更新"+QYBZcountUpdate+"条"); + + + return error; + } + + private List sortList=new LinkedList<>(); + + @Override + public Map> analysisExcl(MultipartFile exclFile,MultipartFile standSort) { + //TODO analy + + if (exclFile == null || exclFile.getSize() == 0) { + log.error("文件上传错误,重新上传"); + } + String filename = exclFile.getOriginalFilename(); + String standSortName=standSort.getOriginalFilename(); + + List datas = new ArrayList<>(); + + + if (filename.endsWith(".xls")) { + datas = isXls(exclFile); + } else { + datas = isXlsx(exclFile); + } + + if (standSortName.endsWith(".xls")){ + sortList = isXls(standSort); + }else { + sortList = isXlsx(standSort); + } + + HashMap> result = new HashMap<>(); + LinkedList exportList = new LinkedList<>(); + HashSet distinct = new HashSet<>(); + datas.forEach(data->{ + System.out.print("#"); + String[] row = data.split("\\,"); + if (row.length>7){ + + if ((!"".equals(row[0].trim()) || !"".equals(row[1].trim()))&&distinct.add(row[0].trim()+row[1].trim())){ + ImportDto importDto = getImportDto(row); + + if(importDto.getStandId()!=null&&importDto.getStandName()!=null){ + exportList.add(importDto); + + } + } + + } + + }); + result.put("标准数据all_new",exportList); + + + + return result; + } + + @Override + public String isExist(MultipartFile exclFile) { + ExclExport exclExport = new ExclExport(); + QueryWrapper standWrapper = new QueryWrapper<>(); + standWrapper.select("STAND_NUMBER,STAND_SORT,STAND_YEAR"); + List> maps = sarStandardsInfoService.listMaps(standWrapper); + + QueryWrapper bussionessWrapper = new QueryWrapper<>(); + bussionessWrapper.select("STAND_CODE AS STAND_NUMBER,STAND_SORT,STAND_YEAR"); + List> maps1 = sarBussionessStandService.listMaps(bussionessWrapper); + + HashSet> nameSet = new HashSet<>(); + maps.addAll(maps1); + maps.forEach(item->{ + List strings = new LinkedList<>(); + strings.add(item.get("STAND_NUMBER").toString().trim()); + strings.add(item.get("STAND_SORT").toString().trim()); + strings.add(item.get("STAND_YEAR").toString().trim()); + + nameSet.add(strings); + }); + + try { + exclExport.contrast(exclFile,nameSet); + return "success"; + }catch (Exception e){ + e.printStackTrace(); + return "failed"; + } + } + + + /** + * 整理为标准信息实体 + * @param importDto + * @param fieldMap 属性字段 + * @param standId + * @return + */ + public SarStandardsInfo parseImportDtoToStandardsInfo(ImportDto importDto,Map fieldMap, String standId) { + HashMap analysis = analysisStandId(importDto); + if (analysis == null) { + return null; + } + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); + sarStandardsInfoEO.setId(standId); + + + sarStandardsInfoEO.setStandSort(analysis.get("sort")); + sarStandardsInfoEO.setStandNumber(analysis.get("number")); + sarStandardsInfoEO.setStandYear(analysis.get("year")); + + sarStandardsInfoEO.setStandName(importDto.getStandName()); + sarStandardsInfoEO.setStandEnName(importDto.getStandNameEN()); + + /** + * 截取发布日期 年月日 + */ + String issueDate = importDto.getPublishTime().substring(0, 19); + sarStandardsInfoEO.setIssueTime(issueDate);//标准发布日期 + + String standStatus = importDto.getStandStatus(); + if ("有效".equals(standStatus)) { + sarStandardsInfoEO.setTextStatus("vsaga7nwub");//现行有效 + } + + /** + * 标准属性字段 + */ + + fieldMap.put("DTBJH", importDto.getReplaceId()); + fieldMap.put("SSRQ", importDto.getImplementedTime().substring(0, 19)); + + + /** + * 文件 + */ + if (importDto.getPath() != null) { + String path[] = importDto.getPath().split("/"); + String realPath = ""; + for (int i = 3; i < path.length; i++) { + realPath = realPath + "/" + path[i]; + + } + + + try { +// File file = new File("C:\\Users\\22501\\Desktop\\foton\\" + realPath); +// File file = new File(importPath + realPath); + File file = new File("/data/from12/Attach_swf_bak" + realPath); + if (file.exists()) { + AttFileVo fileInfo = attFileEOService.saveFileInfo(file); + + if (importDto.getImplementedTime() != null) { + fieldMap.put("FBGBJBD", fileInfo.getAttId()); + } else { + fieldMap.put("GLWJ", fileInfo.getAttId()); + } + + } else { + importDto.setErrorStr("文件不存在"); + fileError.add(importDto); + } + + } catch (Exception e) { + importDto.setErrorStr("文件打开失败"); + fileError.add(importDto); + e.printStackTrace(); + } + + } +// attrInfoMap.put("") + Gson gson = new Gson(); + String attrInfoJson = gson.toJson(fieldMap); + sarStandardsInfoEO.setSarStandAttrEOStr(attrInfoJson);//新增修改时属性表信息 + + + return sarStandardsInfoEO; + + } + + + /** + * 整理为企业标准实体 + * @param importDto + * @param standId + * @return + */ + public SarBussionessStand parseImportDtoToSarBussionessStand(ImportDto importDto,Map fieldMap, String standId) { + + + HashMap analysis = analysisStandId(importDto); + if (analysis == null) { + return null; + } else { + SarBussionessStand sarBussionessStand = new SarBussionessStand(); + sarBussionessStand.setId(standId); + sarBussionessStand.setStandSort(analysis.get("sort")); + sarBussionessStand.setStandYear(analysis.get("year")); + sarBussionessStand.setStandCode(importDto.getStandId()); + sarBussionessStand.setStandName(importDto.getStandName()); + sarBussionessStand.setStandEnName(importDto.getStandNameEN()); + sarBussionessStand.setIssueTime(importDto.getPublishTime()); + sarBussionessStand.setPutTime(importDto.getImplementedTime()); + sarBussionessStand.setReplacedStandNum(importDto.getReplaceId()); + sarBussionessStand.setValidFlag(0); + if ("有效".equals(importDto.getStandStatus())) { + sarBussionessStand.setTextStatusBuss("vsaga7nwub"); + } + + /** + * 企业标准属性字段 + */ + + + if (importDto.getPath() != null) { + String path[] = importDto.getPath().split("/"); + String realPath = ""; + for (int i = 3; i < path.length; i++) { + realPath = realPath + "/" + path[i]; + + } + + + try { +// File file = new File("C:\\Users\\22501\\Desktop\\foton\\" + realPath); +// File file = new File(importPath + realPath); + File file = new File("/data/from12/Attach_swf_bak" + realPath); + + if (file.exists()) { + AttFileVo fileInfo = attFileEOService.saveFileInfo(file); + + + if (importDto.getImplementedTime()!=null && importDto.getImplementedTime()!=""){ + fieldMap.put("FBGBUSS",fileInfo.getAttId()); + + }else { + fieldMap.put("GLWJBUSS",fileInfo.getAttId()); + } + + + + } else { + importDto.setErrorStr("文件不存在"); + fileError.add(importDto); + } + + } catch (Exception e) { + importDto.setErrorStr("路径错误!"); + fileError.add(importDto); + e.printStackTrace(); + } + + + } + + String attrInfoJson = new Gson().toJson(fieldMap); + sarBussionessStand.setSarStandAttrEOStr(attrInfoJson);//新增修改时属性表信息 + return sarBussionessStand; + } + + + } + + + /** + * 解析标准号,标准类别不存在则新增 + * @param importDto + * @return + */ + public HashMap analysisStandId(ImportDto importDto) { + HashMap result = new HashMap<>(); + String standId = importDto.getStandId(); + + if (standId == null) { + importDto.setErrorStr("标准号为空"); + error.add(importDto); + return null; + } else { +// String standId = importDto.getStandId(); + //格式 非空格字符+空格+非空格字符+‘-’或‘—’或空格+年份 如Q/FT F003—2001 + Pattern pattern = Pattern.compile("^\\S*\\s\\S*[\\u2014\\u002d\\s]\\d{4}$"); + if (!pattern.matcher(standId).matches()) { + importDto.setErrorStr("标准号无法解析"); + error.add(importDto); + return null; + } + + String sort = ""; + String number = ""; + String year = ""; + String[] split = standId.split("[\\u2014\\u002d\\s]");//以空格或'-'或'—'分割 + + +// 多种格式(╯‵□′)╯︵┻━┻ Q-FL T015-2021 Q/ FL T015-2021 Q/FL T015-2021 + int length = split.length; + number = split[length - 2]; + year = split[length - 1]; + for (int i = 0; i < length - 2; i++) { + sort += split[i]; + } + + result.put("sort", sort); + result.put("number", number); + result.put("year", year); + /** + * 标准类别不存在,新增标准类别 + */ +// List isExist = dicTypeEOService.getTypeIdByDicIdAndTypeName("JKSADFH564S", null, sort, null); +// if (!sarSort.contains(sort)){ +// +// DicTypeEO dicTypeVO = new DicTypeEO(); +// dicTypeVO.setId(null); +// dicTypeVO.setDicId("JKSADFH564S"); +// dicTypeVO.setDicTypeCode(sort); +// dicTypeVO.setDicTypeName(sort); +// dicTypeVO.setShowIndex(1); +// Integer dicTypeEO = dicTypeEOService.saveDictype(dicTypeVO); +// if (dicTypeEO>0){ +// sarSort.add(sort); +// importDto.setErrorStr("标准类别不存在,已新增"); +// }else { +// importDto.setErrorStr("标准类别不存在,新增失败"); +// } +// error.add(importDto); +// } + + + + + return result; + } + + + } + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportStandExcelServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportStandExcelServiceImpl.java new file mode 100644 index 00000000..ece408e3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/ImportExcelDatas/service/impl/ImportStandExcelServiceImpl.java @@ -0,0 +1,112 @@ +package com.adc.da.slrs.ImportExcelDatas.service.impl; + +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.slrs.ImportExcelDatas.POIUtil.POIUtil; +import com.adc.da.slrs.ImportExcelDatas.comment.PathMatcher; +import com.adc.da.slrs.ImportExcelDatas.comment.Standard; +import com.adc.da.slrs.ImportExcelDatas.entity.ImportDto; +import com.adc.da.slrs.ImportExcelDatas.service.IImportStandExcelService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.sys.service.impl.DicTypeEOServiceImpl; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.gson.Gson; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +@Service +public class ImportStandExcelServiceImpl implements IImportStandExcelService { + + + private static final Logger logger = LoggerFactory.getLogger(PathMatcher.class); + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private Standard standard; + + private List error = new ArrayList<>(); + + private List fileError = new ArrayList<>(); + + + @Async + @Override + public String importStandExcel(MultipartFile file,String standType) throws IOException { + + AtomicInteger countUpdate= new AtomicInteger();//更新 数量 + AtomicInteger countInsert= new AtomicInteger();//新增 数量 + + InputStream inputStream = file.getInputStream(); + XSSFWorkbook workbook = new XSSFWorkbook(inputStream); + XSSFSheet sheet = workbook.getSheetAt(0); + + standard.setStandType(standType); + + int lastRowNum = sheet.getLastRowNum(); + + for (int i = 1; i < lastRowNum; i++) { + XSSFRow row = sheet.getRow(i); + SarStandardsInfo standardsInfo = standard.getStandardsInfo(row); + + QueryWrapper standSaveWrapper = new QueryWrapper<>(); + standSaveWrapper + .eq("STAND_SORT", standardsInfo.getStandSort()) + .eq("STAND_NUMBER", standardsInfo.getStandNumber()) + .eq("STAND_YEAR", standardsInfo.getStandYear()); + + + SarStandardsInfo one = sarStandardsInfoService.getOne(standSaveWrapper); + if (one != null) { + + + standardsInfo.setId(one.getId()); + try { + sarStandardsInfoService.updateSarStandardsInfo(standardsInfo); + countUpdate.getAndIncrement(); + logger.info("执行更新"+countUpdate+"条数据"); + + } catch (Exception e) { + e.printStackTrace(); + } + + + } else { + try { + sarStandardsInfoService.createSarStandardsInfo(standardsInfo); + countInsert.getAndIncrement(); + logger.info("执行新增"+countInsert+"条数据"); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + return "success"; + + } + + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/controller/NewsFeedController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/controller/NewsFeedController.java new file mode 100644 index 00000000..5141223e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/controller/NewsFeedController.java @@ -0,0 +1,71 @@ +package com.adc.da.slrs.NewsFeed.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.slrs.NewsFeed.entity.NewsFeed; +import com.adc.da.slrs.NewsFeed.page.NewsFeedPage; +import com.adc.da.slrs.NewsFeed.service.Impl.NewsFeedServiceImpl; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgDynamicInfoEO; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/23 0023 14:59 + * @Version 1.0 + */ +@RestController +@RequestMapping("/${restPath}/lawss/NewsFeed") +@Api(description = "|NewsFeed|") +public class NewsFeedController extends BaseController { + + @Autowired + private NewsFeedServiceImpl newsFeedService; + + @GetMapping("/getNewsFeed") + public ResponseMessage> NewFeedPage(NewsFeedPage page){ + IPage iPage = new Page<>(); + iPage.setCurrent(page.getPage()); + iPage.setSize(page.getPageSize()); + List list = new ArrayList<>(); + if("GNWBZFG".equals(page.getMessageType())){ + list.add("hc99551723c"); + }else if("ZYBZFG".equals(page.getMessageType())){ + list.add("hya6gay4vx"); + list.add("8rjsx83ows"); + list.add("ncb6osftj8"); + list.add("3dx7oy5jff"); + }else if("QYBZFB".equals(page.getMessageType())){ + list.add("6jnqba2mby"); + } + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq(StringUtils.isNotEmpty(page.getStandardId()),"STANDARD_ID",page.getStandardId()); + queryWrapper.eq(StringUtils.isNotEmpty(page.getStandardName()),"STANDARD_NAME",page.getStandardName()); + queryWrapper.eq("MESSAGE_TYPE",page.getMessageType()); + if(StringUtils.isNotBlank(page.getMessageType())){ + queryWrapper.in("TEXT_STATE",list); + } + queryWrapper.orderByDesc("RENEW_TIME"); + IPage newsFeedList = newsFeedService.page(iPage,queryWrapper); + return Result.success(newsFeedList); + } + + @PostMapping("/insertNewsFeed") + public void insertNewsFeed(@RequestBody NewsFeed newsFeed){ + newsFeedService.insertNewsFeed(newsFeed); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/dao/NewsFeedDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/dao/NewsFeedDao.java new file mode 100644 index 00000000..f83f18d4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/dao/NewsFeedDao.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.NewsFeed.dao; + +import com.adc.da.slrs.NewsFeed.entity.NewsFeed; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + * @Author: qk + * @Date: 2022/5/23 0023 14:59 + * @Version 1.0 + */ +@Repository +public interface NewsFeedDao extends BaseMapper { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/entity/NewsFeed.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/entity/NewsFeed.java new file mode 100644 index 00000000..20badbaf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/entity/NewsFeed.java @@ -0,0 +1,65 @@ +package com.adc.da.slrs.NewsFeed.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 java.util.Date; + +/** + * @Author: qk + * @Date: 2022/5/23 0023 14:47 + * @Version 1.0 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="NewsFeed对象", description="") +public class NewsFeed extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "主键") + private String id; + + @TableField("RESOURCE_TYPE") + @ApiModelProperty(value = "资源类型") + private String resourceType; + + @TableField("MESSAGE_TYPE") + @ApiModelProperty(value = "消息类型") + private String messageType; + + @TableField("STANDARD_ID") + @ApiModelProperty(value = "标准ID") + private String standardId; + + @TableField("STANDARD") + @ApiModelProperty(value = "标准号") + private String standard; + + @TableField("STANDARD_NAME") + @ApiModelProperty(value = "标准名称") + private String standardName; + + @TableField("RELEASE_DATE") + @ApiModelProperty(value = "发布日期") + private String releaseDate; + + @TableField("TEXT_STATE") + @ApiModelProperty(value = "文本状态") + private String textState; + + @TableField("RENEW_TIME") + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date renewTime; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/page/NewsFeedPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/page/NewsFeedPage.java new file mode 100644 index 00000000..05c5bb49 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/page/NewsFeedPage.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.NewsFeed.page; + +import com.adc.da.sys.common.BasePage; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author: qk + * @Date: 2022/5/23 0023 15:36 + * @Version 1.0 + */ +@Data +public class NewsFeedPage { + + private String id; + private String resourceType; + private String messageType; + private String standardId; + private String standard; + private String standardName; + private String releaseDate; + private String textState; + private Date renewTime; + private Long page; + private Long pageSize; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/INewsFeedService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/INewsFeedService.java new file mode 100644 index 00000000..13a878c9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/INewsFeedService.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.NewsFeed.service; + +import com.adc.da.slrs.NewsFeed.entity.NewsFeed; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.stereotype.Service; + +/** + * @Author: qk + * @Date: 2022/5/23 0023 15:01 + * @Version 1.0 + */ +public interface INewsFeedService extends IService { + int insertNewsFeed(NewsFeed newsFeed); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/Impl/NewsFeedServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/Impl/NewsFeedServiceImpl.java new file mode 100644 index 00000000..d3a28b72 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/NewsFeed/service/Impl/NewsFeedServiceImpl.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.NewsFeed.service.Impl; + +import com.adc.da.common.NewsFeedEnum; +import com.adc.da.slrs.NewsFeed.dao.NewsFeedDao; +import com.adc.da.slrs.NewsFeed.entity.NewsFeed; +import com.adc.da.slrs.NewsFeed.service.INewsFeedService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: qk + * @Date: 2022/5/23 0023 15:02 + * @Version 1.0 + */ +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class NewsFeedServiceImpl extends ServiceImpl implements INewsFeedService { + + + @Override + public int insertNewsFeed(NewsFeed newsFeed) { + switch (newsFeed.getMessageType()){ + case "0": + newsFeed.setMessageType( NewsFeedEnum.GNWBZFG.getValue()); + break; + case "1": + newsFeed.setMessageType( NewsFeedEnum.ZYBZFG.getValue()); + break; + case "2": + newsFeed.setMessageType( NewsFeedEnum.QYBZFB.getValue()); + break; + } + this.save(newsFeed); + return 1; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/controller/SarBussStandItemValController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/controller/SarBussStandItemValController.java new file mode 100644 index 00000000..edd06ac4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/controller/SarBussStandItemValController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.SarBussStandItemVal.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.SarBussStandItemVal.entity.SarBussStandItemVal; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 企业标准条目关联表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-25 +*/ +@RestController +@Api(description = "|SarBussStandItemVal|") +@RequestMapping("/SarBussStandItemVal/sar-buss-stand-item-val") +public class SarBussStandItemValController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/dao/SarBussStandItemValDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/dao/SarBussStandItemValDao.java new file mode 100644 index 00000000..e74166b3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/dao/SarBussStandItemValDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.SarBussStandItemVal.dao; + +import com.adc.da.slrs.SarBussStandItemVal.entity.SarBussStandItemVal; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * 企业标准条目关联表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +public interface SarBussStandItemValDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/entity/SarBussStandItemVal.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/entity/SarBussStandItemVal.java new file mode 100644 index 00000000..99181ef2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/entity/SarBussStandItemVal.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.SarBussStandItemVal.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 企业标准条目关联表 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandItemVal对象", description="企业标准条目关联表") +public class SarBussStandItemVal extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "企业标准条目ID") + @TableField("ITEM_ID") + private String itemId; + + @ApiModelProperty(value = "参数类型") + @TableField("PROPERTY_TYPE") + private String propertyType; + + @ApiModelProperty(value = "参数值") + @TableField("PROPERTY_VALUE") + private String propertyValue; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private BigDecimal validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private LocalDateTime creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private LocalDateTime modifyTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/service/ISarBussStandItemValService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/service/ISarBussStandItemValService.java new file mode 100644 index 00000000..4e8b37e5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/service/ISarBussStandItemValService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.SarBussStandItemVal.service; + +import com.adc.da.slrs.SarBussStandItemVal.entity.SarBussStandItemVal; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 企业标准条目关联表 服务类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +public interface ISarBussStandItemValService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/service/impl/SarBussStandItemValServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/service/impl/SarBussStandItemValServiceImpl.java new file mode 100644 index 00000000..cd822851 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarBussStandItemVal/service/impl/SarBussStandItemValServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.SarBussStandItemVal.service.impl; + +import com.adc.da.slrs.SarBussStandItemVal.entity.SarBussStandItemVal; +import com.adc.da.slrs.SarBussStandItemVal.dao.SarBussStandItemValDao; +import com.adc.da.slrs.SarBussStandItemVal.service.ISarBussStandItemValService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 企业标准条目关联表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Service +public class SarBussStandItemValServiceImpl extends ServiceImpl implements ISarBussStandItemValService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/controller/SarCompResAssessController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/controller/SarCompResAssessController.java new file mode 100644 index 00000000..22617d96 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/controller/SarCompResAssessController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.SarCompResAssess.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.SarCompResAssess.entity.SarCompResAssess; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 标准法规/政策技术评估汇总记录表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-21 +*/ +@RestController +@Api(tags = "|SarCompResAssess|") +@RequestMapping("/SarCompResAssess/sar-comp-res-assess") +public class SarCompResAssessController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/dao/SarCompResAssessDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/dao/SarCompResAssessDao.java new file mode 100644 index 00000000..79b44a30 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/dao/SarCompResAssessDao.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.SarCompResAssess.dao; + +import com.adc.da.slrs.SarCompResAssess.entity.SarCompResAssess; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 标准法规/政策技术评估汇总记录表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +public interface SarCompResAssessDao extends BaseMapper { + + SarCompResAssess getResAssessDataByResId(String resId); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/entity/SarCompResAssess.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/entity/SarCompResAssess.java new file mode 100644 index 00000000..1ff7b0f6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/entity/SarCompResAssess.java @@ -0,0 +1,76 @@ +package com.adc.da.slrs.SarCompResAssess.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * 标准法规/政策技术评估汇总记录表 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarCompResAssess对象", description="标准法规/政策技术评估汇总记录表") +public class SarCompResAssess extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "资源类型") + @TableField("RES_TYPE") + private String resType; + + @ApiModelProperty(value = "资源ID") + @TableField("RES_ID") + private String resId; + + @ApiModelProperty(value = "评估结果") + @TableField("ASSESS_RESULT") + private Integer assessResult; + + @ApiModelProperty(value = "评估分级颜色") + @TableField("ASSESS_COLOR") + private String assessColor; + + @ApiModelProperty(value = "评估完成时间") + @TableField("ASSESS_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date assessTime; + + @ApiModelProperty(value = "流程编号") + @TableField("PROCESS_NUM") + private String processNum; + + @ApiModelProperty(value = "流程状态") + @TableField("PROCESS_STATE") + private String processState; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATED_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createdTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/service/ISarCompResAssessService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/service/ISarCompResAssessService.java new file mode 100644 index 00000000..9bb8688e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/service/ISarCompResAssessService.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.SarCompResAssess.service; + +import com.adc.da.slrs.SarCompResAssess.entity.SarCompResAssess; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 标准法规/政策技术评估汇总记录表 服务类 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +public interface ISarCompResAssessService extends IService { + + SarCompResAssess getAssessInfoByResId(String resId); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/service/impl/SarCompResAssessServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/service/impl/SarCompResAssessServiceImpl.java new file mode 100644 index 00000000..51e2a0e2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompResAssess/service/impl/SarCompResAssessServiceImpl.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.SarCompResAssess.service.impl; + +import com.adc.da.slrs.SarCompResAssess.entity.SarCompResAssess; +import com.adc.da.slrs.SarCompResAssess.dao.SarCompResAssessDao; +import com.adc.da.slrs.SarCompResAssess.service.ISarCompResAssessService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

    + * 标准法规/政策技术评估汇总记录表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Service +public class SarCompResAssessServiceImpl extends ServiceImpl implements ISarCompResAssessService { + + @Autowired + private SarCompResAssessDao dao; + + public SarCompResAssessDao getDao() { + return dao; + } + + /** + * 根据资源ID获取评估汇总结果 + * @return + */ + public SarCompResAssess getAssessInfoByResId(String resId){ + return dao.getResAssessDataByResId(resId); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/controller/SarCompStatusInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/controller/SarCompStatusInfoController.java new file mode 100644 index 00000000..fc3c4348 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/controller/SarCompStatusInfoController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.SarCompStatusInfo.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-21 +*/ +@RestController +@Api(tags = "|SarCompStatusInfo|") +@RequestMapping("/SarCompStatusInfo/sar-comp-status-info") +public class SarCompStatusInfoController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/dao/SarCompStatusInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/dao/SarCompStatusInfoDao.java new file mode 100644 index 00000000..c6b254db --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/dao/SarCompStatusInfoDao.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.SarCompStatusInfo.dao; + +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Repository +public interface SarCompStatusInfoDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/entity/SarCompStatusInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/entity/SarCompStatusInfo.java new file mode 100644 index 00000000..a3329181 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/entity/SarCompStatusInfo.java @@ -0,0 +1,135 @@ +package com.adc.da.slrs.SarCompStatusInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarCompStatusInfo对象", description="") +public class SarCompStatusInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准/政策类别") + @TableField("SAR_TYPE") + private String sarType; + + @ApiModelProperty(value = "标准/政策ID") + @TableField("SAR_ID") + private String sarId; + + @ApiModelProperty(value = "标准/政策条款ID") + @TableField("SAR_ITEM_ID") + private String sarItemId; + + @ApiModelProperty(value = "标准/政策符合性状态") + @TableField("SAR_STATE") + private String sarState; + + @ApiModelProperty(value = "标准/政策条款符合性状态") + @TableField("SAR_ITEM_STATE") + private String sarItemState; + + @ApiModelProperty(value = "流程编号") + @TableField("PRC_NUM") + private String prcNum; + + @ApiModelProperty(value = "合规性分级颜色") + @TableField("COLOR") + private String color; + + @ApiModelProperty(value = "流程状态") + @TableField("PRC_STATE") + private String prcState; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + + @ApiModelProperty(value = "不符合内容") + @TableField("NON_CONFOMITY") + private String nonConfomity; + + @ApiModelProperty(value = "我司现状") + @TableField("CURRENT") + private String current; + + @ApiModelProperty(value = "更改方案") + @TableField("CHANGE_SCHEME") + private String changeScheme; + + @ApiModelProperty(value = "预估更改周期") + @TableField("ESTIMATED_CHANGE_CYCLE") + private String estimatedChangeCycle; + + @ApiModelProperty(value = "预估成本") + @TableField("ESTIMATED_COST") + private String estimatedCost; + + @ApiModelProperty(value = "风险点") + @TableField("RISK_POINT") + private String riskPoint; + + @ApiModelProperty(value = "验证方案") + @TableField("VERIFICATION_SCHEME") + private String verificationScheme; + + @ApiModelProperty(value = "符合理由") + @TableField("JUSTIFIED") + private String justified; + + @ApiModelProperty(value = "评估人员") + @TableField("COMP_PERSON") + private String compPerson; + + @ApiModelProperty(value = "评估时间") + @TableField("COMP_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date compTime; + + + @TableField( exist = false) + private String compPersonName; + @TableField( exist = false) + private String state; + @TableField( exist = false) + private String sarNumber; + @TableField( exist = false) + private String sarItemNumber; + @TableField( exist = false) + private String standId; + @TableField( exist = false) + private String standType; + @TableField( exist = false) + private String standCode; + @TableField( exist = false) + private String standName; + @TableField( exist = false) + private String createType; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/service/ISarCompStatusInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/service/ISarCompStatusInfoService.java new file mode 100644 index 00000000..bf9b0220 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/service/ISarCompStatusInfoService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.SarCompStatusInfo.service; + +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +public interface ISarCompStatusInfoService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/service/impl/SarCompStatusInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/service/impl/SarCompStatusInfoServiceImpl.java new file mode 100644 index 00000000..7d5ce531 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarCompStatusInfo/service/impl/SarCompStatusInfoServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.SarCompStatusInfo.service.impl; + +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import com.adc.da.slrs.SarCompStatusInfo.dao.SarCompStatusInfoDao; +import com.adc.da.slrs.SarCompStatusInfo.service.ISarCompStatusInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Service +public class SarCompStatusInfoServiceImpl extends ServiceImpl implements ISarCompStatusInfoService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/controller/SarFileSplitItemsController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/controller/SarFileSplitItemsController.java new file mode 100644 index 00000000..c89233f8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/controller/SarFileSplitItemsController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.SarFileSplitItems.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.SarFileSplitItems.entity.SarFileSplitItems; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-21 +*/ +@RestController +@Api(tags = "|SarFileSplitItems|") +@RequestMapping("/SarFileSplitItems/sar-file-split-items") +public class SarFileSplitItemsController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/dao/SarFileSplitItemsDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/dao/SarFileSplitItemsDao.java new file mode 100644 index 00000000..1660becd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/dao/SarFileSplitItemsDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.SarFileSplitItems.dao; + +import com.adc.da.slrs.SarFileSplitItems.entity.SarFileSplitItems; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +public interface SarFileSplitItemsDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/entity/SarFileSplitItems.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/entity/SarFileSplitItems.java new file mode 100644 index 00000000..c73f8662 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/entity/SarFileSplitItems.java @@ -0,0 +1,129 @@ +package com.adc.da.slrs.SarFileSplitItems.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarFileSplitItems对象", description="") +public class SarFileSplitItems extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private String id; + + @ApiModelProperty(value = "拆分信息记录ID") + @TableField("INFO_ID") + private String infoId; + + @ApiModelProperty(value = "条款号") + @TableField("ITEMS_NUM") + private String itemsNum; + + @ApiModelProperty(value = "条款名称") + @TableField("ITEMS_NAME") + private String itemsName; + + @ApiModelProperty(value = "条款要求") + @TableField("ITERMS_CONDITIONS") + private String itermsConditions; + + @ApiModelProperty(value = "新定车型实施日期") + @TableField("NEWCAR_PUT_TIME") + private Date newcarPutTime; + + @ApiModelProperty(value = "在产车型实施日期") + @TableField("PRODUCT_PUT_TIME") + private Date productPutTime; + + @ApiModelProperty(value = "拆分目录ID") + @TableField("MENU_ID") + private String menuId; + + @ApiModelProperty(value = "SVPPS") + @TableField("SVPPS") + private String svpps; + + @ApiModelProperty(value = "适用车型") + @TableField("APPLY_ARCTIC") + private String applyArctic; + + @ApiModelProperty(value = "引用标准") + @TableField("REFERENCE_STAND") + private String referenceStand; + + @ApiModelProperty(value = "特殊参数要求") + @TableField("SPECIAL_REQUEST") + private String specialRequest; + + @ApiModelProperty(value = "关联文件") + @TableField("RELEVANCE_FILE") + private String relevanceFile; + + @ApiModelProperty(value = "备注") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private Date modifyTime; + + @TableField("MODIFY_USER") + private String modifyUser; + + @ApiModelProperty(value = "FO") + @TableField("FO") + private String fo; + + @ApiModelProperty(value = "责任工程师") + @TableField("DUTY_ENGINEER") + private String dutyEngineer; + + @ApiModelProperty(value = "要求类型") + @TableField("CLAIM_TYPE") + private String claimType; + + @ApiModelProperty(value = "企标覆盖关系") + @TableField("BUS_STAND_COVER") + private String busStandCover; + + @ApiModelProperty(value = "文件类型") + @TableField("FILE_TYPE") + private String fileType; + + @ApiModelProperty(value = "责任部门") + @TableField("RESPONSIBLE_UNIT") + private String responsibleUnit; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/service/ISarFileSplitItemsService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/service/ISarFileSplitItemsService.java new file mode 100644 index 00000000..450abdb6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/service/ISarFileSplitItemsService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.SarFileSplitItems.service; + +import com.adc.da.slrs.SarFileSplitItems.entity.SarFileSplitItems; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +public interface ISarFileSplitItemsService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/service/impl/SarFileSplitItemsServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/service/impl/SarFileSplitItemsServiceImpl.java new file mode 100644 index 00000000..f91d4759 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarFileSplitItems/service/impl/SarFileSplitItemsServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.SarFileSplitItems.service.impl; + +import com.adc.da.slrs.SarFileSplitItems.entity.SarFileSplitItems; +import com.adc.da.slrs.SarFileSplitItems.dao.SarFileSplitItemsDao; +import com.adc.da.slrs.SarFileSplitItems.service.ISarFileSplitItemsService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Service +public class SarFileSplitItemsServiceImpl extends ServiceImpl implements ISarFileSplitItemsService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/controller/SarStandItemValController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/controller/SarStandItemValController.java new file mode 100644 index 00000000..7ab7cc86 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/controller/SarStandItemValController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.SarStandItemVal.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.slrs.SarStandItemVal.entity.SarStandItemVal; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-21 +*/ +@RestController +@Api(description = "|SarStandItemVal|") +@RequestMapping("/SarStandItemVal/sar-stand-item-val") +public class SarStandItemValController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/dao/SarStandItemValDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/dao/SarStandItemValDao.java new file mode 100644 index 00000000..964ae0c5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/dao/SarStandItemValDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.SarStandItemVal.dao; + +import com.adc.da.slrs.SarStandItemVal.entity.SarStandItemVal; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +public interface SarStandItemValDao extends BaseMapper { + + int deleteSarStandItemValByItemid(String itemid); + + int updateSarStandItemValByItemid(String itemid); + + int deleteByItemsIds(@Param("idList") List idList); + + int insertForeach(List list); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/entity/SarStandItemVal.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/entity/SarStandItemVal.java new file mode 100644 index 00000000..dfe65aaa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/entity/SarStandItemVal.java @@ -0,0 +1,62 @@ +package com.adc.da.slrs.SarStandItemVal.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +import java.util.Date; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandItemVal对象", description="") +public class SarStandItemVal extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准ID") + @TableField("ITEM_ID") + private String itemId; + + @ApiModelProperty(value = "参数类型") + @TableField("PROPERTY_TYPE") + private String propertyType; + + @ApiModelProperty(value = "参数内容") + @TableField("PROPERTY_VAL") + private String propertyVal; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/service/ISarStandItemValService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/service/ISarStandItemValService.java new file mode 100644 index 00000000..388efdaa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/service/ISarStandItemValService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.SarStandItemVal.service; + +import com.adc.da.slrs.SarStandItemVal.entity.SarStandItemVal; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +public interface ISarStandItemValService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/service/impl/SarStandItemValServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/service/impl/SarStandItemValServiceImpl.java new file mode 100644 index 00000000..0c4eeb3f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/SarStandItemVal/service/impl/SarStandItemValServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.SarStandItemVal.service.impl; + +import com.adc.da.slrs.SarStandItemVal.dao.SarStandItemValDao; +import com.adc.da.slrs.SarStandItemVal.entity.SarStandItemVal; +import com.adc.da.slrs.SarStandItemVal.service.ISarStandItemValService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-21 + */ +@Service +public class SarStandItemValServiceImpl extends ServiceImpl implements ISarStandItemValService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/AskQuestionsController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/AskQuestionsController.java new file mode 100644 index 00000000..6ef0837a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/AskQuestionsController.java @@ -0,0 +1,256 @@ +package com.adc.da.slrs.StandardQA.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.slrs.StandardQA.dao.AskQuestionsDao; +import com.adc.da.slrs.StandardQA.entity.*; +import com.adc.da.slrs.StandardQA.service.Impl.AskQuestionsServiceImpl; +import com.adc.da.slrs.StandardQA.service.Impl.AskUserServiceImpl; +import com.adc.da.slrs.StandardQA.service.Impl.SubscriptionServiceImpl; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import oracle.ucp.proxy.annotation.Post; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 9:18 + * @Version 1.0 + */ +@RestController +@RequestMapping("/${restPath}/lawss/AskQuestions") +@Api(description = "|AskQuestions|") +public class AskQuestionsController extends BaseController { + + @Autowired + private AskQuestionsServiceImpl askQuestionsService; + @Autowired + private AskQuestionsDao askQuestionsDao; + @Autowired + private AskUserServiceImpl askUserService; + + @Autowired + private SubscriptionServiceImpl subscriptionService; + + @GetMapping("/getAskQuestionsPage") + public ResponseMessage> getAskQuestionsPage(AskQuestionsPage askQuestions){ + IPage iPage = new Page<>(); + iPage.setSize(askQuestions.getPageSize()); + iPage.setPages(askQuestions.getPage()); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.orderByDesc("QUESTION_TIME"); + IPage page = askQuestionsService.page(iPage,queryWrapper); + return Result.success(page); + } + + @PostMapping("/list") + public ResponseMessage> getAskQuestionslistPage(@RequestBody AskQuestionsPage askQuestions){ + IPage iPage = askQuestionsService.listPage(askQuestions); + if(!iPage.getRecords().isEmpty()){ + iPage.getRecords().forEach(questions -> { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("ASK_ID",questions.getId()); + queryWrapper.eq("USID", LoginUserUtil.getUserId()); + List list = subscriptionService.list(queryWrapper); + if(!list.isEmpty()){ + questions.setSubState(list.get(0).getSubState()); + } + }); + } + return Result.success(iPage); + } + + /** + * 查询问题列表 + * @return + */ + @GetMapping("/getAskQuestions") + public ResponseMessage getAskQuestions(){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByDesc("QUESTION_TIME"); + List askQuestionsList=askQuestionsService.list(queryWrapper); + return Result.success(askQuestionsList); + } + + /** + * 查看我的问题详情 + * @param askQuestions + * @return + */ + @GetMapping("/getAskQuestionsDetails") + public ResponseMessage getAskQuestionsDetails(AskQuestions askQuestions){ + List askQuestionsList = askQuestionsService.getAskQuestions(askQuestions); + return Result.success(askQuestionsList); + } + + /** + * 查看我回答的问题 + * @param askQuestions + * @return + */ + @GetMapping("/getReplyDetails") + public ResponseMessage getReplyDetails(AskQuestions askQuestions){ + List askQuestionsList = askQuestionsService.getReplyDetails(askQuestions); + return Result.success(askQuestionsList); + } + + /** + * 根据标准查询问题 + * @param askQuestions + * @return + */ + @GetMapping("/getReplyDetailsByStandId") + public ResponseMessage getReplyDetailsByStandId(AskQuestions askQuestions){ + List askQuestionsList = askQuestionsService.getReplyDetailsByStandId(askQuestions); + return Result.success(askQuestionsList); + } + + /** + * 根据标准编号查询我的回答 + * @param standardId + * @return + */ + @GetMapping("/getAskQuestionsByStandardId") + public ResponseMessage getAskQuestionsByStandardId(String standardId){ + List askQuestionsList = askQuestionsService.getAskQuestionsByStandardId(standardId); + return Result.success(askQuestionsList); + } + + /** + * 根据标准编号,等查询条件 查询我的回答 + * @param askQuestions + * @return + */ + @GetMapping("/getAskQuestionsNew") + public ResponseMessage getAskQuestionsNew(AskQuestions askQuestions){ + List askQuestionsList = askQuestionsService.getAskQuestionsNew(askQuestions); + return Result.success(askQuestionsList); + } + + /** + * 根据问题ID查询回答*** + * @param id + * @return + */ + @GetMapping("/getAskQuestionsByakId") + public ResponseMessage getAskQuestionsByakId(String id,String state){ + List askQuestionsList = askQuestionsService.getAskQuestionsByakId(id,state); + return Result.success(askQuestionsList); + } + + /** + * 添加问题 + * @param askQuestions + * @return + */ + @PostMapping("/insertAskQuestions") + public ResponseMessage insertAskQuestions(@RequestBody AskQuestions askQuestions){ + askQuestions.setId(UUIDUtils.randomUUID20()); + if(askQuestions.getFileList()!=null && !askQuestions.getFileList().isEmpty()){ + askQuestions.setAppendixId(askQuestions.getFileList().get(0).getAttId()); + askQuestions.setAppendixName(askQuestions.getFileList().get(0).getName()); + } + askQuestions.setQuestionTime(new Date()); + List uId = askQuestionsDao.getUId(); + List askUserList = new ArrayList<>(); + for (String id:uId) { + AskUser askUser = new AskUser(); + askUser.setAsdId(askQuestions.getId()); + askUser.setUsid(id); + askUserList.add(askUser); + } + //添加问题分配人员 + askUserService.saveBatch(askUserList); + if(askQuestionsService.save(askQuestions)){ + return Result.success("200","添加成功",null); + }else { + return Result.error("-1","添加失败",null); + } + } + + + /** + * 查询订阅问题 + * @param askQuestions + * @return + */ + @GetMapping("/getAskQuestionsBySubscription") + public ResponseMessage getAskQuestionsBySubscription(AskQuestions askQuestions){ + List askQuestionsList = askQuestionsService.getAskQuestionsBySubscription(askQuestions); + return Result.success(askQuestionsList); + } + + + + /** + * 根据标准id查询订阅 + * @param askQuestions + * @return + */ + @GetMapping("/getSubscriptionByStandId") + public ResponseMessage getSubscriptionByStandId(AskQuestions askQuestions){ + List askQuestionsList = askQuestionsService.getSubscriptionByStandId(askQuestions); + return Result.success(askQuestionsList); + } + + /** + * 相似查询 + * @param problemDescription + * @return + */ + @GetMapping("/resemblance") + public ResponseMessage resemblance(String problemDescription){ + List askQuestions = Arrays.asList(problemDescription.split("")); + List askQuestionsList = askQuestionsService.resemblance(askQuestions); + return Result.success(askQuestionsList); + } + + /** + * 根据分类查询问题 + * @param classification + * @return + */ + @GetMapping("/getAskQuestionsReply") + public ResponseMessage getAskQuestionsReply(String classification){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.select("DISTINCT STANDARD_ID"); + queryWrapper.select("STANDARD_NAME"); + queryWrapper.select("STANDARD_ENCDOING"); + queryWrapper.eq("CLASSIFICATION",classification); + List askQuestionsList = askQuestionsService.list(queryWrapper); + return Result.success(askQuestionsList); + } + + /** + * 问答库的根据标准ID查询问题 + * @param id + * @return + */ + @GetMapping("/getSubscription") + public ResponseMessage getArchiveAskQuestions(String id){ + List askQuestionsList = askQuestionsService.getArchiveAskQuestions(id); + return Result.success(askQuestionsList); + } + + @GetMapping("/retrieve") + public ResponseMessage retrieve(AskQuestions askQuestions){ + List askQuestionsList = askQuestionsService.retrieve(askQuestions); + return Result.success(askQuestionsList); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/AskUserController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/AskUserController.java new file mode 100644 index 00000000..28aeb7fe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/AskUserController.java @@ -0,0 +1,37 @@ +package com.adc.da.slrs.StandardQA.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.slrs.StandardQA.entity.AskQuestions; +import com.adc.da.slrs.StandardQA.entity.AskUser; +import com.adc.da.slrs.StandardQA.service.Impl.AskQuestionsServiceImpl; +import com.adc.da.slrs.StandardQA.service.Impl.AskUserServiceImpl; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author: qk + * @Date: 2022/6/2 0002 8:44 + * @Version 1.0 + */ +@RestController +@RequestMapping("/${restPath}/lawss/AskUser") +@Api(description = "|AskUser|") +public class AskUserController extends BaseController { + @Autowired + private AskUserServiceImpl askUserService; + @PostMapping("/insertAskUser") + public ResponseMessage insertAskUser(@RequestBody AskUser askUser){ + if(askUserService.save(askUser)){ + return Result.success("200","邀请成功",null); + }else { + return Result.error("-1","添加失败",null); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/ReplyController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/ReplyController.java new file mode 100644 index 00000000..2a5421d1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/ReplyController.java @@ -0,0 +1,81 @@ +package com.adc.da.slrs.StandardQA.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.common.ConvertMqEO; +import com.adc.da.slrs.StandardQA.entity.AskQuestions; +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.adc.da.slrs.StandardQA.entity.ReplyPage; +import com.adc.da.slrs.StandardQA.service.Impl.ReplyServiceImpl; +import com.adc.da.util.UUIDUtils; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import io.swagger.annotations.Api; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 10:55 + * @Version 1.0 + */ +@RestController +@RequestMapping("/${restPath}/lawss/Reply") +@Api(description = "| Reply|") +public class ReplyController extends BaseController { + + @Autowired + private ReplyServiceImpl replyService; + + @PostMapping("/insertReply") + public ResponseMessage insertReply(@RequestBody Reply reply){ + if(StringUtils.isEmpty(reply.getReply())){ + return Result.error("-1","请输入回答内容"); + } + if(!reply.getFileList().isEmpty()) { + String appendixIds = reply.getFileList().stream().map(ConvertMqEO::getId).collect(Collectors.joining(","));; + String appendixNames = reply.getFileList().stream().map(ConvertMqEO::getName).collect(Collectors.joining(","));; + reply.setAppendixId(appendixIds); + reply.setAppendixName(appendixNames); + } + reply.setReplyTime(new Date()); + reply.setId(UUIDUtils.randomUUID20()); + if(replyService.save(reply)){ + return Result.success("200","提交成功",null); + }else { + return Result.error("-1","添加失败"); + } + } + @PostMapping("/updateReply") + public ResponseMessage updateReply(String id){ + if(StringUtils.isEmpty(id)){ + return Result.error("-1","请选择要归档的回答"); + } + List list = Arrays.asList(id.split(",")); + for (String s: list) { + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.set("STATE","yes"); + updateWrapper.eq("ID",s); + replyService.update(updateWrapper); + } + return Result.success("200","归档成功",null); + } + + + @PostMapping("/listByPage") + public ResponseMessage updateReply(@RequestBody ReplyPage reply){ + return Result.success(replyService.listByPage(reply)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/SubscriptionController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/SubscriptionController.java new file mode 100644 index 00000000..f300887b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/controller/SubscriptionController.java @@ -0,0 +1,62 @@ +package com.adc.da.slrs.StandardQA.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.slrs.StandardQA.entity.Subscription; +import com.adc.da.slrs.StandardQA.service.Impl.SubscriptionServiceImpl; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/6/7 0007 11:18 + * @Version 1.0 + */ +@RestController +@RequestMapping("/${restPath}/lawss/Subscription") +@Api(description = "|Subscription|") +public class SubscriptionController extends BaseController { + @Autowired + private SubscriptionServiceImpl subscriptionService; + + @PostMapping("/insertSubscription") + public ResponseMessage updateReply(@RequestBody Subscription subscription){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("ASK_ID",subscription.getAskId()); + queryWrapper.eq("USID",subscription.getUsId()); + List list = subscriptionService.list(queryWrapper); + if(!list.isEmpty()){ + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("ASK_ID",subscription.getAskId()); + updateWrapper.eq("USID",subscription.getUsId()); + updateWrapper.set("SUB_STATE",subscription.getSubState()); + if(subscriptionService.update(updateWrapper)){ + if("y".equals(subscription.getSubState())){ + return Result.success("200","订阅成功",null); + }else { + return Result.success("200","取消订阅成功",null); + } + + }else { + return Result.success("-1","订阅失败",null); + } + }else { + subscription.setSubState("y"); + if(subscriptionService.save(subscription)){ + return Result.success("200","订阅成功",null); + }else { + return Result.success("-1","订阅失败",null); + } + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/AskQuestionsDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/AskQuestionsDao.java new file mode 100644 index 00000000..2d20fa48 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/AskQuestionsDao.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.StandardQA.dao; + +import com.adc.da.slrs.StandardQA.entity.AskQuestions; +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 9:26 + * @Version 1.0 + */ +@Repository +public interface AskQuestionsDao extends BaseMapper { + + List getAskQuestions (@Param("askQuestions") AskQuestions askQuestions); + + List getAskQuestionsNew (@Param("ask") AskQuestions askQuestions); + + List getReplyDetails (@Param("askQuestions") AskQuestions askQuestions); + + List getReplyDetailsByStandId (@Param("askQuestions") AskQuestions askQuestions); + + List getAskQuestionsBySubscription (@Param("askQuestions") AskQuestions askQuestions); + + List retrieve (@Param("askQuestions") AskQuestions askQuestions); + + List getSubscriptionByStandId (@Param("askQuestions") AskQuestions askQuestions); + + List resemblance (@Param("chars") List askQuestions); + + List getAskQuestionsByStandardId (String standardId); + + List getArchiveAskQuestions (String id); + + List getAskQuestionsByakId (@Param("id") String id,@Param("state") String state); + + List getUId(); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/AskUserDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/AskUserDao.java new file mode 100644 index 00000000..69c6040a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/AskUserDao.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.StandardQA.dao; + +import com.adc.da.slrs.StandardQA.entity.AskQuestions; +import com.adc.da.slrs.StandardQA.entity.AskUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + * @Author: qk + * @Date: 2022/6/2 0002 8:47 + * @Version 1.0 + */ +@Repository +public interface AskUserDao extends BaseMapper { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/ReplyDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/ReplyDao.java new file mode 100644 index 00000000..1456168d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/ReplyDao.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.StandardQA.dao; + +import com.adc.da.slrs.StandardQA.entity.AskQuestions; +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 11:02 + * @Version 1.0 + */ +@Repository +public interface ReplyDao extends BaseMapper { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/SubscriptionDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/SubscriptionDao.java new file mode 100644 index 00000000..4d4cef1d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/dao/SubscriptionDao.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.StandardQA.dao; + +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.adc.da.slrs.StandardQA.entity.Subscription; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + * @Author: qk + * @Date: 2022/6/7 0007 11:19 + * @Version 1.0 + */ +@Repository +public interface SubscriptionDao extends BaseMapper { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskQuestions.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskQuestions.java new file mode 100644 index 00000000..0f8c9755 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskQuestions.java @@ -0,0 +1,107 @@ +package com.adc.da.slrs.StandardQA.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.common.ConvertMqEO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +import java.util.Date; +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 9:19 + * @Version 1.0 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="AskQuestions对象", description="") +public class AskQuestions extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "主键") + private String id; + + @TableField("CLASSIFICATION") + @ApiModelProperty(value = "分类") + private String classification; + + @TableField("PROBLEM_DESCRIPTION") + @ApiModelProperty(value = "问题描述") + private String problemDescription; + + @TableField("QUESTIONER") + @ApiModelProperty(value = "提问人") + private String questioner; + + @TableField("QUESTION_TIME") + @ApiModelProperty(value = "提问时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date questionTime; + + @TableField("STANDARD_ENCDOING") + @ApiModelProperty(value = "标准编号") + private String standardEncdoing; + + @TableField("STANDARD_NAME") + @ApiModelProperty(value = "标准名称") + private String standardName; + + @TableField("STANDARD_ID") + @ApiModelProperty(value = "标准ID") + private String standardId; + + @TableField("APPENDIX_ID") + @ApiModelProperty(value = "标准ID") + private String appendixId; + + @TableField("APPENDIX_NAME") + @ApiModelProperty(value = "标准ID") + private String appendixName; + + /** + * 回答人 + */ + @TableField(exist = false) + private String answerer; + /** + * 回答 + */ + @TableField(exist = false) + private String reply; + /** + * 回答时间 + */ + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date replyTime; + + /** + *附件路径 + */ + @TableField(exist = false) + private String appendix; + + @TableField(exist = false) + private List fileList; + + @TableField(exist = false) + private String type; + + @TableField(exist = false) + private String subscription; + + @TableField(exist = false) + private String subState; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskQuestionsPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskQuestionsPage.java new file mode 100644 index 00000000..7c3ee0f8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskQuestionsPage.java @@ -0,0 +1,45 @@ +package com.adc.da.slrs.StandardQA.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author: qk + * @Date: 2022/6/10 0010 14:48 + * @Version 1.0 + */ +@Data +public class AskQuestionsPage { + + private Long page; + private Long pageSize; + + + @ApiModelProperty(value = "分类") + private String classification; + + @ApiModelProperty(value = "问题描述") + private String problemDescription; + + + @ApiModelProperty(value = "提问人") + private String questioner; + + + @ApiModelProperty(value = "标准编号") + private String standardEncdoing; + + + @ApiModelProperty(value = "标准名称") + private String standardName; + + @ApiModelProperty(value = "标准ID") + private String standardId; + + @ApiModelProperty(value = "标准ID") + private String appendixName; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskUser.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskUser.java new file mode 100644 index 00000000..f8289058 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/AskUser.java @@ -0,0 +1,32 @@ +package com.adc.da.slrs.StandardQA.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Author: qk + * @Date: 2022/6/2 0002 8:44 + * @Version 1.0 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="AskUser对象", description="") +public class AskUser extends BaseEntity { + + + @TableField("ASK_ID") + @ApiModelProperty(value = "问题ID") + private String asdId; + + + @TableField("USID") + @ApiModelProperty(value = "用户ID") + private String usid; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/Reply.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/Reply.java new file mode 100644 index 00000000..ddab429d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/Reply.java @@ -0,0 +1,71 @@ +package com.adc.da.slrs.StandardQA.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.common.ConvertMqEO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +import java.util.Date; +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 9:20 + * @Version 1.0 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="Reply对象", description="") +public class Reply extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "主键") + private String id; + + @TableField("REPLY") + @ApiModelProperty(value = "回答") + private String reply; + + @TableField("STATE") + @ApiModelProperty(value = "状态(0:显示,1:不显示)") + private String state; + + @TableField("REPLY_TIME") + @ApiModelProperty(value = "回答时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date replyTime; + + @TableField("APPENDIX") + @ApiModelProperty(value = "附件") + private String appendix; + + @TableField("ANSWERER") + @ApiModelProperty(value = "回答人") + private String answerer; + + @TableField("ASK_ID") + @ApiModelProperty(value = "问题ID") + private String askId; + + @TableField("APPENDIX_ID") + @ApiModelProperty(value = "附件ID") + private String appendixId; + + @TableField("APPENDIX_NAME") + @ApiModelProperty(value = "附件名称") + private String appendixName; + + @TableField(exist = false) + private List fileList; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/ReplyPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/ReplyPage.java new file mode 100644 index 00000000..4c1c89bb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/ReplyPage.java @@ -0,0 +1,71 @@ +package com.adc.da.slrs.StandardQA.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.base.page.BasePage; +import com.adc.da.common.ConvertMqEO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 java.util.Date; +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 9:20 + * @Version 1.0 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="Reply对象", description="") +public class ReplyPage extends BasePage { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "主键") + private String id; + + @TableField("REPLY") + @ApiModelProperty(value = "回答") + private String reply; + + @TableField("STATE") + @ApiModelProperty(value = "状态(0:显示,1:不显示)") + private String state; + + @TableField("REPLY_TIME") + @ApiModelProperty(value = "回答时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date replyTime; + + @TableField("APPENDIX") + @ApiModelProperty(value = "附件") + private String appendix; + + @TableField("ANSWERER") + @ApiModelProperty(value = "回答人") + private String answerer; + + @TableField("ASK_ID") + @ApiModelProperty(value = "问题ID") + private String askId; + + @TableField("APPENDIX_ID") + @ApiModelProperty(value = "附件ID") + private String appendixId; + + @TableField("APPENDIX_NAME") + @ApiModelProperty(value = "附件名称") + private String appendixName; + + @TableField(exist = false) + private List fileList; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/Subscription.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/Subscription.java new file mode 100644 index 00000000..5e46f3bf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/entity/Subscription.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.StandardQA.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Author: qk + * @Date: 2022/6/7 0007 11:16 + * @Version 1.0 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="Subscription对象", description="") +public class Subscription extends BaseEntity { + + + @TableField("ASK_ID") + @ApiModelProperty(value = "问题ID") + private String askId; + + @TableField("USID") + @ApiModelProperty(value = "用户ID") + private String usId; + + @TableField("SUB_STATE") + @ApiModelProperty(value = "订阅状态 默认 n 未订阅 y 已订阅") + private String subState; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/AskQuestionsService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/AskQuestionsService.java new file mode 100644 index 00000000..36cf94ba --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/AskQuestionsService.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.StandardQA.service; + +import com.adc.da.slrs.NewsFeed.entity.NewsFeed; +import com.adc.da.slrs.StandardQA.entity.AskQuestions; +import com.adc.da.slrs.StandardQA.entity.AskQuestionsPage; +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 9:22 + * @Version 1.0 + */ +public interface AskQuestionsService extends IService { + + List getAskQuestions(AskQuestions askQuestions); + IPage listPage(AskQuestionsPage askQuestions); + List getAskQuestionsNew(AskQuestions askQuestions); + + List getReplyDetails(AskQuestions askQuestions); + List getReplyDetailsByStandId(AskQuestions askQuestions); + List getAskQuestionsBySubscription(AskQuestions askQuestions); + List retrieve(AskQuestions askQuestions); + List getSubscriptionByStandId(AskQuestions askQuestions); + List resemblance(List askQuestions); + + List getAskQuestionsByStandardId(String standardId); + List getArchiveAskQuestions(String id); + List getAskQuestionsByakId(String id,String state); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/AskUserService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/AskUserService.java new file mode 100644 index 00000000..2a41dac3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/AskUserService.java @@ -0,0 +1,13 @@ +package com.adc.da.slrs.StandardQA.service; + +import com.adc.da.slrs.StandardQA.entity.AskQuestions; +import com.adc.da.slrs.StandardQA.entity.AskUser; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Author: qk + * @Date: 2022/6/2 0002 8:47 + * @Version 1.0 + */ +public interface AskUserService extends IService { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/Impl/AskUserServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/Impl/AskUserServiceImpl.java new file mode 100644 index 00000000..a79ec413 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/Impl/AskUserServiceImpl.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.StandardQA.service.Impl; + + +import com.adc.da.slrs.StandardQA.dao.AskUserDao; +import com.adc.da.slrs.StandardQA.entity.AskUser; +import com.adc.da.slrs.StandardQA.service.AskUserService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: qk + * @Date: 2022/6/2 0002 8:47 + * @Version 1.0 + */ + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class AskUserServiceImpl extends ServiceImpl implements AskUserService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/Impl/SubscriptionServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/Impl/SubscriptionServiceImpl.java new file mode 100644 index 00000000..61bf6d64 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/Impl/SubscriptionServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.StandardQA.service.Impl; + + +import com.adc.da.slrs.StandardQA.dao.SubscriptionDao; +import com.adc.da.slrs.StandardQA.entity.Subscription; +import com.adc.da.slrs.StandardQA.service.SubscriptionService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: qk + * @Date: 2022/6/7 0007 11:20 + * @Version 1.0 + */ +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SubscriptionServiceImpl extends ServiceImpl implements SubscriptionService { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/ReplyService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/ReplyService.java new file mode 100644 index 00000000..f3cad8f2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/ReplyService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.StandardQA.service; + +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.adc.da.slrs.StandardQA.entity.ReplyPage; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 11:02 + * @Version 1.0 + */ +public interface ReplyService extends IService { + + IPage listByPage(ReplyPage reply); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/SubscriptionService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/SubscriptionService.java new file mode 100644 index 00000000..ba4359ef --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/SubscriptionService.java @@ -0,0 +1,13 @@ +package com.adc.da.slrs.StandardQA.service; + +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.adc.da.slrs.StandardQA.entity.Subscription; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Author: qk + * @Date: 2022/6/7 0007 11:20 + * @Version 1.0 + */ +public interface SubscriptionService extends IService { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/impl/AskQuestionsServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/impl/AskQuestionsServiceImpl.java new file mode 100644 index 00000000..c3574e69 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/impl/AskQuestionsServiceImpl.java @@ -0,0 +1,113 @@ +package com.adc.da.slrs.StandardQA.service.Impl; + + +import com.adc.da.slrs.StandardQA.dao.AskQuestionsDao; +import com.adc.da.slrs.StandardQA.entity.AskQuestions; +import com.adc.da.slrs.StandardQA.entity.AskQuestionsPage; +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.adc.da.slrs.StandardQA.service.AskQuestionsService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import net.sf.jsqlparser.statement.replace.Replace; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 9:23 + * @Version 1.0 + */ +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class AskQuestionsServiceImpl extends ServiceImpl implements AskQuestionsService { + + @Autowired + private AskQuestionsDao askQuestionsDao; + + @Override + public List getAskQuestions(AskQuestions askQuestions) { + return askQuestionsDao.getAskQuestions(askQuestions); + } + + @Override + public IPage listPage(AskQuestionsPage askQuestions) { + Page page=new Page(); + page.setCurrent(askQuestions.getPage()); + page.setSize(askQuestions.getPageSize()); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(askQuestions.getClassification()),"CLASSIFICATION",askQuestions.getClassification()); + wrapper.like(StringUtils.isNotBlank(askQuestions.getAppendixName()),"APPENDIX_NAME",askQuestions.getAppendixName()); + wrapper.like(StringUtils.isNotBlank(askQuestions.getProblemDescription()),"PROBLEM_DESCRIPTION",askQuestions.getProblemDescription()); + wrapper.eq(StringUtils.isNotBlank(askQuestions.getQuestioner()),"QUESTIONER",askQuestions.getQuestioner()); + if (StringUtils.isNotBlank(askQuestions.getStandardEncdoing())) { + wrapper.and(Q -> wrapper.like("STANDARD_ENCDOING", askQuestions.getStandardEncdoing().replace(" ", " ")) + .or().like("STANDARD_ENCDOING", askQuestions.getStandardEncdoing())); + } + wrapper.like(StringUtils.isNotBlank(askQuestions.getStandardName()),"STANDARD_NAME",askQuestions.getStandardName()); + wrapper.eq(StringUtils.isNotBlank(askQuestions.getStandardId()),"STANDARD_ID",askQuestions.getStandardId()); + wrapper.orderByDesc("QUESTION_TIME"); + return askQuestionsDao.selectPage(page,wrapper); + } + + @Override + public List getReplyDetails(AskQuestions askQuestions) { + return askQuestionsDao.getReplyDetails(askQuestions); + } + + @Override + public List getReplyDetailsByStandId(AskQuestions askQuestions) { + return askQuestionsDao.getReplyDetailsByStandId(askQuestions); + } + + @Override + public List getAskQuestionsBySubscription(AskQuestions askQuestions) { + return askQuestionsDao.getAskQuestionsBySubscription(askQuestions); + } + + @Override + public List retrieve(AskQuestions askQuestions) { + if (StringUtils.isNotBlank(askQuestions.getStandardEncdoing())) { + askQuestions.setStandardEncdoing(askQuestions.getStandardEncdoing().replace(" ", " ")); + } + return askQuestionsDao.retrieve(askQuestions); + } + + @Override + public List getSubscriptionByStandId(AskQuestions askQuestions) { + return askQuestionsDao.getSubscriptionByStandId(askQuestions); + } + + @Override + public List resemblance(List askQuestions) { + return askQuestionsDao.resemblance(askQuestions); + } + + @Override + public List getAskQuestionsByStandardId(String standardId) { + return askQuestionsDao.getAskQuestionsByStandardId(standardId); + } + + @Override + public List getAskQuestionsNew(AskQuestions askQuestions) { + return askQuestionsDao.getAskQuestionsNew(askQuestions); + } + + @Override + public List getArchiveAskQuestions(String id) { + return askQuestionsDao.getArchiveAskQuestions(id); + } + + @Override + public List getAskQuestionsByakId(String id,String state) { + return askQuestionsDao.getAskQuestionsByakId(id,state); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/impl/ReplyServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/impl/ReplyServiceImpl.java new file mode 100644 index 00000000..327583d4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/StandardQA/service/impl/ReplyServiceImpl.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.StandardQA.service.Impl; + +import com.adc.da.slrs.StandardQA.dao.ReplyDao; +import com.adc.da.slrs.StandardQA.entity.Reply; +import com.adc.da.slrs.StandardQA.entity.ReplyPage; +import com.adc.da.slrs.StandardQA.service.ReplyService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: qk + * @Date: 2022/5/31 0031 11:03 + * @Version 1.0 + */ +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ReplyServiceImpl extends ServiceImpl implements ReplyService { + + @Override + public IPage listByPage(ReplyPage reply) { + Page page=new Page(); + page.setSize(reply.getPageSize()); + page.setCurrent(reply.getPage()); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(reply.getAskId()),"ASK_ID",reply.getAskId()); + wrapper.eq(StringUtils.isNotBlank(reply.getAnswerer()),"ANSWERER",reply.getAnswerer()); + wrapper.like(StringUtils.isNotBlank(reply.getAppendixName()),"APPENDIX_NAME",reply.getAppendixName()); + wrapper.eq("STATE","yes"); + wrapper.orderByDesc("REPLY_TIME"); + return this.page(page,wrapper); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/controller/WorkGroupController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/controller/WorkGroupController.java new file mode 100644 index 00000000..6f621b0e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/controller/WorkGroupController.java @@ -0,0 +1,114 @@ +package com.adc.da.slrs.customWorkGroup.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.customWorkGroup.entity.WorkGroupQueryPage; +import com.adc.da.slrs.customWorkGroup.service.IWorkGroupService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiModelProperty; +import org.apache.commons.codec.language.Nysiis; +import org.apache.ibatis.annotations.Delete; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.customWorkGroup.entity.WorkGroup; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author zhaokaiyao +* @since 2022-01-18 +*/ +@RestController +@Api(description = "|WorkGroup|") +@RequestMapping("/${restPath}/workGroup/work-group") +public class WorkGroupController extends BaseController { + + + @Autowired + IWorkGroupService iWorkGroupService; + + @ApiModelProperty("新增工作组") + @PostMapping + public ResponseMessage addWorkGroup(WorkGroup workGroup) { + + if (isDistinct(workGroup.getWorkGroup(),null)){ + if (iWorkGroupService.add(workGroup)){ + return Result.success("200","新增成功",true); + }else { + return Result.error("201","新增失败",false); + + } + }else { + return Result.error("202","组名已存在",false); + + } + } + + + + @CrossOrigin + @ApiModelProperty("批量删除工作组") + @DeleteMapping + public ResponseMessage deleteWorkGroup(String id){ + boolean delete = iWorkGroupService.delete(id); + + return Result.success(delete); + } + + @ApiModelProperty("根据组长民或者组名查询工作组,参数为空时查询全部") + @GetMapping + public ResponseMessage> getWorkGroupLists(WorkGroupQueryPage queryPage){ + IPage workGroup = iWorkGroupService.getWorkGroup(queryPage); + return Result.success(workGroup); + } + + + @ApiModelProperty("修改工作组") + @PutMapping + public ResponseMessage updateWorkGroup(WorkGroup workGroup){ + + ResponseMessage result = Result.success(); + + if (isDistinct(workGroup.getWorkGroup(),workGroup.getId())){ + if (iWorkGroupService.update(workGroup)){ + result=Result.success("200", "修改成功"); + }else { + result=Result.error("201", "修改失败"); + } + + }else { + result=Result.error("202", "组名已存在"); + } + + return result; + } + + /** + * 判断提交的工作组名称是否重复 + * @param groupName 条件 + * @param id 排除id + * @returntrue 没有重复 false 有重复 + */ + private boolean isDistinct(String groupName,String id){ + + QueryWrapper ew = new QueryWrapper<>(); + + ew.eq("work_group_name",groupName); + + if (id!=null){ + ew.ne("id",id); + } + + List list = iWorkGroupService.list(ew); + return list.isEmpty(); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/dao/WorkGroupDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/dao/WorkGroupDao.java new file mode 100644 index 00000000..233fdb42 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/dao/WorkGroupDao.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.customWorkGroup.dao; + +import com.adc.da.slrs.customWorkGroup.entity.WorkGroup; +import com.adc.da.slrs.customWorkGroup.entity.WorkGroupQueryPage; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zhaokaiyao + * @since 2022-01-18 + */ +public interface WorkGroupDao extends BaseMapper { + + + public IPage getWorkGroup( @Param("page")IPage page, + @Param(Constants.WRAPPER) Wrapper queryWrapper, + @Param("queryCondition")WorkGroupQueryPage queryCondition); + + + public List getUserName(String userId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/entity/WorkGroup.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/entity/WorkGroup.java new file mode 100644 index 00000000..11eb1357 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/entity/WorkGroup.java @@ -0,0 +1,46 @@ +package com.adc.da.slrs.customWorkGroup.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author zhaokaiyao + * @since 2022-01-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WorkGroup对象", description="") +public class WorkGroup extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId + private String id; + + @TableField("work_group_name") + private String workGroup; + + @TableField(exist = false) + private String workLeader; + + @TableField("work_leader_id") + private String workLeaderId; + + @TableField(exist = false) + private String workPeople; + + @TableField("work_people_id") + private String workPeopleId; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/entity/WorkGroupQueryPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/entity/WorkGroupQueryPage.java new file mode 100644 index 00000000..5b09a2e5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/entity/WorkGroupQueryPage.java @@ -0,0 +1,32 @@ +package com.adc.da.slrs.customWorkGroup.entity; + +import lombok.Data; + +import java.util.Optional; + +/** + * @author 22501 + */ +@Data +public class WorkGroupQueryPage { + + private Integer page; + + private Integer pageSize; + + private String leaderName; + + private String workGroupName; + + + public int getPage() { + return Optional.ofNullable(this.page) + .orElse(1); + + } + + public int getPageSize() { + return Optional.ofNullable(this.pageSize) + .orElse(20); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/service/IWorkGroupService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/service/IWorkGroupService.java new file mode 100644 index 00000000..214fdbc8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/service/IWorkGroupService.java @@ -0,0 +1,49 @@ +package com.adc.da.slrs.customWorkGroup.service; + +import com.adc.da.slrs.customWorkGroup.entity.WorkGroup; +import com.adc.da.slrs.customWorkGroup.entity.WorkGroupQueryPage; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author zhaokaiyao + * @since 2022-01-18 + */ +public interface IWorkGroupService extends IService { + + /** + * 新增 + * @param workGroup + * @return + */ + public boolean add(WorkGroup workGroup); + + + /** + * 删除 + * @param workGroupId + * @return + */ + public boolean delete(String workGroupId); + + /** + * 修改 + * @param queryPage + * @return + */ + public IPage getWorkGroup(WorkGroupQueryPage queryPage); + + + /** + * 更新 + * @param workGroup + * @return + */ + public boolean update(WorkGroup workGroup); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/service/impl/WorkGroupServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/service/impl/WorkGroupServiceImpl.java new file mode 100644 index 00000000..297b092a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/customWorkGroup/service/impl/WorkGroupServiceImpl.java @@ -0,0 +1,74 @@ +package com.adc.da.slrs.customWorkGroup.service.impl; + +import com.adc.da.slrs.customWorkGroup.entity.WorkGroup; +import com.adc.da.slrs.customWorkGroup.dao.WorkGroupDao; +import com.adc.da.slrs.customWorkGroup.entity.WorkGroupQueryPage; +import com.adc.da.slrs.customWorkGroup.service.IWorkGroupService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author zhaokaiyao + * @since 2022-01-18 + */ +@Service +public class WorkGroupServiceImpl extends ServiceImpl implements IWorkGroupService { + + @Autowired + WorkGroupDao workGroupDao; + + + + @Override + public boolean add(WorkGroup workGroup) { + workGroup.setId(UUIDUtils.randomUUID20()); + return this.save(workGroup); + } + + @Override + public boolean delete(String workGroupId) { + List idList = Arrays.asList(workGroupId.split(",")); + return this.removeByIds(idList); + } + + @Override + public IPage getWorkGroup(WorkGroupQueryPage queryPage) { + + + QueryWrapper wrapper = new QueryWrapper<>(); + if (queryPage.getWorkGroupName()!=null && !"".equals(queryPage.getWorkGroupName())){ + wrapper.eq("work_group_name",queryPage.getWorkGroupName()); + } + //可以通过组长名称模糊查询 + IPage workGroupList = workGroupDao.getWorkGroup(new Page<>(queryPage.getPage(), queryPage.getPageSize()), wrapper,queryPage); + //需要把组长的id和组员的id转换为其名称 + for (WorkGroup record : workGroupList.getRecords()) { + + record.setWorkLeader( String.join(",",workGroupDao.getUserName(record.getWorkLeaderId())) ); + record.setWorkPeople( String.join(",",workGroupDao.getUserName(record.getWorkPeopleId()))); + } + + return workGroupList; + + } + + + + + @Override + public boolean update(WorkGroup workGroup) { + return this.updateById(workGroup); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/controller/EsMatingRelationController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/controller/EsMatingRelationController.java new file mode 100644 index 00000000..1a721538 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/controller/EsMatingRelationController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.esMatingRelation.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.esMatingRelation.entity.EsMatingRelation; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author yzh +* @since 2021-12-24 +*/ +@RestController +@Api(description = "|EsMatingRelation|") +@RequestMapping("/esMatingRelation/es-mating-relation") +public class EsMatingRelationController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/dao/EsMatingRelationDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/dao/EsMatingRelationDao.java new file mode 100644 index 00000000..9abc5d86 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/dao/EsMatingRelationDao.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.esMatingRelation.dao; + +import com.adc.da.slrs.esMatingRelation.entity.EsMatingRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author yzh + * @since 2021-12-24 + */ +public interface EsMatingRelationDao extends BaseMapper { + + List getDatasOld(@Param("id") String id); + + List getDatas(@Param("id") String id); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/entity/EsMatingRelation.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/entity/EsMatingRelation.java new file mode 100644 index 00000000..69e689fd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/entity/EsMatingRelation.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.esMatingRelation.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author yzh + * @since 2021-12-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="EsMatingRelation对象", description="") +public class EsMatingRelation extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableField("id") + private String id; + + @ApiModelProperty(value = "计划id") + @TableField("es_id") + private String esId; + + @ApiModelProperty(value = "标准id") + @TableField("stand_id") + private String standId; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/service/IEsMatingRelationService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/service/IEsMatingRelationService.java new file mode 100644 index 00000000..96d5c316 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/service/IEsMatingRelationService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.esMatingRelation.service; + +import com.adc.da.slrs.esMatingRelation.entity.EsMatingRelation; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author yzh + * @since 2021-12-24 + */ +public interface IEsMatingRelationService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/service/impl/EsMatingRelationServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/service/impl/EsMatingRelationServiceImpl.java new file mode 100644 index 00000000..a51551c0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esMatingRelation/service/impl/EsMatingRelationServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.esMatingRelation.service.impl; + +import com.adc.da.slrs.esMatingRelation.entity.EsMatingRelation; +import com.adc.da.slrs.esMatingRelation.dao.EsMatingRelationDao; +import com.adc.da.slrs.esMatingRelation.service.IEsMatingRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author yzh + * @since 2021-12-24 + */ +@Service +public class EsMatingRelationServiceImpl extends ServiceImpl implements IEsMatingRelationService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanController.java new file mode 100644 index 00000000..a8058830 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanController.java @@ -0,0 +1,185 @@ +package com.adc.da.slrs.esRevisePlan.controller; + + +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanService; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.dao.QualityEvaluationDao; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.QualityEvaluation; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.ArrayList; +import java.util.List; + +/** +*

    + * 企标制修订计划 前端控制器 + *

    +* +* @author zcr +* @since 2021-11-14 +*/ +@RestController +@Api(description = "|EsRevisePlan|") +@RequestMapping("api/esRevisePlan/es-revise-plan") +public class EsRevisePlanController extends BaseController { + + @Autowired + IEsRevisePlanService iEsRevisePlanService; + @Autowired + private QualityEvaluationDao qualityEvaluationDao; + + @ApiOperation(value = "获取所有企标计划") + @GetMapping("getAllPlans") + public ResponseMessage getAllPlans(EsRevisePlan esRevisePlan){ + List esRevisePlans = iEsRevisePlanService.getAllPlans(esRevisePlan); + PageInfo pageInfo = getPageInfo(esRevisePlan.getPager(),esRevisePlans); + return Result.success(pageInfo); + } + + @ApiOperation(value = "获取所有企标计划给流程") + @GetMapping("getAllPlansByWk") + public List getAllPlansByWk(String esName){ + List esRevisePlans = iEsRevisePlanService.getAllPlansByWk(esName); + return esRevisePlans; + } + + @ApiOperation(value = "多条件查询企标计划") + @PostMapping("queryAllPlans") + public ResponseMessage queryAllPlans(EsRevisePlan esRevisePlan){ + List esRevisePlans = iEsRevisePlanService.queryAllPlans(esRevisePlan); + for (EsRevisePlan revisePlan : esRevisePlans){ + String area = revisePlan.getArea(); + if (StringUtils.isNotBlank(area)){ + if (area.startsWith("[") && area.endsWith("]")){ + area = area.substring(1,area.length() - 1); + area = area.replace("\"",""); + } + } + revisePlan.setArea(area); + //查评分 + if (ObjectUtils.isNotEmpty(revisePlan.getStandId())) { + List last = new ArrayList<>(); + List evaluations = qualityEvaluationDao.getEvaluationForm(new QueryWrapper().eq("law_id", revisePlan.getStandId()).eq("evaluation_type", "quality")); + for (QualityEvaluation evaluation : evaluations) { + Double score; + String value; + if (evaluation.getProcessNode()==null){ + value=""; + }else { + value=evaluation.getProcessNode(); + } + String evaluationScore = ObjectUtils.isEmpty(evaluation.getScore()) ? "0" : evaluation.getScore(); + switch (value){ + case "征求意见": + score=Double.valueOf(evaluationScore) * 0.3; + break; + case "技术委员会评审、评审意见修改": + score=Double.valueOf(evaluationScore) * 0.4; + break; + case "重新技术委员会评审、评审意见修改": + score=Double.valueOf(evaluationScore) * 0.4; + break; + case "标准化复审": + score=Double.valueOf(evaluationScore) * 0.15; + break; + case "标准法规部高级经理审核": + score=Double.valueOf(evaluationScore) * 0.15; + break; + + default: score=Double.valueOf(evaluationScore); + } + last.add(score); + } + revisePlan.setScore(last.stream().mapToDouble(Double::doubleValue).sum()); + } + } + PageInfo pageInfo = getPageInfo(esRevisePlan.getPager(),esRevisePlans); + return Result.success(pageInfo); + } + + @ApiOperation(value = "获取单个企标计划详情") + @GetMapping("getPlanInfo") + public ResponseMessage getPlanInfo(String id){ + return Result.success(iEsRevisePlanService.getOnePlan(id)); + } + +//----------------回来改----------------------上面的------ + @ApiOperation(value = "获取是否存在重复名企标名称接口") + @GetMapping("/getDataByNameAndSort") + public ResponseMessage getDataByNameAndSort(EsRevisePlan esRevisePlan){ + QueryWrapper qw = new QueryWrapper(); + qw.eq("buss_sort",esRevisePlan.getBussSort()); + qw.eq("es_name",esRevisePlan.getEsName()); + return Result.success(iEsRevisePlanService.count(qw)); + } + @ApiOperation(value = "获取是否存在重复名企标名称接口") + @GetMapping("/getDataByName") + public ResponseMessage getDataByName(EsRevisePlan esRevisePlan){ + return Result.success(iEsRevisePlanService.getDataByName(esRevisePlan)); + } + + @ApiOperation(value = "编辑企标计划") + @PostMapping("modPlan") + public ResponseMessage modPlan(EsRevisePlan esRevisePlan){ + return Result.success(iEsRevisePlanService.modPlan(esRevisePlan)); + } + + @ApiOperation(value = "编辑企标计划-企标技术更新计划状态") + @PostMapping("modPlanByState") + public ResponseMessage modPlanByState(EsRevisePlan esRevisePlan){ + return Result.success(iEsRevisePlanService.modPlanByState(esRevisePlan)); + } + + @ApiOperation(value = "编辑企标计划-流程") + @PostMapping("modPlanByProcess") + public ResponseMessage modPlanByProcess(@RequestBody EsRevisePlan esRevisePlan){ + return Result.success(iEsRevisePlanService.modPlanByProcess(esRevisePlan)); + } + + @ApiOperation(value = "编辑企标计划") + @PostMapping("/modPlanByWk") + public ResponseMessage modPlanByWk(@RequestBody EsRevisePlan esRevisePlan){ + return Result.success(iEsRevisePlanService.modPlan(esRevisePlan)); + } + + @ApiOperation(value = "添加企标计划") + @PostMapping("addPlan") + public ResponseMessage addPlan(EsRevisePlan esRevisePlan){ + return iEsRevisePlanService.addPlan(esRevisePlan); + } + + @ApiOperation(value = "添加企标计划") + @PostMapping("/addPlanByWk") + public ResponseMessage addPlanByWk(@RequestBody EsRevisePlan esRevisePlan){ + return Result.success(iEsRevisePlanService.addPlan(esRevisePlan)); + } + + @ApiOperation(value = "删除单个企标计划") + @GetMapping("delPlan") + public ResponseMessage delPlan(String id){ + return Result.success(iEsRevisePlanService.delPlan(id)); + } + + @ApiOperation(value = "删除单个企标计划") + @GetMapping("delPlanByWk") + public ResponseMessage delPlanByWk(@RequestParam("id") String id){ + return Result.success(iEsRevisePlanService.delPlans(id)); + } + + @ApiOperation(value = "批量删除企标计划") + @GetMapping("delPlans") + public ResponseMessage delPlans(String ids){ + return Result.success(iEsRevisePlanService.delPlans(ids)); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanLogController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanLogController.java new file mode 100644 index 00000000..b15d75ba --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/controller/EsRevisePlanLogController.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.esRevisePlan.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlanLog; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlanLogForm; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanLogService; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@RestController +@Api(description = "|EsRevisePlanLog|") +@RequestMapping("api/esRevisePlanLog/log") +public class EsRevisePlanLogController extends BaseController { + + @Autowired + private IEsRevisePlanLogService esRevisePlanLogService; + + @ApiOperation(value = "查询当前计划的日志信息") + @GetMapping("/queryLogsByPlanId") + public ResponseMessage queryLogsByPlanId(@RequestParam String planId){ + List esRevisePlanLogs = esRevisePlanLogService.queryLogsByPlanId(planId); + return Result.success(esRevisePlanLogs); + } + + @ApiOperation(value = "添加日志") + @PostMapping("/addLog") + public ResponseMessage addLog(EsRevisePlanLogForm form){ + esRevisePlanLogService.addLog(JSON.parseObject(form.getJson())); + return Result.success("操作成功"); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/dao/EsRevisePlanDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/dao/EsRevisePlanDao.java new file mode 100644 index 00000000..e656f740 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/dao/EsRevisePlanDao.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.esRevisePlan.dao; + +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * 企标制修订计划 Mapper 接口 + *

    + * + * @author zcr + * @since 2021-11-14 + */ +@Repository +public interface EsRevisePlanDao extends BaseMapper { + Integer getTotal(); + Integer getQueryTotal(EsRevisePlan esRevisePlan); + List selectAll(EsRevisePlan esRevisePlan);//查询所有 + List queryAll(EsRevisePlan esRevisePlan);//多条件查询 + List selectPageByName(EsRevisePlan esRevisePlan);//多条件查询 + EsRevisePlan selectOne(String id);//查询详情 + + int updateOne(EsRevisePlan esRevisePlan);//编辑 + int insertOne(EsRevisePlan esRevisePlan);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/dao/EsRevisePlanLogDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/dao/EsRevisePlanLogDao.java new file mode 100644 index 00000000..fb163b5c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/dao/EsRevisePlanLogDao.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.esRevisePlan.dao; + +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlanLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface EsRevisePlanLogDao extends BaseMapper { + + /** + * 获取当前企标计划的日志 + * @param planId + * @return + */ + List queryLogsByPlanId(@Param("planId") String planId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlan.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlan.java new file mode 100644 index 00000000..06ae6697 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlan.java @@ -0,0 +1,162 @@ +package com.adc.da.slrs.esRevisePlan.entity; + +import java.util.Date; +import java.util.List; + +import com.adc.da.base.page.BasePage; +import com.adc.da.slrs.esMatingRelation.entity.EsMatingRelation; +import com.adc.da.slrs.esStandRelation.entity.EsStandRelation; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.QualityEvaluation; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + + +/** + *

    + * 企标制修订计划 + *

    + * + * @author zcr + * @since 2021-11-14 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="EsRevisePlan对象", description="企标制修订计划") +public class EsRevisePlan extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "企标名称") + private String esName; + + @ApiModelProperty(value = "计划状态") + private String planStatus; + + @ApiModelProperty(value = "制修订状态") + private String reviseStatus; + + @ApiModelProperty(value = "起草人") + private String drafter; + + @ApiModelProperty(value = "评审责任人") + private String resPerson; + + @ApiModelProperty(value = "工作组组长") + private String wgLeader; + + @ApiModelProperty(value = "企标ID") + private String standId; + @ApiModelProperty(value = "实际标准发布时间") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date actualTime; + @ApiModelProperty(value = "企标编号") + @TableField(exist = false) + private String standNumber; + @ApiModelProperty(value = "质量评分") + @TableField(exist = false) + private Double score; + + + @ApiModelProperty(value = "起草人姓名") + @TableField(exist = false) + private String drafterName; + + @ApiModelProperty(value = "评审责任人姓名") + @TableField(exist = false) + private String resPersonName; + + @ApiModelProperty(value = "工作组组长姓名") + @TableField(exist = false) + private String wgLeaderName; + + @ApiModelProperty(value = "计划标准初稿完成时间") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date draftTime; + + @ApiModelProperty(value = "计划标准发布时间") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date releaseTime; + + @ApiModelProperty(value = "起草责任单位ID") + private String unit; + + @ApiModelProperty(value = "起草责任单位名称") + @TableField(exist = false) + private String unitName; + + @ApiModelProperty(value = "引入企业标准json(标准id)") + private String rqbJson; + @ApiModelProperty(value = "引入企业标准json(标准名称)") + @TableField(exist = false) + private String rqbName; + @ApiModelProperty(value = "引入企业标准json(标准编号)") + @TableField(exist = false) + private String rqbCode; + @ApiModelProperty(value = "体系结构树(id存储方式是逗号拼接)") + private String tsJson; + @ApiModelProperty(value = "体系结构树(名称逗号拼接展示)") + @TableField(exist = false) + private String tsJsonName; + @ApiModelProperty(value = "标准范围") + private String area; + @ApiModelProperty(value = "标准范围") + @TableField(exist = false) + private String areaName; + //企标类别 + @TableField(exist = false) + private String standType; + + // 标准编号 + @TableField(exist = false) + private String standNum; + + + @ApiModelProperty(value = "企标类别") + private String esMatingRelations; + private String esStandRelations; + @ApiModelProperty(value = "是否引用标准") + @TableField("is_relate") + private String isRelate; + + @ApiModelProperty(value = "采用程度") + @TableField("use_level") + private String useLevel; + + @TableField(exist = false) + private String useLevelName; + + @ApiModelProperty(value = "简述技术指标依据") + @TableField("technologic") + private String technologic; + + @ApiModelProperty(value = "企标类别") + @TableField("buss_sort") + private String bussSort; + + @TableField(exist = false) + private List planStatusList; + + @ApiModelProperty(value = "立项单") + @TableField("LXD") + private String lxd; + + @TableField(exist = false) + private String standCode; + + @TableField(exist = false) + private String processType; + + @TableField(exist = false) + private String logType; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlanLog.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlanLog.java new file mode 100644 index 00000000..49c2db8b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlanLog.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.esRevisePlan.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@Accessors(chain = true) +@ApiModel(value="EsRevisePlanLog对象", description="企标制修订计划日志") +public class EsRevisePlanLog extends BaseEntity { + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.ID_WORKER_STR) + private String id; + @ApiModelProperty(value = "企标计划id") + private String planId; + @ApiModelProperty(value = "日志内容") + private String content; + @ApiModelProperty(value = "创建时间") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date createTime; + + public EsRevisePlanLog() { + } + + public EsRevisePlanLog(String id, String planId, String content, Date createTime) { + this.id = id; + this.planId = planId; + this.content = content; + this.createTime = createTime; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlanLogForm.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlanLogForm.java new file mode 100644 index 00000000..466a127c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/entity/EsRevisePlanLogForm.java @@ -0,0 +1,12 @@ +package com.adc.da.slrs.esRevisePlan.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class EsRevisePlanLogForm { + + @ApiModelProperty(value = "json") + private String json; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/IEsRevisePlanLogService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/IEsRevisePlanLogService.java new file mode 100644 index 00000000..ce08308d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/IEsRevisePlanLogService.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.esRevisePlan.service; + +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlanLog; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +public interface IEsRevisePlanLogService extends IService { + /** + * 获取当前企标计划的日志 + * @param planId + * @return + */ + List queryLogsByPlanId(String planId); + + /** + * 添加日志 + * @param qbfsForm + */ + void addLog(JSONObject qbfsForm); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/IEsRevisePlanService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/IEsRevisePlanService.java new file mode 100644 index 00000000..6d727bd3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/IEsRevisePlanService.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.esRevisePlan.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 企标制修订计划 服务类 + *

    + * + * @author zcr + * @since 2021-11-14 + */ +public interface IEsRevisePlanService extends IService { + List getAllPlans(EsRevisePlan esRevisePlan);//查询所有 + List queryAllPlans(EsRevisePlan esRevisePlan);//多条件查询 + EsRevisePlan getOnePlan(String id);//查询详情 + + String modPlan(EsRevisePlan esRevisePlan);//编辑 + String modPlanByState(EsRevisePlan esRevisePlan);//编辑 + String modPlanByProcess(EsRevisePlan esRevisePlan);//编辑 + ResponseMessage addPlan(EsRevisePlan esRevisePlan);//插入 + int delPlan(String id);//删除 + int delPlans(String ids);//批量删除 + List getDataByName(EsRevisePlan esRevisePlan); + + List getAllPlansByWk(String esName); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/impl/EsRevisePlanLogServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/impl/EsRevisePlanLogServiceImpl.java new file mode 100644 index 00000000..b86869dd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/impl/EsRevisePlanLogServiceImpl.java @@ -0,0 +1,87 @@ +package com.adc.da.slrs.esRevisePlan.service.impl; + +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.esRevisePlan.dao.EsRevisePlanLogDao; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlanLog; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanLogService; +import com.adc.da.sys.entity.UserEO; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Service +public class EsRevisePlanLogServiceImpl extends ServiceImpl implements IEsRevisePlanLogService { + @Autowired + private EsRevisePlanLogDao esRevisePlanLogDao; + + /** + * 获取当前企标计划的日志 + * @param planId + * @return + */ + @Override + public List queryLogsByPlanId(String planId) { + return esRevisePlanLogDao.queryLogsByPlanId(planId); + } + + /** + * 添加日志 + * @param qbfsForm + */ + @Override + public void addLog(JSONObject qbfsForm) { + if (ObjectUtils.isNotEmpty(qbfsForm.get("type"))) { + String esId = (String) qbfsForm.get("esId"); + String esId1 = (String) qbfsForm.get("esId1"); + String esId2 = (String) qbfsForm.get("esId2"); + String esName = (String) qbfsForm.get("esName"); + Date date = new Date(); + String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); + UserEO userEO= UserUtils.getUser(); + //日志内容 + String msg = userEO.getUname() + " " + now + " "; + switch ((String)qbfsForm.get("type")){ + case "1": + //合并 + String esName1 = (String) qbfsForm.get("esName1"); + String esName2 = (String) qbfsForm.get("esName2"); + msg = msg + "将《" + esName1 + "》和《"+ esName2 +"》合并为《"+ esName +"》,该计划已取消;"; + break; + case "2": + //延期 + String releaseTime = (String) qbfsForm.get("releaseTime"); + String draftTime = (String) qbfsForm.get("draftTime"); + String yqDraftTime = (String) qbfsForm.get("yqDraftTime"); + String yqReleaseTime = (String) qbfsForm.get("yqReleaseTime"); + msg = msg + "延期了《" + esName + "》 , “计划标准初稿完成时间”由“" + draftTime + "”改为“" + yqDraftTime + "”," + + "“计划标准发布时间”由“" + releaseTime + "”改为“" + yqReleaseTime + "”;"; + break; + case "3": + //取消 + msg = msg + "取消了《" + esName + "》;"; + break; + case "4": + //更名 + String renameEs = (String) qbfsForm.get("renameEs"); + msg = msg + "修改了《" + esName + "》 , “企标名称”由“" + esName + "”改为“" + renameEs + "”;"; + break; + } + if (ObjectUtils.isNotEmpty(esId)&&ObjectUtils.isEmpty(esId1)&&ObjectUtils.isEmpty(esId2)) { + esRevisePlanLogDao.insert(new EsRevisePlanLog(null,esId,msg,date)); + } else if (ObjectUtils.isEmpty(esId)&&ObjectUtils.isNotEmpty(esId1)&&ObjectUtils.isNotEmpty(esId2)) { + esRevisePlanLogDao.insert(new EsRevisePlanLog(null,esId1,msg,date)); + esRevisePlanLogDao.insert(new EsRevisePlanLog(null,esId2,msg,date)); + } + + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/impl/EsRevisePlanServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/impl/EsRevisePlanServiceImpl.java new file mode 100644 index 00000000..79bc10ed --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esRevisePlan/service/impl/EsRevisePlanServiceImpl.java @@ -0,0 +1,232 @@ +package com.adc.da.slrs.esRevisePlan.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.esMatingRelation.entity.EsMatingRelation; +import com.adc.da.slrs.esMatingRelation.service.IEsMatingRelationService; +import com.adc.da.slrs.esRevisePlan.dao.EsRevisePlanLogDao; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlan; +import com.adc.da.slrs.esRevisePlan.dao.EsRevisePlanDao; +import com.adc.da.slrs.esRevisePlan.entity.EsRevisePlanLog; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanLogService; +import com.adc.da.slrs.esRevisePlan.service.IEsRevisePlanService; +import com.adc.da.slrs.esStandRelation.entity.EsStandRelation; +import com.adc.da.slrs.esStandRelation.service.IEsStandRelationService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.util.UUIDUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.JsonObject; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

    + * 企标制修订计划 服务实现类 + *

    + * + * @author zcr + * @since 2021-11-14 + */ +@Service +public class EsRevisePlanServiceImpl extends ServiceImpl implements IEsRevisePlanService { + + @Autowired + EsRevisePlanDao esRevisePlanDao; + @Autowired + IEsRevisePlanService esRevisePlanService; + @Autowired + IEsMatingRelationService esMatingRelationService; + @Autowired + IEsStandRelationService esStandRelationService; + @Autowired + private ISarBussionessStandService iSarBussionessStandService; + @Autowired + private EsRevisePlanLogDao esRevisePlanLogDao; + + @Autowired + private IEsRevisePlanLogService esRevisePlanLogService; + + + @Override + public List getAllPlans(EsRevisePlan esRevisePlan) { + Integer count = esRevisePlanDao.getTotal(); + esRevisePlan.getPager().setRowCount(count); + List esRevisePlans = esRevisePlanDao.selectAll(esRevisePlan); + return esRevisePlans; + } + + @Override + public List queryAllPlans(EsRevisePlan esRevisePlan) { + if(StringUtils.isNotBlank(esRevisePlan.getPlanStatus())){ + List list= Arrays.stream(esRevisePlan.getPlanStatus().split(",")).map(String::trim).collect(Collectors.toList()); + esRevisePlan.setPlanStatusList(list); + } + Integer count = esRevisePlanDao.getQueryTotal(esRevisePlan); + esRevisePlan.getPager().setRowCount(count); + List esRevisePlans = esRevisePlanDao.queryAll(esRevisePlan); + return esRevisePlans; + } + + @Override + public EsRevisePlan getOnePlan(String id) { + return esRevisePlanDao.selectOne(id); + } + + @Override + public String modPlan(EsRevisePlan esRevisePlan) { + List esRevisePlans=esRevisePlanDao.selectPageByName(esRevisePlan); + if (esRevisePlans.size()>0){ + return "企标名称不能重复,请更换新的企标名称。"; + }else { + esRevisePlanDao.updateById(esRevisePlan); + return "操作成功"; + } + } + + @Override + public String modPlanByProcess(EsRevisePlan esRevisePlan) { + esRevisePlanDao.updateById(esRevisePlan); + return "操作成功"; + } + + @Override + public String modPlanByState(EsRevisePlan esRevisePlan) { + // 更新 企标库 制修订状态 + if(StringUtils.isNotBlank(esRevisePlan.getStandCode())){ + List list= Arrays.stream(esRevisePlan.getStandCode().split(",")).map(String::trim).collect(Collectors.toList()); + if(!list.isEmpty()){ + QueryWrapper qw = new QueryWrapper(); + qw.in("STAND_CODE",list); + List standList = iSarBussionessStandService.list(qw); + standList.forEach(stand -> { + if(StringUtils.isBlank(esRevisePlan.getPlanStatus()) || !"4".equals(esRevisePlan.getPlanStatus())){ + if("1".equals(esRevisePlan.getReviseStatus())){ + stand.setRevisionStatus(esRevisePlan.getProcessType()+"_"+"1"); + }else if("2".equals(esRevisePlan.getReviseStatus())){ + stand.setRevisionStatus(esRevisePlan.getProcessType()+"_"+"2"); + }else if("3".equals(esRevisePlan.getReviseStatus())){ + stand.setRevisionStatus(esRevisePlan.getProcessType()+"_"+"3"); + } + }else{ + stand.setRevisionStatus(esRevisePlan.getProcessType()+"_"+"4"); + } + }); + if(!standList.isEmpty()){ + iSarBussionessStandService.updateBatchById(standList); + } + } + } + + // 技术标准 更新计划库 + if(StringUtils.isNotBlank(esRevisePlan.getId())){ + EsRevisePlan upd = new EsRevisePlan(); + upd.setId(esRevisePlan.getId()); + String reviseStatus = ""; + if(StringUtils.isNotBlank(esRevisePlan.getReviseStatus())){ + if(esRevisePlan.getReviseStatus().contains("_")){ + reviseStatus = esRevisePlan.getReviseStatus().split("_")[1]; + }else { + reviseStatus = esRevisePlan.getReviseStatus(); + } + } + if(StringUtils.isBlank(esRevisePlan.getPlanStatus()) || !"4".equals(esRevisePlan.getPlanStatus())){ + esRevisePlan.setReviseStatus(reviseStatus); + if("1".equals(esRevisePlan.getReviseStatus())){ + upd.setPlanStatus("1"); + }else if("2".equals(esRevisePlan.getReviseStatus())){ + upd.setPlanStatus("2"); + }else if("3".equals(esRevisePlan.getReviseStatus())){ + upd.setPlanStatus("3"); + } + }else if ("4".equals(esRevisePlan.getPlanStatus())){ + upd.setPlanStatus("4"); + upd.setStandId(esRevisePlan.getStandId()); + upd.setActualTime(new Date()); + } + esRevisePlanDao.updateById(upd); + } + return "操作成功"; + } + + @Override + public ResponseMessage addPlan(EsRevisePlan esRevisePlan) { + esRevisePlan.setId(UUIDUtils.randomUUID(32)); + List esRevisePlans=esRevisePlanDao.selectPageByName(esRevisePlan); + if (esRevisePlans.size()>0){ + return Result.success("企标名称不能重复,请更换新的企标名称"); + }else { + esRevisePlanDao.insertOne(esRevisePlan); + //加日志 + String esName = esRevisePlan.getEsName(); + String id = esRevisePlan.getId(); + Date date = new Date(); + String msg; + if ("复审".equals(esRevisePlan.getLogType())) { + msg = UserUtils.getUser().getUname() + " " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date) + " " + +"通过复审流程创建了《"+ esName +"》,其复审结果为修订。"; + } else { + msg = UserUtils.getUser().getUname() + " " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date) + " " + +"创建了《"+ esName +"》"; + } + esRevisePlanLogDao.insert(new EsRevisePlanLog(null,id,msg,date)); + return Result.success("200", esRevisePlan.getId(), "操作成功"); + } + } + + @Override + public int delPlan(String id) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("es_id",id); + esMatingRelationService.remove(queryWrapper); + QueryWrapper queryWrapper1=new QueryWrapper<>(); + queryWrapper1.eq("es_id",id); + esStandRelationService.remove(queryWrapper1); + return esRevisePlanDao.deleteOne(id); + } + + @Override + public int delPlans(String ids) { + String[] str = ids.split(","); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.in("es_id",str); + esMatingRelationService.remove(queryWrapper); + + QueryWrapper queryWrapper1=new QueryWrapper<>(); + queryWrapper1.in("es_id",str); + esStandRelationService.remove(queryWrapper1); + + return esRevisePlanDao.deleteBatch(str); + } + + @Override + public List getDataByName(EsRevisePlan esRevisePlan) { + return esRevisePlanDao.selectPageByName(esRevisePlan); + } + + @Override + public List getAllPlansByWk(String esName) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + if (StringUtils.isNotBlank(esName)) { + queryWrapper.lambda().eq(EsRevisePlan::getEsName, esName); + } else { + List planStatus = new ArrayList<>(); + planStatus.add("1"); + planStatus.add("2"); + queryWrapper.lambda().in(EsRevisePlan::getPlanStatus, planStatus); + } + + return esRevisePlanDao.selectList(queryWrapper); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/controller/EsStandRelationController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/controller/EsStandRelationController.java new file mode 100644 index 00000000..72909ddb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/controller/EsStandRelationController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.esStandRelation.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.esStandRelation.entity.EsStandRelation; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author yzh +* @since 2021-12-24 +*/ +@RestController +@Api(description = "|EsStandRelation|") +@RequestMapping("/esStandRelation/es-stand-relation") +public class EsStandRelationController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/dao/EsStandRelationDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/dao/EsStandRelationDao.java new file mode 100644 index 00000000..2744748e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/dao/EsStandRelationDao.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.esStandRelation.dao; + +import com.adc.da.slrs.esStandRelation.entity.EsStandRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author yzh + * @since 2021-12-24 + */ +public interface EsStandRelationDao extends BaseMapper { + List getDatasOld(@Param("id")String id); + List getDatas(@Param("id")String id); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/entity/EsStandRelation.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/entity/EsStandRelation.java new file mode 100644 index 00000000..d81ee237 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/entity/EsStandRelation.java @@ -0,0 +1,57 @@ +package com.adc.da.slrs.esStandRelation.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.beans.factory.annotation.Autowired; + +/** + *

    + * + *

    + * + * @author yzh + * @since 2021-12-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="EsStandRelation对象", description="") +public class EsStandRelation extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableField("id") + private String id; + + @ApiModelProperty(value = "企标制修订计划") + @TableField("es_id") + private String esId; + + @ApiModelProperty(value = "是否引用标准") + @TableField("is_relate") + private String isRelate; + + @ApiModelProperty(value = "采用程度") + @TableField("use_level") + private String useLevel; + + @ApiModelProperty(value = "采用程度名称") + @TableField(exist = false) + private String useLevelName; + + @ApiModelProperty(value = "简述技术指标依据") + @TableField("technologic") + private String technologic; + + @ApiModelProperty(value = "采标id") + @TableField("stand_id") + private String standId; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/service/IEsStandRelationService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/service/IEsStandRelationService.java new file mode 100644 index 00000000..f7625e30 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/service/IEsStandRelationService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.esStandRelation.service; + +import com.adc.da.slrs.esStandRelation.entity.EsStandRelation; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author yzh + * @since 2021-12-24 + */ +public interface IEsStandRelationService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/service/impl/EsStandRelationServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/service/impl/EsStandRelationServiceImpl.java new file mode 100644 index 00000000..70d05dbe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/esStandRelation/service/impl/EsStandRelationServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.esStandRelation.service.impl; + +import com.adc.da.slrs.esStandRelation.entity.EsStandRelation; +import com.adc.da.slrs.esStandRelation.dao.EsStandRelationDao; +import com.adc.da.slrs.esStandRelation.service.IEsStandRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author yzh + * @since 2021-12-24 + */ +@Service +public class EsStandRelationServiceImpl extends ServiceImpl implements IEsStandRelationService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/controller/FileMaterialController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/controller/FileMaterialController.java new file mode 100644 index 00000000..c6f5fa2b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/controller/FileMaterialController.java @@ -0,0 +1,131 @@ +package com.adc.da.slrs.fileMaterialCenter.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.fileMaterialCenter.entity.FileMaterialPage; +import com.adc.da.slrs.fileMaterialCenter.service.IFileMaterialService; +import com.adc.da.slrs.zlTree.dao.ZlTreeDataDao; +import com.adc.da.slrs.zlTree.entity.ZlTreeData; +import com.adc.da.slrs.zlTree.service.IZlTreeDataService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.fileMaterialCenter.entity.FileMaterial; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.xml.crypto.Data; +import java.lang.reflect.Array; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author zhaokaiyao +* @since 2021-12-14 +*/ +@RestController +@Api(description = "资料中心") +@RequestMapping("/${restPath}/fileMaterialCenter/file-material") +public class FileMaterialController extends BaseController { + + @Autowired + IFileMaterialService iFileMaterialService; + + @Autowired + IZlTreeDataService iZlTreeService; + + @Autowired + ZlTreeDataDao zlTreeDataDao; + + @PostMapping + @ApiOperation("新增文件资料组") + public ResponseMessage addFileMaterial(@RequestBody FileMaterial material){ + + +// Date date = new Date(); +// String strDateFormat = "yyyy-MM-dd HH:mm:ss"; +// SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); + material.setId(UUIDUtils.randomUUID20()); + material.setDataUploadTime(new Date()); + material.setDelFlag("0"); + + ZlTreeData zlTreeData=new ZlTreeData(); + zlTreeData.setId(material.getTreeId()); + zlTreeData.setDataId(material.getId()); + iZlTreeService.save(zlTreeData); + + boolean save = iFileMaterialService.save(material); + + return Result.success(save); + } + + + @DeleteMapping + @ApiOperation("删除文件资料组") + public ResponseMessage deleteMaterial(String id){ + List idList = Arrays.asList(id.split(",")); + boolean b = iFileMaterialService.removeByIds(idList); + if (null!= idList && idList.size()>0) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("data_id", idList); + iZlTreeService.remove(wrapper); + } + return Result.success(b); + + } + + + @GetMapping + @ApiOperation("查询文件资料组") + public ResponseMessage> getFileMaterial(FileMaterialPage queryPage){ + IPage fileMaterial = iFileMaterialService.getFileMaterial(queryPage); + + return Result.success(fileMaterial); + } + + @GetMapping("/getFileMaterialIndex") + @ApiOperation("首页-查询前十条文件资料组") + public ResponseMessage> getFileMaterialIndex(String userId){ + List fileMaterial = iFileMaterialService.getFileMaterialIndex(userId); + + return Result.success(fileMaterial); + } + + + @PutMapping + @ApiOperation("修改文件资料组") + public ResponseMessage updateFileMaterial(@RequestBody FileMaterial fileMaterial){ + boolean b = iFileMaterialService.updateById(fileMaterial); + zlTreeDataDao.updateZT(fileMaterial.getTreeId(),fileMaterial.getId()); + return Result.success(b); + } + + + @GetMapping("/type") + @ApiOperation("获取类型") + public ResponseMessage> getFileMaterialType(){ + List fileMaterialType = iFileMaterialService.getFileMaterialType(); + + return Result.success(fileMaterialType); + } + + @PutMapping("/topping") + @ApiModelProperty("置顶") + public ResponseMessage topping(String id){ + int topping = iFileMaterialService.topping(id); + + return Result.success(topping); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/dao/FileMaterialDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/dao/FileMaterialDao.java new file mode 100644 index 00000000..657fbf44 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/dao/FileMaterialDao.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.fileMaterialCenter.dao; + +import com.adc.da.slrs.fileMaterialCenter.entity.FileMaterial; +import com.adc.da.slrs.fileMaterialCenter.entity.FileMaterialPage; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +public interface FileMaterialDao extends BaseMapper { + + + int topping(@Param("id") String id); + + + IPage getFileMaterialPage(IPage page, @Param("flieM") FileMaterialPage fileMaterialPage); + + List getFileMaterialIndex(@Param("treeIdList") List treeIdList); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/entity/FileMaterial.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/entity/FileMaterial.java new file mode 100644 index 00000000..d7b923a8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/entity/FileMaterial.java @@ -0,0 +1,81 @@ +package com.adc.da.slrs.fileMaterialCenter.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.Tag; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="FileMaterial对象", description="") +public class FileMaterial extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "类型") + @TableField("data_type") + private String dataType; + + @ApiModelProperty(value = "标题") + @TableField("data_title") + private String dataTitle; + + @ApiModelProperty(value = "上传时间") + @TableField("data_upload_time") + private Date dataUploadTime; + + @ApiModelProperty(value = "文件id") + @TableField("attach_file_id") + private String attachFileId; + + @ApiModelProperty(value = "资料说明") + @TableField("data_explain") + private String dataExplain; + + + @ApiModelProperty(value = "点击量") + @TableField("click_count") + private Integer clickCount; + + + @ApiModelProperty(value = "置顶") + @TableField("is_top") + private Integer isTop; + + @ApiModelProperty(value = "删除标志") + @TableLogic(value = "0",delval = "1") + private String delFlag; + + @ApiModelProperty(value = "删除标志") + @TableField("is_show") + private String isShow; + + @ApiModelProperty(value = "树id") + @TableField(exist = false) + private String treeId; + + @TableField(exist = false) + private String treeName; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/entity/FileMaterialPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/entity/FileMaterialPage.java new file mode 100644 index 00000000..35df3189 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/entity/FileMaterialPage.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.fileMaterialCenter.entity; + +import lombok.Data; + +import java.util.List; + +/** + * @author zhaokaiyao + */ +@Data +public class FileMaterialPage { + + private String id; + + private String dataTitle; + + private String dataType; + + private String startDataUploadTime; + + private String endDataUploadTime; + + private String treeId; + + + private Integer page; + + private Integer pageSize; + + private List treeIdList; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/service/IFileMaterialService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/service/IFileMaterialService.java new file mode 100644 index 00000000..fbfbf27c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/service/IFileMaterialService.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.fileMaterialCenter.service; + +import com.adc.da.slrs.fileMaterialCenter.entity.FileMaterial; +import com.adc.da.slrs.fileMaterialCenter.entity.FileMaterialPage; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import javafx.scene.paint.Material; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +public interface IFileMaterialService extends IService { + + + /** + * 查询文件资料组 + * @param queryPage + * @return + */ + IPage getFileMaterial(FileMaterialPage queryPage); + + /** + * 首页-查询前十条文件资料组 + * @param userId + * @return + */ + List getFileMaterialIndex(String userId); + + + /** + * 获取类型 + * @return + */ + List getFileMaterialType(); + + /** + * 置顶 + * @param id + * @return + */ + int topping(String id); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/service/impl/FileMaterialServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/service/impl/FileMaterialServiceImpl.java new file mode 100644 index 00000000..49f72ee1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/fileMaterialCenter/service/impl/FileMaterialServiceImpl.java @@ -0,0 +1,133 @@ +package com.adc.da.slrs.fileMaterialCenter.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.fileMaterialCenter.entity.FileMaterial; +import com.adc.da.slrs.fileMaterialCenter.dao.FileMaterialDao; +import com.adc.da.slrs.fileMaterialCenter.entity.FileMaterialPage; +import com.adc.da.slrs.fileMaterialCenter.service.IFileMaterialService; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarUser.dao.TsUserDao; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.slrs.tsRoleMeunData.entity.TsRoleMenuData; +import com.adc.da.slrs.tsRoleMeunData.service.ITsRoleMenuDataService; +import com.adc.da.slrs.zlTree.service.IZlTreeService; +import com.adc.da.util.LoginUserUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.management.Query; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +@Service +public class FileMaterialServiceImpl extends ServiceImpl implements IFileMaterialService { + + @Autowired + FileMaterialDao fileMaterialDao; + @Autowired + private TsUserDao tsUserDao; + @Autowired + private ITsPositionService tsPositionService; + @Autowired + private ITsRoleMenuDataService iTsRoleMenuDataService; + @Autowired + private IZlTreeService zlTreeService; + + + @Override + public IPage getFileMaterial(FileMaterialPage queryPage) { + IPage page=null; + if (queryPage.getPage()==null || queryPage .getPageSize()==null){ + page=new Page<>(1,1); + }else { + page=new Page<>(queryPage.getPage(),queryPage.getPageSize()); + } + + // 获取当前登录人 + String loginUserId = LoginUserUtil.getUserId(); + + List positionIds = tsUserDao.selectPositionIds(loginUserId); + List roleIds = tsPositionService.getRoleIdsByPositionIds(positionIds); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("ROLE_ID", roleIds); + List tsRoleMenuData = iTsRoleMenuDataService.list(wrapper); + List treeIdList = tsRoleMenuData.stream().map(TsRoleMenuData::getMenuId).distinct().collect(Collectors.toList()); + if (CollectionUtils.isEmpty(treeIdList)) { + return null; + } + if(StringUtils.isEmpty(queryPage.getTreeId())) { + queryPage.setTreeIdList(treeIdList); + } else { + //通过当前treeId查询该节点及下级节点的全部数据 + List treeIds = new ArrayList<>(); + zlTreeService.subordinateTreeNodes(treeIds, queryPage.getTreeId()); + if (ObjectUtils.isEmpty(treeIds)) { + return null; + } + // 查看菜单是否有数据权限 + treeIds = treeIds.stream().filter(treeId -> treeIdList.contains(treeId)).collect(Collectors.toList()); + if (ObjectUtils.isEmpty(treeIds)) { + return null; + } + queryPage.setTreeIdList(treeIds); + } + queryPage.setTreeId(null); + IPage fileMaterialPage = fileMaterialDao.getFileMaterialPage(page, queryPage); + if (ObjectUtils.isNotEmpty(queryPage.getDataType())) { + List fileMaterials = fileMaterialPage.getRecords().stream().filter(fileMaterial -> fileMaterial.getDataType().equals(queryPage.getDataType())).collect(Collectors.toList()); + fileMaterialPage.setRecords(fileMaterials); + fileMaterialPage.setTotal(fileMaterials.size()); + } + return fileMaterialPage; + } + + @Override + public List getFileMaterialIndex(String userId) { + if (StringUtils.isBlank(userId)) { + // 获取当前登录人 + userId = LoginUserUtil.getUserId(); + } + + List positionIds = tsUserDao.selectPositionIds(userId); + List roleIds = tsPositionService.getRoleIdsByPositionIds(positionIds); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("ROLE_ID", roleIds); + List tsRoleMenuData = iTsRoleMenuDataService.list(wrapper); + List treeIdList = tsRoleMenuData.stream().map(TsRoleMenuData::getMenuId).distinct().collect(Collectors.toList()); + if (CollectionUtils.isEmpty(treeIdList)) { + return null; + } + + return fileMaterialDao.getFileMaterialIndex(treeIdList); + } + + @Override + public List getFileMaterialType() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + queryWrapper.select("DISTINCT data_type"); + return this.listObjs(queryWrapper, item -> item.toString()); + } + + @Override + public int topping(String id) { + return fileMaterialDao.topping(id); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/common/ReadExcel.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/common/ReadExcel.java new file mode 100644 index 00000000..33447bba --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/common/ReadExcel.java @@ -0,0 +1,176 @@ +package com.adc.da.slrs.msgDynamicInfo.common; + +import com.adc.da.common.WDWUtil; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; + +/** + * @des : excel信息读取 + * @author: duyunbao + * @email: 1114808306@qq.com + * @date 2017/10/27 17:06 + **/ +public class ReadExcel { + private static final Logger logger = LoggerFactory.getLogger(ReadExcel.class); + + /** + * 总行数 + */ + private int totalRows = 0; + /** + * 总条数 + */ + private int totalCells = 0; + /** + * 错误信息接收器 + */ + private String errorMsg; + + public ReadExcel() { + // 不做操作 + } + + public int getTotalRows() { + return totalRows; + } + + public int getTotalCells() { + return totalCells; + } + + public String getErrorInfo() {//获取错误信息 + return errorMsg; + } + + /** + * @method_name: validateExcel + * @des : 验证excel格式 + * @author: duyunbao + * @param: [filePath] + * @return: boolean + * @date: 2017/10/27 17:07 + **/ + public boolean validateExcel(String filePath) { + if (filePath == null || !(WDWUtil.isExcel2003(filePath) || WDWUtil.isExcel2007(filePath))) { + errorMsg = "文件名不是excel格式"; + return false; + } + return true; + } + + /** + * @method_name: getExcelInfo + * @des : 读EXCEL文件,获取信息集合 + * @author: duyunbao + * @param: [fileName, Mfile] + * @return: org.apache.poi.ss.usermodel.Workbook + * @date: 2017/10/27 17:08 + **/ + public Workbook getExcelInfo(String fileName, MultipartFile Mfile) { + Workbook wb = null; + //把spring文件上传的MultipartFile转换成CommonsMultipartFile类型 + CommonsMultipartFile cf = (CommonsMultipartFile) Mfile; //获取本地存储路径 + //初始化输入流 + InputStream is = null; + try { + //根据文件名判断文件是2003版本还是2007版本 + boolean isExcel2003 = true; + if (WDWUtil.isExcel2007(fileName)) { + isExcel2003 = false; + } + is = cf.getInputStream(); + //根据excel里面的内容读取客户信息 + wb = getExcelInfo(is, isExcel2003, wb); + is.close(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + is = null; + logger.error(e.getMessage(),e); + } + } + } + return wb; + } + + /*** + * @method_name: getExcelInfo + * @des : 判断excel版本 + * @author: duyunbao + * @param: [is, isExcel2003, wb] + * @return: org.apache.poi.ss.usermodel.Workbook + * @date: 2017/10/27 17:08 + **/ + private Workbook getExcelInfo(InputStream is, boolean isExcel2003, Workbook wb) { + Workbook workbook =wb; + try { + /** 根据版本选择创建Workbook的方式 */ + //当excel是2003时 + if (isExcel2003) { + workbook = new HSSFWorkbook(is); + } else {//当excel是2007时 + workbook = new XSSFWorkbook(is); + } + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + return workbook; + } + + /** + * 获取sheet的名称 + * @MethodName:getSheetName + * @author: 马晓晨 + * @email: 747052172@qq.com + * @date 2017年11月24日 上午9:49:22 + * @version V1.0 + * @param filename + * @param file + * @param sheetIndex + * @return + */ + public String getSheetName(String filename, MultipartFile file, Integer sheetIndex) { + Workbook wb = getExcelInfo(filename, file); + return wb.getSheetName(sheetIndex); + } + + /** + * + * @Title: encodeFileName + * @Description: 导出文件转换文件名称编码 + * @param @param fileNames + * @param @param request + * @param @return 设定文件 + * @return String 返回类型 + * @throws + */ + public static String encodeFileName(String fileNames ,HttpServletRequest request) { + try { + String agent = request.getHeader("User-Agent"); + if (agent.contains("Firefox")) { + fileNames = new String(fileNames.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器 + } else { + fileNames = URLEncoder.encode(fileNames, "utf-8"); + //谷歌中空格变为+问题 + fileNames = fileNames.replaceAll("\\+","%20"); + } + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return fileNames ; + } +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/controller/MsgDynamicInfoEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/controller/MsgDynamicInfoEOController.java new file mode 100644 index 00000000..3188d934 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/controller/MsgDynamicInfoEOController.java @@ -0,0 +1,355 @@ +package com.adc.da.slrs.msgDynamicInfo.controller; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.base.web.BaseController; +import com.adc.da.excel.poi.excel.ExcelExportUtil; +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.msgDynamicInfo.dto.MsgDynamicInfoExportDto; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgDynamicInfoEO; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgFileEO; +import com.adc.da.slrs.msgDynamicInfo.page.MsgDynamicInfoEOPage; +import com.adc.da.slrs.msgDynamicInfo.page.MsgFileEOPage; +import com.adc.da.slrs.msgDynamicInfo.service.IMsgDynamicInfoEOService; + +import com.adc.da.slrs.msgDynamicInfo.service.IMsgFileEOService; +import com.adc.da.slrs.msgDynamicInfo.vo.MsgDynamicInfoVO; +import com.adc.da.slrs.msgDynamicInfo.vo.RecommendVO; +import com.adc.da.login.util.UserUtils; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.sys.constant.ValidFlagEnum; +import com.adc.da.sys.service.IUserEOService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.ResponseMessageCodeEnum; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.BeanMapper; +import com.adc.da.util.utils.StringUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotNull; +import java.io.IOException; +import java.io.OutputStream; +import java.sql.SQLException; +import java.sql.Wrapper; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; + +@RestController +@RequestMapping("/${restPath}/lawss/msgDynamicInfo") +@Api(description = "|MsgDynamicInfoEO|") +public class MsgDynamicInfoEOController extends BaseController{ + + private static final Logger logger = LoggerFactory.getLogger(MsgDynamicInfoEOController.class); + + @Autowired + private IMsgDynamicInfoEOService msgDynamicInfoEOService; + + @Autowired + private IUserEOService userEOService; + + @Autowired + BeanMapper beanMapper; + + @Autowired + private IMsgFileEOService msgFileEOService; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private IAttFileEOService attFileEOService; + +/** + * @Author liwenxuan + * @Description 分页查询动态信息表信息 + * @Date Administrator 2018/9/17 + * @Param [pageNo, pageSize] + * @return com.adc.da.util.http.ResponseMessage> + **/ + @ApiOperation(value = "|MsgDynamicInfoEO|分页查询") + @GetMapping("/page") +// @RequiresPermissions("lawss:msgDynamicInfo:page") + public ResponseMessage> page(MsgDynamicInfoEOPage page) throws Exception { + if(StringUtils.isNotEmpty(page.getTitle())){ + page.setTitle("%"+page.getTitle()+"%"); + page.setTitleOperator("LIKE"); + } +// page.getPager().setOrderDirection(false); +// page.getPager().setOrderField("MSG_DYNAMIC_INFO.pub_time"); + page.setOrderBy("MSG_DYNAMIC_INFO.pub_time desc,MSG_DYNAMIC_INFO.id"); + List rows = msgDynamicInfoEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|MsgDynamicInfoEO|动态信息管理分页查询") + @GetMapping("/queryAllByPage") +// @RequiresPermissions("lawss:msgDynamicInfo:page") + public ResponseMessage> queryByPage(MsgDynamicInfoEOPage page) throws Exception { + if(StringUtils.isNotEmpty(page.getTitle())){ + page.setTitle("%"+page.getTitle()+"%"); + page.setTitleOperator("LIKE"); + } +// page.getPager().setOrderDirection(false); +// page.getPager().setOrderField("MSG_DYNAMIC_INFO.pub_time"); + page.setOrderBy("MSG_DYNAMIC_INFO.pub_time desc,MSG_DYNAMIC_INFO.id"); + List rows = msgDynamicInfoEOService.queryAllByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } +/** + * @Author liwenxuan + * @Description + * @Date Administrator 2018/9/17 + * @Param [page] + * @return com.adc.da.util.http.ResponseMessage> + **/ + @ApiOperation(value = "|MsgDynamicInfoEO|查询") + @GetMapping("") +// @RequiresPermissions("lawss:msgDynamicInfo:list") + public ResponseMessage> list(MsgDynamicInfoEOPage page) throws Exception { + return Result.success(msgDynamicInfoEOService.queryByList(page)); + } + + @ApiOperation(value = "|MsgDynamicInfoEO|详情") + @GetMapping("/{id}") +// @RequiresPermissions("lawss:msgDynamicInfo:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + // 此处需要增加查询相关参数信息ww + + MsgDynamicInfoEO msgDynamicInfoEO= msgDynamicInfoEOService.getById(id); + MsgDynamicInfoVO msgDynamicInfoVO= beanMapper.map(msgDynamicInfoEO, MsgDynamicInfoVO.class); + MsgFileEOPage fileEOPage=new MsgFileEOPage(); + fileEOPage.setMsgId(id); + fileEOPage.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()+""); + List fileList= msgFileEOService.queryByList(fileEOPage); + if(fileList!=null && !fileList.isEmpty()){ + List fileEOS=new ArrayList(); + for(MsgFileEO f:fileList){ + if(f.getFileType().equals("PIC")){ + msgDynamicInfoVO.setPicFileEO(f); + }else{ + fileEOS.add(f); + } + } + if(!fileEOS.isEmpty()){ + msgDynamicInfoVO.setMsgFileEOList(fileEOS); + } + } + return Result.success(msgDynamicInfoVO); + } +/** + * @Author liwenxuan + * @Description 新增动态信息表和新增动态信息附件表 + * 先根据需求判断一些字段不能为空,先新增动态信息表然后生成动态信息数据id,把此id作为新增动态信息附件表中消息id字段新增到动态信息附件表 + * 调用附件存入动态信息id/文件名称/文件后缀/文件ID + * 文件对象private List msgFileEOList = new ArrayList<>(); + * 根据isPicMsg字段判断传入的是否为图片 private MsgFileEO picFileEO = new MsgFileEO(); + * @Date Administrator 2018/9/17 + * @Param [msgDynamicInfoVO] + * @return com.adc.da.util.http.ResponseMessage + **/ + @ApiOperation(value = "|MsgDynamicInfoEO|新增") + @PostMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + @RequiresPermissions("lawss:msgDynamicInfo:save") + public ResponseMessage create(@RequestBody MsgDynamicInfoVO msgDynamicInfoVO) throws Exception { +// 发布人和发布组织在数据库中需要存入的是他们对应的id +// MsgDynamicInfoEO msgDynamicInfoEO= beanMapper.map(msgDynamicInfoVO, MsgDynamicInfoEO.class); +// msgDynamicInfoVO.setContent(msgDynamicInfoVO.getContent().replace("^#^","%")); +// msgDynamicInfoVO.setContentText(msgDynamicInfoVO.getContentText().replace("^#^","%")); + String msgId= msgDynamicInfoEOService.saveMsgInfo(msgDynamicInfoVO); + return Result.success(ResponseMessageCodeEnum.SUCCESS.getCode(),"保存成功",msgId); + } + /** + * @Author liwenxuan + * @Description + * 1.修改动态信息表 + * 2.修改动态信息附件表 + * + * @Date Administrator 2018/9/17 + * @Param [msgDynamicInfoVO] + * @return com.adc.da.util.http.ResponseMessage + **/ + @ApiOperation(value = "|MsgDynamicInfoEO|修改") + @PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + @RequiresPermissions("lawss:msgDynamicInfo:update") + public ResponseMessage update(@RequestBody MsgDynamicInfoVO msgDynamicInfoVO) throws Exception { +// msgDynamicInfoVO.setContent(msgDynamicInfoVO.getContent().replace("^#^","%")); +// msgDynamicInfoVO.setContentText(msgDynamicInfoVO.getContentText().replace("^#^","%")); + msgDynamicInfoEOService.updateMsgInfo(msgDynamicInfoVO); + return Result.success(ResponseMessageCodeEnum.SUCCESS.getCode(),"保存成功",null); + } +/** + * @Author liwenxuan + * @Description 删除动态信息表信息(设置valid_flag=1) + * @Date Administrator 2018/9/17 + * @Param [id] + * @return com.adc.da.util.http.ResponseMessage + **/ +/* @ApiOperation(value = "|MsgDynamicInfoEO|删除") + @DeleteMapping("/{id}") +// @RequiresPermissions("lawss:msgDynamicInfo:delete") + public ResponseMessage delete(@PathVariable String id) throws Exception { + msgDynamicInfoEOService.deleteByPrimaryKey(id); + logger.info("delete from MSG_DYNAMIC_INFO where id = {}", id); + return Result.success(); + }*/ + + + @ApiOperation(value = "|MsgDynamicInfoEO|删除") + @DeleteMapping("/{ids}") + @RequiresPermissions("lawss:msgDynamicInfo:deleteMsgList") + public ResponseMessage deleteMsgList(@NotNull @PathVariable("ids") String[] ids) throws Exception { + msgDynamicInfoEOService.deleteLogicInBatch(Arrays.asList(ids)); +// msgDynamicInfoEOService.deleteByPrimaryKey(id); +// logger.info("delete from MSG_DYNAMIC_INFO where id = {}", id); + return Result.success(); + } + /** + * @Author yangxuenan + * @Description 根据id查询详细信息 + * Date 2018/10/10 11:28 + * @Param [id] + * @return com.adc.da.util.http.ResponseMessage + **/ + @ApiOperation(value = "|MsgDynamicInfoEO|根据id查询详细信息") + @GetMapping("/selectByMsgId") + public ResponseMessage selectByMsgId(String id){ + MsgDynamicInfoEO result = msgDynamicInfoEOService.selectByMsgId(id); + if(result != null){ + String collectId = personCollectEOService.queryCollectByUserAndId(id); + result.setCollectId(collectId); + return Result.success(result); + } else { + return Result.error("无法找到该条信息详情!"); + } + + } + + + /** + * @Author yangxuenan + * @Description 获取新闻图片 + * Date 2018/10/22 12:56 + * @Param [page] + * @return com.adc.da.util.http.ResponseMessage> + **/ + @ApiOperation(value = "|MsgDynamicInfoEO|查询图片") + @GetMapping("/queryNewsPic") + // @RequiresPermissions("lawss:msgDynamicInfo:queryNewsPic") + public ResponseMessage> queryNewsPic(MsgDynamicInfoEOPage page) throws Exception { + page.setIsPicMsg(ValidFlagEnum.VALID_TRUE.getValue()+""); + page.setOrderBy("MSG_DYNAMIC_INFO.pub_time desc"); + List rows = msgDynamicInfoEOService.queryByPage(page); + if(rows != null && rows.size()>0){ + for(MsgDynamicInfoEO row : rows){ + if(StringUtils.isNotEmpty(row.getAttPicIds())){ + String attIds[] = row.getAttPicIds().split(","); + List paths = new ArrayList<>(); + for(int i=0;i> selectRecommendStand(MsgDynamicInfoEOPage page) throws Exception { + MsgDynamicInfoEO sarStandardsInfoEO = msgDynamicInfoEOService.getById(page.getId()); + MsgDynamicInfoEOPage pagenew = new MsgDynamicInfoEOPage(); + if(StringUtils.isNotEmpty(sarStandardsInfoEO.getMsgType())) { + pagenew.setMsgType(sarStandardsInfoEO.getMsgType()); + } + List resultlist = msgDynamicInfoEOService.selectRecommendMsgDynamicInfo(pagenew); + return Result.success(resultlist); + } + + + /** + * 将查询出来的数据导出到EXCEL表格中 + * @param idList 导出信息 + * @return + * @author gaoyan + * date 2018-11-22 + */ + @ApiOperation(value = "|SysCorpEO|导出excel") + @GetMapping(value = "/exportMsgDynamicInfoExcel") + public void exportMsgDynamicInfoExcel(String idList, String exportName, HttpServletResponse response, HttpServletRequest request) { + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="动态信息"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + MsgDynamicInfoEOPage page = new MsgDynamicInfoEOPage(); + page.setIdList(idList.split(",")); + List datas = msgDynamicInfoEOService.getMsgDynamicInfoForExport(page); + workbook = ExcelExportUtil.exportExcel(exportParams, MsgDynamicInfoExportDto.class, datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|MsgDynamicInfoEO|当前角色是否有数据权限") + @GetMapping(value = "/showDetailsByRole") + public ResponseMessage> showDetailsByRole(MsgDynamicInfoEO msgDynamicInfoEO) throws Exception{ + // 根据当前登录人id查出对应角色 + String roleIds = UserUtils.getRoleIds(); + String[] roleArr = roleIds.split(","); + List roleIdList = Arrays.asList(roleArr); + msgDynamicInfoEO.setRoleIds(roleIdList); + List getMsg = msgDynamicInfoEOService.showDetailsByRole(msgDynamicInfoEO); + return Result.success(getMsg); + } + + @ApiOperation(value = "|MsgDynamicInfoEO|获取系统当前时间") + @GetMapping(value = "/getSystemTime") + public ResponseMessage getSystemTime() throws Exception{ + return Result.success(new Date()); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/MsgDynamicInfoEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/MsgDynamicInfoEODao.java new file mode 100644 index 00000000..7f9f9680 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/MsgDynamicInfoEODao.java @@ -0,0 +1,69 @@ +package com.adc.da.slrs.msgDynamicInfo.dao; + +import com.adc.da.slrs.msgDynamicInfo.dto.MsgDynamicInfoExportDto; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgDynamicInfoEO; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgFileEO; +import com.adc.da.slrs.msgDynamicInfo.page.MsgDynamicInfoEOPage; +import com.adc.da.slrs.msgDynamicInfo.vo.RecommendVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; + +/** + * + *
    + * 功能:MSG_DYNAMIC_INFO MsgDynamicInfoEODao
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ + +@Repository +public interface MsgDynamicInfoEODao extends BaseMapper { + + Integer updateIdOfMsgFile(List msgFileEOS); + + + public void deleteLogicInBatch(List ids); + + /** + * @Author yangxuenan + * @Description 根据id查询详细信息 + * Date 2018/10/10 11:23 + * @Param [id] + * @return com.adc.da.lawss.entity.MsgDynamicInfoEO + **/ + MsgDynamicInfoEO selectByMsgId(String id); + +// liwenxuan:动态信息更新数量:国际动态INLAND + Integer selectDynamicInfoUpdateNumINLAND(Date visitTime); + // liwenxuan:动态信息更新数量:国际动态FOREIGN + Integer selectDynamicInfoUpdateNumFOREIGN(Date visitTime); + + // liwenxuan:动态信息更新数量:国际动态INLANDAll + Integer selectDynamicInfoUpdateNumINLANDAll(); + // liwenxuan:动态信息更新数量:国际动态FOREIGNAll + Integer selectDynamicInfoUpdateNumFOREIGNAll(); + + /** + * 搜索中心查询相关推荐 + * + * @param: + * @auther: gaoyan + * @date: 2018/11/10 9:22 + */ + List selectRecommendMsgDynamicInfo(MsgDynamicInfoEOPage pagenew); + + + List getMsgDynamicInfoForExport(MsgDynamicInfoEOPage page); + + List showDetailsByRole(MsgDynamicInfoEO msgDynamicInfoEO); + + List queryAllByPage(MsgDynamicInfoEOPage msgDynamicInfoEO); + + int updateByPrimaryKeySelective(MsgDynamicInfoEO msgDynamicInfoEO); + + int queryAllByCount(MsgDynamicInfoEOPage msgDynamicInfoEO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/MsgFileEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/MsgFileEODao.java new file mode 100644 index 00000000..03bbf693 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/MsgFileEODao.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.msgDynamicInfo.dao; + +import com.adc.da.slrs.msgDynamicInfo.entity.MsgFileEO; +import com.adc.da.slrs.msgDynamicInfo.page.MsgFileEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * + *
    + * 功能:MSG_FILE MsgFileEODao
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Repository +public interface MsgFileEODao extends BaseMapper { + +//修改动态信息附件表 + void updateByPrimaryKeySelective(MsgFileEO msgFileEO); + + /**** + * 批量删除 根据消息ID + * @MethodName:deleteLogicInBatch + * @author: zhangyanduan + * @param:[ids] + * @return:void + * date: 2018/9/18 17:05 + */ + public void deleteLogicInBatch(List ids ); + + List queryByList(MsgFileEOPage msgFileEOPage); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/SarStandAndLawsEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/SarStandAndLawsEODao.java new file mode 100644 index 00000000..95ddf620 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dao/SarStandAndLawsEODao.java @@ -0,0 +1,32 @@ +package com.adc.da.slrs.msgDynamicInfo.dao; + +import com.adc.da.slrs.msgDynamicInfo.entity.SarStandAndLawsEO; +import com.adc.da.slrs.msgDynamicInfo.page.SarStandAndLawsEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * 标准和法规联合查询 + * + * @Author SYT + * @CreateTime 2018/10/23 14:30 + * @attention + */ + +@Repository +public interface SarStandAndLawsEODao extends BaseMapper { + List selectStandAndLawsInfo(SarStandAndLawsEOPage page); + + Integer selectStandAndLawsInfoCount(SarStandAndLawsEOPage page); + + List selectStand(SarStandAndLawsEOPage page); + Integer selectStandCount(SarStandAndLawsEOPage page); + + + List selectStandNameAndType(String showNumber); + + List queryByNameNumber(SarStandAndLawsEOPage page); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dto/MsgDynamicInfoExportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dto/MsgDynamicInfoExportDto.java new file mode 100644 index 00000000..27648757 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/dto/MsgDynamicInfoExportDto.java @@ -0,0 +1,95 @@ +package com.adc.da.slrs.msgDynamicInfo.dto; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.excel.annotation.Excel; + +import java.util.Date; + +/** + * 功能:MSG_DYNAMIC_INFO MsgDynamicInfoEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class MsgDynamicInfoExportDto extends BaseEntity { + @Excel(name = "发布单位", orderNum = "8",width = 10) + private String pubOrg; + @Excel(name = "发布人", orderNum = "7",width = 10) + private String pubUser; + @Excel(name = "发布日期", orderNum = "6", exportFormat = "yyyy/MM/dd",width = 12) + private Date pubTime; + @Excel(name = "消息链接", orderNum = "5",width = 10) + private String linkUri; + @Excel(name = "消息内容", orderNum = "4",width = 10) + private String content; + @Excel(name = "消息标题", orderNum = "3",width = 10) + private String title; + @Excel(name = "所属模块", orderNum = "2",width = 10) + private String msgMode; + @Excel(name = "消息类型", orderNum = "1",width = 10) + private String msgType; + + public String getPubOrg() { + return pubOrg; + } + + public void setPubOrg(String pubOrg) { + this.pubOrg = pubOrg; + } + + public String getPubUser() { + return pubUser; + } + + public void setPubUser(String pubUser) { + this.pubUser = pubUser; + } + + public Date getPubTime() { + return pubTime; + } + + public void setPubTime(Date pubTime) { + this.pubTime = pubTime; + } + + public String getLinkUri() { + return linkUri; + } + + public void setLinkUri(String linkUri) { + this.linkUri = linkUri; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getMsgMode() { + return msgMode; + } + + public void setMsgMode(String msgMode) { + this.msgMode = msgMode; + } + + public String getMsgType() { + return msgType; + } + + public void setMsgType(String msgType) { + this.msgType = msgType; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/MsgDynamicInfoEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/MsgDynamicInfoEO.java new file mode 100644 index 00000000..60a8d2df --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/MsgDynamicInfoEO.java @@ -0,0 +1,409 @@ +package com.adc.da.slrs.msgDynamicInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; +import java.util.List; + +/** + * 功能:MSG_DYNAMIC_INFO MsgDynamicInfoEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class MsgDynamicInfoEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String pubOrg;//资料来源 + private String pubUser;//上传人员 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date pubTime;//上传日期 + private String linkUri;//标签 + private String content; + private String title;//资料名称 + private String msgMode;//资料类别 + private String msgType; + private String id; + + private String pubUserName; + private String pubOrgName; + private String moduleName; + private String attId; + private String attPicIds; + private List attPath; + private Integer isPicMsg; + //记录上传的文件和图片 + private List getPicList; + private List getFileList; + //记录收藏id + private String collectId; + private String contentText; + private List roleIds; + private String saveStatus; + + private String saveLevel;//保密等级 + private String releventGroup;//相关工作组 + private String releventStand;//相关标准 + private String releventLaws;//相关政策 + private String dataText;//资料文本 + private String source;//数据来源(pre会前流程,after会后流程,空页面新增) + + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • pubOrg -> pub_org
  • + *
  • pubUser -> pub_user
  • + *
  • pubTime -> pub_time
  • + *
  • linkUri -> link_uri
  • + *
  • content -> content
  • + *
  • title -> title
  • + *
  • msgMode -> msg_mode
  • + *
  • msgType -> msg_type
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "validFlag": return "valid_flag"; + case "pubOrg": return "pub_org"; + case "pubUser": return "pub_user"; + case "pubTime": return "pub_time"; + case "linkUri": return "link_uri"; + case "content": return "content"; + case "title": return "title"; + case "msgMode": return "msg_mode"; + case "msgType": return "msg_type"; + case "contentText": return "content_text"; + case "id": return "id"; + case "isPicMsg": return "is_pic_msg"; + case "saveLevel": return "save_level"; + case "releventStand": return "relevent_stand"; + case "releventLaws": return "relevent_laws"; + case "dataText": return "data_text"; + + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • valid_flag -> validFlag
  • + *
  • pub_org -> pubOrg
  • + *
  • pub_user -> pubUser
  • + *
  • pub_time -> pubTime
  • + *
  • link_uri -> linkUri
  • + *
  • content -> content
  • + *
  • title -> title
  • + *
  • msg_mode -> msgMode
  • + *
  • msg_type -> msgType
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "valid_flag": return "validFlag"; + case "pub_org": return "pubOrg"; + case "pub_user": return "pubUser"; + case "pub_time": return "pubTime"; + case "link_uri": return "linkUri"; + case "content": return "content"; + case "title": return "title"; + case "msg_mode": return "msgMode"; + case "msg_type": return "msgType"; + case "content_text": return "contentText"; + case "id": return "id"; + case "is_pic_msg": return "isPicMsg"; + case "save_level": return "saveLevel"; + case "relevent_stand": return "relevent_stand"; + case "relevent_laws": return "releventLaws"; + case "data_text": return "dataText"; + default: return null; + } + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getPubOrg() { + return this.pubOrg; + } + + /** **/ + public void setPubOrg(String pubOrg) { + this.pubOrg = pubOrg; + } + + /** **/ + public String getPubUser() { + return this.pubUser; + } + + /** **/ + public void setPubUser(String pubUser) { + this.pubUser = pubUser; + } + + /** **/ + public Date getPubTime() { + return this.pubTime; + } + + /** **/ + public void setPubTime(Date pubTime) { + this.pubTime = pubTime; + } + + /** **/ + public String getLinkUri() { + return this.linkUri; + } + + /** **/ + public void setLinkUri(String linkUri) { + this.linkUri = linkUri; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + /** **/ + public String getTitle() { + return this.title; + } + + /** **/ + public void setTitle(String title) { + this.title = title; + } + + /** **/ + public String getMsgMode() { + return this.msgMode; + } + + /** **/ + public void setMsgMode(String msgMode) { + this.msgMode = msgMode; + } + + /** **/ + public String getMsgType() { + return this.msgType; + } + + /** **/ + public void setMsgType(String msgType) { + this.msgType = msgType; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public void setPubUserName(String pubUserName){ + this.pubUserName=pubUserName; + } + + public String getPubUserName(){ + return this.pubUserName; + } + + public void setIsPicMsg(Integer isPicMsg){ + this.isPicMsg=isPicMsg; + } + + public Integer getIsPicMsg(){ + return this.isPicMsg; + } + + public String getPubOrgName() { + return pubOrgName; + } + + public void setPubOrgName(String pubOrgName) { + this.pubOrgName = pubOrgName; + } + + public List getGetPicList() { + return getPicList; + } + + public void setGetPicList(List getPicList) { + this.getPicList = getPicList; + } + + public List getGetFileList() { + return getFileList; + } + + public void setGetFileList(List getFileList) { + this.getFileList = getFileList; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + public List getAttPath() { + return attPath; + } + + public void setAttPath(List attPath) { + this.attPath = attPath; + } + + public String getAttPicIds() { + return attPicIds; + } + + public void setAttPicIds(String attPicIds) { + this.attPicIds = attPicIds; + } + + public String getContentText() { + return contentText; + } + + public void setContentText(String contentText) { + this.contentText = contentText; + } + + public List getRoleIds() { + return roleIds; + } + + public void setRoleIds(List roleIds) { + this.roleIds = roleIds; + } + + public String getSaveStatus() { + return saveStatus; + } + + public void setSaveStatus(String saveStatus) { + this.saveStatus = saveStatus; + } + + public String getSaveLevel() { + return saveLevel; + } + + public void setSaveLevel(String saveLevel) { + this.saveLevel = saveLevel; + } + + public String getReleventStand() { + return releventStand; + } + + public void setReleventStand(String releventStand) { + this.releventStand = releventStand; + } + + public String getReleventLaws() { + return releventLaws; + } + + public void setReleventLaws(String releventLaws) { + this.releventLaws = releventLaws; + } + + public String getDataText() { + return dataText; + } + + public void setDataText(String dataText) { + this.dataText = dataText; + } + + public String getReleventGroup() { + return releventGroup; + } + + public void setReleventGroup(String releventGroup) { + this.releventGroup = releventGroup; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/MsgFileEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/MsgFileEO.java new file mode 100644 index 00000000..e7fd5ae4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/MsgFileEO.java @@ -0,0 +1,223 @@ +package com.adc.da.slrs.msgDynamicInfo.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + * 功能:MSG_FILE MsgFileEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class MsgFileEO extends BaseEntity { + + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String attId; + private String fileSuffix; + private String fileName; + private String msgId; + private String id; + + private String name; + private String oldFileName; + private String status="finished"; + + private String fileType; + private String filePath; + + private String originFileName; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • attId -> att_id
  • + *
  • fileSuffix -> file_suffix
  • + *
  • fileName -> file_name
  • + *
  • msgId -> msg_id
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "validFlag": return "valid_flag"; + case "attId": return "att_id"; + case "fileSuffix": return "file_suffix"; + case "fileName": return "file_name"; + case "msgId": return "msg_id"; + case "id": return "id"; + case "fileType": return "file_type"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • valid_flag -> validFlag
  • + *
  • att_id -> attId
  • + *
  • file_suffix -> fileSuffix
  • + *
  • file_name -> fileName
  • + *
  • msg_id -> msgId
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "valid_flag": return "validFlag"; + case "att_id": return "attId"; + case "file_suffix": return "fileSuffix"; + case "file_name": return "fileName"; + case "msg_id": return "msgId"; + case "id": return "id"; + case "file_type": return "fileType"; + default: return null; + } + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getAttId() { + return this.attId; + } + + /** **/ + public void setAttId(String attId) { + this.attId = attId; + } + + /** **/ + public String getFileSuffix() { + return this.fileSuffix; + } + + /** **/ + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + /** **/ + public String getFileName() { + return this.fileName; + } + + /** **/ + public void setFileName(String fileName) { + this.fileName = fileName; + } + + /** **/ + public String getMsgId() { + return this.msgId; + } + + /** **/ + public void setMsgId(String msgId) { + this.msgId = msgId; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getName() { + this.name=this.fileName; + return this.name; + } + + public void setName(String name) { + this.name = name; + this.fileName = name; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getOldFileName() { + this.oldFileName = this.fileName; + return this.oldFileName; + } + + public void setOldFileName(String oldFileName) { + this.oldFileName = oldFileName; + } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + public String getOriginFileName() { + return originFileName; + } + + public void setOriginFileName(String originFileName) { + this.originFileName = originFileName; + } +} + + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/SarStandAndLawsEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/SarStandAndLawsEO.java new file mode 100644 index 00000000..bd3a1d58 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/entity/SarStandAndLawsEO.java @@ -0,0 +1,157 @@ +package com.adc.da.slrs.msgDynamicInfo.entity; + +import com.adc.da.base.entity.BaseEntity; + +/** + * 标准和法规联合查询 + * + * @Author SYT + * @CreateTime 2018/10/23 14:13 + * @attention + */ +public class SarStandAndLawsEO extends BaseEntity { + private String id; + private String showNumber; + private String country; + private String showName; + private String typeShow; + private String standYear; + private String issueTime; + private String putTime; + private String productPutTime; + private String newproductPutTime; + private String standStateShow; + private String responsibleUnitId; + private String responsibleUnitName; + private String categoryShow; + private String applyArcticShow; + private String natureShow; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShowNumber() { + return showNumber; + } + + public void setShowNumber(String showNumber) { + this.showNumber = showNumber; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getShowName() { + return showName; + } + + public void setShowName(String showName) { + this.showName = showName; + } + + public String getTypeShow() { + return typeShow; + } + + public void setTypeShow(String typeShow) { + this.typeShow = typeShow; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getProductPutTime() { + return productPutTime; + } + + public void setProductPutTime(String productPutTime) { + this.productPutTime = productPutTime; + } + + public String getNewproductPutTime() { + return newproductPutTime; + } + + public void setNewproductPutTime(String newproductPutTime) { + this.newproductPutTime = newproductPutTime; + } + + public String getStandStateShow() { + return standStateShow; + } + + public void setStandStateShow(String standStateShow) { + this.standStateShow = standStateShow; + } + + public String getResponsibleUnitId() { + return responsibleUnitId; + } + + public void setResponsibleUnitId(String responsibleUnitId) { + this.responsibleUnitId = responsibleUnitId; + } + + public String getResponsibleUnitName() { + return responsibleUnitName; + } + + public void setResponsibleUnitName(String responsibleUnitName) { + this.responsibleUnitName = responsibleUnitName; + } + + public String getCategoryShow() { + return categoryShow; + } + + public void setCategoryShow(String categoryShow) { + this.categoryShow = categoryShow; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } + + public String getNatureShow() { + return natureShow; + } + + public void setNatureShow(String natureShow) { + this.natureShow = natureShow; + } + + public String getPutTime() { + return putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/MsgDynamicInfoEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/MsgDynamicInfoEOPage.java new file mode 100644 index 00000000..79f5a597 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/MsgDynamicInfoEOPage.java @@ -0,0 +1,428 @@ +package com.adc.da.slrs.msgDynamicInfo.page; + +import com.adc.da.sys.common.BasePage; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:MSG_DYNAMIC_INFO MsgDynamicInfoEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class MsgDynamicInfoEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String pubOrg; + private String pubOrgOperator = "="; + private String pubUser; + private String pubUserOperator = "="; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date pubTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date pubTime1; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date pubTime2; + private String pubTimeOperator = "="; + private String linkUri; + private String linkUriOperator = "="; + private String content; + private String contentOperator = "="; + private String title; + private String titleOperator = "like"; + private String msgMode; + private String msgModeOperator = "="; + private String msgType; + private String msgTypeOperator = "="; + private String id; + private String idOperator = "="; + private String isPicMsg; + private String isPicMsgOperator = "="; + private String saveLevel; + private String saveLevelOperator = "="; + private String releventStand; + private String releventStandOperator = "="; + private String releventLaws; + private String releventLawsOperator = "="; + private String source; + private String dataText; + private String dataTextOperator = "="; + + + //限制显示条数,消息动态主页会用到 + private int rowLimit; + private String moduleName; + private String contentText; + + private String[] idList; + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getPubOrg() { + return this.pubOrg; + } + + public void setPubOrg(String pubOrg) { + this.pubOrg = pubOrg; + } + + public String getPubOrgOperator() { + return this.pubOrgOperator; + } + + public void setPubOrgOperator(String pubOrgOperator) { + this.pubOrgOperator = pubOrgOperator; + } + + public String getPubUser() { + return this.pubUser; + } + + public void setPubUser(String pubUser) { + this.pubUser = pubUser; + } + + public String getPubUserOperator() { + return this.pubUserOperator; + } + + public void setPubUserOperator(String pubUserOperator) { + this.pubUserOperator = pubUserOperator; + } + + public Date getPubTime() { + return pubTime; + } + + public void setPubTime(Date pubTime) { + this.pubTime = pubTime; + } + + public Date getPubTime1() { + return pubTime1; + } + + public void setPubTime1(Date pubTime1) { + this.pubTime1 = pubTime1; + } + + public Date getPubTime2() { + return pubTime2; + } + + public void setPubTime2(Date pubTime2) { + this.pubTime2 = pubTime2; + } + + public String getPubTimeOperator() { + return this.pubTimeOperator; + } + + public void setPubTimeOperator(String pubTimeOperator) { + this.pubTimeOperator = pubTimeOperator; + } + + public String getLinkUri() { + return this.linkUri; + } + + public void setLinkUri(String linkUri) { + this.linkUri = linkUri; + } + + public String getLinkUriOperator() { + return this.linkUriOperator; + } + + public void setLinkUriOperator(String linkUriOperator) { + this.linkUriOperator = linkUriOperator; + } + + public String getContent() { + return this.content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getContentOperator() { + return this.contentOperator; + } + + public void setContentOperator(String contentOperator) { + this.contentOperator = contentOperator; + } + + public String getTitle() { + return this.title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getTitleOperator() { + return this.titleOperator; + } + + public void setTitleOperator(String titleOperator) { + this.titleOperator = titleOperator; + } + + public String getMsgMode() { + return this.msgMode; + } + + public void setMsgMode(String msgMode) { + this.msgMode = msgMode; + } + + public String getMsgModeOperator() { + return this.msgModeOperator; + } + + public void setMsgModeOperator(String msgModeOperator) { + this.msgModeOperator = msgModeOperator; + } + + public String getMsgType() { + return this.msgType; + } + + public void setMsgType(String msgType) { + this.msgType = msgType; + } + + public String getMsgTypeOperator() { + return this.msgTypeOperator; + } + + public void setMsgTypeOperator(String msgTypeOperator) { + this.msgTypeOperator = msgTypeOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public void setIsPicMsg(String isPicMsg) { + this.isPicMsg = isPicMsg; + } + + public String getIsPicMsg() { + return this.isPicMsg; + } + + public void setIsPicMsgOperator(String isPicMsgOperator) { + this.isPicMsgOperator = isPicMsgOperator; + } + + public String getIsPicMsgOperator() { + return this.isPicMsgOperator; + } + + public int getRowLimit() { + return rowLimit; + } + + public void setRowLimit(int rowLimit) { + this.rowLimit = rowLimit; + } + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getContentText() { + return contentText; + } + + public void setContentText(String contentText) { + this.contentText = contentText; + } + + public String[] getIdList() { + return idList; + } + + public void setIdList(String[] idList) { + this.idList = idList; + } + + public String getSaveLevel() { + return saveLevel; + } + + public void setSaveLevel(String saveLevel) { + this.saveLevel = saveLevel; + } + + public String getSaveLevelOperator() { + return saveLevelOperator; + } + + public void setSaveLevelOperator(String saveLevelOperator) { + this.saveLevelOperator = saveLevelOperator; + } + + public String getReleventStand() { + return releventStand; + } + + public void setReleventStand(String releventStand) { + this.releventStand = releventStand; + } + + public String getReleventStandOperator() { + return releventStandOperator; + } + + public void setReleventStandOperator(String releventStandOperator) { + this.releventStandOperator = releventStandOperator; + } + + public String getReleventLaws() { + return releventLaws; + } + + public void setReleventLaws(String releventLaws) { + this.releventLaws = releventLaws; + } + + public String getReleventLawsOperator() { + return releventLawsOperator; + } + + public void setReleventLawsOperator(String releventLawsOperator) { + this.releventLawsOperator = releventLawsOperator; + } + + public String getDataText() { + return dataText; + } + + public void setDataText(String dataText) { + this.dataText = dataText; + } + + public String getDataTextOperator() { + return dataTextOperator; + } + + public void setDataTextOperator(String dataTextOperator) { + this.dataTextOperator = dataTextOperator; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/MsgFileEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/MsgFileEOPage.java new file mode 100644 index 00000000..61a4fbbe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/MsgFileEOPage.java @@ -0,0 +1,213 @@ +package com.adc.da.slrs.msgDynamicInfo.page; + +import com.adc.da.sys.common.BasePage; + +/** + * 功能:MSG_FILE MsgFileEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class MsgFileEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String attId; + private String attIdOperator = "="; + private String fileSuffix; + private String fileSuffixOperator = "="; + private String fileName; + private String fileNameOperator = "="; + private String msgId; + private String msgIdOperator = "="; + private String id; + private String idOperator = "="; + + private String fileType; + private String fileTypeOperator = "="; + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getAttId() { + return this.attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + public String getAttIdOperator() { + return this.attIdOperator; + } + + public void setAttIdOperator(String attIdOperator) { + this.attIdOperator = attIdOperator; + } + + public String getFileSuffix() { + return this.fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getFileSuffixOperator() { + return this.fileSuffixOperator; + } + + public void setFileSuffixOperator(String fileSuffixOperator) { + this.fileSuffixOperator = fileSuffixOperator; + } + + public String getFileName() { + return this.fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileNameOperator() { + return this.fileNameOperator; + } + + public void setFileNameOperator(String fileNameOperator) { + this.fileNameOperator = fileNameOperator; + } + + public String getMsgId() { + return this.msgId; + } + + public void setMsgId(String msgId) { + this.msgId = msgId; + } + + public String getMsgIdOperator() { + return this.msgIdOperator; + } + + public void setMsgIdOperator(String msgIdOperator) { + this.msgIdOperator = msgIdOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getFileTypeOperator() { + return fileTypeOperator; + } + + public void setFileTypeOperator(String fileTypeOperator) { + this.fileTypeOperator = fileTypeOperator; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/SarStandAndLawsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/SarStandAndLawsEOPage.java new file mode 100644 index 00000000..7c60c965 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/page/SarStandAndLawsEOPage.java @@ -0,0 +1,64 @@ +package com.adc.da.slrs.msgDynamicInfo.page; + +import com.adc.da.sys.common.BasePage; + +import java.util.List; + +/** + * 标准和法规联合查询 + * + * @Author SYT + * @CreateTime 2018/10/23 14:38 + * @attention + */ +public class SarStandAndLawsEOPage extends BasePage { + + private String typeShow; + private String showNumber; + private String showName; + + private List menuRoleList; + + private String standType; + + + public String getTypeShow() { + return typeShow; + } + + public void setTypeShow(String typeShow) { + this.typeShow = typeShow; + } + + public String getShowNumber() { + return showNumber; + } + + public void setShowNumber(String showNumber) { + this.showNumber = showNumber; + } + + public String getShowName() { + return showName; + } + + public void setShowName(String showName) { + this.showName = showName; + } + + public List getMenuRoleList() { + return menuRoleList; + } + + public void setMenuRoleList(List menuRoleList) { + this.menuRoleList = menuRoleList; + } + + public String getStandType() { + return standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/IMsgDynamicInfoEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/IMsgDynamicInfoEOService.java new file mode 100644 index 00000000..dc85ec9e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/IMsgDynamicInfoEOService.java @@ -0,0 +1,85 @@ +package com.adc.da.slrs.msgDynamicInfo.service; + +import com.adc.da.slrs.msgDynamicInfo.dto.MsgDynamicInfoExportDto; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgDynamicInfoEO; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgFileEO; +import com.adc.da.slrs.msgDynamicInfo.page.MsgDynamicInfoEOPage; +import com.adc.da.slrs.msgDynamicInfo.vo.MsgDynamicInfoVO; +import com.adc.da.slrs.msgDynamicInfo.vo.RecommendVO; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandAttrDetails.page.SarStandAttrDetailsEOPage; +import com.adc.da.slrs.sarStandProjectLibrary.entity.SarStandProjectLibrary; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * + *
    + * 功能:MSG_DYNAMIC_INFO MsgDynamicInfoEODao
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ + +@Service +public interface IMsgDynamicInfoEOService extends IService { + + Integer updateIdOfMsgFile(List msgFileEOS); + + List queryByList (MsgDynamicInfoEOPage page); + + public void updateMsgInfo(MsgDynamicInfoVO msgDynamicInfoVO); + + List queryByPage(MsgDynamicInfoEOPage page); + + public void updateCollectAndShare(MsgDynamicInfoVO msgDynamicInfoVO); + + public void deleteLogicInBatch(List ids); + + public void deleteCollectAndShare(String resId); + + /** + * @Author yangxuenan + * @Description 根据id查询详细信息 + * Date 2018/10/10 11:23 + * @Param [id] + * @return com.adc.da.lawss.entity.MsgDynamicInfoEO + **/ + MsgDynamicInfoEO selectByMsgId(String id); + +// liwenxuan:动态信息更新数量:国际动态INLAND + Integer selectDynamicInfoUpdateNumINLAND(Date visitTime); + // liwenxuan:动态信息更新数量:国际动态FOREIGN + Integer selectDynamicInfoUpdateNumFOREIGN(Date visitTime); + + // liwenxuan:动态信息更新数量:国际动态INLANDAll + Integer selectDynamicInfoUpdateNumINLANDAll(); + // liwenxuan:动态信息更新数量:国际动态FOREIGNAll + Integer selectDynamicInfoUpdateNumFOREIGNAll(); + + /** + * 搜索中心查询相关推荐 + * + * @param: + * @auther: gaoyan + * @date: 2018/11/10 9:22 + */ + List selectRecommendMsgDynamicInfo(MsgDynamicInfoEOPage pagenew); + + int updateByPrimaryKeySelective(MsgDynamicInfoEO msgDynamicInfoEO); + + List getMsgDynamicInfoForExport(MsgDynamicInfoEOPage page); + + List showDetailsByRole(MsgDynamicInfoEO msgDynamicInfoEO); + + List queryAllByPage(MsgDynamicInfoEOPage msgDynamicInfoEO); + + int queryAllByCount(MsgDynamicInfoEOPage msgDynamicInfoEO); + + public String saveMsgInfo(MsgDynamicInfoVO msgDynamicInfoVO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/IMsgFileEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/IMsgFileEOService.java new file mode 100644 index 00000000..c4e2c581 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/IMsgFileEOService.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.msgDynamicInfo.service; + +import com.adc.da.slrs.msgDynamicInfo.entity.MsgFileEO; +import com.adc.da.slrs.msgDynamicInfo.page.MsgFileEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * + *
    + * 功能:MSG_FILE MsgFileEODao
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ + + +public interface IMsgFileEOService extends IService { + +//修改动态信息附件表 + void updateByPrimaryKeySelective(List msgFileEO); + + /**** + * 批量删除 根据消息ID + * @MethodName:deleteLogicInBatch + * @author: zhangyanduan + * @param:[ids] + * @return:void + * date: 2018/9/18 17:05 + */ + public void deleteLogicInBatch(List ids ); + + List queryByList(MsgFileEOPage msgFileEOPage); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/ISarStandAndLawsEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/ISarStandAndLawsEOService.java new file mode 100644 index 00000000..6d310911 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/ISarStandAndLawsEOService.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.msgDynamicInfo.service; + +import com.adc.da.slrs.msgDynamicInfo.entity.SarStandAndLawsEO; +import com.adc.da.slrs.msgDynamicInfo.page.SarStandAndLawsEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 标准和法规联合查询 + * + * @Author SYT + * @CreateTime 2018/10/23 14:30 + * @attention + */ +public interface ISarStandAndLawsEOService extends IService { + List selectStandAndLawsInfo(SarStandAndLawsEOPage page); + + Integer selectStandAndLawsInfoCount(SarStandAndLawsEOPage page); + + List selectStand(SarStandAndLawsEOPage page); + Integer selectStandCount(SarStandAndLawsEOPage page); + + + List selectStandNameAndType(String showNumber); + + List queryByNameNumber(SarStandAndLawsEOPage page); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/Impl/MsgDynamicInfoEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/Impl/MsgDynamicInfoEOServiceImpl.java new file mode 100644 index 00000000..a0c8054c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/Impl/MsgDynamicInfoEOServiceImpl.java @@ -0,0 +1,453 @@ +package com.adc.da.slrs.msgDynamicInfo.service.Impl; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.person.entity.TsPersonCollect; +import com.adc.da.slrs.msgDynamicInfo.dao.*; +import com.adc.da.slrs.msgDynamicInfo.dto.MsgDynamicInfoExportDto; +import com.adc.da.slrs.msgDynamicInfo.entity.*; +import com.adc.da.slrs.msgDynamicInfo.page.MsgDynamicInfoEOPage; +import com.adc.da.slrs.msgDynamicInfo.page.MsgFileEOPage; +import com.adc.da.slrs.msgDynamicInfo.service.IMsgDynamicInfoEOService; +import com.adc.da.slrs.msgDynamicInfo.service.ISarStandAndLawsEOService; +import com.adc.da.slrs.msgDynamicInfo.vo.MsgDynamicInfoVO; +import com.adc.da.slrs.msgDynamicInfo.vo.RecommendVO; +import com.adc.da.person.entity.PersonShareEO; +import com.adc.da.person.page.PersonCollectEOPage; +import com.adc.da.person.page.PersonShareEOPage; +import com.adc.da.sys.constant.ValidFlagEnum; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.adc.da.person.dao.PersonCollectEODao; +import com.adc.da.person.dao.PersonShareEODao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + + +/** + * + *
    + * 功能:MSG_DYNAMIC_INFO MsgDynamicInfoEOService
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Service("msgDynamicInfoEOService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class MsgDynamicInfoEOServiceImpl extends ServiceImpl implements IMsgDynamicInfoEOService { + + private static final Logger logger = LoggerFactory.getLogger(MsgDynamicInfoEOServiceImpl.class); + + @Autowired + private MsgDynamicInfoEODao dao; + + @Autowired + private MsgFileEODao msgFileEODao; + + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private PersonCollectEODao personCollectEODao; +// + @Autowired + private PersonShareEODao personShareEODao; +// +// @Autowired +// private CreateStandMQService createStandMQService; + +// @Autowired +// private ISarStandAndLawsEOService ISarStandAndLawsEOService; + + + @Value("${elas.flag}") + private boolean elasflag;//文件存储路径 + + public MsgDynamicInfoEODao getDao() { + return dao; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public String saveMsgInfo(MsgDynamicInfoVO msgDynamicInfoVO) { + Date nowDate=new Date(); + String msgId= UUIDUtils.randomUUID20(); + String userId= LoginUserUtil.getUserId(); + MsgDynamicInfoEO msgDynamicInfoEO=new MsgDynamicInfoEO(); + msgDynamicInfoEO.setId(msgId); + msgDynamicInfoEO.setSaveStatus(msgDynamicInfoVO.getSaveStatus()); + msgDynamicInfoEO.setCreationTime(nowDate); + msgDynamicInfoEO.setModifyTime(nowDate); + if (StringUtils.isNotBlank(msgDynamicInfoVO.getPubUser())) { + msgDynamicInfoEO.setPubUser(msgDynamicInfoVO.getPubUser()); + } else { + msgDynamicInfoEO.setPubUser(userId); + } + msgDynamicInfoEO.setSource(msgDynamicInfoVO.getSource()); + msgDynamicInfoEO.setContent(msgDynamicInfoVO.getContent()); + msgDynamicInfoEO.setContentText(msgDynamicInfoVO.getContentText()); + msgDynamicInfoEO.setIsPicMsg(msgDynamicInfoVO.getIsPicMsg()); + msgDynamicInfoEO.setLinkUri(msgDynamicInfoVO.getLinkUri()); + msgDynamicInfoEO.setMsgMode(msgDynamicInfoVO.getMsgMode()); + msgDynamicInfoEO.setMsgType(msgDynamicInfoVO.getMsgType()); + msgDynamicInfoEO.setPubOrg(msgDynamicInfoVO.getPubOrg()); + msgDynamicInfoEO.setReleventGroup(msgDynamicInfoVO.getReleventGroup()); + Date pubTime = msgDynamicInfoVO.getPubTime(); + if (pubTime != null) { + Calendar cal1 = Calendar.getInstance(); + cal1.setTime(pubTime); + // 将分钟、秒、毫秒域清零 + cal1.set(Calendar.HOUR_OF_DAY, 0); + cal1.set(Calendar.MINUTE, 0); + cal1.set(Calendar.SECOND, 0); + cal1.set(Calendar.MILLISECOND, 0); + pubTime = cal1.getTime(); + } + if ("save".equals(msgDynamicInfoEO.getSaveStatus())) { + msgDynamicInfoEO.setValidFlag(1); + msgDynamicInfoEO.setPubTime(null); + }else { + msgDynamicInfoEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()); + msgDynamicInfoEO.setPubTime(pubTime); + } + msgDynamicInfoEO.setTitle(msgDynamicInfoVO.getTitle()); + //复制在富文本编辑器中的表格,保存后缺少border + if(StringUtils.isNotEmpty(msgDynamicInfoEO.getContent())){ + //查询是否有表格 + int index = msgDynamicInfoEO.getContent().indexOf("-1){ + int borderIndex = msgDynamicInfoEO.getContent().indexOf(" msgFileEOList = msgDynamicInfoVO.getMsgFileEOList(); + if(msgFileEOList != null && !msgFileEOList.isEmpty()){ + for( MsgFileEO msgFileEO : msgFileEOList){ + msgFileEO.setId(UUIDUtils.randomUUID20()); + msgFileEO.setMsgId(msgId); + msgFileEO.setCreationTime(nowDate); + msgFileEO.setModifyTime(nowDate); + msgFileEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()); + msgFileEO.setFileType("FILE"); + msgFileEODao.insert(msgFileEO); + } + } + + Integer picMsg = msgDynamicInfoVO.getIsPicMsg(); + if(picMsg !=null){ + // 此处将新闻图片写入数据库 + if(msgDynamicInfoVO.getIsPicMsg()== ValidFlagEnum.VALID_TRUE.getValue()){ + MsgFileEO picFile= msgDynamicInfoVO.getPicFileEO(); + picFile.setId(UUIDUtils.randomUUID20()); + picFile.setMsgId(msgId); + picFile.setFileType("PIC"); + picFile.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()); + picFile.setCreationTime(nowDate); + picFile.setModifyTime(nowDate); + msgFileEODao.insert(picFile); + } + } + +// if(elasflag && !"save".equals(msgDynamicInfoEO.getSaveStatus())){ +// createStandMQService.sendMsgdyinfoMQ(msgDynamicInfoEO,"add"); +// } + + return msgId; + } +//修改 + @Override + public int updateByPrimaryKeySelective(MsgDynamicInfoEO msgDynamicInfoEO) { + + msgDynamicInfoEO.setModifyTime(new Date()); + //updateByPrimaryKeySelective改成updateById(zyh) + return dao.updateByPrimaryKeySelective(msgDynamicInfoEO); + } + + + @Transactional(rollbackFor = Exception.class) + @Override + public void updateMsgInfo(MsgDynamicInfoVO msgDynamicInfoVO) { + Date nowDate=new Date(); + MsgDynamicInfoEO msgDynamicInfoEO=new MsgDynamicInfoEO(); + msgDynamicInfoEO.setId(msgDynamicInfoVO.getId()); + msgDynamicInfoEO.setCreationTime(msgDynamicInfoVO.getCreationTime()); + msgDynamicInfoEO.setModifyTime(nowDate); + msgDynamicInfoEO.setPubUser(msgDynamicInfoVO.getPubUser()); + msgDynamicInfoEO.setContent(msgDynamicInfoVO.getContent()); +// msgDynamicInfoEO.setContentText(msgDynamicInfoVO.getContentText()); + msgDynamicInfoEO.setIsPicMsg(msgDynamicInfoVO.getIsPicMsg()); + msgDynamicInfoEO.setLinkUri(msgDynamicInfoVO.getLinkUri()); + msgDynamicInfoEO.setMsgMode(msgDynamicInfoVO.getMsgMode()); + msgDynamicInfoEO.setMsgType(msgDynamicInfoVO.getMsgType()); + msgDynamicInfoEO.setPubOrg(msgDynamicInfoVO.getPubOrg()); + msgDynamicInfoEO.setTitle(msgDynamicInfoVO.getTitle()); + msgDynamicInfoEO.setSaveStatus(msgDynamicInfoVO.getSaveStatus()); + if ("save".equals(msgDynamicInfoEO.getSaveStatus())) { + msgDynamicInfoEO.setValidFlag(1); + msgDynamicInfoEO.setPubTime(null); + }else { + msgDynamicInfoEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()); + msgDynamicInfoEO.setPubTime(msgDynamicInfoVO.getPubTime()); + } + //复制在富文本编辑器中的表格,保存后缺少border + if(StringUtils.isNotEmpty(msgDynamicInfoEO.getContent())){ + //查询是否有表格 + int index = msgDynamicInfoEO.getContent().indexOf("-1){ + int borderIndex = msgDynamicInfoEO.getContent().indexOf("
    msgIds=new ArrayList(); + msgIds.add(msgDynamicInfoVO.getId()); + msgFileEODao.deleteLogicInBatch(new ArrayList(msgIds)); + //重新将文件添加到附件表中 + List msgFileEOList = msgDynamicInfoVO.getMsgFileEOList(); + if(msgFileEOList != null && !msgFileEOList.isEmpty()){ + for( MsgFileEO msgFileEO : msgFileEOList){ + msgFileEO.setId(UUIDUtils.randomUUID20()); + msgFileEO.setMsgId(msgDynamicInfoVO.getId()); + msgFileEO.setCreationTime(nowDate); + msgFileEO.setModifyTime(nowDate); + msgFileEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()); + msgFileEO.setFileType("FILE"); + msgFileEODao.insert(msgFileEO); + } + } +// if(elasflag && !"save".equals(msgDynamicInfoEO.getSaveStatus())){ +// createStandMQService.sendMsgdyinfoMQ(msgDynamicInfoEO,"update"); +// } + + } + + @Override + public List queryByPage(MsgDynamicInfoEOPage page) { + return null; + } + + @Override + public void updateCollectAndShare(MsgDynamicInfoVO msgDynamicInfoVO) { + //修改收藏表中 + PersonCollectEOPage personCollectEOPage = new PersonCollectEOPage(); + personCollectEOPage.setValidFlag("0"); + personCollectEOPage.setCollectResId(msgDynamicInfoVO.getId()); + List listCollect = personCollectEODao.queryByList(personCollectEOPage); + if (listCollect != null && listCollect.size() > 0) { + for (TsPersonCollect getCollect : listCollect) { + TsPersonCollect collectEO = new TsPersonCollect(); + collectEO.setId(getCollect.getId()); + collectEO.setCollectTitle(msgDynamicInfoVO.getTitle()); + personCollectEODao.updateById(collectEO); + } + } + + // 修改分享表中 + PersonShareEOPage personShareEOPage = new PersonShareEOPage(); + personShareEOPage.setValidFlag("0"); + personShareEOPage.setResId(msgDynamicInfoVO.getId()); + List shareList = personShareEODao.queryByList(personShareEOPage); + if(shareList != null && shareList.size()>0){ + for(PersonShareEO getShare : shareList){ + PersonShareEO shareEO = new PersonShareEO(); + shareEO.setId(getShare.getId()); + shareEO.setResTitle(msgDynamicInfoVO.getTitle()); + personShareEODao.updateById(shareEO); + } + } + } + + +// 调用附件存入动态信息id + @Override + public Integer updateIdOfMsgFile(List msgFileEOS){ + return dao.updateIdOfMsgFile(msgFileEOS); + } + + @Override + public List queryByList(MsgDynamicInfoEOPage page) { + return null; + } + + @Override + public void deleteLogicInBatch(List ids){ + dao.deleteLogicInBatch(ids); + // 删除消息附件内容 + msgFileEODao.deleteLogicInBatch(ids); + + //删除成功后,将索引中对应数据删除 +// if(ids != null && ids.size()>0){ +// for(String id : ids){ +// if(elasflag) { +// StandLawsEO standLawsEO = new StandLawsEO(); +// standLawsEO.setId(id); +// standLawsEO.setType("msgdyinfo"); +// sarStandAndLawsEOService.deleteFomrIndex(standLawsEO); +// } +// deleteCollectAndShare(id); +// } +// } + + } + + /** + * @Author yangxuenan + * @Description 同步删除收藏分享 + * Date 2019/1/24 15:14 + * @Param [resId] + * @return void + **/ + @Override + public void deleteCollectAndShare(String resId) { + //删除收藏表中 + PersonCollectEOPage personCollectEOPage = new PersonCollectEOPage(); + personCollectEOPage.setValidFlag("0"); + personCollectEOPage.setCollectResId(resId); + List listCollect = personCollectEODao.queryByList(personCollectEOPage); + if (listCollect != null && listCollect.size() > 0) { + for (TsPersonCollect getCollect : listCollect) { + TsPersonCollect collectEO = new TsPersonCollect(); + collectEO.setId(getCollect.getId()); + collectEO.setValidFlag(1); + personCollectEODao.updateById(collectEO); + } + } + + // 删除分享表中 + PersonShareEOPage personShareEOPage = new PersonShareEOPage(); + personShareEOPage.setValidFlag("0"); + personShareEOPage.setResId(resId); + List shareList = personShareEODao.queryByList(personShareEOPage); + if(shareList != null && shareList.size()>0){ + for(PersonShareEO getShare : shareList){ + PersonShareEO shareEO = new PersonShareEO(); + shareEO.setId(getShare.getId()); + shareEO.setValidFlag(1); + personShareEODao.updateById(shareEO); + } + } + } + + /** + * @Author yangxuenan + * @Description 根据id查询详细信息 + * Date 2018/10/10 11:25 + * @Param [id] + * @return com.adc.da.lawss.entity.MsgDynamicInfoEO + **/ + @Override + public MsgDynamicInfoEO selectByMsgId(String id){ + MsgDynamicInfoEO msgDynamicInfoEO = dao.selectByMsgId(id); + if(msgDynamicInfoEO != null){ + MsgFileEOPage msgFileEOPage = new MsgFileEOPage(); + msgFileEOPage.setMsgId(id); + msgFileEOPage.setValidFlag("0"); + List getList = msgFileEODao.queryByList(msgFileEOPage); + List getPicList = new ArrayList<>(); + List getFileList = new ArrayList<>(); + if(getList != null){ + if(getList.size() > 0){ + for(MsgFileEO msg : getList){ + if(StringUtils.isNotEmpty(msg.getAttId())){ + AttFileEO attFile = attFileEOService.getFileInfo(msg.getAttId()); + msg.setFilePath(attFile.getFilePath()); + // TODO 此处有一个坑,在看MsgFileEO时请注意几个文件的名称参数的get/set方法 + msg.setFileName(attFile.getFileName()); + msg.setOriginFileName(attFile.getOldFileName()); + if("PIC".equals(msg.getFileType())){ + getPicList.add(msg); + } else if ("FILE".equals(msg.getFileType())){ + getFileList.add(msg); + } + } + } + } + } + msgDynamicInfoEO.setGetPicList(getPicList); + msgDynamicInfoEO.setGetFileList(getFileList); + + } + + return msgDynamicInfoEO; + } + + @Override + public Integer selectDynamicInfoUpdateNumINLAND(Date visitTime) { + return null; + } + + @Override + public Integer selectDynamicInfoUpdateNumFOREIGN(Date visitTime) { + return null; + } + + @Override + public Integer selectDynamicInfoUpdateNumINLANDAll() { + return null; + } + + @Override + public Integer selectDynamicInfoUpdateNumFOREIGNAll() { + return null; + } + + @Override + public List selectRecommendMsgDynamicInfo(MsgDynamicInfoEOPage pagenew){ + return dao.selectRecommendMsgDynamicInfo(pagenew); + } + + @Override + public List getMsgDynamicInfoForExport(MsgDynamicInfoEOPage page) { + List result = dao.getMsgDynamicInfoForExport(page); + return result; + } + + @Override + public List showDetailsByRole(MsgDynamicInfoEO msgDynamicInfoEO){ + return dao.showDetailsByRole(msgDynamicInfoEO); + } + + @Override + public List queryAllByPage(MsgDynamicInfoEOPage page) { + Integer rowCount = dao.queryAllByCount(page); + page.getPager().setRowCount(rowCount); + return dao.queryAllByPage(page); + } + + @Override + public int queryAllByCount(MsgDynamicInfoEOPage msgDynamicInfoEO) { + return 0; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/Impl/MsgFileEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/Impl/MsgFileEOServiceImpl.java new file mode 100644 index 00000000..c9ecb302 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/service/Impl/MsgFileEOServiceImpl.java @@ -0,0 +1,62 @@ +package com.adc.da.slrs.msgDynamicInfo.service.Impl; + + +import com.adc.da.slrs.msgDynamicInfo.dao.MsgFileEODao; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgFileEO; +import com.adc.da.slrs.msgDynamicInfo.page.MsgFileEOPage; +import com.adc.da.slrs.msgDynamicInfo.service.IMsgFileEOService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + + +/** + * + *
    + * 功能:MSG_FILE MsgFileEOService
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Service("msgFileEOService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class MsgFileEOServiceImpl extends ServiceImpl implements IMsgFileEOService { + + private static final Logger logger = LoggerFactory.getLogger(IMsgFileEOService.class); + + @Autowired + private MsgFileEODao dao; + + public MsgFileEODao getDao() { + return dao; + } + +// 更新消息附件表 + @Override + public void updateByPrimaryKeySelective(List msgFileEO) { +//必须修改成List + for ( MsgFileEO msgFileEO1:msgFileEO) { + msgFileEO1.setModifyTime(new Date()); + dao.updateByPrimaryKeySelective(msgFileEO1); + } + } + + @Override + public void deleteLogicInBatch(List ids) { + + } + + @Override + public List queryByList(MsgFileEOPage msgFileEOPage) { + return null; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/vo/MsgDynamicInfoVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/vo/MsgDynamicInfoVO.java new file mode 100644 index 00000000..6933859d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/vo/MsgDynamicInfoVO.java @@ -0,0 +1,303 @@ +package com.adc.da.slrs.msgDynamicInfo.vo; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.msgDynamicInfo.entity.MsgFileEO; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; +import java.util.List; + +/** + * Created by Administrator on 2018/9/13 19:29 + */ +public class MsgDynamicInfoVO extends BaseEntity { + + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String pubOrg; + private String pubUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date pubTime; + private String linkUri; + private String content; + private String contentText; + private String title; + private String msgMode; + private String msgType; + private String id; + private Integer isPicMsg; +//新填字段 +// 文件ID + private String attId; +// 文件后缀(类型) + private String fileSuffix; +// 文件名称 + private String fileName; +// 消息Id + private String msgId; + private String saveStatus; + private String source; + private List msgFileEOList; + private MsgFileEO picFileEO; + private String releventGroup;//相关工作组 + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • pubOrg -> pub_org
  • + *
  • pubUser -> pub_user
  • + *
  • pubTime -> pub_time
  • + *
  • linkUri -> link_uri
  • + *
  • content -> content
  • + *
  • title -> title
  • + *
  • msgMode -> msg_mode
  • + *
  • msgType -> msg_type
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "validFlag": return "valid_flag"; + case "pubOrg": return "pub_org"; + case "pubUser": return "pub_user"; + case "pubTime": return "pub_time"; + case "linkUri": return "link_uri"; + case "content": return "content"; + case "title": return "title"; + case "msgMode": return "msg_mode"; + case "msgType": return "msg_type"; + case "id": return "id"; + case "isPicMsg": return "is_pic_msg"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • valid_flag -> validFlag
  • + *
  • pub_org -> pubOrg
  • + *
  • pub_user -> pubUser
  • + *
  • pub_time -> pubTime
  • + *
  • link_uri -> linkUri
  • + *
  • content -> content
  • + *
  • title -> title
  • + *
  • msg_mode -> msgMode
  • + *
  • msg_type -> msgType
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "valid_flag": return "validFlag"; + case "pub_org": return "pubOrg"; + case "pub_user": return "pubUser"; + case "pub_time": return "pubTime"; + case "link_uri": return "linkUri"; + case "content": return "content"; + case "title": return "title"; + case "msg_mode": return "msgMode"; + case "msg_type": return "msgType"; + case "id": return "id"; + case "is_pic_msg": return "isPicMsg"; + default: return null; + } + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Integer getValidFlag() { + return validFlag; + } + + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + public String getPubOrg() { + return pubOrg; + } + + public void setPubOrg(String pubOrg) { + this.pubOrg = pubOrg; + } + + public String getPubUser() { + return pubUser; + } + + public void setPubUser(String pubUser) { + this.pubUser = pubUser; + } + + public Date getPubTime() { + return pubTime; + } + + public void setPubTime(Date pubTime) { + this.pubTime = pubTime; + } + + public String getLinkUri() { + return linkUri; + } + + public void setLinkUri(String linkUri) { + this.linkUri = linkUri; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getMsgMode() { + return msgMode; + } + + public void setMsgMode(String msgMode) { + this.msgMode = msgMode; + } + + public String getMsgType() { + return msgType; + } + + public void setMsgType(String msgType) { + this.msgType = msgType; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + public String getFileSuffix() { + return fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getMsgId() { + return msgId; + } + + public void setMsgId(String msgId) { + this.msgId = msgId; + } + + public List getMsgFileEOList() { + return msgFileEOList; + } + + public void setMsgFileEOList(List msgFileEOList) { + this.msgFileEOList = msgFileEOList; + } + + public Integer getIsPicMsg() { + return isPicMsg; + } + + public void setIsPicMsg(Integer isPicMsg) { + this.isPicMsg = isPicMsg; + } + + public void setPicFileEO(MsgFileEO picFileEO) { + this.picFileEO = picFileEO; + } + + public MsgFileEO getPicFileEO(){ + return this.picFileEO; + } + + public String getContentText() { + return contentText; + } + + public void setContentText(String contentText) { + this.contentText = contentText; + } + + public String getSaveStatus() { + return saveStatus; + } + + public void setSaveStatus(String saveStatus) { + this.saveStatus = saveStatus; + } + + public String getReleventGroup() { + return releventGroup; + } + + public void setReleventGroup(String releventGroup) { + this.releventGroup = releventGroup; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/vo/RecommendVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/vo/RecommendVO.java new file mode 100644 index 00000000..36634bcc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/msgDynamicInfo/vo/RecommendVO.java @@ -0,0 +1,56 @@ +package com.adc.da.slrs.msgDynamicInfo.vo; + +import com.adc.da.base.entity.BaseEntity; + +/** + * Created by gaoayn on 2018/9/13 19:29 + * 用于搜索中心的推荐 + */ +public class RecommendVO extends BaseEntity { + + private String nameShow; + private String numberShow; + private String typeShow; + private String id; + private String module; + + public String getNameShow() { + return nameShow; + } + + public void setNameShow(String nameShow) { + this.nameShow = nameShow; + } + + public String getNumberShow() { + return numberShow; + } + + public void setNumberShow(String numberShow) { + this.numberShow = numberShow; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTypeShow() { + return typeShow; + } + + public void setTypeShow(String typeShow) { + this.typeShow = typeShow; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/controller/OtConvertMqController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/controller/OtConvertMqController.java new file mode 100644 index 00000000..80de0998 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/controller/OtConvertMqController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.otConvertMq.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** +*

    + * 文档转换记录信息表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-08-20 +*/ +@RestController +@Api(tags = "|OtConvertMq|") +@RequestMapping("/otConvertMq/ot-convert-mq") +public class OtConvertMqController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/dao/OtConvertMqDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/dao/OtConvertMqDao.java new file mode 100644 index 00000000..f976f3ae --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/dao/OtConvertMqDao.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.otConvertMq.dao; + +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

    + * 文档转换记录信息表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-08-20 + */ +@Repository +public interface OtConvertMqDao extends BaseMapper { + + int deleteByAttId(String value); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/entity/OtConvertMq.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/entity/OtConvertMq.java new file mode 100644 index 00000000..29043ef4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/entity/OtConvertMq.java @@ -0,0 +1,100 @@ +package com.adc.da.slrs.otConvertMq.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +import java.util.Date; + +/** + *

    + * 文档转换记录信息表 + *

    + * + * @author super_liu + * @since 2021-08-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="OtConvertMq对象", description="文档转换记录信息表") +public class OtConvertMq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "消息队列编码") + @TableField("MQ_CODE") + private String mqCode; + + @ApiModelProperty(value = "队列状态") + @TableField("MQ_STATE") + private Integer mqState; + + @TableField("USER_ID") + private String userId; + + @ApiModelProperty(value = "文件路径") + @TableField("FILE_PATH") + private String filePath; + + @ApiModelProperty(value = "文件ID") + @TableField("ATT_ID") + private String attId; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @TableField(exist = false) + private String fileOriginPath; + + //向文件表添加信息 + @TableField(exist = false) + private String lawsId; + @TableField(exist = false) + private String resId; + @TableField(exist = false) + private String convertType; + @TableField(exist = false) + private String pdfPath; + @TableField(exist = false) + private String pdfId; + @TableField(exist = false) + private String addOrUp; + @TableField(exist = false) + private String oldFileName; + @TableField(exist = false) + private String standFileClassify; + @TableField(exist = false) + private String lawsFileClassify; + @TableField(exist = false) + private String oriAttId; + @TableField(exist = false) + private int againNum; + @TableField(exist = false) + private String fileSuffix; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/service/IOtConvertMqService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/service/IOtConvertMqService.java new file mode 100644 index 00000000..9a9f8c0a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/service/IOtConvertMqService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.otConvertMq.service; + +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 文档转换记录信息表 服务类 + *

    + * + * @author super_liu + * @since 2021-08-20 + */ +public interface IOtConvertMqService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/service/impl/OtConvertMqServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/service/impl/OtConvertMqServiceImpl.java new file mode 100644 index 00000000..44f6cad1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otConvertMq/service/impl/OtConvertMqServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.otConvertMq.service.impl; + +import com.adc.da.slrs.otConvertMq.dao.OtConvertMqDao; +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.adc.da.slrs.otConvertMq.service.IOtConvertMqService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 文档转换记录信息表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-08-20 + */ +@Service +public class OtConvertMqServiceImpl extends ServiceImpl implements IOtConvertMqService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/controller/OtSvppsController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/controller/OtSvppsController.java new file mode 100644 index 00000000..ed661e2f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/controller/OtSvppsController.java @@ -0,0 +1,54 @@ +package com.adc.da.slrs.otSvpps.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.otSvpps.page.OtSvppsEOPage; +import com.adc.da.slrs.otSvpps.service.IOtSvppsService; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.otSvpps.entity.OtSvpps; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * SVPPS结构数据 SVPPS数据 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库--SVPPS结构数据") +@RequestMapping("/${restPath}/lawss/otSvpps") +public class OtSvppsController extends BaseController { + + @Autowired + private IOtSvppsService otSvppsEOService; + + @ApiOperation(value = "|OtSvppsEO|查询下三级") + @GetMapping("/selectThree") + public ResponseMessage> selectThree() throws Exception { + OtSvppsEOPage otSvppsEOPage = new OtSvppsEOPage(); + otSvppsEOPage.setSvppsCode("%.%"); + otSvppsEOPage.setSvppsCodeOperator("not like"); + otSvppsEOPage.setValidFlag("0"); + otSvppsEOPage.setOrderBy("OT_SVPPS.SVPPS_CODE ASC"); + List resultList = otSvppsEOService.queryByList(otSvppsEOPage); + for(OtSvpps otSvppsEO : resultList){ + if(StringUtils.isBlank(otSvppsEO.getSvppsCnName()) || StringUtils.isEmpty(otSvppsEO.getSvppsCnName())){ + otSvppsEO.setSvppsCnName(""); + } + } + return Result.success(resultList); + + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/dao/OtSvppsDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/dao/OtSvppsDao.java new file mode 100644 index 00000000..66531789 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/dao/OtSvppsDao.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.otSvpps.dao; + +import com.adc.da.slrs.otSvpps.entity.OtSvpps; +import com.adc.da.slrs.otSvpps.page.OtSvppsEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * SVPPS结构数据 SVPPS数据 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface OtSvppsDao extends BaseMapper { + + List queryByList(OtSvppsEOPage otSvppsEOPage); + + List getNamesByIds(@Param("list") String[] list); + + List getNamesTipByIds(@Param("list") String[] list); + + List getIdsByNames(@Param("list") String[] list); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/entity/OtSvpps.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/entity/OtSvpps.java new file mode 100644 index 00000000..7160646a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/entity/OtSvpps.java @@ -0,0 +1,114 @@ +package com.adc.da.slrs.otSvpps.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.utils.treetool.annotation.TreeNodeId; +import com.adc.da.utils.treetool.annotation.TreeNodeName; +import com.adc.da.utils.treetool.annotation.TreeNodeOrder; +import com.adc.da.utils.treetool.annotation.TreeNodeParentId; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * SVPPS结构数据 SVPPS数据 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="OtSvpps对象", description="SVPPS结构数据 SVPPS数据") +public class OtSvpps extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键 主键ID") + @TableId("ID") + @TreeNodeId + private String id; + + @ApiModelProperty(value = "父级ID 父级ID引用本表的主键") + @TableField("P_ID") + @TreeNodeParentId + private String pId; + + @ApiModelProperty(value = "一级编码 对应excel中的B列") + @TableField("F_NUM") + private String fNum; + + @ApiModelProperty(value = "二级编码 对应Excel中的C列") + @TableField("S_NUM") + private String sNum; + + @ApiModelProperty(value = "三级编码 对应excel中的D列") + @TableField("T_NUM") + private String tNum; + + @ApiModelProperty(value = "SVPPS编码 对应Excel中的E列") + @TableField("SVPPS_CODE") + private String svppsCode; + + @ApiModelProperty(value = "SVPPS英文名称 对应excel中的G列") + @TableField("SVPPS_EN_NAME") + private String svppsEnName; + + @ApiModelProperty(value = "SVPPS中文名称 对应excel中的I列") + @TableField("SVPPS_CN_NAME") + @TreeNodeName + private String svppsCnName; + + @ApiModelProperty(value = "同步数据ID 对应同步系统中的ID") + @TableField("SYNC_ID") + private String syncId; + + @ApiModelProperty(value = "是否有效 默认为0") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间 数据入库时间") + @TableField("CREATED_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createdTime; + + @ApiModelProperty(value = "更新时间 数据更新时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "自定义数据标识") + @TableField("SELF_FALG") + private String selfFalg; + + @TreeNodeOrder + private Integer orderNum; + + @TableField(exist = false) + private List childrenList = new ArrayList<>(); + + //是否为自定义标识 + @TableField(exist = false) + private String selfFlag; + + //排序顺序2021-2-19 + @TableField(exist = false) + private String selfSort; + + //同步时用于记录上级编码 + @TableField(exist = false) + private String parentCode; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/page/OtSvppsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/page/OtSvppsEOPage.java new file mode 100644 index 00000000..951f4bd5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/page/OtSvppsEOPage.java @@ -0,0 +1,44 @@ +package com.adc.da.slrs.otSvpps.page; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:OT_SVPPS OtSvppsEOPage
    + * 作者:code generator
    + * 日期: 2020-12-30
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class OtSvppsEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String pId; + private String pIdOperator = "="; + private String fNum; + private String fNumOperator = "="; + private String sNum; + private String sNumOperator = "="; + private String tNum; + private String tNumOperator = "="; + private String svppsCode; + private String svppsCodeOperator = "="; + private String svppsEnName; + private String svppsEnNameOperator = "="; + private String svppsCnName; + private String svppsCnNameOperator = "="; + private String syncId; + private String syncIdOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String createdTime; + private String createdTime1; + private String createdTime2; + private String createdTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/service/IOtSvppsService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/service/IOtSvppsService.java new file mode 100644 index 00000000..8ebc0d53 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/service/IOtSvppsService.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.otSvpps.service; + +import com.adc.da.slrs.otSvpps.entity.OtSvpps; +import com.adc.da.slrs.otSvpps.page.OtSvppsEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * SVPPS结构数据 SVPPS数据 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface IOtSvppsService extends IService { + + List queryByList(OtSvppsEOPage otSvppsEOPage); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/service/impl/OtSvppsServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/service/impl/OtSvppsServiceImpl.java new file mode 100644 index 00000000..2035f62e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/otSvpps/service/impl/OtSvppsServiceImpl.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.otSvpps.service.impl; + +import com.adc.da.slrs.otSvpps.entity.OtSvpps; +import com.adc.da.slrs.otSvpps.dao.OtSvppsDao; +import com.adc.da.slrs.otSvpps.page.OtSvppsEOPage; +import com.adc.da.slrs.otSvpps.service.IOtSvppsService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * SVPPS结构数据 SVPPS数据 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class OtSvppsServiceImpl extends ServiceImpl implements IOtSvppsService { + + @Autowired + private OtSvppsDao dao; + + @Override + public List queryByList(OtSvppsEOPage otSvppsEOPage){ + return dao.queryByList(otSvppsEOPage); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/person/dao/PersonCollectEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/person/dao/PersonCollectEODao.java new file mode 100644 index 00000000..da953edb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/person/dao/PersonCollectEODao.java @@ -0,0 +1,30 @@ +//package com.adc.da.slrs.person.dao; +// +//import com.adc.da.person.page.PersonCollectEOPage; +//import com.adc.da.slrs.person.entity.PersonCollectEO; +//import com.baomidou.mybatisplus.core.mapper.BaseMapper; +//import org.apache.ibatis.annotations.Param; +// +//import java.util.List; +// +///** +// * +// *
    +// * 功能:TS_PERSON_COLLECT PersonCollectEODao
    +// * 作者:code generator
    +// * 日期: 2018-09-03
    +// * 版权所有:版权归北京卡达克数据技术中心所有。
    +// */ +//public interface PersonCollectEODao extends BaseMapper { +// +// +// public List queryByPersonCollectPage(PersonCollectEOPage page); +// +// int queryByPersonCollectPageCount(PersonCollectEOPage page); +// +// int deleteByIdList(@Param("idList") List idList); +// +// List queryByList(PersonCollectEOPage personCollectEOPage); +// +// int deleteByResId(@Param("resId") String resId); +//} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/person/dao/PersonShareEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/person/dao/PersonShareEODao.java new file mode 100644 index 00000000..7b593404 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/person/dao/PersonShareEODao.java @@ -0,0 +1,26 @@ +//package com.adc.da.slrs.person.dao; +// +//import com.adc.da.person.entity.PersonShareEO; +//import com.adc.da.person.page.PersonShareEOPage; +//import com.baomidou.mybatisplus.core.mapper.BaseMapper; +//import org.apache.ibatis.annotations.Param; +// +//import java.util.List; +// +///** +// * +// *
    +// * 功能:TS_PERSON_SHARE PersonShareEODao
    +// * 作者:code generator
    +// * 日期: 2018-09-03
    +// * 版权所有:版权归北京卡达克数据技术中心所有。
    +// */ +//public interface PersonShareEODao extends BaseMapper { +// +// void deleteByIdList(@Param("idList") List idList); +// +// int deleteByResId(@Param("resId") String resId); +// +// List queryByList(PersonShareEOPage personShareEOPage); +// +//} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/person/entity/PersonCollectEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/person/entity/PersonCollectEO.java new file mode 100644 index 00000000..3ad10f4c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/person/entity/PersonCollectEO.java @@ -0,0 +1,212 @@ +//package com.adc.da.slrs.person.entity; +// +//import com.adc.da.base.entity.BaseEntity; +//import com.adc.da.person.entity.PersonNoteEO; +//import com.fasterxml.jackson.annotation.JsonFormat; +// +//import java.util.ArrayList; +//import java.util.Date; +//import java.util.List; +// +///** +// * 功能:TS_PERSON_COLLECT PersonCollectEOEntity
    +// * 作者:code generator
    +// * 日期: 2018-09-03
    +// * 版权所有:版权归北京卡达克数据技术中心所有。
    +// */ +//public class PersonCollectEO extends BaseEntity { +// +// //@org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") +// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") +// private Date modifyTime; +// //@org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") +// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") +// +// private Date creationTime; +// private Integer validFlag; +// private String collectResId; +// private String collectInfoUri; +// private String collectTitle; +// private String collectType; +// private String userId; +// private String id; +// +// //追加字段 +// private List noteList = new ArrayList<>(); +// +// +// +// /** +// * java字段名转换为原始数据库列名。如果不存在则返回null
    +// *

    字段列表:

    +// *
  • modifyTime -> modify_time
  • +// *
  • creationTime -> creation_time
  • +// *
  • validFlag -> valid_flag
  • +// *
  • collectResId -> collect_res_id
  • +// *
  • collectInfoUri -> collect_info_uri
  • +// *
  • collectTitle -> collect_title
  • +// *
  • collectType -> collect_type
  • +// *
  • userId -> user_id
  • +// *
  • id -> id
  • +// */ +// public static String fieldToColumn(String fieldName) { +// if (fieldName == null){ return null;} +// switch (fieldName) { +// case "modifyTime": return "modify_time"; +// case "creationTime": return "creation_time"; +// case "validFlag": return "valid_flag"; +// case "collectResId": return "collect_res_id"; +// case "collectInfoUri": return "collect_info_uri"; +// case "collectTitle": return "collect_title"; +// case "collectType": return "collect_type"; +// case "userId": return "user_id"; +// case "id": return "id"; +// case "noteContent": return "noteContent"; +// default: return null; +// } +// } +// +// /** +// * 原始数据库列名转换为java字段名。如果不存在则返回null
    +// *

    字段列表:

    +// *
  • modify_time -> modifyTime
  • +// *
  • creation_time -> creationTime
  • +// *
  • valid_flag -> validFlag
  • +// *
  • collect_res_id -> collectResId
  • +// *
  • collect_info_uri -> collectInfoUri
  • +// *
  • collect_title -> collectTitle
  • +// *
  • collect_type -> collectType
  • +// *
  • user_id -> userId
  • +// *
  • id -> id
  • +// */ +// public static String columnToField(String columnName) { +// if (columnName == null){ return null;} +// switch (columnName) { +// case "modify_time": return "modifyTime"; +// case "creation_time": return "creationTime"; +// case "valid_flag": return "validFlag"; +// case "collect_res_id": return "collectResId"; +// case "collect_info_uri": return "collectInfoUri"; +// case "collect_title": return "collectTitle"; +// case "collect_type": return "collectType"; +// case "user_id": return "userId"; +// case "id": return "id"; +// case "noteContent": return "noteContent"; +// default: return null; +// } +// } +// +// /** **/ +// public Date getModifyTime() { +// return this.modifyTime; +// } +// +// /** **/ +// public void setModifyTime(Date modifyTime) { +// this.modifyTime = modifyTime; +// } +// +// /** **/ +// public Date getCreationTime() { +// return this.creationTime; +// } +// +// /** **/ +// public void setCreationTime(Date creationTime) { +// this.creationTime = creationTime; +// } +// +// /** **/ +// public Integer getValidFlag() { +// return this.validFlag; +// } +// +// /** **/ +// public void setValidFlag(Integer validFlag) { +// this.validFlag = validFlag; +// } +// +// /** **/ +// public String getCollectResId() { +// return this.collectResId; +// } +// +// /** **/ +// public void setCollectResId(String collectResId) { +// this.collectResId = collectResId; +// } +// +// /** **/ +// public String getCollectInfoUri() { +// return this.collectInfoUri; +// } +// +// /** **/ +// public void setCollectInfoUri(String collectInfoUri) { +// this.collectInfoUri = collectInfoUri; +// } +// +// /** **/ +// public String getCollectTitle() { +// return this.collectTitle; +// } +// +// /** **/ +// public void setCollectTitle(String collectTitle) { +// this.collectTitle = collectTitle; +// } +// +// /** **/ +// public String getCollectType() { +// return this.collectType; +// } +// +// /** **/ +// public void setCollectType(String collectType) { +// this.collectType = collectType; +// } +// +// /** **/ +// public String getUserId() { +// return this.userId; +// } +// +// /** **/ +// public void setUserId(String userId) { +// this.userId = userId; +// } +// +// /** **/ +// public String getId() { +// return this.id; +// } +// +// /** **/ +// public void setId(String id) { +// this.id = id; +// } +// +// public List getNoteList() { +// return noteList; +// } +// +// public void setNoteList(List noteList) { +// this.noteList = noteList; +// } +// +// @Override +// public String toString() { +// return "PersonCollectEO{" + +// "modifyTime=" + modifyTime + +// ", creationTime=" + creationTime + +// ", validFlag=" + validFlag + +// ", collectResId='" + collectResId + '\'' + +// ", collectInfoUri='" + collectInfoUri + '\'' + +// ", collectTitle='" + collectTitle + '\'' + +// ", collectType='" + collectType + '\'' + +// ", userId='" + userId + '\'' + +// ", id='" + id + '\'' + +// ", noteList=" + noteList + +// '}'; +// } +//} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/entity/exportExcel.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/entity/exportExcel.java new file mode 100644 index 00000000..4fd9072e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/entity/exportExcel.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.processModel.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +@Data +public class exportExcel { + + @Excel(name = "企标类别" ,orderNum = "0" , width = 20.0 ) + private String bussSort; + + @Excel(name = "企标名称",orderNum = "1", width = 20.0) + private String esName; + + @Excel(name = "制修订类型",orderNum = "2", width = 20.0) + private String reviseStatus; + + @Excel(name = "起草责任单位" , orderNum = "3", width = 20.0) + private String unitName; + + @Excel(name = "起草人" , orderNum = "4", width = 20.0) + private String drafterName; + + @Excel(name = "评审责任人" , orderNum = "5", width = 20.0) + private String resPersonName; + + @Excel(name = "工作组组长" , orderNum = "6", width = 20.0) + private String wgLeaderName; + + @Excel(name = "计划初稿完成日期" , orderNum = "7", width = 20.0) + private String draftTime; + + @Excel(name = "计划标准发布时间", orderNum = "8", width = 18.0) + private String releaseTime; + + @Excel(name = "立项完成时间" ,orderNum = "9", width = 18.0) + private String endTime; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/entity/importExcelDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/entity/importExcelDTO.java new file mode 100644 index 00000000..aedda55a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/entity/importExcelDTO.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.processModel.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +@Data +public class importExcelDTO { + + @Excel(name = "企标类别" ,orderNum = "0" , width = 20.0 ) + private String bussSort; + + + @Excel(name = "企标名称",orderNum = "1", width = 20.0) + private String esName; + + + @Excel(name = "制修订类型",orderNum = "2", width = 20.0) + private String reviseStatus; + + @Excel(name = "起草责任单位" , orderNum = "3", width = 20.0) + private String unitName; + + + private String unit; + + private String drafterName; + + @Excel(name = "起草人" , orderNum = "4", width = 20.0) + private String drafter; + + + private String resPersonName; + + @Excel(name = "评审责任人" , orderNum = "5", width = 20.0) + private String resPerson; + + + private String wgLeaderName; + + @Excel(name = "工作组组长" , orderNum = "6", width = 20.0) + private String wgLeader; + + @Excel(name = "计划初稿完成日期" , orderNum = "7", width = 20.0) + private String draftTime; + + @Excel(name = "计划标准发布时间", orderNum = "8", width = 18.0) + private String releaseTime; + + @Excel(name = "立项完成时间" ,orderNum = "9", width = 18.0) + private String endTime; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/exportWkExcel.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/exportWkExcel.java new file mode 100644 index 00000000..f246215b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/exportWkExcel.java @@ -0,0 +1,104 @@ +package com.adc.da.slrs.processModel; + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.entity.exportExcel; +import com.adc.da.slrs.processModel.entity.importExcelDTO; +import com.adc.da.slrs.processModel.service.impl.IExportServiceImpl; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@Api(description = "|SapMeeting|") +@RequestMapping("/api/importWkExcel") +public class exportWkExcel { + + + @Autowired + private IDicTypeEOService dicTypeEOService; + @Autowired + private IExportServiceImpl exportService; + + @ApiOperation(value = "|SysCorpEO|导出excel") + @PostMapping(value = "/exportqbzxdjh") + public void exportMsgDynamicInfoExcel( HttpServletResponse response, HttpServletRequest request) { + OutputStream os = null; + HSSFWorkbook workbook = null; + try { + String exportName="企标制修订计划模板"; + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xls", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.HSSF); + exportParams.setSheetName(exportName); +// List types=new ArrayList<>(); +// types.add("BUSSSTANDCLASS"); +// Map dicTypeEO = dicTypeEOService.getDicTypeListCodeByType(types); + Map dicTypeEO = getBussStandTypeData(); + workbook = ExcelExportUtilByWk.getHSSFWorkbook(exportParams, exportExcel.class,workbook,"1",dicTypeEO); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + /** + * 静态加载企标类别下拉框 + * @return + */ + private static Map getBussStandTypeData(){ + Map resultMap = new HashMap<>(); + List> bussStandTypeList = new ArrayList<>(); + char letter = 'A'; + for(letter = 'A'; letter <= 'Z'; ++letter){ + Map typeMap = new HashMap<>(); + typeMap.put("label","Q/FT "+letter); + typeMap.put("value","Q/FT "+letter); + bussStandTypeList.add(typeMap); + } + resultMap.put("BUSSSTANDCLASS",bussStandTypeList); + return resultMap; + } + + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importData") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "importFileId", required = false) String importFileId) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=exportService.delWithWkData(importFileId,stringBuilder); + if(null==res){ + return Result.error("-1","","请严格按照模板上传文件"); + }else if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/IExportService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/IExportService.java new file mode 100644 index 00000000..4bde425f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/IExportService.java @@ -0,0 +1,12 @@ +package com.adc.da.slrs.processModel.service; + +import com.adc.da.slrs.processModel.entity.importExcelDTO; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +public interface IExportService { + + List delWithWkData(String importFileId ,StringBuilder stringBuilder) throws Exception; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/impl/IExportServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/impl/IExportServiceImpl.java new file mode 100644 index 00000000..f4a3f745 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/service/impl/IExportServiceImpl.java @@ -0,0 +1,149 @@ +package com.adc.da.slrs.processModel.service.impl; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.slrs.processModel.entity.importExcelDTO; +import com.adc.da.slrs.processModel.service.IExportService; +import com.adc.da.slrs.processModel.utils.DateUtil; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.service.impl.TsUserServiceImpl; +import com.adc.da.sys.service.IDicTypeEOService; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +@Service +public class IExportServiceImpl implements IExportService { + + //查询数据字典 + @Autowired + private IDicTypeEOService dicTypeEOService; + + //机构数据 + @Autowired + private ITsInstitutionService tsInstitutionService; + + //人员数据 + @Autowired + private TsUserServiceImpl tsUserService; + + + @Autowired + private IAttFileEOService attFileEOService; + + @Value("${file.path}") + private String filePath;//文件存储路径 + + + @Override + public List delWithWkData(String importFileId ,StringBuilder stringBuilder) throws Exception { + + AttFileEO fileInfo = attFileEOService.getFileInfo(importFileId); + if(fileInfo!=null){ + //文件 + String importFilePath = filePath+fileInfo.getFilePath()+fileInfo.getFileName(); + File importFile = new File(importFilePath); + if(!importFile.exists()){ + return null; + } + // //获取数据字典数据 +// Map dicTypeEO = dicTypeEOService.getDicTypeListCode(); + //获取机构数据 + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.select("id","name"); + List tsInstitutions=tsInstitutionService.list(wrapper); + //获取人员数据 + QueryWrapper tsUserQueryWrapper=new QueryWrapper<>(); + tsUserQueryWrapper.select("ACCOUNT","UNAME"); + tsUserQueryWrapper.eq("VALID_FLAG","0"); + List tsUsers=tsUserService.list(tsUserQueryWrapper); + + //获取institution工具集合 + Map tsInstitutionMap=new HashMap<>(); + tsInstitutions.forEach(tsInstitution -> { + tsInstitutionMap.put(tsInstitution.getName(),tsInstitution.getId()); + }); + //获取user工具集合 + Map tsUserMap=new HashMap<>(); + tsUsers.forEach(tsUser -> { + tsUserMap.put(tsUser.getAccount(),tsUser.getUname()); + }); + List res= ExcelImportUtilByWk.readExcelpublic(importExcelDTO.class,importFile,stringBuilder); + if (null!=res) { + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i = 1; + for (importExcelDTO importExcelDTO : res) { + if (null != importExcelDTO.getWgLeader() && !"".equals(importExcelDTO.getWgLeader())) { + importExcelDTO.setWgLeaderName(tsUserMap.get(importExcelDTO.getWgLeader())+"("+importExcelDTO.getWgLeader()+")"); + if (null == tsUserMap.get(importExcelDTO.getWgLeader())) { + stringBuilder.append("第" + i + "行第7列工作组组长填写不符合格式要求请检查;"); + } + } + if (null != importExcelDTO.getUnitName() && !"".equals(importExcelDTO.getUnitName())) { + importExcelDTO.setUnit(tsInstitutionMap.get(importExcelDTO.getUnitName())); + if (null == tsInstitutionMap.get(importExcelDTO.getUnitName())) { + stringBuilder.append("第" + i + "行第4列起草责任单位填写不符合格式要求请检查;"); + } + } + if (null != importExcelDTO.getDrafter() && !"".equals(importExcelDTO.getDrafter())) { + importExcelDTO.setDrafterName(tsUserMap.get(importExcelDTO.getDrafter())+"("+importExcelDTO.getDrafter()+")"); + if (null == tsUserMap.get(importExcelDTO.getDrafter())) { + stringBuilder.append("第" + i + "行第5列起草人填写不符合格式要求请检查;"); + } + } + if (null != importExcelDTO.getResPerson() && !"".equals(importExcelDTO.getResPerson())) { + importExcelDTO.setResPersonName(tsUserMap.get(importExcelDTO.getResPerson())+"("+importExcelDTO.getResPerson()+")"); + if (null == tsUserMap.get(importExcelDTO.getResPerson())) { + stringBuilder.append("第" + i + "行第6列评审责任人填写不符合格式要求请检查;"); + } + } + try { + if (null != importExcelDTO.getEndTime() && !"".equals(importExcelDTO.getEndTime())) { + importExcelDTO.setEndTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getEndTime())))); + } + } catch (Exception e) { + stringBuilder.append("第" + i + "行第10列立项完成时间填写不符合格式要求请检查;"); + } + try { + if (null != importExcelDTO.getReleaseTime() && !"".equals(importExcelDTO.getReleaseTime())) { + importExcelDTO.setReleaseTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getReleaseTime())))); + } + } catch (Exception e) { + stringBuilder.append("第" + i + "行第9列计划标准发布时间填写不符合格式要求请检查;"); + } + try { + if (null != importExcelDTO.getDraftTime() && !"".equals(importExcelDTO.getDraftTime())) { + importExcelDTO.setDraftTime(formater.format(HSSFDateUtil.getJavaDate(Double.valueOf(importExcelDTO.getDraftTime())))); + } + } catch (Exception e) { + stringBuilder.append("第" + i + "行第8列计划初稿完成日期填写不符合格式要求请检查;"); + } + i++; + } + + return res; + }else { + return null; + } + }else{ + return null; + } + + + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/utils/DateUtil.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/utils/DateUtil.java new file mode 100644 index 00000000..ed7508cc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/processModel/utils/DateUtil.java @@ -0,0 +1,163 @@ +package com.adc.da.slrs.processModel.utils; + +import org.apache.commons.lang.StringUtils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @Description: 判断是否为日期格式 + * @Author: yangxuenan + * date: 2020/12/31 11:25 + */ +public class DateUtil { + + private static List dateFormatStr = new ArrayList<>(); + private static List dateRegExStr = new ArrayList<>(); + + static{ + dateFormatStr.add("yyyy-MM-dd"); + dateFormatStr.add("yyyy-M-d"); + dateFormatStr.add("yyyy-MM-d"); + dateFormatStr.add("yyyy-M-dd"); + dateFormatStr.add("yyyy/M/d"); + dateFormatStr.add("yyyy/MM/d"); + dateFormatStr.add("yyyy/M/dd"); + dateFormatStr.add("yyyy/MM/dd"); + dateRegExStr.add("^\\d{4}-\\d{2}-\\d{2}$"); + dateRegExStr.add("^\\d{4}-\\d{1}-\\d{1}$"); + dateRegExStr.add("^\\d{4}-\\d{2}-\\d{1}$"); + dateRegExStr.add("^\\d{4}-\\d{1}-\\d{2}$"); + dateRegExStr.add("^\\d{4}(\\/)\\d{1}(\\/)\\d{1}$"); + dateRegExStr.add("^\\d{4}(\\/)\\d{2}(\\/)\\d{1}$"); + dateRegExStr.add("^\\d{4}(\\/)\\d{1}(\\/)\\d{2}$"); + dateRegExStr.add("^\\d{4}(\\/)\\d{2}(\\/)\\d{2}$"); + } + + + /*** + * @Description: 判断多个日期是否都符合日期格式 + * @Author: yangxuenan + * @Date: 2020/12/31 11:31 + * @Param: [str] + * @Return: boolean + */ + public static boolean isValidDate(String str) throws Exception{ + //时间多了空格也可进行导入,所以当存在 “2021-01-01 2021-01-02” 的情况时,通过使用去除空格的方式进行验重 + str = str.trim().replace(" ",""); + String regEx="^[0-9/,-]+$"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(str); + if (!m.matches()) { + return false; + } + + String[] strArr = str.split(","); + for (String dateStr : strArr) { + boolean checkResult = true; + for(int checkIndex=0;checkIndex resultDateList = new ArrayList<>(); + SimpleDateFormat defaultDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + for (String dateStr : strArr) { + for(int checkIndex=0;checkIndex tClass , HSSFWorkbook wb,String flag, Map dicTypeEO){ + + // 第一步,创建一个HSSFWorkbook,对应一个Excel文件 + if(wb == null){ + wb = new HSSFWorkbook(); + } + + // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet + HSSFSheet sheet = wb.createSheet(sheetName.getSheetName()); + + // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制 + HSSFRow row = sheet.createRow(0); + + // 第四步,创建单元格,并设置值表头 设置表头居中 + HSSFCellStyle style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + + //声明列对象 + HSSFCell cell = null; + Map map=new HashMap<>(); + Field[] fields=tClass.getDeclaredFields(); + for (Field field:fields) { + field.setAccessible(true); + Excel excel=field.getAnnotation(Excel.class); + map.put(Integer.valueOf(excel.orderNum()),excel); + } + //创建标题 + HSSFDataFormat df= wb.createDataFormat(); + for (Integer i:map.keySet()) { + sheet.setColumnWidth(i, (int) (map.get(i).width()*256)); + cell = row.createCell(i); + cell.setCellValue(map.get(i).name()); + if (i>6){ + HSSFCellStyle style1 = wb.createCellStyle(); + style1.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式 + style1.setDataFormat(df.getFormat("yyyy-MM-dd")); + sheet.setDefaultColumnStyle(i,style1); + } + cell.setCellStyle(style); + + } + if ("1".equals(flag)){ + //冻结首行 + sheet.createFreezePane( 0, 1, 0, 1 ); + wb=putValue(sheet,wb,dicTypeEO); + } + + return wb; + } + + + public static Workbook exportWithData(ExportParams sheetName, Class tClass , List datas) { + Workbook wb=null; + + if(sheetName.getType().equals(ExcelType.XSSF)){ + wb = new XSSFWorkbook(); + }else { + wb = new HSSFWorkbook(); + } + + // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet + Sheet sheet = wb.createSheet(sheetName.getSheetName()); + + // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制 + Row row = sheet.createRow(0); + + // 第四步,创建单元格,并设置值表头 设置表头居中 + CellStyle style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + + //声明列对象 + Cell cell = null; + Map map=new HashMap<>(); + Map mapField=new HashMap<>(); + Field[] fields=tClass.getDeclaredFields(); + for (Field field:fields) { + field.setAccessible(true); + Excel excel=field.getAnnotation(Excel.class); + if (null!=excel) { + map.put(Integer.valueOf(excel.orderNum()), excel); + mapField.put(Integer.valueOf(excel.orderNum()), field); + } + } + //创建标题 + DataFormat df= wb.createDataFormat(); + for (Integer i:map.keySet()) { + sheet.setColumnWidth(i, (int) (map.get(i).width()*256)); + cell = row.createCell(i); + cell.setCellValue(map.get(i).name()); + if (null!=map.get(i).exportFormat()) { + CellStyle style1 = wb.createCellStyle(); + style1.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式 + style1.setDataFormat(df.getFormat(map.get(i).exportFormat())); + sheet.setDefaultColumnStyle(i, style1); + } + cell.setCellStyle(style); + } + //赋值数据 + int rowNum=1; + for (Object o:datas) { + Row row1=sheet.createRow(rowNum); + for (Integer i:map.keySet()) { + Cell cell1=row1.createCell(i); + Field field= null; + try { + field = o.getClass().getDeclaredField(mapField.get(i).getName()); + } catch (NoSuchFieldException e) { + log.warn(e.getMessage()); + } + if (null!=field) { + field.setAccessible(true); + try { + Object fieldVal = field.get(o); + if (null != map.get(i).exportFormat() && !"".equals(map.get(i).exportFormat())) { + cell1.setCellValue("null".equals(String.valueOf(fieldVal)) ? "" : TrainFormDate.dealWithTimeZoneyyyy(String.valueOf(fieldVal), map.get(i).exportFormat())); + } else { + cell1.setCellValue("null".equals(String.valueOf(fieldVal)) ? "" : String.valueOf(fieldVal)); + } + } catch (IllegalAccessException e) { + log.warn(e.getMessage()); + } + } + + } + System.out.println(o.toString()); + rowNum++; + } + + return wb; + } + + + + public static HSSFWorkbook putValue(HSSFSheet sheet, HSSFWorkbook wb, Map dicTypeEO) { + JSONArray array=JSONArray.parseArray(JSON.toJSONString(dicTypeEO.get("BUSSSTANDCLASS"))); + String[] bussSort=new String[array.size()]; + int i=0; + for (Object o: array) { + JSONObject object=JSONObject.parseObject(o.toString()); + if (!"".equals(object.getString("label"))){ + bussSort[i]=object.getString("value"); + i++; + } + } + bussSort=replaceNull(bussSort); + selectList(sheet,wb,0,0,bussSort); + String [] reviseStatus=new String [2]; + reviseStatus[0]="制定"; + reviseStatus[1]="修订"; + selectList(sheet,wb,2,2,reviseStatus); + + System.out.println(bussSort.toString()); + return wb; + } + + + /** + * firstRow 開始行號 根据此项目,默认为2(下标0开始) + * lastRow 根据此项目,默认为最大65535 + * firstCol 区域中第一个单元格的列号 (下标0开始) + * lastCol 区域中最后一个单元格的列号 + * strings 下拉内容 + * */ + public static void selectList(HSSFSheet sheet,HSSFWorkbook wbCreat,int firstCol,int lastCol,String[] strings ){ + HSSFSheet hidden=null; + if (null!=wbCreat.getSheet("hidden")){ + hidden=wbCreat.getSheet("hidden"); + }else { + hidden = wbCreat.createSheet("hidden"); + } + HSSFCell cell = null; + for (int i = 0, length = strings.length; i < length; i++) + { + String name = strings[i]; + if (firstCol==0) { + HSSFRow row = hidden.createRow(i); + cell = row.createCell(firstCol); + cell.setCellValue(name); + }else { + HSSFRow row = hidden.getRow(i); + cell = row.createCell(firstCol); + cell.setCellValue(name); + } + } + + Name namedCell = wbCreat.createName(); + String names=""; + if (0==firstCol) { + names="hidden"; + namedCell.setNameName("hidden"); + namedCell.setRefersToFormula("hidden!$A$1:$A$" + strings.length); + }else if (2==firstCol){ + names="hidden2"; + namedCell.setNameName("hidden2"); + namedCell.setRefersToFormula("hidden!$C$1:$C$" + strings.length); + } + //加载数据,将名称为hidden的 + DVConstraint constraint = DVConstraint.createFormulaListConstraint(names); + + // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列 + CellRangeAddressList addressList = new CellRangeAddressList(1, 65535, firstCol, + lastCol); + HSSFDataValidation validation = new HSSFDataValidation(addressList, constraint); + + //将第二个sheet设置为隐藏 + wbCreat.setSheetHidden(1, true); + + if (null != validation) + { + sheet.addValidationData(validation); + } + } +// 去除错误数据 + private static String[] replaceNull(String[] str){ + //用StringBuffer来存放数组中的非空元素,用“;”分隔 + StringBuffer sb = new StringBuffer(); + for(int i=0; i List readExcelpublic(Class tClass,MultipartFile file,StringBuilder stringBuilder) { + + Workbook workbook = null; + + try { + // 获取Excel后缀名 + String fileName = file.getOriginalFilename(); + if (fileName == null || fileName.isEmpty() || fileName.lastIndexOf(".") < 0) { + log.warn("解析Excel失败,因为获取到的Excel文件名非法!"); + return null; + } + String fileType = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()); + + // 获取Excel工作簿 + workbook = getWorkbook(file.getInputStream(), fileType); + + //不同需求条件下可以 在此处修改 来获取不同的对象 + List resultDataList = new ArrayList<>(); + + // 解析sheet + for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { + Sheet sheet = workbook.getSheetAt(sheetNum); + if(!"hidden".equals(sheet.getSheetName())) { + // 校验sheet是否合法 + if (sheet == null) { + continue; + } + + // 获取第一行数据 + int firstRowNum = sheet.getFirstRowNum(); + Row firstRow = sheet.getRow(firstRowNum); + if (null == firstRow) { + log.warn("解析Excel失败,在第一行没有读取到任何数据!"); + } + + // 解析每一行的数据,构造数据对象 + int rowStart = firstRowNum + 1; + int rowEnd = sheet.getPhysicalNumberOfRows(); + + Map map=new HashMap<>(); + Map mapExcel=new HashMap<>(); + Field[] fields=tClass.getDeclaredFields(); + for (Field field:fields) { + field.setAccessible(true); + Excel excel=field.getAnnotation(Excel.class); + if (null!=excel) { + map.put(Integer.valueOf(excel.orderNum()), field); + mapExcel.put(Integer.valueOf(excel.orderNum()), excel); + } + } + Row headRow=sheet.getRow(firstRowNum); + for (int j=0;j List readExcelpublic(Class tClass, File file, StringBuilder stringBuilder) { + + Workbook workbook = null; + InputStream is = null; + try { + // 获取Excel后缀名 + String fileName = file.getName(); + if (fileName == null || fileName.isEmpty() || fileName.lastIndexOf(".") < 0) { + log.warn("解析Excel失败,因为获取到的Excel文件名非法!"); + return null; + } + String fileType = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()); + is = new FileInputStream(file); + // 获取Excel工作簿 + workbook = getWorkbook(is, fileType); + + //不同需求条件下可以 在此处修改 来获取不同的对象 + List resultDataList = new ArrayList<>(); + + // 解析sheet + for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { + Sheet sheet = workbook.getSheetAt(sheetNum); + if(!"hidden".equals(sheet.getSheetName())) { + // 校验sheet是否合法 + if (sheet == null) { + continue; + } + + // 获取第一行数据 + int firstRowNum = sheet.getFirstRowNum(); + Row firstRow = sheet.getRow(firstRowNum); + if (null == firstRow) { + log.warn("解析Excel失败,在第一行没有读取到任何数据!"); + } + + // 解析每一行的数据,构造数据对象 + int rowStart = firstRowNum + 1; + int rowEnd = sheet.getPhysicalNumberOfRows(); + + Map map=new HashMap<>(); + Map mapExcel=new HashMap<>(); + Field[] fields=tClass.getDeclaredFields(); + for (Field field:fields) { + field.setAccessible(true); + Excel excel=field.getAnnotation(Excel.class); + if (null!=excel) { + map.put(Integer.valueOf(excel.orderNum()), field); + mapExcel.put(Integer.valueOf(excel.orderNum()), excel); + } + } + Row headRow=sheet.getRow(firstRowNum); + for (int j=0;j + * 标准信息表 前端控制器 + *

    + * + * @author super_liu + * @since 2021-07-13 + */ +@RestController +@Api(tags = "福田标准法规--AWC查询标准") +@RequestMapping("/api/regulations") +public class StandDataController { + + private static final Logger logger = LoggerFactory.getLogger(StandDataController.class); + + @Autowired + private IStandDataService iStandDataService; + /** + * 标准查询列表接口 + * + * @param + * @return + */ + @ApiOperation(value = "|regulations|标准查询列表接口") + @PostMapping("/searchStandData") + public String searchStandData(@RequestBody SearchStandByVppsReqDTO searchStandContext){ + String resultJson = ""; + if(StringUtils.isEmpty(searchStandContext.getData().getUid()) + || StringUtils.isEmpty(searchStandContext.getData().getUserName()) + || StringUtils.isEmpty(searchStandContext.getData().getVppsCode())){ + return StandResult.toJson(StandResult.error(verifyObj(searchStandContext.getData().getUid()), + StandMessageCodeEnum.SOURCE.getCode(), StandMessageCodeEnum.ERROR_PARAM.getCode(), + "uid/username/vppsCode 为必填项")); + } + return iStandDataService.searchStandData(searchStandContext.getData()); + } + + private String verifyObj(String str){ + return (str == null || str.equals("")) ? "" : str; + } +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/dao/StandDataDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/dao/StandDataDao.java new file mode 100644 index 00000000..9c2e5416 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/dao/StandDataDao.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.regulations.dao; + +import com.adc.da.slrs.regulations.entity.FileResult; +import com.adc.da.slrs.regulations.entity.SearchStandContext; +import com.adc.da.slrs.regulations.entity.StandData; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport; +import com.adc.da.slrs.sarStandardsInfo.entity.RecommendVO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.sys.entity.UserEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; + +/** + *

    + * 标准信息表 Mapper 接口 + *

    + * + * @author super_liu + */ +@Repository +public interface StandDataDao extends BaseMapper { + + List searchStandData(SearchStandContext searchStandContext); + + List searchStandDataThree(SearchStandContext searchStandContext); + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/FileResult.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/FileResult.java new file mode 100644 index 00000000..c7127daf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/FileResult.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.regulations.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 12:05 + */ +@Data +public class FileResult { + + @ApiModelProperty(value = "标准分类+空格+标准号+空格+标准名称") + @JSONField(ordinal=1) + private String documentName; + + @ApiModelProperty(value = "当前标准跳转到本系统内的链接地址") + @JSONField(ordinal=2) + private String documentUrl; + + @ApiModelProperty(value = "文本类型") + @JSONField(ordinal=2) + private String documentType= "标准法规"; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandByVppsReqDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandByVppsReqDTO.java new file mode 100644 index 00000000..00712a12 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandByVppsReqDTO.java @@ -0,0 +1,13 @@ +package com.adc.da.slrs.regulations.entity; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SearchStandByVppsReqDTO implements Serializable { + + public SearchStandContext Data; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandContext.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandContext.java new file mode 100644 index 00000000..61de71c3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandContext.java @@ -0,0 +1,67 @@ +package com.adc.da.slrs.regulations.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 12:05 + */ +@Data +public class SearchStandContext implements Serializable { + + // 标准查询条件 + @ApiModelProperty(value = "唯一标识") + private String uid; + + @ApiModelProperty(value = "用户ID") + private String userName; + + @ApiModelProperty(value = "VPPS码") + private String vppsCode; + + @ApiModelProperty(value = "VPPS名称") + private String vppsName; + + //其他 + @ApiModelProperty(value = "物料号") + private String itemId; + + @ApiModelProperty(value = "零部件名称") + private String objectName; + + @ApiModelProperty(value = "版本") + private String itemRevisionId; + + @ApiModelProperty(value = "所有者") + private String owningUser; + + @ApiModelProperty(value = "发布状态") + private String releaseStatus; + + @ApiModelProperty(value = "功能分组码") + private String vsgCode; + + @ApiModelProperty(value = "功能分组名称") + private String vsgName; + + @ApiModelProperty(value = "功能位置码") + private String fpcCode; + + @ApiModelProperty(value = "功能位置名称") + private String fpcName; + + @ApiModelProperty(value = "项目编号") + private String ItemNumber; + + private String standCode; + + private String standId; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandResult.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandResult.java new file mode 100644 index 00000000..c1516ef7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/SearchStandResult.java @@ -0,0 +1,55 @@ +package com.adc.da.slrs.regulations.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 12:05 + */ +@Data +public class SearchStandResult { + + @ApiModelProperty(value = "请求参数中的uid直接带入即可") + @JSONField(ordinal=1) + private String uid; + + @ApiModelProperty(value = "SRMS 固定字符串 系统唯一标识") + @JSONField(ordinal=2) + private String source; + + @ApiModelProperty(value = "返回状态 200 正常,-1 系统错误, -10 参数错误") + @JSONField(ordinal=3) + private String status; + + @ApiModelProperty(value = "正常返回空字符串,系统错误时返回系统异常信息及对应描述") + @JSONField(ordinal=4) + private String errorMessage; + + @ApiModelProperty(value = "返回结果集合") + @JSONField(ordinal=5) + @JsonProperty(value = "List") + private List List; + + public SearchStandResult(String uid, String source, String status,String errorMessage) { + this.uid = uid; + this.source = source; + this.status = status; + this.errorMessage = errorMessage; + } + + public SearchStandResult(String uid, String source, String status,String errorMessage, List List) { + this.uid = uid; + this.source = source; + this.status = status; + this.errorMessage = errorMessage; + this.List = List; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandData.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandData.java new file mode 100644 index 00000000..228689eb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandData.java @@ -0,0 +1,34 @@ +package com.adc.da.slrs.regulations.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 12:05 + */ +@Data +public class StandData { + + @ApiModelProperty(value = "标准ID") + private String standId; + + @ApiModelProperty(value = "标准类型") + private String standType; + + @ApiModelProperty(value = "标准分类") + private String standSort; + + @ApiModelProperty(value = "标准号") + private String standNumber; + + @ApiModelProperty(value = "标准名称") + private String standName; + + @ApiModelProperty(value = "标准分类+空格+标准号+空格+标准名称") + private String documentName; + + @ApiModelProperty(value = "标准分类+空格+标准号+空格+标准名称") + private String standNum; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandMessageCodeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandMessageCodeEnum.java new file mode 100644 index 00000000..52d9becc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandMessageCodeEnum.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.regulations.entity; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 14:58 + */ +public enum StandMessageCodeEnum { + SUCCESS("200"), + ERROR_SYS("-1"), + ERROR_PARAM("-10"), + SOURCE("SRMS"); + + private String code; + + private StandMessageCodeEnum(String code) { + this.code = code; + } + + public String getCode() { + return this.code; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandResult.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandResult.java new file mode 100644 index 00000000..29eeb278 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/entity/StandResult.java @@ -0,0 +1,32 @@ +package com.adc.da.slrs.regulations.entity; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import java.util.List; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 14:56 + */ +public class StandResult { + + public static SearchStandResult success(String uid, String source, String status,String errorMessage, List List) { + return new SearchStandResult(uid,source,status,errorMessage,List); + } + + public static SearchStandResult error(String uid, String source, String status,String errorMessage) { + return new SearchStandResult(uid,source,status,errorMessage); + } + + public static String toJson(SearchStandResult searchStandResult){ + GsonBuilder gsonBuilder = getGsonBuilder(); + Gson json = gsonBuilder.create(); + return json.toJson(searchStandResult); + } + + private static GsonBuilder getGsonBuilder() { + return new GsonBuilder().disableHtmlEscaping().serializeNulls().enableComplexMapKeySerialization().serializeSpecialFloatingPointValues().setLenient(); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/service/IStandDataService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/service/IStandDataService.java new file mode 100644 index 00000000..cd01e72b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/service/IStandDataService.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.regulations.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.regulations.entity.FileResult; +import com.adc.da.slrs.regulations.entity.SearchStandContext; +import com.adc.da.slrs.regulations.entity.SearchStandResult; +import com.adc.da.slrs.regulations.entity.StandData; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 标准信息表 服务类 + *

    + * + * @author super_liu + */ +public interface IStandDataService extends IService { + + String searchStandData(SearchStandContext searchStandContext); +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/service/impl/StandDataServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/service/impl/StandDataServiceImpl.java new file mode 100644 index 00000000..e6754377 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulations/service/impl/StandDataServiceImpl.java @@ -0,0 +1,99 @@ +package com.adc.da.slrs.regulations.service.impl; + +import com.adc.da.slrs.regulations.dao.StandDataDao; +import com.adc.da.slrs.regulations.entity.*; +import com.adc.da.slrs.regulations.service.IStandDataService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import sun.misc.BASE64Encoder; + +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + + +/** + *

    + * 标准信息表 服务实现类 + *

    + * + * @author super_liu + * @date: 2022年04月25日 14:56 + */ +@Service +public class StandDataServiceImpl extends ServiceImpl implements IStandDataService { + + private static final Logger logger = LoggerFactory.getLogger(StandDataServiceImpl.class); + + private String webUrl = "https://srms.foton.com.cn/#/loginStandDetails"; + + @Override + public String searchStandData(SearchStandContext searchStandContext){ + List fileResultList = new ArrayList<>(); + try { + //TODO 此处接口优化 传入的VPPSCode 参数全部截取到第三位位置 + logger.info("接口传递的VPPS编码为"+searchStandContext.getVppsCode()); + String newVppsCode= convertVppsCode(searchStandContext.getVppsCode()); + logger.info("经过处理后只获取前三级的VPPS编码为"+newVppsCode); + searchStandContext.setVsgCode(newVppsCode); + List standDataQuery = this.baseMapper.searchStandData(searchStandContext); + if(!standDataQuery.isEmpty()){ + // 重组数据集合 只需documentName 及 documentUrl + standDataQuery.stream().peek(standData -> { + FileResult fileResult = new FileResult(); + fileResult.setDocumentName(verifyObj(standData.getStandSort(),standData.getStandNumber(),standData.getStandName())); + fileResult.setDocumentUrl(webUrl+"?dataId="+standData.getStandId()+"&datatype="+standData.getStandType()); + fileResultList.add(fileResult); + }).collect(Collectors.toList()); + } + }catch (Exception e){ + return StandResult.toJson(StandResult.error(searchStandContext.getUid(), + StandMessageCodeEnum.SOURCE.getCode(), + StandMessageCodeEnum.ERROR_SYS.getCode(), + errFilter(e.getMessage()))); + } + return StandResult.toJson(StandResult.success(searchStandContext.getUid(), StandMessageCodeEnum.SOURCE.getCode(), StandMessageCodeEnum.SUCCESS.getCode(),"",fileResultList)); + } + + private String verifyObj(String str1,String str2,String str3){ + String res1 = (str1 == null || str1.equals("")) ? "" : (str1+" "); + String res2 = (str2 == null || str2.equals("")) ? "" : (str2+" "); + String res3 = (str3 == null || str3.equals("")) ? "" : str3; + return res1 + res2 + res3; + } + private String encode(String str){ + String encodeStr = new BASE64Encoder().encodeBuffer(str.getBytes()).replaceAll("[\r\n]", "");; + return encodeStr; + } + + private String errFilter(String str){ + if (str.contains("Cause")){ + str = str.split("Cause")[0].replaceAll("\\r\\n###",""); + } + return str; + } + + private String convertVppsCode(String vppsCode){ + if(StringUtils.isNotBlank(vppsCode)){ + String[] splitData = vppsCode.split("."); + if(splitData.length<=3){ + return vppsCode; + }else{ + StringBuilder result = new StringBuilder(); + result.append(splitData[0]).append(".").append(splitData[1]).append(".").append(splitData[2]); + return result.toString(); + } + + + }else{ + return null; + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/controller/StandDataTDMController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/controller/StandDataTDMController.java new file mode 100644 index 00000000..261bd317 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/controller/StandDataTDMController.java @@ -0,0 +1,63 @@ +package com.adc.da.slrs.regulationsTDM.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.Result; +import com.adc.da.slrs.regulationsTDM.entity.StandResult; +import com.adc.da.slrs.regulationsTDM.entity.SearchStandContext; +import com.adc.da.slrs.regulationsTDM.entity.StandData; +import com.adc.da.slrs.regulationsTDM.entity.StandMessageCodeEnum; +import com.adc.da.slrs.regulationsTDM.service.IStandDataTDMService; +import com.adc.da.util.utils.StringUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + *

    + * 标准信息表 前端控制器 + *

    + * + * @author super_liu + * @since 2021-07-13 + */ +@RestController +@Api(tags = "福田标准法规--TDM查询标准") +@RequestMapping("/api/regulationsTDM") +public class StandDataTDMController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(StandDataTDMController.class); + + @Autowired + private IStandDataTDMService iStandDataTDMService; + /** + * 标准查询列表接口 + * + * @param + * @return + */ + @ApiOperation(value = "|regulationsTDM|标准查询列表接口") + @PostMapping("/standData") + public String searchStandData(@RequestBody SearchStandContext searchStandContext){ + if(searchStandContext.getPage() == 0 + || StringUtils.isEmpty(searchStandContext.getType())){ + return StandResult.toJson(Result.error(StandMessageCodeEnum.ERROR_PARAM.getCode(), + "page/type 为必填项 且page不可为0")); + } + List rows = iStandDataTDMService.searchStandData(searchStandContext); + return StandResult.toJson(Result.success(getPageInfo(searchStandContext.getPager(), rows))); + } + + private String verifyObj(String str){ + return (str == null || str.equals("")) ? "" : str; + } +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/dao/StandDataTDMDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/dao/StandDataTDMDao.java new file mode 100644 index 00000000..aac0e3c7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/dao/StandDataTDMDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.regulationsTDM.dao; + +import com.adc.da.slrs.regulationsTDM.entity.SearchStandContext; +import com.adc.da.slrs.regulationsTDM.entity.StandData; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * 标准信息表 Mapper 接口 + *

    + * + * @author super_liu + */ +@Repository +public interface StandDataTDMDao extends BaseMapper { + + List searchStandData(SearchStandContext searchStandContext); + List searchBussData(SearchStandContext searchStandContext); + + List searchStandDataThree(SearchStandContext searchStandContext); + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/SearchStandContext.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/SearchStandContext.java new file mode 100644 index 00000000..1b03e3f2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/SearchStandContext.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.regulationsTDM.entity; + +import com.adc.da.base.page.BasePage; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 12:05 + */ +@Data +public class SearchStandContext extends BasePage { + + // 标准查询条件 + @ApiModelProperty(value = "页数") + private Integer page; + + @ApiModelProperty(value = "区分类别(GB:国内外标准 QB:企业标准)") + private String type; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/SearchStandResult.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/SearchStandResult.java new file mode 100644 index 00000000..192dba9f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/SearchStandResult.java @@ -0,0 +1,46 @@ +package com.adc.da.slrs.regulationsTDM.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.poi.ss.formula.functions.T; + +import java.util.List; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 12:05 + */ +@Data +public class SearchStandResult { + + @ApiModelProperty(value = "返回状态 200 正常,-1 系统错误, -10 参数错误") + @JSONField(ordinal=1) + private String respCode; + + @ApiModelProperty(value = "true:成功 false:失败") + @JSONField(ordinal=2) + private Boolean ok; + + @ApiModelProperty(value = "正常返回空字符串,系统错误时返回系统异常信息及对应描述") + @JSONField(ordinal=3) + private String message; + + private T data; + + + public SearchStandResult(String respCode, String message, boolean ok, T data) { + this.respCode = respCode; + this.message = message; + this.ok = ok; + this.data = data; + } + + public SearchStandResult(String respCode, String message, boolean ok) { + this.respCode = respCode; + this.message = message; + this.ok = ok; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandData.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandData.java new file mode 100644 index 00000000..a81db2dc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandData.java @@ -0,0 +1,54 @@ +package com.adc.da.slrs.regulationsTDM.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 12:05 + */ +@Data +public class StandData { + + @ApiModelProperty(value = "标准ID") + @JSONField(ordinal=1) + private String id; + + @ApiModelProperty(value = "标准类型") + @JSONField(ordinal=2) + private String standType; + + @ApiModelProperty(value = "标准分类") + @JSONField(ordinal=3) + private String standSort; + + @ApiModelProperty(value = "标准号") + @JSONField(ordinal=4) + private String standNumber; + + @ApiModelProperty(value = "年代号") + @JSONField(ordinal=5) + private String standYear; + + @ApiModelProperty(value = "标准名称") + @JSONField(ordinal=6) + private String standName; + + @ApiModelProperty(value = "标准英文名称") + @JSONField(ordinal=7) + private String standEnName; + + @ApiModelProperty(value = "标准分类+空格+标准号+空格+标准名称") + @JSONField(ordinal=8) + private String documentName; + + @ApiModelProperty(value = "当前标准跳转到本系统内的链接地址") + @JSONField(ordinal=9) + private String documentUrl; + + @ApiModelProperty(value = "代替标准号") + @JSONField(ordinal=10) + private String dtbzh; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandMessageCodeEnum.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandMessageCodeEnum.java new file mode 100644 index 00000000..e326a7d0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandMessageCodeEnum.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.regulationsTDM.entity; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 14:58 + */ +public enum StandMessageCodeEnum { + SUCCESS("200"), + ERROR_SYS("-1"), + ERROR_PARAM("-10"), + SOURCE("SRMS"); + + private String code; + + private StandMessageCodeEnum(String code) { + this.code = code; + } + + public String getCode() { + return this.code; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandResult.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandResult.java new file mode 100644 index 00000000..0d9b6bbe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/entity/StandResult.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.regulationsTDM.entity; + +import com.adc.da.http.ResponseMessage; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import java.util.List; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年04月25日 14:56 + */ +public class StandResult { + + public static SearchStandResult success(String code,String message,T t) { + return new SearchStandResult(code, message, true, t); + } + + public static SearchStandResult error(String code,String message) { + return new SearchStandResult(code, message, true); + } + + public static String toJson(ResponseMessage searchStandResult){ + GsonBuilder gsonBuilder = getGsonBuilder(); + Gson json = gsonBuilder.create(); + return json.toJson(searchStandResult); + } + + private static GsonBuilder getGsonBuilder() { + return new GsonBuilder().disableHtmlEscaping().serializeNulls().enableComplexMapKeySerialization().serializeSpecialFloatingPointValues().setLenient(); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/service/IStandDataTDMService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/service/IStandDataTDMService.java new file mode 100644 index 00000000..897f923e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/service/IStandDataTDMService.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.regulationsTDM.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.regulationsTDM.entity.SearchStandContext; +import com.adc.da.slrs.regulationsTDM.entity.StandData; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 标准信息表 服务类 + *

    + * + * @author super_liu + */ +public interface IStandDataTDMService extends IService { + + List searchStandData(SearchStandContext searchStandContext); +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/service/impl/StandDataTDMServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/service/impl/StandDataTDMServiceImpl.java new file mode 100644 index 00000000..0dc17de3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/regulationsTDM/service/impl/StandDataTDMServiceImpl.java @@ -0,0 +1,84 @@ +package com.adc.da.slrs.regulationsTDM.service.impl; + +import com.adc.da.slrs.regulationsTDM.entity.*; +import com.adc.da.slrs.regulationsTDM.dao.StandDataTDMDao; +import com.adc.da.slrs.regulationsTDM.service.IStandDataTDMService; +import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import sun.misc.BASE64Encoder; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + + +/** + *

    + * 标准信息表 服务实现类 + *

    + * + * @author super_liu + * @date: 2022年04月25日 14:56 + */ +@Service +public class StandDataTDMServiceImpl extends ServiceImpl implements IStandDataTDMService { + + private static final Logger logger = LoggerFactory.getLogger(StandDataTDMServiceImpl.class); + + private String webUrl = "https://srms.foton.com.cn/#/loginStandDetails"; + + @Autowired + private SarStandardsInfoDao sarStandardInfoDao; + + @Autowired + private SarBussionessStandDao sarBussionessStandDao; + + @Override + public List searchStandData(SearchStandContext searchStandContext){ + List standDataQuery = new ArrayList<>(); + searchStandContext.setPageSize(100); + QueryWrapper queryCount = new QueryWrapper(); + queryCount.eq("VALID_FLAG","0"); + if("GB".equals(searchStandContext.getType().toUpperCase())){ + int count = sarStandardInfoDao.selectCount(queryCount); + searchStandContext.getPager().setRowCount(count); + standDataQuery = this.baseMapper.searchStandData(searchStandContext); + }else if("QB".equals(searchStandContext.getType().toUpperCase())){ + int count = sarBussionessStandDao.selectCount(queryCount); + searchStandContext.getPager().setRowCount(count); + standDataQuery = this.baseMapper.searchBussData(searchStandContext); + } + if(!standDataQuery.isEmpty()){ + // 重组数据集合 只需documentName 及 documentUrl + standDataQuery.stream().peek(standData -> { + standData.setDocumentName(verifyObj(standData.getStandSort(),standData.getStandNumber(),standData.getStandName())); + standData.setDocumentUrl(webUrl+"?dataId="+standData.getId()+"&datatype="+standData.getStandType()); + }).collect(Collectors.toList()); + } + return standDataQuery; + } + + private String verifyObj(String str1,String str2,String str3){ + String res1 = (str1 == null || str1.equals("")) ? "" : (str1+" "); + String res2 = (str2 == null || str2.equals("")) ? "" : (str2+" "); + String res3 = (str3 == null || str3.equals("")) ? "" : str3; + return res1 + res2 + res3; + } + private String encode(String str){ + String encodeStr = new BASE64Encoder().encodeBuffer(str.getBytes()).replaceAll("[\r\n]", ""); + return encodeStr; + } + + private String errFilter(String str){ + if (str.contains("Cause")){ + str = str.split("Cause")[0].replaceAll("\\r\\n###",""); + } + return str; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/controller/SapMeetingController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/controller/SapMeetingController.java new file mode 100644 index 00000000..496e7d19 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/controller/SapMeetingController.java @@ -0,0 +1,75 @@ +package com.adc.da.slrs.sapMeetInfo.controller; + + +import com.adc.da.slrs.sapMeetInfo.service.ISapMeetingService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sapMeetInfo.entity.SapMeeting; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.Date; +import java.util.List; + +/** +*

    + * 流程通过的 标准化活动会议信息表 +standard_activity_pass + 前端控制器 + *

    +* +* @author zcr +* @since 2021-11-09 +*/ +@RestController +@Api(description = "|SapMeeting|") +@RequestMapping("/api/sapMeetInfo") +public class SapMeetingController extends BaseController { + + @Autowired + ISapMeetingService sapMeetingService; + + @ApiOperation(value = "id查询会议信息") + @GetMapping("/getOneById") + public SapMeeting getOneById(String id){ + return sapMeetingService.getMeetingById(id); + } + + @ApiOperation(value = "获取日历显示会议信息") + @GetMapping("/getDateMeeting") + public int getDateMeeting(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date, String id,int type){ + return sapMeetingService.getDateMeeting(date,id,type); + } + + @ApiOperation(value = "获取当月") + @GetMapping("/getMeetingsByMonth") + public List getMeetingsByMonth(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date){ + return sapMeetingService.getMeetingsByMonth(date); + } + + @ApiOperation(value = "获取当月,根据标志位type区分 1标准活动和2政策课题") + @GetMapping("/getMeetingsByMonthType") + public List getMeetingsByMonthType(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date,int type){ + return sapMeetingService.getMeetingsByMonth(date, type); + } + + @ApiOperation(value = "获取当天列表") + @GetMapping("/getMeetingsByDate") + public List getMeetingsByDate(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date,int type){ + return sapMeetingService.getMeetingsByDate(date,type); + } + + @ApiOperation(value = "插入会议") + @PostMapping("/addMeeting") + public int addMeeting(@RequestBody SapMeeting sapMeeting){ + return sapMeetingService.addMeeting(sapMeeting); + } + + @ApiOperation(value = "修改会议") + @PostMapping("/updateMeeting") + public boolean updateMeeting( SapMeeting sapMeeting){ + return sapMeetingService.updateById(sapMeeting); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/dao/SapMeetingDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/dao/SapMeetingDao.java new file mode 100644 index 00000000..f3fd90bb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/dao/SapMeetingDao.java @@ -0,0 +1,43 @@ +package com.adc.da.slrs.sapMeetInfo.dao; + +import com.adc.da.slrs.sapMeetInfo.entity.SapMeeting; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + *

    + * 流程通过的 标准化活动会议信息表 +standard_activity_pass + Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +@Repository +public interface SapMeetingDao extends BaseMapper { + + int insertMeeting(SapMeeting sapMeeting);//参会流程结束--插入 + + List selectMeetingsByDate(Map map);//根据日期查找-当日所有会议(时间正序) + List selectMeetingsByMonth(Date date);//根据年,月查找 + List selectMeetingsByMonthType(Map map);//根据年,月查找,type标志位 1标准化活动 2政策课题组 + + + SapMeeting selectMeetingById(String id); + + + int deleteById(String id); + + int deleteByDate(Date date); + + int updateMeeting(SapMeeting sapMeeting); + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/entity/SapMeeting.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/entity/SapMeeting.java new file mode 100644 index 00000000..e0a9816a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/entity/SapMeeting.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.sapMeetInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

    + * 流程通过的 标准化活动会议信息表 +standard_activity_pass + + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +@Data +@Accessors(chain = true) +@ToString +@ApiModel(value="SapMeeting对象", description="流程通过的 标准化活动会议信息表 standard_activity_pass") +public class SapMeeting{ + + private static final long serialVersionUID = 1L; + + private String id;//主键-会议id + + private String title;//会议标题 + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date date;//会议开始时间 + + private String content;//会议内容大纲 + + private int type;//标志位--1标准化活动会议,0政策组会议 + + private String attend;//参与人 {id,name} json + + private String files;//附件 json + + private String place; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/service/ISapMeetingService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/service/ISapMeetingService.java new file mode 100644 index 00000000..c2b9d42c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/service/ISapMeetingService.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.sapMeetInfo.service; + +import com.adc.da.slrs.sapMeetInfo.entity.SapMeeting; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Date; +import java.util.List; + +/** + *

    + * 流程通过的 标准化活动会议信息表 +standard_activity_pass + 服务类 + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +public interface ISapMeetingService extends IService { + + int addMeeting(SapMeeting sapMeeting);//参会流程结束--插入 + + List getMeetingsByDate(Date date,int type);//根据日期查找-当日所有会议(时间正序) + List getMeetingsByMonth(Date date);//根据年,月查找 + List getMeetingsByMonth(Date date,int type);//根据年,月查找 + + int getDateMeeting(Date date,String id,int type); + + + SapMeeting getMeetingById(String id); + + int delById(String id); + + int delByDate(Date date); + + int modMeeting(SapMeeting sapMeeting); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/service/impl/SapMeetingServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/service/impl/SapMeetingServiceImpl.java new file mode 100644 index 00000000..7d71da5c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sapMeetInfo/service/impl/SapMeetingServiceImpl.java @@ -0,0 +1,112 @@ +package com.adc.da.slrs.sapMeetInfo.service.impl; + +import com.adc.da.slrs.sapMeetInfo.entity.SapMeeting; +import com.adc.da.slrs.sapMeetInfo.dao.SapMeetingDao; +import com.adc.da.slrs.sapMeetInfo.service.ISapMeetingService; +import com.adc.da.util.UUIDUtils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

    + * 流程通过的 标准化活动会议信息表 +standard_activity_pass + 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +@Service +public class SapMeetingServiceImpl extends ServiceImpl implements ISapMeetingService { + + @Autowired + SapMeetingDao sapMeetingDao; + + @Override + public int addMeeting(SapMeeting sapMeeting) { + sapMeeting.setId(UUIDUtils.randomUUID(30)); + return sapMeetingDao.insertMeeting(sapMeeting); + } + + @Override + public List getMeetingsByDate(Date date,int type) { + Map map = new HashMap(); + map.put("date",date); + map.put("type",type); + return sapMeetingDao.selectMeetingsByDate(map); + } + + @Override + public List getMeetingsByMonth(Date date) { + List sapMeetings = sapMeetingDao.selectMeetingsByMonth(date); + return sapMeetings; + } + + @Override + public List getMeetingsByMonth(Date date, int type) { + Map map = new HashMap(); + map.put("date",date); + map.put("type",type); + return sapMeetingDao.selectMeetingsByMonthType(map); + } + + @Override + public int getDateMeeting(Date date,String id,int type) { + Map map = new HashMap(); + map.put("type",type); + map.put("date",date); + List sapMeetings = sapMeetingDao.selectMeetingsByDate(map); + int rat = 0;//标志位 0无会议;1有会议;2有会议且有自己参会的会议 + if(sapMeetings.isEmpty()){ + rat = 1; + }else if(hasOwnMeeting(id,sapMeetings)){ + rat = 2; + } + return rat; + } + + @Override + public SapMeeting getMeetingById(String id) { + return sapMeetingDao.selectMeetingById(id); + } + + @Override + public int delById(String id) { + return sapMeetingDao.deleteById(id); + } + + @Override + public int delByDate(Date date) { + return sapMeetingDao.deleteByDate(date); + } + + @Override + public int modMeeting(SapMeeting sapMeeting) { + return sapMeetingDao.updateMeeting(sapMeeting); + } + + boolean hasOwnMeeting(String id,List sapMeetings){ + for(SapMeeting sapMeeting : sapMeetings){ + JSONObject jsonObject = JSONObject.parseObject(sapMeeting.getAttend()); + String a = jsonObject.getString("id"); + if(a.contains("[") && a.contains("]")){ + a.substring(1,a.length()-1); + } + String[] split = a.trim().split(","); + for (String s : split) { + if (s.equals(id)) { + return true; + } + } + } + return false; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/controller/SarBussStandAttrInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/controller/SarBussStandAttrInfoController.java new file mode 100644 index 00000000..4e4f259b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/controller/SarBussStandAttrInfoController.java @@ -0,0 +1,73 @@ +package com.adc.da.slrs.sarBussStandAttrInfo.controller; + + +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfoEOPage; +import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfo; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.List; +import java.util.Map; + +import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-20 +*/ +@RestController +@Api(tags = "福田标准法规--企业标准关联国内外标准信息") +@RequestMapping("/${restPath}/lawss/SarBussStandAttrInfo") +public class SarBussStandAttrInfoController extends BaseController { + + @Autowired + private ISarBussStandAttrInfoService sarBussStandAttrInfoEOService; + + @ApiOperation(value = "|SarBussStandAttrInfoEO|根据企标ID查询") + @GetMapping("/getBussAttrInfo") +// @RequiresPermissions("lawss:sarBussStandAttrInfo:list") + public Map getBussAttrInfo(String standId) throws Exception { + return sarBussStandAttrInfoEOService.getBussAttrInfo(standId); + } + + @ApiOperation(value = "|SarBussStandAttrInfoEO|单个查询") + @GetMapping("/getSelectFieldValByStandId") +// @RequiresPermissions("lawss:sarBussStandAttrInfo:list") + public ResponseMessage getSelectFieldValByStandId(String field,String standId) throws Exception { + return Result.success(sarBussStandAttrInfoEOService.selectFieldValByStandId(field,standId)); + } + + @ApiOperation(value = "|SarBussStandAttrInfoEO|分页查询") + @GetMapping("/page") +// @RequiresPermissions("lawss:sarBussStandAttrInfo:page") + public ResponseMessage> page(SarBussStandAttrInfoEOPage page) throws Exception { + List rows = sarBussStandAttrInfoEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarBussStandAttrInfoEO|查询") + @GetMapping("") +// @RequiresPermissions("lawss:sarBussStandAttrInfo:list") + public ResponseMessage> list(SarBussStandAttrInfoEOPage page) throws Exception { + return Result.success(sarBussStandAttrInfoEOService.queryByList(page)); + } + + @ApiOperation(value = "|SarBussStandAttrInfoEO|新增") + @PostMapping(consumes = "application/json;charset=UTF-8") +// @RequiresPermissions("lawss:sarBussStandAttrInfo:save") + public ResponseMessage create(@RequestBody SarBussStandAttrInfo sarBussStandAttrInfoEO) throws Exception { + sarBussStandAttrInfoEOService.insertSelective(sarBussStandAttrInfoEO); + return Result.success(sarBussStandAttrInfoEO); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/dao/SarBussStandAttrInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/dao/SarBussStandAttrInfoDao.java new file mode 100644 index 00000000..9afeac88 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/dao/SarBussStandAttrInfoDao.java @@ -0,0 +1,50 @@ +package com.adc.da.slrs.sarBussStandAttrInfo.dao; + +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfo; +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfoEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-20 + */ +@Repository +public interface SarBussStandAttrInfoDao extends BaseMapper { + + void alterStandAttr(@Param("fieldInfo") String fieldInfo); + + void deleteStandAttr(@Param("fieldInfo") String fieldInfo); + + void updateAttrLen(@Param("fieldInfo") String fieldInfo); + + Integer selectStandAttrColumn(@Param("columnName") String columnName); + + int insertStandAttr(@Param("fieldInfo") String fieldInfo,@Param("fieldValue") String fieldValue); + + int deleteStandAttrByStandId(@Param("standId") String standId); + + int updateStandInfo(@Param("standId") String standId,@Param("field") String field,@Param("value") String value); + + String selectFieldValByStandId(@Param("field") String field, @Param("standId") String standId); + + List queryByList(SarBussStandAttrInfoEOPage page); + + List queryByPage(SarBussStandAttrInfoEOPage page); + + int insertSelective(SarBussStandAttrInfo sarBussStandAttrInfo); + + Map selectStandFieldAndData(@Param("fieldInfo") String fieldInfo, @Param("standId") String standId); + + + void updateFSQR(@Param("id") String id,@Param("time") String time); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java new file mode 100644 index 00000000..abe68add --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfo.java @@ -0,0 +1,126 @@ +package com.adc.da.slrs.sarBussStandAttrInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-07-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandAttrInfo对象", description="") +public class SarBussStandAttrInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableField("ID") + private String id; + + @ApiModelProperty(value = "标准基础表主键") + @TableField("STAND_ID") + private String standId; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "体系类别") + @TableField("TXLBBUSS") + private String txlbbuss; + + @ApiModelProperty(value = "被代替企标编号") + @TableField("BDTQBBHBUSS") + private String bdtqbbhbuss; + + @ApiModelProperty(value = "被代替企标编号") + @TableField("DTQBBHBUSS") + private String dtqbbhbuss; + + @TableField(exist = false) + private String glwj; +// +// @TableField("SVPPS") +// private String svpps; +// +// @TableField("GFXYYWJ") +// private String gfxyywj; +// +// @TableField("ZRBM") +// private String zrbm; +// +// @TableField("FZRQ") +// private Date fzrq; +// +// @TableField("FSRQ") +// private Date fsrq; +// +// @TableField("QBMJ") +// private String qbmj; +// +// @TableField("QBSQ") +// private String qbsq; +// +// @TableField("QBWB") +// private String qbwb; +// +// @TableField("GCWB") +// private String gcwb; +// +// @TableField("ZYQCR") +// private String zyqcr; +// +// @TableField("QCFBW") +// private String qcfbw; +// +// @TableField("XGLC") +// private String xglc; +// +// @TableField("XGBM") +// private String xgbm; +// +// @TableField("XHQBM") +// private String xhqbm; +// +// @TableField("ZQCBM") +// private String zqcbm; +// +// @TableField("QTQCR") +// private String qtqcr; +// +// @TableField("WFSPJS") +// private String wfspjs; +// +// @TableField("XGJH") +// private String xgjh; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfoEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfoEOPage.java new file mode 100644 index 00000000..94462e48 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/entity/SarBussStandAttrInfoEOPage.java @@ -0,0 +1,158 @@ +package com.adc.da.slrs.sarBussStandAttrInfo.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_BUSS_STAND_ATTR_INFO SarBussStandAttrInfoEOPage
    + * 作者:code generator
    + * 日期: 2020-10-27
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarBussStandAttrInfoEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String standId; + private String standIdOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getStandId() { + return this.standId; + } + + public void setStandId(String standId) { + this.standId = standId; + } + + public String getStandIdOperator() { + return this.standIdOperator; + } + + public void setStandIdOperator(String standIdOperator) { + this.standIdOperator = standIdOperator; + } + + public String getCreationUser() { + return this.creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getCreationUserOperator() { + return this.creationUserOperator; + } + + public void setCreationUserOperator(String creationUserOperator) { + this.creationUserOperator = creationUserOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/service/ISarBussStandAttrInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/service/ISarBussStandAttrInfoService.java new file mode 100644 index 00000000..e7c0793b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/service/ISarBussStandAttrInfoService.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarBussStandAttrInfo.service; + +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfo; +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfoEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-07-20 + */ +public interface ISarBussStandAttrInfoService extends IService { + + Map getBussAttrInfo(String standId); + + String selectFieldValByStandId(String field,String standId); + + int updateStandInfo(String standId,String field,String value); + + List queryByList(SarBussStandAttrInfoEOPage page); + + List queryByPage(SarBussStandAttrInfoEOPage page); + + int insertSelective(SarBussStandAttrInfo sarBussStandAttrInfo); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/service/impl/SarBussStandAttrInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/service/impl/SarBussStandAttrInfoServiceImpl.java new file mode 100644 index 00000000..7cb547d0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandAttrInfo/service/impl/SarBussStandAttrInfoServiceImpl.java @@ -0,0 +1,55 @@ +package com.adc.da.slrs.sarBussStandAttrInfo.service.impl; + +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfo; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfoEOPage; +import com.adc.da.slrs.sarBussStandAttrInfo.service.ISarBussStandAttrInfoService; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-20 + */ +@Service +public class SarBussStandAttrInfoServiceImpl extends ServiceImpl implements ISarBussStandAttrInfoService { + + @Override + public Map getBussAttrInfo(String standId){ + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + return this.baseMapper.selectStandFieldAndData(fieldInfo,standId); + } + + @Override + public int updateStandInfo(String standId,String field,String value){ + return this.baseMapper.updateStandInfo(standId,field,value); + } + + @Override + public String selectFieldValByStandId (String field,String standId) { + return this.baseMapper.selectFieldValByStandId(field,standId); + } + + @Override + public List queryByList(SarBussStandAttrInfoEOPage page){ + return this.baseMapper.queryByList(page); + } + + @Override + public List queryByPage(SarBussStandAttrInfoEOPage page){ + return this.baseMapper.queryByPage(page); + } + + @Override + public int insertSelective(SarBussStandAttrInfo sarBussStandAttrInfo){ + return this.baseMapper.insertSelective(sarBussStandAttrInfo); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/controller/SarBussStandDataController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/controller/SarBussStandDataController.java new file mode 100644 index 00000000..3ac284f4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/controller/SarBussStandDataController.java @@ -0,0 +1,94 @@ +package com.adc.da.slrs.sarBussStandData.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarBussStandData.service.ISarBussStandDataService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarBussStandData.entity.SarBussStandData; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 前端控制器 + *

    +* +* @author yzh +* @since 2022-03-16 +*/ +@RestController +@Api(description = "|SarBussStandData|") +@RequestMapping("/${restPath}/sarBussStandData/sar-buss-stand-data") +public class SarBussStandDataController extends BaseController { + + @Autowired + ISarBussStandDataService iSarBussStandDataService; + + @ApiOperation("角色与菜单关联控制右侧数据列表") + @PostMapping("/saveBatch") + public ResponseMessage disable(SarBussStandData sarBussStandData){ + //上来就给他 清了 能满足清空 修改 新增 + if (StringUtils.isNotBlank(sarBussStandData.getBussStandId())){ + List menus=new ArrayList<>(); + if (sarBussStandData.getBussStandId().contains(",")){ + menus.addAll(new ArrayList<>(Arrays.asList(sarBussStandData.getBussStandId().split(",")))); + }else { + menus.add(sarBussStandData.getBussStandId()); + } + List res=new ArrayList<>(); + menus.forEach(s -> { + SarBussStandData sarBussStandData1=new SarBussStandData(); + sarBussStandData1.setId(String.valueOf(UUID.randomUUID())); + sarBussStandData1.setValidFlag("0"); + sarBussStandData1.setBussStandId(s); + sarBussStandData1.setMenuId(sarBussStandData.getMenuId()); + res.add(sarBussStandData1); + }); + iSarBussStandDataService.saveBatch(res); + return Result.success(); + }else { + return Result.error("请选择菜单"); + } + } + + @ApiOperation("角色与菜单关联控制右侧数据列表") + @PostMapping("/removeBatch") + public ResponseMessage removeBatch(String ids){ + List removeIds=new ArrayList<>(); + if (ids.contains(",")){ + removeIds.addAll(new ArrayList<>(Arrays.asList(ids.split(",")))); + }else { + removeIds.add(ids); + } + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("ID",ids); + return Result.success(iSarBussStandDataService.remove(wrapper)); + } + + + @ApiOperation("查询与角色绑定的菜单--支持多个角色查询") + @GetMapping("/list") + public ResponseMessage list(String menuIds){ + //判断disableFlag是否填入正确 + List list=new ArrayList<>(); + if (menuIds.contains(",")){ + list.addAll(new ArrayList<>(Arrays.asList(menuIds.split(",")))); + }else { + list.add(menuIds); + } + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("MENU_ID",list); + return Result.success(iSarBussStandDataService.list(wrapper)); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/dao/SarBussStandDataDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/dao/SarBussStandDataDao.java new file mode 100644 index 00000000..e271344e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/dao/SarBussStandDataDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarBussStandData.dao; + +import com.adc.da.slrs.sarBussStandData.entity.SarBussStandData; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author yzh + * @since 2022-03-16 + */ +public interface SarBussStandDataDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/entity/SarBussStandData.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/entity/SarBussStandData.java new file mode 100644 index 00000000..c48da0ae --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/entity/SarBussStandData.java @@ -0,0 +1,47 @@ +package com.adc.da.slrs.sarBussStandData.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author yzh + * @since 2022-03-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandData对象", description="") +public class SarBussStandData extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准id") + @TableField("BUSS_STAND_ID") + private String bussStandId; + + @ApiModelProperty(value = "菜单id") + @TableField("MENU_ID") + private String menuId; + + @ApiModelProperty(value = "删除标志") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "菜单id") + @TableField(exist = false) + private String menuIds; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/service/ISarBussStandDataService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/service/ISarBussStandDataService.java new file mode 100644 index 00000000..1c305ec4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/service/ISarBussStandDataService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarBussStandData.service; + +import com.adc.da.slrs.sarBussStandData.entity.SarBussStandData; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author yzh + * @since 2022-03-16 + */ +public interface ISarBussStandDataService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/service/impl/SarBussStandDataServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/service/impl/SarBussStandDataServiceImpl.java new file mode 100644 index 00000000..6e358616 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandData/service/impl/SarBussStandDataServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarBussStandData.service.impl; + +import com.adc.da.slrs.sarBussStandData.entity.SarBussStandData; +import com.adc.da.slrs.sarBussStandData.dao.SarBussStandDataDao; +import com.adc.da.slrs.sarBussStandData.service.ISarBussStandDataService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author yzh + * @since 2022-03-16 + */ +@Service +public class SarBussStandDataServiceImpl extends ServiceImpl implements ISarBussStandDataService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/controller/SarBussStandFileController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/controller/SarBussStandFileController.java new file mode 100644 index 00000000..fb811286 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/controller/SarBussStandFileController.java @@ -0,0 +1,70 @@ +package com.adc.da.slrs.sarBussStandFile.controller; + + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarBussStandFile.service.ISarBussStandFileService; +import com.adc.da.slrs.standardSplit.controller.SarStandFileEOController; +import com.adc.da.slrs.standardSplit.service.SarStandAttrDetailsEOService; +import com.adc.da.slrs.standardSplit.service.SarStandFileEOService; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + + +/** +*

    + * 企业标准文件详情表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-25 +*/ +@RestController +@Api(tags = "|SarBussStandFile|") +@RequestMapping("/${restPath}/lawss/sarBussStandFile") +public class SarBussStandFileController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandFileEOController.class); + + @Autowired + private IAttFileEOService attFileEOService; + @Autowired + private SarStandAttrDetailsEOService sarStandAttrDetailsEOService; + + public static final String APPLICATION_JSON_UTF8_VALUE = "application/json;charset=UTF-8"; + + @Autowired + private ISarBussStandFileService sarBussStandFileEOService; + + @ApiOperation(value = "|SarBussStandFileEO|查询转换后的文档详情") + @GetMapping("/queryConvertAtt") + /*@RequiresPermissions("lawss:sarLawsFile:list")*/ + public ResponseMessage queryConvertAtt(String attId) throws Exception { + List getList = sarBussStandFileEOService.selectFileByAttId(attId); + SarBussStandFile sarBussStandFileEO = new SarBussStandFile(); + if(getList != null && !getList.isEmpty()){ + sarBussStandFileEO = getList.get(0); + AttFileEO attFileEO = attFileEOService.getFileInfo(attId); + if(attFileEO != null){ + sarBussStandFileEO.setFileOldName(attFileEO.getOldFileName()); + } +// readStandOrLawsLogService.sendReadSOLLog("BUSS",sarBussStandFileEO); + return Result.success(sarBussStandFileEO); + } else { + return Result.success(null); + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/dao/SarBussStandFileDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/dao/SarBussStandFileDao.java new file mode 100644 index 00000000..e99f9834 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/dao/SarBussStandFileDao.java @@ -0,0 +1,39 @@ +package com.adc.da.slrs.sarBussStandFile.dao; + +import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * 企业标准文件详情表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Repository +public interface SarBussStandFileDao extends BaseMapper { + + List selectFileByStandId(String lawsId); + + List selectFileByStandIdAndId(SarBussStandFile laws); + + List selectFileByAttId(String attId); + + List selectFileMsgByAttId(String attId); + + List selectFileByResId(SarBussStandFile sarBussStandFileEO); + + int deleteByStandId(String standId); + + int insertForeach(List list); //批量新增 + + int insertSelective(SarBussStandFile sarBussStandFile); + + int updateByPrimaryKeySelective(SarBussStandFile sarBussStandFile); + + int deleteByPrimaryKey(String value); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/entity/SarBussStandFile.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/entity/SarBussStandFile.java new file mode 100644 index 00000000..dbe87ab6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/entity/SarBussStandFile.java @@ -0,0 +1,98 @@ +package com.adc.da.slrs.sarBussStandFile.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * 企业标准文件详情表 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandFile对象", description="企业标准文件详情表") +public class SarBussStandFile extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableField("ID") + private String id; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "标准文件分类") + @TableField("STAND_FILE_CLASSIFY") + private String standFileClassify; + + @ApiModelProperty(value = "文件主键") + @TableField("ATT_ID") + private String attId; + + @ApiModelProperty(value = "文件名称") + @TableField("FILE_NAME") + private String fileName; + + @ApiModelProperty(value = "文件后缀") + @TableField("FILE_SUFFIX") + private String fileSuffix; + + @ApiModelProperty(value = "使用模式(SOURCE_FILE原文件,WEB_FILE转换后文件)") + @TableField("USE_MODEL") + private String useModel; + + @ApiModelProperty(value = "加密密码") + @TableField("PASSWORD") + private String password; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "转换原文件id") + @TableField("ORI_ATT_ID") + private String oriAttId; + + @TableField(exist = false) + private List idList = new ArrayList<>(); + + @TableField(exist = false) + private String useModule; + @TableField(exist = false) + private String resId; + @TableField(exist = false) + private Integer pageCount; + @TableField(exist = false) + private String fileOldName; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/ISarBussStandFileService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/ISarBussStandFileService.java new file mode 100644 index 00000000..ed6da497 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/ISarBussStandFileService.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarBussStandFile.service; + +import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 企业标准文件详情表 服务类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +public interface ISarBussStandFileService extends IService { + + List selectFileByAttId(String attId) throws Exception; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/impl/SarBussStandFileServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/impl/SarBussStandFileServiceImpl.java new file mode 100644 index 00000000..d95024f3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/impl/SarBussStandFileServiceImpl.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.sarBussStandFile.service.impl; + +import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +import com.adc.da.slrs.sarBussStandFile.dao.SarBussStandFileDao; +import com.adc.da.slrs.sarBussStandFile.service.ISarBussStandFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 企业标准文件详情表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Service +public class SarBussStandFileServiceImpl extends ServiceImpl implements ISarBussStandFileService { + + @Autowired + private SarBussStandFileDao sarStandFileEODao; + + @Override + public List selectFileByAttId(String attId) throws Exception{ + return sarStandFileEODao.selectFileByAttId(attId); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/controller/SarBussStandItemsController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/controller/SarBussStandItemsController.java new file mode 100644 index 00000000..370f5787 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/controller/SarBussStandItemsController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarBussStandItems.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarBussStandItems.entity.SarBussStandItems; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 企业标准条目信息表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-25 +*/ +@RestController +@Api(description = "|SarBussStandItems|") +@RequestMapping("/sarBussStandItems/sar-buss-stand-items") +public class SarBussStandItemsController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/dao/SarBussStandItemsDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/dao/SarBussStandItemsDao.java new file mode 100644 index 00000000..83586deb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/dao/SarBussStandItemsDao.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.sarBussStandItems.dao; + +import com.adc.da.slrs.sarBussStandItems.entity.SarBussStandItems; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +/** + *

    + * 企业标准条目信息表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Repository +public interface SarBussStandItemsDao extends BaseMapper { + + int deleteByStandIdAndFileType(@Param("standId") String standId, @Param("fileType") String fileType); + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/entity/SarBussStandItems.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/entity/SarBussStandItems.java new file mode 100644 index 00000000..d4f7a773 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/entity/SarBussStandItems.java @@ -0,0 +1,119 @@ +package com.adc.da.slrs.sarBussStandItems.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 企业标准条目信息表 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandItems对象", description="企业标准条目信息表") +public class SarBussStandItems extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "条目号") + @TableField("ITEMS_NUM") + private String itemsNum; + + @ApiModelProperty(value = "条目内容") + @TableField("ITEMS_NAME") + private String itemsName; + + @ApiModelProperty(value = "涉及零部件") + @TableField("PARTS") + private String parts; + + @ApiModelProperty(value = "特殊生效时间") + @TableField("TACK_TIME") + private LocalDateTime tackTime; + + @ApiModelProperty(value = "适用车型") + @TableField("APPLY_ARCTIC") + private String applyArctic; + + @ApiModelProperty(value = "能源类型") + @TableField("ENERGY_KIND") + private String energyKind; + + @ApiModelProperty(value = "责任部门") + @TableField("RESPONSIBLE_UNIT") + private String responsibleUnit; + + @ApiModelProperty(value = "备注") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private BigDecimal validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private LocalDateTime creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private LocalDateTime modifyTime; + + @ApiModelProperty(value = "实施要点") + @TableField("MAINPOINTS_IMPEMENTATION") + private String mainpointsImpementation; + + @ApiModelProperty(value = "条款要求") + @TableField("TERMS_CONDITIONS") + private String termsConditions; + + @ApiModelProperty(value = "适用认证") + @TableField("APPLY_AUTH") + private String applyAuth; + + @ApiModelProperty(value = "FO") + @TableField("FO") + private String fo; + + @ApiModelProperty(value = "责任工程师") + @TableField("DUTY_ENGINEER") + private String dutyEngineer; + + @ApiModelProperty(value = "SVPPS") + @TableField("SVPPS") + private String svpps; + + @ApiModelProperty(value = "要求类型") + @TableField("CLAIM_TYPE") + private String claimType; + + @ApiModelProperty(value = "企标覆盖关系") + @TableField("BUS_STAND_COVER") + private String busStandCover; + + @ApiModelProperty(value = "FILE_TYPE") + @TableField("FILE_TYPE") + private String fileType; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/page/SarBussStandItemsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/page/SarBussStandItemsEOPage.java new file mode 100644 index 00000000..c5908268 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/page/SarBussStandItemsEOPage.java @@ -0,0 +1,338 @@ +package com.adc.da.slrs.sarBussStandItems.page; + +import com.adc.da.sys.common.BasePage; + +/** + * 功能:SAR_BUSS_STAND_ITEMS SarBussStandItemsEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarBussStandItemsEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String remarks; + private String remarksOperator = "="; + private String responsibleUnit; + private String responsibleUnitOperator = "="; + private String energyKind; + private String energyKindOperator = "="; + private String applyArctic; + private String applyArcticOperator = "="; + private String tackTime; + private String tackTime1; + private String tackTime2; + private String tackTimeOperator = "="; + private String parts; + private String partsOperator = "="; + private String itemsName; + private String itemsNameOperator = "="; + private String itemsNum; + private String itemsNumOperator = "="; + private String standId; + private String standIdOperator = "="; + private String id; + private String idOperator = "="; + + private String processFlag; + private String nameOrRequest; + private String[] idlist; + private String fileType; + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getRemarksOperator() { + return this.remarksOperator; + } + + public void setRemarksOperator(String remarksOperator) { + this.remarksOperator = remarksOperator; + } + + public String getResponsibleUnit() { + return this.responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getResponsibleUnitOperator() { + return this.responsibleUnitOperator; + } + + public void setResponsibleUnitOperator(String responsibleUnitOperator) { + this.responsibleUnitOperator = responsibleUnitOperator; + } + + public String getEnergyKind() { + return this.energyKind; + } + + public void setEnergyKind(String energyKind) { + this.energyKind = energyKind; + } + + public String getEnergyKindOperator() { + return this.energyKindOperator; + } + + public void setEnergyKindOperator(String energyKindOperator) { + this.energyKindOperator = energyKindOperator; + } + + public String getApplyArctic() { + return this.applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public String getApplyArcticOperator() { + return this.applyArcticOperator; + } + + public void setApplyArcticOperator(String applyArcticOperator) { + this.applyArcticOperator = applyArcticOperator; + } + + public String getTackTime() { + return this.tackTime; + } + + public void setTackTime(String tackTime) { + this.tackTime = tackTime; + } + + public String getTackTime1() { + return this.tackTime1; + } + + public void setTackTime1(String tackTime1) { + this.tackTime1 = tackTime1; + } + + public String getTackTime2() { + return this.tackTime2; + } + + public void setTackTime2(String tackTime2) { + this.tackTime2 = tackTime2; + } + + public String getTackTimeOperator() { + return this.tackTimeOperator; + } + + public void setTackTimeOperator(String tackTimeOperator) { + this.tackTimeOperator = tackTimeOperator; + } + + public String getParts() { + return this.parts; + } + + public void setParts(String parts) { + this.parts = parts; + } + + public String getPartsOperator() { + return this.partsOperator; + } + + public void setPartsOperator(String partsOperator) { + this.partsOperator = partsOperator; + } + + public String getItemsName() { + return this.itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItemsNameOperator() { + return this.itemsNameOperator; + } + + public void setItemsNameOperator(String itemsNameOperator) { + this.itemsNameOperator = itemsNameOperator; + } + + public String getItemsNum() { + return this.itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getItemsNumOperator() { + return this.itemsNumOperator; + } + + public void setItemsNumOperator(String itemsNumOperator) { + this.itemsNumOperator = itemsNumOperator; + } + + public String getStandId() { + return this.standId; + } + + public void setStandId(String standId) { + this.standId = standId; + } + + public String getStandIdOperator() { + return this.standIdOperator; + } + + public void setStandIdOperator(String standIdOperator) { + this.standIdOperator = standIdOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getProcessFlag() { + return processFlag; + } + + public void setProcessFlag(String processFlag) { + this.processFlag = processFlag; + } + + public String getNameOrRequest() { + return nameOrRequest; + } + + public void setNameOrRequest(String nameOrRequest) { + this.nameOrRequest = nameOrRequest; + } + + public String[] getIdlist() { + return idlist; + } + + public void setIdlist(String[] idlist) { + this.idlist = idlist; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/service/ISarBussStandItemsService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/service/ISarBussStandItemsService.java new file mode 100644 index 00000000..4edfa3c2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/service/ISarBussStandItemsService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarBussStandItems.service; + +import com.adc.da.slrs.sarBussStandItems.entity.SarBussStandItems; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 企业标准条目信息表 服务类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +public interface ISarBussStandItemsService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/service/impl/SarBussStandItemsServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/service/impl/SarBussStandItemsServiceImpl.java new file mode 100644 index 00000000..a998104c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandItems/service/impl/SarBussStandItemsServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarBussStandItems.service.impl; + +import com.adc.da.slrs.sarBussStandItems.entity.SarBussStandItems; +import com.adc.da.slrs.sarBussStandItems.dao.SarBussStandItemsDao; +import com.adc.da.slrs.sarBussStandItems.service.ISarBussStandItemsService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 企业标准条目信息表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Service +public class SarBussStandItemsServiceImpl extends ServiceImpl implements ISarBussStandItemsService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/controller/SarBussStandMenuController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/controller/SarBussStandMenuController.java new file mode 100644 index 00000000..5fceb23d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/controller/SarBussStandMenuController.java @@ -0,0 +1,113 @@ +package com.adc.da.slrs.sarBussStandMenu.controller; + + +import com.adc.da.slrs.sarBussStandMenu.service.ISarBussStandMenuService; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarBussStandMenu.entity.SarBussStandMenu; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 企业标准目录关联表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-25 +*/ +@RestController +@Api(tags = "福田标准法规--企业标准目录关联表") +@RequestMapping("/${restPath}/lawss/sarBussStandMenu") +public class SarBussStandMenuController extends BaseController { + + @Autowired + private ISarBussStandMenuService sarBussStandMenuEOService; + + @Autowired + private ITsResourceService sarMenuEOService; + + @ApiOperation(value = "|SarBussStandMenuEO|修改") + @PutMapping("/removeStandInfo") +// @RequiresPermissions("lawss:sarStandMenu:update") + public ResponseMessage removeStandInfo(@RequestBody SarBussStandMenu standardsInfoEO) throws Exception { + String[] idList = standardsInfoEO.getIdlist(); + int count = 0; + if(idList != null){ + for(String id : idList){ + SarBussStandMenu menuEO = new SarBussStandMenu(); + menuEO.setBussStandId(id); + menuEO.setMenuId(standardsInfoEO.getMenuId()); + menuEO.setTreeType(standardsInfoEO.getTreeType()); + //删除所选目录下关联 + String oldMenuId = standardsInfoEO.getOldMenuId(); + if (StringUtils.isEmpty(oldMenuId)) { + oldMenuId = standardsInfoEO.getMenuId(); + } + menuEO.setOldMenuId(oldMenuId); + count += sarBussStandMenuEOService.deleteByMenuId(menuEO); + //查询是否还有与其他节点的关联,若没有则增加与根节点的关联 + List getList = sarBussStandMenuEOService.selectAllMenuByStandId(menuEO); + if (getList == null || getList.isEmpty()) { + // 查询根节点 + TsResource sarMenuEO = new TsResource(); + sarMenuEO.setSorDivide("BUSINESS_STAND"); + List getRootMenu = sarMenuEOService.queryMenuByDis(sarMenuEO); + menuEO.setMenuId(getRootMenu.get(0).getId()); + menuEO.setId(UUIDUtils.randomUUID20()); + menuEO.setValidFlag(0); + sarBussStandMenuEOService.save(menuEO); + } + } + } + if(count>0){ + return Result.success("0","移除成功!",true); + } else { + return Result.error("移除失败!"); + } + } + + @ApiOperation(value = "|SarBussStandMenuEO|移动标准") + @PutMapping("/moveStandInfo") + public ResponseMessage moveStandInfo(@RequestBody SarBussStandMenu standardsInfoEO){ + if("sarMs".equals(standardsInfoEO.getTreeType())) { + return Result.error("请在企业标准目录下进行移动!"); + } + String[] idList = standardsInfoEO.getIdlist(); + int count = 0; + if(idList != null){ + for(String id : idList){ + SarBussStandMenu menuEO = new SarBussStandMenu(); + menuEO.setBussStandId(id); + + //删除所选目录下关联 + String oldMenuId = standardsInfoEO.getOldMenuId(); + menuEO.setOldMenuId(oldMenuId); + count+= sarBussStandMenuEOService.deleteByMenuId(menuEO); + + menuEO.setMenuId(standardsInfoEO.getMenuId()); + menuEO.setId(UUIDUtils.randomUUID20()); + menuEO.setValidFlag(0); + sarBussStandMenuEOService.save(menuEO); + } + } + if(count>0){ + return Result.success("0","移动成功!",true); + } else { + return Result.error("移动失败!"); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/dao/SarBussStandMenuDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/dao/SarBussStandMenuDao.java new file mode 100644 index 00000000..a5d69489 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/dao/SarBussStandMenuDao.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.sarBussStandMenu.dao; + +import com.adc.da.slrs.sarBussStandMenu.entity.SarBussStandMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import javax.validation.constraints.Past; +import java.util.List; + +/** + *

    + * 企业标准目录关联表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Repository +public interface SarBussStandMenuDao extends BaseMapper { + + List selectByMenuId(SarBussStandMenu sarStandMenuEO); + + int deleteByStandId(String bussStandId); + + List selectMenuByMenuParentId(SarBussStandMenu sarStandMenuEO); + + int updateByStandIdAndMenuId (SarBussStandMenu sarStandMenuEO); + + List selectAllMenuByStandId(SarBussStandMenu sarStandMenuEO); + + int deleteByMenuId (SarBussStandMenu sarStandMenuEO); + + int deleteByStandIdAndMenuId (SarBussStandMenu sarStandMenuEO); + + int insertSelective (SarBussStandMenu sarStandMenuEO); + + int updateMenuidByMenuid (@Param("oldMenuid") String oldMenuid ,@Param("newMenuid") String newMenuid); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/entity/NewmenuOldmenuVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/entity/NewmenuOldmenuVO.java new file mode 100644 index 00000000..8eb60736 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/entity/NewmenuOldmenuVO.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.sarBussStandMenu.entity; + +import com.adc.da.base.entity.BaseEntity; +import lombok.Data; + +/** + * Created by Administrator on 2018/9/13 19:29 + */ +@Data +public class NewmenuOldmenuVO extends BaseEntity { + + private String oldMenuid; + private String newMenuid; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/entity/SarBussStandMenu.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/entity/SarBussStandMenu.java new file mode 100644 index 00000000..86389dbe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/entity/SarBussStandMenu.java @@ -0,0 +1,60 @@ +package com.adc.da.slrs.sarBussStandMenu.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + *

    + * 企业标准目录关联表 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandMenu对象", description="企业标准目录关联表") +public class SarBussStandMenu extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "企业标准ID") + @TableField("BUSS_STAND_ID") + private String bussStandId; + + @ApiModelProperty(value = "目录ID") + @TableField("MENU_ID") + private String menuId; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "树结构数据 区分 类型: 标准数据 tsr 技术系列 sarMs ") + @TableField("TREE_TYPE") + private String treeType; + + @TableField(exist = false) + private String oldMenuId; + + @TableField(exist = false) + private String[] idlist; + + @TableField(exist = false) + private List menuIds; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/service/ISarBussStandMenuService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/service/ISarBussStandMenuService.java new file mode 100644 index 00000000..85587e22 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/service/ISarBussStandMenuService.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarBussStandMenu.service; + +import com.adc.da.slrs.sarBussStandMenu.entity.SarBussStandMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 企业标准目录关联表 服务类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +public interface ISarBussStandMenuService extends IService { + + List selectAllMenuByStandId(SarBussStandMenu sarStandMenuEO); + + int deleteByMenuId (SarBussStandMenu sarStandMenuEO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/service/impl/SarBussStandMenuServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/service/impl/SarBussStandMenuServiceImpl.java new file mode 100644 index 00000000..ba1309d8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandMenu/service/impl/SarBussStandMenuServiceImpl.java @@ -0,0 +1,49 @@ +package com.adc.da.slrs.sarBussStandMenu.service.impl; + +import com.adc.da.slrs.sarBussStandMenu.entity.SarBussStandMenu; +import com.adc.da.slrs.sarBussStandMenu.dao.SarBussStandMenuDao; +import com.adc.da.slrs.sarBussStandMenu.service.ISarBussStandMenuService; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

    + * 企业标准目录关联表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Service +public class SarBussStandMenuServiceImpl extends ServiceImpl implements ISarBussStandMenuService { + + @Autowired + private ITsResourceService sarMenuEOService; + + @Autowired + private ISarMenuStandardService iSarMenuStandardService; + + public int deleteByMenuId (SarBussStandMenu sarStandMenuEO){ + String treeType = sarStandMenuEO.getTreeType(); + List menuIds = new ArrayList<>(); + if(StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)){ + menuIds = iSarMenuStandardService.getChildMenuList(sarStandMenuEO.getOldMenuId()); + }else { + menuIds = sarMenuEOService.getChildMenuList(sarStandMenuEO.getOldMenuId()); + } + sarStandMenuEO.setMenuIds(menuIds); + return this.baseMapper.deleteByMenuId(sarStandMenuEO); + } + + @Override + public List selectAllMenuByStandId(SarBussStandMenu sarStandMenuEO){ + return this.baseMapper.selectAllMenuByStandId(sarStandMenuEO); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/controller/SarBussStandPlanController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/controller/SarBussStandPlanController.java new file mode 100644 index 00000000..b858ed30 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/controller/SarBussStandPlanController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarBussStandPlan.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarBussStandPlan.entity.SarBussStandPlan; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-25 +*/ +@RestController +@Api(tags = "福田标准法规--企业标准信息-|SarBussStandPlan|") +@RequestMapping("/${restPath}/lawss/sarBussStandPlan") +public class SarBussStandPlanController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/dao/SarBussStandPlanDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/dao/SarBussStandPlanDao.java new file mode 100644 index 00000000..7433d80b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/dao/SarBussStandPlanDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarBussStandPlan.dao; + +import com.adc.da.slrs.sarBussStandPlan.entity.SarBussStandPlan; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +public interface SarBussStandPlanDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/entity/SarBussStandPlan.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/entity/SarBussStandPlan.java new file mode 100644 index 00000000..924584ca --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/entity/SarBussStandPlan.java @@ -0,0 +1,186 @@ +package com.adc.da.slrs.sarBussStandPlan.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandPlan对象", description="") +public class SarBussStandPlan extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_CODE") + private String standCode; + + @ApiModelProperty(value = "被代替标准编号") + @TableField("REPLACED_STAND_NUM") + private String replacedStandNum; + + @ApiModelProperty(value = "计划类型") + @TableField("PLAN_TYPE") + private String planType; + + @ApiModelProperty(value = "中文名称") + @TableField("CN_NAME") + private String cnName; + + @ApiModelProperty(value = "英文名称") + @TableField("EN_NAME") + private String enName; + + @ApiModelProperty(value = "标准类别") + @TableField("STAND_SORT") + private String standSort; + + @ApiModelProperty(value = "计划开始时间") + @TableField("PLAN_START_TIME") + private LocalDateTime planStartTime; + + @ApiModelProperty(value = "计划结束时间") + @TableField("PLAN_END_TIME") + private LocalDateTime planEndTime; + + @ApiModelProperty(value = "标准起草组组员") + @TableField("COMPILERS_USER") + private String compilersUser; + + @ApiModelProperty(value = "标准密级") + @TableField("STAND_LEVEL") + private String standLevel; + + @ApiModelProperty(value = "计划发布日期") + @TableField("PUT_TIME") + private LocalDateTime putTime; + + @ApiModelProperty(value = "涉及的会签部门") + @TableField("COMPILE_UNIT") + private String compileUnit; + + @ApiModelProperty(value = "标准制修订来源") + @TableField("PLAN_SOURCE") + private String planSource; + + @ApiModelProperty(value = "制修订原因") + @TableField("PLAN_REASON") + private String planReason; + + @ApiModelProperty(value = "验证工作") + @TableField("TEST_WORK") + private String testWork; + + @ApiModelProperty(value = "项目影响") + @TableField("PLAN_IMPACT") + private String planImpact; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private LocalDateTime creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private LocalDateTime modifyTime; + + @ApiModelProperty(value = "删除标识") + @TableField("VALID_FLAG") + private BigDecimal validFlag; + + @ApiModelProperty(value = "制修订原因附件") + @TableField("PLAN_REASON_FILE") + private String planReasonFile; + + @ApiModelProperty(value = "验证工作附件 ") + @TableField("TEST_WORK_FILE") + private String testWorkFile; + + @ApiModelProperty(value = "项目影响附件") + @TableField("PLAN_IMPACT_FILE") + private String planImpactFile; + + @ApiModelProperty(value = "计划状态") + @TableField("PLAN_STATUS") + private String planStatus; + + @TableField("DRAFT_USER") + private String draftUser; + + @ApiModelProperty(value = "起草单位") + @TableField("DRAFTING_UNIT") + private String draftingUnit; + + @ApiModelProperty(value = "实际结束时间") + @TableField("ACTUAL_END_TIME") + private LocalDateTime actualEndTime; + + @ApiModelProperty(value = "签字确认文件") + @TableField("SIGN_CONFIRM_FILE") + private String signConfirmFile; + + @ApiModelProperty(value = "修订企标") + @TableField("REVISE_BUSS_STAND") + private String reviseBussStand; + + @ApiModelProperty(value = "起草分标委") + @TableField("DRAFT_COMMITTEE") + private String draftCommittee; + + @ApiModelProperty(value = "主要起草人ID") + @TableField("PRIMARY_DRAFTER") + private String primaryDrafter; + + @ApiModelProperty(value = "主起草人名称") + @TableField("PRIMARY_DRAFTER_NAME") + private String primaryDrafterName; + + @ApiModelProperty(value = "主起草部门ID") + @TableField("PRIMARY_DRAFTER_DEPT") + private String primaryDrafterDept; + + @ApiModelProperty(value = "主起草部门名称") + @TableField("PRIMARY_DRAFTER_DEPT_NAME") + private String primaryDrafterDeptName; + + @ApiModelProperty(value = "其他起草部门ID 逗号拼接") + @TableField("OTHER_DRAFTER_DEPT") + private String otherDrafterDept; + + @ApiModelProperty(value = "其他起草部门名称 逗号拼接") + @TableField("OTHER_DRAFTER_DEPT_NAME") + private String otherDrafterDeptName; + + @ApiModelProperty(value = "相关流程") + @TableField("PRC_NUM") + private String prcNum; + + @ApiModelProperty(value = "分类编号id") + @TableField("CLASS_CODE") + private String classCode; + + @ApiModelProperty(value = "分类号大类编号id") + @TableField("QB_CODE") + private String qbCode; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/service/ISarBussStandPlanService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/service/ISarBussStandPlanService.java new file mode 100644 index 00000000..698c96e3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/service/ISarBussStandPlanService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarBussStandPlan.service; + +import com.adc.da.slrs.sarBussStandPlan.entity.SarBussStandPlan; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +public interface ISarBussStandPlanService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/service/impl/SarBussStandPlanServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/service/impl/SarBussStandPlanServiceImpl.java new file mode 100644 index 00000000..efab798e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandPlan/service/impl/SarBussStandPlanServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarBussStandPlan.service.impl; + +import com.adc.da.slrs.sarBussStandPlan.entity.SarBussStandPlan; +import com.adc.da.slrs.sarBussStandPlan.dao.SarBussStandPlanDao; +import com.adc.da.slrs.sarBussStandPlan.service.ISarBussStandPlanService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Service +public class SarBussStandPlanServiceImpl extends ServiceImpl implements ISarBussStandPlanService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/controller/SarBussStandSnController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/controller/SarBussStandSnController.java new file mode 100644 index 00000000..e1a54f66 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/controller/SarBussStandSnController.java @@ -0,0 +1,46 @@ +package com.adc.da.slrs.sarBussStandSn.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarBussStandSn.service.ISarBussStandSnService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 企业标准信息表 前端控制器 + *

    +* +* @author super_liu +* @since 2022-07-01 +*/ +@RestController +@Api(tags = "|SarBussStandSn|") +@RequestMapping("/${restPath}/sarBussStandSn/sar-buss-stand-sn") +public class SarBussStandSnController extends BaseController { + + @Autowired + private ISarBussStandSnService iSarBussStandSnService; + + @ApiOperation(value = "效验当前顺序号是否存在") + @GetMapping("verifySnExists") + public ResponseMessage verifySnExists(@RequestParam("taskId") String taskId,@RequestParam("standSn") String standSn,@RequestParam("standSort") String standSort){ + synchronized (this){ + return Result.success(iSarBussStandSnService.verifySnExists(taskId,standSn,standSort)); + } + } + + @ApiOperation(value = "更新企标顺序号状态") + @GetMapping("modSnByProcess") + public ResponseMessage modSnByProcess(@RequestParam("taskId") String taskId){ + return Result.success(iSarBussStandSnService.modSnByProcess(taskId)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/dao/SarBussStandSnDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/dao/SarBussStandSnDao.java new file mode 100644 index 00000000..97768b99 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/dao/SarBussStandSnDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarBussStandSn.dao; + +import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * 企业标准信息表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2022-07-01 + */ +public interface SarBussStandSnDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/entity/SarBussStandSn.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/entity/SarBussStandSn.java new file mode 100644 index 00000000..8cec9fdc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/entity/SarBussStandSn.java @@ -0,0 +1,70 @@ +package com.adc.da.slrs.sarBussStandSn.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +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 java.util.Date; + +/** + *

    + * 企业标准信息表 + *

    + * + * @author super_liu + * @since 2022-07-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandSn对象", description="企业标准信息表") +public class SarBussStandSn extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "计划库制定状态 0 默认 buss1_1 技术标准 制定 buss2_1 产品标准 制定 ") + @TableField("REVISE_STATUS") + private String reviseStatus; + + @ApiModelProperty(value = "企标顺序号") + @TableField("STAND_SN") + private String standSn; + + @ApiModelProperty(value = "企标类别") + @TableField("STAND_SORT") + private String standSort; + + @ApiModelProperty(value = "企标编号使用状态 yes 已使用 no 未使用") + @TableField("USE_STATUS") + private String useStatus; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "任务ID 不为 null 取当前任务顺序号") + @TableField("TASK_ID") + private String taskId; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/service/ISarBussStandSnService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/service/ISarBussStandSnService.java new file mode 100644 index 00000000..76af0a85 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/service/ISarBussStandSnService.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.sarBussStandSn.service; + +import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 企业标准信息表 服务类 + *

    + * + * @author super_liu + * @since 2022-07-01 + */ +public interface ISarBussStandSnService extends IService { + + Boolean verifySnExists(String taskId,String standSn,String standSort); + + Boolean modSnByProcess(String taskId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/service/impl/SarBussStandSnServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/service/impl/SarBussStandSnServiceImpl.java new file mode 100644 index 00000000..1ebe3f38 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandSn/service/impl/SarBussStandSnServiceImpl.java @@ -0,0 +1,63 @@ +package com.adc.da.slrs.sarBussStandSn.service.impl; + +import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn; +import com.adc.da.slrs.sarBussStandSn.dao.SarBussStandSnDao; +import com.adc.da.slrs.sarBussStandSn.service.ISarBussStandSnService; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

    + * 企业标准信息表 服务实现类 + *

    + * + * @author super_liu + * @since 2022-07-01 + */ +@Service +public class SarBussStandSnServiceImpl extends ServiceImpl implements ISarBussStandSnService { + + @Autowired + private ISarBussStandSnService iSarBussStandSnService; + + @Autowired + private ISarBussionessStandService iSarBussionessStandService; + + @Override + public Boolean verifySnExists(String taskId,String standSn,String standSort){ + QueryWrapper qw = new QueryWrapper(); + qw.eq("STAND_SORT",standSort); + qw.eq("STAND_SN",standSn); + qw.and(wrapper -> wrapper.ne("TASK_ID",taskId).or().isNull("TASK_ID")); + int count = iSarBussStandSnService.count(qw); + QueryWrapper qw2 = new QueryWrapper(); + qw2.eq("STAND_SORT",standSort); + qw2.eq("STAND_NUMBER",standSn); + int count2 = iSarBussionessStandService.count(qw2); + if(count > 0 || count2 > 0){ + return false; + } + + return true; + } + + @Override + public Boolean modSnByProcess(String taskId){ + QueryWrapper qw = new QueryWrapper(); + qw.eq("TASK_ID",taskId); + int count = iSarBussStandSnService.count(qw); + if(count > 0){ + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.set("USE_STATUS","no"); + updateWrapper.set("TASK_ID",null); + updateWrapper.eq("TASK_ID",taskId); + return iSarBussStandSnService.update(updateWrapper); + } + + return false; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/controller/SarBussStandValController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/controller/SarBussStandValController.java new file mode 100644 index 00000000..7aa47c27 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/controller/SarBussStandValController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarBussStandVal.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarBussStandVal.entity.SarBussStandVal; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 企业标准关联表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-25 +*/ +@RestController +@Api(description = "|SarBussStandVal|") +@RequestMapping("/sarBussStandVal/sar-buss-stand-val") +public class SarBussStandValController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/dao/SarBussStandValDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/dao/SarBussStandValDao.java new file mode 100644 index 00000000..986f4737 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/dao/SarBussStandValDao.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.sarBussStandVal.dao; + +import com.adc.da.slrs.sarBussStandVal.entity.SarBussStandVal; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * 企业标准关联表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Repository +public interface SarBussStandValDao extends BaseMapper { + + //通过标准id删除表中数据 + int deleteDataByStandId(String standId); + + int insertForeach(List list); //批量新增 + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/entity/SarBussStandVal.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/entity/SarBussStandVal.java new file mode 100644 index 00000000..8957346b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/entity/SarBussStandVal.java @@ -0,0 +1,57 @@ +package com.adc.da.slrs.sarBussStandVal.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * 企业标准关联表 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussStandVal对象", description="企业标准关联表") +public class SarBussStandVal extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private String id; + + @TableField("STAND_ID") + private String standId; + + @TableField("PROPERTY_TYPE") + private String propertyType; + + @TableField("PROPERTY_VALUE") + private String propertyValue; + + @TableField("VALID_FLAG") + private Integer validFlag; + + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/service/ISarBussStandValService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/service/ISarBussStandValService.java new file mode 100644 index 00000000..0212d226 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/service/ISarBussStandValService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarBussStandVal.service; + +import com.adc.da.slrs.sarBussStandVal.entity.SarBussStandVal; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 企业标准关联表 服务类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +public interface ISarBussStandValService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/service/impl/SarBussStandValServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/service/impl/SarBussStandValServiceImpl.java new file mode 100644 index 00000000..a956c25f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandVal/service/impl/SarBussStandValServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarBussStandVal.service.impl; + +import com.adc.da.slrs.sarBussStandVal.entity.SarBussStandVal; +import com.adc.da.slrs.sarBussStandVal.dao.SarBussStandValDao; +import com.adc.da.slrs.sarBussStandVal.service.ISarBussStandValService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 企业标准关联表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-25 + */ +@Service +public class SarBussStandValServiceImpl extends ServiceImpl implements ISarBussStandValService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java new file mode 100644 index 00000000..7f93d5b5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java @@ -0,0 +1,373 @@ +package com.adc.da.slrs.sarBussionessStand.controller; + + +import com.adc.da.Log.BusinessType; +import com.adc.da.Log.EpcLog; +import com.adc.da.common.ReadExcel; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarAdvanceSearchVO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.IOUtils; +import com.adc.da.util.utils.StringUtils; +import com.adc.da.utils.util.BussStandExportUtil; +import com.adc.da.utils.util.SarAdvanceSearchUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Date; +import java.util.List; + +/** + *

    + * 企业标准信息表 前端控制器 + *

    + * + * @author super_liu + * @since 2021-07-13 + */ +@RestController +@Api(tags = "福田标准法规--企业标准信息") +@RequestMapping("/${restPath}/lawss/sarBussionessStand") +public class SarBussionessStandController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarBussionessStandController.class); + + @Autowired + private ISarBussionessStandService sarBussionessStandEOService; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private ITsResourceService iTsResourceService; + + + @Autowired + private ITsUserService tsUserService; + + @Autowired + private IDicTypeEOService dicTypeEOService; + + /** + * 根据计划库制定状态查询企标编号 + * + * @param + * @return + */ + @ApiOperation(value = "|SarBussionessStandEO|根据计划库制定状态查询企标编号") + @GetMapping("/getStandInfoByReviseStatus") + //@RequiresPermissions("lawss:sarStandardsInfo:get") + public ResponseMessage getStandInfoByReviseStatus(String reviseStatus,String standSort,String taskId) { + synchronized (this){ + SarBussionessStand result = sarBussionessStandEOService.getStandInfoByReviseStatus(reviseStatus,standSort,taskId); + return Result.success(result); + } + } + + @ApiOperation(value = "|SarBussionessStandEO|删除") + @PostMapping("deleteSarBussionessStand") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarBussionessStand:delete") + public ResponseMessage delete(String ids) throws Exception { + SarBussionessStandEOPage sarBussionessStandEOPage = new SarBussionessStandEOPage(); + sarBussionessStandEOPage.setIdlist(ids.split(",")); + ResponseMessage result = sarBussionessStandEOService.deleteSarBussionessStand(sarBussionessStandEOPage); + logger.info("delete from SAR_BUSSIONESS_STAND where id = {}", ids); + return result; + } + + /** + * 将查询出来的数据导出到EXCEL表格中 + * @param + * @return + * @author gaoyan + * date 2018-09-04 + */ + @ApiOperation(value = "|SarBussionessStandEO|导出excel") + @GetMapping(value = "/exportSarBussionessStand") + public void exportSarBussionessStand(String exportContent, String exportType, String exportName,String userId, HttpServletResponse response, HttpServletRequest request)throws Exception { + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName)||exportName.equals("null")){ + exportName="企业标准库"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx",request)); + response.setContentType("application/force-download"); + //导出数据 + List datas = sarBussionessStandEOService.getSarBussionessStand(exportType,exportContent,userId); + workbook = BussStandExportUtil.exportDatas(datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + if (workbook != null) { + workbook.close(); + } + } + } + + @ApiOperation(value = "|SarBussionessStandEO|企业标准修改") + @PostMapping(value = "/updateSarBussionessStand") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarBussionessStand:updateSarBussionessStand") + public ResponseMessage updateSarBussionessStand(@RequestBody SarBussionessStand sarBussionessStandEO) throws Exception { + sarBussionessStandEO.setModifyTime(new Date()); + sarBussionessStandEOService.updateSarBussionessStand(sarBussionessStandEO); + return Result.success("","修改成功",sarBussionessStandEO); + } + + /** + * 新增过程中验证标准号 + * + * @param page + * @return + * @author gaoyan + * date 2018-11-13 + */ + @ApiOperation(value = "|SarBussionessStandEO|验证输入的标准号") + @PostMapping("/validateStandNumber") + //@RequiresPermissions("lawss:sarStandardsInfo:selectReplaceStandNum") + public ResponseMessage validateStandNumber(SarBussionessStandEOPage page) throws Exception { + String sortName = ""; + String standNumShow = ""; + List getDicCode = dicTypeEOService.getDicEOByDicTypeCode(page.getStandSort()); + if(getDicCode!= null && getDicCode.size()>0){ + sortName = getDicCode.get(0).getDicTypeName(); + } + if (StringUtils.isNotEmpty(page.getStandCode()) && StringUtils.isNotEmpty(page.getStandSort())) { + String standnumber = ""; + if(StringUtils.isNotEmpty(page.getStandYear()) && !"null".equals(page.getStandYear())){ + standnumber = page.getStandSort() + " " + page.getStandCode() + "-" + page.getStandYear(); + standNumShow = sortName + " " + page.getStandCode() + "-" + page.getStandYear(); + } else { + standnumber = page.getStandSort() + " " + page.getStandCode(); + standNumShow = sortName + " " + page.getStandCode(); + } + List standlist = sarBussionessStandEOService.selectStandardsByStandNumber(standnumber); + if (standlist.size() > 0) { + if (StringUtils.isNotEmpty(page.getId())) { + // 如果是修改,判断id是否一样 + for (int i = 0; i < standlist.size(); i++) { + if (standlist.get(i).getId().equals(page.getId())) { + continue; + } else { + return Result.error(standNumShow + "标准号已存在"); + } + } + return Result.success(); + } else { + return Result.error(standNumShow + "标准号已存在"); + } + } else { + return Result.success(); + } + } else { + return Result.success(); + } + } + + /** + * 根据id查询标准详情 + * + * @param + * @return + */ + @ApiOperation(value = "|SarBussionessStandEO|详情") + @GetMapping("/getStandInfoById") + @EpcLog(description = "企标详情查询",businessType = BusinessType.查询,speclaiFlag = "5",speclaiValue = "查询详情") + public ResponseMessage getStandInfoById(String id) throws Exception { + SarBussionessStand result = sarBussionessStandEOService.selectStandardsInfoByKey(id); + String collectId = personCollectEOService.queryCollectByUserAndId(id); + result.setCollectId(collectId); + return Result.success(result); + } + + @ApiOperation(value = "|SarBussionessStandEO|详情") + @GetMapping("/getStandInfoUpdateById") + //@RequiresPermissions("lawss:sarStandardsInfo:get") + public ResponseMessage getStandInfoUpdateById(String id) throws Exception { + SarBussionessStand result = sarBussionessStandEOService.selectStandardsInfoUpdateByKey(id); + String collectId = personCollectEOService.queryCollectByUserAndId(id); + result.setCollectId(collectId); + return Result.success(result); + } + + /** + * 给指定标准配置目录 + * @param standardsInfoEO + * @return + */ + @ApiOperation(value = "|SarBussionessStandEO|确认配置标准") + @PostMapping("/saveStandardsMenu") + //@RequiresPermissions("lawss:sarBussionessStand:saveStandardsMenu") + public ResponseMessage saveStandardsMenu(@RequestBody SarBussionessStandEOPage standardsInfoEO){ + if ("wdsc".equals(standardsInfoEO.getMenuId()) || "gxhbq".equals(standardsInfoEO.getMenuId())) { + return Result.error("所选节点不支持配置标准"); + } else { + SarBussionessStandEOPage standlist = sarBussionessStandEOService.updateStandardsMenu(standardsInfoEO); + return Result.success(standardsInfoEO); + } + } + + /** + * 自定义分页查询列表 + * @param page 标准信息 + * @return + */ + @ApiOperation(value = "|SarBussionessStandEO|自定义分页查询列表") + @GetMapping("/getSarBussionStandPage") + //@RequiresPermissions("lawss:sarBussionessStand:getSarBussionStandPage") + public ResponseMessage> getSarBussionStandPage(SarBussionessStandEOPage page) throws Exception { + if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + String advanceStr = SarAdvanceSearchUtil.createStandSql(searchList,"SAR_BUSS_STAND_ATTR_INFO"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + if(page.getUserId() == null || page.getUserId().equals("")){ + page.setUserId(LoginUserUtil.getUserId()); + } + + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + List rows = sarBussionessStandEOService.getSarBussionStandPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + /** + * 自定义分页查询列表---判断是否会进入详情页面 + * @param page 标准信息 + * @return + */ + @ApiOperation(value = "|SarBussionessStandEO|自定义分页查询列表") + @GetMapping("/checkIsShow") + //@RequiresPermissions("lawss:sarBussionessStand:getSarBussionStandPage") + public boolean checkIsShow(SarBussionessStandEOPage page) throws Exception { + if(page.getUserId() == null || page.getUserId().equals("")){ + page.setUserId(LoginUserUtil.getUserId()); + } + return sarBussionessStandEOService.checkIsShow(page); + } + + private void nowOrderFunc(SarBussionessStandEOPage page) { + switch (page.getNowOrderBy()) { + case 1: + page.setOrderByA("tmp_tb.issue_time");//发布日期 + break; + case 2: + page.setOrderByA("tmp_tb.put_time");//实施日期 + break; + case 3: + page.setOrderByA("tmp_tb.standStatusShow");//文本状态 + break; + default: + page.setNowOrder(null); + break; + } + if (null != page.getNowOrder()) { + switch (page.getNowOrder()) { + case 1: + page.setOrder1("desc"); + break; + case 2: + page.setOrder1("asc"); + break; + default: + page.setOrder1(null); + break; + } + } + } + + + /** + * 自定义分页查询列表 清单 + * @param page 标准信息 + * @return + */ + @ApiOperation(value = "|SarBussionessStandEO|清单分页查询列表") + @GetMapping("/getSarBussionStandPageQd") + public ResponseMessage> getSarBussionStandPageQd(SarBussionessStandEOPage page) throws Exception { + if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + String advanceStr = SarAdvanceSearchUtil.createStandSql(searchList,"SAR_BUSS_STAND_ATTR_INFO"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + if(page.getUserId() == null || page.getUserId().equals("")){ + page.setUserId(LoginUserUtil.getUserId()); + } + + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + List rows = sarBussionessStandEOService.getSarBussionStandPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "企标下载带水印") + @GetMapping("/logBussDownload2") + @EpcLog(description = "企标下载",businessType = BusinessType.带水印下载 , speclaiFlag = "Buss" ,speclaiValue = "下载") + public String logInvalidDownload2(SarBussionessStand sarBussionessStand) { + return "1"; + } + + @ApiOperation(value = "企标下载不带水印") + @GetMapping("/logBussDownload1") + @EpcLog(description = "企标下载",businessType = BusinessType.下载 , speclaiFlag = "Buss" ,speclaiValue = "下载") + public String logForeignDownload(SarBussionessStand sarBussionessStand) { + return "1"; + } + + @ApiOperation(value = "企标预览") + @GetMapping("/logBuss") + @EpcLog(description = "企标预览",businessType = BusinessType.预览 , speclaiFlag = "Buss" ,speclaiValue = "预览") + public String logForeignDownload2(SarBussionessStand sarBussionessStand) { + return "1"; + } + + + + + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/dao/SarBussionessStandDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/dao/SarBussionessStandDao.java new file mode 100644 index 00000000..49cef6a8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/dao/SarBussionessStandDao.java @@ -0,0 +1,122 @@ +package com.adc.da.slrs.sarBussionessStand.dao; + +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport; +import com.adc.da.slrs.sarStandardsInfo.entity.RecommendVO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.sys.entity.UserEO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; + +/** + *

    + * 企业标准信息表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-13 + */ +@Repository +public interface SarBussionessStandDao extends BaseMapper { + + String updateStateScheduledSql = "SELECT A.*,B.BDTQBBHBUSS FROM sar_bussioness_stand A LEFT JOIN sar_buss_stand_attr_info B ON B.STAND_ID = A.ID ${ew.customSqlSegment}"; + + /** + * 自动更新文本状态通用查询 + * @param queryWrapper + * @return + */ + @Select(updateStateScheduledSql) + List getStateScheduledList(@Param("ew") QueryWrapper queryWrapper); + + List queryByBussStateSync(SarBussionessStand sarBussionessStand); + + SarBussionessStand getStandInfoByReviseStatus(String reviseStatus,String standSort); + + SarBussionessStand selectByPrimaryKey(String standId); + + List selectStandardsByStandNumber(SarBussionessStand sarBussionessStand); + + List selectStandardsInfoByKey(String id); + + List queryByList(SarBussionessStandEOPage sarBussionessStandEOPage); + + int getBussionessStandInfoCount(SarBussionessStandEOPage page); + + List getBussionessStandInfoPage(SarBussionessStandEOPage page); + + List getBussionessStandInfoByNum(SarBussionessStandEOPage page); + + List getBussionessStandInfoPageByRole(SarBussionessStandEOPage page); + + //企标复审使用 + List getBussionessStandInfoQbfs(SarBussionessStandEOPage page); + + int getBussionessStandInfoCountByRole(SarBussionessStandEOPage page); + + List getSarBussionessStand(SarBussionessStandEOPage page); + //liwenxuan:标准法规更新数量及清单:企业标准 + Integer selectBussionessStandardsCount(Date visitTime); + //liwenxuan:标准法规更新数量及清单:企业标准All + Integer selectBussionessStandardsCountAll(); + + + List selectSarBussionesDownloadFileInfo(String id); + + List selectStandByStandNumber(@Param("standCode") String standCode); + + /** + * 搜索中心查询相关推荐 + * + * @param: + * @auther: gaoyan + * @date: 2018/11/10 9:22 + */ + List selectRecommendStand(SarBussionessStandEOPage pagenew); + + List selectCloseStand(SarBussionessStandEOPage pagenew); + + List queryByPutTimeList(SarBussionessStand sarBussionessStandEO); + + int updateByStandNum(SarBussionessStand s); + + /** + * 根据唯一的标准code,修改标准的被代替标准号 + * @param: + * @auther: gaoyan + * @date: 2018/11/10 9:22 + */ + int updateRelacedNumByNumber(SarBussionessStandEOPage pagenew); + + int updateRelaceNumByNumber(SarBussionessStandEOPage pagenew); + + List selectBussStandByIdAndRole(SarBussionessStandEOPage pagenew); + + void updateReplacedNumById(SarBussionessStand sarBussionessStandEO); + + Integer selectStandColumn(@Param("columnName") String columnName); + + List standRemindInfo(@Param("standCode") String standCode, @Param("standName") String standName); + + int selectIsExit(@Param("id") String id); + + List selectPerson(String qbid); + + List selectPersonAll(String qbid); + + int updateByPrimaryKeySelectiveTimeNotNull(SarBussionessStand sarBussionessStandEO); + + int updateByPrimaryKeySelective(SarBussionessStand sarBussionessStandEO); + + int insertSelective(SarBussionessStand sarBussionessStandEO); + + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussStandMenuEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussStandMenuEO.java new file mode 100644 index 00000000..c80cce75 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussStandMenuEO.java @@ -0,0 +1,125 @@ +package com.adc.da.slrs.sarBussionessStand.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.List; + + +/** + * 功能:SAR_BUSS_STAND_MENU SarBussStandMenuEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarBussStandMenuEO extends BaseEntity { + + private String menuId; + private String bussStandId; + private String id; + private Integer validFlag; + private String oldMenuId; + private String[] idlist; + private List menuIds; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • menuId -> menu_id
  • + *
  • bussStandId -> buss_stand_id
  • + *
  • id -> id
  • + *
  • validFlag -> valid_flag
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "menuId": return "menu_id"; + case "bussStandId": return "buss_stand_id"; + case "id": return "id"; + case "validFlag": return "valid_flag"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • menu_id -> menuId
  • + *
  • buss_stand_id -> bussStandId
  • + *
  • id -> id
  • + *
  • valid_flag -> validFlag
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "menu_id": return "menuId"; + case "buss_stand_id": return "bussStandId"; + case "id": return "id"; + case "valid_flag": return "validFlag"; + default: return null; + } + } + + /** **/ + public String getMenuId() { + return this.menuId; + } + + /** **/ + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + /** **/ + public String getBussStandId() { + return this.bussStandId; + } + + /** **/ + public void setBussStandId(String bussStandId) { + this.bussStandId = bussStandId; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + public String getOldMenuId() { + return oldMenuId; + } + + public void setOldMenuId(String oldMenuId) { + this.oldMenuId = oldMenuId; + } + + public String[] getIdlist() { + return idlist; + } + + public void setIdlist(String[] idlist) { + this.idlist = idlist; + } + + public List getMenuIds() { + return menuIds; + } + + public void setMenuIds(List menuIds) { + this.menuIds = menuIds; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussionessStand.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussionessStand.java new file mode 100644 index 00000000..f4278876 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussionessStand.java @@ -0,0 +1,591 @@ +package com.adc.da.slrs.sarBussionessStand.entity; + +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import java.time.LocalDate; + +import com.adc.da.slrs.standardSplit.entity.SarStandAttrDetailsEO; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.*; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * 企业标准信息表 + *

    + * + * @author super_liu + * @since 2021-07-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussionessStand对象", description="企业标准信息表") +public class SarBussionessStand extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "企标标准号") + @TableField("STAND_CODE") + private String standCode; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_NUMBER") + private String standNumber; + + @ApiModelProperty(value = "标准名称") + @TableField("STAND_NAME") + private String standName; + + @ApiModelProperty(value = "标准英文名称") + @TableField("STAND_EN_NAME") + private String standEnName; + + @ApiModelProperty(value = "发布日期") + @TableField("ISSUE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTime; + + @ApiModelProperty(value = "实施日期") + @TableField("PUT_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String putTime; + + @ApiModelProperty(value = "代替标准号") + @TableField("REPLACE_STAND_NUM") + private String replaceStandNum; + + @ApiModelProperty(value = "被代替标准号") + @TableField("REPLACED_STAND_NUM") + private String replacedStandNum; + + @ApiModelProperty(value = "标准状态") + @TableField("STAND_STATUS") + private String standStatus; + + @ApiModelProperty(value = "适用国家/地区") + @TableField("APPLY_COUNTRY") + private String applyCountry; + + @ApiModelProperty(value = "标准性质") + @TableField("STAND_NATURE") + private String standNature; + + @ApiModelProperty(value = "标准类别") + @TableField("STAND_SORT") + private String standSort; + + @ApiModelProperty(value = "标准年份") + @TableField("STAND_YEAR") + private String standYear; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + // 新添加字段 + @ApiModelProperty(value = "文本状态") + @TableField("TEXT_STATUS_BUSS") + private String textStatusBuss; + + @ApiModelProperty(value = "计划库制定状态 0 默认 1 制定 2修订") + @TableField("REVISE_STATUS") + private String reviseStatus; + + @ApiModelProperty(value = "制修订状态 buss1_1 技术标准 制定中 buss1_2 技术标准 修订中 " + + ", buss2_1 产品标准_制定中 buss2_2 产品标准_修订中 buss2_3 产品标准_修改中") + @TableField("REVISION_STATUS") + private String revisionStatus; + + @ApiModelProperty(value = "标准顺序号") + @TableField("STAND_SN") + private String standSn; + + + // 非表字段 + @TableField(exist = false) + private String newStandSn; + + /** + * 代替企标标准号 + */ + @TableField(exist = false) + private String DTQBBHBUSS; + + /** + * 代替企标标准号 + */ + @TableField(exist = false) + private String BDTQBBHBUSS; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String firstPutTime; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String putTimeShow; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTimeShow; + + @TableField(exist = false) + private String issueTimeStr; + + @TableField(exist = false) + private String putTimeStr; + + @TableField(exist = false) + private String processNum;//流程编号 + + //目录ID 非标准信息表中的字段 + @TableField(exist = false) + private String menuId; + + @TableField(exist = false) + private String menuParentId; + + @TableField(exist = false) + private String textStatusBussShow; + + @TableField(exist = false) + private String standStatusShow; // 标准状态下拉框 --单选 + + @TableField(exist = false) + private String standNatrueShow; + + @TableField(exist = false) + private String standSortShow; + + @TableField(exist = false) + private String applyCountryShow; + + @TableField(exist = false) + private List standFileList = new ArrayList(); + + @TableField(exist = false) + private List opinionFilesList = new ArrayList(); + + @TableField(exist = false) + private List relevanceFileList = new ArrayList(); + + @TableField(exist = false) + private String collectId; + + //文件的类型 + @TableField(exist = false) + private String standFileClassify; + + //文件的下载id + @TableField(exist = false) + private String attId; + + //记录是否修改了替代文件号 + @TableField(exist = false) + private int upReplaceNumFlag; + //记录是否修改了文件号 + @TableField(exist = false) + private int upNumFlag; + // 数据库新加的字段 + + @TableField(exist = false) + private String remark;//备注 + + @TableField(exist = false) + private Map attrInfoMap = new LinkedHashMap<>(); //属性表字段与值 + + @TableField(exist = false) + private Map attrInfoCaseMap = new LinkedHashMap<>(); //属性表字段与值小写前端带入渲染 + + @TableField(exist = false) + private Map attrInfoProcessMap = new LinkedHashMap<>(); //属性表字段与值小写前端带入渲染 + + @TableField(exist = false) + private String sarStandAttrEOStr; //新增修改时属性表信息 + + @TableField(exist = false) + private String fileIds; //全部文件ID + + @TableField(exist = false) + private List attrInfoList = new ArrayList<>(); + + /** + * 新增条件字段 + * @return + */ + @TableField(exist = false) + private String reviewTime; + @TableField(exist = false) + private String issueTimeStart; + @TableField(exist = false) + private String issueTimeEnd; + @TableField(exist = false) + private String prcCreateUser; + //体系类别ID + @TableField(exist = false) + private String txlbId; + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStandCode() { + return standCode; + } + + public void setStandCode(String standCode) { + this.standCode = standCode; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getStandEnName() { + return standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getPutTime() { + return putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } + + public String getReplaceStandNum() { + return replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + public String getReplacedStandNum() { + return replacedStandNum; + } + + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + public String getStandStatus() { + return standStatus; + } + + public void setStandStatus(String standStatus) { + this.standStatus = standStatus; + } + + public String getApplyCountry() { + return applyCountry; + } + + public void setApplyCountry(String applyCountry) { + this.applyCountry = applyCountry; + } + + public String getStandNature() { + return standNature; + } + + public void setStandNature(String standNature) { + this.standNature = standNature; + } + + public String getStandSort() { + return standSort; + } + + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public Integer getValidFlag() { + return validFlag; + } + + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getTextStatusBuss() { + return textStatusBuss; + } + + public void setTextStatusBuss(String textStatusBuss) { + this.textStatusBuss = textStatusBuss; + } + + public String getFirstPutTime() { + return firstPutTime; + } + + public void setFirstPutTime(String firstPutTime) { + this.firstPutTime = firstPutTime; + } + + public String getPutTimeShow() { + return putTimeShow; + } + + public void setPutTimeShow(String putTimeShow) { + this.putTimeShow = putTimeShow; + } + + public String getIssueTimeShow() { + return issueTimeShow; + } + + public void setIssueTimeShow(String issueTimeShow) { + this.issueTimeShow = issueTimeShow; + } + + public String getIssueTimeStr() { + return issueTimeStr; + } + + public void setIssueTimeStr(String issueTimeStr) { + this.issueTimeStr = issueTimeStr; + } + + public String getPutTimeStr() { + return putTimeStr; + } + + public void setPutTimeStr(String putTimeStr) { + this.putTimeStr = putTimeStr; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getMenuParentId() { + return menuParentId; + } + + public void setMenuParentId(String menuParentId) { + this.menuParentId = menuParentId; + } + + public String getStandStatusShow() { + return standStatusShow; + } + + public void setStandStatusShow(String standStatusShow) { + this.standStatusShow = standStatusShow; + } + + public String getStandNatrueShow() { + return standNatrueShow; + } + + public void setStandNatrueShow(String standNatrueShow) { + this.standNatrueShow = standNatrueShow; + } + + public String getStandSortShow() { + return standSortShow; + } + + public void setStandSortShow(String standSortShow) { + this.standSortShow = standSortShow; + } + + public String getApplyCountryShow() { + return applyCountryShow; + } + + public void setApplyCountryShow(String applyCountryShow) { + this.applyCountryShow = applyCountryShow; + } + + public List getStandFileList() { + return standFileList; + } + + public void setStandFileList(List standFileList) { + this.standFileList = standFileList; + } + + public List getOpinionFilesList() { + return opinionFilesList; + } + + public void setOpinionFilesList(List opinionFilesList) { + this.opinionFilesList = opinionFilesList; + } + + public List getRelevanceFileList() { + return relevanceFileList; + } + + public void setRelevanceFileList(List relevanceFileList) { + this.relevanceFileList = relevanceFileList; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public String getStandFileClassify() { + return standFileClassify; + } + + public void setStandFileClassify(String standFileClassify) { + this.standFileClassify = standFileClassify; + } + + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + public int getUpReplaceNumFlag() { + return upReplaceNumFlag; + } + + public void setUpReplaceNumFlag(int upReplaceNumFlag) { + this.upReplaceNumFlag = upReplaceNumFlag; + } + + public int getUpNumFlag() { + return upNumFlag; + } + + public void setUpNumFlag(int upNumFlag) { + this.upNumFlag = upNumFlag; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Map getAttrInfoMap() { + return attrInfoMap; + } + + public void setAttrInfoMap(Map attrInfoMap) { + this.attrInfoMap = attrInfoMap; + } + + public Map getAttrInfoCaseMap() { + return attrInfoCaseMap; + } + + public void setAttrInfoCaseMap(Map attrInfoCaseMap) { + this.attrInfoCaseMap = attrInfoCaseMap; + } + + public String getSarStandAttrEOStr() { + return sarStandAttrEOStr; + } + + public void setSarStandAttrEOStr(String sarStandAttrEOStr) { + this.sarStandAttrEOStr = sarStandAttrEOStr; + } + + public String getFileIds() { + return fileIds; + } + + public void setFileIds(String fileIds) { + this.fileIds = fileIds; + } + + public List getAttrInfoList() { + return attrInfoList; + } + + public void setAttrInfoList(List attrInfoList) { + this.attrInfoList = attrInfoList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussionessStandExport.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussionessStandExport.java new file mode 100644 index 00000000..c2decc66 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/entity/SarBussionessStandExport.java @@ -0,0 +1,613 @@ +package com.adc.da.slrs.sarBussionessStand.entity; + +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.standardSplit.entity.SarStandAttrDetailsEO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 java.util.*; + +/** + *

    + * 企业标准信息表 + *

    + * + * @author super_liu + * @since 2021-07-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussionessStand对象", description="企业标准信息表") +public class SarBussionessStandExport extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "企标标准号") + @TableField("STAND_CODE") + private String standCode; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_NUMBER") + private String standNumber; + + @ApiModelProperty(value = "标准名称") + @TableField("STAND_NAME") + private String standName; + + @ApiModelProperty(value = "标准英文名称") + @TableField("STAND_EN_NAME") + private String standEnName; + + @ApiModelProperty(value = "发布日期") + @TableField("ISSUE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTime; + + @ApiModelProperty(value = "实施日期") + @TableField("PUT_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String putTime; + + @ApiModelProperty(value = "代替标准号") + @TableField("REPLACE_STAND_NUM") + private String replaceStandNum; + + @ApiModelProperty(value = "被代替标准号") + @TableField("REPLACED_STAND_NUM") + private String replacedStandNum; + + @ApiModelProperty(value = "标准状态") + @TableField("STAND_STATUS") + private String standStatus; + + @ApiModelProperty(value = "适用国家/地区") + @TableField("APPLY_COUNTRY") + private String applyCountry; + + @ApiModelProperty(value = "标准性质") + @TableField("STAND_NATURE") + private String standNature; + + @ApiModelProperty(value = "标准类别") + @TableField("STAND_SORT") + private String standSort; + + @ApiModelProperty(value = "标准年份") + @TableField("STAND_YEAR") + private String standYear; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + // 新添加字段 + @ApiModelProperty(value = "文本状态") + @TableField("TEXT_STATUS_BUSS") + private String textStatusBuss; + + @ApiModelProperty(value = "计划库制定状态 0 默认 1 制定 2修订") + @TableField("REVISE_STATUS") + private String reviseStatus; + + @ApiModelProperty(value = "制修订状态 buss1_1 技术标准 制定中 buss1_2 技术标准 修订中 " + + ", buss2_1 产品标准_制定中 buss2_2 产品标准_修订中 buss2_3 产品标准_修改中") + @TableField("REVISION_STATUS") + private String revisionStatus; + + @ApiModelProperty(value = "标准顺序号") + @TableField("STAND_SN") + private String standSn; + + + // 非表字段 + @TableField(exist = false) + private String newStandSn; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String firstPutTime; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String putTimeShow; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTimeShow; + + @TableField(exist = false) + private String issueTimeStr; + + @TableField(exist = false) + private String putTimeStr; + + @TableField(exist = false) + private String processNum;//流程编号 + + //目录ID 非标准信息表中的字段 + @TableField(exist = false) + private String menuId; + + @TableField(exist = false) + private String menuParentId; + + @TableField(exist = false) + private String textStatusBussShow; + + @TableField(exist = false) + private String standStatusShow; // 标准状态下拉框 --单选 + + @TableField(exist = false) + private String standNatrueShow; + + @TableField(exist = false) + private String standSortShow; + + @TableField(exist = false) + private String applyCountryShow; + + @TableField(exist = false) + private List standFileList = new ArrayList(); + + @TableField(exist = false) + private List opinionFilesList = new ArrayList(); + + @TableField(exist = false) + private List relevanceFileList = new ArrayList(); + + @TableField(exist = false) + private String collectId; + + //文件的类型 + @TableField(exist = false) + private String standFileClassify; + + //文件的下载id + @TableField(exist = false) + private String attId; + + //记录是否修改了替代文件号 + @TableField(exist = false) + private int upReplaceNumFlag; + //记录是否修改了文件号 + @TableField(exist = false) + private int upNumFlag; + // 数据库新加的字段 + + @TableField(exist = false) + private String remark;//备注 + + @TableField(exist = false) + private Map attrInfoMap = new LinkedHashMap<>(); //属性表字段与值 + + @TableField(exist = false) + private Map attrInfoCaseMap = new LinkedHashMap<>(); //属性表字段与值小写前端带入渲染 + + @TableField(exist = false) + private Map attrInfoProcessMap = new LinkedHashMap<>(); //属性表字段与值小写前端带入渲染 + + @TableField(exist = false) + private String sarStandAttrEOStr; //新增修改时属性表信息 + + @TableField(exist = false) + private String fileIds; //全部文件ID + + @TableField(exist = false) + private List attrInfoList = new ArrayList<>(); + + /** + * 新增条件字段 + * @return + */ + @TableField(exist = false) + private String reviewTime; + @TableField(exist = false) + private String issueTimeStart; + @TableField(exist = false) + private String issueTimeEnd; + @TableField(exist = false) + private String prcCreateUser; + + private String FZRQBUSS; + private String FSRQBUSS; + private String FBGBUSS; + private String BZSMBUSS; + private String LSBBBUSS; + private String QTWJBUSS; + private String QCDW; + private String QCRBUSS; + private String WJSCRYBUSS; + private String SYCXCLASS; + private String NYLXCLASS; + private String SYCPXCLASS; + private String TXLBBUSS; + private String VPPSBMBUSS; + private String VPPSCNBUSS; + private String DTQBBHBUSS; + private String BDTQBBHBUSS; + private String XGJLBUSS; + private String XGLC; + private String GLWJBUSS; + private String XCSJBUSS; + private String LLCS; + private String CS; + private String CYCVPPSBMBUSS; + private String CYCVPPSCNBUSS; + private String KCVPPSBMBUSS; + private String KCVPPSCNBUSS; + private String DYBXHBUSS; + private String DYMCBUSS; + private String YYBZ; + private String CBCD; + private String CYCD; + private String CYBZ; + private String BARQ; + private String XGD; + private String CSZD; + private String CDZD; + private String CYCDYBXHBUSS; + private String CYCDYMCBUSS; + + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStandCode() { + return standCode; + } + + public void setStandCode(String standCode) { + this.standCode = standCode; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getStandEnName() { + return standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getPutTime() { + return putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } + + public String getReplaceStandNum() { + return replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + public String getReplacedStandNum() { + return replacedStandNum; + } + + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + public String getStandStatus() { + return standStatus; + } + + public void setStandStatus(String standStatus) { + this.standStatus = standStatus; + } + + public String getApplyCountry() { + return applyCountry; + } + + public void setApplyCountry(String applyCountry) { + this.applyCountry = applyCountry; + } + + public String getStandNature() { + return standNature; + } + + public void setStandNature(String standNature) { + this.standNature = standNature; + } + + public String getStandSort() { + return standSort; + } + + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public Integer getValidFlag() { + return validFlag; + } + + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getTextStatusBuss() { + return textStatusBuss; + } + + public void setTextStatusBuss(String textStatusBuss) { + this.textStatusBuss = textStatusBuss; + } + + public String getFirstPutTime() { + return firstPutTime; + } + + public void setFirstPutTime(String firstPutTime) { + this.firstPutTime = firstPutTime; + } + + public String getPutTimeShow() { + return putTimeShow; + } + + public void setPutTimeShow(String putTimeShow) { + this.putTimeShow = putTimeShow; + } + + public String getIssueTimeShow() { + return issueTimeShow; + } + + public void setIssueTimeShow(String issueTimeShow) { + this.issueTimeShow = issueTimeShow; + } + + public String getIssueTimeStr() { + return issueTimeStr; + } + + public void setIssueTimeStr(String issueTimeStr) { + this.issueTimeStr = issueTimeStr; + } + + public String getPutTimeStr() { + return putTimeStr; + } + + public void setPutTimeStr(String putTimeStr) { + this.putTimeStr = putTimeStr; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getMenuParentId() { + return menuParentId; + } + + public void setMenuParentId(String menuParentId) { + this.menuParentId = menuParentId; + } + + public String getStandStatusShow() { + return standStatusShow; + } + + public void setStandStatusShow(String standStatusShow) { + this.standStatusShow = standStatusShow; + } + + public String getStandNatrueShow() { + return standNatrueShow; + } + + public void setStandNatrueShow(String standNatrueShow) { + this.standNatrueShow = standNatrueShow; + } + + public String getStandSortShow() { + return standSortShow; + } + + public void setStandSortShow(String standSortShow) { + this.standSortShow = standSortShow; + } + + public String getApplyCountryShow() { + return applyCountryShow; + } + + public void setApplyCountryShow(String applyCountryShow) { + this.applyCountryShow = applyCountryShow; + } + + public List getStandFileList() { + return standFileList; + } + + public void setStandFileList(List standFileList) { + this.standFileList = standFileList; + } + + public List getOpinionFilesList() { + return opinionFilesList; + } + + public void setOpinionFilesList(List opinionFilesList) { + this.opinionFilesList = opinionFilesList; + } + + public List getRelevanceFileList() { + return relevanceFileList; + } + + public void setRelevanceFileList(List relevanceFileList) { + this.relevanceFileList = relevanceFileList; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public String getStandFileClassify() { + return standFileClassify; + } + + public void setStandFileClassify(String standFileClassify) { + this.standFileClassify = standFileClassify; + } + + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + public int getUpReplaceNumFlag() { + return upReplaceNumFlag; + } + + public void setUpReplaceNumFlag(int upReplaceNumFlag) { + this.upReplaceNumFlag = upReplaceNumFlag; + } + + public int getUpNumFlag() { + return upNumFlag; + } + + public void setUpNumFlag(int upNumFlag) { + this.upNumFlag = upNumFlag; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Map getAttrInfoMap() { + return attrInfoMap; + } + + public void setAttrInfoMap(Map attrInfoMap) { + this.attrInfoMap = attrInfoMap; + } + + public Map getAttrInfoCaseMap() { + return attrInfoCaseMap; + } + + public void setAttrInfoCaseMap(Map attrInfoCaseMap) { + this.attrInfoCaseMap = attrInfoCaseMap; + } + + public String getSarStandAttrEOStr() { + return sarStandAttrEOStr; + } + + public void setSarStandAttrEOStr(String sarStandAttrEOStr) { + this.sarStandAttrEOStr = sarStandAttrEOStr; + } + + public String getFileIds() { + return fileIds; + } + + public void setFileIds(String fileIds) { + this.fileIds = fileIds; + } + + public List getAttrInfoList() { + return attrInfoList; + } + + public void setAttrInfoList(List attrInfoList) { + this.attrInfoList = attrInfoList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/ISarBussionessStandService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/ISarBussionessStandService.java new file mode 100644 index 00000000..57897616 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/ISarBussionessStandService.java @@ -0,0 +1,58 @@ +package com.adc.da.slrs.sarBussionessStand.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.search.entity.SarBussionessStandEO; +import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 企业标准信息表 服务类 + *

    + * + * @author super_liu + * @since 2021-07-13 + */ +public interface ISarBussionessStandService extends IService { + + void updateCiteStand(SarBussionessStand sarBussionessStandEO, SarBussionessStand beforeSarStandardsInfo, String upField, String beUpedField); + + SarBussionessStand getStandInfoByReviseStatus(String reviseStatus,String standSort,String taskId); + + void attrInfoDetails (SarBussionessStand row) throws Exception; + + ResponseMessage deleteSarBussionessStand(SarBussionessStandEOPage page) throws Exception; + + List getSarBussionessStand(String exportType, String exportContent, String userId) throws Exception; + + SarBussionessStand updateSarBussionessStand(SarBussionessStand sarBussionessStandEO) throws Exception; + + ResponseMessage createSarBussionessStand(SarBussionessStand sarBussionessStandEO) throws Exception; + + List selectStandardsByStandNumber(String replaceStandNum); + + SarBussionessStand selectStandardsInfoByKey(String id) throws Exception; + + SarBussionessStand selectStandardsInfoUpdateByKey(String id) throws Exception; + + SarBussionessStandEOPage updateStandardsMenu(SarBussionessStandEOPage standardsInfoEO); + + List queryByList(SarBussionessStandEOPage sarBussionessStandEOPage); + + List getSarBussionStandPage(SarBussionessStandEOPage page) throws Exception; + + boolean checkIsShow(SarBussionessStandEOPage page) throws Exception; + + List getSarBussionStandPageQd(SarBussionessStandEOPage page) throws Exception; + + void convertDocAllQB(List list); + + void checkFileByEncrypt(); + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java new file mode 100644 index 00000000..6b67f662 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -0,0 +1,1943 @@ +package com.adc.da.slrs.sarBussionessStand.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.common.ConvertMqEO; +import com.adc.da.common.SarTypeEnum; +import com.adc.da.common.SelectionTypeEnum; +import com.adc.da.common.UseModuleEnum; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.mq.CreateMQService; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.dao.PersonCollectEODao; +import com.adc.da.person.entity.TsPersonCollect; +import com.adc.da.person.page.PersonCollectEOPage; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.entity.SarBussionessStandEO; +import com.adc.da.search.entity.StandLawsEO; +import com.adc.da.search.service.StandLawsSearchService; +import com.adc.da.slrs.NewsFeed.entity.NewsFeed; +import com.adc.da.slrs.NewsFeed.service.INewsFeedService; +import com.adc.da.slrs.otConvertMq.dao.OtConvertMqDao; +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfo; +import com.adc.da.slrs.sarBussStandFile.dao.SarBussStandFileDao; +import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +import com.adc.da.slrs.sarBussStandItems.dao.SarBussStandItemsDao; +import com.adc.da.slrs.sarBussStandMenu.dao.SarBussStandMenuDao; +import com.adc.da.slrs.sarBussStandMenu.entity.SarBussStandMenu; +import com.adc.da.slrs.sarBussStandSn.entity.SarBussStandSn; +import com.adc.da.slrs.sarBussStandSn.service.ISarBussStandSnService; +import com.adc.da.slrs.sarBussStandVal.dao.SarBussStandValDao; +import com.adc.da.slrs.sarBussStandVal.entity.SarBussStandVal; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarMenuStandard.entity.SarMenuStandardNew; +import com.adc.da.slrs.sarMenuStandard.service.ISarMenuStandardNewService; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.SarAdvanceSearchVO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.constant.ValueStateEnum; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import net.sf.json.JSONObject; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.sql.Clob; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

    + * 企业标准信息表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-13 + */ +@Service +public class SarBussionessStandServiceImpl extends ServiceImpl implements ISarBussionessStandService { + + private static final Logger logger = LoggerFactory.getLogger(SarBussionessStandServiceImpl.class); + + @Value("${elas.flag}") + private boolean elasflag; //ES是否启用 + + @Value("${file.path}") + private String filePath;//文件存储路径 + + @Autowired + private SarBussionessStandDao sarBussionessStandEODao; + + @Autowired + private ITsUserService tsUserService; + + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private ITsResourceService iTsResourceService; + + @Autowired + private SarStandAttrInfoDao sarStandAttrInfoEODao; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private SarBussStandMenuDao sarBussStandMenuEODao; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private OtConvertMqDao otConvertEODao; + + @Autowired + private CreateMQService convertMq; + + @Autowired + private SarBussStandValDao sarBussStandValEODao; + + @Autowired + private SarBussStandFileDao sarBussStandFileEODao; + + @Autowired + private SarStandardsInfoDao sarStandardsInfoEODao; + + @Autowired + private CreateStandMQService createStandMQService; + + @Autowired + private ISarUpdLogService sarUpdLogEOService; + + @Autowired + private ITsResourceService sarMenuEOService; + + @Autowired + private PersonCollectEODao personCollectEODao; + + @Autowired + private SarBussStandAttrInfoDao sarBussStandAttrInfoEODao; + + @Autowired + private SarBussStandItemsDao sarBussStandItemsEODao; + + @Autowired + private StandLawsSearchService standLawsSearchService; + + @Autowired + private ISarMenuStandardService iSarMenuStandardService; + + @Autowired + private INewsFeedService iNewsFeedService; + + @Autowired + private ISarBussStandSnService iSarBussStandSnService; + + @Autowired + private EncryptFileUtils encryptFileUtils; + + + @Override + public SarBussionessStand getStandInfoByReviseStatus(String reviseStatus,String standSort,String taskId){ + SarBussionessStand bussionessStand = new SarBussionessStand(); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("REPLACE(STAND_SORT,' ','')",standSort.replace(" ","")); + int count = iSarBussStandSnService.count(queryWrapper); + // 1 先验证 当前企标类别 是否存在顺序号 + if(count > 0){ + QueryWrapper qw = new QueryWrapper(); + qw.eq("REPLACE(STAND_SORT,' ','')",standSort.replace(" ","")); + qw.eq("TASK_ID",taskId); + qw.eq("USE_STATUS","yes"); + SarBussStandSn sns = iSarBussStandSnService.getOne(qw); + // 1.1 防止不同步撤回 页面未退出 及 防止页面刷新 已锁定的顺序号 被一直叠加 获取当前任务之前生成的顺序号 + if(sns != null && sns.getId() != null){ + // 1.1.1 返回顺序号 + bussionessStand.setNewStandSn(sns.getStandSn()); + }else { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.select("MIN(DISTINCT CAST(STAND_SN AS decimal(9))) AS STAND_SN"); + wrapper.eq("REPLACE(STAND_SORT,' ','')",standSort.replace(" ","")); + wrapper.isNull("TASK_ID"); + wrapper.eq("USE_STATUS","no"); + SarBussStandSn standSn = iSarBussStandSnService.getOne(wrapper); + // 1.1.2 查询 被撤回的 任务ID 被重置NULL 及 状态被重置 no 未使用 最小值 。。 "自动带入" "自动获取" 未被使用最小 顺序号 + if(standSn != null && standSn.getId() != null) { + // 1.1.2.1 返回顺序号 + bussionessStand.setNewStandSn(standSn.getStandSn()); + }else { + + QueryWrapper wrapper1 = new QueryWrapper(); + wrapper1.select("MAX(DISTINCT CAST(STAND_SN AS decimal(9)))+1 AS STAND_SN"); + wrapper1.eq("REPLACE(STAND_SORT,' ','')",standSort.replace(" ","")); + SarBussStandSn one = iSarBussStandSnService.getOne(wrapper1); + // 1.1.2.2 返回顺序号 + bussionessStand.setNewStandSn(one.getStandSn()); + // 1.1.2.3 获取新的顺序号 存入顺序号表中 + saveBussStandSn(reviseStatus, standSort, one.getStandSn(),taskId); + } + + } + }else { + // 2 获取企标库中 当前类别 最新 顺序号 (前提必须顺序号为正规数据) + bussionessStand = sarBussionessStandEODao.getStandInfoByReviseStatus(reviseStatus,standSort); + saveBussStandSn(reviseStatus, standSort, bussionessStand.getNewStandSn(),taskId); + } + + return bussionessStand; + } + + private void saveBussStandSn(String reviseStatus, String standSort, String standSn,String taskId) { + SarBussStandSn sn = new SarBussStandSn(); + sn.setId(UUIDUtils.randomUUID20()); + sn.setStandSort(standSort); + sn.setStandSn(standSn); + sn.setModifyTime(new Date()); + sn.setReviseStatus(reviseStatus); + sn.setTaskId(taskId); + iSarBussStandSnService.saveOrUpdate(sn); + } + + public ResponseMessage deleteSarBussionessStand(SarBussionessStandEOPage page) throws Exception { + SarBussionessStand sarStandardsInfoEO = new SarBussionessStand(); + sarStandardsInfoEO.setValidFlag(1); + sarStandardsInfoEO.setModifyTime(new Date()); + for (String id : page.getIdlist()) { + //删除标准表 + sarStandardsInfoEO.setId(id); + sarBussionessStandEODao.updateByPrimaryKeySelective(sarStandardsInfoEO); + // 删除标准属性表 + sarBussStandAttrInfoEODao.deleteStandAttrByStandId(id); + // 删除条款 + sarBussStandItemsEODao.deleteByStandIdAndFileType(id,null); + // 删除标准台账表 +// sarBusSarCompileEODao.deleteByBussStandId(id); + //删除收藏表中数据 + personCollectEODao.deleteByResId(id); + // 删除分享表中数据 +// personShareEODao.deleteByResId(id); + //删除标准关联的value表 + sarBussStandValEODao.deleteDataByStandId(id); + List listFile = sarBussStandFileEODao.selectFileByStandId(id); + if (listFile != null) { + if (!listFile.isEmpty()) { + for (int f = 0; f < listFile.size(); f++) { + sarBussStandFileEODao.deleteByPrimaryKey(listFile.get(f).getId()); + //删除文件信息表数据 +// sarFileInfoEODao.deleteByfileId(listFile.get(f).getId()); + //删除转换表ot_convert数据 + otConvertEODao.deleteByAttId(listFile.get(f).getAttId()); + } + } + } + if(elasflag) { + //删除成功后,将索引中对应数据删除 + StandLawsEO standLawsEO = new StandLawsEO(); + standLawsEO.setId(sarStandardsInfoEO.getId()); + standLawsEO.setType("bussstand"); + standLawsSearchService.deleteStandLawsSearch(standLawsEO); + } + + } + return Result.success("0", "删除成功", sarStandardsInfoEO); + } + + public ResponseMessage createSarBussionessStand(SarBussionessStand sarBussionessStandEO) throws Exception { + //标准信息表中插入一条数据 + sarBussionessStandEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); + sarBussionessStandEO.setCreationTime(new Date()); + sarBussionessStandEO.setModifyTime(new Date()); + sarBussionessStandEO.setId(UUIDUtils.randomUUID20()); + // 企标新增默认为发布状态 + sarBussionessStandEO.setTextStatusBuss("6jnqba2mby"); + if (StringUtils.isEmpty(sarBussionessStandEO.getMenuId())){ + sarBussionessStandEO.setMenuId("3"); + } + //根据新建标准所在目录,确定此处是否需要在标准目录关联表中插入数据 + if (StringUtils.isNotEmpty(sarBussionessStandEO.getMenuId())) { + SarBussStandMenu sarStandMenuEO = new SarBussStandMenu(); + sarStandMenuEO.setBussStandId(sarBussionessStandEO.getId()); + sarStandMenuEO.setMenuId(sarBussionessStandEO.getMenuId()); + sarStandMenuEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); + sarStandMenuEO.setId(UUIDUtils.randomUUID20()); + sarBussStandMenuEODao.insertSelective(sarStandMenuEO); + } + int insertresult = this.baseMapper.insert(sarBussionessStandEO); + if (insertresult >= 1) { + // 根据代替标准号 ,修改代替标准号标准中的,被代替标准号 + updateReplaceConnect(sarBussionessStandEO); + //编写预警信息 +// writeWarnings(sarBussionessStandEO); + // 处理属性表信息 + if (StringUtils.isNotBlank(sarBussionessStandEO.getSarStandAttrEOStr())) { + createStandAttrInfo(sarBussionessStandEO,false); + } + // 增加关联事件 + String sortName = sysInfoEOService.getDicNamesByCodes(sarBussionessStandEO.getStandSort(),"JKSADFH564S"); + String number = sortName + " " + sarBussionessStandEO.getStandCode(); + if (StringUtils.isNotBlank(sarBussionessStandEO.getStandYear())) { + number += "-" + sarBussionessStandEO.getStandYear(); + } + String content = "入库" + number + " 《" + sarBussionessStandEO.getStandName() + "》"; + String prcCreateUser = StringUtils.isNotBlank(sarBussionessStandEO.getPrcCreateUser()) ? sarBussionessStandEO.getPrcCreateUser() : ""; + sarUpdLogEOService.createBaseProcessLog(sarBussionessStandEO.getId(),"BUSINESS",content,prcCreateUser); + saveNewFeed(sarBussionessStandEO,"2"); + if(elasflag) { + attrInfoShowSearchDetails(sarBussionessStandEO,"add"); + createStandMQService.sendBussStandMQ(sarBussionessStandEO,"add"); + } + return Result.success("00", "插入数据成功", sarBussionessStandEO); + } else { + return Result.error("01", "插入输入过程中出错"); + } + } + + + @Override + public List getSarBussionessStand(String exportType, String exportContent, String userId) throws Exception { + SarBussionessStandEOPage page = new SarBussionessStandEOPage(); + if ("apart".equals(exportType)) { + page.setIdlist(exportContent.split(",")); + } else { + JSONObject jsonObject = JSONObject.fromObject(exportContent); + page = (SarBussionessStandEOPage)JSONObject.toBean(jsonObject, SarBussionessStandEOPage.class); + page.setPage(1); + page.setPageSize(10000); + //查询当前登录人角色拥有权限的菜单 + if(page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())){ + String treeType = page.getTreeType(); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID",page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + + if(children.isEmpty() && !page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(treeType) && "tsr".equals(treeType)){ + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + }else if(!page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)){ + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iSarMenuStandardService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + +// if(children.isEmpty() && !page.getMenuId().equals("nomenu")){ +// List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); +// if (getMenuIdList != null && !getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } +// List ids = iTsResourceService.getChildMenuList(page.getMenuId()); +// if (ids != null && !ids.isEmpty()) { +// page.setMenuAllChildrenIdList(ids); +// } +// } + } + if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = com.alibaba.fastjson.JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + String advanceStr = SarAdvanceSearchUtil.createSql(searchList,"SAR_BUSS_STAND_ATTR_INFO"); + if (com.adc.da.util.utils.StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + } + page.setOrderBy("SAR_BUSSIONESS_STAND.issue_time is null,SAR_BUSSIONESS_STAND.issue_time desc,SAR_BUSSIONESS_STAND.id"); + if(userId != null){ + page.setUserId(userId); + }else { + page.setUserId(LoginUserUtil.getUserId()); + } + + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + + List list = Arrays.asList(fieldInfo.split(",")).stream().map(s -> String.format("SAR_BUSS_STAND_ATTR_INFO."+s.trim())).collect(Collectors.toList()); + List listSelect = Arrays.asList(fieldInfo.split(",")).stream().map(s -> String.format("tmp_tb."+s.trim())).collect(Collectors.toList()); + String exportAllAttrInfo = list.stream().collect(Collectors.joining(",")); + String exportAllResult = listSelect.stream().collect(Collectors.joining(",")); + if(StringUtils.isNotBlank(exportAllAttrInfo)){ + page.setExportAllAttrInfo(exportAllAttrInfo); + } + + if(StringUtils.isNotBlank(exportAllResult)){ + page.setExportAllResult(exportAllResult); + } + + //配置列表显示的数据权限 + if ("1".equals(page.getIsKU())) { + List access = tsUserService.getResourceDataUserId(page.getUserId()); + if (null == page.getMenuId() && null == page.getMenuAllChildrenIdList()) { + page.setMenuAllChildrenIdList(access); + page.setMenuId(""); + } else if (page.getMenuId().equals("3")) { + page.setMenuAllChildrenIdList(access); + } + List finalData = page.getMenuAllChildrenIdList().stream().filter(s -> access.contains(s)).collect(Collectors.toList()); + if (finalData.size() > 0) { + page.setMenuAllChildrenIdList(finalData); + if (null == page.getMenuId() && null == page.getMenuAllChildrenIdList()) { + page.setMenuAllChildrenIdList(access); + } + } + } + + List getList = sarBussionessStandEODao.getSarBussionessStand(page); + attrInfoShowExport(getList); + return getList; + } + + private void nowOrderFunc(SarBussionessStandEOPage page) { + switch (page.getNowOrderBy()) { + case 1: + page.setOrderByA("tmp_tb.issue_time");//发布日期 + break; + case 2: + page.setOrderByA("tmp_tb.put_time");//实施日期 + break; + case 3: + page.setOrderByA("tmp_tb.standStatusShow");//文本状态 + break; + default: + page.setNowOrder(null); + break; + } + if (null != page.getNowOrder()) { + switch (page.getNowOrder()) { + case 1: + page.setOrder1("desc"); + break; + case 2: + page.setOrder1("asc"); + break; + default: + page.setOrder1(null); + break; + } + } + } + + public void attrInfoShow (List sarlist) throws Exception { + for(SarBussionessStand row : sarlist){ + attrInfoDetails(row); + Map getAttrMap = row.getAttrInfoMap(); + Map getNewMap = new LinkedHashMap<>(); + if (getAttrMap != null && getAttrMap.size() > 0) { + String svppsTip = ""; + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + if ("SVPPS".equals(name)) { + Object svpps = entry.getValue(); + if (svpps != null && StringUtils.isNotBlank(svpps.toString())) { + svppsTip = svpps.toString(); + } + if (StringUtils.isNotBlank(svppsTip)) { + svppsTip = sysInfoEOService.getSvppsNamesTipByIds(svppsTip); + } + value = String.valueOf(getAttrMap.get("SVPPSName")); + entry.setValue(value); + } else if (entry.getValue() != null && InitStandAttrUtil.fileFieldListBuss != null && InitStandAttrUtil.fileFieldListBuss.size() > 0 && InitStandAttrUtil.fileFieldListBuss.contains(name)) { + value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + entry.setValue(fileObj); + } + } else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapBuss.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal) || SelectionTypeEnum.USERLIST.getValue().equals(selVal) || SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + if("ZYQCR".equals(name)||"QTQCR".equals(name)){ + if(getAttrMap.get(name + "Name")!=null && !getAttrMap.get(name + "Name").equals("")){ + value = String.valueOf(getAttrMap.get(name + "Name")); + } + }else{ + value = String.valueOf(getAttrMap.get(name + "Name")); + } + } else { + List valArr = Arrays.asList(value.split(",")); + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + entry.setValue(value); + } + } + getAttrMap.put("SVPPSTips",svppsTip); + } + } + } + + public void attrInfoShowExport (List sarlist) throws Exception { + + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_type_code", "dic_type_name"); + Map dicMap = dicInfo.stream() + .filter(item-> !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getDicTypeName,(value1, value2 )->value2)); + + for(SarBussionessStandExport row : sarlist){ + attrInfoDetailsExport(row); + Map getAttrMap = row.getAttrInfoMap(); + Map getNewMap = new LinkedHashMap<>(); + if (getAttrMap != null && getAttrMap.size() > 0) { + String svppsTip = ""; + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + if ("SVPPS".equals(name)) { + Object svpps = entry.getValue(); + if (svpps != null && StringUtils.isNotBlank(svpps.toString())) { + svppsTip = svpps.toString(); + } + if (StringUtils.isNotBlank(svppsTip)) { + svppsTip = sysInfoEOService.getSvppsNamesTipByIds(svppsTip); + } + value = String.valueOf(getAttrMap.get("SVPPSName")); + entry.setValue(value); + } else if (entry.getValue() != null && InitStandAttrUtil.fileFieldListBuss != null && InitStandAttrUtil.fileFieldListBuss.size() > 0 && InitStandAttrUtil.fileFieldListBuss.contains(name)) { +// value = entry.getValue().toString(); +// if (StringUtils.isNotBlank(value)) { +// List fileObj = attFileEOService.getMultiFileInfos(value); +// entry.setValue(fileObj); +// } + } else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapBuss.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal) || SelectionTypeEnum.USERLIST.getValue().equals(selVal) || SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + if("ZYQCR".equals(name)||"QTQCR".equals(name)){ + + if(getAttrMap.get(name + "Name")!=null && !getAttrMap.get(name + "Name").equals("")){ + value = String.valueOf(getAttrMap.get(name + "Name")); + } + }else{ + value = String.valueOf(getAttrMap.get(name + "Name")); + } + } else { + List valArr = Arrays.asList(value.split(",")); + if(entry.getValue()!=null) { + StringBuilder builder = new StringBuilder(""); + for (String s : valArr) { + if (dicMap.containsKey(s) && !"ZRBM".equals(name)){ + builder.append(dicMap.get(s)+","); + } + + } + + if (builder.toString().isEmpty()){ + value = entry.getValue().toString(); + }else { + value = builder.toString(); + } + } + } + entry.setValue(value); + } + } + getAttrMap.put("SVPPSTips",svppsTip); + } + } + } + + public SarBussionessStand updateSarBussionessStand(SarBussionessStand sarBussionessStandEO) throws Exception { + String standId = sarBussionessStandEO.getId(); + SarBussionessStand beforeStandEO = this.baseMapper.selectByPrimaryKey(standId); + if(beforeStandEO!=null){ + attrInfoDetails(beforeStandEO); + } + //规范性引用文件,如有数据,删除以前关联 + int resultCount = this.baseMapper.updateById(sarBussionessStandEO); + if (resultCount >= 1) { + // 修改属性表数据 + sarBussStandAttrInfoEODao.deleteStandAttrByStandId(standId); + + sarBussStandValEODao.deleteDataByStandId(standId); + +// //删除文件详情表数据 +// sarBussStandFileEODao.deleteByStandId(standId); + SarBussStandFile sarBussStandFileEO = new SarBussStandFile(); + sarBussStandFileEO.setStandId(standId); + sarBussStandFileEO.setIdList(null); + List listFile = sarBussStandFileEODao.selectFileByStandIdAndId(sarBussStandFileEO); + if (listFile != null) { + if (!listFile.isEmpty()) { + for (int f = 0; f < listFile.size(); f++) { + //删除文件信息表数据 +// sarFileInfoEODao.deleteByfileId(listFile.get(f).getId()); + //删除转换表ot_convert数据 + otConvertEODao.deleteByAttId(listFile.get(f).getAttId()); + } + } + } + createStandAttrInfo(sarBussionessStandEO,true); + //此处需要增加根据技术体系更新菜单数据关联得操作,之前是在点编辑得时候处理,但是前端没有处理好 + if(StringUtils.isNotBlank(sarBussionessStandEO.getTxlbId())){ + SarMenuStandard sarMenuStandard = iSarMenuStandardService.selectMenuById(sarBussionessStandEO.getTxlbId()); + if(sarMenuStandard!=null ){ + QueryWrapper menuQueryWrapper = new QueryWrapper<>(); + menuQueryWrapper.eq("BUSS_STAND_ID",sarBussionessStandEO.getId()); +// menuQueryWrapper.eq("MENU_ID",sarStandAttrMap.get("TXLBBUSS")); + menuQueryWrapper.eq("VALID_FLAG",0); + menuQueryWrapper.eq("TREE_TYPE","sarMs"); + List sarBussStandMenus = sarBussStandMenuEODao.selectList(menuQueryWrapper); + if(sarBussStandMenus !=null && !sarBussStandMenus.isEmpty()){ + boolean upFlag = true; + List delIds = new ArrayList<>(); + for(SarBussStandMenu m: sarBussStandMenus){ + if(StringUtils.equals(m.getMenuId(),sarBussionessStandEO.getTxlbId())){ + upFlag= false; + }else{ + delIds.add(m.getId()); + } + } + if(upFlag){ + SarBussStandMenu jsMenu = new SarBussStandMenu(); + jsMenu.setMenuId(sarBussionessStandEO.getTxlbId()); + jsMenu.setValidFlag(0); + jsMenu.setTreeType("sarMs"); + jsMenu.setBussStandId(sarBussionessStandEO.getId()); + jsMenu.setId(UUIDUtils.randomUUID(32)); + sarBussStandMenuEODao.insert(jsMenu); + } + if(!delIds.isEmpty()){ + sarBussStandMenuEODao.deleteBatchIds(delIds); + } + }else{ + SarBussStandMenu jsMenu = new SarBussStandMenu(); + jsMenu.setMenuId(sarBussionessStandEO.getTxlbId()); + jsMenu.setValidFlag(0); + jsMenu.setTreeType("sarMs"); + jsMenu.setBussStandId(sarBussionessStandEO.getId()); + jsMenu.setId(UUIDUtils.randomUUID(32)); + sarBussStandMenuEODao.insert(jsMenu); + } + } + } + +// if(StringUtils.isNotBlank(sarBussionessStandEO.getSarStandAttrEOStr())){ +// String sarStandAttrEOStr = sarBussionessStandEO.getSarStandAttrEOStr(); +// Map sarStandAttrMap = JSONObject.fromObject(sarStandAttrEOStr); +// //此处有BUG,因为前端传的参数中只有名称,没有ID,导致此处数据保存的时候直接保存了名字而不是ID,从而查不出来的BUG +// if(sarStandAttrMap.containsKey("TXLBBUSS") && StringUtils.isNotBlank(sarStandAttrMap.get("TXLBBUSS"))){ +// QueryWrapper menuQueryWrapper = new QueryWrapper<>(); +// menuQueryWrapper.eq("BUSS_STAND_ID",sarBussionessStandEO.getId()); +//// menuQueryWrapper.eq("MENU_ID",sarStandAttrMap.get("TXLBBUSS")); +// menuQueryWrapper.eq("VALID_FLAG",0); +// menuQueryWrapper.eq("TREE_TYPE","sarMs"); +// List sarBussStandMenus = sarBussStandMenuEODao.selectList(menuQueryWrapper); +// if(sarBussStandMenus !=null && !sarBussStandMenus.isEmpty()){ +// boolean upFlag = true; +// List delIds = new ArrayList<>(); +// for(SarBussStandMenu m: sarBussStandMenus){ +// if(StringUtils.equals(m.getMenuId(),sarStandAttrMap.get("TXLBBUSS"))){ +// upFlag= false; +// }else{ +// delIds.add(m.getId()); +// } +// } +// if(upFlag){ +// SarBussStandMenu jsMenu = new SarBussStandMenu(); +// jsMenu.setMenuId(sarStandAttrMap.get("TXLBBUSS")); +// jsMenu.setValidFlag(0); +// jsMenu.setTreeType("sarMs"); +// jsMenu.setBussStandId(sarBussionessStandEO.getId()); +// jsMenu.setId(UUIDUtils.randomUUID(32)); +// sarBussStandMenuEODao.insert(jsMenu); +// } +// if(!delIds.isEmpty()){ +// sarBussStandMenuEODao.deleteBatchIds(delIds); +// } +// }else{ +// SarBussStandMenu jsMenu = new SarBussStandMenu(); +// jsMenu.setMenuId(sarStandAttrMap.get("TXLBBUSS")); +// jsMenu.setValidFlag(0); +// jsMenu.setTreeType("sarMs"); +// jsMenu.setBussStandId(sarBussionessStandEO.getId()); +// jsMenu.setId(UUIDUtils.randomUUID(32)); +// sarBussStandMenuEODao.insert(jsMenu); +// } +// } +// } + //修改收藏分享编号名称 + updateCollectAndShare(sarBussionessStandEO); + + updateCiteStand(sarBussionessStandEO, beforeStandEO, "DTQBBHBUSS", "BDTQBBHBUSS"); + + // 记录修改日志 + saveUpdateLog(sarBussionessStandEO,beforeStandEO); +// saveNewFeed(sarBussionessStandEO,"2"); + if (elasflag) { + attrInfoShowSearchDetails(sarBussionessStandEO,"upd"); + createStandMQService.sendBussStandMQ(sarBussionessStandEO, "update"); + } + } + return sarBussionessStandEO; + } + + public void filterNewFeed(SarBussionessStand sarStandardsInfoEO,SarBussionessStand beforeSarStandardsInfo) throws Exception { + Map newMap = new HashMap<>(); + Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); + String attrStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + if (org.apache.commons.lang3.StringUtils.isNotBlank(attrStr)) { + newMap = JSONObject.fromObject(attrStr); + } + + // 发布稿 + List fbgNew = Arrays.stream(newMap.getOrDefault("FBGBJBD", "").toString().split(",")) + .map(String::trim).collect(Collectors.toList()); + + List fbgOld = Arrays.stream(oldMap.getOrDefault("FBGBJBD", "").toString().split(",")) + .map(String::trim).collect(Collectors.toList()); + // 取差集 判断是否有新的发布稿 + List filterDisunityFbg = fbgNew.stream() + .filter(item -> !new ArrayList<>(fbgOld) + .contains(item)) + .collect(Collectors.toList()); + + // 在研稿件 + String strUsNew = verifyObj(newMap.getOrDefault("CA", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("GLWJ", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("XGD", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("BPG", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("ZQYJG", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("SSG", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("JDWJ", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("KWJ", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("XDB", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("ZBJBD", "")).toString(); + String strUsOld = verifyObj(oldMap.getOrDefault("CA", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("GLWJ", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("XGD", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("BPG", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("ZQYJG", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("SSG", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("JDWJ", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("KWJ", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("XDB", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("ZBJBD", "")).toString(); + List usNew = Arrays.stream(strUsNew.split(",")) + .map(String::trim).collect(Collectors.toList()); + List usOld = Arrays.stream(strUsOld.split(",")) + .map(String::trim).collect(Collectors.toList()); + // 取差集 判断是否有新的在研稿件 + List filterDisunityUs = usNew.stream() + .filter(item -> !new ArrayList<>(usOld) + .contains(item)) + .collect(Collectors.toList()); + + // 0 发布稿件 新的文件数量 大于等于 在研稿件 就属于发布动态消息 则 为 1 在研 + if(filterDisunityFbg.size() >= filterDisunityUs.size()){ + saveNewFeed(sarStandardsInfoEO, "2"); + }else { + saveNewFeed(sarStandardsInfoEO, ""); + } + } + + private void saveNewFeed(SarBussionessStand sarStandardsInfoEO, String s) { + NewsFeed newsFeed = new NewsFeed(); + newsFeed.setId(UUIDUtils.randomUUID20()); + newsFeed.setRenewTime(new Date()); + newsFeed.setStandardId(sarStandardsInfoEO.getId()); + newsFeed.setResourceType("BUSINESS"); + newsFeed.setMessageType(s); + newsFeed.setStandard(verifyObj(sarStandardsInfoEO.getStandCode()).toString()); + newsFeed.setStandardName(verifyObj(sarStandardsInfoEO.getStandName()).toString()); + newsFeed.setReleaseDate(verifyObj(sarStandardsInfoEO.getIssueTime()).toString()); + // 企标 技术标准或产品标准走完流程 文本状态默认 发布状态 + newsFeed.setTextState("6jnqba2mby"); + iNewsFeedService.insertNewsFeed(newsFeed); + } + + public void saveUpdateLog(SarBussionessStand sarStandardsInfoEO,SarBussionessStand beforeSarStandardsInfo) throws Exception{ + Map newMap = new HashMap<>(); + Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); + String attrStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + if (StringUtils.isNotBlank(attrStr)) { + newMap = JSONObject.fromObject(attrStr); + } + if(newMap != null && oldMap != null) { + newMap = changeMap(sarStandardsInfoEO,newMap); + oldMap = changeMap(beforeSarStandardsInfo,oldMap); + String sortName = sysInfoEOService.getDicNamesByCodes(sarStandardsInfoEO.getStandSort(),"JKSADFH564S"); + String number = sortName + " " + sarStandardsInfoEO.getStandCode(); + if (StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) { + number += "-" + sarStandardsInfoEO.getStandYear(); + } + String content = number + " 《" + sarStandardsInfoEO.getStandName() + "》"; + sarUpdLogEOService.createUpdateLog(SarTypeEnum.BUSINESS.getValue(),sarStandardsInfoEO.getId(),oldMap,newMap,content); + + } + } + + public Map changeMap (SarBussionessStand sarStandardsInfoEO,Map map) { +// map.put("country",verifyObj(sarStandardsInfoEO.getApplyCountry())); + map.put("standSort",verifyObj(sarStandardsInfoEO.getStandSort())); + map.put("standNumber",verifyObj(sarStandardsInfoEO.getStandCode())); + map.put("standYear",verifyObj(sarStandardsInfoEO.getStandYear())); + map.put("standName",verifyObj(sarStandardsInfoEO.getStandName())); + map.put("standEnName",verifyObj(sarStandardsInfoEO.getStandEnName())); + map.put("standNature",verifyObj(sarStandardsInfoEO.getStandNature())); + map.put("standState",verifyObj(sarStandardsInfoEO.getStandStatus())); + if (sarStandardsInfoEO.getIssueTime() != null) { + String issueTime = sarStandardsInfoEO.getIssueTime(); + if (null != issueTime && issueTime.length() > 10){ + issueTime = issueTime.substring(0,10); + } + map.put("issueTime",issueTime); + }else{ + map.put("issueTime", ""); + } + if (sarStandardsInfoEO.getPutTime() != null) { + String putTime = sarStandardsInfoEO.getPutTime(); + if (null != putTime && putTime.length() > 10){ + putTime = putTime.substring(0,10); + } + map.put("putTime",putTime); + }else { + map.put("putTime", ""); + } + map.put("replaceStandNum",sarStandardsInfoEO.getReplaceStandNum()); + map.put("replacedStandNum",sarStandardsInfoEO.getReplacedStandNum()); + return map; + } + + private Object verifyObj(Object str){ + return str == null ? "" : str; + } + + // 新增修改标准过程中,根据代替标准号,修改被代替标准号对应的标准 + public void updateCiteStand(SarBussionessStand sarBussionessStandEO, SarBussionessStand beforeSarStandardsInfo, String upField, String beUpedField){ + // 记录要被代替标准号的数据 +// SarStandardsInfoEO chageEO= new SarStandardsInfoEO(); + SarBussionessStand sarStandardsSelectEO = new SarBussionessStand(); + String addStrandNumber = ""; + String beforeStrandNumber = ""; + if (StringUtils.isNotEmpty(sarBussionessStandEO.getStandCode())) { + addStrandNumber = sarBussionessStandEO.getStandCode(); + } else { + addStrandNumber = sarBussionessStandEO.getStandCode(); + } + + if (beforeSarStandardsInfo != null) { + if (StringUtils.isNotEmpty(beforeSarStandardsInfo.getStandCode())) { + beforeStrandNumber = beforeSarStandardsInfo.getStandCode(); + } + } + + // 以“,”分隔查看之前是否有 ,如果有不修改,如果没有,追加修改 + String newCiteStand = ""; + if ("DTQBBHBUSS".equals(upField)) { + newCiteStand = sarBussionessStandEO.getReplaceStandNum(); + } else if ("BDTQBBHBUSS".equals(upField)) { + newCiteStand = sarBussionessStandEO.getReplacedStandNum(); + } + if (StringUtils.isNotEmpty(newCiteStand) && newCiteStand.split(",").length > 0) { + // 主要逻辑处理新增的 + String nowEOrepNums[] = newCiteStand.split(","); + for (String citeStand : nowEOrepNums) { + sarStandardsSelectEO.setStandCode(citeStand); +// if (StringUtils.isNotBlank(sarStandardsSelectEO.getStandNumber())) { +// String sort = ""; +// if (sarStandardsSelectEO.getStandNumber().length() > 3) { +// sort = sarStandardsSelectEO.getStandNumber().substring(0, 3); +// } +// if ("ECE".equals(sort)) { +// int length = sarStandardsSelectEO.getStandNumber().length(); +// String number = sarStandardsSelectEO.getStandNumber().substring(3, length); +// sarStandardsSelectEO.setStandNumber("UN(ECE)" + number); +// } +// } + List result = this.baseMapper.selectStandardsByStandNumber(sarStandardsSelectEO); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = beUpedField; + String citedStand = sarBussStandAttrInfoEODao.selectFieldValByStandId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (StringUtils.isNotBlank(citedStand)) { + String[] beforeReplacedStandNumStr = citedStand.split(","); + if (Arrays.asList(beforeReplacedStandNumStr).contains(addStrandNumber)) { + continue; + } else { + changeCitedStand = citedStand + "," + addStrandNumber; + } + sarBussStandAttrInfoEODao.updateStandInfo(standId, field, changeCitedStand); + } else { + sarBussStandAttrInfoEODao.updateStandInfo(standId, field, addStrandNumber); + } + } + } + // 如果id不为空,说明是修改,有逻辑删除的执行以下语句,存在之前是三项,现在修改成两项的情况 + if (null != beforeSarStandardsInfo) { + String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get(upField)); + if (StringUtils.isNotEmpty(oldCiteStand)) { + String[] beforeEOrepNums = oldCiteStand.split(","); + for (String beforeStr : beforeEOrepNums) { + // 如果再旧的中包含,在新的中没有,需要删除 + if (!Arrays.asList(nowEOrepNums).contains(beforeStr)) { + sarStandardsSelectEO.setStandCode(beforeStr); + List result = this.baseMapper.selectStandardsByStandNumber(sarStandardsSelectEO); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = beUpedField; + String citedStand = sarBussStandAttrInfoEODao.selectFieldValByStandId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (StringUtils.isNotBlank(citedStand)) { + String[] beforerepalced = citedStand.split(","); + ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced)); + if (beforlist.contains(beforeStrandNumber)) { + beforlist.remove(beforeStrandNumber); + changeCitedStand = org.apache.commons.lang3.StringUtils.join(beforlist.toArray(), ","); + } else { + continue; + } + sarBussStandAttrInfoEODao.updateStandInfo(standId, field, changeCitedStand); + } + } + } + } + } + } + + } else { + // 如果为空,判断是否为修改 + if (null != beforeSarStandardsInfo) { + String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get(upField)); + if (StringUtils.isNotEmpty(oldCiteStand)) { + String[] beforeEOrepNums = oldCiteStand.split(","); + for (String beforeStr : beforeEOrepNums) { + // 如果再旧的中包含,在新的中没有,需要删除,相关数据取第一条是因为标准号是唯一的 + sarStandardsSelectEO.setStandCode(beforeStr); + List result = this.baseMapper.selectStandardsByStandNumber(sarStandardsSelectEO); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = beUpedField; + String citedStand = sarBussStandAttrInfoEODao.selectFieldValByStandId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (StringUtils.isNotBlank(citedStand)) { + String[] beforerepalced = citedStand.split(","); + ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced)); + if (beforlist.contains(beforeStrandNumber)) { + beforlist.remove(beforeStrandNumber); + changeCitedStand = StringUtils.join(beforlist.toArray(), ","); + } else { + continue; + } + sarBussStandAttrInfoEODao.updateStandInfo(standId, field, changeCitedStand); + } + } + } + } + } + } + } + + public void updateCollectAndShare(SarBussionessStand sarBussionessStandEO) throws Exception { + //修改收藏表中 + String number = sarBussionessStandEO.getStandCode()+ ")"; + PersonCollectEOPage personCollectEOPage = new PersonCollectEOPage(); + personCollectEOPage.setValidFlag("0"); + personCollectEOPage.setCollectResId(sarBussionessStandEO.getId()); + List listCollect = personCollectEOService.queryByList(personCollectEOPage); + if (listCollect != null && listCollect.size() > 0) { + for (TsPersonCollect getCollect : listCollect) { + TsPersonCollect collectEO = new TsPersonCollect(); + collectEO.setId(getCollect.getId()); + collectEO.setCollectTitle(sarBussionessStandEO.getStandName() + " " + "( 编号:" + number); + personCollectEOService.updateByPrimaryKeySelective(collectEO); + } + } + } + + + public void updateReplaceConnect(SarBussionessStand sarBussionessStandEO) throws Exception{ + if(StringUtils.isNotEmpty(sarBussionessStandEO.getReplaceStandNum())){ + SarBussionessStandEOPage sarStandardsInfoEOPage = new SarBussionessStandEOPage(); + //当前代替标准号的标准类别为类别name,需修改为code + String[] replaceList = sarBussionessStandEO.getReplaceStandNum().trim().split(","); + String replaceListNew[]; + int countre = 0; +// List newReplaceList = new ArrayList<>(); + if (replaceList!=null && replaceList.length>0) { + for(String replaceNum : replaceList){ + if(replaceNum.indexOf(" ")!=-1){ + String dicName = replaceNum.substring(0,replaceNum.lastIndexOf(" ")); + DicTypeEO dicTypeEO = new DicTypeEO(); + dicTypeEO.setDicTypeName(dicName); + dicTypeEO.setDicTypeCode("BUSSSTANDCLASS"); + List getDicCode = dicTypeEODao.getDicTypeByDicTypeName(dicTypeEO); + if(getDicCode!= null && getDicCode.size()>0){ + replaceNum = replaceNum.replaceFirst(dicName,getDicCode.get(0).getDicTypeCode()); + replaceList[countre] = replaceNum; + countre++; + } + } + } + } + sarStandardsInfoEOPage.setReplaceStandNumList(replaceList); +// 2021/03/30 刘慧文修改 标准类别已不存在 + if(StringUtils.isNotEmpty(sarBussionessStandEO.getStandYear())){ + sarStandardsInfoEOPage.setReplacedStandNum(sarBussionessStandEO.getStandCode()+"-"+sarBussionessStandEO.getStandYear()); + } else { + sarStandardsInfoEOPage.setReplacedStandNum(sarBussionessStandEO.getStandCode()); + } + int updateResult = sarBussionessStandEODao.updateRelacedNumByNumber(sarStandardsInfoEOPage); + + //编写预警信息 +// writeWarnings(sarBussionessStandEO); + } + if (StringUtils.isNotEmpty(sarBussionessStandEO.getReplacedStandNum())) { + SarBussionessStandEOPage sarStandardsInfoEOPage = new SarBussionessStandEOPage(); + //当前代替标准号的标准类别为类别name,需修改为code + String[] replaceList = sarBussionessStandEO.getReplacedStandNum().trim().split(","); + int countre = 0; +// List newReplaceList = new ArrayList<>(); + if (replaceList!=null && replaceList.length>0) { + for(String replaceNum : replaceList){ + if(replaceNum.indexOf(" ")!=-1){ + String dicName = replaceNum.substring(0,replaceNum.lastIndexOf(" ")); + DicTypeEO dicTypeEO = new DicTypeEO(); + dicTypeEO.setDicTypeName(dicName); + dicTypeEO.setDicTypeCode("BUSSSTANDCLASS"); + List getDicCode = dicTypeEODao.getDicTypeByDicTypeName(dicTypeEO); + if(getDicCode!= null && getDicCode.size()>0){ + replaceNum = replaceNum.replaceFirst(dicName,getDicCode.get(0).getDicTypeCode()); + replaceList[countre] = replaceNum; + countre++; + } + } + } + } + sarStandardsInfoEOPage.setReplacedStandNumList(replaceList); + // 2021/03/30 刘慧文修改 标准类别已不存在 + if(StringUtils.isNotEmpty(sarBussionessStandEO.getStandYear())){ + sarStandardsInfoEOPage.setReplaceStandNum(sarBussionessStandEO.getStandCode()+"-"+sarBussionessStandEO.getStandYear()); + } else { + sarStandardsInfoEOPage.setReplaceStandNum(sarBussionessStandEO.getStandCode()); + } + int updateResult = sarBussionessStandEODao.updateRelaceNumByNumber(sarStandardsInfoEOPage); + } + } + + /*** + * @Description: 新增属性表数据 + * @Author: yangxuenan + * @Date: 2020/9/8 9:53 + * @Param: [sarStandardsInfoEO] + * @Return: void + */ + public void createStandAttrInfo (SarBussionessStand sarBussionessStandEO,boolean upFlag) throws Exception { + String sarStandAttrEOStr = sarBussionessStandEO.getSarStandAttrEOStr(); + String mustFields = FieldConvertUtil.mustFields; + String mustValues = FieldConvertUtil.mustValues(sarBussionessStandEO.getId()); + // 将字符串转为map进行解析 + Map sarStandAttrMap = JSONObject.fromObject(sarStandAttrEOStr); + StringBuilder fieldsBuilder = new StringBuilder(); + StringBuilder valuesBuilder = new StringBuilder(); + Map selectionMap = new HashMap<>(); + Map fileMap = new HashMap<>(); + Map multiTimeMap = new HashMap<>(); + String fileIds = ""; + for (Map.Entry entry : sarStandAttrMap.entrySet()) { + String attrKey = entry.getKey(); + String attrValue = entry.getValue(); + if (InitStandAttrUtil.queryFieldListBuss != null && !InitStandAttrUtil.queryFieldListBuss.isEmpty()) { + if (InitStandAttrUtil.queryFieldListBuss.contains(attrKey)) { + fieldsBuilder.append("," + attrKey); + // 多选项,文件类型需要单独处理 向子表添加数据 + if (InitStandAttrUtil.selectionFieldListBuss.contains(attrKey)) { + selectionMap.put(attrKey,attrValue); + } else if (InitStandAttrUtil.fileFieldListBuss.contains(attrKey)) { + fileMap.put(attrKey,attrValue); + fileIds += attrValue + ","; + } else if (InitStandAttrUtil.multiTimeFieldList.contains(attrKey)) { + multiTimeMap.put(attrKey,attrValue); + } + // 不同类型存储数据需单独处理值 + if (InitStandAttrUtil.numFieldListBuss.contains(attrKey)) { + if (StringUtils.isBlank(attrValue)) { + attrValue = "null"; + } + } else if (InitStandAttrUtil.timeFieldListBuss.contains(attrKey)) { + attrValue = FieldConvertUtil.changeTimeValue(attrValue); + } else { + attrValue = "'" + attrValue + "'"; + } + valuesBuilder.append("," + attrValue); + sarBussionessStandEO.setFileIds(fileIds); + } + } + } + String insertField = mustFields + fieldsBuilder.toString(); + String insertValue = mustValues + valuesBuilder.toString(); + int insertRes = sarBussStandAttrInfoEODao.insertStandAttr(insertField,insertValue); + if (insertRes > 0) { + // 多选项处理 + createStandVal(sarBussionessStandEO.getId(),selectionMap); + // 文件处理 + createStandFile(sarBussionessStandEO.getId(),fileMap,upFlag); + // 多时间处理 +// createStandPutTime(sarBussionessStandEO.getId(),multiTimeMap); + } + } + + /*** + * @Description: 多选项处理 + * @Author: yangxuenan + * @Date: 2020/9/8 14:37 + * @Param: [sarStandardsInfoEO, selectionMap] + * @Return: void + */ + public void createStandVal (String standId,Map selectionMap) { + if (selectionMap != null && selectionMap.size() > 0) { + List standValList = new ArrayList<>(); + for (Map.Entry entry : selectionMap.entrySet()) { + String value = entry.getValue(); + String field = entry.getKey(); + if (StringUtils.isNotBlank(value)) { + String[] valArr = value.trim().split(","); + for (String val : valArr) { + SarBussStandVal sarStandValEO = new SarBussStandVal(); + sarStandValEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); + sarStandValEO.setCreationTime(new Date()); + sarStandValEO.setModifyTime(new Date()); + sarStandValEO.setStandId(standId); + sarStandValEO.setId(com.adc.da.sys.util.UUIDUtils.randomUUID20()); + sarStandValEO.setPropertyType(field); + sarStandValEO.setPropertyValue(val); + standValList.add(sarStandValEO); + } + } + } + if (standValList != null && !standValList.isEmpty()) { + sarBussStandValEODao.insertForeach(standValList); + } + } + } + + /*** + * @Description: 文件处理 + * @Author: yangxuenan + * @Date: 2020/9/8 15:01 + * @Param: [standId, fileMap] + * @Return: void + */ + public void createStandFile (String standId,Map fileMap,boolean upFlag) throws Exception { + if (fileMap != null && fileMap.size() > 0) { + List standFileList = new ArrayList<>(); + for (Map.Entry entry : fileMap.entrySet()) { + String value = entry.getValue(); + String field = entry.getKey(); + if (StringUtils.isNotBlank(value)) { + List fileList = attFileEOService.getMultiFileInfos(value); + if (fileList != null && !fileList.isEmpty()) { + createStandFileAppend(standId,field,fileList,standFileList,upFlag); + } + } + } + if (standFileList != null && !standFileList.isEmpty()) { + sarBussStandFileEODao.insertForeach(standFileList); + } + } + } + + public void createStandFileAppend (String standId,String field,List fileList,List standFileList,boolean upFlag) throws Exception { + for (AttFileEO fileInfo : fileList) { + //TODO 20220727 此处为兼容老系统数据 将编辑去掉了先删除再添加的操作 + if(upFlag){ + QueryWrapper fileQueryWrapper = new QueryWrapper<>(); + fileQueryWrapper.eq("STAND_ID",standId); + fileQueryWrapper.eq("VALID_FLAG",0); + fileQueryWrapper.eq("USE_MODEL","SOURCE_FILE"); + fileQueryWrapper.eq("ATT_ID",fileInfo.getId()); + int fileExist = sarBussStandFileEODao.selectCount(fileQueryWrapper); + if(fileExist>0){ + continue; + } + } + SarBussStandFile sarStandFileEO = new SarBussStandFile(); + sarStandFileEO.setCreationUser(LoginUserUtil.getUserId()); + sarStandFileEO.setCreationTime(new Date()); + sarStandFileEO.setModifyTime(new Date()); + sarStandFileEO.setValidFlag(0); + sarStandFileEO.setStandId(standId); //标准ID + sarStandFileEO.setUseModel(UseModuleEnum.SOURCE_FILE.getValue()); //文件使用模式 + sarStandFileEO.setId(com.adc.da.sys.util.UUIDUtils.randomUUID20()); + sarStandFileEO.setAttId(fileInfo.getId()); //文件ID + sarStandFileEO.setStandFileClassify(field); //文件分类 + sarStandFileEO.setFileName(fileInfo.getOldFileName()); + sarStandFileEO.setFileSuffix(fileInfo.getFileSuffix()); + sarStandFileEO.setOriAttId(fileInfo.getId()); + standFileList.add(sarStandFileEO); + //文档转换 + if ("pdf".equals(fileInfo.getFileSuffix()) || "PDF".equals(fileInfo.getFileSuffix())) { + SarBussStandFile newFileEO = new SarBussStandFile(); + newFileEO.setCreationUser(LoginUserUtil.getUserId()); + newFileEO.setCreationTime(new Date()); + newFileEO.setModifyTime(new Date()); + newFileEO.setValidFlag(0); + newFileEO.setStandId(standId); //标准ID + newFileEO.setId(com.adc.da.sys.util.UUIDUtils.randomUUID20()); + newFileEO.setAttId(fileInfo.getId()); //文件ID + newFileEO.setStandFileClassify(field); //文件分类 + newFileEO.setFileName(fileInfo.getOldFileName()); + newFileEO.setFileSuffix(fileInfo.getFileSuffix()); + newFileEO.setUseModel(UseModuleEnum.WEB_FILE.getValue()); //文件使用模式 //文件名称@@@@@@@需要修改 + newFileEO.setOriAttId(fileInfo.getId()); + standFileList.add(newFileEO); + } else { + String filePath = fileInfo.getFilePath() + fileInfo.getFileName(); + OtConvertMq convert = new OtConvertMq(); + convert.setLawsId(standId); + convert.setAttId(fileInfo.getId()); + convert.setFilePath(filePath); + convert.setAddOrUp("0"); + convert.setFileSuffix(fileInfo.getFileSuffix()); + convert.setStandFileClassify(field); + convert.setConvertType(SarTypeEnum.BUSINESS.getValue()); + if(elasflag) { + convertMq.sendMQ(convert); + } + } + } + } + + public List selectStandardsByStandNumber(String replaceStandNum) { + /*if(replaceStandNum.indexOf(" ")!=-1){ + String dicName = replaceStandNum.substring(0,replaceStandNum.indexOf(" ")); + DicTypeEO dicTypeEO = new DicTypeEO(); + dicTypeEO.setDicTypeName(dicName); + dicTypeEO.setDicTypeCode("BUSSSTANDCLASS"); + List getDicCode = dicTypeEODao.getDicTypeByDicTypeName(dicTypeEO); + if(getDicCode!= null && getDicCode.size()>0){ + replaceStandNum = replaceStandNum.replace(dicName,getDicCode.get(0).getDicTypeCode()); + } + }*/ + SarBussionessStand sarStandardsInfoEO = new SarBussionessStand(); + sarStandardsInfoEO.setStandCode(replaceStandNum); + return this.baseMapper.selectStandardsByStandNumber(sarStandardsInfoEO); + } + + @Override + public SarBussionessStand selectStandardsInfoByKey(String id) throws Exception{ + List sarBussionessStandlist = this.baseMapper.selectStandardsInfoByKey(id); + SarBussionessStand sarBussionessStandEO = new SarBussionessStand(); + if(!sarBussionessStandlist.isEmpty()) { + List newStandList = new ArrayList<>(); + newStandList.add(sarBussionessStandlist.get(0)); + attrInfoShowDetails(newStandList); + sarBussionessStandEO = newStandList.get(0); + } + return sarBussionessStandEO; + } + + @Override + public SarBussionessStand selectStandardsInfoUpdateByKey(String id) throws Exception{ + List sarBussionessStandlist = this.baseMapper.selectStandardsInfoByKey(id); + SarBussionessStand sarBussionessStandEO = new SarBussionessStand(); + if(!sarBussionessStandlist.isEmpty()) { + List newStandList = new ArrayList<>(); + newStandList.add(sarBussionessStandlist.get(0)); + attrInfo(newStandList); + sarBussionessStandEO = newStandList.get(0); + } + return sarBussionessStandEO; + } + + public void attrInfoShowDetails(List sarlist) throws Exception { + for (SarBussionessStand row : sarlist) { + attrInfoDetails(row); + Map getAttrMap = row.getAttrInfoMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + if (entry.getValue() != null && InitStandAttrUtil.fileFieldListBuss != null && InitStandAttrUtil.fileFieldListBuss.size() > 0 && InitStandAttrUtil.fileFieldListBuss.contains(name)) { + value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfosOrderByDateDesc(value); + entry.setValue(fileObj); + } + }else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + value = entry.getValue().toString(); + List valArr = Arrays.asList(value.split(",")); + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + + Optional.ofNullable(value) + .ifPresent(val->{ + entry.setValue(val); + }); + + + } + } + } + } + } + + @Override + public SarBussionessStandEOPage updateStandardsMenu(SarBussionessStandEOPage standardsInfoEO) { + SarBussStandMenu sarStandMenuEO = new SarBussStandMenu(); + String nowMenuId = standardsInfoEO.getMenuId(); + String treeType = standardsInfoEO.getTreeType(); + String menuName = standardsInfoEO.getMenuName(); + sarStandMenuEO.setMenuId(nowMenuId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + List menuOldIds = new ArrayList<>(); + for (int i = 0; i < standardsInfoEO.getIdlist().length; i++) { + String standId = standardsInfoEO.getIdlist()[i]; + sarStandMenuEO.setBussStandId(standId); + sarStandMenuEO.setId(null); + sarStandMenuEO.setValidFlag(0); + // 根据当前目录查询所在父节点 + String secondLevelId = ""; + List getMenuPIds = new ArrayList<>(); + if(StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)){ + sarStandMenuEO.setTreeType("sarMs"); + getMenuPIds = iSarMenuStandardService.getChildMenuList(nowMenuId); + }else { + getMenuPIds = iTsResourceService.getParentMenuId(nowMenuId); + } + if (!getMenuPIds.isEmpty()) { + int idSize = getMenuPIds.size(); + secondLevelId = getMenuPIds.get(idSize-1); + } else { + secondLevelId = nowMenuId; + } + //查询标准是否已在 当前父节点中 + SarBussStandMenu standMenuEOQuery = new SarBussStandMenu(); + standMenuEOQuery.setBussStandId(standardsInfoEO.getIdlist()[i]); + + List menuIds = new ArrayList<>(); + if(StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)) { + // sarMs 技术体系 标准只可选一个 根据标准查询唯一 + standMenuEOQuery.setTreeType("sarMs"); + menuIds = iSarMenuStandardService.getChildMenuList(secondLevelId); + }else { + standMenuEOQuery.setMenuId(secondLevelId); + menuIds = iTsResourceService.getChildMenuList(secondLevelId); + standMenuEOQuery.setMenuIds(menuIds); + } + List getInfo = sarBussStandMenuEODao.selectMenuByMenuParentId(standMenuEOQuery); + //删除节点与根节点的关联 + SarBussStandMenu sarStandMenuDel = new SarBussStandMenu(); + sarStandMenuDel.setBussStandId(standardsInfoEO.getIdlist()[i]); + sarStandMenuDel.setMenuId(standardsInfoEO.getRootMenuId()); + sarBussStandMenuEODao.deleteByStandIdAndMenuId(sarStandMenuDel); + int op = 0; + if (getInfo == null || getInfo.isEmpty()) { + queryWrapper.lambda().eq(SarBussStandMenu::getBussStandId, standId); + List oldList = sarBussStandMenuEODao.selectList(queryWrapper); + if (CollectionUtils.isNotEmpty(oldList)) { + menuOldIds = oldList.stream().map(SarBussStandMenu::getMenuId).collect(Collectors.toList()); + if (!menuOldIds.contains(nowMenuId)) { + sarStandMenuEO.setId(UUIDUtils.randomUUID20()); + op = sarBussStandMenuEODao.insertSelective(sarStandMenuEO); + } + } + } else { + sarStandMenuEO.setOldMenuId(secondLevelId); + if(StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)) { + menuOldIds = iSarMenuStandardService.getChildMenuList(secondLevelId); + sarStandMenuEO.setMenuIds(menuOldIds); + sarStandMenuEO.setId(getInfo.get(0).getId()); + op = sarBussStandMenuEODao.updateById(sarStandMenuEO); + }else { +// menuOldIds= iTsResourceService.getChildMenuList(secondLevelId); +// sarStandMenuEO.setMenuIds(menuOldIds); +// op = sarBussStandMenuEODao.updateByStandIdAndMenuId(sarStandMenuEO); + + queryWrapper.lambda().eq(SarBussStandMenu::getBussStandId, standId); + List oldList = sarBussStandMenuEODao.selectList(queryWrapper); + if (CollectionUtils.isNotEmpty(oldList)) { + menuOldIds = oldList.stream().map(SarBussStandMenu::getMenuId).collect(Collectors.toList()); + if (!menuOldIds.contains(nowMenuId)) { + sarStandMenuEO.setId(UUIDUtils.randomUUID20()); + op = sarBussStandMenuEODao.insertSelective(sarStandMenuEO); + } + } + } + } + if(StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)) { + QueryWrapper qw = new QueryWrapper(); + qw.eq("STAND_ID",standId); + List infoList = sarBussStandAttrInfoEODao.selectList(qw); + if(!infoList.isEmpty()){ + SarBussStandAttrInfo attrInfo = new SarBussStandAttrInfo(); + attrInfo.setId(infoList.get(0).getId()); + attrInfo.setTxlbbuss(menuName); + attrInfo.setValidFlag("0"); + sarBussStandAttrInfoEODao.updateById(attrInfo); + } + } +// sarBussStandMenuEODao.updateByStandIDSelective(sarStandMenuEO); + } + return standardsInfoEO; + } + + @Override + public List getSarBussionStandPage(SarBussionessStandEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if(page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())){ + String treeType = page.getTreeType(); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID",page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if(children.isEmpty() && !page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(treeType) && "tsr".equals(treeType)){ + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + }else if(!page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)){ + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iSarMenuStandardService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + }else if(page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(page.getSarMsType()) && "filterSarMsMenu".equals(page.getSarMsType())){ +// List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); +// if (getMenuIdList != null && !getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + // menuTopId 1级目录下 所有目录 选择的标准不可重复 根据现逻辑 统一根据2级菜单查所有 没有选过的 + List ids = iSarMenuStandardService.getChildMenuList(page.getMenuTopId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + //配置列表显示的数据权限 + //63e999c65b1f2b1339119a00eb1d50cf + if ("1".equals(page.getIsKU()) && !"qbwdsc".equals(page.getCollectMenuId())) { + List sarlist = new ArrayList<>(); + List access = tsUserService.getResourceDataUserId(page.getUserId()); + if (null == page.getMenuId() && null == page.getMenuAllChildrenIdList()) { + page.setMenuAllChildrenIdList(access); + page.setMenuId(""); + } else if (page.getMenuId().equals("3")) { + page.setMenuAllChildrenIdList(access); + } + List finalData = page.getMenuAllChildrenIdList().stream().filter(s -> access.contains(s)).collect(Collectors.toList()); + if (finalData.size() > 0) { + page.setMenuAllChildrenIdList(finalData); + if (null == page.getMenuId() && null == page.getMenuAllChildrenIdList()) { + page.setMenuAllChildrenIdList(access); + } + Integer rowCount = this.baseMapper.getBussionessStandInfoCount(page); + page.getPager().setRowCount(rowCount); + sarlist = this.baseMapper.getBussionessStandInfoPage(page); + attrInfoCollect(sarlist); + return sarlist; + } else { + page.getPager().setRowCount(0); + return sarlist; + } + }else { + if ("qbwdsc".equals(page.getCollectMenuId())){ + page.setMenuRoleList(null); + page.setMenuId(null); + } + Integer rowCount = this.baseMapper.getBussionessStandInfoCount(page); + page.getPager().setRowCount(rowCount); + List sarlist = this.baseMapper.getBussionessStandInfoPage(page); + attrInfoCollect(sarlist); + return sarlist; + } + } + + + @Override + public boolean checkIsShow(SarBussionessStandEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if(page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())){ + String treeType = page.getTreeType(); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID",page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if(children.isEmpty() && !page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(treeType) && "tsr".equals(treeType)){ + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + }else if(!page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)){ + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iSarMenuStandardService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + }else if(page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(page.getSarMsType()) && "filterSarMsMenu".equals(page.getSarMsType())){ + List ids = iSarMenuStandardService.getChildMenuList(page.getMenuTopId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + //配置列表显示的数据权限 + List sarlist = new ArrayList<>(); + List access = tsUserService.getResourceDataUserId(page.getUserId()); + if (null == page.getMenuId() && null == page.getMenuAllChildrenIdList()) { + page.setMenuAllChildrenIdList(access); + page.setMenuId(""); + } else if (page.getMenuId().equals("3")) { + page.setMenuAllChildrenIdList(access); + } + List finalData = page.getMenuAllChildrenIdList().stream().filter(s -> access.contains(s)).collect(Collectors.toList()); + if (finalData.size() > 0) { + page.setMenuAllChildrenIdList(finalData); + if (null == page.getMenuId() && null == page.getMenuAllChildrenIdList()) { + page.setMenuAllChildrenIdList(access); + } + Integer rowCount = this.baseMapper.getBussionessStandInfoCount(page); + if (rowCount>0) { + return true; + }else { + return false; + } + } else { + return false; + } + } + + + @Override + public List getSarBussionStandPageQd(SarBussionessStandEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if(page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID",page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if(children.isEmpty() && !page.getMenuId().equals("nomenu")){ + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + + Integer rowCount = this.baseMapper.getBussionessStandInfoCount(page); + page.getPager().setRowCount(rowCount); + List sarlist = this.baseMapper.getBussionessStandInfoPage(page); + attrInfo(sarlist); + return sarlist; + } + /*** + * @Description: 处理属性表数据 + * @Param: [sarlist] + * @Return: void + */ + public void attrInfo (List sarlist) throws Exception { + for(SarBussionessStand row : sarlist){ + attrInfoDetails(row); + } + } + + public void attrInfoCollect (List sarlist) throws Exception { + List collectResIds = sarlist.stream().map(SarBussionessStand::getId).collect(Collectors.toList()); + Map collectMap = personCollectEOService.queryCollectByUserAndIds(collectResIds); + for (SarBussionessStand row : sarlist) { + if(collectMap != null && collectMap.get(row.getId()) != null){ + row.setCollectId(collectMap.get(row.getId())); + } + } + } + + + public void attrInfo1 (SarBussionessStand row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarBussStandAttrInfoEODao.selectStandFieldAndData(fieldInfo,row.getId()); + if (InitStandAttrUtil.clobFieldListBuss != null && !InitStandAttrUtil.clobFieldListBuss.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldListBuss) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField,fieldValue); + } + } + row.setAttrInfoMap(getAttrMap); + } + } + + public void attrInfoShowSearchDetails(SarBussionessStand row,String type) throws Exception { + if (row != null) { + attrInfoSearchDetails(row,type); + Map getAttrMap = row.getAttrInfoCaseMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey().toUpperCase(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + if(StringUtils.isNotBlank(entry.getValue().toString())){ + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if(json instanceof org.json.JSONArray){ + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(),String.class); + }else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if(!valArr.isEmpty()){ + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + entry.setValue(value); + } + } + } + } + } + + public void attrInfoSearchDetails(SarBussionessStand row,String type) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = new TreeMap<>(); + if(type.equals("add")){ + String sarStandAttrEOStr = row.getSarStandAttrEOStr(); + getAttrMap = JSONObject.fromObject(sarStandAttrEOStr); + }else { + getAttrMap = sarBussStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + } + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + if (getAttrMap != null && !getAttrMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + + row.setAttrInfoMap(getAttrMap); + } + } + + private Map transformUpperCase(Map orgMap) { + Map resultMap = new HashMap<>(); + + for (Map.Entry entry : orgMap.entrySet()) { + String newKey = entry.getKey().toLowerCase(); + resultMap.put(newKey, orgMap.get(entry.getKey())); + if (entry.getValue() != null && InitStandAttrUtil.fileFieldListBuss != null && !InitStandAttrUtil.fileFieldListBuss.isEmpty() && InitStandAttrUtil.fileFieldListBuss.contains(entry.getKey())) { + String value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + if(!fileObj.isEmpty()){ + resultMap.put(newKey + "Name", fileObj.get(0).getOldFileName()); + } + } + } + } + + return resultMap; + } + + public void attrInfoDetails (SarBussionessStand row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarBussStandAttrInfoEODao.selectStandFieldAndData(fieldInfo,row.getId()); + if (InitStandAttrUtil.clobFieldListBuss != null && !InitStandAttrUtil.clobFieldListBuss.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldListBuss) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField,fieldValue); + } + } + // 组织机构和人员 + Map newMap = new HashMap<>(); + if(getAttrMap != null){ + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + Object value1 = entry.getValue(); + if (value1 != null && value1.toString().equals("\"null\"")){ + entry.setValue(""); + } + if("TXLBBUSS".equals(name)){ + if(value1 != null){ + String value = entry.getValue().toString(); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("REPLACE(MENU_NAME,' ','')",value.trim()); + wrapper.like("PARENT_IDS","aaaaaaaaaaaaaaaaaaaaaa"); + List list = iSarMenuStandardService.list(wrapper); + if(!list.isEmpty()){ + newMap.put(name+"MenuId",list.get(0).getId()); + } + } + } + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + String value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapBuss.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getOrgNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getUserNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + value = sysInfoEOService.getRoleNamesByIds(value); + newMap.put(name + "Name",value); + } + }else if (entry.getValue() != null && InitStandAttrUtil.fileFieldListBuss != null && !InitStandAttrUtil.fileFieldListBuss.isEmpty() && InitStandAttrUtil.fileFieldListBuss.contains(entry.getKey())) { + String value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + if(!fileObj.isEmpty()){ + String oldFileName = fileObj.stream().map(AttFileEO::getOldFileName).collect(Collectors.joining(",")); + newMap.put(name + "Name", oldFileName); + } + } + } + } + getAttrMap.putAll(newMap); + } + + if (getAttrMap != null && !getAttrMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + + row.setAttrInfoMap(getAttrMap); + } + } + + public void attrInfoDetailsExport (SarBussionessStandExport row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldBuss; + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + List list = Arrays.asList(fieldInfo.split(",")).stream().map(s -> String.format(s.trim())).collect(Collectors.toList()); + + Map getAttrMap = BeanUtils.describe(row); + + if (InitStandAttrUtil.clobFieldListBuss != null && !InitStandAttrUtil.clobFieldListBuss.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldListBuss) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField,fieldValue); + } + } + // 组织机构和人员 + Map newMap = new HashMap<>(); + if(getAttrMap != null){ + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + List filterList = list.stream().filter(a -> name.equals(a)).collect(Collectors.toList()); + if(filterList.isEmpty()){ + newMap.remove(name); + continue; + } + Object value1 = entry.getValue(); + if (value1 != null && value1.toString().equals("\"null\"")){ + entry.setValue(""); + } + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListBuss != null && InitStandAttrUtil.selectionFieldListBuss.size() > 0 && InitStandAttrUtil.selectionFieldListBuss.contains(name)) { + String value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapBuss.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getOrgNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getUserNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + value = sysInfoEOService.getRoleNamesByIds(value); + newMap.put(name + "Name",value); + } + } + } + getAttrMap.putAll(newMap); + } + row.setAttrInfoMap(getAttrMap); + } + } + + + + @Override + public List queryByList(SarBussionessStandEOPage sarBussionessStandEOPage){ + sarBussionessStandEOPage.setValidFlag("0"); + return this.baseMapper.queryByList(sarBussionessStandEOPage); + } + + @Override + public void convertDocAllQB(List list) { + try{ + for(SarBussStandFile sarStandFile : list){ + logger.error("QB++++++++++++++++:" + sarStandFile.getStandId()); + AttFileEO temp = attFileEOService.getFileInfo(sarStandFile.getAttId()); + createStandFileAppend(sarStandFile.getStandId(), sarStandFile.getStandFileClassify(), Arrays.asList(temp), new ArrayList<>(),true); + sarStandFile.setPassword("1"); + sarBussStandFileEODao.updateById(sarStandFile); + } + }catch(Exception e){ + logger.error(e.getMessage(),e); + } + } + + /** + * 判断文件是否是加密文件 + */ + @Override + public void checkFileByEncrypt() { + /** + * 1、获取所有的原始文件 + * 2、判断文件头信息 + * 3、记录状态 + * 4、最后将所有涉及到的文件全部记录到文件中保存到本地 + */ + QueryWrapper standQueryWrapper = new QueryWrapper<>(); + standQueryWrapper.eq("VALID_FLAG",0); + List sarBussionessStands = sarBussionessStandEODao.selectList(standQueryWrapper); + int checkStandNum = 0; + List outLogList = new ArrayList<>(); + if(sarBussionessStands!=null && !sarBussionessStands.isEmpty()){ + for (SarBussionessStand data:sarBussionessStands) { + logger.info("开始处理第 "+(checkStandNum++)+" 个企标: "+data.getId()+" "+data.getStandCode()); + QueryWrapper fileQueryWrapper = new QueryWrapper<>(); + fileQueryWrapper.eq("STAND_ID",data.getId()); + fileQueryWrapper.eq("USE_MODEL","SOURCE_FILE"); + fileQueryWrapper.eq("VALID_FLAG",0); + List sarBussStandFiles = sarBussStandFileEODao.selectList(fileQueryWrapper); + if(sarBussStandFiles!=null && !sarBussStandFiles.isEmpty()){ + for(SarBussStandFile file : sarBussStandFiles){ + StringBuilder fileLog = new StringBuilder(); + String fileAttId = file.getAttId(); + if(StringUtils.isNotBlank(fileAttId)){ + fileLog.append("标准 ").append(data.getStandCode()).append(" ").append(data.getId()); + fileLog.append(" 下的文件: ").append(file.getId()).append(" ").append(file.getFileName()); + //获取文件信息 + AttFileEO fileInfo = attFileEOService.getFileInfo(fileAttId); + String checkResult = encryptFileUtils.checkFileIsEncryFile(fileInfo); + logger.debug(checkResult); + switch (checkResult){ + case "NOFILE": + fileLog.append(" 检查结果为 不存在该数据 "); + break; + case "READERR": + fileLog.append(" 检查结果为 读取文件失败 "); + break; + case "READNO": + fileLog.append(" 检查结果为 读取文件为空 "); + break; + case "UNENCRYPT": + fileLog.setLength(0); + break; + case "ENCRYPT": + fileLog.append(" 检查结果为 文件加密 "); + break; + } + } + if(fileLog.length()>0){ + outLogList.add(fileLog.toString()); + } + } + } + } + } + if(!outLogList.isEmpty()){ + encryptFileUtils.writeTxt(outLogList); + } + logger.info("================================文件检查完毕=================================================="); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/controller/SarBussionessStandStateController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/controller/SarBussionessStandStateController.java new file mode 100644 index 00000000..55156bb7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/controller/SarBussionessStandStateController.java @@ -0,0 +1,77 @@ +package com.adc.da.slrs.sarBussionessStandState.controller; + + +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarBussionessStandState.entity.ModelData; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandStatePage; +import com.adc.da.slrs.sarBussionessStandState.service.ISarBussionessStandStateService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.utils.StringUtils; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandState; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 企业标准信息复审表 前端控制器 + *

    +* +* @author super_liu +* @since 2022-01-23 +*/ +@RestController +@Api(tags = "福田标准法规--企业复审信息") +@RequestMapping("/${restPath}/lawss/sarBussionessStandState") +public class SarBussionessStandStateController extends BaseController { + + @Autowired + private ISarBussionessStandStateService bussionessStandStateService; + + /** + * 查询当天企标复审列表 + * @param page 标准信息 + * @return + */ + @ApiOperation(value = "|SarBussionessStandState|查询当天企标复审") + @PostMapping("/getSarBussionessStandStateProcessList") + public List getSarBussionessStandStateProcessList(SarBussionessStandStatePage page){ + return bussionessStandStateService.getSarBussionessStandStateProcessList(page); + } + + /** + * 自定义分页复审流程查询列表 + * @param page 标准信息 + * @return + */ + @ApiOperation(value = "|SarBussionessStandState|自定义分页复审流程查询列表") + @GetMapping("/getSarBussionStandPageNo") + //@RequiresPermissions("lawss:sarBussionessStand:getSarBussionStandPage") + public ResponseMessage> getSarBussionStandPageNo(SarBussionessStandStatePage page) throws Exception { + List rows = bussionessStandStateService.getSarBussionessStandStatePageNo(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + /** + * 自定义分页查询列表 + * @param page 标准信息 + * @return + */ + @ApiOperation(value = "|SarBussionessStandState|自定义分页查询列表") + @GetMapping("/getSarBussionStandPage") + //@RequiresPermissions("lawss:sarBussionessStand:getSarBussionStandPage") + public ResponseMessage> getSarBussionessStandStatePage(SarBussionessStandStatePage page) throws Exception { + List rows = bussionessStandStateService.getSarBussionessStandStatePage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/dao/SarBussionessStandStateDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/dao/SarBussionessStandStateDao.java new file mode 100644 index 00000000..41d99458 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/dao/SarBussionessStandStateDao.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.sarBussionessStandState.dao; + +import com.adc.da.slrs.sarBussionessStandState.entity.ModelData; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandState; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandStatePage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 企业标准信息复审表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2022-01-23 + */ +public interface SarBussionessStandStateDao extends BaseMapper { + + List getSarBussionessStandStateProcessList(SarBussionessStandStatePage page); + + List getBussionessStandStatePage(SarBussionessStandStatePage page); + + int getBussionessStandStateCount(SarBussionessStandStatePage page); + + List getSarBussionessStandStatePageNo(SarBussionessStandStatePage page); + + int getBussionessStandStateCountNo(SarBussionessStandStatePage page); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/ModelData.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/ModelData.java new file mode 100644 index 00000000..caeac8e1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/ModelData.java @@ -0,0 +1,45 @@ +/** + * Copyright 2022 bejson.com + */ +package com.adc.da.slrs.sarBussionessStandState.entity; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * Auto-generated: 2022-06-23 15:31:2 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +public class ModelData { + + private String id; + private String standId; + private String standName; + private String standCode; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String reviewTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTime; + private String reviewResults; + private String reviewProcessNum; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String creationTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String modifyTime; + private int validFlag; + private String param1; + private String param2; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String putTime; + private String standSort; + private String qcdw; + private String fsrqbuss; + private String qcrbuss; + private String processStatus; + private String bussFsSubUser1; + private String bussFsSubUser1Name; +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/SarBussionessStandState.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/SarBussionessStandState.java new file mode 100644 index 00000000..9f09b90d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/SarBussionessStandState.java @@ -0,0 +1,104 @@ +package com.adc.da.slrs.sarBussionessStandState.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +/** + *

    + * 企业标准信息复审表 + *

    + * + * @author super_liu + * @since 2022-01-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarBussionessStandState对象", description="企业标准信息复审表") +public class SarBussionessStandState extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键/企业标准信息主键") + @TableId(value = "ID", type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "企标ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "名称") + @TableField("STAND_NAME") + private String standName; + + @ApiModelProperty(value = "企标编号") + @TableField("STAND_CODE") + private String standCode; + + @ApiModelProperty(value = "复审时间") + @TableField("REVIEW_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String reviewTime; + + @ApiModelProperty(value = "发布日期") + @TableField("ISSUE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTime; + + @ApiModelProperty(value = "复审结果 1 修订、2 废止、3 继续有效") + @TableField("REVIEW_RESULTS") + private Integer reviewResults; + + @ApiModelProperty(value = "复审关联流程编号") + @TableField("REVIEW_PROCESS_NUM") + private String reviewProcessNum; + + @ApiModelProperty(value = "创建日期") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String creationTime; + + @ApiModelProperty(value = "更新日期") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String modifyTime; + + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "参数1") + @TableField("PARAM1") + private Integer param1; + + @ApiModelProperty(value = "参数2") + @TableField("PARAM2") + private String param2; + + @TableField(exist = false) + private String putTime; + + @TableField(exist = false) + private String FSRQBUSS; + + @TableField(exist = false) + private String QCDW; + + @TableField(exist = false) + private String QCRBUSS; + + @TableField(exist = false) + private String standSort; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/SarBussionessStandStatePage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/SarBussionessStandStatePage.java new file mode 100644 index 00000000..c053d6e7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/entity/SarBussionessStandStatePage.java @@ -0,0 +1,78 @@ +package com.adc.da.slrs.sarBussionessStandState.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.sys.common.BasePage; +import com.baomidou.mybatisplus.annotation.TableField; +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 java.util.Date; + +/** + *

    + * 企业标准信息复审表 + *

    + * + * @author super_liu + * @since 2022-01-23 + */ +@Data +@ApiModel(value="SarBussionessStandStatePage对象", description="企业标准信息复审表分页") +public class SarBussionessStandStatePage extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键/企业标准信息主键") + private String id; + + @ApiModelProperty(value = "企标ID") + private String standId; + + @ApiModelProperty(value = "名称") + private String standName; + + @ApiModelProperty(value = "企标编号") + private String standCode; + + @ApiModelProperty(value = "复审时间") + private Date reviewTime; + + @ApiModelProperty(value = "发布日期") + private Date issueTime; + + @ApiModelProperty(value = "复审结果 1 修订、2 废止、3 继续有效") + private Integer reviewResults; + + @ApiModelProperty(value = "复审关联流程编号") + private String reviewProcessNum; + + @ApiModelProperty(value = "创建日期") + private Date creationTime; + + @ApiModelProperty(value = "更新日期") + private Date modifyTime; + + private Integer validFlag; + + @ApiModelProperty(value = "参数1") + private Integer param1; + + @ApiModelProperty(value = "参数2") + private String param2; + + private String reviewTimeStart; + private String reviewTimeEnd; + + private String issueTimeStart; + private String issueTimeEnd; + + private String QCDW; + private String QCRBUSS; + private String standSort; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/service/ISarBussionessStandStateService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/service/ISarBussionessStandStateService.java new file mode 100644 index 00000000..a2b74dc4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/service/ISarBussionessStandStateService.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.sarBussionessStandState.service; + +import com.adc.da.slrs.sarBussionessStandState.entity.ModelData; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandState; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandStatePage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 企业标准信息复审表 服务类 + *

    + * + * @author super_liu + * @since 2022-01-23 + */ +public interface ISarBussionessStandStateService extends IService { + + List getSarBussionessStandStateProcessList(SarBussionessStandStatePage page); + + List getSarBussionessStandStatePageNo(SarBussionessStandStatePage page) throws Exception; + + List getSarBussionessStandStatePage(SarBussionessStandStatePage page) throws Exception; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/service/impl/SarBussionessStandStateServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/service/impl/SarBussionessStandStateServiceImpl.java new file mode 100644 index 00000000..45f6d072 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/service/impl/SarBussionessStandStateServiceImpl.java @@ -0,0 +1,45 @@ +package com.adc.da.slrs.sarBussionessStandState.service.impl; + +import com.adc.da.slrs.sarBussionessStandState.entity.ModelData; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandState; +import com.adc.da.slrs.sarBussionessStandState.dao.SarBussionessStandStateDao; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandStatePage; +import com.adc.da.slrs.sarBussionessStandState.service.ISarBussionessStandStateService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 企业标准信息复审表 服务实现类 + *

    + * + * @author super_liu + * @since 2022-01-23 + */ +@Service +public class SarBussionessStandStateServiceImpl extends ServiceImpl implements ISarBussionessStandStateService { + + @Override + public List getSarBussionessStandStateProcessList(SarBussionessStandStatePage page){ + List stateList = this.baseMapper.getSarBussionessStandStateProcessList(page); + return stateList; + } + + @Override + public List getSarBussionessStandStatePageNo(SarBussionessStandStatePage page) throws Exception{ + Integer rowCount = this.baseMapper.getBussionessStandStateCountNo(page); + page.getPager().setRowCount(rowCount); + List stateList = this.baseMapper.getSarBussionessStandStatePageNo(page); + return stateList; + } + + @Override + public List getSarBussionessStandStatePage(SarBussionessStandStatePage page) throws Exception{ + Integer rowCount = this.baseMapper.getBussionessStandStateCount(page); + page.getPager().setRowCount(rowCount); + List stateList = this.baseMapper.getBussionessStandStatePage(page); + return stateList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/sync/StateSync.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/sync/StateSync.java new file mode 100644 index 00000000..61ac7740 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStandState/sync/StateSync.java @@ -0,0 +1,263 @@ +package com.adc.da.slrs.sarBussionessStandState.sync; + +import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStandState.entity.SarBussionessStandState; +import com.adc.da.slrs.sarBussionessStandState.service.ISarBussionessStandStateService; +import com.adc.da.util.DateUtils; +import com.adc.da.utils.util.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2022年01月25日 3:34 + */ +@EnableScheduling +@Component +@Slf4j +public class StateSync { + Logger logger = LoggerFactory.getLogger(StateSync.class); + + @Autowired + private SarBussionessStandDao sarBussionessStandDao; + + @Autowired + private ISarBussionessStandStateService bussionessStandStateService; + + /** + * 根据配置文件设置是否开启定时器 + */ + + @Value("${isNotScheduled}") + private boolean isNotScheduled; //是否开启定时器 + + + // 月初 + @Scheduled(cron="0 0 1 1 * ?") +// @Scheduled(cron="*/5 * * * * ?") + @Async + public void StandScheduledJobMonthBegin(){ + if(isNotScheduled){ + try{ + Thread.sleep(2000); + logger.info("月初:"+Thread.currentThread().getName() + " cron=0 0 1 1 * ? --- " + new Date()+"---START-01"); +// String nowFirst = DateUtil.firstOneDay(DateUtil.printDate(new Date())); +// String nowFin = DateUtil.finOneDay(DateUtil.printDate(new Date())); +// String nowFinByQuery = DateUtil.addDay(DateUtil.finOneDay(DateUtil.printDate(new Date())),1); +// System.out.println("当前月第一日:"+nowFirst); +// System.out.println("当前月最后一日:"+nowFin); + // 改为下月整月 + String nextFirst = DateUtil.printDate(DateUtil.nextMonthFirstDate()); + String nextFin = DateUtil.finOneDay(DateUtil.printDate(DateUtil.nextMonthFirstDate())); + String nextFinByQuery = DateUtil.addDay(DateUtil.finOneDay(DateUtil.printDate(DateUtil.nextMonthFirstDate())),1); + System.out.println("下个月第一日:"+ nextFirst); + System.out.println("下个月最后一日:"+nextFin); + + SarBussionessStand stand = new SarBussionessStand(); + stand.setIssueTimeStart(nextFirst); + stand.setIssueTimeEnd(nextFin); + List standList = sarBussionessStandDao.queryByBussStateSync(stand); + if(!standList.isEmpty()){ + List filterList = new ArrayList<>(); + standList.forEach(sarBussionessStand -> { + SarBussionessStandState state = new SarBussionessStandState(); + state.setStandId(sarBussionessStand.getId()); + state.setStandCode(sarBussionessStand.getStandCode()); + state.setStandName(sarBussionessStand.getStandName()); + if(DateUtil.printToDate(sarBussionessStand.getIssueTime()) != null){ + state.setIssueTime(sarBussionessStand.getIssueTime()); + } + if(DateUtil.printToDate(sarBussionessStand.getReviewTime()) != null){ + state.setReviewTime(sarBussionessStand.getReviewTime()); + } + state.setCreationTime(DateUtil.printDateAll(new Date())); + state.setModifyTime(DateUtil.printDateAll(new Date())); + filterList.add(state); + }); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.isNull("REVIEW_RESULTS"); + wrapper.between("REVIEW_TIME",nextFirst,nextFinByQuery); + List stateList = bussionessStandStateService.list(wrapper); + if(!stateList.isEmpty()){ + // 差集 (list1 - list2) 新增复审表 + List distinctByUniqueList = filterList.stream() + .filter(item -> !stateList.stream() + .map(SarBussionessStandState::getStandId) + .collect(Collectors.toList()) + .contains(item.getStandId())) + .collect(Collectors.toList()); + insList.addAll(distinctByUniqueList); + + // 交集 更新复审表 + List intersection = filterList.stream() + .filter(item -> stateList.stream() + .map(SarBussionessStandState::getStandId) + .collect(Collectors.toList()) + .contains(item.getStandId())) + .collect(Collectors.toList()); + + // jdk8 stream 更新集合批量赋值ID + List updSetList = intersection.stream() + .map(upObj -> stateList.stream() + .filter(stateQueryObj -> upObj.getStandId().equals(stateQueryObj.getStandId())) + .findFirst() + .map(stateQueryObj -> { + upObj.setId(stateQueryObj.getId()); + upObj.setModifyTime(DateUtil.printDateAll(new Date())); + return upObj; + }).orElse(null)) + .collect(Collectors.toList()); + updList.addAll(updSetList); + + }else { + // 新增复审表 + insList.addAll(filterList); + } + + // 复审表操作逻辑 新增 + if(!insList.isEmpty()){ + bussionessStandStateService.saveBatch(insList); + } + + // 复审表操作逻辑 更新 + if(!updList.isEmpty()){ +// List updListResult = updList.stream().peek(p -> p.setModifyTime(DateUtil.printDateAll(new Date()))).collect(Collectors.toList()); + bussionessStandStateService.updateBatchById(updList); + } + + } + + logger.info("月初:"+Thread.currentThread().getName() + " cron=0 0 1 1 * ? --- " + new Date()+"---End-01"); + }catch(Exception e){ + logger.info(e.getMessage()); + } + } + } + + // 月末 (逻辑和 月初 一样 月末需跑一次下整月 防止特殊原因导致遗漏) + @Scheduled(cron="0 0 1 28-31 * ?") +// @Scheduled(cron="*/5 * * * * ?") + @Async + public void StandScheduledJobMonthEnd(){ + if(isNotScheduled){ + try{ + Thread.sleep(2000); + // 判断当前日期是否为月末 + Date date = new Date(); + if(isLastDayOfMonth(date)){ + logger.info("月末:"+Thread.currentThread().getName() + " cron=0 0 1 28-31 * ? --- " + new Date()+"---START-01"); + String nextFirst = DateUtil.printDate(DateUtil.nextMonthFirstDate()); + String nextFin = DateUtil.finOneDay(DateUtil.printDate(DateUtil.nextMonthFirstDate())); + String nextFinByQuery = DateUtil.addDay(DateUtil.finOneDay(DateUtil.printDate(DateUtil.nextMonthFirstDate())),1); + System.out.println("下个月第一日:"+ nextFirst); + System.out.println("下个月最后一日:"+nextFin); + + SarBussionessStand stand = new SarBussionessStand(); + stand.setIssueTimeStart(nextFirst); + stand.setIssueTimeEnd(nextFin); + List standList = sarBussionessStandDao.queryByBussStateSync(stand); + if(!standList.isEmpty()){ + List filterList = new ArrayList<>(); + standList.forEach(sarBussionessStand -> { + SarBussionessStandState state = new SarBussionessStandState(); + state.setStandId(sarBussionessStand.getId()); + state.setStandCode(sarBussionessStand.getStandCode()); + state.setStandName(sarBussionessStand.getStandName()); + if(DateUtil.printToDate(sarBussionessStand.getIssueTime()) != null){ + state.setIssueTime(sarBussionessStand.getIssueTime()); + } + if(DateUtil.printToDate(sarBussionessStand.getReviewTime()) != null){ + state.setReviewTime(sarBussionessStand.getReviewTime()); + } + state.setCreationTime(DateUtil.printDateAll(new Date())); + state.setModifyTime(DateUtil.printDateAll(new Date())); + filterList.add(state); + }); + List insList = new ArrayList<>(); + List updList = new ArrayList<>(); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.isNull("REVIEW_RESULTS"); + wrapper.between("REVIEW_TIME",nextFirst,nextFinByQuery); + List stateList = bussionessStandStateService.list(wrapper); + if(!stateList.isEmpty()){ + // 差集 (list1 - list2) 新增复审表 + List distinctByUniqueList = filterList.stream() + .filter(item -> !stateList.stream() + .map(SarBussionessStandState::getStandId) + .collect(Collectors.toList()) + .contains(item.getStandId())) + .collect(Collectors.toList()); + insList.addAll(distinctByUniqueList); + + // 交集 更新复审表 + List intersection = filterList.stream() + .filter(item -> stateList.stream() + .map(SarBussionessStandState::getStandId) + .collect(Collectors.toList()) + .contains(item.getStandId())) + .collect(Collectors.toList()); + // jdk8 stream 更新集合批量赋值ID + List updSetList = intersection.stream() + .map(upObj -> stateList.stream() + .filter(stateQueryObj -> upObj.getStandId().equals(stateQueryObj.getStandId())) + .findFirst() + .map(stateQueryObj -> { + upObj.setId(stateQueryObj.getId()); + upObj.setModifyTime(DateUtil.printDateAll(new Date())); + return upObj; + }).orElse(null)) + .collect(Collectors.toList()); + updList.addAll(updSetList); + }else { + // 新增复审表 + insList.addAll(filterList); + } + + // 复审表操作逻辑 新增 + if(!insList.isEmpty()){ + bussionessStandStateService.saveBatch(insList); + } + + // 复审表操作逻辑 更新 + if(!updList.isEmpty()){ +// List updListResult = updList.stream().peek(p -> p.setModifyTime(DateUtil.printDateAll(new Date()))).collect(Collectors.toList()); + bussionessStandStateService.updateBatchById(updList); + } + } + logger.info("月末:"+Thread.currentThread().getName() + " cron=0 0 1 28-31 * ? --- " + new Date()+"---End-01"); + }else { + logger.info("月末:"+Thread.currentThread().getName() + " cron=0 0 1 28-31 * ? --- " + new Date()+"当前日期不是最后一日---End-01"); + } + }catch(Exception e){ + logger.info(e.getMessage()); + } + } + } + + /** * 判断给定日期是否为月末的一天 * * @param date * @return true:是|false:不是 */ + public static boolean isLastDayOfMonth(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.DATE, (calendar.get(Calendar.DATE) + 1)); + if (calendar.get(Calendar.DAY_OF_MONTH) == 1){ + return true; + } + return false; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/controller/EvaluationIndexController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/controller/EvaluationIndexController.java new file mode 100644 index 00000000..e34ee833 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/controller/EvaluationIndexController.java @@ -0,0 +1,43 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.service.IEvaluationIndexService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.EvaluationIndex; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import javax.xml.ws.Response; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author zhaokaiyao +* @since 2021-12-03 +*/ +@RestController +@Api(description = "|EvaluationIndex|") +@RequestMapping("/${restPath}/sarEnterpriseStandardEvaluation/evaluation-index") +public class EvaluationIndexController extends BaseController { + @Autowired + private IEvaluationIndexService iEvaluationIndexService; + + + @ApiOperation("获取评价指标") + @GetMapping("getEvaluationIndex") + public ResponseMessage> getEvaluationIndex(EvaluationIndex query){ + List evaluationIndex = iEvaluationIndexService.getEvaluationIndex(query); + + return Result.success(evaluationIndex); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/controller/QualityEvaluationController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/controller/QualityEvaluationController.java new file mode 100644 index 00000000..7bcab299 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/controller/QualityEvaluationController.java @@ -0,0 +1,105 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.FormVO; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.service.IQualityEvaluationService; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.QualityEvaluation; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** +*

    + * 前端控制器 + *

    +* +* @author zhaokaiyao +* @since 2021-12-03 +*/ +@RestController +@Api(description = "|QualityEvaluation|") +@RequestMapping("/${restPath}/sarEnterpriseStandardEvaluation/quality-evaluation") +public class QualityEvaluationController extends BaseController { + + + @Autowired + private IQualityEvaluationService iQualityEvaluationService; + + + @ApiOperation("提交评价表") + @PostMapping("submitEvaluationForm") + public ResponseMessage submitEvaluationForm(@RequestBody FormVO form){ + + + if (form.getFormData()!=null && !form.getFormData().isEmpty()){ + List tableData = form.getTableData(); + String lawId = form.getLawId(); + String userId = form.getUserId(); + tableData.forEach(item->{ + item.setUserId(userId); + item.setLawId(lawId); + + if ( item.getEvaluationIndex()!=null && "3U9lb".equals( item.getEvaluationIndex() ) ){ + + JSONObject jsonObject = JSONObject.parseObject(form.getFormData()); + item.setScore(jsonObject.getString("revise")); + item.setReason(jsonObject.getString("reviseReason")); + + } + + }); + } + + + + Boolean i = iQualityEvaluationService.submitEvaluationForm(form); + + return Result.success(i); + } + + + @ApiOperation("查询评分表") + @GetMapping("getEvaluationForm") + public ResponseMessage> getEvaluationForm(FormVO form){ + + QualityEvaluation qualityEvaluation = new QualityEvaluation(); + qualityEvaluation.setLawId(form.getLawId()) ; + qualityEvaluation.setUserId(form.getUserId()) ; + qualityEvaluation.setEvaluationType(form.getEvaluationType()); + qualityEvaluation.setProcessNode(form.getProcessNode()); + + List evaluationForm = iQualityEvaluationService.getEvaluationForm(qualityEvaluation); + + return Result.success(evaluationForm); + } + + + @ApiOperation("查看评分历史") + @GetMapping("getHistory") + public ResponseMessage> getHistory(QualityEvaluation query){ + IPage history = iQualityEvaluationService.getHistory(query); + + return Result.success(history); + } + + + @ApiOperation("查询评价分数") + @GetMapping("getScore") + public ResponseMessage> getScore(String lawId){ + Map score = iQualityEvaluationService.getScore(lawId); + + return Result.success(score); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/dao/EvaluationIndexDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/dao/EvaluationIndexDao.java new file mode 100644 index 00000000..1f191e7e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/dao/EvaluationIndexDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.dao; + +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.EvaluationIndex; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zhaokaiyao + * @since 2021-12-03 + */ +public interface EvaluationIndexDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/dao/QualityEvaluationDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/dao/QualityEvaluationDao.java new file mode 100644 index 00000000..0059d8ca --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/dao/QualityEvaluationDao.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.dao; + +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.QualityEvaluation; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zhaokaiyao + * @since 2021-12-03 + */ +public interface QualityEvaluationDao extends BaseMapper { + + + + public IPage getHistory(IPage page,@Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + public List getEvaluationForm(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/EvaluationIndex.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/EvaluationIndex.java new file mode 100644 index 00000000..c48813fc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/EvaluationIndex.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author zhaokaiyao + * @since 2021-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="EvaluationIndex对象", description="") +public class EvaluationIndex extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableField("code") //评价指标编码 + private String code; + + @ApiModelProperty(value = "显示顺序") + @TableField("index_sort") + private Integer indexSort; + + @ApiModelProperty(value = "权重") + @TableField("weight") + private String weight; + + @ApiModelProperty(value = "指标类型(动态评价指标,质量评价指标") + @TableField("index_type") + private String indexType; + + @ApiModelProperty(value = "一级指标名称") + @TableField("one_index_title") + private String oneIndexTitle; + + @ApiModelProperty(value = "二级指标名称") + @TableField("two_index_title") + private String twoIndexTitle; + + @ApiModelProperty(value = "三级指标名称") + @TableField("three_index_title") + private String threeIndexTitle; + + @ApiModelProperty(value = "指标值类型") + @TableField("value_type") + private String valueType; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/FormVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/FormVO.java new file mode 100644 index 00000000..6466e49a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/FormVO.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import lombok.Data; + +import java.util.List; + +@Data +public class FormVO { + + @ApiModelProperty("提交的评分表") + private List tableData; + + @ApiModelProperty("企标法规id") + @JsonProperty("standId") //前后分离 前端字段 + private String lawId; + + @ApiModelProperty("提交的用户id") + private String userId; + + @ApiModelProperty("附加") + private String formData; + + @ApiModelProperty("评分类型") + private String evaluationType; + + @ApiModelProperty("流程节点名称") + private String processNode; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/QualityEvaluation.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/QualityEvaluation.java new file mode 100644 index 00000000..a6398a23 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/entity/QualityEvaluation.java @@ -0,0 +1,119 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

    + * + *

    + * + * @author zhaokaiyao + * @since 2021-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="QualityEvaluation对象", description="") +public class QualityEvaluation extends BaseEntity { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("law_id") + @ApiModelProperty(value = "企标id") + private String lawId; + + @TableField("user_id") + @ApiModelProperty(value = "用户id") + private String userId; + + @ApiModelProperty(value = "用户名称") + @TableField(exist = false) + private String userName; + + @TableField("is_need_revise") + @ApiModelProperty(value = "是否需要修订(废弃)") + private String isNeedRevise; + + @JsonProperty("code") //前后分离 前端字段 + @TableField("evaluation_index") + @ApiModelProperty(value = "评价指标") + private String evaluationIndex; + + @JsonProperty("indexType") //前后分离 前端字段 + @TableField("evaluation_type") + @ApiModelProperty(value = "评分类型") + private String evaluationType; + + @JsonProperty("commentReason") //前后分离 前端字段 + @TableField("reason") + @ApiModelProperty(value = "打分理由") + private String reason; + + @JsonProperty("targetScore") //前后分离 前端字段 + @TableField("score") + @ApiModelProperty(value = "打分") + private String score; + + @ApiModelProperty(value = "指标值类型") + @TableField(exist = false) + private String valueType; + + @TableField("process_node") + @ApiModelProperty(value = "流程节点") + private String processNode; + + @ApiModelProperty(value = "创建时间") + @TableField(fill = FieldFill.INSERT) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + + + @TableField(exist = false) + @ApiModelProperty(value = "指标名称") + private String indexTitle; + + @ApiModelProperty(value = "一级指标名称") + @TableField(exist = false) + private String oneIndexTitle; + + @ApiModelProperty(value = "二级指标名称") + @TableField(exist = false) + private String twoIndexTitle; + + @ApiModelProperty(value = "三级指标名称") + @TableField(exist = false) + private String threeIndexTitle; + + + @ApiModelProperty(value = "指标权重") + @TableField(exist = false) + private String weight; + + @TableField(exist = false) + private Integer page; + + @TableField(exist = false) + private Integer pageSize; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/IEvaluationIndexService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/IEvaluationIndexService.java new file mode 100644 index 00000000..89055851 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/IEvaluationIndexService.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.service; + +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.EvaluationIndex; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-03 + */ +public interface IEvaluationIndexService extends IService { + + + public List getEvaluationIndex(EvaluationIndex query); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/IQualityEvaluationService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/IQualityEvaluationService.java new file mode 100644 index 00000000..6eb17ced --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/IQualityEvaluationService.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.service; + +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.FormVO; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.QualityEvaluation; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 服务类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-03 + */ +public interface IQualityEvaluationService extends IService { + + public Boolean submitEvaluationForm(FormVO form); + + public IPage getHistory(QualityEvaluation query); + + + public List getEvaluationForm(QualityEvaluation query); + + + Map getScore(String lawId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/impl/EvaluationIndexServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/impl/EvaluationIndexServiceImpl.java new file mode 100644 index 00000000..e5c84a7c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/impl/EvaluationIndexServiceImpl.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.service.impl; + +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.EvaluationIndex; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.dao.EvaluationIndexDao; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.service.IEvaluationIndexService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-03 + */ +@Service +public class EvaluationIndexServiceImpl extends ServiceImpl implements IEvaluationIndexService { + + +// @Autowired +// private EvaluationIndexDao evaluationIndexDao; + + @Override + public List getEvaluationIndex(EvaluationIndex query) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + if (query.getIndexType()!=null){ + queryWrapper.eq("index_type",query.getIndexType()); + } + + queryWrapper.orderByAsc("index_sort"); + + return this.baseMapper.selectList(queryWrapper); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/impl/QualityEvaluationServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/impl/QualityEvaluationServiceImpl.java new file mode 100644 index 00000000..dc5e076a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarEnterpriseStandardEvaluation/service/impl/QualityEvaluationServiceImpl.java @@ -0,0 +1,250 @@ +package com.adc.da.slrs.sarEnterpriseStandardEvaluation.service.impl; + +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.EvaluationIndex; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.FormVO; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.entity.QualityEvaluation; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.dao.QualityEvaluationDao; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.service.IEvaluationIndexService; +import com.adc.da.slrs.sarEnterpriseStandardEvaluation.service.IQualityEvaluationService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections.IterableMap; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.PipedReader; +import java.util.*; +import java.util.stream.Collector; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-03 + */ +@Service +public class QualityEvaluationServiceImpl extends ServiceImpl implements IQualityEvaluationService { + + @Autowired + private QualityEvaluationDao qualityEvaluationDao; + + + + @Override + public Boolean submitEvaluationForm(FormVO form) { + +// +// queryWrapper.eq("user_id",form.get) +// .eq("evaluation_type","dynamic"); + +// Optional.ofNullable(form.getEvaluationType()) +// .ifPresent( item->{ +// if ("dynamic".equals(form.getEvaluationType())){ +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("law_id",form.getLawId()) //清除此用户在动态评分中已存在的评分 +// .eq("user_id",form.getUserId()) +// .eq("evaluation_type","dynamic"); +// this.remove(queryWrapper); +// } +// }); + + + QueryWrapper qw = new QueryWrapper(); + qw.eq("law_id",form.getLawId()); + qw.eq("evaluation_type","dynamic"); + List list = this.baseMapper.selectList(qw); + + List tableData = form.getTableData(); + + if(!list.isEmpty()){ + List updSetList = tableData.stream() + .map(upObj -> list.stream() + .filter(stateQueryObj -> upObj.getEvaluationIndex().equals(stateQueryObj.getEvaluationIndex())) + .findFirst() + .map(stateQueryObj -> { + // 集合交集 stream 重新赋值更新字段 + upObj.setId(stateQueryObj.getId()); + upObj.setCreateTime(new Date()); + upObj.setModifyTime(new Date()); + if ("number".equals(upObj.getValueType()) ){ + upObj.setScore(String.valueOf (Double.parseDouble(upObj.getScore()) * 2) ); + } + if(StringUtils.isNotBlank(upObj.getReason())){ + upObj.setReason(upObj.getReason()); + }else { + upObj.setReason("-"); + } + return upObj; + }).orElse(null)) + .collect(Collectors.toList()); + + return this.updateBatchById(updSetList); + }else { + tableData.forEach(item->{ + + item.setCreateTime(new Date()); + item.setModifyTime(new Date()); + item.setId( UUIDUtils.randomUUID20()); + if ("number".equals(item.getValueType()) ){ + item.setScore(String.valueOf (Double.parseDouble(item.getScore()) * 2) ); + + } + }); + return this.saveBatch(tableData); + } + } + + @Override + public IPage getHistory(QualityEvaluation query) { + QueryWrapper queryWrapper = new QueryWrapper<>(); +// Page page = new Page<>(query.getPage(), query.getPageSize()); + //没有page和pageSize无法分页 + Page page = new Page<>(1, 100000); + + + if (query.getUserId()!=null){ //指定用户 + queryWrapper.eq("user_id", query.getUserId()) + .orderBy(true,true, "crate_time","modify_time"); + } + + if (query.getEvaluationType()!=null){ //指定评价指标 + queryWrapper.eq("evaluation_type",query.getEvaluationType()); + } + + if (query.getLawId()!=null){ //指定评价指标 + queryWrapper.eq("law_id",query.getLawId()); + } + queryWrapper.eq("`index`.value_type","number"); + //sql计算每个用户的评分 + return qualityEvaluationDao.getHistory(page,queryWrapper); + + + } + + + + @Override + public List getEvaluationForm(QualityEvaluation query) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + + + if (query.getLawId()!=null){ + queryWrapper.eq("law_id",query.getLawId()); //指定企标id + } + + if (query.getUserId()!=null){ //指定用户 + queryWrapper.eq("quality_evaluation.user_id", query.getUserId()); + + } + + if (query.getEvaluationType()!=null){ //指定评价指标 + queryWrapper.eq("evaluation_type",query.getEvaluationType()); + } + + if (query.getProcessNode()!=null && !"".equals(query.getProcessNode()) ){ + queryWrapper.eq("process_node",query.getProcessNode()); + } + + return qualityEvaluationDao.getEvaluationForm(queryWrapper); + } + + + @Autowired + private IEvaluationIndexService iEvaluationIndexService; + + @Override + public Map getScore(String lawId) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("law_id",lawId) + .eq("`index`.value_type","number"); + + Page page = new Page<>(1, 1000); + /** + * 查询得到 每个流程节点的质量评分 和 动态评分值 (已经计算了打分权重,之后汇总计算流程节点权重) + */ + List list = qualityEvaluationDao.getHistory(page, queryWrapper).getRecords(); +// return list.stream() +// .collect(Collectors.groupingBy(QualityEvaluation::getEvaluationType, +// Collectors.groupingBy(QualityEvaluation::getEvaluationIndex, +// Collectors.averagingDouble(item -> Double.valueOf(item.getScore())) +// ) +// )); + + + HashMap result = new HashMap<>(); + result.put("dynamic",0.0); + result.put("quality",0.0); + + + /** + * 同一节点为多人评价时,需要取多人评价的平均分用以计算最终得分。 + * 各环节评分权重分别设置为30%、40%、30%, + * 即:标准编写质量最终得分=征求意见会签人评价平均分*30%+技术委员会专家评价平均分*40%+标准法规工程师 "和" 标准法规部主管领导评价平均分*30%(标准法规工程师 * 15% + 标准法规部主管领导评价平均分 *15% ) + */ + result.putAll(list.stream() + .collect(Collectors.groupingBy(QualityEvaluation::getEvaluationType, + Collectors.summingDouble(item ->{ + + Double score; + String value; + if (item.getProcessNode()==null){ + value=""; + }else { + value=item.getProcessNode(); + } + switch (value){ + case "征求意见": + score=Double.valueOf(item.getScore()) * 0.3; + break; + case "技术委员会评审、评审意见修改": + score=Double.valueOf(item.getScore()) * 0.4; + break; + case "重新技术委员会评审、评审意见修改": + score=Double.valueOf(item.getScore()) * 0.4; + break; + case "标准化复审": + score=Double.valueOf(item.getScore()) * 0.15; + break; + case "标准法规部高级经理审核": + score=Double.valueOf(item.getScore()) * 0.15; + break; + + default: score=Double.valueOf(item.getScore()); + } + + return score; + } )))); + return result; + + } + + +// private Double getScoreSingle(QualityEvaluation item){ +// +// QueryWrapper indexQuery = new QueryWrapper<>(); +// indexQuery.select("code","weight") +// .eq("value_type","number"); +// +// List indexList = iEvaluationIndexService.list(indexQuery); +// +// Map weightMap = indexList.stream() +// .collect(Collectors.toMap(EvaluationIndex::getCode, obj -> Float.valueOf(obj.getWeight()))); +// +// +// +// String score = item.getScore(); +// return (score == null && !weightMap.containsKey(item.getEvaluationIndex()) ) ? 0.0 : Float.valueOf(score) * weightMap.get(item.getEvaluationIndex()); +// } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/controller/SarGroupMenuController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/controller/SarGroupMenuController.java new file mode 100644 index 00000000..ad7f490b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/controller/SarGroupMenuController.java @@ -0,0 +1,71 @@ +package com.adc.da.slrs.sarGroupMenu.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarGroupMenu.page.SarGroupMenuEOPage; +import com.adc.da.slrs.sarGroupMenu.service.ISarGroupMenuService; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarGroupMenu.entity.SarGroupMenu; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** +*

    + * 树形结构 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库--工作组") +@RequestMapping("/${restPath}/lawss/sarGroupMenu") +public class SarGroupMenuController extends BaseController { + + @Autowired + private ISarGroupMenuService sarGroupMenuEOService; + + /** + * 根据分标委id查询工作组 + * @author: hehaiyue + * @description: TODO + * @date: 2020/11/23 11:25 + * @return + */ + @ApiOperation(value = "|SarGroupMenuEO|查询工作组") + @GetMapping("/queryGroup") + public ResponseMessage>> queryGroup(String fbwId) throws Exception{ + SarGroupMenuEOPage page = new SarGroupMenuEOPage(); + page.setVlagFlag("0"); + page.setMenuLevel("3"); + page.setMenuType("GROUP"); + List groupList = new ArrayList(); + if(StringUtils.isNotBlank(fbwId)){ + page.setPid(fbwId); + groupList = sarGroupMenuEOService.queryByList(page); + } + else{ + groupList = sarGroupMenuEOService.queryByList(page); + } + List> list = new ArrayList>(); + for(SarGroupMenu sarGroupMenuEO : groupList){ + Map map = new HashMap(); + map.put("menuName",sarGroupMenuEO.getMenuName()); + map.put("id",sarGroupMenuEO.getId()); + map.put("pid",sarGroupMenuEO.getPid()); + list.add(map); + } + return Result.success("查询成功",list); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/dao/SarGroupMenuDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/dao/SarGroupMenuDao.java new file mode 100644 index 00000000..e2065790 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/dao/SarGroupMenuDao.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.sarGroupMenu.dao; + +import com.adc.da.slrs.sarGroupMenu.entity.SarGroupMenu; +import com.adc.da.slrs.sarGroupMenu.page.SarGroupMenuEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 树形结构 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface SarGroupMenuDao extends BaseMapper { + + List queryByList(SarGroupMenuEOPage page); + + String getNamesByIds(@Param("list") String[] list); + + String getIdsByNames(@Param("list") String[] list); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/entity/SarGroupMenu.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/entity/SarGroupMenu.java new file mode 100644 index 00000000..61dc56e7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/entity/SarGroupMenu.java @@ -0,0 +1,91 @@ +package com.adc.da.slrs.sarGroupMenu.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.adc.da.utils.treetool.annotation.*; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * 树形结构 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarGroupMenu对象", description="树形结构") +public class SarGroupMenu extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId("ID") + @TreeNodeId + private String id; + + @ApiModelProperty(value = "PID") + @TableField("PID") + @TreeNodeParentId + private String pid; + + @ApiModelProperty(value = "节点名称") + @TableField("MENU_NAME") + @TreeNodeName + private String menuName; + + @ApiModelProperty(value = "节点类型") + @TableField("MENU_TYPE") + private String menuType; + + @ApiModelProperty(value = "节点层级") + @TableField("MENU_LEVEL") + @TreeNodeLevel + private String menuLevel; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATE_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @TableField("CREATE_USERID") + private String createUserid; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @TableField("MODIFY_USERID") + private String modifyUserid; + + @ApiModelProperty(value = "判断标识") + @TableField("VLAG_FLAG") + private String vlagFlag; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_NO") + private String standNo; + + @TableField(exist = false) + private String detailId; + + @TableField(exist = false) + @TreeNodeOrder + private Integer orderNum; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/page/SarGroupMenuEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/page/SarGroupMenuEOPage.java new file mode 100644 index 00000000..02553c59 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/page/SarGroupMenuEOPage.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.sarGroupMenu.page; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:SAR_GROUP_MENU SarGroupMenuEOPage
    + * 作者:code generator
    + * 日期: 2020-11-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarGroupMenuEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String pid; + private String pidOperator = "="; + private String menuName; + private String menuNameOperator = "="; + private String menuType; + private String menuTypeOperator = "="; + private String menuLevel; + private String menuLevelOperator = "="; + private String createTime; + private String createTime1; + private String createTime2; + private String createTimeOperator = "="; + private String createUserid; + private String createUseridOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String modifyUserid; + private String modifyUseridOperator = "="; + private String vlagFlag; + private String vlagFlagOperator = "="; + private String standNo; + private String standNoOperator = "="; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/service/ISarGroupMenuService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/service/ISarGroupMenuService.java new file mode 100644 index 00000000..65c6634f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/service/ISarGroupMenuService.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarGroupMenu.service; + +import com.adc.da.slrs.sarGroupMenu.entity.SarGroupMenu; +import com.adc.da.slrs.sarGroupMenu.page.SarGroupMenuEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 树形结构 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarGroupMenuService extends IService { + + List queryByList(SarGroupMenuEOPage page); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/service/impl/SarGroupMenuServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/service/impl/SarGroupMenuServiceImpl.java new file mode 100644 index 00000000..bda66603 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarGroupMenu/service/impl/SarGroupMenuServiceImpl.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarGroupMenu.service.impl; + +import com.adc.da.slrs.sarGroupMenu.entity.SarGroupMenu; +import com.adc.da.slrs.sarGroupMenu.dao.SarGroupMenuDao; +import com.adc.da.slrs.sarGroupMenu.page.SarGroupMenuEOPage; +import com.adc.da.slrs.sarGroupMenu.service.ISarGroupMenuService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 树形结构 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class SarGroupMenuServiceImpl extends ServiceImpl implements ISarGroupMenuService { + + @Autowired + private SarGroupMenuDao dao; + + @Override + public List queryByList(SarGroupMenuEOPage page){ + return dao.queryByList(page); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/controller/TsInstitutionController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/controller/TsInstitutionController.java new file mode 100644 index 00000000..f6ad667d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/controller/TsInstitutionController.java @@ -0,0 +1,143 @@ +package com.adc.da.slrs.sarInstitution.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarInstitution.entity.TreeVo; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.entity.TsUserVO; +import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; +import com.adc.da.slrs.sarUser.dao.TsUserDao; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.List; +import java.util.Map; + + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-22 +*/ +@RestController +@Api(tags = "|机构管理|") +@RequestMapping("/api/SarInstitution/institution") +public class TsInstitutionController extends BaseController { + @Autowired + private ITsInstitutionService tsInstitutionService; + @Autowired + private ITsUserService tsUserService; + @Autowired + private TsUserDao tsUserDao; + + /** + * 查询所有机构 + * @return ResponseMessage> + */ + @ApiOperation("查询所有机构") + @GetMapping + public ResponseMessage> getInstitution(){ + List institutions=tsInstitutionService.getInstitution(); + return Result.success(institutions); + } + + + /** + * 查询所有机构和人员 + * @return ResponseMessage> + */ + @ApiOperation("查询所有机构和人员或根据名称查询") + @GetMapping("/institutionAndUser") + public ResponseMessage> getInstitutionAndUser(String userName){ + List institutions=tsInstitutionService.getInstitutionAndUser(userName); + return Result.success(institutions); + } + + /** + * 查询机构人员 + * @return ResponseMessage> + */ + @ApiOperation("查询机构的人员") + @PostMapping("/user") + public ResponseMessage> getUserByInstitutionId(TsUser tsUser){ +// List tsUsers=tsUserService.getUserByInstitutionId(institutionId); + IPage tsUserIPage = tsUserService.getUserByInstitutionId(tsUser); + return Result.success(tsUserIPage); + } + + /** + * 查询机构下所有的机构人员 + * @return ResponseMessage> + */ + @ApiOperation("查询机构的人员") + @PostMapping("/userUnderInstitution") + public ResponseMessage> userUnderInstitution(TsUser tsUser){ + + return Result.success(tsUserService.getAllUsers(tsUser)); + } + + @ApiOperation("导入机构数据") + @PostMapping("/import") + public ResponseMessage importInstitution() throws Exception { + tsInstitutionService.parseInstitution(); + return Result.success(); + } + + @ApiOperation("根据部门ID获取部门下所有用户") + @GetMapping("/getInstitutionIdToDept") + public List getInstitutionIdToDept(String institutionIds,String userName){ + return tsInstitutionService.getInstitutionIdToDept(institutionIds,userName); + } + + @ApiOperation("获得下一级的部门和人员") + @GetMapping("/getNext") + public List getNext(String institutionId,String userName){ + return tsInstitutionService.getNext(institutionId,userName); + } + + @ApiOperation("topNum 获取人员上几级部门") + @GetMapping("/selectNowInst") + public List selectNowInst(String institutionId,String userName,String topNum){ + return tsInstitutionService.selectNowInst(institutionId,userName,topNum); + } + + @GetMapping("/getNextTwo") + public List getNextTwo(String userName){ + return tsInstitutionService.getNextTwo(userName); + } + + @ApiOperation("获得下一级的部门和人员") + @GetMapping("/getNextById") + public List getNextById(String ids,Integer topNum){ + return tsInstitutionService.getNextById(ids,topNum); + } + + @ApiOperation("获得第一级部门目录") + @GetMapping("/getFirstInstitution") + public List getFirstInstitution(){ + return tsInstitutionService.getFirst(); + } + + + @ApiOperation("通过部门机构名称查询部门树形结构 废弃使用") + @GetMapping("/findInstitution") + public List findInstitution(String institutionName){ + //TODO 调用业务接口 + tsInstitutionService.findInstitutionTreeByName(institutionName); + return null; + } + + public static void main(String[] args) { +// System.out.println(json); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/dao/TsInstitutionDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/dao/TsInstitutionDao.java new file mode 100644 index 00000000..2bbd36c0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/dao/TsInstitutionDao.java @@ -0,0 +1,80 @@ +package com.adc.da.slrs.sarInstitution.dao; + +import com.adc.da.slrs.sarInstitution.entity.InstitutionAndUser; +import com.adc.da.slrs.sarInstitution.entity.TreeVo; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.entity.TsUserVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@Repository +public interface TsInstitutionDao extends BaseMapper { + /** + * 根据部门id查询此部门的子一级部门 + * @return + */ + List selectNextInstitution(String institutionId); + + List selectPreviousInstitution(@Param("userName") String name); + + List selectInstitution(@Param("pId") List pId); + + /** + * 根据部门id查询此部门的子一级人员 + * @return + */ + List selectNextUser(@Param("institutionId") String institutionId,@Param("userName") String userName); + + List selectNextUsers(@Param("institutionIds") List institutionIds,@Param("userName") String userName); + + List selectNowInst(@Param("institutionId") String institutionId,@Param("topNum") String topNum); + + List selectNextUserByIds(@Param("ids") List ids); + + + List selectTreeByIds(@Param("rootIds") List rootIds); + + /** + * 查询最高级机构及其人员 + * @return List + */ + List selectRootAndUser(String userName); + + /** + * 根据父节点查询机构及其人员 + * @param parentId:父节点Id + * @return List + */ + List selectAndUserByParent(String parentId); + + /** + * 批量插入机构 + * @param tsInstitutions:机构列表 + */ + void batchInsert(List tsInstitutions); + + /** + * 查询根机构 + * @return List + */ + @Select("select * from ts_institution where parent_id not in (select id from ts_institution) order by name") + List selectRoot(); + + @Select("select * from ts_institution order by rand() limit 1") + TsInstitution selectRand(); + + int clearData(); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/InstitutionAndUser.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/InstitutionAndUser.java new file mode 100644 index 00000000..08607c1f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/InstitutionAndUser.java @@ -0,0 +1,13 @@ +package com.adc.da.slrs.sarInstitution.entity; + +import com.adc.da.slrs.sarUser.entity.TsUser; +import lombok.Data; + +import java.util.List; + +@Data +public class InstitutionAndUser { + private TsInstitution institution; + private List users; + private List children; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/SyncInstitution.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/SyncInstitution.java new file mode 100644 index 00000000..13006f9e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/SyncInstitution.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.sarInstitution.entity; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class SyncInstitution { + private String orgNumber; + private String orgName; + private String departmentName; + private String orgStatus; + private String orgShortName; + private String parentOrgNumber; + private String orgFullPath; + private String order; + private String modifyTimestamp; + + public static List syncToInstitution(List syncInstitutions){ + List tsInstitutions=new ArrayList<>(); + for(SyncInstitution syncInstitution:syncInstitutions){ + tsInstitutions.add(new TsInstitution(syncInstitution.getOrgNumber(),syncInstitution.getParentOrgNumber(),syncInstitution.getOrgName())); + } + return tsInstitutions; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TreeVo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TreeVo.java new file mode 100644 index 00000000..37e2c2dd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TreeVo.java @@ -0,0 +1,149 @@ +package com.adc.da.slrs.sarInstitution.entity; + +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.sql.Timestamp; +import java.util.List; + +/** + * @Author: qk + * @Date: 2022/5/20 0020 10:54 + * @Version 1.0 + */ +@Data +public class TreeVo { + + public interface disable{ + } + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "上级机构") + @TableField("parent_id") + private String parentId; + + @ApiModelProperty(value = "机构层级") + @TableField("level") + private Integer level; + + @TableField(exist = false) + @ApiModelProperty("是否是机构") + private Boolean disabled; + + @TableField("has_child") + @ApiModelProperty("是否有子节点(1有,0没有)") + private String hasChild; + + @ApiModelProperty(value = "帐户") + @TableField("ACCOUNT") + private String account; + + @ApiModelProperty(value = "密码") + @TableField("PASSWORD") + private String password; + + @ApiModelProperty(value = "用户姓名") + private String name; + + @ApiModelProperty(value = "用户性别(1为男,2为女)") + @TableField("SEX") + private String sex; + + @ApiModelProperty(value = "用户来源") + @TableField("USER_SOURCE") + private String userSource; + + @ApiModelProperty(value = "用户手机号") + @TableField("PHONE") + private String phone; + + @ApiModelProperty(value = "用户状态") + @TableField("STATE") + private String state; + + @ApiModelProperty(value = "用户邮箱") + @TableField("EMAIL") + private String email; + + @ApiModelProperty(value = "所属部门名称") + @TableField("INSTITUTION_NAME") + private String institutionName; + + @ApiModelProperty(value = "所属部门ID") + @TableField("INSTITUTION_ID") + private String institutionId; + + @ApiModelProperty(value = "岗位名") + @TableField("POSITION_NAME") + private String positionName; + + @ApiModelProperty(value = "岗位ID") + @TableField("POSITION_ID") + private String positionId; + + @ApiModelProperty(value = "工号") + @TableField("WORK_NUM") + private String workNum; + + @ApiModelProperty(value = "备注") + @TableField("EXT_INFO") + private String extInfo; + + @TableField("OPER_USER") + private String operUser; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp modifyTime; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "是否禁用(0为未禁用,1为已禁用)") + @NotNull(message = "disableFlag不能为空",groups = {TsUserVO.disable.class}) + @TableField("DISABLE_FLAG") + private String disableFlag; + + @ApiModelProperty(value = "是否锁定") + @TableField("UNLOCK_FLAG") + private String unlockFlag; + + @ApiModelProperty(value = "用户类型") + @TableField("USER_TYPE") + private String userType; + + @ApiModelProperty(value = "对接单点登录用户ID") + @TableField("SSO_ID") + private String ssoId; + + @ApiModelProperty(value = "岗位") + @TableField(exist = false) + private List positions; + + @ApiModelProperty(value = "单位") + @TableField(exist = false) + private String unit; + + @ApiModelProperty(value = "单位Id") + @TableField(exist = false) + private String unitId; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsInstitution.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsInstitution.java new file mode 100644 index 00000000..c47640b6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsInstitution.java @@ -0,0 +1,91 @@ +package com.adc.da.slrs.sarInstitution.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TsInstitution对象", description="") +public class TsInstitution extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("id") + private String id; + + @ApiModelProperty(value = "上级机构") + private String parentId; + + private String parentIds; + + @ApiModelProperty(value = "机构层级") + private Integer level; + + @ApiModelProperty(value = "机构名") + private String name; + + @TableField(exist = false) + @ApiModelProperty(value = "子机构") + private List children; + + @TableField(exist = false) + private List topChildren; + + @JsonIgnore + @TableField(exist = false) + @ApiModelProperty(value = "人员") + private List users; + + @TableField(exist = false) + @ApiModelProperty("是否是机构") + private Boolean disabled; + + @TableField + @ApiModelProperty("是否有子节点(1有,0没有)") + private String hasChild; + + + @TableField(exist = false) + @ApiModelProperty("用户") + private TsUserVO tsUserVO; + + + public TsInstitution() { + } + + public TsInstitution(String id, String parentId, String name) { + this.id = id; + this.parentId = parentId; + this.name = name; + } + +// public void addChildren(TsInstitution node){ +// if (this.children==null){ +// this.children=Arrays.asList(node); +// }else { +// this.children.add(node); +// } +// } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsUserVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsUserVO.java new file mode 100644 index 00000000..6a0c536c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/entity/TsUserVO.java @@ -0,0 +1,140 @@ +package com.adc.da.slrs.sarInstitution.entity; + +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.sql.Timestamp; +import java.util.List; + +@Data +public class TsUserVO { + public interface disable{ + } + + + @ApiModelProperty(value = "主键Id") + @NotNull(message = "userId不能为空",groups = {disable.class}) + @TableId(value = "USID") + private String id; + + @ApiModelProperty(value = "帐户") + @TableField("ACCOUNT") + private String account; + + @ApiModelProperty(value = "密码") + @TableField("PASSWORD") + private String password; + + @ApiModelProperty(value = "用户姓名") + @TableField("UNAME") + private String name; + + @ApiModelProperty(value = "用户性别(1为男,2为女)") + @TableField("SEX") + private String sex; + + @ApiModelProperty(value = "用户来源") + @TableField("USER_SOURCE") + private String userSource; + + @ApiModelProperty(value = "用户手机号") + @TableField("PHONE") + private String phone; + + @ApiModelProperty(value = "用户状态") + @TableField("STATE") + private String state; + + @ApiModelProperty(value = "用户邮箱") + @TableField("EMAIL") + private String email; + + @ApiModelProperty(value = "所属部门名称") + @TableField("INSTITUTION_NAME") + private String institutionName; + + @ApiModelProperty(value = "所属部门ID") + @TableField("INSTITUTION_ID") + private String institutionId; + + @ApiModelProperty(value = "岗位名") + @TableField("POSITION_NAME") + private String positionName; + + @ApiModelProperty(value = "岗位ID") + @TableField("POSITION_ID") + private String positionId; + + @ApiModelProperty(value = "工号") + @TableField("WORK_NUM") + private String workNum; + + @ApiModelProperty(value = "备注") + @TableField("EXT_INFO") + private String extInfo; + + @TableField("OPER_USER") + private String operUser; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp modifyTime; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "是否禁用(0为未禁用,1为已禁用)") + @NotNull(message = "disableFlag不能为空",groups = {disable.class}) + @TableField("DISABLE_FLAG") + private String disableFlag; + + @ApiModelProperty(value = "是否锁定") + @TableField("UNLOCK_FLAG") + private String unlockFlag; + + @ApiModelProperty(value = "用户类型") + @TableField("USER_TYPE") + private String userType; + + @ApiModelProperty(value = "对接单点登录用户ID") + @TableField("SSO_ID") + private String ssoId; + + @ApiModelProperty(value = "岗位") + @TableField(exist = false) + private List positions; + + @ApiModelProperty(value = "单位") + @TableField(exist = false) + private String unit; + + @ApiModelProperty(value = "单位Id") + @TableField(exist = false) + private String unitId; + + @ApiModelProperty(value = "上级单位 根据规则参数 返回上几级单位") + @TableField(exist = false) + private String topUnit; + + @ApiModelProperty(value = "上级单位Id 根据规则参数 返回上几级单位") + @TableField(exist = false) + private String topUnitId; + + @TableField(exist = false) + private List children; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/ITsInstitutionService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/ITsInstitutionService.java new file mode 100644 index 00000000..5c4f991e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/ITsInstitutionService.java @@ -0,0 +1,65 @@ +package com.adc.da.slrs.sarInstitution.service; + +import com.adc.da.slrs.sarInstitution.entity.TreeVo; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.entity.TsUserVO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zxy + * @since 2021-06-22 + */ +public interface ITsInstitutionService extends IService { + + /** + * 查询所有机构 + */ + List getInstitution(); + + List getInstitutionAndUser(String userName); + + /** + * 批量插入机构 + * @param tsInstitutions:机构列表 + */ + void batchInsert(List tsInstitutions); + + public void parseInstitution() throws Exception; + + /** + * 通过部门id获取他的子一级部门和人员 + * @param institutionId + * @return + */ + public List getNext(String institutionId,String userName); + + public List selectNowInst(String institutionId,String userName,String topNum); + + public List getNextTwo(String userName); + + public List getInstitutionIdToDept(String institutionIds,String userName); + + public List getNextById(String ids,Integer topNum); + + /** + * 获得第一级的部门 + * @return + */ + public List getFirst(); + + + /** + * 根据机构部门名称查询机构树 + * @param institutionName + * @return + */ + public List findInstitutionTreeByName(String institutionName); + + int clearData(); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/impl/TsInstitutionServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/impl/TsInstitutionServiceImpl.java new file mode 100644 index 00000000..1e660d8f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/service/impl/TsInstitutionServiceImpl.java @@ -0,0 +1,351 @@ +package com.adc.da.slrs.sarInstitution.service.impl; + + +import com.adc.da.slrs.sarInstitution.dao.TsInstitutionDao; +import com.adc.da.slrs.sarInstitution.entity.SyncInstitution; +import com.adc.da.slrs.sarInstitution.entity.TreeVo; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.entity.TsUserVO; +import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; +import com.adc.da.slrs.sarInstitution.util.TreeUtil; +import com.adc.da.sync.service.SyncUserService; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.swagger.models.auth.In; +import org.apache.commons.lang3.StringUtils; +import org.bouncycastle.pqc.math.linearalgebra.IntUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@Service +public class TsInstitutionServiceImpl extends ServiceImpl implements ITsInstitutionService { + @Autowired + private TsInstitutionDao tsInstitutionDao; + @Autowired + private SyncUserService syncUserService; + + /** + * 查询所有机构 + */ + @Override + public List getInstitution() { + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.orderByAsc("num"); + List institutionList = this.list(wrapper);//查询所有的的数据 + + //查询第一层机构 + List root=tsInstitutionDao.selectRoot(); + + TreeUtil treeUtil = new TreeUtil(); + List institutionTree = treeUtil.treeAsList(institutionList, root); + System.out.println("dsa"); + return institutionTree; + } + + + + + + /** + * 递归获取子机构 + * @param tsInstitution:父机构 + * @return List + */ + private List recursionGetInstitution(TsInstitution tsInstitution){ + if(tsInstitution.getHasChild()==null||(!tsInstitution.getHasChild().equals("1"))){ + return null; + } + List institutionObject=new ArrayList<>(); + QueryWrapper institutionQueryWrapper=new QueryWrapper<>(); + institutionQueryWrapper.eq("parent_id",tsInstitution.getId()); + List tsInstitutions=tsInstitutionDao.selectList(institutionQueryWrapper); + for(TsInstitution tsInstitutionNode:tsInstitutions){ + tsInstitutionNode.setChildren(recursionGetInstitution(tsInstitutionNode)); + institutionObject.add(tsInstitutionNode); + } + return institutionObject; + } + + /* *//** + * 查询所有机构 + *//* + @Override + public List getInstitution() { + //查询第一层机构 + List institutionRoot=tsInstitutionDao.selectRoot(); + for(TsInstitution tsInstitution:institutionRoot){ + tsInstitution.setChildren(recursionGetInstitution(tsInstitution)); + } + return institutionRoot; + } + + *//** + * 递归获取子机构 + * @param tsInstitution:父机构 + * @return List + *//* + private List recursionGetInstitution(TsInstitution tsInstitution){ + if(tsInstitution.getHasChild()==null||(!tsInstitution.getHasChild().equals("1"))){ + return null; + } + List institutionObject=new ArrayList<>(); + QueryWrapper institutionQueryWrapper=new QueryWrapper<>(); + institutionQueryWrapper.eq("parent_id",tsInstitution.getId()); + List tsInstitutions=tsInstitutionDao.selectList(institutionQueryWrapper); + for(TsInstitution tsInstitutionNode:tsInstitutions){ + tsInstitutionNode.setChildren(recursionGetInstitution(tsInstitutionNode)); + institutionObject.add(tsInstitutionNode); + } + return institutionObject; + }*/ + + /** + * 查询时带有userName时以userName为条件查询 + * 没有时查询所有结果 + * 根据查询下一级 + */ + @Override + public List getInstitutionAndUser(String userName) { + List tsInstitutions = new ArrayList<>(); + + //当条件为null时避免查询全部,直接返回第一级 + if (userName==null||userName==""){ + tsInstitutions=this.getFirst(); + }else { + //查询第一层机构 + tsInstitutions=tsInstitutionDao.selectRootAndUser(userName); + + //把查到的数据结构修改,把用户放 + for(TsInstitution tsInstitution:tsInstitutions){ + tsInstitution.setDisabled(true); +// tsInstitution.setChildren( recursionGetInstitutionAndUser(tsInstitution) ); + for(TsUserVO user:tsInstitution.getUsers()){ + if(tsInstitution.getChildren()==null){ + tsInstitution.setChildren(new ArrayList<>()); + } +// tsInstitution.getChildren().add(user); + } + } + } + + return tsInstitutions; + } + + /** + * 批量插入机构 + * @param tsInstitutions:机构列表 + */ + @Override + public void batchInsert(List tsInstitutions) { + if(tsInstitutions!=null&&tsInstitutions.size()>0){ + tsInstitutionDao.batchInsert(tsInstitutions); + } + } + + + /** + * 递归获取子机构 + * @param tsInstitution:父机构 + * @return List + */ + private List recursionGetInstitutionAndUser(TsInstitution tsInstitution){ + System.out.println(1); + System.out.println(tsInstitution); + if(tsInstitution.getHasChild()==null||(!tsInstitution.getHasChild().equals("1"))){ + return null; + } + System.out.println(2); + System.out.println(tsInstitution); + List institutionObject=new ArrayList<>(); + //通过以此部门id作为父id查询它的子部门 + List tsInstitutions=tsInstitutionDao.selectAndUserByParent(tsInstitution.getId()); + + for(TsInstitution tsInstitutionNode:tsInstitutions){ + tsInstitutionNode.setDisabled(true); + tsInstitutionNode.setChildren(recursionGetInstitutionAndUser(tsInstitutionNode)); + institutionObject.add(tsInstitutionNode); + for(TsUserVO user:tsInstitutionNode.getUsers()){ + if(tsInstitutionNode.getChildren()==null){ + tsInstitutionNode.setChildren(new ArrayList<>()); + } + + tsInstitutionNode.getChildren().add(user); + } + } + return institutionObject; + } + + public void parseInstitution() throws Exception { +// List jsons=syncUserService.syncFotonOrg(); +// for(String json:jsons){ +// JSONObject jsonObject= JSON.parseObject(json); +// JSONArray results=jsonObject.getJSONArray("results"); +// List syncInstitutions=results.toJavaList(SyncInstitution.class); +// List tsInstitutions=SyncInstitution.syncToInstitution(syncInstitutions); +// batchInsert(tsInstitutions); +// } + String json="{\"status\":\"true\",\"message\":\"成功\",\"cookie\":null,\"returnCode\":\"0\",\"results\":[{\"orgStatus\":\"1\",\"departmentName\":\"信息技术部\",\"orgType\":\"E1\",\"orgName\":\"信息技术部\",\"parentOrgNumber\":\"31000000\",\"orgShortName\":\"信息技术部\",\"orgNumber\":\"30002337\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225061931Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"研发工程系统部\",\"orgType\":\"E1\",\"orgName\":\"研发工程系统部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"研发工程系统部\",\"orgNumber\":\"40009091\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/研发工程系统部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062001Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"生产与质量系统部\",\"orgType\":\"E1\",\"orgName\":\"生产与质量系统部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"生产与质量系统部\",\"orgNumber\":\"40009092\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/生产与质量系统部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062001Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"营销与售后系统部\",\"orgType\":\"E1\",\"orgName\":\"营销与售后系统部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"营销与售后系统部\",\"orgNumber\":\"40009093\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/营销与售后系统部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062001Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"财务系统部\",\"orgType\":\"E1\",\"orgName\":\"财务系统部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"财务系统部\",\"orgNumber\":\"40009094\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/财务系统部\",\"order\":\"null\",\"modifyTimestamp\":\"20200218075121Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"协作系统部\",\"orgType\":\"E1\",\"orgName\":\"协作系统部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"协作系统部\",\"orgNumber\":\"40009095\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/协作系统部\",\"order\":\"null\",\"modifyTimestamp\":\"20200219011044Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"大数据部\",\"orgType\":\"E1\",\"orgName\":\"大数据部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"大数据部\",\"orgNumber\":\"40009096\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/大数据部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062001Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"福田智科\",\"orgType\":\"E1\",\"orgName\":\"福田智科\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"福田智科\",\"orgNumber\":\"40009385\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/福田智科\",\"order\":\"null\",\"modifyTimestamp\":\"20200218075123Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"系统集成与测试部\",\"orgType\":\"E1\",\"orgName\":\"系统集成与测试部\",\"parentOrgNumber\":\"40009385\",\"orgShortName\":\"系统集成与测试部\",\"orgNumber\":\"40009386\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/福田智科/系统集成与测试部\",\"order\":\"null\",\"modifyTimestamp\":\"20200218075122Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"应用开发部\",\"orgType\":\"E1\",\"orgName\":\"应用开发部\",\"parentOrgNumber\":\"40009385\",\"orgShortName\":\"应用开发部\",\"orgNumber\":\"40009387\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/福田智科/应用开发部\",\"order\":\"null\",\"modifyTimestamp\":\"20200218075122Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"营销部\",\"orgType\":\"E1\",\"orgName\":\"营销部\",\"parentOrgNumber\":\"40009385\",\"orgShortName\":\"营销部\",\"orgNumber\":\"40009388\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/福田智科/营销部\",\"order\":\"null\",\"modifyTimestamp\":\"20200218075122Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"服务部\",\"orgType\":\"E1\",\"orgName\":\"服务部\",\"parentOrgNumber\":\"40009385\",\"orgShortName\":\"服务部\",\"orgNumber\":\"40009389\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/福田智科/服务部\",\"order\":\"null\",\"modifyTimestamp\":\"20200218075122Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"综合管理部\",\"orgType\":\"E1\",\"orgName\":\"综合管理部\",\"parentOrgNumber\":\"40009385\",\"orgShortName\":\"综合管理部\",\"orgNumber\":\"40009390\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/福田智科/综合管理部\",\"order\":\"null\",\"modifyTimestamp\":\"20200218075122Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"车联网平台开发部\",\"orgType\":\"E1\",\"orgName\":\"车联网平台开发部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"车联网平台开发部\",\"orgNumber\":\"40009391\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/车联网平台开发部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062001Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"规划与管理部\",\"orgType\":\"E1\",\"orgName\":\"规划与管理部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"规划与管理部\",\"orgNumber\":\"40009425\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/规划与管理部\",\"order\":\"null\",\"modifyTimestamp\":\"20200211123206Z\"},{\"orgStatus\":\"0\",\"departmentName\":\"车联网平台开发部\",\"orgType\":\"E1\",\"orgName\":\"车联网平台开发部\",\"parentOrgNumber\":\"40009385\",\"orgShortName\":\"车联网平台开发部\",\"orgNumber\":\"40012865\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/福田智科/车联网平台开发部\",\"order\":\"null\",\"modifyTimestamp\":\"20200218075121Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"服务支持系统部\",\"orgType\":\"E1\",\"orgName\":\"服务支持系统部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"服务支持系统部\",\"orgNumber\":\"40012871\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/服务支持系统部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062018Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"信息安全部\",\"orgType\":\"E1\",\"orgName\":\"信息安全部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"信息安全部\",\"orgNumber\":\"40012872\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/信息安全部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062018Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"IT基础设施部\",\"orgType\":\"E1\",\"orgName\":\"IT基础设施部\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"IT基础设施部\",\"orgNumber\":\"40012873\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/IT基础设施部\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062018Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"IT开发中心\",\"orgType\":\"E1\",\"orgName\":\"IT开发中心\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"IT开发中心\",\"orgNumber\":\"40012874\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/IT开发中心\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062018Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"IT共享服务中心\",\"orgType\":\"E1\",\"orgName\":\"IT共享服务中心\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"IT共享服务中心\",\"orgNumber\":\"40013000\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/IT共享服务中心\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062019Z\"},{\"orgStatus\":\"1\",\"departmentName\":\"工业4.0推进办公室\",\"orgType\":\"E1\",\"orgName\":\"工业4.0推进办公室\",\"parentOrgNumber\":\"30002337\",\"orgShortName\":\"工业4.0推进办公室\",\"orgNumber\":\"40013294\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/工业4.0推进办公室\",\"order\":\"null\",\"modifyTimestamp\":\"20191225062021Z\"}]}"; + JSONObject jsonObject= JSON.parseObject(json); + JSONArray results=jsonObject.getJSONArray("results"); + List syncInstitutions=results.toJavaList(SyncInstitution.class); + List tsInstitutions=SyncInstitution.syncToInstitution(syncInstitutions); + batchInsert(tsInstitutions); + } + + @Override + public List getInstitutionIdToDept(String institutionIds,String userName){ + List strings=new ArrayList<>(Arrays.asList(institutionIds.split(","))); + List tsUsers=tsInstitutionDao.selectNextUsers(strings,userName); + return tsUsers; + } + + public List selectNowInst(String institutionId,String userName,String topNum){ + return tsInstitutionDao.selectNowInst(institutionId, topNum); + } + + /** + * 通过部门id获得这个部门下的下一级部门 + * @return + */ + public List getNext(String institutionId,String userName){ + List tsInstitutions = tsInstitutionDao.selectNextInstitution(institutionId); + List tsUsers=tsInstitutionDao.selectNextUser(institutionId,userName); + + + for(TsInstitution tsInstitution:tsInstitutions){ + tsInstitution.setDisabled(true); + } + + tsInstitutions.addAll(tsUsers); + return tsInstitutions; + } + + public List getNextTwo(String userName){ + List tsInstitutions = new ArrayList<>(); + List tsUser = tsInstitutionDao.selectPreviousInstitution(userName); + if(tsUser.size() != 0){ + + List pId = new ArrayList<>(); + for (TsUserVO t:tsUser) { + pId.add(t.getInstitutionId()); + } + tsInstitutions = tsInstitutionDao.selectInstitution(pId); + + for(TsInstitution tsInstitution:tsInstitutions){ + tsInstitution.setDisabled(true); + } + for (TsInstitution t:tsInstitutions){ + List uers = new ArrayList<>(); + for (TsUserVO user:tsUser) { + if(t.getId().equals(user.getInstitutionId())){ + uers.add(user); + } + t.setChildren(uers); + } + } + } + return tsInstitutions; + } + + @Override + public List getNextById(String ids,Integer topNum){ + List strings=new ArrayList<>(Arrays.asList(ids.split(","))); + List tsUsers=tsInstitutionDao.selectNextUserByIds(strings); + List res=new ArrayList<>(); + List list = tsInstitutionDao.selectList(new QueryWrapper<>()); + + if (null!=tsUsers && tsUsers.size()>0){ + Map middle=new HashMap<>(); + for (TsUserVO u:tsUsers) { + middle.put(u.getId(),u); + } + strings.forEach(s -> { +// TsInstitution ins=new TsInstitution(); +// BeanUtils.copyProperties(middle.get(s),ins); + res.add(middle.get(s)); + }); + } + + // 新需求 按规则取用户上几级部门 + if(!res.isEmpty() && topNum != null){ + Map map = list.stream().collect(Collectors.toMap(TsInstitution::getId, tsInstitution -> tsInstitution)); + for (TsUserVO userVO : res) { + List tsInstitutions = new ArrayList<>(); + List institutions = getTopChild(map,userVO.getInstitutionId(),topNum,tsInstitutions); + if(!institutions.isEmpty()){ + if(institutions.size() > topNum){ + userVO.setTopUnitId(institutions.get(topNum).getId()); + userVO.setTopUnit(institutions.get(topNum).getName()); + }else if(institutions.size() == topNum){ + userVO.setTopUnitId(institutions.get(topNum-1).getId()); + userVO.setTopUnit(institutions.get(topNum-1).getName()); + }else { + userVO.setTopUnitId(institutions.get(institutions.size()-1).getId()); + userVO.setTopUnit(institutions.get(institutions.size()-1).getName()); + } + } + } + } + return res; + } + + public List getTopChild(Map map,String id,int topNum,List institutions){ + TsInstitution institution = map.get(id); + if( institution != null && StringUtils.isNotBlank(institution.getParentId())){ + institutions.add(institution); + getTopChild(map,institution.getParentId(),topNum,institutions); + } + return institutions; + } + + public List getFirst(){ + //查询第一层机构 + List tsInstitutions = tsInstitutionDao.selectRootAndUser(null); + for(TsInstitution tsInstitution:tsInstitutions){ + tsInstitution.setDisabled(true); + } + return tsInstitutions; + } + + @Override + public List findInstitutionTreeByName(String institutionName) { + + QueryWrapper tsInstitutionQuery = new QueryWrapper<>(); + tsInstitutionQuery.select("id") + .like("name",institutionName); + + /** + * 查询出id的数据集合并转换成String类型 + */ + List rootIds = this.listObjs(tsInstitutionQuery) + .stream() + .map(item -> item.toString()) + .collect(Collectors.toList()); + + List tsInstitutions = tsInstitutionDao.selectTreeByIds(rootIds); + + + return null; + } + + @Override + public int clearData() { + return tsInstitutionDao.clearData(); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/util/TreeUtil.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/util/TreeUtil.java new file mode 100644 index 00000000..b7ab6e4d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarInstitution/util/TreeUtil.java @@ -0,0 +1,132 @@ +package com.adc.da.slrs.sarInstitution.util; + +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; + +@Component +public class TreeUtil { + + public List treeAsList(List institutionList,List rootList){ + + //转换为hashSet + List root = rootList.stream() + .map(item -> item.getId()) + .collect(Collectors.toList()); + HashSet rootSet = new HashSet<>(root); + + //获取父节点,0表示父节点 + List tree = institutionList.stream() + .filter(e -> rootSet.contains(e.getId())) + .map(e -> { + + List childNode = getChildNode(e, institutionList); + + e.setChildren(new ArrayList<>(childNode)); + return e; + }).collect(Collectors.toList()); + + return tree; + } + + /** + * 递归查询子节点 + * @param root + * @param contentKnowledgeList + * @return + */ + private List getChildNode(TsInstitution root, List contentKnowledgeList) { + List childrenList = contentKnowledgeList.stream() + .filter(e -> Objects.equals(e.getParentId(), root.getId())) + .map(e -> { + List childNode = getChildNode(e, contentKnowledgeList); + e.setChildren(new ArrayList<>(childNode)); + return e; + } + ).collect(Collectors.toList()); + return childrenList; + } + + + + +// public List getChildAsHash(TsInstitution root, Map hashInstitution){ +// String id = root.getId(); +// if (hashInstitution.containsKey(id)){ +// +// } +// return null; +// } + + +// //TODO 利用HashMap组装树结构 +// +// public List treeAsHash(List institutionList,List rootList) { +// +// Map idMap = institutionList.stream() +// .collect(Collectors.toMap(TsInstitution::getId, tsInstitution -> tsInstitution)); +// +// Map pid_institution = institutionList.stream() +// .collect(Collectors.toMap(TsInstitution::getParentId, institution -> institution)); +// +// for (TsInstitution institution : rootList) { +// +// String id = institution.getId(); +// if (pid_institution.containsKey(id)) { +// institution.addChildren(pid_institution.get(id)); +// +// } +// +// } +// +// +// Set rootSet = rootList.stream() +// .map(TsInstitution::getId) +// .collect(Collectors.toSet()); +// +// Iterator it = institutionList.iterator(); +// +// ArrayList resultList = new ArrayList<>(); +// +// +// HashMap id_obj = new HashMap<>(); +// while (it.hasNext()) { +// TsInstitution next = it.next(); +// +// String parentId = next.getParentId(); +// id_obj.put(next.getId(), next); +// if (rootSet.contains(parentId)) { +// id_obj.put(next.getId(), next); +// } else if (id_obj.containsKey(parentId)) { +// id_obj.get(parentId).addChildren(next); +// } +// +// } +// return null ; +// +// } + + + +// +// +// +// List list = dbMapper.getNodeList(); +// ArrayList rootNodes = new ArrayList<>(); +// Map map = new HashMap<>(); +// for (TreeNodeDTO node :list) { +// map.put(node.getId(), node); +// Integer parentId = node.getParentId(); +// // 判断是否有父节点 (没有父节点本身就是个父菜单) +// if (parentId.equals('0')){ +// rootNodes.add(node); +// // 找出不是父级菜单的且集合中包括其父菜单ID +// } else if (map.containsKey(parentId)){ +// map.get(parentId).getChildren().add(node); +// } +// } +// +// } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/controller/IssueTrackController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/controller/IssueTrackController.java new file mode 100644 index 00000000..090cf168 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/controller/IssueTrackController.java @@ -0,0 +1,78 @@ +package com.adc.da.slrs.sarIssueTrack.controller; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrack; +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrackVo; +import com.adc.da.slrs.sarIssueTrack.service.IIssueTrackService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +@Controller +@RestController +@Api(tags = "重点标准跟踪清单") +@RequestMapping("/api/sarIssueTrack/issueTrack") +public class IssueTrackController { + + @Autowired + private IIssueTrackService issueTrackService; + + @PutMapping() + @ApiOperation("新增重点标准跟踪清单项目") + public ResponseMessage addIssueTrack(@RequestBody IssueTrack issueTrack){ + int b = issueTrackService.addIssueTrack(issueTrack); + + if (b>0){ + return Result.success("200","信息已存在,更新!", true); + }else{ + return Result.success("100","新增成功!", true); + } + } + + + @DeleteMapping + @ApiOperation("删除重点标准跟踪清单项目") + public ResponseMessage removeIssueTrack(@RequestParam(value="selectedString") String idList){ + + List stringList = Arrays.asList(idList.split(",")); + boolean b = issueTrackService.removeIssueTrack(stringList); + return Result.success(b); + } + + @GetMapping + @ApiOperation("查询重点标准跟踪清单") + public ResponseMessage> getIssueTrack(IssueTrackVo wrapper){ + IPage issueTrack = issueTrackService.getIssueTrack(wrapper); + return Result.success(issueTrack); + } + + @PostMapping + @ApiOperation("更新重点标准跟踪清单项目") + public ResponseMessage updateIssueTrack(@RequestBody IssueTrack issueTrack){ + boolean b = issueTrackService.updateIssueTrack(issueTrack); +// return Result.success("200","数据不能相同",false); + + if (b){ + return Result.success("200","成功", true); + }else{ + return Result.error("100","标准或政策已存在", false); + } + } + + + + @GetMapping("/isPresent") + @ApiOperation("查询国内外标准和政策是否存在重点跟踪清单中") + public ResponseMessage>> isPresent(String ids){ + List> maps = issueTrackService.idIsPresentIssueTrack(Arrays.asList(ids.split(","))); + return Result.success(maps); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/dao/IssueTrackDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/dao/IssueTrackDao.java new file mode 100644 index 00000000..1ee14185 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/dao/IssueTrackDao.java @@ -0,0 +1,17 @@ +package com.adc.da.slrs.sarIssueTrack.dao; + +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrack; +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssue; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; + +public interface IssueTrackDao extends BaseMapper { + + + public IPage findPage(IPage page, @Param(value = "pageVo") IssueTrack pageVo); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/entity/IssueTrack.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/entity/IssueTrack.java new file mode 100644 index 00000000..12cc0873 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/entity/IssueTrack.java @@ -0,0 +1,57 @@ +package com.adc.da.slrs.sarIssueTrack.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +@Data +@TableName("issue_track") +public class IssueTrack { + + @TableField("id") + private String id; + + @TableField("law_id") + private String lawId; + + @ApiModelProperty("国内标准库 INLAND" + + "海外标准库 FOREIGN" + + "国内外政策库 FOREIGN_LAWS" + + "企业标准库 BUSINESS_STAND") + @TableField("data_source") + private String dataSource; + + @TableField(exist = false) + private String lawCode; + + @TableField(exist = false) + private String lawName; + + @TableField("product_type") + private String productType; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @TableField("impl_time") + private String implTime; + + @TableField("impl_require") + private String implRequire; + + @TableLogic(value = "0",delval = "1") + @TableField("del_flag") + private String delFlag; + + @TableField(exist = false) + private Integer page; + + @TableField(exist = false) + private Integer pageSize; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/entity/IssueTrackVo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/entity/IssueTrackVo.java new file mode 100644 index 00000000..eec4bf15 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/entity/IssueTrackVo.java @@ -0,0 +1,7 @@ +package com.adc.da.slrs.sarIssueTrack.entity; + +import lombok.Data; + +@Data +public class IssueTrackVo extends IssueTrack { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/service/IIssueTrackService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/service/IIssueTrackService.java new file mode 100644 index 00000000..b51ad06b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/service/IIssueTrackService.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.sarIssueTrack.service; + +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrack; +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrackVo; +import com.baomidou.mybatisplus.core.metadata.IPage; + +import java.util.List; +import java.util.Map; + +public interface IIssueTrackService { + + public int addIssueTrack(IssueTrack obj); + + public boolean removeIssueTrack(List idList); + + public IPage getIssueTrack(IssueTrackVo objVo); + + public boolean updateIssueTrack(IssueTrack obj); + + + public List> idIsPresentIssueTrack(List idList); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/service/impl/IssueTrackServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/service/impl/IssueTrackServiceImpl.java new file mode 100644 index 00000000..0563be7c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarIssueTrack/service/impl/IssueTrackServiceImpl.java @@ -0,0 +1,103 @@ +package com.adc.da.slrs.sarIssueTrack.service.impl; + +import com.adc.da.slrs.sarIssueTrack.dao.IssueTrackDao; +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrack; +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrackVo; +import com.adc.da.slrs.sarIssueTrack.service.IIssueTrackService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@Service +public class IssueTrackServiceImpl extends ServiceImpl implements IIssueTrackService { + + + @Autowired + private IssueTrackDao issueTrackDao; + + + @Override + public int addIssueTrack(IssueTrack obj) { + + QueryWrapper countWrapper = new QueryWrapper<>(); + countWrapper.eq("law_id",obj.getLawId()) + .eq("del_flag",0); + int count = this.count(countWrapper); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("law_id",obj.getLawId()); + + obj.setId(UUIDUtils.randomUUID20()); + obj.setDelFlag("0"); + this.saveOrUpdate(obj,wrapper); + + + return count; + + + } + + @Override + public boolean removeIssueTrack(List idList) { + return removeByIds(idList); + } + + @Override + public IPage getIssueTrack(IssueTrackVo objVo) { + + IPage trackPage = new Page<>(objVo.getPage(), objVo.getPageSize()); + + trackPage = issueTrackDao.findPage(trackPage,objVo); + + + return trackPage; + } + + @Override + public boolean updateIssueTrack(IssueTrack obj) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("law_id",obj.getLawId()) + .eq("del_flag","0") + .ne("id",obj.getId()); + IssueTrack one = this.getOne(wrapper); + if (one!=null){ + return false; + }else { + obj.setDelFlag("0"); + return this.updateById(obj); + } + } + + @Override + public List> idIsPresentIssueTrack(List idList){ + + QueryWrapper wrapper = new QueryWrapper<>(); + + wrapper.select("law_id") + .in("law_id",idList); + List issueTracks = issueTrackDao.selectList(wrapper); + Set lawIdSet = issueTracks.stream() + .map(item -> item.getLawId()).collect(Collectors.toSet()); + + return idList.stream() + .map(item -> { + HashMap resultMap = new HashMap<>(); + if (lawIdSet.contains(item)) { + resultMap.put(item, "1"); + } else { + resultMap.put(item, "0"); + } + return resultMap; + }).collect(Collectors.toList()); + + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/controller/SarDetailedIdAttFileController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/controller/SarDetailedIdAttFileController.java new file mode 100644 index 00000000..c209bb79 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/controller/SarDetailedIdAttFileController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarDetailedIdAttFile; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author zzy +* @since 2021-06-24 +*/ +@RestController +@Api(description = "|SarDetailedIdAttFile|") +@RequestMapping("/api/sarLawsAttrDetailedList/sar-detailed-id-att-file") +public class SarDetailedIdAttFileController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/controller/SarLawsAttrDetailedListController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/controller/SarLawsAttrDetailedListController.java new file mode 100644 index 00000000..abb9b05e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/controller/SarLawsAttrDetailedListController.java @@ -0,0 +1,315 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.controller; + + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarLawsAttrDetailedList.dao.SarLawsAttrDetailedListDao; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.*; +import com.adc.da.slrs.sarLawsAttrDetailedList.service.ISarLawsAttrDetailedListService; +import com.adc.da.sys.service.IDicTypeEOService; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** +*

    + * 前端控制器 + *

    +* +* @author zzy +* @since 2021-06-15 +*/ +@RestController +//@Api(description = "|SarLawsAttrDetailedList|") +@Api(tags = "标准法规清单详情") +@RequestMapping("/api/sarLawsAttrDetailedList/sar-laws-attr-detailed-list") +public class SarLawsAttrDetailedListController extends BaseController { + + @Autowired + private ISarLawsAttrDetailedListService iSarLawsAttrDetailedList; + @Autowired + private IAttFileEOService attFileEOService; + @Autowired + private SarLawsAttrDetailedListDao sarLawsAttrDetailedListDao; + @Autowired + private IDicTypeEOService iDicTypeEOService; + + + + /** + * @return ResponseMessage + * @author zzy + * date 2021-06-17 + **/ + @ApiOperation(value = "查询标准信息") + @GetMapping("/selectLawsById") + public ResponseMessage selectLawsById(SarFindDto sarFindDto){ + IPage laws = iSarLawsAttrDetailedList.selectLaws(sarFindDto); + return Result.success("200",laws); + } + + @ApiOperation(value = "查询附件信息") + @GetMapping("/selectFile") + public ResponseMessage selectFile(String Id){ + AttFileEO attFileEO = attFileEOService.getFileInfo(Id); + return Result.success("200",attFileEO); + } + + /** + * @param Page 页数 + * @param Size 大小 + * @param id 清单id + * @return ResponseMessage + * @author zzy + * date 2021-06-17 + * 标准主表中的数据不全,先预留接口 + **/ + @ApiOperation(value = "检索和高级检索") + @PostMapping("/selectByStandId") + public ResponseMessage selectByStandId(@RequestParam(defaultValue = "1")int Page, @RequestParam(defaultValue = "10") int Size, String id){ + return null; + } + /** + * + * @param sarLawsAttrDetailedList + * @return + * @author zzy + * date 2021-07-20 + **/ + @ApiOperation(value = "修改日期") + @PostMapping("/setTimes") + public ResponseMessage setTimes(SarLawsAttrDetailedList sarLawsAttrDetailedList){ + int a=iSarLawsAttrDetailedList.setTimes(sarLawsAttrDetailedList); + return Result.success("200",a); + } + + @ApiOperation(value = "根据标准查询时间") + @GetMapping + public ResponseMessage selectTimes(String id){ + Map> map = iSarLawsAttrDetailedList.selectTimes(id); + return Result.success("200",map); + } + + + /** + * + * @param response 返回头 + * @param standExcelVo standExcelVo类 + * @return void + * @author 作者信息 + * date 2021-06-24 + **/ + @ApiOperation(value = "导出标准信息") + @GetMapping("/ExportLawsById") + public void ExportLawsById(HttpServletResponse response, StandExcelVo standExcelVo,@RequestParam(required = false,defaultValue = "0")String type){ + + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + if(standExcelVo.getExportName()==null){ + standExcelVo.setExportName("标准导出信息"); + } + String fileName = null; + try { + fileName = URLEncoder.encode(standExcelVo.getExportName(), "UTF-8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List data = new ArrayList<>(); + if (CollectionUtils.isEmpty(standExcelVo.getIds())){ + List list= sarLawsAttrDetailedListDao.selectLawsId2(standExcelVo.getId()); + if (!CollectionUtils.isEmpty(list)) { + data = sarLawsAttrDetailedListDao.selectLawsByIdE(list); + } + }else { + data=sarLawsAttrDetailedListDao.selectLawsByIdE(standExcelVo.getIds()); + } + if (!CollectionUtils.isEmpty(data)) { + if ("1".equals(type)) { + List lawsIds = new ArrayList<>(); + SarFindDto sarFindDto = new SarFindDto(); + sarFindDto.setId(standExcelVo.getId()); + data.forEach(lawsDto -> { + lawsIds.add(lawsDto.getId()); + }); + List list = sarLawsAttrDetailedListDao.selectLawsById(lawsIds, sarFindDto); + for (LawsDto lawsDto : data) { + if (StringUtils.isNoneEmpty(lawsDto.getApplyArctic())) { + lawsDto.setApplyArctic(lawsDto.getApplyArctic()); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("stand_id", lawsDto.getId()) + .eq("detailed_list_id", sarFindDto.getId()); + List sarLawsAttrDetailedLists = sarLawsAttrDetailedListDao.selectList(queryWrapper); + if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getSsrq()) && "null" != sarLawsAttrDetailedLists.get(0).getSsrq()) { + lawsDto.setSSRQ(sarLawsAttrDetailedLists.get(0).getSsrq()); + } + if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getXcxssrq()) && "null" != sarLawsAttrDetailedLists.get(0).getXcxssrq()) { + lawsDto.setXCXSSRQGJ(sarLawsAttrDetailedLists.get(0).getXcxssrq()); + } + if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getZccssrq()) && "null" != sarLawsAttrDetailedLists.get(0).getZccssrq()) { + lawsDto.setZCCSSRQGJ(sarLawsAttrDetailedLists.get(0).getZccssrq()); + } + if ("INLAND".equals(lawsDto.getStandType())) lawsDto.setStandType("INLAND_STAND"); + if ("FOREIGN".equals(lawsDto.getStandType())) lawsDto.setStandType("FOREIGN_STAND"); + + } + } + //适用车型 + Map map = iDicTypeEOService.getDicTypeListCode(); + List> typeApplicable = (List>) map.get("ENERGYTYPES"); + for (LawsDto list1 : data) { + if (StringUtils.isNotBlank(list1.getTypeApplicable()) && list1.getTypeApplicable().contains(",")) { + String[] split = list1.getTypeApplicable().split(","); + StringBuilder builder = new StringBuilder(); + for (String s : split) { + for (Map map1 : typeApplicable) { + if (map1.get("value").equals(s)) { + s = map1.get("label"); + builder.append(s + ","); + break; + } + } + } + String completedString = builder.delete(builder.length() - 1, builder.length()).toString(); + list1.setTypeApplicable(completedString); + } else { + for (Map map1 : typeApplicable) { + if (map1.get("value").equals(list1.getTypeApplicable())) { + list1.setTypeApplicable(map1.get("label")); + break; + } + } + } + } + //能源类型 + List> nylx = (List>) map.get("NYLXCLASS"); + for (LawsDto list1 : data) { + if (StringUtils.isNotBlank(list1.getNYLX()) && list1.getNYLX().contains(",")) { + String[] split = list1.getNYLX().split(","); + StringBuilder builder = new StringBuilder(); + for (String s : split) { + for (Map map1 : nylx) { + if (map1.get("value").equals(s)) { + s = map1.get("label"); + builder.append(s + ","); + break; + } + } + } + String completedString = builder.delete(builder.length() - 1, builder.length()).toString(); + list1.setNYLX(completedString); + } else { + for (Map map1 : nylx) { + if (map1.get("value").equals(list1.getNYLX())) { + list1.setNYLX(map1.get("label")); + break; + } + } + } + } + //责任部门 + List> zrbn = (List>) map.get("ZRBMCLASS"); + for (LawsDto list1 : data) { + if (StringUtils.isNotBlank(list1.getZRBM()) && list1.getZRBM().contains(",")) { + String[] split = list1.getZRBM().split(","); + StringBuilder builder = new StringBuilder(); + for (String s : split) { + for (Map map1 : zrbn) { + if (map1.get("value").equals(s)) { + s = map1.get("label"); + builder.append(s + ","); + break; + } + } + } + try { + String completedString = builder.delete(builder.length() - 1, builder.length()).toString(); + list1.setZRBM(completedString); + } catch (Exception e) { + System.out.println(e); + } + } else { + for (Map map1 : zrbn) { + if (map1.get("value").equals(list1.getZRBM())) { + list1.setZRBM(map1.get("label")); + break; + } + } + } + } + //产品线 + List> sycpx = (List>) map.get("SYCPXCLASS"); + for (LawsDto list1 : data) { + if (list1.getSSRQ() != null) { + list1.setSSRQ(list1.getSSRQ()); + } + if (list1.getZCCSSRQGJ() != null) { + list1.setZCCSSRQGJ(list1.getZCCSSRQGJ()); + } + if (list1.getXCXSSRQGJ() != null) { + list1.setXCXSSRQGJ(list1.getXCXSSRQGJ()); + } + + if (StringUtils.isNotBlank(list1.getSYCPX()) && list1.getSYCPX().contains(",")) { + String[] split = list1.getSYCPX().split(","); + StringBuilder builder = new StringBuilder(); + for (String s : split) { + for (Map map1 : sycpx) { + if (map1.get("value").equals(s)) { + s = map1.get("label"); + builder.append(s + ","); + break; + } + } + } + String completedString = builder.delete(builder.length() - 1, builder.length()).toString(); + list1.setSYCPX(completedString); + } else { + for (Map map1 : sycpx) { + if (map1.get("value").equals(list1.getSYCPX())) { + list1.setSYCPX(map1.get("label")); + break; + } + } + } + } + } + try { + EasyExcel.write(response.getOutputStream(), LawsDto.class).useDefaultStyle(false).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(data); + } catch (IOException e) { + e.printStackTrace(); + } + + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + try { + response.getWriter().println(JSON.toJSONString(Result.error())); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/dao/SarDetailedIdAttFileDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/dao/SarDetailedIdAttFileDao.java new file mode 100644 index 00000000..9cd83d3d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/dao/SarDetailedIdAttFileDao.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.dao; + +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarDetailedIdAttFile; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zzy + * @since 2021-06-24 + */ +@Mapper +public interface SarDetailedIdAttFileDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/dao/SarLawsAttrDetailedListDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/dao/SarLawsAttrDetailedListDao.java new file mode 100644 index 00000000..f397a894 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/dao/SarLawsAttrDetailedListDao.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.dao; + +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.LawsDto; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarFindDto; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarLawsAttrDetailedList; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.StandRegionalTimeDto; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zzy + * @since 2021-06-15 + */ +@Mapper +public interface SarLawsAttrDetailedListDao extends BaseMapper { + + //根据清单id,查出标准的id并排序 + List selectLawsId(@Param("standId") String standId,@Param("param3") Integer page,@Param("param2") Integer size,@Param("sar") SarFindDto sarFindDto); + + List selectHighLawsId(@Param("standId") String standId,@Param("sar") SarFindDto sarFindDto); + //根据标准id查出数据 + List selectLawsById(@Param("param1") List LawsIds, @Param("sarFindDto") SarFindDto sarFindDto); + //根据标准id查出数据用于清单查询 + List selectLawsByIdList(@Param("param1") List LawsIds, @Param("sarFindDto") SarFindDto sarFindDto); + //用于导出 + List selectLawsByIdE(@Param("param1") List LawsIds); + //根据标准id查出数据 + List selectLawsByIdC(@Param("start")Integer start,@Param("end")Integer end,@Param("param1") List LawsIds, @Param("standName") String standName,@Param("standType")String standType,@Param("fileType")String fileType); + List selectLawsByIdCount(@Param("param1") List LawsIds, @Param("standName") String standName,@Param("standType")String standType,@Param("fileType")String fileType); + //查询时间 + List selectTimes(String standId); + List selectLawsId2(String standId); + Boolean insertList(@Param("sarLawsAttrDetailedLists") List sarLawsAttrDetailedLists); + Boolean deleteByStandId(String standId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/LawsDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/LawsDto.java new file mode 100644 index 00000000..8785f5bf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/LawsDto.java @@ -0,0 +1,124 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.entity; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * //Dto,用于从标准主表中查询和检索信息 + * + * + * @author ZhangZhiYuan + * date 2021-06-16 + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@ExcelIgnoreUnannotated +public class LawsDto { + @ApiModelProperty(value = "主键") + private String id; + + @ExcelProperty(value = "标准号", index = 0) + @ApiModelProperty(value = "标准号") + private String standNumber; + + @ExcelProperty(value = "中文名称", index = 1) + @ApiModelProperty(value = "中文名称") + private String standName; + + @ExcelProperty(value = "英文名称", index = 2) + @ApiModelProperty(value = "英文名称") + private String standEnName; + + @ExcelProperty(value = "适用车型", index = 3) + @ApiModelProperty(value = "适用车型") + private String typeApplicable; + + @ExcelProperty(value = "能源类型", index = 4) + @ApiModelProperty(value = "能源类型") + private String NYLX; + + @ApiModelProperty(value = "标准年份") +// @ExcelProperty(value = "标准年份", index = 5) + private String standYear; + + @ApiModelProperty(value = "标准类别") +// @ExcelProperty(value = "标准类别", index = 6) + private String standSortShow; + + @ApiModelProperty(value = "标准发表日期") +// @ExcelProperty(value = "标准发表日期", index = 7) + private String issueTime; + + @ColumnWidth(16) + @ExcelProperty(value = "标准实施日期", index = 5) + @ApiModelProperty(value = "标准实施日期") + @DateTimeFormat("yyyy年MM月dd日") + private String SSRQ; + + @ColumnWidth(16) + @ExcelProperty(value = "新车型实施日期", index = 6) + @ApiModelProperty(value = "新车型实施日期") + @DateTimeFormat("yyyy年MM月dd日") + private String XCXSSRQGJ; + + @ColumnWidth(16) + @ExcelProperty(value = "在产车实施日期", index = 7) + @ApiModelProperty(value = "在产车实施日期") + @DateTimeFormat("yyyy年MM月dd日") + private String ZCCSSRQGJ; + + @ExcelProperty(value = "责任部门", index = 8) + @ApiModelProperty(value = "责任部门") + private String ZRBM; + + @ColumnWidth(14) + @ExcelProperty(value = "适用产品线", index = 9) + @ApiModelProperty(value = "适用产品线") + private String SYCPX; + +// @ColumnWidth(20) +// @ExcelProperty(value = "乘用车VPPS编码", index = 10) +// @ApiModelProperty(value = "乘用车VPPS编码") +// private String CYCVPPSBM; +// +// @ColumnWidth(20) +// @ExcelProperty(value = "乘用车vpps中文名称", index = 11) +// @ApiModelProperty(value = "乘用车vpps中文名称") +// private String CYCVPPSCN; +// +// @ColumnWidth(20) +// @ExcelProperty(value = "卡车VPPS编码", index = 12) +// @ApiModelProperty(value = "卡车VPPS编码") +// private String KCCVPPSBM; +// +// @ColumnWidth(20) +// @ExcelProperty(value = "卡车vpps中文名称", index = 13) +// @ApiModelProperty(value = "卡车vpps中文名称") +// private String KCCVPPSCN; + + @ApiModelProperty(value = "责任工程师") +// @ExcelProperty(value = "责任工程师", index = 17) + private String responsibleEngineer; + + @ApiModelProperty(value = "1") + private String standType; + + @ApiModelProperty(value = "文本状态") + private String textStatus; + + @ApiModelProperty(value = "适用车型") + private String applyArctic; + + @ApiModelProperty(value = "适用认证") + private String syrz; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarDetailedIdAttFile.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarDetailedIdAttFile.java new file mode 100644 index 00000000..2705de77 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarDetailedIdAttFile.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * 上传的附件和清单id的关联表 + * @author zzy + * @since 2021-06-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarDetailedIdAttFile对象", description="") +public class SarDetailedIdAttFile extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId + private String id; + + @ApiModelProperty(value = "清单id") + private String detailedId; + + @ApiModelProperty(value = "文件id") + private String fileId; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarFindDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarFindDto.java new file mode 100644 index 00000000..3c885a39 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarFindDto.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.entity; + +import com.adc.da.slrs.sarStandardsInfo.entity.SarAdvanceSearchVO; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * 高级检索 + * + * @author ZhangZhiYuan + * @date 2021-07-22 + */ +@Data +public class SarFindDto { + private int Page; + private int Size; + private String id; + private String standName; + private String standEnName; + private String typeApplicable; + private String nylx; + private String zrbm; + private String sycpx; + private String standSort; + private String standType; + private String standNumber; + private String types; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarLawsAttrDetailedList.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarLawsAttrDetailedList.java new file mode 100644 index 00000000..a1466f08 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/SarLawsAttrDetailedList.java @@ -0,0 +1,62 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author zzy + * @since 2021-06-15 + */ +@Data +@Builder +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsAttrDetailedList对象", description="") +public class SarLawsAttrDetailedList extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableField(value = "id") + private String id; + + @ApiModelProperty(value = "标准政策表的id") + @TableField(value = "stand_id") + private String standId; + + @ApiModelProperty(value = "标准清单主键") + @TableField(value = "detailed_list_id") + private String detailedListId; + + @ApiModelProperty(value = "顺序") + @TableField(value = "number") + private String number; + + @ApiModelProperty(value = "标准实施日期") + @TableField(value = "ssrq") + private String ssrq; + + @ApiModelProperty(value = "新车型实施日期") + @TableField(value = "xcxssrq") + private String xcxssrq; + + @ApiModelProperty(value = "在产车实施日期") + @TableField(value = "zccssrq") + private String zccssrq; + + @ApiModelProperty(value = "适用认证") + @TableField(value = "syrz") + private String syrz; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandExcelDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandExcelDto.java new file mode 100644 index 00000000..6805be5d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandExcelDto.java @@ -0,0 +1,49 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * //导出类 + *用于导出标准数据信息 + * 需要后期修改 + * @author ZhangZhiYuan + * @date 2021-06-24 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StandExcelDto { + @ApiModelProperty(value = "标准编号") + private String standNumber; + @ApiModelProperty(value = "中文名称") + private String standName; + @ApiModelProperty(value = "英文名称") + private String standEnName; + @ApiModelProperty(value = "适用车型") + private String typeApplicable; + @ApiModelProperty(value = "能源类型") + private String NYLX; + @ApiModelProperty(value = "标准实施日期") + private String putTime; + @ApiModelProperty(value = "新车型实施日期") + private String newCarTime; + @ApiModelProperty(value = "在产车实施日期") + private String nowCarTime; + @ApiModelProperty(value = "责任部门") + private String ZRBM; + @ApiModelProperty(value = "适用产品线") + private String SYCPX; + @ApiModelProperty(value = "乘用车VPPS编码") + private String CYCVPPSBM; + @ApiModelProperty(value = "乘用车vpps中文名称") + private String CYCVPPSCN; + @ApiModelProperty(value = "卡车VPPS编码") + private String KCCVPPSBM; + @ApiModelProperty(value = "卡车vpps中文名称") + private String KCCVPPSCN; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandExcelVo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandExcelVo.java new file mode 100644 index 00000000..a3a6fa8c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandExcelVo.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * //接收所导出的文件名 + * + * @author ZhangZhiYuan + * @date 2021-06-24 + */ + +@Data +@ApiModel(description = "标准导出类") +public class StandExcelVo { + @ApiModelProperty("文件名") + String exportName; + @ApiModelProperty("标准ID列表") + List ids; + @ApiModelProperty("ID") + String id; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandRegionalTimeDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandRegionalTimeDto.java new file mode 100644 index 00000000..26a498c1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandRegionalTimeDto.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * //新增清单进行时间的添加 + * + * @author ZhangZhiYuan + * @date 2021-07-21 + */ +@Data +public class StandRegionalTimeDto { + @ApiModelProperty(value = "国家") + private String country; + + @ApiModelProperty(value = "实施日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String putTime; + + @ApiModelProperty(value = "在产车实施日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String zccssrq; + + @ApiModelProperty(value = "新车型实施日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String xcxssrq; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandTimeDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandTimeDto.java new file mode 100644 index 00000000..1ea48e91 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/entity/StandTimeDto.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * //标准时间 + * + * @author ZhangZhiYuan + * @date 2021-07-21 + */ +@Data +public class StandTimeDto { + @ApiModelProperty(value = "实施日期") + private String putTime; + @ApiModelProperty(value = "在产车实施日期") + private String zccssrq; + @ApiModelProperty(value = "新车型实施日期") + private String xcxssrq; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/ISarDetailedIdAttFileService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/ISarDetailedIdAttFileService.java new file mode 100644 index 00000000..a717eee5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/ISarDetailedIdAttFileService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.service; + +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarDetailedIdAttFile; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author zzy + * @since 2021-06-24 + */ +public interface ISarDetailedIdAttFileService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/ISarLawsAttrDetailedListService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/ISarLawsAttrDetailedListService.java new file mode 100644 index 00000000..6c113eff --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/ISarLawsAttrDetailedListService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.service; + +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.*; +import com.adc.da.slrs.sarLawsDetailedList.entity.TimeDto; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +/** + *

    + * 服务类 + *

    + * + * @author zzy + * @since 2021-06-15 + */ +public interface ISarLawsAttrDetailedListService extends IService { + + IPage selectLaws(SarFindDto sarFindDto); + Boolean insertDetailedList(String id,List timeDto); + Boolean updateDetailedLaws(String id,List timeDtos); + void exportExcel(HttpServletResponse response, StandExcelVo standExcelVo); + int setTimes(SarLawsAttrDetailedList sarLawsAttrDetailedList); + Map> selectTimes(String id); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarDetailedIdAttFileServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarDetailedIdAttFileServiceImpl.java new file mode 100644 index 00000000..4f95994d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarDetailedIdAttFileServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.service.impl; + +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarDetailedIdAttFile; +import com.adc.da.slrs.sarLawsAttrDetailedList.dao.SarDetailedIdAttFileDao; +import com.adc.da.slrs.sarLawsAttrDetailedList.service.ISarDetailedIdAttFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author zzy + * @since 2021-06-24 + */ +@Service +public class SarDetailedIdAttFileServiceImpl extends ServiceImpl implements ISarDetailedIdAttFileService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarLawsAttrDetailedListServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarLawsAttrDetailedListServiceImpl.java new file mode 100644 index 00000000..992781b5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrDetailedList/service/impl/SarLawsAttrDetailedListServiceImpl.java @@ -0,0 +1,343 @@ +package com.adc.da.slrs.sarLawsAttrDetailedList.service.impl; + +import com.adc.da.slrs.sarLawsAttrDetailedList.dao.SarLawsAttrDetailedListDao; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.*; +import com.adc.da.slrs.sarLawsAttrDetailedList.service.ISarLawsAttrDetailedListService; +import com.adc.da.slrs.sarLawsDetailedList.entity.TimeDto; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.util.StringUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + + +import javax.servlet.http.HttpServletResponse; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author zzy + * @since 2021-06-15 + */ +@Service +public class SarLawsAttrDetailedListServiceImpl extends ServiceImpl implements ISarLawsAttrDetailedListService { + + @Autowired + SarLawsAttrDetailedListDao sarLawsAttrDetailedListDao; + @Autowired + private IDicTypeEOService iDicTypeEOService; + + //从主表中查询信息 + @Override + public IPage selectLaws(SarFindDto sarFindDto) { + //获取封装信息 + IPage pageRes = new Page<>(sarFindDto.getPage(), sarFindDto.getSize()); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("detailed_list_id", sarFindDto.getId()); + IPage selectPage = sarLawsAttrDetailedListDao.selectPage(pageRes,wrapper); //?????? + //查询标准id + List lawsIds = sarLawsAttrDetailedListDao.selectLawsId(sarFindDto.getId(),((sarFindDto.getPage())-1)*sarFindDto.getSize(),sarFindDto.getSize(),sarFindDto); + if (CollectionUtils.isEmpty(lawsIds)){ + IPage list1 = new Page<>(); + list1.setCurrent(selectPage.getCurrent()); + list1.setTotal(selectPage.getTotal()); + list1.setSize(selectPage.getSize()); + list1.setPages(selectPage.getPages()); + return list1; + } + List list = sarLawsAttrDetailedListDao.selectLawsById(lawsIds,sarFindDto); + for (LawsDto lawsDto:list){ + if (StringUtils.isNoneEmpty(lawsDto.getApplyArctic())){ + lawsDto.setApplyArctic(lawsDto.getApplyArctic()); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("stand_id",lawsDto.getId()) + .eq("detailed_list_id",sarFindDto.getId()); + /** + *2021/9/13 摒弃使用清单实施日期,改用标准实施日期 + */ + if("1".equals(sarFindDto.getTypes())) { + List sarLawsAttrDetailedLists = sarLawsAttrDetailedListDao.selectList(queryWrapper); + if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getSsrq()) && "null" != sarLawsAttrDetailedLists.get(0).getSsrq()) { + lawsDto.setSSRQ(sarLawsAttrDetailedLists.get(0).getSsrq()); + } + if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getXcxssrq()) && "null" != sarLawsAttrDetailedLists.get(0).getXcxssrq()) { + lawsDto.setXCXSSRQGJ(sarLawsAttrDetailedLists.get(0).getXcxssrq()); + } + if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getZccssrq()) && "null" != sarLawsAttrDetailedLists.get(0).getZccssrq()) { + lawsDto.setZCCSSRQGJ(sarLawsAttrDetailedLists.get(0).getZccssrq()); + } + if ("INLAND".equals(lawsDto.getStandType())) lawsDto.setStandType("INLAND_STAND"); + if ("FOREIGN".equals(lawsDto.getStandType())) lawsDto.setStandType("FOREIGN_STAND"); + if (StringUtils.isNoneEmpty(sarLawsAttrDetailedLists.get(0).getSyrz())){ + lawsDto.setSyrz(sarLawsAttrDetailedLists.get(0).getSyrz()); + } + } + } + //适用车型 + Map map= iDicTypeEOService.getDicTypeListCode(); + List> typeApplicable = (List>)map.get("ENERGYTYPES"); + for (LawsDto list1:list){ + if (StringUtils.isNotBlank(list1.getTypeApplicable()) && list1.getTypeApplicable().contains(",")){ + String[] split = list1.getTypeApplicable().split(","); + StringBuilder builder = new StringBuilder(); + for (String s:split){ + for (Map map1:typeApplicable) { + if (map1.get("value").equals(s)){ + s=map1.get("label"); + builder.append(s+","); + break; + } + } + } + String completedString = builder.delete(builder.length()-1,builder.length()).toString(); + list1.setTypeApplicable(completedString); + } + else { + for (Map map1:typeApplicable) { + if (map1.get("value").equals(list1.getTypeApplicable())){ + list1.setTypeApplicable(map1.get("label")); + break; + } + } + } + } + //能源类型 + List> nylx = (List>)map.get("NYLXCLASS"); + for (LawsDto list1:list){ + if (StringUtils.isNotBlank(list1.getNYLX()) && list1.getNYLX().contains(",")){ + String[] split = list1.getNYLX().split(","); + StringBuilder builder = new StringBuilder(); + for (String s:split){ + for (Map map1:nylx) { + if (map1.get("value").equals(s)){ + s=map1.get("label"); + builder.append(s+","); + break; + } + } + } + String completedString = builder.delete(builder.length()-1,builder.length()).toString(); + list1.setNYLX(completedString); + } + else { + for (Map map1:nylx) { + if (map1.get("value").equals(list1.getNYLX())){ + list1.setNYLX(map1.get("label")); + break; + } + } + } + } + //责任部门 + List> zrbn = (List>)map.get("ZRBMCLASS"); + for (LawsDto list1:list){ + if (StringUtils.isNotBlank(list1.getZRBM()) && list1.getZRBM().contains(",")){ + String[] split = list1.getZRBM().split(","); + StringBuilder builder = new StringBuilder(); + for (String s:split){ + for (Map map1:zrbn) { + if (map1.get("value").equals(s)){ + s=map1.get("label"); + builder.append(s+","); + break; + } + } + } + /** + * 当""时索引异常 + */ + String completedString=""; + if (!"".equals(builder.toString())){ + completedString = builder.delete(builder.length()-1,builder.length()).toString(); + } + list1.setZRBM(completedString); + } + else { + for (Map map1:zrbn) { + if (map1.get("value").equals(list1.getZRBM())){ + list1.setZRBM(map1.get("label")); + break; + } + } + } + } + //产品线 + List> sycpx = (List>)map.get("SYCPXCLASS"); + for (LawsDto list1:list){ + if (StringUtils.isNotBlank(list1.getSYCPX()) && list1.getSYCPX().contains(",")){ + String[] split = list1.getSYCPX().split(","); + StringBuilder builder = new StringBuilder(); + for (String s:split){ + for (Map map1:sycpx) { + if (map1.get("value").equals(s)){ + s=map1.get("label"); + builder.append(s+","); + break; + } + } + } + String completedString = builder.delete(builder.length()-1,builder.length()).toString(); + list1.setSYCPX(completedString); + } + else { + for (Map map1:sycpx) { + if (map1.get("value").equals(list1.getSYCPX())){ + list1.setSYCPX(map1.get("label")); + break; + } + } + } + } + + IPage list1 = new Page<>(); + list1.setRecords(list); + list1.setCurrent(selectPage.getCurrent()); + list1.setTotal(selectPage.getTotal()); + list1.setSize(selectPage.getSize()); + list1.setPages(selectPage.getPages()); + return list1; + } + + //向清单表和主表中的关联表插入信息 + @Override + public Boolean insertDetailedList(String standId, List timeDto) { + if (null !=timeDto && !timeDto.isEmpty()){ + try { + List attrDetailedLists = new ArrayList<>(); + int a=0; + for (TimeDto timeDto1:timeDto){ + SarLawsAttrDetailedList sarLawsAttrDetailedList = SarLawsAttrDetailedList.builder() + .id(UUIDUtils.randomUUID20()) + .standId(timeDto1.getStandId()) + .detailedListId(standId) + .number(String.valueOf(a)) + .ssrq(timeDto1.getSsrq()) + .xcxssrq(timeDto1.getXcxssrqgj()) + .zccssrq(timeDto1.getZccssrqgj()) + .syrz(timeDto1.getSyrz()) + .build(); + attrDetailedLists.add(sarLawsAttrDetailedList); + a++; + } + sarLawsAttrDetailedListDao.insertList(attrDetailedLists); + return true; + } catch (Exception e) { + e.printStackTrace(); + } + } + return false; + } + + //修改关联表中的信息,先删除后修改 + @Override + public Boolean updateDetailedLaws(String id,List timeDto) { + try { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("detailed_list_id",id); + sarLawsAttrDetailedListDao.delete(wrapper); + insertDetailedList(id,timeDto); + return true; + } catch (Exception e) { + return false; + } + } + + @Override + public void exportExcel(HttpServletResponse response, StandExcelVo standExcelVo){ + + } + + @Override + public int setTimes(SarLawsAttrDetailedList sarLawsAttrDetailedList) { + return sarLawsAttrDetailedListDao.updateById(sarLawsAttrDetailedList); + } + + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Override + public Map> selectTimes(String id) { + List standRegionalTimeDto= sarLawsAttrDetailedListDao.selectTimes(id); + +// 查询国家地区字典 + List dicTypeList = dicTypeEODao.getDicTypeByDicId("RFRFRFSCXVB"); + List> arr = dicTypeList.stream() + .map(item -> { + Map map = new HashMap<>(); + map.put("label", item.getLabel()); + map.put("value", item.getValue()); + return map; + }).collect(Collectors.toList()); +// Map map = iDicTypeEOService.getDicTypeListCode(); +// List> arr = (List>) map.get("COUNTRY"); + for (StandRegionalTimeDto list1 : standRegionalTimeDto) { + if (StringUtils.isNotBlank(list1.getCountry()) && list1.getCountry().contains(",")) { + String[] split = list1.getCountry().split(","); + StringBuilder builder = new StringBuilder(); + for (String s : split) { + for (Map map1 : arr) { + if (map1.get("value").equals(s)) { + s = map1.get("label"); + builder.append(s + ","); + break; + } + } + } + String completedString = builder.delete(builder.length() - 1, builder.length()).toString(); + list1.setCountry(completedString); + }else { + for (Map map1:arr) { + if (map1.get("value").equals(list1.getCountry())){ + list1.setCountry(map1.get("label")); + break; + } + } + } + } + LinkedHashMap> mapList = new LinkedHashMap>(); + List putTime = new ArrayList<>(); + List xcx = new ArrayList<>(); + List zcc= new ArrayList<>(); + for (StandRegionalTimeDto s:standRegionalTimeDto){ + if (mapList.containsKey("实施日期("+s.getCountry()+")")||mapList.containsKey("新车型实施日期("+s.getCountry()+")")||mapList.containsKey("在产车实施日期("+s.getCountry()+")")){ + putTime = mapList.get("实施日期("+s.getCountry()+")"); + xcx = mapList.get("新车型实施日期("+s.getCountry()+")"); + zcc = mapList.get("在产车实施日期("+s.getCountry()+")"); + + }else { + dateTime(mapList,s); + } + + + + } + return mapList; + } + + private void dateTime(LinkedHashMap> mapList, StandRegionalTimeDto s) { +// String putTime = new SimpleDateFormat("yyyy-MM-dd").format(s.getPutTime()); +// String xcx = new SimpleDateFormat("yyyy-MM-dd").format(s.getXcxssrq()); +// String zcc = new SimpleDateFormat("yyyy-MM-dd").format(s.getZccssrq()); +// putTime.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getPutTime()); +// xcx.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getXcxssrq())); +// zcc.add(new SimpleDateFormat("yyyy-MM-dd").format(s.getZccssrq())); + mapList.put("实施日期("+s.getCountry()+")",Arrays.asList(s.getPutTime().split(","))); + mapList.put("新车型实施日期("+s.getCountry()+")", Arrays.asList(s.getXcxssrq().split(","))); + mapList.put("在产车实施日期("+s.getCountry()+")", Arrays.asList(s.getZccssrq().split(","))); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/controller/SarLawsAttrInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/controller/SarLawsAttrInfoController.java new file mode 100644 index 00000000..80c1cf8b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/controller/SarLawsAttrInfoController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarLawsAttrInfo.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarLawsAttrInfo.entity.SarLawsAttrInfo; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-04 +*/ +@RestController +@Api(description = "|SarLawsAttrInfo|") +@RequestMapping("/sarLawsAttrInfo/sar-laws-attr-info") +public class SarLawsAttrInfoController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/dao/SarLawsAttrInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/dao/SarLawsAttrInfoDao.java new file mode 100644 index 00000000..00da5665 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/dao/SarLawsAttrInfoDao.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.sarLawsAttrInfo.dao; + +import com.adc.da.slrs.sarLawsAttrInfo.entity.SarLawsAttrInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.swagger.models.auth.In; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.Map; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-04 + */ +@Repository +public interface SarLawsAttrInfoDao extends BaseMapper { + + void deleteLawsAttr(@Param("fieldInfo") String fieldInfo); + + void updateAttrLen(@Param("fieldInfo") String fieldInfo); + + Integer selectLawsAttrColumn(@Param("columnName") String columnName); + + int insertLawsAttr(@Param("fieldInfo") String fieldInfo,@Param("fieldValue") String fieldValue); + + int deleteLawsAttrByStandId(@Param("standId") String standId); + + int updateLawsInfo(@Param("lawsId") String lawsId,@Param("field") String field,@Param("value") String value); + + String selectFieldValByLawsId(@Param("field") String field, @Param("lawsId") String lawsId); + + void alterLawsAttr(@Param("fieldInfo") String fieldInfo); + + Map selectLawsFieldAndData(@Param("fieldInfo") String fieldInfo, @Param("standId") String standId); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/entity/SarLawsAttrInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/entity/SarLawsAttrInfo.java new file mode 100644 index 00000000..b1f97419 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/entity/SarLawsAttrInfo.java @@ -0,0 +1,123 @@ +package com.adc.da.slrs.sarLawsAttrInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsAttrInfo对象", description="") +public class SarLawsAttrInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准基础表主键") + @TableField("LAWS_ID") + private String lawsId; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @TableField("SSRQLAWS") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String ssrqlaws; + + @TableField("XCXSSRQLAWS") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String xcxssrqlaws; + + @TableField("ZCXSSRQLAWS") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String zcxssrqlaws; + + @TableField("ZCWBLAWS") + private String zcwblaws; + + @TableField("GCWBLAWS") + private String gcwblaws; + + @TableField("JDWJLAWS") + private String jdwjlaws; + + @TableField("CYSDLAWS") + private String cysdlaws; + + @TableField("TGRLAWS") + private String tgrlaws; + + @TableField("TGDWLAWS") + private String tgdwlaws; + + @TableField("NYLXLAWS") + private String nylxlaws; + + @TableField("YYRZLAWS") + private String yyrzlaws; + + @TableField("ZRBMLAWS") + private String zrbmlaws; + + @TableField("ZRGCSLAWS") + private String zrgcslaws; + + @TableField("DTWJHLAWS") + private String dtwjhlaws; + + @TableField("BDTWJHLAWS") + private String bdtwjhlaws; + + @TableField("YYBZZCLAWS") + private String yybzzclaws; + + @TableField("XGLC") + private String xglc; + + @TableField("CHJLLAWS") + private String chjllaws; + + @TableField("GLWJLAWS") + private String glwjlaws; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/service/ISarLawsAttrInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/service/ISarLawsAttrInfoService.java new file mode 100644 index 00000000..cf187808 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/service/ISarLawsAttrInfoService.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarLawsAttrInfo.service; + +import com.adc.da.slrs.sarLawsAttrInfo.entity.SarLawsAttrInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-04 + */ +public interface ISarLawsAttrInfoService extends IService { + + String selectFieldValByLawsId(String field,String standId); + + int updateLawsInfo(String standId,String field,String value); + + Map getBussAttrInfo(String standId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/service/impl/SarLawsAttrInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/service/impl/SarLawsAttrInfoServiceImpl.java new file mode 100644 index 00000000..ac95cf5b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsAttrInfo/service/impl/SarLawsAttrInfoServiceImpl.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.sarLawsAttrInfo.service.impl; + +import com.adc.da.slrs.sarLawsAttrInfo.entity.SarLawsAttrInfo; +import com.adc.da.slrs.sarLawsAttrInfo.dao.SarLawsAttrInfoDao; +import com.adc.da.slrs.sarLawsAttrInfo.service.ISarLawsAttrInfoService; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-04 + */ +@Service +public class SarLawsAttrInfoServiceImpl extends ServiceImpl implements ISarLawsAttrInfoService { + + @Override + public String selectFieldValByLawsId (String field,String standId) { + return this.baseMapper.selectFieldValByLawsId(field,standId); + } + + @Override + public int updateLawsInfo(String standId,String field,String value){ + return this.baseMapper.updateLawsInfo(standId,field,value); + } + + @Override + public Map getBussAttrInfo(String standId) { + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + return this.baseMapper.selectLawsFieldAndData(fieldInfo,standId); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/Util/BeanConverUtil.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/Util/BeanConverUtil.java new file mode 100644 index 00000000..c9688764 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/Util/BeanConverUtil.java @@ -0,0 +1,60 @@ +package com.adc.da.slrs.sarLawsDetailedList.Util; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.util.CollectionUtils; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * //继承类的数据转移 + * + * @author ZhangZhiYuan + * @date 2021-07-26 + */ +@Slf4j +public class BeanConverUtil { + + + /** + * 单个类转换 + * + * @param sourceObj + * @param targetClass + * @param + * @return + */ + public static T conver(Object sourceObj, Class targetClass) { + if (sourceObj == null || targetClass == null) { + return null; + } + T targetObj = null; + try { + targetObj = targetClass.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + log.error("sourceObj:{},targetClass:{}", sourceObj, targetClass, e); + return null; + } + BeanUtils.copyProperties(sourceObj, targetObj); + return targetObj; + } + + /** + * List之间转换 + * + * @param sourceList + * @param targetClass + * @param + * @return + */ + public static List converList(List sourceList, Class targetClass) { + if (CollectionUtils.isEmpty(sourceList) || targetClass == null) { + return Collections.emptyList(); + } + return sourceList.stream().map(sourceObj -> conver(sourceObj, targetClass)).collect(Collectors.toList()); + } + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/controller/SarLawsDetailedListController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/controller/SarLawsDetailedListController.java new file mode 100644 index 00000000..cc7a758e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/controller/SarLawsDetailedListController.java @@ -0,0 +1,227 @@ +package com.adc.da.slrs.sarLawsDetailedList.controller; + + +import com.adc.da.att.controller.AttFileEOController; +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.base.web.BaseController; +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarLawsAttrDetailedList; +import com.adc.da.slrs.sarLawsDetailedList.Util.BeanConverUtil; +import com.adc.da.slrs.sarLawsDetailedList.entity.*; +import com.adc.da.slrs.sarLawsDetailedList.service.impl.SarLawsDetailedListServiceImpl; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** +*

    + * 前端控制器 + *

    +* +* @author szc +* @since 2021-06-15 +*/ +@RestController +//@Api(description = "|SarLawsDetailedList|") +@Api(tags = "标准法规清单") +@RequestMapping("/api/sarLawsDetailedList/sar-laws-detailed-list") +public class SarLawsDetailedListController extends BaseController { + + @Autowired + private SarLawsDetailedListServiceImpl sarLawsDetailedListService; + @Autowired + private AttFileEOController attFileEOController; + + /** + * @param idList 要进行删除的清单id + * @return ResponseMessage + * @author zzy + * date 2021-06-22 + **/ + @ApiOperation(value = "批量删除清单") + @PostMapping("/deleteListAll") + public ResponseMessage deleteListAll(String[] idList) { + if (idList == null || idList.length == 0) { + return Result.success("200", "要删除的数据为空"); + } else { + List list = new ArrayList<>(Arrays.asList(idList)); + String src = sarLawsDetailedListService.del(list); + return Result.success("200", src); + } + } + + /** + * @param addDetailedDto AddDetailed类 + * @return ResponseMessage + * @author zzy + * date 2021-06-22 + **/ + @ApiOperation(value = "增加清单") + @PostMapping("/insertList") + public ResponseMessage insertList( AddDetailedDto addDetailedDto) { + String src = sarLawsDetailedListService.add(addDetailedDto); + return Result.success(src); + } + + /** + * 动态查询 + * @param page 页数 + * @param pageSize 大小 + * @param sortKey 进行三个页面的分类1,2,3 + * @param countryArea 动态查询输入 国家清单 + * @param detailedList 列表 + * @param projectName 其他 + * @param detailedListName 动态查询输入 + * @return ResponseMessage + */ + @ApiOperation(value = "动态查询") + @GetMapping("/getAllStand") + public ResponseMessage getAllStand(Integer page,Integer pageSize, String sortKey, + String countryArea, String projectName, + String detailedList, + String detailedListName,String carType) { + if (StringUtils.isNotEmpty(sortKey)) { + IPage publicList1 = sarLawsDetailedListService.AllSelectD(page, pageSize, sortKey, + countryArea, projectName, detailedList, detailedListName,carType); + List list= publicList1.getRecords();//从封装中取出数据 + List list1;//继承类集合实现 + list1 = BeanConverUtil.converList(list,FindFileNameDto.class);//将原来类的数据赋给继承类 + List attFileEOS;//新建文件信息的集合 + for (int a=0;a idList = attFileEOS.stream().map(AttFileEO::getOldFileName).collect(Collectors.toList());//多个数据取出数据 + String FileNames = StringUtils.join(idList.toArray(),",");//拼接 + fileNameDto.setFileName(FileNames);//存入 + + } + }else if (null!=list.get(a).getFileIds()){ + AttFileEO attFileEO = attFileEOController.getAttFileInfo(list.get(a).getFileIds()).getData(); + FindFileNameDto fileNameDto = list1.get(a); + fileNameDto.setFileName(attFileEO.getOldFileName()); + list1.set(a,fileNameDto); + } + } + IPage publicList = new Page<>(); + publicList.setCurrent(publicList1.getCurrent()); + publicList.setRecords(list1); + publicList.setTotal(publicList1.getTotal()); + publicList.setSize(publicList1.getSize()); + publicList.setPages(publicList1.getPages()); + return Result.success("200", publicList); + } else { + return Result.success("200", null); + } + + } + + + @ApiOperation(value = "清单根据id单独查询") + @PostMapping("/getStandById") + public SarLawsDetailedList getStandById(@RequestParam("id") String id) { + return sarLawsDetailedListService.selSarLawDetailById(id); + } + + + /** + * @param detailedUpDto 修改的信息,通过类进行接收 + * @return ResponseMessage + * @author 张志远 + * date 2021-06-22 + **/ + @ApiOperation(value = "修改清单") + @PutMapping("/updateList") + public ResponseMessage updateList(@RequestBody DetailedUpDto detailedUpDto) { + String src = sarLawsDetailedListService.updateList(detailedUpDto); + if (Objects.equals(src, "国家/地区清单修改失败") || Objects.equals(src, "车型类别清单修改失败")){ + return Result.error("200","",false); + }else if (Objects.equals(src, "国家/地区清单修改成功") || Objects.equals(src, "车型类别清单修改成功")){ + return Result.success("200","",true); + }else { + return Result.success("200","",true); + } + } + + + @ApiOperation(value = "当在编辑标准的国家地区的时候,自动添加到国家地区清单中,并且把标准的是否纳入认证清单改为\"是\"") + @PostMapping("/standardToLaws") + public ResponseMessage standardToLaws(String countryArea,TimeDto timeDto){ + sarLawsDetailedListService.standardToLaws(countryArea,timeDto); + return Result.success("200",null); + } + + @ApiOperation(value = "导出模板") + @GetMapping("/exportEmpty") + public ResponseMessage exportEmpty( String exportName, HttpServletResponse response, HttpServletRequest request){ + OutputStream os = null; + Workbook workbook = null; + try { + if(com.adc.da.util.utils.StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="清单模板"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + workbook = ExcelExportUtilByWk.exportWithData(exportParams,ExportEmptyModel.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + return Result.success("200",null); + } + + + @ApiOperation(value = "导入标准数据") + @PostMapping("/importData") + public ResponseMessage importData( @RequestParam(value = "file", required = false) MultipartFile file){ + StringBuilder stringBuilder=new StringBuilder(); + List res=sarLawsDetailedListService.importData(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/dao/SarLawsDetailedListDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/dao/SarLawsDetailedListDao.java new file mode 100644 index 00000000..88dbccd9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/dao/SarLawsDetailedListDao.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarLawsDetailedList.dao; + +import com.adc.da.slrs.sarLawsDetailedList.entity.SarLawsDetailedList; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author szc + * @since 2021-06-15 + */ +@Mapper +public interface SarLawsDetailedListDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/AddDetailedDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/AddDetailedDto.java new file mode 100644 index 00000000..4ce5f080 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/AddDetailedDto.java @@ -0,0 +1,47 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * //新增dto + * + * @author ZhangZhiYuan + * @date 2021-06-24 + */ +@Data +public class AddDetailedDto { + + @ApiModelProperty(value = "国家或地区") + private String countryArea; + @ApiModelProperty(value = "项目名称") + private String projectName; + @ApiModelProperty(value = "车型类别") + private String carType; + @ApiModelProperty(value = "清单类别") + private String detailedList; + @ApiModelProperty(value = "区分,国家地区为1,项目名称为2,清单类别为3") + private String sortKey; + @ApiModelProperty(value = "清单名称") + private String detailedListName; + @ApiModelProperty(value = "清单详情") + private String remark; + @ApiModelProperty(value = "清单状态,1为未发布,2为发布") + private String detailedListState; + @ApiModelProperty(value = "适用领域") + private String applicationScope; + @ApiModelProperty(value = "更新人") + private String updatePeople; + @ApiModelProperty(value = "上传的附件") + private String fileIds; + @ApiModelProperty(value = "要添加的清单id") + private String inforlist; + @ApiModelProperty(value = "实施时间") + private String inforlist1; + @ApiModelProperty(value = "在产车实施时间") + private String inforlist2; + @ApiModelProperty(value = "新车型实施时间") + private String inforlist3; + @ApiModelProperty(value = "适用认证") + private String inforlist4; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/DetailedUpDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/DetailedUpDto.java new file mode 100644 index 00000000..85a1e2aa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/DetailedUpDto.java @@ -0,0 +1,75 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * //修改dto + * + * @author ZhangZhiYuan + * @date 2021-06-25 + */ +@Data +public class DetailedUpDto { + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "国家或地区") + private String countryArea; + + @ApiModelProperty(value = "项目名称") + private String projectName; + + @ApiModelProperty(value = "车型类别") + private String carType; + + @ApiModelProperty(value = "清单类别") + private String detailedList; + + @ApiModelProperty(value = "区分,国家地区为1,项目名称为2,清单类别为3") + private String sortKey; + + @ApiModelProperty(value = "清单名称") + private String detailedListName; + + @ApiModelProperty(value = "清单状态,1为未发布,2为发布") + private String detailedListState; + + @ApiModelProperty(value = "清单版本,默认V0") + private String detailedListVision; + + @ApiModelProperty(value = "适用领域") + private String applicationScope; + + @ApiModelProperty(value = "附件id") + private String fileIds; + + @ApiModelProperty(value = "更新时间") + private Date reNewTime; + + @ApiModelProperty(value = "更新人") + private String reNewPeople; + + @ApiModelProperty(value = "要添加的清单id") + private String inforlist; + + @ApiModelProperty(value = "清单详情") + private String remark; + + @ApiModelProperty(value = "实施时间") + private String inforlist1; + + @ApiModelProperty(value = "在产车实施时间") + private String inforlist2; + + @ApiModelProperty(value = "新车型实施时间") + private String inforlist3; + + @ApiModelProperty(value = "适用认证") + private String inforlist4; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExcelDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExcelDto.java new file mode 100644 index 00000000..1a37c435 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExcelDto.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * //TODO 添加类、接口描述 + * + * @author ZhangZhiYuan + * @date 2021-07-29 + */ +@Data +public class ExcelDto extends SarStandUnqualified { + + @ExcelProperty("创建时间") + private String createTime1; + @ExcelProperty("计划关闭时间") + private String planCloseTime1; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExportEmptyModel.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExportEmptyModel.java new file mode 100644 index 00000000..4507314d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExportEmptyModel.java @@ -0,0 +1,48 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class ExportEmptyModel { + + @Excel(name = "标准编号(必填)",orderNum = "0" ,width = 20.0) + private String standNumber; + + @Excel(name = "适用认证(必填,可多选)",orderNum = "1" ,width = 40.0) + private String syrz; + + @Excel(name = "标准实施日期",orderNum = "2" ,width = 20.0,exportFormat = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date ssrq; + + @Excel(name = "新车型实施日期",orderNum = "3" ,width = 20.0,exportFormat = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date xcxssrqgj; + + @Excel(name = "在产车实施日期",orderNum = "4" ,width = 20.0,exportFormat = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date zccssrqgj; + + private String id; + + private String compareFlag; + + private String syrzCode; + //国内海外为1 企标为2 政策为3 + private String standName; + private String standEnName; + private String sycx; + private String nylx; + private String zrbm; + private String sycpx; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExportEmptyModelDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExportEmptyModelDto.java new file mode 100644 index 00000000..a604b495 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/ExportEmptyModelDto.java @@ -0,0 +1,46 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +/** + * @Author: qk + * @Date: 2022/5/10 0010 14:56 + * @Version 1.0 + */ +@Data +public class ExportEmptyModelDto { + @Excel(name = "标准编号(必填)",orderNum = "0" ,width = 20.0) + private String standNumber; + + @Excel(name = "适用认证(必填,可多选)",orderNum = "1" ,width = 40.0) + private String syrz; + + @Excel(name = "标准实施日期",orderNum = "2" ,width = 20.0) +// @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") +// @DateTimeFormat(pattern = "yyyy-MM-dd") + private String ssrq; + + @Excel(name = "新车型实施日期",orderNum = "3" ,width = 20.0) +// @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") +// @DateTimeFormat(pattern = "yyyy-MM-dd") + private String xcxssrqgj; + + @Excel(name = "在产车实施日期",orderNum = "4" ,width = 20.0) +// @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") +// @DateTimeFormat(pattern = "yyyy-MM-dd") + private String zccssrqgj; + + private String id; + + private String compareFlag; + + private String syrzCode; + //国内海外为1 企标为2 政策为3 + private String standName; + private String standEnName; + private String sycx; + private String nylx; + private String zrbm; + private String sycpx; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/FindFileNameDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/FindFileNameDto.java new file mode 100644 index 00000000..aeb42622 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/FindFileNameDto.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + + + +/** + * //文件名回显 + * + * @author ZhangZhiYuan + * @date 2021-07-26 + */ +public class FindFileNameDto extends SarLawsDetailedList { + private String fileName; + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/IdListDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/IdListDto.java new file mode 100644 index 00000000..ed5f89a5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/IdListDto.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * //导出标准信息进行接收ids + * + * @author ZhangZhiYuan + * @date 2021-06-22 + */ +@Data +public class IdListDto { + @ApiModelProperty("ID列表") + private List Ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/SarLawsDetailedList.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/SarLawsDetailedList.java new file mode 100644 index 00000000..c1baf926 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/SarLawsDetailedList.java @@ -0,0 +1,89 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author szc + * @since 2021-06-15 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsDetailedList对象", description="") +public class SarLawsDetailedList extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("id") + private String id; + + @ApiModelProperty(value = "国家或地区") + @TableField("country_area") + private String countryArea; + + @ApiModelProperty(value = "项目名称") + @TableField("project_name") + private String projectName; + + @ApiModelProperty(value = "车型类别") + @TableField("car_type") + private String carType; + + @ApiModelProperty(value = "清单类别") + @TableField("detailed_list") + private String detailedList; + + @ApiModelProperty(value = "区分,国家地区为1,项目名称为2,清单类别为3") + @TableField("sort_key") + private String sortKey; + + @ApiModelProperty(value = "清单名称") + @TableField("detailed_list_name") + private String detailedListName; + + @ApiModelProperty(value = "清单状态,1为未发布,2为发布") + @TableField("detailed_list_state") + private String detailedListState; + + @ApiModelProperty(value = "清单版本,默认V0") + @TableField("detailed_list_vesion") + private String detailedListVision; + + @ApiModelProperty(value = "适用领域") + @TableField("application_scope") + private String applicationScope; + + @ApiModelProperty(value = "清单列表") + @TableField("remark") + private String remark; + + @ApiModelProperty(value = "更新时间") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "更新人") + @TableField("update_people") + private String updatePeople; + + @ApiModelProperty(value = "附件id") + @TableField("file_id") + private String fileIds; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/TimeDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/TimeDto.java new file mode 100644 index 00000000..921e59d1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/entity/TimeDto.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.sarLawsDetailedList.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * //用于新增清单的三个时间 + * + * @author ZhangZhiYuan + * @date 2021-07-21 + */ +@Data +public class TimeDto { + @ApiModelProperty(value = "标准id") + private String standId; + + @ApiModelProperty(value = "实施日期") + private String ssrq; + + @ApiModelProperty(value = "在产车实施日期") + private String zccssrqgj; + + @ApiModelProperty(value = "新车型实施日期") + private String xcxssrqgj; + + @ApiModelProperty(value = "适用认证") + private String syrz; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/ISarLawsDetailedListService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/ISarLawsDetailedListService.java new file mode 100644 index 00000000..bfa23a82 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/ISarLawsDetailedListService.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.sarLawsDetailedList.service; + +import com.adc.da.slrs.sarLawsDetailedList.entity.*; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + + +/** + *

    + * 服务类 + *

    + * + * @author szc + * @since 2021-06-15 + */ +public interface ISarLawsDetailedListService extends IService { + String del(List idList); + String add(AddDetailedDto addDetailedDto); + IPage AllSelectD(Integer pages, Integer size, String sortKey, + String countryArea,String projectName, + String detailedList, String detailedListName,String carType); +// IPage selectAllP(Integer pages,Integer size,String sortKey); + + String updateList(DetailedUpDto detailedUpDto); + + SarLawsDetailedList selSarLawDetailById(@Param("id")String id); + + void standardToLaws(String countryArea,TimeDto timeDto); + + + List importData(MultipartFile file , StringBuilder stringBuilder); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/impl/SarLawsDetailedListServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/impl/SarLawsDetailedListServiceImpl.java new file mode 100644 index 00000000..f4234b35 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsDetailedList/service/impl/SarLawsDetailedListServiceImpl.java @@ -0,0 +1,1088 @@ +package com.adc.da.slrs.sarLawsDetailedList.service.impl; + +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.mq.CreateUpdateMQService; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.regulations.dao.StandDataDao; +import com.adc.da.slrs.regulations.entity.SearchStandContext; +import com.adc.da.slrs.regulations.entity.StandData; +import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarLawsAttrDetailedList.dao.SarLawsAttrDetailedListDao; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarLawsAttrDetailedList; +import com.adc.da.slrs.sarLawsAttrDetailedList.service.ISarLawsAttrDetailedListService; +import com.adc.da.slrs.sarLawsAttrDetailedList.service.impl.SarLawsAttrDetailedListServiceImpl; +import com.adc.da.slrs.sarLawsDetailedList.dao.SarLawsDetailedListDao; +import com.adc.da.slrs.sarLawsDetailedList.entity.*; +import com.adc.da.slrs.sarLawsDetailedList.service.ISarLawsDetailedListService; +import com.adc.da.slrs.sarLawsStandInfo.dao.SarLawsStandInfoDao; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoPage; +import com.adc.da.slrs.sarLawsStandInfo.service.ISarLawsStandInfoService; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sarStandardsInfo.service.impl.SarStandardsInfoServiceImpl; +import com.adc.da.slrs.sarUser.entity.UpDTO; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.slrs.standardSplit.service.SarStandardsInfoEOService; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.util.utils.CollectionUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.lang.reflect.Array; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +import static com.adc.da.login.util.UserUtils.getUserName; + +/** + *

    + * 服务实现类 + *

    + * + * @author szc + * @since 2021-06-15 + */ +@Service +public class SarLawsDetailedListServiceImpl extends ServiceImpl implements ISarLawsDetailedListService { + + @Autowired + SarStandardsInfoDao sarStandardsInfoDao; + + @Autowired + ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + public SarLawsDetailedListDao sarLawsDetailedListDao; + @Autowired + public IAttFileEOService iAttFileEOService; + @Autowired + private SarLawsAttrDetailedListDao sarLawsAttrDetailedListDao; + @Autowired + private SarLawsAttrDetailedListServiceImpl service; + @Autowired + private IDicTypeEOService iDicTypeEOService; + @Autowired + private ITsUserService iTsUserService; + @Autowired + private SarStandardsInfoDao standardsInfoDao; + @Autowired + private SarBussionessStandDao sarBussionessStandDao; + @Autowired + private SarLawsStandInfoDao sarLawsStandInfoDao; + @Autowired + private ISarLawsStandInfoService sarLawsStandInfoService; + @Autowired + private ISarBussionessStandService sarBussionessStandService; + //查询数据字典 + @Autowired + private IDicTypeEOService dicTypeEOService; + + //查询数据字典 + @Autowired + private CreateUpdateMQService createUpdateMQService; + //查询数据字典 searchStandDataThree + @Autowired + private StandDataDao standDateDao; + + + @Override + public String del(List idList) { + QueryWrapper wrapper = new QueryWrapper<>(); + for (String id : idList) { + //把老的弄出来 + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.eq("detailed_list_id", id); + List sarLawsAttrDetailedLists = sarLawsAttrDetailedListDao.selectList(wrapper2); + List list1 = new ArrayList<>(); + if (sarLawsAttrDetailedLists.size() > 0) { + sarLawsAttrDetailedLists.forEach(sarLawsAttrDetailedList -> { + list1.add(sarLawsAttrDetailedList.getStandId()); + }); + } + wrapper.eq("detailed_list_id", id); + sarLawsAttrDetailedListDao.delete(wrapper); +// -- eeee + //移除之后 需要判定一下 还有没有其他地方引用 + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.in("stand_id", list1); + List res = sarLawsAttrDetailedListDao.selectList(wrapper); + res.forEach(sarLawsAttrDetailedList -> { + list1.remove(sarLawsAttrDetailedList.getStandId()); + }); + if (null != list1 && list1.size() > 0) { + sarStandardsInfoDao.updateISRELATEACCESSById("2", list1); + } + + } + sarLawsDetailedListDao.deleteBatchIds(idList); + return "删除成功"; + } + + @Override + public String add(AddDetailedDto addDetailedDto) { + //判断页面的国家地区是否和数据库里的字段长度相等 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("DISTINCT country_area,car_type"); + List sarLawsDetailedLists = sarLawsDetailedListDao.selectList(wrapper); + //国家/地区清单 多选是否可以添加的标识,true表示可以添加,false表示不许添加 + boolean multiAddFlag = true; + //国家/地区清单 单选是否可以添加的标识,true表示可以添加,false表示不许添加 + boolean singleAddFlag = true; + //车型类别是否可以添加的标识,true表示可以添加,false表示不许添加 + boolean carAddFlag = true; +// System.out.println("数据库的值"+sarLawsDetailedLists); +// System.out.println("数据库里有多少条数据"+sarLawsDetailedLists.size()); +// System.out.println("数据库里第一条"+sarLawsDetailedLists.get(1)); + //先判断数据库里有没有值,如果没有,就直接新增 + if (sarLawsDetailedLists.size() == 0) { + //下面放添加的具体方法 + newListMethod(addDetailedDto); + return "数据库为空,添加成功"; + } + //如果数据库有值,根据页面的字段进行判断是哪个清单的新增 + else { + //如果是其他新增 + if (addDetailedDto.getCountryArea() == null && addDetailedDto.getCarType() == null) { + //下面放添加的具体方法 + newListMethod(addDetailedDto); + return "其他清单添加成功"; + } + //如果是车辆新增 + else if (addDetailedDto.getCarType() != null) { + //就判断页面的值和数据库里的值是否相等 + for (int i = 0; i < sarLawsDetailedLists.size(); i++) { + //判断数据库里的数据的车型类别字段是否为空 + if (null == sarLawsDetailedLists.get(i) || null == sarLawsDetailedLists.get(i).getCarType()) { + System.out.println("数据库里第" + (i + 1) + "条的车型类别字段长度为空,不重复,目前可以添加"); + } + //相等就不许添加 + else if (Objects.equals(addDetailedDto.getCarType(), sarLawsDetailedLists.get(i).getCarType())) { + System.out.println("数据库里第" + (i + 1) + "条的车型类别字段和页面一样,重复,不许添加"); + carAddFlag = false; + } + } + } + //如果是国家新增 + else if (addDetailedDto.getCountryArea() != null) { + for (int i = 0; i < sarLawsDetailedLists.size(); i++) { + //就先判断数据库里的数据的国家/地区字段是否为空 + if (null == sarLawsDetailedLists.get(i) || null == sarLawsDetailedLists.get(i).getCountryArea()) { + System.out.println("数据库里第" + (i + 1) + "条的国家地区字段长度为空,不重复,目前可以添加"); + } + //再判断页面字段长度是否与数据库里的长度一样,如果长度不一样,允许新增 + else if (addDetailedDto.getCountryArea().length() != sarLawsDetailedLists.get(i).getCountryArea().length()) { + System.out.println("数据库里第" + (i + 1) + "条的国家地区字段长度和页面的国家地区字段长度不一样,不重复,目前可以添加"); + } + //如果不为空且长度一样 + else { + //判断页面的国家地区是单选还是多选(判断能不能拆) + if (addDetailedDto.getCountryArea().contains(",")) { + System.out.println("页面是多选"); + //如果数据库里的国家地区字段存在",",说明是多选,如果不存在说明是单选 + if (sarLawsDetailedLists.get(i).getCountryArea().contains(",")) { + System.out.println("数据库是多选,如果页面字段拆分之后都包含于数据库字段拆分之后,则说明重复,目前不许添加"); + System.out.println("页面字段为" + addDetailedDto.getCountryArea()); + //页面字段以“,”为分隔符拆分后的结果 + String[] frontCountryArea = addDetailedDto.getCountryArea().split(","); + //数据库字段以“,”为分隔符拆分后的结果 + String[] databaseCountryArea = sarLawsDetailedLists.get(i).getCountryArea().split(","); + + //如果页面字段拆分之后都包含于数据库字段拆分之后,则说明重复,不许添加 + for (int j = 0; j < frontCountryArea.length; j++) { + //如果数据库包含了页面字段的所有值,说明这俩完全相同,重复,不许添加 + List databaseCountryAreaList = Arrays.asList(databaseCountryArea); + if (databaseCountryAreaList.contains(frontCountryArea[j])) { + System.out.println("数据库" + databaseCountryAreaList); + System.out.println("页面" + frontCountryArea[j]); + System.out.println("数据库里的字段包含页面里的字段,可能重复,目前不许添加"); + multiAddFlag = false; + } else { + System.out.println("数据库" + databaseCountryAreaList); + System.out.println("页面" + frontCountryArea[j]); + System.out.println("数据库里的字段和页面字段虽然长度相同,但是里面有不一样的元素,可以添加"); + multiAddFlag = true; + } + } + if (multiAddFlag == true) { + System.out.println("长度相同,只要有一个不重复,就可以添加"); + } else { + System.out.println("长度相同,整个循环下来都重复,说明两个字段重复,不许添加"); + break; + } + } + } else { + System.out.println("页面是单选"); + + //如果数据库里的国家地区字段存在",",说明是多选,如果不存在说明是单选 + if (sarLawsDetailedLists.get(i).getCountryArea().contains(",")) { + System.out.println("数据库是多选,肯定不重复,目前可以添加"); + } else { + System.out.println("数据库是单选,如果数据库里的字段和页面的字段相等,重复,不许添加"); + //如果数据库里的字段和页面的字段相等,重复,不许添加 + if (Objects.equals(sarLawsDetailedLists.get(i).getCountryArea(), addDetailedDto.getCountryArea())) { + System.out.println("数据库里的字段和页面的字段相等,重复,不许添加"); + singleAddFlag = false; + break; + } else { + System.out.println("数据库里的字段和页面的字段不相等,不重复,允许添加"); + } + } + } + } + } + } + } + //如果是国家和车型清单 + //如果整个循环下来都没有重复,则可以添加,不然就说明有重复,不能添加 + if (carAddFlag == true && multiAddFlag == true && singleAddFlag == true) { + //下面放添加的具体方法 + newListMethod(addDetailedDto); + return "车型类别清单添加成功"; + //添加方法结束 + } else if (carAddFlag == false) { + //0表示添加成功,1表示添加失败 + return "车型类别清单添加失败"; + } + + //如果循环完整个数据库,都没有重复使当前数据无法添加,则添加 + if (multiAddFlag == true && singleAddFlag == true && carAddFlag == true) { + //下面放添加的具体方法 + newListMethod(addDetailedDto); + //0表示添加成功,1表示添加失败 + return "国家/地区清单添加成功"; + //添加方法结束 + } else { + //0表示添加成功,1表示添加失败 + return "国家/地区清单添加失败"; + } + } + + /** + * 具体用来新增清单的方法 + * + * @param addDetailedDto + */ + private void newListMethod(AddDetailedDto addDetailedDto) { + try { + SarLawsDetailedList sarLawsDetailedList = SarLawsDetailedList.builder() + .id(UUIDUtils.randomUUID20()) + .sortKey(addDetailedDto.getSortKey()) + .detailedListName(addDetailedDto.getDetailedListName()) + .detailedListState("0") + .applicationScope(addDetailedDto.getApplicationScope()) + .updateTime(new Date()) + .updatePeople(addDetailedDto.getUpdatePeople()) + .remark(addDetailedDto.getRemark()) + .updatePeople(getUserName()) + .fileIds(addDetailedDto.getFileIds()) + .build(); + List timeDto = new ArrayList<>(); + switch (addDetailedDto.getSortKey()) { + case "1": + sarLawsDetailedList.setCountryArea(addDetailedDto.getCountryArea()); + + break; + case "2": + sarLawsDetailedList.setCarType(addDetailedDto.getCarType()); + + + break; + case "3": + sarLawsDetailedList.setDetailedList(addDetailedDto.getDetailedList()); + + break; + default: + break; + } + if ("admin".equals(getUserName())) sarLawsDetailedList.setUpdatePeople("管理员"); + else { + sarLawsDetailedList.setUpdatePeople(getUserName()); + } + sarLawsDetailedListDao.insert(sarLawsDetailedList); + if (addDetailedDto.getInforlist() != null) { + if (addDetailedDto.getInforlist().contains(",")) { + String[] id = new String[]{}; + String[] putTime = new String[]{}; + String[] zcc = new String[]{}; + String[] xcx = new String[]{}; + String[] syrz = new String[]{}; + if (StringUtils.isNotEmpty(addDetailedDto.getInforlist())) { + id = addDetailedDto.getInforlist().split(","); + } + if (StringUtils.isNotEmpty(addDetailedDto.getInforlist1())) { + putTime = addDetailedDto.getInforlist1().split(";"); + } + if (StringUtils.isNotEmpty(addDetailedDto.getInforlist2())) { + zcc = addDetailedDto.getInforlist2().split(";"); + } + if (StringUtils.isNotEmpty(addDetailedDto.getInforlist3())) { + xcx = addDetailedDto.getInforlist3().split(";"); + } + if (StringUtils.isNotEmpty(addDetailedDto.getInforlist4())) { + syrz = addDetailedDto.getInforlist4().split(";"); + } + for (int a = 0; a < id.length; a++) { + TimeDto dto = new TimeDto(); + dto.setStandId(id[a]); + //putTiem即ssrq可能为空 '' + + if (putTime.length <= a) { + dto.setSsrq(null); + } else { + dto.setSsrq(putTime[a]); + } + if (xcx.length <= a) { + dto.setXcxssrqgj(null); + } else { + dto.setXcxssrqgj(xcx[a]); + } + if (zcc.length <= a) { + dto.setZccssrqgj(null); + } else { + dto.setZccssrqgj(zcc[a]); + } + if (syrz.length <= a) { + dto.setSyrz(null); + } else { + dto.setSyrz(syrz[a]); + } + timeDto.add(dto); + } + } else { + TimeDto dto = new TimeDto(); + dto.setStandId(addDetailedDto.getInforlist()); + dto.setSsrq(addDetailedDto.getInforlist1()); + dto.setXcxssrqgj(addDetailedDto.getInforlist2()); + dto.setZccssrqgj(addDetailedDto.getInforlist3()); + dto.setSyrz(addDetailedDto.getInforlist4()); + timeDto.add(dto); + } + } else { + timeDto = null; + } + service.insertDetailedList(sarLawsDetailedList.getId(), timeDto); + List list1 = new ArrayList<>(); + List list2 = new ArrayList<>(); + //避免出现数据丢失 处理一下适用认证信息 + list1.addAll(Arrays.asList(addDetailedDto.getInforlist().split(","))); + Hashtable hashtable = new Hashtable<>(); + for (TimeDto dto:timeDto) { + if (StringUtils.isNotBlank(dto.getSyrz())) { + hashtable.put(dto.getStandId(), dto.getSyrz()); + } + } + //下面写消息队列了开始 + createUpdateMQService.sendMQ(hashtable, list2, list1); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + + @Override + public IPage AllSelectD(Integer page, Integer pageSize, String sortKey, + String countryArea, String projectName, + String detailedList, String detailedListName, String carType) { + QueryWrapper wrapper = new QueryWrapper<>(); + if ("1".equals(sortKey)) { + wrapper.like(StringUtils.isNotEmpty(countryArea), "country_area", countryArea). + like(StringUtils.isNotEmpty(detailedListName), "detailed_list_name", detailedListName); + } else if ("2".equals(sortKey)) { + wrapper.like(StringUtils.isNotEmpty(carType), "car_type", carType). + like(StringUtils.isNotEmpty(detailedListName), "detailed_list_name", detailedListName); + + } else if ("3".equals(sortKey)) { + wrapper.like(StringUtils.isNotEmpty(detailedList), "detailed_list", detailedList). + like(StringUtils.isNotEmpty(detailedListName), "detailed_list_name", detailedListName); + } + wrapper.eq("sort_key", sortKey); + Page pageRes = new Page<>(page, pageSize); + IPage userIPage = sarLawsDetailedListDao.selectPage(pageRes, wrapper); + if (userIPage.getRecords().size() > 0) { + if ("1".equals(sortKey)) { + Map map = iDicTypeEOService.getDicTypeListCode(); + List list = userIPage.getRecords(); + List> arr = (List>) map.get("COUNTRY"); + for (SarLawsDetailedList list1 : list) { + if (StringUtils.isNotBlank(list1.getCountryArea()) && list1.getCountryArea().contains(",")) { + String[] split = list1.getCountryArea().split(","); + StringBuilder builder = new StringBuilder(); + for (String s : split) { + for (Map map1 : arr) { + if (map1.get("value").equals(s)) { + s = map1.get("value"); + builder.append(s + ","); + break; + } + } + } + String completedString = ""; + if (builder.length() > 0) { + completedString = builder.delete(builder.length() - 1, builder.length()).toString(); + } + list1.setCountryArea(completedString); + } else { + for (Map map1 : arr) { + if (map1.get("value").equals(list1.getCountryArea())) { + list1.setCountryArea(map1.get("value")); + break; + } + } + } + } + userIPage.setRecords(list); + } + List names = new ArrayList<>(); + userIPage.getRecords().forEach(sarLawsDetailedList -> { + names.add(sarLawsDetailedList.getUpdatePeople()); + }); + List upDTOS = iTsUserService.selectNameById(names, "0"); + Map stringMap = new HashMap<>(); + upDTOS.forEach(upDTO -> { + stringMap.put(upDTO.getId(), upDTO.getValue()); + }); + userIPage.getRecords().forEach(sarLawsDetailedList -> { + if (null != stringMap.get(sarLawsDetailedList.getUpdatePeople())) { + sarLawsDetailedList.setUpdatePeople(stringMap.get(sarLawsDetailedList.getUpdatePeople())); + } + }); + } + System.out.println("总条数" + userIPage.getTotal()); + System.out.println("总页数" + userIPage.getPages()); + return userIPage; + } + + @Override + public String updateList(DetailedUpDto detailedUpDto) { + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("DISTINCT country_area,car_type"); + List sarLawsDetailedLists = sarLawsDetailedListDao.selectList(wrapper); + + //list是数据库里根据id查出来的数据;detailedUpDto是页面传回来的数据 + SarLawsDetailedList list = sarLawsDetailedListDao.selectById(detailedUpDto.getId()); + System.out.println("数据库里存的当前数据" + list.getCountryArea()); + System.out.println("页面现在的数据" + detailedUpDto.getCountryArea()); + + //国家/地区清单 多选是否可以添加的标识,true表示可以添加,false表示不许添加 + boolean multiEditFlag = true; + //国家/地区清单 单选是否可以添加的标识,true表示可以添加,false表示不许添加 + boolean singleEditFlag = true; + //车型类别是否可以添加的标识,true表示可以添加,false表示不许添加 + boolean carEditFlag = true; + + if (detailedUpDto.getCountryArea() == null && detailedUpDto.getCarType() == null) { + //下面放修改的具体方法 + //国家或地区 + //如果页面的国家地区为空,就把数据库里的国家地区字段也设为空 + updateListMethod(detailedUpDto); + return "其他清单添加成功"; + } + //如果是车辆修改 + else if (detailedUpDto.getCarType() != null) { + //就判断页面的值和数据库里的值是否相等 + for (int i = 0; i < sarLawsDetailedLists.size(); i++) { + //判断数据库里的数据的车型类别字段是否为空 + if (null == sarLawsDetailedLists.get(i) || null == sarLawsDetailedLists.get(i).getCarType()) { + System.out.println("数据库里第" + (i + 1) + "条的车型类别字段长度为空,不重复,目前可以添加"); + } else if (Objects.equals(detailedUpDto.getCarType(), list.getCarType())) { + System.out.println("页面的数据和数据库里存的当前数据相同,说明没有做更改,允许提交"); + } + //相等就不许添加 + else if (!Objects.equals(detailedUpDto.getCarType(), list.getCarType()) && Objects.equals(detailedUpDto.getCarType(), sarLawsDetailedLists.get(i).getCarType())) { + System.out.println("数据库里第" + (i + 1) + "条的车型类别字段和页面一样,重复,不许添加"); + carEditFlag = false; + } + } + } + //如果是国家修改 + else if (detailedUpDto.getCountryArea() != null) { + for (int i = 0; i < sarLawsDetailedLists.size(); i++) { + //就先判断数据库里的数据的国家/地区字段是否为空 + if (null == sarLawsDetailedLists.get(i) || null == sarLawsDetailedLists.get(i).getCountryArea()) { + System.out.println("数据库里第" + (i + 1) + "条的国家地区字段长度为空,不重复,目前可以添加"); + } else if (Objects.equals(detailedUpDto.getCountryArea(), list.getCountryArea())) { + System.out.println("页面的数据和数据库里存的当前数据相同,说明没有做更改,允许提交"); + } + //再判断页面字段长度是否与数据库里的长度一样,如果长度不一样,允许新增 + else if (detailedUpDto.getCountryArea().length() != sarLawsDetailedLists.get(i).getCountryArea().length()) { + System.out.println("数据库里第" + (i + 1) + "条的国家地区字段长度和页面的国家地区字段长度不一样,不重复,目前可以添加"); + } + //如果不为空且长度一样 + else { + //判断页面的国家地区是单选还是多选(判断能不能拆) + if (detailedUpDto.getCountryArea().contains(",")) { + System.out.println("页面是多选"); + //如果数据库里的国家地区字段存在",",说明是多选,如果不存在说明是单选 + if (sarLawsDetailedLists.get(i).getCountryArea().contains(",")) { + System.out.println("数据库是多选,如果页面字段拆分之后都包含于数据库字段拆分之后,则说明重复,目前不许添加"); + System.out.println("页面字段为" + detailedUpDto.getCountryArea()); + //页面字段以“,”为分隔符拆分后的结果 + String[] frontCountryArea = detailedUpDto.getCountryArea().split(","); + //数据库字段以“,”为分隔符拆分后的结果 + String[] databaseCountryArea = sarLawsDetailedLists.get(i).getCountryArea().split(","); + + //如果页面字段拆分之后都包含于数据库字段拆分之后,则说明重复,不许添加 + for (int j = 0; j < frontCountryArea.length; j++) { + //如果数据库包含了页面字段的所有值,说明这俩完全相同,重复,不许添加 + List databaseCountryAreaList = Arrays.asList(databaseCountryArea); + if (!Objects.equals(detailedUpDto.getCountryArea(), list.getCountryArea()) && databaseCountryAreaList.contains(frontCountryArea[j])) { + System.out.println("数据库" + databaseCountryAreaList); + System.out.println("页面" + frontCountryArea[j]); + System.out.println("数据库里的字段包含页面里的字段,可能重复,目前不许修改"); + multiEditFlag = false; + } else { + System.out.println("数据库" + databaseCountryAreaList); + System.out.println("页面" + frontCountryArea[j]); + System.out.println("数据库里的字段和页面字段虽然长度相同,但是里面有不一样的元素,可以修改"); + multiEditFlag = true; + } + } + if (multiEditFlag == true) { + System.out.println("长度相同,只要有一个不重复,就可以添加"); + } else { + System.out.println("长度相同,整个循环下来都重复,说明两个字段重复,不许添加"); + break; + } + } + } else { + System.out.println("页面是单选"); + + //如果数据库里的国家地区字段存在",",说明是多选,如果不存在说明是单选 + if (sarLawsDetailedLists.get(i).getCountryArea().contains(",")) { + System.out.println("数据库是多选,肯定不重复,目前可以添加"); + } else { + System.out.println("数据库是单选,如果数据库里的字段和页面的字段相等,重复,不许添加"); + //如果数据库里的字段和页面的字段相等,重复,不许添加 + if (!Objects.equals(detailedUpDto.getCountryArea(), list.getCountryArea()) && Objects.equals(sarLawsDetailedLists.get(i).getCountryArea(), detailedUpDto.getCountryArea())) { + System.out.println("数据库里的字段和页面的字段相等,重复,不许添加"); + singleEditFlag = false; + break; + } else { + System.out.println("数据库里的字段和页面的字段不相等,不重复,允许添加"); + } + } + } + } + } + } + + //如果整个循环下来都没有重复,则可以添加,不然就说明有重复,不能添加 + if (carEditFlag == true && multiEditFlag == true && singleEditFlag == true) { + //下面放添加的具体方法 + //国家或地区 + //如果页面的国家地区为空,就把数据库里的国家地区字段也设为空 + updateListMethod(detailedUpDto); + return "车型类别清单修改成功"; + //添加方法结束 + } else if (carEditFlag == false) { + //0表示添加成功,1表示添加失败 + return "车型类别清单修改失败"; + } + + //如果循环完整个数据库,都没有重复使当前数据无法添加,则添加 + if (multiEditFlag == true && singleEditFlag == true && carEditFlag == true) { + //下面放添加的具体方法 + //国家或地区 + //如果页面的国家地区为空,就把数据库里的国家地区字段也设为空 + updateListMethod(detailedUpDto); + //0表示添加成功,1表示添加失败 + return "国家/地区清单修改成功"; + //添加方法结束 + } else { + //0表示添加成功,1表示添加失败 + return "国家/地区清单修改失败"; + } + + + } + + private void updateListMethod(DetailedUpDto detailedUpDto) { + //list是数据库里根据id查出来的数据;detailedUpDto是页面传回来的数据 + SarLawsDetailedList list = sarLawsDetailedListDao.selectById(detailedUpDto.getId()); + + if (StringUtils.isBlank(detailedUpDto.getCountryArea())) list.setCountryArea(null); + else if ("null".equals(detailedUpDto.getCountryArea())) ; + //把数据库里的国家地区字段设为页面的国家地区 + else list.setCountryArea(detailedUpDto.getCountryArea()); + //车型类别 + if (StringUtils.isBlank(detailedUpDto.getCarType())) list.setCarType(null); + else if ("null".equals(detailedUpDto.getCarType())) ; + else list.setCarType(detailedUpDto.getCarType()); + //清单类别 + if (StringUtils.isBlank(detailedUpDto.getDetailedList())) list.setDetailedList(null); + else if ("null".equals(detailedUpDto.getDetailedList())) ; + else list.setDetailedList(detailedUpDto.getDetailedList()); + //清单名称 + if (StringUtils.isBlank(detailedUpDto.getDetailedListName())) list.setDetailedListName(null); + else if ("null".equals(detailedUpDto.getDetailedListName())) ; + else list.setDetailedListName(detailedUpDto.getDetailedListName()); + //适用领域 + if (StringUtils.isBlank(detailedUpDto.getApplicationScope())) list.setApplicationScope(null); + else if ("null".equals(detailedUpDto.getApplicationScope())) ; + else list.setApplicationScope(detailedUpDto.getApplicationScope()); + //清单详情 + if (StringUtils.isBlank(detailedUpDto.getRemark())) list.setRemark(null); + else if ("null".equals(detailedUpDto.getRemark())) ; + list.setRemark(detailedUpDto.getRemark()); + //版本号 + if (StringUtils.isBlank(detailedUpDto.getDetailedListVision())) list.setDetailedListVision(null); + else if ("null".equals(detailedUpDto.getDetailedListVision())) ; + list.setDetailedListVision(detailedUpDto.getDetailedListVision()); + //更新时间 + list.setUpdateTime(new Date()); + //更新人 + if (StringUtils.isBlank(detailedUpDto.getReNewPeople())) list.setUpdatePeople(null); + else if ("null".equals(detailedUpDto.getReNewPeople())) ; + else list.setUpdatePeople(detailedUpDto.getReNewPeople()); + + //更新人 + if (StringUtils.isBlank(detailedUpDto.getDetailedListState())) list.setDetailedListState(null); + else if ("null".equals(detailedUpDto.getDetailedListState())) ; + else list.setDetailedListState(detailedUpDto.getDetailedListState()); + //文件 + if (StringUtils.isBlank(detailedUpDto.getFileIds())) list.setFileIds(null); + else if ("null".equals(detailedUpDto.getFileIds())) ; + else list.setFileIds(detailedUpDto.getFileIds()); + + sarLawsDetailedListDao.updateById(list); + String src = "\"\""; + if (src.equals(detailedUpDto.getInforlist()) || null != detailedUpDto.getInforlist()) { + + List timeDto = new ArrayList<>(); + if (detailedUpDto.getInforlist().contains(",")) { + String[] id = new String[]{}; + String[] putTime = new String[]{}; + String[] zcc = new String[]{}; + String[] xcx = new String[]{}; + String[] syrz = new String[]{}; + if (StringUtils.isNotEmpty(detailedUpDto.getInforlist())) { + id = detailedUpDto.getInforlist().split(","); + } + if (StringUtils.isNotEmpty(detailedUpDto.getInforlist1())) { + putTime = detailedUpDto.getInforlist1().split(";"); + } + if (StringUtils.isNotEmpty(detailedUpDto.getInforlist2())) { + zcc = detailedUpDto.getInforlist2().split(";"); + } + if (StringUtils.isNotEmpty(detailedUpDto.getInforlist3())) { + xcx = detailedUpDto.getInforlist3().split(";"); + } + if(StringUtils.isNotEmpty(detailedUpDto.getInforlist4())){ + syrz=detailedUpDto.getInforlist4().split(";"); + } + for (int a = 0; a < id.length; a++) { + TimeDto dto = new TimeDto(); + dto.setStandId(id[a]); + if (putTime.length <= a) { + dto.setSsrq(null); + } else { + dto.setSsrq(putTime[a]); + } + if (xcx.length <= a) { + dto.setXcxssrqgj(null); + } else { + dto.setXcxssrqgj(xcx[a]); + } + if (zcc.length <= a) { + dto.setZccssrqgj(null); + } else { + dto.setZccssrqgj(zcc[a]); + } + if (syrz.length <= a) { + dto.setSyrz(null); + } else { + dto.setSyrz(syrz[a]); + } + timeDto.add(dto); + } + } else { + TimeDto dto = new TimeDto(); + dto.setStandId(detailedUpDto.getInforlist()); + dto.setSsrq(detailedUpDto.getInforlist1()); + dto.setXcxssrqgj(detailedUpDto.getInforlist2()); + dto.setZccssrqgj(detailedUpDto.getInforlist3()); + dto.setSyrz(detailedUpDto.getInforlist4()); + timeDto.add(dto); + } + service.updateDetailedLaws(detailedUpDto.getId(), timeDto); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("detailed_list_id", detailedUpDto.getId()); + List sarLawsAttrDetailedLists = sarLawsAttrDetailedListDao.selectList(wrapper); + List list1 = new ArrayList<>(); + List list2 = new ArrayList<>(); + //避免出现数据丢失 处理一下适用认证信息 + Hashtable hashtable = new Hashtable<>(); + if (sarLawsAttrDetailedLists.size() > 0) { + sarLawsAttrDetailedLists.forEach(sarLawsAttrDetailedList -> { + dealWithHashTableData(list1, list2, hashtable, sarLawsAttrDetailedList); + }); + } + list1.removeAll(Arrays.asList(detailedUpDto.getInforlist().split(","))); + if (list1.size() > 0) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.in("stand_id", list1); + List res = sarLawsAttrDetailedListDao.selectList(wrapper1); + if (res.size() > 0) { + res.forEach(sarLawsAttrDetailedList -> { + dealWithHashTableData(list1, list2, hashtable, sarLawsAttrDetailedList); + }); + } + + + res.forEach(sarLawsAttrDetailedList -> { + list1.remove(sarLawsAttrDetailedList.getStandId()); + }); +// //前面筛选出 移除认证清单 +// if (null!=list1 && list1.size()>0){ +// sarStandardsInfoDao.updateISRELATEACCESSById("1", list1); +// } + + } + //剩下的数据是需要加入到认证清单的 + list2.removeAll(list1); + //下面写消息队列了开始 + createUpdateMQService.sendMQ(hashtable, list1, list2); +// //更新标准是否纳入认证清单 +// sarStandardsInfoDao.updateISRELATEACCESSById("1", Arrays.asList(detailedUpDto.getInforlist().split(","))); + + } + } + + private void dealWithHashTableData(List list1, List list2, Hashtable hashtable, SarLawsAttrDetailedList sarLawsAttrDetailedList) { + list1.add(sarLawsAttrDetailedList.getStandId()); + list2.add(sarLawsAttrDetailedList.getStandId()); + if (null != hashtable.get(sarLawsAttrDetailedList.getStandId()) && !"-".equals(sarLawsAttrDetailedList.getSyrz())) { + if (sarLawsAttrDetailedList.getSyrz().contains(",")) { + List middle = new ArrayList<>(Arrays.asList(sarLawsAttrDetailedList.getSyrz().split(","))); + middle.forEach(s -> { + String as = hashtable.get(sarLawsAttrDetailedList.getStandId()); + if (!as.contains(s)) { + hashtable.put(sarLawsAttrDetailedList.getStandId(), as + "," + s); + } + }); + } else { + hashtable.put(sarLawsAttrDetailedList.getStandId(), hashtable.get(sarLawsAttrDetailedList.getStandId()) + "," + sarLawsAttrDetailedList.getSyrz()); + } + } else { +// 先确定hashTable中不为空 + if (null!=sarLawsAttrDetailedList.getSyrz() && !"-".equals(sarLawsAttrDetailedList.getSyrz())) { + hashtable.put(sarLawsAttrDetailedList.getStandId(), sarLawsAttrDetailedList.getSyrz()); + } + } + + } + + + @Override + public SarLawsDetailedList selSarLawDetailById(String id) { + return baseMapper.selectById(id); + } + + + @Autowired + private ISarLawsAttrDetailedListService sarLawsAttrDetailedListService; + + + @Override + public void standardToLaws(String countryArea, TimeDto timeDto) { + + if (countryArea == null) { + countryArea = ""; + } + + + /** + * 加入对应"国家/地区"的清单列表 + */ + //清单id + //标准id + + //1.获取标准清单的"国家/地区" + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("country_area", "id"); + //查询清单中的国家地区和清单id + List sarLawsDetailedLists = sarLawsDetailedListDao.selectList(wrapper); + //2.判断修改的标准的"国家/地区"与清单中的是否一致,一致则添加到清单中,不一致不作处理 + String[] split = countryArea.split(","); //拆分标准中的国家地区 + + + //遍历清单 对比国家地区 + for (SarLawsDetailedList lawsDetailed : sarLawsDetailedLists) { + if (lawsDetailed.getCountryArea() == null) { + continue; + } + String[] sarLawsCounties = lawsDetailed.getCountryArea().split(",");//拆分清单中的国家地区 + // 对比清单列表中的国家地区,是否一致 + Arrays.sort(split); + Arrays.sort(sarLawsCounties); + if (Arrays.equals(split, sarLawsCounties)) { + + //一致时插入表并关联detailedListId和standId + ArrayList timeDtos = new ArrayList<>(); + timeDtos.add(timeDto); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("stand_id", timeDto.getStandId()); + + + //如果目标清单中已存标准在则更新 懒得写更新(⓿_⓿) 直接删掉,再重新插入 + if (sarLawsAttrDetailedListDao.selectCount(queryWrapper) > 0) { + sarLawsAttrDetailedListDao.delete(queryWrapper); + } + + sarLawsAttrDetailedListService.insertDetailedList(lawsDetailed.getId(), timeDtos); + //更新标准是否纳入认证清单 + sarStandardsInfoDao.updateISRELATEACCESSById("1", Arrays.asList(timeDto.getStandId())); + break; + } + } + + } + + + @Override + public List importData(MultipartFile file, StringBuilder stringBuilder) { + List res = ExcelImportUtilByWk.readExcelpublic(ExportEmptyModelDto.class, file, stringBuilder); + //数据字典数据组装 + Map dicTypeEO = dicTypeEOService.getDicTypeListCode(); + Map dict = new HashMap<>(); + List> arr = (List>) dicTypeEO.get("SYRZCLASS"); + arr.forEach(stringStringMap -> { + dict.put(stringStringMap.get("label"), stringStringMap.get("value")); + }); + if (CollectionUtils.isEmpty(res)) { + stringBuilder.append("请勿导入空文件;"); + } + //先校验是否存在一堆空数据 + if (null != res && "".equals(stringBuilder.toString())) { + int i = 1; + for (ExportEmptyModelDto e : res) { + if (null == e.getStandNumber() || e.getStandNumber().isEmpty()) { + stringBuilder.append("第" + i + "行标准编号不能为空;"); + } + if (null == e.getSyrz() || e.getSyrz().isEmpty()) { + stringBuilder.append("第" + i + "行适用认证不能为空;"); + } + i++; + } + } + //数据校验 先做重复交验+再做是否存在校验 + if (null != res && "".equals(stringBuilder.toString())) { + for (ExportEmptyModelDto re : res) { + if (!(re.getSsrq().contains(",") || re.getSsrq().contains(","))) { + if(StringUtils.isNotEmpty(re.getSsrq())){ + Date date = org.apache.poi.ss.usermodel.DateUtil + .getJavaDate(Double.parseDouble(re.getSsrq())); + DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + re.setSsrq(format.format(date)); + } + } + if (!(re.getXcxssrqgj().contains(",") || re.getXcxssrqgj().contains(","))) { + if(StringUtils.isNotEmpty(re.getXcxssrqgj())) { + Date date = org.apache.poi.ss.usermodel.DateUtil + .getJavaDate(Double.parseDouble(re.getXcxssrqgj())); + DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + re.setXcxssrqgj(format.format(date)); + } + } + if (!(re.getZccssrqgj().contains(",") || re.getZccssrqgj().contains(","))) { + if(StringUtils.isNotEmpty(re.getZccssrqgj())) { + Date date = org.apache.poi.ss.usermodel.DateUtil + .getJavaDate(Double.parseDouble(re.getZccssrqgj())); + DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + re.setZccssrqgj(format.format(date)); + } + } + } + + for (int i = 0; i < res.size(); i++) { + for (int j = 0; j < res.size(); j++) { + String a = res.get(i).getStandNumber().replaceAll(" ", "").replaceAll(" ", ""); + String b = res.get(j).getStandNumber().replaceAll(" ", "").replaceAll(" ", ""); + if (a.equals(b) && i < j && !"1".equals(res.get(j).getCompareFlag())) { + stringBuilder.append("第" + (i + 1) + "行数据与第" + (j + 1) + "行数据重复;"); + res.get(j).setCompareFlag("1"); + } + } + } + //如果没有重复 那么错误提示标识应该为空 现在开始验证标准是否存在 + if ("".equals(stringBuilder.toString())) { + int i = 1; + for (ExportEmptyModelDto exportEmptyModel : res) { + SearchStandContext searchStandContext = new SearchStandContext(); + searchStandContext.setStandCode(exportEmptyModel.getStandNumber()); + List standData = standDateDao.searchStandDataThree(searchStandContext); + if (null != standData && standData.size() > 0) { + exportEmptyModel.setId(standData.get(0).getStandId()); + } + if (null == exportEmptyModel.getId() || exportEmptyModel.getId().isEmpty()) { + stringBuilder.append("第" + i + "行标准号不存在,请检查标准号是否正确;"); + } + //验证完标准号 再来验证适用认证 写的是否合理 字典编码 SYRZCLASS0 + exportEmptyModel.setSyrz(exportEmptyModel.getSyrz().trim().replaceAll(",", ",")); + if (exportEmptyModel.getSyrz().contains(",") || null != dict.get(exportEmptyModel.getSyrz())) { + if (exportEmptyModel.getSyrz().contains(",")) { + StringBuilder syrz = new StringBuilder(); + StringBuilder sy = new StringBuilder(); + List syrzs = new ArrayList<>(Arrays.asList(exportEmptyModel.getSyrz().split(","))); + syrzs.forEach(s -> { + if (null != dict.get(s.trim())) { + syrz.append(dict.get(s.trim()) + ","); + } else { + syrz.append("-1" + ","); + } + sy.append(s.trim() + ","); + }); + if (syrz.toString().contains("-1")) { + stringBuilder.append("第" + i + "行适用认证填写错误,请检查;"); + } else { + exportEmptyModel.setSyrzCode(syrz.toString().substring(0, syrz.toString().length() - 1)); + exportEmptyModel.setSyrz(sy.toString().substring(0, sy.toString().length() - 1)); + } + } else { + if (null != dict.get(exportEmptyModel.getSyrz())) { + exportEmptyModel.setSyrzCode(dict.get(exportEmptyModel.getSyrz())); + } else { + stringBuilder.append("第" + i + "行适用认证填写错误,请检查;"); + } + } + } else { + stringBuilder.append("第" + i + "行适用认证填写错误,请检查;"); + } + i++; + + } + } + //查询数据并赋值 + if (stringBuilder.toString().length() <= 0) { + dealWithData(res); + } + return res; + } else { + return null; + } + } + + public List dealWithData(List res) { + List result = new ArrayList<>(); + //判定是不是存在于国内海外标准中 + StringBuilder stringBuilder = new StringBuilder(); + Map map = new HashMap<>(); + res.forEach(ExportEmptyModel -> { + if (null != ExportEmptyModel.getId() && !ExportEmptyModel.getId().isEmpty()) { + stringBuilder.append(ExportEmptyModel.getId() + ","); + map.put(ExportEmptyModel.getId(), ExportEmptyModel); + } + }); + String[] ids = stringBuilder.toString().substring(0, stringBuilder.toString().length() - 1).split(","); + + + SarStandardsInfoEOPage infoEOPage = new SarStandardsInfoEOPage(); + infoEOPage.setUserId(LoginUserUtil.getUserId()); + infoEOPage.setPage(1); + infoEOPage.setPageSize(map.keySet().size() + 1); + infoEOPage.setValidFlag("0"); + infoEOPage.setIdlist(ids); + List infos = null; + try { + infos = sarStandardsInfoService.getSarStandardsInfoPageBak1(infoEOPage); + } catch (Exception e) { + e.printStackTrace(); + } + if (null != infos && infos.size() > 0) { + infos.forEach(sarStandardsInfo -> { + ExportEmptyModelDto model = map.get(sarStandardsInfo.getId()); + model.setStandName(sarStandardsInfo.getStandName()); + model.setStandEnName(sarStandardsInfo.getStandEnName()); + model.setNylx(null != sarStandardsInfo.getAttrInfoCaseMap().get("nylx") ? sarStandardsInfo.getAttrInfoCaseMap().get("nylx").toString() : ""); + model.setSycpx(null != sarStandardsInfo.getAttrInfoCaseMap().get("sycpx") ? sarStandardsInfo.getAttrInfoCaseMap().get("sycpx").toString() : ""); + model.setZrbm(null != sarStandardsInfo.getAttrInfoCaseMap().get("zrbm") ? sarStandardsInfo.getAttrInfoCaseMap().get("zrbm").toString() : ""); + model.setSycx(null != sarStandardsInfo.getAttrInfoCaseMap().get("cllx") ? sarStandardsInfo.getAttrInfoCaseMap().get("cllx").toString() : ""); + result.add(model); + }); + } + + //判断是否在政策里 + SarBussionessStandEOPage page = new SarBussionessStandEOPage(); + page.setPage(1); + page.setPageSize(map.keySet().size() + 1); + page.setValidFlag("0"); + page.setUserId(LoginUserUtil.getUserId()); + page.setIdlist(ids); + page.setIsKU("0"); + List sarBussionessStands = null; + try { + sarBussionessStands = sarBussionessStandService.getSarBussionStandPage(page); + } catch (Exception e) { + e.printStackTrace(); + } + if (null != sarBussionessStands && sarBussionessStands.size() > 0) { + sarBussionessStands.forEach(sarStandardsInfo -> { + ExportEmptyModelDto model = map.get(sarStandardsInfo.getId()); + model.setStandName(sarStandardsInfo.getStandName()); + model.setStandEnName(sarStandardsInfo.getStandEnName()); + model.setNylx(null != sarStandardsInfo.getAttrInfoCaseMap().get("nylx") ? sarStandardsInfo.getAttrInfoCaseMap().get("nylx").toString() : ""); + model.setSycpx(null != sarStandardsInfo.getAttrInfoCaseMap().get("sycpx") ? sarStandardsInfo.getAttrInfoCaseMap().get("sycpx").toString() : ""); + model.setZrbm(null != sarStandardsInfo.getAttrInfoCaseMap().get("zrbm") ? sarStandardsInfo.getAttrInfoCaseMap().get("zrbm").toString() : ""); + model.setSycx(null != sarStandardsInfo.getAttrInfoCaseMap().get("cllx") ? sarStandardsInfo.getAttrInfoCaseMap().get("cllx").toString() : ""); + result.add(model); + }); + } + + //判断是否在企标里 List getSarStandardsInfoPage(SarLawsStandInfoPage page); + SarLawsStandInfoPage lawsStandInfoPage = new SarLawsStandInfoPage(); + lawsStandInfoPage.setPage(1); + lawsStandInfoPage.setPageSize(map.keySet().size() + 1); + lawsStandInfoPage.setValidFlag("0"); + lawsStandInfoPage.setIdlist(ids); + lawsStandInfoPage.setUserId(LoginUserUtil.getUserId()); + List sarLawsStandInfos = null; + try { + sarLawsStandInfos = sarLawsStandInfoService.getSarStandardsInfoPageBak(lawsStandInfoPage); + } catch (Exception e) { + e.printStackTrace(); + } + if (null != sarLawsStandInfos && sarLawsStandInfos.size() > 0) { + sarLawsStandInfos.forEach(sarStandardsInfo -> { + ExportEmptyModelDto model = map.get(sarStandardsInfo.getId()); + model.setStandName(sarStandardsInfo.getLawsName()); + model.setStandEnName(sarStandardsInfo.getLawsEnName()); + model.setNylx(null != sarStandardsInfo.getAttrInfoCaseMap().get("nylxlaws") ? sarStandardsInfo.getAttrInfoCaseMap().get("nylxlaws").toString() : ""); + //没有使用产品线 +// model.setSycpx(null!=sarStandardsInfo.getLawsSycx() ?sarStandardsInfo.getLawsSycx():""); + model.setZrbm(null != sarStandardsInfo.getAttrInfoCaseMap().get("zrbmlaws") ? sarStandardsInfo.getAttrInfoCaseMap().get("zrbmlaws").toString() : ""); + model.setSycx(null != sarStandardsInfo.getLawsSycx() ? sarStandardsInfo.getLawsSycx() : ""); + result.add(model); + }); + } + + + return result; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/controller/SarLawsFileController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/controller/SarLawsFileController.java new file mode 100644 index 00000000..c4342677 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/controller/SarLawsFileController.java @@ -0,0 +1,57 @@ +package com.adc.da.slrs.sarLawsFile.controller; + + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarLawsFile.service.ISarLawsFileService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarLawsFile.entity.SarLawsFile; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-10-28 +*/ +@RestController +@Api(description = "|SarLawsFile|") +@RequestMapping("/${restPath}/lawss/sarLawsFile") +public class SarLawsFileController extends BaseController { + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private ISarLawsFileService iSarLawsFileService; + + @ApiOperation(value = "|SarBussStandFileEO|查询转换后的文档详情") + @GetMapping("/queryConvertAtt") + /*@RequiresPermissions("lawss:sarLawsFile:list")*/ + public ResponseMessage queryConvertAtt(String attId) throws Exception { + List getList = iSarLawsFileService.selectFileByAttId(attId); + SarLawsFile sarBussStandFileEO = new SarLawsFile(); + if(getList != null && !getList.isEmpty()){ + sarBussStandFileEO = getList.get(0); + AttFileEO attFileEO = attFileEOService.getFileInfo(attId); + if(attFileEO != null){ + sarBussStandFileEO.setFileOldName(attFileEO.getOldFileName()); + } +// readStandOrLawsLogService.sendReadSOLLog("BUSS",sarBussStandFileEO); + return Result.success(sarBussStandFileEO); + } else { + return Result.success(null); + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/dao/SarLawsFileDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/dao/SarLawsFileDao.java new file mode 100644 index 00000000..534dff86 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/dao/SarLawsFileDao.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.sarLawsFile.dao; + +import com.adc.da.slrs.sarLawsFile.entity.SarLawsFile; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Repository +public interface SarLawsFileDao extends BaseMapper { + + List selectFileBylawsId(String lawsId); + + List selectFileBylawsIdAndId(SarLawsFile laws); + + List selectFileByAttId(String attId); + + List selectFileMsgByAttId(String attId); + + List selectFileByResId(SarLawsFile sarBussStandFileEO); + + int deleteBylawsId(String standId); + + int insertForeach(List list); //批量新增 + + int insertSelective(SarLawsFile sarBussStandFile); + + int updateByPrimaryKeySelective(SarLawsFile sarBussStandFile); + + int deleteByPrimaryKey(String value); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/entity/SarLawsFile.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/entity/SarLawsFile.java new file mode 100644 index 00000000..7cdd6112 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/entity/SarLawsFile.java @@ -0,0 +1,98 @@ +package com.adc.da.slrs.sarLawsFile.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsFile对象", description="") +public class SarLawsFile extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableField("ID") + private String id; + + @ApiModelProperty(value = "政策ID") + @TableField("LAWS_ID") + private String lawsId; + + @ApiModelProperty(value = "政策文件分类") + @TableField("LAWS_FILE_CLASSIFY") + private String lawsFileClassify; + + @ApiModelProperty(value = "文件主键") + @TableField("ATT_ID") + private String attId; + + @ApiModelProperty(value = "文件名称") + @TableField("FILE_NAME") + private String fileName; + + @ApiModelProperty(value = "文件后缀") + @TableField("FILE_SUFFIX") + private String fileSuffix; + + @ApiModelProperty(value = "使用模式(SOURCE_FILE原文件,WEB_FILE转换后文件)") + @TableField("USE_MODEL") + private String useModel; + + @ApiModelProperty(value = "加密密码") + @TableField("PASSWORD") + private String password; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "转换原文件id") + @TableField("ORI_ATT_ID") + private String oriAttId; + + + @TableField(exist = false) + private List idList = new ArrayList<>(); + + @TableField(exist = false) + private String useModule; + @TableField(exist = false) + private String resId; + @TableField(exist = false) + private Integer pageCount; + @TableField(exist = false) + private String fileOldName; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/service/ISarLawsFileService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/service/ISarLawsFileService.java new file mode 100644 index 00000000..c8327fbd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/service/ISarLawsFileService.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarLawsFile.service; + +import com.adc.da.slrs.sarLawsFile.entity.SarLawsFile; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +public interface ISarLawsFileService extends IService { + + List selectFileByAttId(String attId) throws Exception; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/service/impl/SarLawsFileServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/service/impl/SarLawsFileServiceImpl.java new file mode 100644 index 00000000..fed799f0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsFile/service/impl/SarLawsFileServiceImpl.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.sarLawsFile.service.impl; + +import com.adc.da.slrs.sarLawsFile.entity.SarLawsFile; +import com.adc.da.slrs.sarLawsFile.dao.SarLawsFileDao; +import com.adc.da.slrs.sarLawsFile.service.ISarLawsFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Service +public class SarLawsFileServiceImpl extends ServiceImpl implements ISarLawsFileService { + + @Override + public List selectFileByAttId(String attId) throws Exception{ + return this.baseMapper.selectFileByAttId(attId); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/controller/SarLawsInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/controller/SarLawsInfoController.java new file mode 100644 index 00000000..55024a5c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/controller/SarLawsInfoController.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.sarLawsInfo.controller; + + +import cn.hutool.core.util.ZipUtil; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; +import com.adc.da.slrs.sarLawsInfo.service.ISarLawsInfoService; +import com.adc.da.util.LoginUserUtil; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-01 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库--法规信息") +@RequestMapping("/sarLawsInfo/sar-laws-info") +public class SarLawsInfoController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SarLawsInfoController.class); + + @Autowired + private ISarLawsInfoService sarLawsInfoEOService; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/dao/SarLawsInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/dao/SarLawsInfoDao.java new file mode 100644 index 00000000..817149b8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/dao/SarLawsInfoDao.java @@ -0,0 +1,110 @@ +package com.adc.da.slrs.sarLawsInfo.dao; + +import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; +import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.RecommendVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Repository +public interface SarLawsInfoDao extends BaseMapper { + + Integer selectLawsColumn(@Param("columnName") String columnName); + + List queryByPage(SarLawsInfoEOPage page); + + Integer queryByCount(SarLawsInfoEOPage page); + + /** + * @return com.adc.da.lawss.entity.SarLawsInfo + * @Author yangxuenan + * @Description 通过id查询详细信息 + * Date 2018/9/21 16:42 + * @Param [id] + **/ + SarLawsInfo selectInfoById(String id); + + /** + * @return java.util.List + * @Author yangxuenan + * @Description 分页查询配置法规 + * Date 2018/9/30 17:02 + * @Param [page] + **/ + List queryConfigLawsByPage(SarLawsInfoEOPage page); + + int queryConfigLawsByCount(SarLawsInfoEOPage page); + + + //liwenxuan:标准法规更新数量及清单:国内法规 + Integer selectCounterLawsCountINLAND(Date visitTime); + + //liwenxuan:标准法规更新数量及清单:国内法规All + Integer selectCounterLawsCountINLANDAll(); + + //liwenxuan:标准法规更新数量及清单:国外法规 + Integer selectCounterLawsCountFOREIGN(Date visitTime); + + //liwenxuan:标准法规更新数量及清单:国外法规All + Integer selectCounterLawsCountFOREIGNAll(); + + /** + * 功能描述: 通过文件号查询详细信息 + * + * @param: [Number] + * @return: com.adc.da.lawss.entity.SarLawsInfo + * @auther: SYT + * @date: 2018/10/11 20:34 + */ + List selectInfoByNumber(@Param("number") String number, @Param("resName") String resName, @Param("type") String type); + + + /** + * 搜索中心查询相关推荐 + * + * @param: + * @auther: gaoyan + * @date: 2018/11/10 9:22 + */ + List selectRecommendLaws(SarLawsInfoEOPage pagenew); + + List selectCloseLaws(SarLawsInfoEOPage pagenew); + + /** + * 功能描述: 查询所有小于当前时间的即将实施的条目 + * + * @param: [lawsEO] + * @return: java.util.List + * @auther: SYT + * @date: 2018/11/16 15:24 + */ + List queryByPutTimeList(SarLawsInfo lawsEO); + + int updateSarStandReplaced(SarLawsInfo lawsInfoEO); + + int updateRelacedNumByNumber(SarLawsInfoEOPage lawsInfoEO); + + List selectLawsInfoByIdAndRole(SarLawsInfoEOPage lawsEOPage); + + int queryByCountForES(SarLawsInfoEOPage lawsEOPage); + + List queryByPageForES(SarLawsInfoEOPage lawsEOPage); + + int updateByPrimaryKeyForSynchron(SarLawsInfo SarLawsInfo); + + int deleteByPrimaryKeyFlag(String id); + + SarLawsInfo selectByPrimaryKeyAndTime(SarLawsInfo lawsEO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/entity/SarLawsInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/entity/SarLawsInfo.java new file mode 100644 index 00000000..776480d4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/entity/SarLawsInfo.java @@ -0,0 +1,160 @@ +package com.adc.da.slrs.sarLawsInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.sys.entity.DicTypeEO; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsInfo对象", description="") +public class SarLawsInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "法规分类(INLAND国内,FOREIGN国外)") + @TableField("LAWS_TYPE") + private String lawsType; + + @ApiModelProperty(value = "国家地区") + @TableField("COUNTRY") + private String country; + + @ApiModelProperty(value = "文件性质") + @TableField("LAWS_PROPERTY") + private String lawsProperty; + + @ApiModelProperty(value = "文件号") + @TableField("LAWS_NUMBER") + private String lawsNumber; + + @ApiModelProperty(value = "文件名称") + @TableField("LAWS_NAME") + private String lawsName; + + @ApiModelProperty(value = "文件状态") + @TableField("LAWS_STATE") + private String lawsState; + + @ApiModelProperty(value = "发布日期") + @TableField("ISSUE_TIME") + private String issueTime; + + @ApiModelProperty(value = "实施日期") + @TableField("PUT_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date putTime; + + @ApiModelProperty(value = "代替文件号") + @TableField("REPLACE_LAWS_NUM") + private String replaceLawsNum; + + @ApiModelProperty(value = "文件英文名称") + @TableField("LAWS_EN_NAME") + private String lawsEnName; + + @ApiModelProperty(value = "被代替文件号") + @TableField("REPLACED_LAWS_NUM") + private String replacedLawsNum; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "内容摘要") + @TableField("SYNOPSIS") + private String synopsis; + + @ApiModelProperty(value = "引用标准") + @TableField("CITE_STAND") + private String citeStand; + + @ApiModelProperty(value = "被引用标准") + @TableField("CITED_STAND") + private String citedStand; + + @ApiModelProperty(value = "是否法规清单相关(0否 1是)") + @TableField("IS_RELATE_ACCESS") + private String isRelateAccess; + + @TableField(exist = false) + private String menuId; + @TableField(exist = false) + private String stateName; + @TableField(exist = false) + private String countryName; + @TableField(exist = false) + private String propertyName; + //记录收藏id + @TableField(exist = false) + private String collectId; + //记录是否修改了替代文件号 + @TableField(exist = false) + private int upReplaceNumFlag; + //记录是否修改了文件号 + @TableField(exist = false) + private int upNumFlag; + //新增字段 + @TableField(exist = false) + private String sychronId; + @TableField(exist = false) + private Map attrInfoMap; //属性表字段与值 + @TableField(exist = false) + private List dicTypeList; + @TableField(exist = false) + private String sarLawsAttrEOStr; //新增修改时属性表信息 + @TableField(exist = false) + private String fileIds; //全部文件ID + @TableField(exist = false) + private List attrInfoList = new ArrayList<>(); + @TableField(exist = false) + private String accessCountry;//纳入清单的国家 + @TableField(exist = false) + private String prcNum;//流程编号 + @TableField(exist = false) + private String textStatus;//文本状态 + @TableField(exist = false) + private String allPutTime; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsInfoEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsInfoEOPage.java new file mode 100644 index 00000000..03e39fbe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsInfoEOPage.java @@ -0,0 +1,113 @@ +package com.adc.da.slrs.sarLawsInfo.page; + +import com.adc.da.base.page.BasePage; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ + +@Data +@ApiModel(value="SarLawsInfo分页对象", description="") +public class SarLawsInfoEOPage extends BasePage { + + private Date modifyTime; + private Date modifyTime1; + private Date modifyTime2; + private String modifyTimeOperator = "="; + private Date creationTime; + private Date creationTime1; + private Date creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String relevanceFile; + private String relevanceFileOperator = "="; + private String opinionFile; + private String opinionFileOperator = "="; + private String lawsFile; + private String lawsFileOperator = "="; + private String linkUri; + private String linkUriOperator = "="; + private String responsibleUnit; + private String responsibleUnitOperator = "="; + private String applyAuth; + private String applyAuthOperator = "like"; + private String energyKind; + private String energyKindOperator = "like"; + private String applyArctic; + private String applyArcticOperator = "like"; + private String replaceLawsNum; + private String replacedLawsNum; + //需求变动,特此修改(byl),原 private String replaceLawsNumOperator = "="; + private String replaceLawsNumOperator = "like"; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime1; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime2; + private String putTimeOperator = "="; + private String issueTime; + private String issueTime1; + private String issueTime2; + private String issueTimeOperator = "="; + private String lawsState; + private String lawsStateOperator = "="; + private String issueUnit; + private String issueUnitOperator = "="; + private String lawsName; + private String lawsNameOperator = "like"; + private String lawsNumber; + private String lawsNumberOperator = "like"; + private String lawsProperty; + private String lawsPropertyOperator = "="; + private String country; + private String countryOperator = "="; + private String lawsType; + private String lawsTypeOperator = "="; + private String id; + private String idOperator = "="; + private String menuId; + private List menuIdList; + //为了在sql中区分修改操作 + private String updateFlag; + //新加字段 + private String synopsis; + private String lawsEnName; + private String category; + private String[] replaceLawsNumList; + private String[] applyArcticList; + private String[] energyKindList; + private String[] applyAuthList; + private List menuRoleList; + private String numberName; + private String synchronId; + private String[] idlist; + // 树结构增加搜索条件 + private String collectMenuId; + private String labelMenuId; + private String advanceSearchVOStr; + private String advanceSearchStr; + private String isRelateAccess; + private String ids; + private String proType; + private String userId; + private Integer nowOrder; + private Integer nowOrderBy; + private String orderBy1 = "SAR_LAWS_INFO.issue_time"; + private String order1 = "desc"; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsItemValEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsItemValEOPage.java new file mode 100644 index 00000000..439873da --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsItemValEOPage.java @@ -0,0 +1,39 @@ +package com.adc.da.slrs.sarLawsInfo.page; + +import com.adc.da.base.page.BasePage; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ + +@Data +@ApiModel(value="", description="") +public class SarLawsItemValEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String propertyVal; + private String propertyValOperator = "="; + private String propertyType; + private String propertyTypeOperator = "="; + private String lawsItemId; + private String lawsItemIdOperator = "="; + private String id; + private String idOperator = "="; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsItemsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsItemsEOPage.java new file mode 100644 index 00000000..45639734 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/page/SarLawsItemsEOPage.java @@ -0,0 +1,62 @@ +package com.adc.da.slrs.sarLawsInfo.page; + +import com.adc.da.base.page.BasePage; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ + +@Data +@ApiModel(value="", description="") +public class SarLawsItemsEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String remarks; + private String remarksOperator = "="; + private String responsibleUnit; + private String responsibleUnitOperator = "like"; + private String energyKind; + private String energyKindOperator = "="; + private String applyArctic; + private String applyArcticOperator = "="; + private String tackTime; + private String tackTime1; + private String tackTime2; + private String tackTimeOperator = "="; + private String parts; + private String partsOperator = "="; + private String itemsName; + private String itemsNameOperator = "="; + private String itemsNum; + private String itemsNumOperator = "="; + private String lawsId; + private String lawsIdOperator = "="; + private String id; + private String idOperator = "="; + private String updateFlag; + private String processFlag; + private String nameOrRequest; + private String[] idlist; + private String fileType; + private String proType; + private String productId; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/service/ISarLawsInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/service/ISarLawsInfoService.java new file mode 100644 index 00000000..674e724a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/service/ISarLawsInfoService.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarLawsInfo.service; + +import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; +import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.poi.ss.usermodel.Row; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarLawsInfoService extends IService { + + List getSarLawsForAct(SarLawsInfoEOPage page) throws Exception; + + boolean isRowEmpty(Row row); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/service/impl/SarLawsInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/service/impl/SarLawsInfoServiceImpl.java new file mode 100644 index 00000000..83dc5033 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsInfo/service/impl/SarLawsInfoServiceImpl.java @@ -0,0 +1,193 @@ +package com.adc.da.slrs.sarLawsInfo.service.impl; + +import com.adc.da.common.SelectionTypeEnum; +import com.adc.da.person.entity.PersonMsgEO; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.person.service.IPersonMsgEOService; +import com.adc.da.slrs.sarLawsAttrInfo.dao.SarLawsAttrInfoDao; +import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; +import com.adc.da.slrs.sarLawsInfo.dao.SarLawsInfoDao; +import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; +import com.adc.da.slrs.sarLawsInfo.service.ISarLawsInfoService; +import com.adc.da.slrs.sarLawsItems.dao.SarLawsItemsDao; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.utils.util.ConcatStringUtil; +import com.adc.da.utils.util.DateUtil; +import com.adc.da.utils.util.FieldConvertUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Clob; +import java.util.*; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarLawsInfoServiceImpl extends ServiceImpl implements ISarLawsInfoService { + + @Autowired + private SarLawsInfoDao dao; + + @Autowired + private IPersonMsgEOService personMsgEOService; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private SarLawsAttrInfoDao sarLawsAttrInfoEODao; + + @Autowired + private SarLawsItemsDao sarLawsItemsEODao; + + public List getSarLawsForAct(SarLawsInfoEOPage page) throws Exception { + Integer rowCount = dao.queryByCount(page); + page.getPager().setRowCount(rowCount); + List sarlist = dao.queryByPage(page); + attrInfo(sarlist); + return sarlist; + } + + public void attrInfo (List sarlist) throws Exception { + for(SarLawsInfo row : sarlist){ + attrInfoDetails(row); + } + } + + public void attrInfoDetails (SarLawsInfo row) throws Exception { + List clobFieldList = InitStandAttrUtil.clobFieldListLaws; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarLawsAttrInfoEODao.selectLawsFieldAndData(fieldInfo,row.getId()); +// Map getAttrMap = new HashMap<>(); + if (clobFieldList != null && !clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField,fieldValue); + } + } + // 组织机构和人员 + Map newMap = new HashMap<>(); + if (getAttrMap != null) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + if ("EOPSSRQ".equals(name)){ + if (entry.getValue() != null && entry.getValue().toString().length()>10){ + String time = DateUtil.formatStrUTCToDateStr(entry.getValue().toString()); + entry.setValue(time); + } + } + if ("SVPPS".equals(name)) { + Set set = new HashSet(); + // 查询条款svpps + Set itemSvpps = sarLawsItemsEODao.selectSvppsByStandId(row.getId(),null,null); + if (itemSvpps != null && !itemSvpps.isEmpty()) { + set.addAll(itemSvpps); + } + Object value = entry.getValue(); + if (value != null && StringUtils.isNotBlank(value.toString())) { + set.addAll(Arrays.asList(value.toString().split(","))); + } + String allVal = ConcatStringUtil.concatSet(set); + if (StringUtils.isNotBlank(allVal)) { + entry.setValue(allVal); + value = sysInfoEOService.getSvppsNamesByIds(allVal); + } + newMap.put(name + "Name",value); + } else if ("YQLX".equals(name)) { + //要求类型来源于条款 + Set itemClaimType = sarLawsItemsEODao.selectClaimTypesByStandId(row.getId(),null,null); + if (itemClaimType != null && itemClaimType.size() > 1) { + entry.setValue("RENVECPFGT"); + } else if (itemClaimType != null && itemClaimType.size() == 1) { + entry.setValue(itemClaimType.toArray()[0]); + } + } else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + String value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapLaws.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getOrgNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getUserNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + value = sysInfoEOService.getRoleNamesByIds(value); + newMap.put(name + "Name",value); + } + } + } + getAttrMap.putAll(newMap); + } else { + getAttrMap = new HashMap<>(); + for (String field : fieldInfo.split(",")) { + getAttrMap.put(field,""); + } + } + row.setAttrInfoMap(getAttrMap); + } + } + + //判断row是否为空 空返回true + public boolean isRowEmpty(Row row) { + if (null == row) { + return true; + } + int firstCellNum = row.getFirstCellNum(); //第一个列位置 + int lastCellNum = row.getLastCellNum(); //最后一列位置 + int nullCellNum = 0; //空列数量 + for (int c = firstCellNum; c < lastCellNum; c++) { + Cell cell = row.getCell(c); + if (null == cell || CellType.BLANK == cell.getCellType()) { + nullCellNum ++; + continue; + } + String value = ""; + switch (cell.getCellType()) { + case NUMERIC: // 数字 + //如果为时间格式的内容 + value = String.valueOf(cell.getNumericCellValue()); + break; + case STRING: // 字符串 + value = cell.getStringCellValue(); + break; + case BOOLEAN: // Boolean + value = cell.getBooleanCellValue() + ""; + break; + case FORMULA: // 公式 + value = cell.getCellFormula() + ""; + break; + default: + break; + } + if (StringUtils.isEmpty(value)) { + nullCellNum ++; + } + } + //所有列都为空 + if (nullCellNum == (lastCellNum - firstCellNum)) { + return true; + } + return false; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/controller/SarLawsItemValController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/controller/SarLawsItemValController.java new file mode 100644 index 00000000..2476d097 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/controller/SarLawsItemValController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarLawsItemVal.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarLawsItemVal.entity.SarLawsItemVal; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-10-28 +*/ +@RestController +@Api(description = "|SarLawsItemVal|") +@RequestMapping("/sarLawsItemVal/sar-laws-item-val") +public class SarLawsItemValController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/dao/SarLawsItemValDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/dao/SarLawsItemValDao.java new file mode 100644 index 00000000..8de561b3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/dao/SarLawsItemValDao.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarLawsItemVal.dao; + +import com.adc.da.slrs.sarLawsItemVal.entity.SarLawsItemVal; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Repository +public interface SarLawsItemValDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/entity/SarLawsItemVal.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/entity/SarLawsItemVal.java new file mode 100644 index 00000000..bda17ee6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/entity/SarLawsItemVal.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.sarLawsItemVal.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsItemVal对象", description="") +public class SarLawsItemVal extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "法规条目ID") + @TableField("LAWS_ITEM_ID") + private String lawsItemId; + + @ApiModelProperty(value = "参数类型") + @TableField("PROPERTY_TYPE") + private String propertyType; + + @ApiModelProperty(value = "参数内容") + @TableField("PROPERTY_VAL") + private String propertyVal; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private BigDecimal validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private LocalDateTime creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private LocalDateTime modifyTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/service/ISarLawsItemValService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/service/ISarLawsItemValService.java new file mode 100644 index 00000000..db17c23b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/service/ISarLawsItemValService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarLawsItemVal.service; + +import com.adc.da.slrs.sarLawsItemVal.entity.SarLawsItemVal; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +public interface ISarLawsItemValService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/service/impl/SarLawsItemValServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/service/impl/SarLawsItemValServiceImpl.java new file mode 100644 index 00000000..5390b598 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItemVal/service/impl/SarLawsItemValServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarLawsItemVal.service.impl; + +import com.adc.da.slrs.sarLawsItemVal.entity.SarLawsItemVal; +import com.adc.da.slrs.sarLawsItemVal.dao.SarLawsItemValDao; +import com.adc.da.slrs.sarLawsItemVal.service.ISarLawsItemValService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Service +public class SarLawsItemValServiceImpl extends ServiceImpl implements ISarLawsItemValService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/controller/SarLawsItemsController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/controller/SarLawsItemsController.java new file mode 100644 index 00000000..c19611be --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/controller/SarLawsItemsController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarLawsItems.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(description = "|SarLawsItems|") +@RequestMapping("/sarLawsItems/sar-laws-items") +public class SarLawsItemsController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/dao/SarLawsItemsDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/dao/SarLawsItemsDao.java new file mode 100644 index 00000000..5691cdc6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/dao/SarLawsItemsDao.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.sarLawsItems.dao; + +import com.adc.da.slrs.sarLawsInfo.page.SarLawsItemsEOPage; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import com.adc.da.slrs.sarStandItems.entity.FindSarItemsPageReqDTO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandItems.page.SarStandItemsEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Set; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Repository +public interface SarLawsItemsDao extends BaseMapper { + + List querySarItemAndInterpretation(FindSarItemsPageReqDTO page); + + Set selectClaimTypesByStandId(@Param("standId") String standId, @Param("fileType") String fileType, @Param("idList") String[] idList); + + Set selectSvppsByStandId(@Param("standId") String standId, @Param("fileType") String fileType, @Param("idList") String[] idList); + + List queryByList(SarLawsItemsEOPage page); + + int deleteByStandIdAndFileType(@Param("standId") String standId, @Param("fileType") String fileType); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/entity/SarLawsItems.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/entity/SarLawsItems.java new file mode 100644 index 00000000..a8c25912 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/entity/SarLawsItems.java @@ -0,0 +1,186 @@ +package com.adc.da.slrs.sarLawsItems.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsItems对象", description="") +public class SarLawsItems extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "法规ID") + @TableField("LAWS_ID") + private String lawsId; + + @ApiModelProperty(value = "条目编号") + @TableField("ITEMS_NUM") + private String itemsNum; + + @ApiModelProperty(value = "条目内容") + @TableField("ITEMS_NAME") + private String itemsName; + + @ApiModelProperty(value = "涉及零部件") + @TableField("PARTS") + private String parts; + + @ApiModelProperty(value = "特殊生效时间") + @TableField("TACK_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date tackTime; + + @ApiModelProperty(value = "适用车型") + @TableField("APPLY_ARCTIC") + private String applyArctic; + + @ApiModelProperty(value = "能源类型") + @TableField("ENERGY_KIND") + private String energyKind; + + @ApiModelProperty(value = "责任部门") + @TableField("RESPONSIBLE_UNIT") + private String responsibleUnit; + + @ApiModelProperty(value = "备注") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "实施要点") + @TableField("MAINPOINTS_IMPEMENTATION") + private String mainpointsImpementation; + + @ApiModelProperty(value = "条款要求") + @TableField("TERMS_CONDITIONS") + private String termsConditions; + + @ApiModelProperty(value = "FO") + @TableField("FO") + private String fo; + + @ApiModelProperty(value = "责任工程师") + @TableField("DUTY_ENGINEER") + private String dutyEngineer; + + @ApiModelProperty(value = "SVPPS") + @TableField("SVPPS") + private String svpps; + + @ApiModelProperty(value = "要求类型") + @TableField("CLAIM_TYPE") + private String claimType; + + @ApiModelProperty(value = "企标覆盖关系") + @TableField("BUS_STAND_COVER") + private String busStandCover; + + @ApiModelProperty(value = "文件类型") + @TableField("FILE_TYPE") + private String fileType; + + @ApiModelProperty(value = "新车型实施日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("XCXSSRQLAWS") + private Date xcxssrqlaws; + + @ApiModelProperty(value = "在产车实施日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("ZCXSSRQLAWS") + private Date zcxssrqlaws; + + @TableField(exist = false) + private String applyArcticShow; + @TableField(exist = false) + private String energyKindShow; + @TableField(exist = false) + private String responsibleUnitShow; + @TableField(exist = false) + private String mainPointImplementation; //实施要点 + + //新加字段带show + @TableField(exist = false) + private String foShow;//FO + @TableField(exist = false) + private String dutyEngineerShow;//责任工程师 + @TableField(exist = false) + private String svppsShow;//SVPPS + @TableField(exist = false) + private String claimTypeShow;//要求类型 + @TableField(exist = false) + private String busStandCoverShow;//企标覆盖关系 + @TableField(exist = false) + private String fileTypeShow;//文件类型 + @TableField(exist = false) + private String jspg;//评估状态 + @TableField(exist = false) + private List idList; + @TableField(exist = false) + private String itemState;//条款状态 + @TableField(exist = false) + private String isInvolveAccess; + @TableField(exist = false) + private String wczrsh; + + @TableField(exist = false) + private String emergyKindShow; + //新加字段 + @TableField(exist = false) + private String foUser;//FO + //新加字段带show + @TableField(exist = false) + private String oldId; + @TableField(exist = false) + private SarCompStatusInfo pgForm; + + //责任工程师 + @TableField(exist = false) + private String responsibleEngineer; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/service/ISarLawsItemsService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/service/ISarLawsItemsService.java new file mode 100644 index 00000000..506bbd16 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/service/ISarLawsItemsService.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarLawsItems.service; + +import com.adc.da.slrs.sarLawsInfo.page.SarLawsItemsEOPage; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarLawsItemsService extends IService { + + List queryItemsByList(SarLawsItemsEOPage page, String resType); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/service/impl/SarLawsItemsServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/service/impl/SarLawsItemsServiceImpl.java new file mode 100644 index 00000000..9d593fc2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsItems/service/impl/SarLawsItemsServiceImpl.java @@ -0,0 +1,58 @@ +package com.adc.da.slrs.sarLawsItems.service.impl; + +import com.adc.da.slrs.sarLawsInfo.page.SarLawsItemsEOPage; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import com.adc.da.slrs.sarLawsItems.dao.SarLawsItemsDao; +import com.adc.da.slrs.sarLawsItems.service.ISarLawsItemsService; +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class SarLawsItemsServiceImpl extends ServiceImpl implements ISarLawsItemsService { + + @Autowired + private SarLawsItemsDao dao; + + @Autowired + private SysInfoEOService sysInfoEOService; + + public List queryItemsByList(SarLawsItemsEOPage page, String resType){ + List itemsEOList = dao.queryByList(page); + List actitemsEOList = new ArrayList<>(); + if (itemsEOList != null && !itemsEOList.isEmpty()) { + for (SarLawsItems itemsEO : itemsEOList) { + ActSarItemsEO actSarItemsEO = new ActSarItemsEO(); + actSarItemsEO.setResId(itemsEO.getId()); + actSarItemsEO.setResNum(itemsEO.getItemsNum()); + actSarItemsEO.setResType(resType); + actSarItemsEO.setResName(itemsEO.getItemsName()); + actSarItemsEO.setDeptName(itemsEO.getResponsibleUnit()); + actSarItemsEO.setOrgName(itemsEO.getResponsibleUnitShow()); + actSarItemsEO.setFoId(itemsEO.getFo()); + String foShow = sysInfoEOService.getRoleNamesByIds(itemsEO.getFo()); + actSarItemsEO.setFoName(foShow); + actSarItemsEO.setTermsConditions(itemsEO.getTermsConditions()); + actSarItemsEO.setResState(itemsEO.getItemState()); + actSarItemsEO.setRoleId(itemsEO.getDutyEngineer()); + String dutyShow = sysInfoEOService.getRoleNamesByIds(itemsEO.getDutyEngineer()); + actSarItemsEO.setRoleName(dutyShow); + actitemsEOList.add(actSarItemsEO); + } + } + return actitemsEOList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/controller/SarLawsMenuController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/controller/SarLawsMenuController.java new file mode 100644 index 00000000..8914f59b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/controller/SarLawsMenuController.java @@ -0,0 +1,81 @@ +package com.adc.da.slrs.sarLawsMenu.controller; + + +import com.adc.da.slrs.sarBussStandMenu.service.ISarBussStandMenuService; +import com.adc.da.slrs.sarLawsMenu.service.ISarLawsMenuService; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarLawsMenu.entity.SarLawsMenu; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-10-28 +*/ +@RestController +@Api(description = "|SarLawsMenu|") +@RequestMapping("/${restPath}/lawss/sarLawsMenu") +public class SarLawsMenuController extends BaseController { + + @Autowired + private ISarLawsMenuService lawsMenuService; + + @Autowired + private ITsResourceService sarMenuEOService; + + @ApiOperation(value = "|SarBussStandMenuEO|修改") + @PutMapping("/removeStandInfo") +// @RequiresPermissions("lawss:sarStandMenu:update") + public ResponseMessage removeStandInfo(@RequestBody SarLawsMenu standardsInfoEO) throws Exception { + String[] idList = standardsInfoEO.getIdlist(); + int count = 0; + if(idList != null){ + for(String id : idList){ + SarLawsMenu menuEO = new SarLawsMenu(); + menuEO.setLawsId(id); + menuEO.setMenuId(standardsInfoEO.getMenuId()); + //删除所选目录下关联 + String oldMenuId = standardsInfoEO.getOldMenuId(); + if (StringUtils.isEmpty(oldMenuId)) { + oldMenuId = standardsInfoEO.getMenuId(); + } + menuEO.setOldMenuId(oldMenuId); + count += lawsMenuService.deleteByMenuId(menuEO); + //查询是否还有与其他节点的关联,若没有则增加与根节点的关联 + List getList = lawsMenuService.selectAllMenuByStandId(menuEO); + if (getList == null || getList.isEmpty()) { + // 查询根节点 + TsResource sarMenuEO = new TsResource(); + sarMenuEO.setSorDivide("LAWS_STAND"); + List getRootMenu = sarMenuEOService.queryMenuByDis(sarMenuEO); + menuEO.setMenuId(getRootMenu.get(0).getId()); + menuEO.setId(UUIDUtils.randomUUID20()); + menuEO.setValidFlag(0); + lawsMenuService.save(menuEO); + } + } + } + if(count>0){ + return Result.success("0","移除成功!",true); + } else { + return Result.error("移除失败!"); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/dao/SarLawsMenuDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/dao/SarLawsMenuDao.java new file mode 100644 index 00000000..40ea0076 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/dao/SarLawsMenuDao.java @@ -0,0 +1,37 @@ +package com.adc.da.slrs.sarLawsMenu.dao; + +import com.adc.da.slrs.sarBussStandMenu.entity.NewmenuOldmenuVO; +import com.adc.da.slrs.sarLawsMenu.entity.SarLawsMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Repository +public interface SarLawsMenuDao extends BaseMapper { + List selectByLawsInfo(SarLawsMenu sarLawsMenuEO); + + int updateMenuidByMenuid(NewmenuOldmenuVO var1); + + List selectByLawsId(String lawsId); + + void deleteByLawsId(String lawsId); + + List selectMenuByMenuParentId(SarLawsMenu sarLawsMenuEO); + + int updateByLawsIdAndMenuId(SarLawsMenu sarLawsMenuEO); + + int deleteByLawsIdAndMenuId(SarLawsMenu sarLawsMenuEO); + + List selectAllMenuByStandId(SarLawsMenu sarStandMenuEO); + + int deleteByMenuId(SarLawsMenu sarLawsMenuEO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/entity/SarLawsMenu.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/entity/SarLawsMenu.java new file mode 100644 index 00000000..357bf9bd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/entity/SarLawsMenu.java @@ -0,0 +1,57 @@ +package com.adc.da.slrs.sarLawsMenu.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsMenu对象", description="") +public class SarLawsMenu extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "法规ID") + @TableField("LAWS_ID") + private String lawsId; + + @ApiModelProperty(value = "目录ID") + @TableField("MENU_ID") + private String menuId; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @TableField(exist = false) + private String oldMenuId; + + @TableField(exist = false) + private String[] idlist; + + @TableField(exist = false) + private List menuIds; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/entity/SarLawsMenuEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/entity/SarLawsMenuEOPage.java new file mode 100644 index 00000000..57a5d015 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/entity/SarLawsMenuEOPage.java @@ -0,0 +1,87 @@ +package com.adc.da.slrs.sarLawsMenu.entity; + +import com.adc.da.sys.common.BasePage; + + +/** + * 功能:SAR_LAWS_MENU SarLawsMenuEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarLawsMenuEOPage extends BasePage { + + private String validFlag; + private String validFlagOperator = "="; + private String menuId; + private String menuIdOperator = "="; + private String lawsId; + private String lawsIdOperator = "="; + private String id; + private String idOperator = "="; + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getMenuId() { + return this.menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getMenuIdOperator() { + return this.menuIdOperator; + } + + public void setMenuIdOperator(String menuIdOperator) { + this.menuIdOperator = menuIdOperator; + } + + public String getLawsId() { + return this.lawsId; + } + + public void setLawsId(String lawsId) { + this.lawsId = lawsId; + } + + public String getLawsIdOperator() { + return this.lawsIdOperator; + } + + public void setLawsIdOperator(String lawsIdOperator) { + this.lawsIdOperator = lawsIdOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/service/ISarLawsMenuService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/service/ISarLawsMenuService.java new file mode 100644 index 00000000..57958324 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/service/ISarLawsMenuService.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.sarLawsMenu.service; + +import com.adc.da.slrs.sarLawsMenu.entity.SarLawsMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +public interface ISarLawsMenuService extends IService { + + List selectAllMenuByStandId(SarLawsMenu sarStandMenuEO); + + int deleteByMenuId (SarLawsMenu sarStandMenuEO); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/service/impl/SarLawsMenuServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/service/impl/SarLawsMenuServiceImpl.java new file mode 100644 index 00000000..717da250 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsMenu/service/impl/SarLawsMenuServiceImpl.java @@ -0,0 +1,37 @@ +package com.adc.da.slrs.sarLawsMenu.service.impl; + +import com.adc.da.slrs.sarLawsMenu.entity.SarLawsMenu; +import com.adc.da.slrs.sarLawsMenu.dao.SarLawsMenuDao; +import com.adc.da.slrs.sarLawsMenu.service.ISarLawsMenuService; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Service +public class SarLawsMenuServiceImpl extends ServiceImpl implements ISarLawsMenuService { + + @Autowired + private ITsResourceService sarMenuEOService; + + public int deleteByMenuId (SarLawsMenu sarStandMenuEO){ + List menuIds = sarMenuEOService.getChildMenuList(sarStandMenuEO.getOldMenuId()); + sarStandMenuEO.setMenuIds(menuIds); + return this.baseMapper.deleteByMenuId(sarStandMenuEO); + } + + @Override + public List selectAllMenuByStandId(SarLawsMenu sarStandMenuEO){ + return this.baseMapper.selectAllMenuByStandId(sarStandMenuEO); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/controller/SarLawsStandInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/controller/SarLawsStandInfoController.java new file mode 100644 index 00000000..9620fbbb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/controller/SarLawsStandInfoController.java @@ -0,0 +1,304 @@ +package com.adc.da.slrs.sarLawsStandInfo.controller; + + +import com.adc.da.common.ReadExcel; +import com.adc.da.exception.AdcDaBaseException; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoExport; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoPage; +import com.adc.da.slrs.sarLawsStandInfo.service.ISarLawsStandInfoService; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarAdvanceSearchVO; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.util.utils.StringUtils; +import com.adc.da.utils.util.LawsStandExportUtil; +import com.adc.da.utils.util.SarAdvanceSearchUtil; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Date; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-10-25 +*/ +@RestController +@Api(description = "|SarLawsStandInfo|") +@RequestMapping("/${restPath}/lawss/sarLawsInfo") +public class SarLawsStandInfoController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarLawsStandInfoController.class); + + @Autowired + private ISarLawsStandInfoService sarLawsInfoEOService; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private ITsResourceService iTsResourceService; + + + @Autowired + private ITsUserService tsUserService; + + @Autowired + private IDicTypeEOService dicTypeEOService; + + @ApiOperation(value = "|SarLawsInfoEO|分页查询") + @GetMapping("/page") + /*@RequiresPermissions("lawss:sarLawsInfo:page")*/ + public ResponseMessage> page(SarLawsStandInfoPage page) throws Exception { + if (null != page.getNowOrderBy()) { + switch (page.getNowOrderBy()) { + case 1: + page.setOrderByA("SAR_LAWS_STAND_INFO.ISSUE_TIME");//发布日期 + break; + case 2: + page.setOrderByA("XCXSSRQLAWS"); + break; + case 3: + page.setOrderByA("standStatusShow");//文本状态 + break; + default: + page.setNowOrder(null); + break; + } + if (null != page.getNowOrder()) { + switch (page.getNowOrder()) { + case 1: + page.setOrder1("desc"); + break; + case 2: + page.setOrder1("asc"); + break; + default: + page.setOrder1(null); + break; + } + } + } + + + if (com.adc.da.util.utils.StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + String advanceStr = SarAdvanceSearchUtil.createSql(searchList,"SAR_LAWS_ATTR_INFO"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + + List rows = sarLawsInfoEOService.getSarStandardsInfoPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarLawsInfoEO|分页查询") + @GetMapping("/pageLaws") + /*@RequiresPermissions("lawss:sarLawsInfo:page")*/ + public ResponseMessage> pageLaws(SarLawsStandInfoPage page) throws Exception { + + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + + if (com.adc.da.util.utils.StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + String advanceStr = SarAdvanceSearchUtil.createSql(searchList,"SAR_LAWS_ATTR_INFO"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + + List rows = sarLawsInfoEOService.getSarStandardsInfoPageBak(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + private void nowOrderFunc(SarLawsStandInfoPage page) { + switch (page.getNowOrderBy()) { + case 1: + page.setOrderByA("SAR_LAWS_STAND_INFO.ISSUE_TIME");//发布日期 + break; + case 2: + page.setOrderByA("XCXSSRQLAWS");//实施日期 + break; + case 3: + page.setOrderByA("standStatusShow");//文本状态 + break; + default: + page.setNowOrder(null); + break; + } + if (null != page.getNowOrder()) { + switch (page.getNowOrder()) { + case 1: + page.setOrder1("desc"); + break; + case 2: + page.setOrder1("asc"); + break; + default: + page.setOrder1(null); + break; + } + } + } + + @ApiOperation(value = "|SarLawsStandInfo|详情") + @GetMapping("/getStandInfoById") + //@RequiresPermissions("lawss:sarStandardsInfo:get") + public ResponseMessage find(String id) throws Exception { + SarLawsStandInfo result = sarLawsInfoEOService.selectStandardsInfoByKey(id); + return Result.success(result); + } + + @ApiOperation(value = "|SarLawsStandInfo|详情") + @GetMapping("/getStandInfoUpdateById") + //@RequiresPermissions("lawss:sarStandardsInfo:get") + public ResponseMessage getStandInfoUpdateById(String id) throws Exception { + SarLawsStandInfo result = sarLawsInfoEOService.selectStandardsInfoUpdateByKey(id); + String collectId = personCollectEOService.queryCollectByUserAndId(id); + result.setCollectId(collectId); + return Result.success(result); + } + + @ApiOperation(value = "|SarLawsStandInfo|导出excel") + @GetMapping(value = "/exportStandardsInfoExcel") + public void exportStandardsInfoExcel(String exportContent, String exportType, String exportName,String userId, HttpServletResponse response, + HttpServletRequest request) throws Exception { + List data = sarLawsInfoEOService.getExportData(exportType,exportContent,userId); + + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName)||exportName.equals("null")){ + exportName="政策库"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx",request)); + response.setContentType("application/force-download"); + // 导出所有数据 +// List data = sarLawsInfoEOService.getExportData(exportType,exportContent,userId); + workbook = LawsStandExportUtil.exportDatas(data); + + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarLawsStandInfo|确认配置标准") + @PostMapping("/saveStandardsMenu") + //@RequiresPermissions("lawss:sarBussionessStand:saveStandardsMenu") + public ResponseMessage saveStandardsMenu(@RequestBody SarLawsStandInfoPage standardsInfoEO){ + if ("wdsc".equals(standardsInfoEO.getMenuId()) || "gxhbq".equals(standardsInfoEO.getMenuId())) { + return Result.error("所选节点不支持配置标准"); + } else { + SarLawsStandInfoPage standlist = sarLawsInfoEOService.updateStandardsMenu(standardsInfoEO); + return Result.success(standardsInfoEO); + } + } + + @ApiOperation(value = "|SarLawsStandInfo|企业标准修改") + @PostMapping(value = "/updateSarLawsStandInfo") + public ResponseMessage updateSarLawsStandInfo(@RequestBody SarLawsStandInfo sarLawsStandInfo) throws Exception { + sarLawsStandInfo.setModifyTime(new Date()); + sarLawsInfoEOService.updateSarLawsStandInfo(sarLawsStandInfo); + return Result.success("","修改成功",sarLawsStandInfo); + } + + @ApiOperation(value = "|SarLawsStandInfo|删除") + @PostMapping("deleteSarLawsStandInfo") + public ResponseMessage delete(String ids) throws Exception { + SarLawsStandInfoPage sarLawsStandInfoPage = new SarLawsStandInfoPage(); + sarLawsStandInfoPage.setIdlist(ids.split(",")); + ResponseMessage result = sarLawsInfoEOService.deleteSarLawsStandInfo(sarLawsStandInfoPage); + logger.info("delete from SAR_BUSSIONESS_STAND where id = {}", ids); + return result; + } + + @ApiOperation(value = "|SarStandardsInfoEO|根据标准号查询") + @GetMapping("/queryInfoByStandNum") + //@RequiresPermissions("lawss:sarStandardsInfo:list") + public ResponseMessage queryInfoByStandNum(SarLawsStandInfoPage page) throws Exception { + page.setLawsNumber(page.getLawsNumber()); + List sarLawsStandInfoList = sarLawsInfoEOService.selectStandardsByStandNumber(page.getLawsNumber()); + if(!sarLawsStandInfoList.isEmpty()){ + return Result.success(sarLawsStandInfoList.get(0)); + } + return Result.success("0","政策已不存在"); + } + + /** + * 新增过程中验证标准号 + * + * @param page + * @return + */ + @ApiOperation(value = "|SarLawsStandInfo|验证输入的标准号") + @PostMapping("/validateStandNumber") + //@RequiresPermissions("lawss:sarStandardsInfo:selectReplaceStandNum") + public ResponseMessage validateStandNumber(SarLawsStandInfoPage page) throws Exception { + String sortName = ""; + String standNumShow = ""; + List getDicCode = dicTypeEOService.getDicEOByDicTypeCode(page.getStandSort()); + if(getDicCode!= null && getDicCode.size()>0){ + sortName = getDicCode.get(0).getDicTypeName(); + } + if (StringUtils.isNotEmpty(page.getLawsNumber())) { + List standlist = sarLawsInfoEOService.selectStandardsByStandNumber(page.getLawsNumber()); + if (standlist.size() > 0) { + if (StringUtils.isNotEmpty(page.getId())) { + // 如果是修改,判断id是否一样 + for (int i = 0; i < standlist.size(); i++) { + if (standlist.get(i).getId().equals(page.getId())) { + continue; + } else { + return Result.error(standNumShow + "政策编号已存在"); + } + } + return Result.success(); + } else { + return Result.error(standNumShow + "政策编号已存在"); + } + } else { + return Result.success(); + } + } else { + return Result.success(); + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/dao/SarLawsStandInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/dao/SarLawsStandInfoDao.java new file mode 100644 index 00000000..a8226dc6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/dao/SarLawsStandInfoDao.java @@ -0,0 +1,32 @@ +package com.adc.da.slrs.sarLawsStandInfo.dao; + +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoExport; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-10-25 + */ +@Repository +public interface SarLawsStandInfoDao extends BaseMapper { + + List getSarStandardsInfoPage(SarLawsStandInfoPage page); + List getSarStandardsInfoByNum(SarLawsStandInfoPage page); + + int getSarStandardsInfoCount(SarLawsStandInfoPage page); + + List selectStandardsInfoByKey(String id); + + List getSarStandardsExportInfo(SarLawsStandInfoPage page); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfo.java new file mode 100644 index 00000000..4b6117db --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfo.java @@ -0,0 +1,265 @@ +package com.adc.da.slrs.sarLawsStandInfo.entity; + +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.standardSplit.entity.SarStandAttrDetailsEO; +import com.adc.da.sys.entity.DicTypeEO; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.*; + +import com.baomidou.mybatisplus.annotation.TableField; +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 oracle.sql.DATE; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-10-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsStandInfo对象", description="") +public class SarLawsStandInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "政策分类 共四级,逐级选择-配置管理中维护") + @TableField("LAWS_TYPE") + private String lawsType; + + @ApiModelProperty(value = "政策编号") + @TableField("LAWS_NUMBER") + private String lawsNumber; + + @ApiModelProperty(value = "中文名称") + @TableField("LAWS_NAME") + private String lawsName; + + @ApiModelProperty(value = "英文名称") + @TableField("LAWS_EN_NAME") + private String lawsEnName; + + @ApiModelProperty(value = "政策文号") + @TableField("LAWS_NO") + private String lawsNo; + + @ApiModelProperty(value = "发文日期") + @TableField("ISSUE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTime; + + @ApiModelProperty(value = "发文单位") + @TableField("ISSUE_COMPANY") + private String issueCompany; + + @ApiModelProperty(value = "征集意见周期-起始时间") + @TableField("COMMENT_CYCLE_START") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String commentCycleStart; + + @ApiModelProperty(value = "征集意见周期-结束时间") + @TableField("COMMENT_CYCLE_END") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String commentCycleEnd; + + @ApiModelProperty(value = "文件状态-配置管理中维护") + @TableField("LAWS_TEXT_STATE") + private String lawsTextState; + + @ApiModelProperty(value = "适用区域-配置管理中维护") + @TableField("LAWS_SYQY") + private String lawsSyqy; + + @ApiModelProperty(value = "适用车型-配置管理中维护") + @TableField("LAWS_SYCX") + private String lawsSycx; + + @ApiModelProperty(value = "是/否(选择否,只有政策、政策中文名称是必填项目)") + @TableField("IS_RELATE_ACCESS") + private String isRelateAccess; + + @ApiModelProperty(value = "年度-可在配置管理中维护,根据发布日期自动带入可手动修改") + @TableField("LAWS_YEAR") + private String lawsYear; + + @ApiModelProperty(value = "福田转发通知文号") + @TableField("LAWS_NOTISYNC_NUM") + private String lawsNotisyncNum; + + @ApiModelProperty(value = "信息简报 xxx期次xxx板块") + @TableField("LAWS_BULLETIN") + private String lawsBulletin; + + @ApiModelProperty(value = "标签-可在配置管理中维护") + @TableField("LAWS_LABEL") + private String lawsLabel; + + @ApiModelProperty(value = "备注") + @TableField("LAWS_REMARK") + private String lawsRemark; + + @ApiModelProperty(value = "国家地区") + @TableField("COUNTRY") + private String country; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "参数1") + @TableField("PARAM1") + private Long param1; + + @ApiModelProperty(value = "参数2") + @TableField("PARAM2") + private String param2; + + // 非表字段 + @ApiModelProperty(value = "代替文件号") + @TableField(exist = false) + private String replaceFileNum; + + @ApiModelProperty(value = "被代替文件号") + @TableField(exist = false) + private String replacedFileNum; + + @TableField(exist = false) + private String processNum;//流程编号 + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String firstPutTime; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String putTimeShow; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTimeShow; + + @TableField(exist = false) + private String issueTimeStr; + + @TableField(exist = false) + private String putTimeStr; + + //目录ID 非标准信息表中的字段 + @TableField(exist = false) + private String menuId; + + @TableField(exist = false) + private String menuParentId; + + @TableField(exist = false) + private String standStatusShow; // 标准状态下拉框 --单选 + + @TableField(exist = false) + private String standNatrueShow; + + @TableField(exist = false) + private String standSortShow; + + @TableField(exist = false) + private String applyCountryShow; + + @TableField(exist = false) + private List standFileList = new ArrayList(); + + @TableField(exist = false) + private List opinionFilesList = new ArrayList(); + + @TableField(exist = false) + private List relevanceFileList = new ArrayList(); + + @TableField(exist = false) + private String collectId; + + //文件的类型 + @TableField(exist = false) + private String standFileClassify; + + //文件的下载id + @TableField(exist = false) + private String attId; + + //记录是否修改了替代文件号 + @TableField(exist = false) + private int upReplaceNumFlag; + //记录是否修改了文件号 + @TableField(exist = false) + private int upNumFlag; + // 数据库新加的字段 + + @TableField(exist = false) + private String remark;//备注 + + @TableField(exist = false) + private Map attrInfoMap = new LinkedHashMap<>(); //属性表字段与值 + + @TableField(exist = false) + private Map attrInfoCaseMap = new LinkedHashMap<>(); //属性表字段与值小写前端带入渲染 + + @TableField(exist = false) + private String sarStandAttrEOStr; //新增修改时属性表信息 + + @TableField(exist = false) + private String fileIds; //全部文件ID + + @TableField(exist = false) + private List attrInfoList = new ArrayList<>(); + + @TableField(exist = false) + private String standTextStatusShow; // 标准文本状态显示名称 + // 以下为非表中字段 + @TableField(exist = false) + private String countryShow; //国家地区显示名称 + @TableField(exist = false) + private String standStateShow; // 标准状态显示名称 + @TableField(exist = false) + private String standNatureShow; // 标准性质显示名称 + @TableField(exist = false) + private List dicTypeList = new ArrayList(); // 记录标准涉及到的所有数据字典数据 + + @TableField(exist = false) + private List itemsList = new ArrayList<>(); + @ApiModelProperty(value = "分解单条款内容") + @TableField(exist = false) + private Map mapItems = new TreeMap<>(); + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String XCXSSRQLAWS; // 新车实施日期 + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfoExport.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfoExport.java new file mode 100644 index 00000000..ab53c4bc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfoExport.java @@ -0,0 +1,298 @@ +package com.adc.da.slrs.sarLawsStandInfo.entity; + +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.standardSplit.entity.SarStandAttrDetailsEO; +import com.adc.da.sys.entity.DicTypeEO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 java.util.*; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-10-25 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsStandInfo对象", description="") +public class SarLawsStandInfoExport extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "政策分类 共四级,逐级选择-配置管理中维护") + @TableField("LAWS_TYPE") + private String lawsType; + + @ApiModelProperty(value = "政策编号") + @TableField("LAWS_NUMBER") + private String lawsNumber; + + @ApiModelProperty(value = "中文名称") + @TableField("LAWS_NAME") + private String lawsName; + + @ApiModelProperty(value = "英文名称") + @TableField("LAWS_EN_NAME") + private String lawsEnName; + + @ApiModelProperty(value = "政策文号") + @TableField("LAWS_NO") + private String lawsNo; + + @ApiModelProperty(value = "发文日期") + @TableField("ISSUE_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTime; + + @ApiModelProperty(value = "发文单位") + @TableField("ISSUE_COMPANY") + private String issueCompany; + + @ApiModelProperty(value = "征集意见周期-起始时间") + @TableField("COMMENT_CYCLE_START") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String commentCycleStart; + + @ApiModelProperty(value = "征集意见周期-结束时间") + @TableField("COMMENT_CYCLE_END") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String commentCycleEnd; + + @ApiModelProperty(value = "文件状态-配置管理中维护") + @TableField("LAWS_TEXT_STATE") + private String lawsTextState; + + @ApiModelProperty(value = "适用区域-配置管理中维护") + @TableField("LAWS_SYQY") + private String lawsSyqy; + + @ApiModelProperty(value = "适用车型-配置管理中维护") + @TableField("LAWS_SYCX") + private String lawsSycx; + + @ApiModelProperty(value = "是/否(选择否,只有政策、政策中文名称是必填项目)") + @TableField("IS_RELATE_ACCESS") + private String isRelateAccess; + + @ApiModelProperty(value = "年度-可在配置管理中维护,根据发布日期自动带入可手动修改") + @TableField("LAWS_YEAR") + private String lawsYear; + + @ApiModelProperty(value = "福田转发通知文号") + @TableField("LAWS_NOTISYNC_NUM") + private String lawsNotisyncNum; + + @ApiModelProperty(value = "信息简报 xxx期次xxx板块") + @TableField("LAWS_BULLETIN") + private String lawsBulletin; + + @ApiModelProperty(value = "标签-可在配置管理中维护") + @TableField("LAWS_LABEL") + private String lawsLabel; + + @ApiModelProperty(value = "备注") + @TableField("LAWS_REMARK") + private String lawsRemark; + + @ApiModelProperty(value = "国家地区") + @TableField("COUNTRY") + private String country; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "参数1") + @TableField("PARAM1") + private Long param1; + + @ApiModelProperty(value = "参数2") + @TableField("PARAM2") + private String param2; + + // 非表字段 + @ApiModelProperty(value = "代替文件号") + @TableField(exist = false) + private String replaceFileNum; + + @ApiModelProperty(value = "被代替文件号") + @TableField(exist = false) + private String replacedFileNum; + + @TableField(exist = false) + private String processNum;//流程编号 + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private String firstPutTime; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String putTimeShow; + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTimeShow; + + @TableField(exist = false) + private String issueTimeStr; + + @TableField(exist = false) + private String putTimeStr; + + //目录ID 非标准信息表中的字段 + @TableField(exist = false) + private String menuId; + + @TableField(exist = false) + private String menuParentId; + + @TableField(exist = false) + private String standStatusShow; // 标准状态下拉框 --单选 + + @TableField(exist = false) + private String standNatrueShow; + + @TableField(exist = false) + private String standSortShow; + + @TableField(exist = false) + private String applyCountryShow; + + @TableField(exist = false) + private List standFileList = new ArrayList(); + + @TableField(exist = false) + private List opinionFilesList = new ArrayList(); + + @TableField(exist = false) + private List relevanceFileList = new ArrayList(); + + @TableField(exist = false) + private String collectId; + + //文件的类型 + @TableField(exist = false) + private String standFileClassify; + + //文件的下载id + @TableField(exist = false) + private String attId; + + //记录是否修改了替代文件号 + @TableField(exist = false) + private int upReplaceNumFlag; + //记录是否修改了文件号 + @TableField(exist = false) + private int upNumFlag; + // 数据库新加的字段 + + @TableField(exist = false) + private String remark;//备注 + + @TableField(exist = false) + private Map attrInfoMap = new LinkedHashMap<>(); //属性表字段与值 + + @TableField(exist = false) + private Map attrInfoCaseMap = new LinkedHashMap<>(); //属性表字段与值小写前端带入渲染 + + @TableField(exist = false) + private String sarStandAttrEOStr; //新增修改时属性表信息 + + @TableField(exist = false) + private String fileIds; //全部文件ID + + @TableField(exist = false) + private List attrInfoList = new ArrayList<>(); + + @TableField(exist = false) + private String standTextStatusShow; // 标准文本状态显示名称 + // 以下为非表中字段 + @TableField(exist = false) + private String countryShow; //国家地区显示名称 + @TableField(exist = false) + private String standStateShow; // 标准状态显示名称 + @TableField(exist = false) + private String standNatureShow; // 标准性质显示名称 + @TableField(exist = false) + private List dicTypeList = new ArrayList(); // 记录标准涉及到的所有数据字典数据 + + @TableField(exist = false) + private List itemsList = new ArrayList<>(); + @ApiModelProperty(value = "分解单条款内容") + @TableField(exist = false) + private Map mapItems = new TreeMap<>(); + + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String XCXSSRQLAWS; // 新车实施日期 + + @TableField(exist = false) + private String SSRQLAWS; + @TableField(exist = false) + private String ZCXSSRQLAWS; + @TableField(exist = false) + private String ZCWBLAWS; + @TableField(exist = false) + private String GCWBLAWS; + @TableField(exist = false) + private String JDWJLAWS; + @TableField(exist = false) + private String CYSDLAWS; + @TableField(exist = false) + private String TGRLAWS; + @TableField(exist = false) + private String TGDWLAWS; + @TableField(exist = false) + private String NYLXLAWS; + @TableField(exist = false) + private String YYRZLAWS; + @TableField(exist = false) + private String ZRBMLAWS; + @TableField(exist = false) + private String ZRGCSLAWS; + @TableField(exist = false) + private String DTWJHLAWS; + @TableField(exist = false) + private String BDTWJHLAWS; + @TableField(exist = false) + private String YYBZZCLAWS; + @TableField(exist = false) + private String XGLC; + @TableField(exist = false) + private String CHJLLAWS; + @TableField(exist = false) + private String GLWJLAWS; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfoPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfoPage.java new file mode 100644 index 00000000..c995ecd7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/entity/SarLawsStandInfoPage.java @@ -0,0 +1,285 @@ +package com.adc.da.slrs.sarLawsStandInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.base.page.BasePage; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 oracle.sql.DATE; + +import java.util.Date; +import java.util.List; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-10-25 + */ +@Data +public class SarLawsStandInfoPage extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "政策分类 共四级,逐级选择-配置管理中维护") + private String lawsType; + + @ApiModelProperty(value = "政策编号") + private String lawsNumber; + + @ApiModelProperty(value = "中文名称") + private String lawsName; + + @ApiModelProperty(value = "英文名称") + private String lawsEnName; + + @ApiModelProperty(value = "政策文号") + private String lawsNo; + + @ApiModelProperty(value = "发文日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTime; + + @ApiModelProperty(value = "发文单位") + private String issueCompany; + + @ApiModelProperty(value = "征集意见周期-起始时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String commentCycleStart; + + @ApiModelProperty(value = "征集意见周期-结束时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String commentCycleEnd; + + @ApiModelProperty(value = "文件状态-配置管理中维护") + private String lawsTextState; + + @ApiModelProperty(value = "适用区域-配置管理中维护") + private String lawsSyqy; + + @ApiModelProperty(value = "适用车型-配置管理中维护") + private String lawsSycx; + + @ApiModelProperty(value = "是/否(选择否,只有政策、政策中文名称是必填项目)") + private String isRelateAccess; + + @ApiModelProperty(value = "年度-可在配置管理中维护,根据发布日期自动带入可手动修改") + private String lawsYear; + + @ApiModelProperty(value = "福田转发通知文号") + private String lawsNotisyncNum; + + @ApiModelProperty(value = "信息简报 xxx期次xxx板块") + private String lawsBulletin; + + @ApiModelProperty(value = "标签-可在配置管理中维护") + private String lawsLabel; + + @ApiModelProperty(value = "备注") + private String lawsRemark; + + @ApiModelProperty(value = "国家地区") + private String country; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + private String creationTime; + + @ApiModelProperty(value = "修改时间") + private String modifyTime; + + @ApiModelProperty(value = "参数1") + private String param1; + + @ApiModelProperty(value = "参数2") + private String param2; + + private String[] commentCycleDate; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlagOperator = "="; + private String putUser; + private String putUserOperator = "="; + private String citationUser; + private String citationUserOperator = "="; + private String responsibleUnit; + private String responsibleUnitOperator = "="; + private String standFile; + private String standFileOperator = "="; + private String tags; + private String tagsOperator = "="; + private String standStatus; + private String standStatusOperator = "="; + private String replacedStandNum; + private String replacedStandNumOperator = "="; + private String replaceStandNum; + private String replaceStandNumOperator = "="; + private String quoteStand; + private String quoteStandOperator = "="; + private String firstPutTime; + private String firstPutTime1; + private String firstPutTime2; + private String firstPutTimeOperator = "="; + private String putYear; + private String putYear1; + private String putYear2; + private String putYearOperator = "="; + private String putTime; + private String putTime1; + private String putTime2; + private String putTimeOperator = "="; + private String issueTime1; + private String issueTime2; + private String issueTimeOperator = "="; + private String energyKind; + private String energyKindOperator = "="; + private String applyArctic; + private String applyArcticOperator = "="; + private String standEnName; + private String standEnNameOperator = "="; + private String standName; + private String standNameOperator = "="; + private String standCode; + private String standCodeOperator = "="; + private String classifyCode; + private String classifyCodeOperator = "="; + private String standSubclass; + private String standSubclassOperator = "="; + private String standGenera; + private String standGeneraOperator = "="; + private String idOperator = "="; + private String menuId; + private List menuIdList; + private String[] idlist; + //为了在sql中区分修改操作 + private String updateFlag; + // 数据库新增字段 + private String applyCountry; + private String standYear; + private String applyCountryOperator = "="; + private String standNature; + private String standNatureOperator = "="; + private String synopsis; + private String synopsisOperator = "="; + private String standSort; + private String standSortOperator = "="; + private String opinionFile; + private String opinionFileOperator = "="; + private String relevanceFile; + private String relevanceFileOperator = "="; + private String remark; + private String remarkOperator = "="; + + private List roleIds; + private String rootMenuId; + private String orgName; + private List menuRoleList; + private String[] replacedStandNumList; + private String numberName; + + // 树结构增加搜索条件 + private String collectMenuId; + private String advanceSearchVOStr; + private String advanceSearchStr; + private List menuAllChildrenIdList; + private String userId; + + private String zqcrId; + + private String textStatusBuss; + + // 新增字段 + private String FZRQBUSS; + private String FSRQBUSS; + private String FBGBUSS; + private String BZSMBUSS; + private String LSBBBUSS; + private String QTWJBUSS; + private String QCDW; + private String QCRBUSS; + private String WJSCRYBUSS; + private String SYCXCLASS; + private String NYLXCLASS; + private String SYCPXCLASS; + private String TXLBBUSS; + private String VPPSBMBUSS; + private String VPPSCNBUSS; + private String DTQBBHBUSS; + private String BDTQBBHBUSS; + private String XGJLBUSS; + private String XGLC; + private String GLWJBUSS; + private String XCSJBUSS; + + private String SSRQLAWS; + private String XCXSSRQLAWS; + private String ZCXSSRQLAWS; + private String ZCWBLAWS; + private String GCWBLAWS; + private String JDWJLAWS; + private String FBJGLAWS; + private String CYSDLAWS; + private String TGRLAWS; + private String TGDWLAWS; + private String NYLXLAWS; + private String YYRZLAWS; + private String ZRBMLAWS; + private String ZRGCSLAWS; + private String DTWJHLAWS; + private String BDTWJHLAWS; + private String YYBZZCLAWS; + private String CHJLLAWS; + private String GLWJLAWS; + + + //页面排序 + private String paixu; + private String shunxu; + private String sql; + + // 树结构增加搜索条件 + @TableField(exist = false) + private String labelMenuId; + @TableField(exist = false) + private String ids; + @TableField(exist = false) + private String proType; + @TableField(exist = false) + private Integer nowOrder; + @TableField(exist = false) + private Integer nowOrderBy; + @TableField(exist = false) + private String orderByA = ""; + @TableField(exist = false) + private String orderBy1 = "SAR_LAWS_STAND_INFO.issue_time"; + @TableField(exist = false) + private String order1 = ""; + + @TableField(exist = false) + private String exportAllAttrInfo; + @TableField(exist = false) + private String exportAllResult; + + @TableField(exist = false) + private String syncParam; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/ISarLawsStandInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/ISarLawsStandInfoService.java new file mode 100644 index 00000000..70a7fd55 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/ISarLawsStandInfoService.java @@ -0,0 +1,46 @@ +package com.adc.da.slrs.sarLawsStandInfo.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoExport; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarBussionessStandEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-10-25 + */ +public interface ISarLawsStandInfoService extends IService { + + void createSarStandardsInfo(SarLawsStandInfo sarLawsStandInfo) throws Exception; + + void attrInfoDetails (SarLawsStandInfo row) throws Exception; + + List selectStandardsByStandNumber(String replaceStandNum); + + ResponseMessage deleteSarLawsStandInfo(SarLawsStandInfoPage page) throws Exception; + + SarLawsStandInfo updateSarLawsStandInfo(SarLawsStandInfo sarLawsStandInfo) throws Exception; + + SarLawsStandInfoPage updateStandardsMenu(SarLawsStandInfoPage standardsInfoEO); + + List getExportData(String exportType, String exportContent, String userId) throws Exception; + + List getSarStandardsInfoPage(SarLawsStandInfoPage page) throws Exception; + + List getSarStandardsInfoPageBak(SarLawsStandInfoPage page) throws Exception; + + SarLawsStandInfo selectStandardsInfoByKey(String id) throws Exception; + + SarLawsStandInfo selectStandardsInfoUpdateByKey(String id) throws Exception; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/impl/SarLawsStandInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/impl/SarLawsStandInfoServiceImpl.java new file mode 100644 index 00000000..c3435ac4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsStandInfo/service/impl/SarLawsStandInfoServiceImpl.java @@ -0,0 +1,1273 @@ +package com.adc.da.slrs.sarLawsStandInfo.service.impl; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.common.SarStandStateEnum; +import com.adc.da.common.SarTypeEnum; +import com.adc.da.common.SelectionTypeEnum; +import com.adc.da.common.UseModuleEnum; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.login.util.UserUtils; +import com.adc.da.mq.CreateMQService; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.dao.PersonCollectEODao; +import com.adc.da.person.entity.TsPersonCollect; +import com.adc.da.person.page.PersonCollectEOPage; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.entity.StandLawsEO; +import com.adc.da.search.service.StandLawsSearchService; +import com.adc.da.slrs.otConvertMq.dao.OtConvertMqDao; +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussStandFile.dao.SarBussStandFileDao; +import com.adc.da.slrs.sarBussStandItems.dao.SarBussStandItemsDao; +import com.adc.da.slrs.sarBussStandMenu.dao.SarBussStandMenuDao; +import com.adc.da.slrs.sarBussStandVal.dao.SarBussStandValDao; +import com.adc.da.slrs.sarBussionessStand.dao.SarBussionessStandDao; +import com.adc.da.slrs.sarLawsAttrInfo.dao.SarLawsAttrInfoDao; +import com.adc.da.slrs.sarLawsAttrInfo.entity.SarLawsAttrInfo; +import com.adc.da.slrs.sarLawsFile.dao.SarLawsFileDao; +import com.adc.da.slrs.sarLawsFile.entity.SarLawsFile; +import com.adc.da.slrs.sarLawsInfo.dao.SarLawsInfoDao; +import com.adc.da.slrs.sarLawsItems.dao.SarLawsItemsDao; +import com.adc.da.slrs.sarLawsItems.entity.SarLawsItems; +import com.adc.da.slrs.sarLawsMenu.dao.SarLawsMenuDao; +import com.adc.da.slrs.sarLawsMenu.entity.SarLawsMenu; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.dao.SarLawsStandInfoDao; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoExport; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoPage; +import com.adc.da.slrs.sarLawsStandInfo.service.ISarLawsStandInfoService; +import com.adc.da.slrs.sarLawsVal.dao.SarLawsValDao; +import com.adc.da.slrs.sarLawsVal.entity.SarLawsVal; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandItems.entity.FindSarItemsPageReqDTO; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.SarAdvanceSearchVO; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.constant.ValueStateEnum; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.FieldConvertUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.adc.da.utils.util.SarAdvanceSearchUtil; +import com.adc.da.utils.util.Utils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import net.sf.json.JSONObject; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.lang.StringUtils; +import org.json.JSONTokener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.sql.Clob; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-10-25 + */ +@Service +public class SarLawsStandInfoServiceImpl extends ServiceImpl implements ISarLawsStandInfoService { + + + @Value("${elas.flag}") + private boolean elasflag; //ES是否启用 + + @Value("${file.path}") + private String filePath;//文件存储路径 + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private ITsResourceService iTsResourceService; + + @Autowired + private ITsUserService tsUserService; + + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private SarLawsMenuDao sarLawsMenuDao; + + @Autowired + private OtConvertMqDao otConvertEODao; + + @Autowired + private CreateMQService convertMq; + + @Autowired + private SarLawsValDao sarBussStandValEODao; + + @Autowired + private SarLawsFileDao sarBussStandFileEODao; + + @Autowired + private CreateStandMQService createStandMQService; + + @Autowired + private ISarUpdLogService sarUpdLogEOService; + + @Autowired + private ITsResourceService sarMenuEOService; + + @Autowired + private PersonCollectEODao personCollectEODao; + + @Autowired + private SarLawsAttrInfoDao sarLawsAttrInfoDao; + + @Autowired + private SarLawsItemsDao sarLawsItemsDao; + + @Autowired + private StandLawsSearchService standLawsSearchService; + + @Override + public List getSarStandardsInfoPage(SarLawsStandInfoPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if(page.getUserId() == null || page.getUserId().equals("")){ + page.setUserId(LoginUserUtil.getUserId()); + } + + if(page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID",page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if(children.isEmpty() && !page.getMenuId().equals("nomenu")){ +// List getMenuIdList = tsUserService.getResourceUserId(userId); +// if (!getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + Integer rowCount = this.baseMapper.getSarStandardsInfoCount(page); + page.getPager().setRowCount(rowCount); + List rows = this.baseMapper.getSarStandardsInfoPage(page); + attrInfoCollect(rows); + return rows; + } + + @Override + public List getSarStandardsInfoPageBak(SarLawsStandInfoPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + String userId = UserUtils.getUserId(); + if(page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(userId)){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID",page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if(children.isEmpty() && !page.getMenuId().equals("nomenu")){ +// List getMenuIdList = tsUserService.getResourceUserId(userId); +// if (!getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + List ids = iTsResourceService.getChildMenuList(userId); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + Integer rowCount = this.baseMapper.getSarStandardsInfoCount(page); + page.getPager().setRowCount(rowCount); + List rows = this.baseMapper.getSarStandardsInfoPage(page); + attrInfo(rows); + return rows; + } + + + /*** + * @Description: 处理属性表数据 + * @Param: [sarlist] + * @Return: void + */ + public void attrInfo (List sarlist) throws Exception { + for(SarLawsStandInfo row : sarlist){ + attrInfoDetails(row); + } + } + + public void attrInfoCollect (List sarlist) throws Exception { + List collectResIds = sarlist.stream().map(SarLawsStandInfo::getId).collect(Collectors.toList()); + Map collectMap = personCollectEOService.queryCollectByUserAndIds(collectResIds); + for (SarLawsStandInfo row : sarlist) { + if(collectMap != null && collectMap.get(row.getId()) != null){ + row.setCollectId(collectMap.get(row.getId())); + } + } + } + + + @Override + public SarLawsStandInfo selectStandardsInfoByKey(String id) throws Exception{ + List sarLawsStandInfoList = this.baseMapper.selectStandardsInfoByKey(id); + SarLawsStandInfo sarLawsStandInfo = new SarLawsStandInfo(); + if(!sarLawsStandInfoList.isEmpty()) { + List newStandList = new ArrayList<>(); + newStandList.add(sarLawsStandInfoList.get(0)); + attrInfoShowDetails(newStandList); + sarLawsStandInfo = newStandList.get(0); + } + return sarLawsStandInfo; + } + + @Override + public SarLawsStandInfo selectStandardsInfoUpdateByKey(String id) throws Exception{ + List sarLawsStandInfoList = this.baseMapper.selectStandardsInfoByKey(id); + SarLawsStandInfo sarLawsStandInfo = new SarLawsStandInfo(); + if(!sarLawsStandInfoList.isEmpty()) { + List newStandList = new ArrayList<>(); + newStandList.add(sarLawsStandInfoList.get(0)); + attrInfo(newStandList); + sarLawsStandInfo = newStandList.get(0); + } + return sarLawsStandInfo; + } + + public void attrInfoDetails (SarLawsStandInfo row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = new TreeMap<>(); + getAttrMap = sarLawsAttrInfoDao.selectLawsFieldAndData(fieldInfo,row.getId()); + if (InitStandAttrUtil.clobFieldListLaws != null && !InitStandAttrUtil.clobFieldListLaws.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldListLaws) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField,fieldValue); + } + } + // 组织机构和人员 + Map newMap = new HashMap<>(); + if(getAttrMap != null){ + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + Object value1 = entry.getValue(); + if (value1 != null && value1.toString().equals("\"null\"")){ + entry.setValue(""); + } + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + String value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapLaws.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getOrgNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getUserNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + value = sysInfoEOService.getRoleNamesByIds(value); + newMap.put(name + "Name",value); + } + }else if (entry.getValue() != null && InitStandAttrUtil.fileFieldListLaws != null && !InitStandAttrUtil.fileFieldListLaws.isEmpty() && InitStandAttrUtil.fileFieldListLaws.contains(entry.getKey())) { + String value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + if(!fileObj.isEmpty()){ + String oldFileName = fileObj.stream().map(AttFileEO::getOldFileName).collect(Collectors.joining(",")); + newMap.put(name + "Name", oldFileName); + } + } + } + } + getAttrMap.putAll(newMap); + + if (!getAttrMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + + row.setAttrInfoMap(getAttrMap); + }else{ + List list= Arrays.stream(fieldInfo.split(",")).map(String::trim).collect(Collectors.toList()); + list.forEach(s -> { + newMap.put(s,""); + }); + if (!newMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(newMap)); + } + + row.setAttrInfoMap(newMap); + } + + } + } + + public void attrInfoDetailsExport (SarLawsStandInfoExport row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + List list = Arrays.asList(fieldInfo.split(",")).stream().map(s -> String.format(s.trim())).collect(Collectors.toList()); + + Map getAttrMap = BeanUtils.describe(row); + if (InitStandAttrUtil.clobFieldListLaws != null && !InitStandAttrUtil.clobFieldListLaws.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldListLaws) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField,fieldValue); + } + } + // 组织机构和人员 + Map newMap = new HashMap<>(); + if(getAttrMap != null){ + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + List filterList = list.stream().filter(a -> name.equals(a)).collect(Collectors.toList()); + if(filterList.isEmpty()){ + newMap.remove(name); + continue; + } + Object value1 = entry.getValue(); + + if (value1 != null && value1.toString().equals("\"null\"")){ + entry.setValue(""); + } + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + String value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapLaws.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getOrgNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getUserNamesByIds(value); + newMap.put(name + "Name",value); + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + value = sysInfoEOService.getRoleNamesByIds(value); + newMap.put(name + "Name",value); + } + } + } + getAttrMap.putAll(newMap); + } + +// if (getAttrMap != null && !getAttrMap.isEmpty()) { +// row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); +// } + + row.setAttrInfoMap(getAttrMap); + } + } + + private Map transformUpperCase(Map orgMap) { + Map resultMap = new HashMap<>(); + + for (Map.Entry entry : orgMap.entrySet()) { + String newKey = entry.getKey().toLowerCase(); + resultMap.put(newKey, orgMap.get(entry.getKey())); + if (entry.getValue() != null && InitStandAttrUtil.fileFieldListLaws != null && !InitStandAttrUtil.fileFieldListLaws.isEmpty() && InitStandAttrUtil.fileFieldListLaws.contains(entry.getKey())) { + String value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + if(!fileObj.isEmpty()){ + resultMap.put(newKey + "Name", fileObj.get(0).getOldFileName()); + } + } + } + } + + return resultMap; + } + + public void attrInfoShowDetails(List sarlist) throws Exception { + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_type_code", "dic_type_name"); + Map dicMap = dicInfo.stream() + .filter(item-> !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getDicTypeName,(value1, value2 )->value2)); + + for (SarLawsStandInfo row : sarlist) { + attrInfoDetails(row); + row.setLawsType(filterValue(dicMap,row.getLawsType())); + row.setLawsSyqy(filterValue(dicMap,row.getLawsSyqy())); + row.setLawsSycx(filterValue(dicMap,row.getLawsSycx())); + row.setLawsLabel(filterValue(dicMap,row.getLawsLabel())); + row.setLawsYear(filterValue(dicMap,row.getLawsYear())); + Map getAttrMap = row.getAttrInfoMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + if (entry.getValue() != null && InitStandAttrUtil.fileFieldListLaws != null && InitStandAttrUtil.fileFieldListLaws.size() > 0 && InitStandAttrUtil.fileFieldListLaws.contains(name)) { + value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfosOrderByDateDesc(value); + entry.setValue(fileObj); + } + }else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + value = entry.getValue().toString(); + List valArr = Arrays.asList(value.split(",")); + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + entry.setValue(value); + } + } + } + } + } + + private String filterValue (Map dicMap,String value){ + List list = new ArrayList<>(); + if(StringUtils.isNotBlank(value)){ + String[] valArr = value.split(","); + for (String s : valArr) { + if (dicMap.containsKey(s)){ + list.add(dicMap.get(s)); + } + } + } + return String.join(",",list); + } + + @Override + public List getExportData(String exportType, String exportContent,String userId) throws Exception { + SarLawsStandInfoPage page = new SarLawsStandInfoPage(); + if ("apart".equals(exportType)) { + page.setIdlist(exportContent.split(",")); + } else { + JSONObject jsonObject = JSONObject.fromObject(exportContent); + page = (SarLawsStandInfoPage)JSONObject.toBean(jsonObject, SarLawsStandInfoPage.class); + page.setPage(1); + page.setPageSize(10000); + //查询当前登录人角色拥有权限的菜单 + if(page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID",page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if(children.isEmpty() && !page.getMenuId().equals("nomenu")){ +// List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); +// if (getMenuIdList != null && !getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = com.alibaba.fastjson.JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + String advanceStr = SarAdvanceSearchUtil.createSql(searchList,"SAR_LAWS_ATTR_INFO"); + if (com.adc.da.util.utils.StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + } +// page.setOrderBy("SAR_LAWS_ATTR_INFO.issue_time is null,SAR_LAWS_ATTR_INFO.issue_time desc,SAR_LAWS_ATTR_INFO.id"); + if(userId != null){ + page.setUserId(userId); + }else { + page.setUserId(LoginUserUtil.getUserId()); + } + + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + + List list = Arrays.asList(fieldInfo.split(",")).stream().map(s -> String.format("SAR_LAWS_ATTR_INFO."+s.trim())).collect(Collectors.toList()); + List listSelect = Arrays.asList(fieldInfo.split(",")).stream().map(s -> String.format("tmp_tb."+s.trim())).collect(Collectors.toList()); + String exportAllAttrInfo = list.stream().collect(Collectors.joining(",")); + String exportAllResult = listSelect.stream().collect(Collectors.joining(",")); + if(StringUtils.isNotBlank(exportAllAttrInfo)){ + page.setExportAllAttrInfo(exportAllAttrInfo); + } + + if(StringUtils.isNotBlank(exportAllResult)){ + page.setExportAllResult(exportAllResult); + } + + List rows = this.baseMapper.getSarStandardsExportInfo(page); + attrInfoShowExport(rows); + return rows; + } + + private void nowOrderFunc(SarLawsStandInfoPage page) { + switch (page.getNowOrderBy()) { + case 1: + page.setOrderByA("SAR_LAWS_STAND_INFO.ISSUE_TIME");//发布日期 + break; + case 2: + page.setOrderByA("XCXSSRQLAWS");//实施日期 + break; + case 3: + page.setOrderByA("standStatusShow");//文本状态 + break; + default: + page.setNowOrder(null); + break; + } + if (null != page.getNowOrder()) { + switch (page.getNowOrder()) { + case 1: + page.setOrder1("desc"); + break; + case 2: + page.setOrder1("asc"); + break; + default: + page.setOrder1(null); + break; + } + } + } + + public void attrInfoShow (List sarlist) throws Exception { + for(SarLawsStandInfo row : sarlist){ + attrInfoDetails(row); + Map getAttrMap = row.getAttrInfoMap(); + Map getNewMap = new LinkedHashMap<>(); + if (getAttrMap != null && getAttrMap.size() > 0) { + String svppsTip = ""; + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + if (entry.getValue() != null && InitStandAttrUtil.fileFieldListLaws != null && InitStandAttrUtil.fileFieldListLaws.size() > 0 && InitStandAttrUtil.fileFieldListLaws.contains(name)) { + value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + entry.setValue(fileObj); + } + } else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapLaws.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal) || SelectionTypeEnum.USERLIST.getValue().equals(selVal) || SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + if("ZYQCR".equals(name)||"QTQCR".equals(name)){ + if(getAttrMap.get(name + "Name")!=null && !getAttrMap.get(name + "Name").equals("")){ + value = String.valueOf(getAttrMap.get(name + "Name")); + } + }else{ + value = String.valueOf(getAttrMap.get(name + "Name")); + } + } else { + List valArr = Arrays.asList(value.split(",")); + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + entry.setValue(value); + } + } + getAttrMap.put("SVPPSTips",svppsTip); + } + } + } + + public void attrInfoShowExport (List sarlist) throws Exception { + + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_type_code", "dic_type_name"); + Map dicMap = dicInfo.stream() + .filter(item-> !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getDicTypeName,(value1, value2 )->value2)); + + for(SarLawsStandInfoExport row : sarlist){ + attrInfoDetailsExport(row); + row.setLawsType(filterValue(dicMap,row.getLawsType())); + row.setLawsSyqy(filterValue(dicMap,row.getLawsSyqy())); + row.setLawsSycx(filterValue(dicMap,row.getLawsSycx())); + row.setLawsLabel(filterValue(dicMap,row.getLawsLabel())); + row.setLawsYear(filterValue(dicMap,row.getLawsYear())); + Map getAttrMap = row.getAttrInfoMap(); + Map getNewMap = new LinkedHashMap<>(); + if (getAttrMap != null && getAttrMap.size() > 0) { + String svppsTip = ""; + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + if (entry.getValue() != null && InitStandAttrUtil.fileFieldListLaws != null && InitStandAttrUtil.fileFieldListLaws.size() > 0 && InitStandAttrUtil.fileFieldListLaws.contains(name)) { +// value = entry.getValue().toString(); +// if (StringUtils.isNotBlank(value)) { +// List fileObj = attFileEOService.getMultiFileInfos(value); +// entry.setValue(fileObj); +// } + } else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMapLaws.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal) || SelectionTypeEnum.USERLIST.getValue().equals(selVal) || SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + if("ZYQCR".equals(name)||"QTQCR".equals(name)){ + if(getAttrMap.get(name + "Name")!=null && !getAttrMap.get(name + "Name").equals("")){ + value = String.valueOf(getAttrMap.get(name + "Name")); + } + }else{ + value = String.valueOf(getAttrMap.get(name + "Name")); + } + } else { + List valArr = Arrays.asList(value.split(",")); + if(entry.getValue()!=null) { + StringBuilder builder = new StringBuilder(""); + for (String s : valArr) { + if (dicMap.containsKey(s) && !"ZRBM".equals(name)){ + builder.append(dicMap.get(s)+","); + } + + } + + if (builder.toString().isEmpty()){ + value = entry.getValue().toString(); + }else { + value = builder.toString(); + } + } + } + entry.setValue(value); + } + } + getAttrMap.put("SVPPSTips",svppsTip); + } + } + } + + @Override + public SarLawsStandInfoPage updateStandardsMenu(SarLawsStandInfoPage standardsInfoEO) { + SarLawsMenu sarStandMenuEO = new SarLawsMenu(); + String nowMenuId = standardsInfoEO.getMenuId(); + sarStandMenuEO.setMenuId(nowMenuId); + for (int i = 0; i < standardsInfoEO.getIdlist().length; i++) { + sarStandMenuEO.setLawsId(standardsInfoEO.getIdlist()[i]); + sarStandMenuEO.setId(null); + sarStandMenuEO.setValidFlag(0); + // 根据当前目录查询所在父节点 + String secondLevelId = ""; + List getMenuPIds = iTsResourceService.getParentMenuId(nowMenuId); + if (getMenuPIds != null && getMenuPIds.size() > 1) { + int idSize = getMenuPIds.size(); + secondLevelId = getMenuPIds.get(idSize-1); + } else { + secondLevelId = nowMenuId; + } + //查询标准是否已在 当前父节点中 + SarLawsMenu standMenuEOQuery = new SarLawsMenu(); + standMenuEOQuery.setMenuId(secondLevelId); + standMenuEOQuery.setLawsId(standardsInfoEO.getIdlist()[i]); + List menuIds = iTsResourceService.getChildMenuList(secondLevelId); + standMenuEOQuery.setMenuIds(menuIds); + List getInfo = sarLawsMenuDao.selectMenuByMenuParentId(standMenuEOQuery); + //删除节点与根节点的关联 + SarLawsMenu sarStandMenuDel = new SarLawsMenu(); + sarStandMenuDel.setLawsId(standardsInfoEO.getIdlist()[i]); + sarStandMenuDel.setMenuId(standardsInfoEO.getRootMenuId()); + sarLawsMenuDao.deleteByLawsIdAndMenuId(sarStandMenuDel); + if (getInfo == null || getInfo.isEmpty()) { + sarStandMenuEO.setId(UUIDUtils.randomUUID20()); + sarLawsMenuDao.insert(sarStandMenuEO); + } else { + sarStandMenuEO.setOldMenuId(secondLevelId); + List menuOldIds = iTsResourceService.getChildMenuList(secondLevelId); + sarStandMenuEO.setMenuIds(menuOldIds); + sarLawsMenuDao.updateByLawsIdAndMenuId(sarStandMenuEO); + } + } + return standardsInfoEO; + } + + public SarLawsStandInfo updateSarLawsStandInfo(SarLawsStandInfo sarLawsStandInfo) throws Exception { + String standId = sarLawsStandInfo.getId(); + SarLawsStandInfo beforeStandEO = this.baseMapper.selectById(standId); + if(beforeStandEO!=null){ + attrInfoDetails(beforeStandEO); + } + //规范性引用文件,如有数据,删除以前关联 + int resultCount = this.baseMapper.updateById(sarLawsStandInfo); + if (resultCount >= 1) { + // 修改属性表数据 + sarLawsAttrInfoDao.deleteLawsAttrByStandId(standId); + + // + sarBussStandValEODao.deleteDataBylawsId(standId); + + //删除文件详情表数据 + sarBussStandFileEODao.deleteBylawsId(standId); + SarLawsFile sarBussStandFileEO = new SarLawsFile(); + sarBussStandFileEO.setLawsId(standId); + sarBussStandFileEO.setIdList(null); + List listFile = sarBussStandFileEODao.selectFileBylawsIdAndId(sarBussStandFileEO); + if (listFile != null) { + if (!listFile.isEmpty()) { + for (int f = 0; f < listFile.size(); f++) { + //删除转换表ot_convert数据 + otConvertEODao.deleteByAttId(listFile.get(f).getAttId()); + } + } + } + createStandAttrInfo(sarLawsStandInfo); + // 根据代替标准号 ,修改代替标准号标准中的,被代替标准号 +// updateReplaceConnect(sarLawsStandInfo); + updateCiteStand(sarLawsStandInfo, beforeStandEO, "DTWJHLAWS", "BDTWJHLAWS"); + + //修改收藏分享编号名称 + updateCollectAndShare(sarLawsStandInfo); + // 记录修改日志 + saveUpdateLog(sarLawsStandInfo,beforeStandEO); + if (elasflag) { + attrInfoShowSearchDetails(sarLawsStandInfo,"upd"); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsStandInfo.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsStandInfo.setMapItems(collectMap); + } + createStandMQService.sendLawsMQ(sarLawsStandInfo, "update"); + } + } + return sarLawsStandInfo; + } + + public void attrInfoShowSearchDetails(SarLawsStandInfo row,String type) throws Exception { + if (row != null) { + attrInfoSearchDetails(row,type); + Map getAttrMap = row.getAttrInfoCaseMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey().toUpperCase(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldListLaws != null && InitStandAttrUtil.selectionFieldListLaws.size() > 0 && InitStandAttrUtil.selectionFieldListLaws.contains(name)) { + if(StringUtils.isNotBlank(entry.getValue().toString())){ + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if(json instanceof org.json.JSONArray){ + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(),String.class); + }else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if(!valArr.isEmpty()){ + value = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + entry.setValue(value); + } + } + } + } + } + + public void attrInfoSearchDetails(SarLawsStandInfo row,String type) throws Exception { + String fieldInfo = InitStandAttrUtil.queryFieldLaws; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = new TreeMap<>(); + if(type.equals("add")){ + String sarStandAttrEOStr = row.getSarStandAttrEOStr(); + getAttrMap = JSONObject.fromObject(sarStandAttrEOStr); + }else { + getAttrMap = sarLawsAttrInfoDao.selectLawsFieldAndData(fieldInfo, row.getId()); + } + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + if (getAttrMap != null && !getAttrMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + +// row.setAttrInfoMap(getAttrMap); + } + } + + public void saveUpdateLog(SarLawsStandInfo sarStandardsInfoEO,SarLawsStandInfo beforeSarStandardsInfo) throws Exception{ + Map newMap = new HashMap<>(); + Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); + String attrStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + if (StringUtils.isNotBlank(attrStr)) { + newMap = JSONObject.fromObject(attrStr); + } + newMap = changeMap(sarStandardsInfoEO,newMap); + oldMap = changeMap(beforeSarStandardsInfo,oldMap); + String sortName = sysInfoEOService.getDicNamesByCodes(sarStandardsInfoEO.getLawsType(),"sg9gb7liywkrnv3pa5uh"); + String number = sortName + " " + sarStandardsInfoEO.getLawsNumber(); + String content = number + " 《" + sarStandardsInfoEO.getLawsName()+" " + sarStandardsInfoEO.getLawsEnName() + "》"; + sarUpdLogEOService.createUpdateLog(SarTypeEnum.FOREIGN_LAWS.getValue(),sarStandardsInfoEO.getId(),oldMap,newMap,content); + } + + public Map changeMap (SarLawsStandInfo sarStandardsInfoEO,Map map) { +// map.put("country",verifyObj(sarStandardsInfoEO.getApplyCountry())); + map.put("lawsType",verifyObj(sarStandardsInfoEO.getLawsType())); + map.put("lawsNumber",verifyObj(sarStandardsInfoEO.getLawsNumber())); + map.put("lawsName",verifyObj(sarStandardsInfoEO.getLawsName())); + map.put("lawsEnName",verifyObj(sarStandardsInfoEO.getLawsEnName())); + map.put("lawsNo",verifyObj(sarStandardsInfoEO.getLawsNo())); + return map; + } + + private Object verifyObj(Object str){ + return str == null ? "" : str; + } + + public void updateCollectAndShare(SarLawsStandInfo sarLawsStandInfo) throws Exception { + //修改收藏表中 + String number = sarLawsStandInfo.getLawsNumber()+ ")"; + PersonCollectEOPage personCollectEOPage = new PersonCollectEOPage(); + personCollectEOPage.setValidFlag("0"); + personCollectEOPage.setCollectResId(sarLawsStandInfo.getId()); + List listCollect = personCollectEOService.queryByList(personCollectEOPage); + if (listCollect != null && listCollect.size() > 0) { + for (TsPersonCollect getCollect : listCollect) { + TsPersonCollect collectEO = new TsPersonCollect(); + collectEO.setId(getCollect.getId()); + collectEO.setCollectTitle(sarLawsStandInfo.getLawsName() + " " + "( 编号:" + number); + personCollectEOService.updateByPrimaryKeySelective(collectEO); + } + } + } + + /*** + * @Description: 新增属性表数据 + * @Date: 2020/9/8 9:53 + * @Param: [sarStandardsInfoEO] + * @Return: void + */ + public void createStandAttrInfo (SarLawsStandInfo sarBussionessStandEO) throws Exception { + String sarStandAttrEOStr = sarBussionessStandEO.getSarStandAttrEOStr(); + String mustFields = FieldConvertUtil.mustFieldsLaws; + String mustValues = FieldConvertUtil.mustValues(sarBussionessStandEO.getId()); + // 将字符串转为map进行解析 + Map sarStandAttrMap = JSONObject.fromObject(sarStandAttrEOStr); + StringBuilder fieldsBuilder = new StringBuilder(); + StringBuilder valuesBuilder = new StringBuilder(); + Map selectionMap = new HashMap<>(); + Map fileMap = new HashMap<>(); + Map multiTimeMap = new HashMap<>(); + String fileIds = ""; + for (Map.Entry entry : sarStandAttrMap.entrySet()) { + String attrKey = entry.getKey(); + String attrValue = String.valueOf(entry.getValue()); + if (InitStandAttrUtil.queryFieldListLaws != null && !InitStandAttrUtil.queryFieldListLaws.isEmpty()) { + if (InitStandAttrUtil.queryFieldListLaws.contains(attrKey)) { + fieldsBuilder.append("," + attrKey); + if ("DTWJHLAWS".equals(attrKey)) { + sarBussionessStandEO.setReplaceFileNum(attrValue); + } + // 多选项,文件类型需要单独处理 向子表添加数据 + if (InitStandAttrUtil.selectionFieldListLaws.contains(attrKey)) { + selectionMap.put(attrKey,attrValue); + } else if (InitStandAttrUtil.fileFieldListLaws.contains(attrKey)) { + fileMap.put(attrKey,attrValue); + fileIds += attrValue + ","; + } else if (InitStandAttrUtil.multiTimeFieldList.contains(attrKey)) { + multiTimeMap.put(attrKey,attrValue); + attrValue = "'" + attrValue + "'"; + } + // 不同类型存储数据需单独处理值 + if (InitStandAttrUtil.numFieldListLaws.contains(attrKey)) { + if (StringUtils.isBlank(attrValue)) { + attrValue = "null"; + } + } else if (InitStandAttrUtil.timeFieldListLaws.contains(attrKey)) { + attrValue = FieldConvertUtil.changeTimeValue(attrValue); + } else { + attrValue = "'" + attrValue + "'"; + } + valuesBuilder.append("," + attrValue); + sarBussionessStandEO.setFileIds(fileIds); + } + } + } + String insertField = mustFields + fieldsBuilder.toString(); + String insertValue = mustValues + valuesBuilder.toString(); + int insertRes = sarLawsAttrInfoDao.insertLawsAttr(insertField,insertValue); + if (insertRes > 0) { + // 多选项处理 + createStandVal(sarBussionessStandEO.getId(),selectionMap); + // 文件处理 + createStandFile(sarBussionessStandEO.getId(),fileMap); + // 多时间处理 +// createStandPutTime(sarBussionessStandEO.getId(),multiTimeMap); + } + } + + /*** + * @Description: 多选项处理 + * @Author: yangxuenan + * @Date: 2020/9/8 14:37 + * @Param: [sarStandardsInfoEO, selectionMap] + * @Return: void + */ + public void createStandVal (String standId,Map selectionMap) { + if (selectionMap != null && selectionMap.size() > 0) { + List standValList = new ArrayList<>(); + for (Map.Entry entry : selectionMap.entrySet()) { + String value = entry.getValue(); + String field = entry.getKey(); + if (StringUtils.isNotBlank(value)) { + String[] valArr = value.trim().split(","); + for (String val : valArr) { + SarLawsVal sarStandValEO = new SarLawsVal(); + sarStandValEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); + sarStandValEO.setCreationTime(new Date()); + sarStandValEO.setModifyTime(new Date()); + sarStandValEO.setLawsId(standId); + sarStandValEO.setId(UUIDUtils.randomUUID20()); + sarStandValEO.setPropertyType(field); + sarStandValEO.setPropertyVal(val); + standValList.add(sarStandValEO); + } + } + } + if (standValList != null && !standValList.isEmpty()) { + sarBussStandValEODao.insertForeach(standValList); + } + } + } + + /*** + * @Description: 文件处理 + * @Author: yangxuenan + * @Date: 2020/9/8 15:01 + * @Param: [standId, fileMap] + * @Return: void + */ + public void createStandFile (String standId,Map fileMap) throws Exception { + if (fileMap != null && fileMap.size() > 0) { + List standFileList = new ArrayList<>(); + for (Map.Entry entry : fileMap.entrySet()) { + String value = entry.getValue(); + String field = entry.getKey(); + if (StringUtils.isNotBlank(value)) { + List fileList = attFileEOService.getMultiFileInfos(value); + if (fileList != null && !fileList.isEmpty()) { + createStandFileAppend(standId,field,fileList,standFileList); + } + } + } + if (standFileList != null && !standFileList.isEmpty()) { + sarBussStandFileEODao.insertForeach(standFileList); + } + } + } + + public void createStandFileAppend (String standId,String field,List fileList,List standFileList) throws Exception { + for (AttFileEO fileInfo : fileList) { + SarLawsFile sarStandFileEO = new SarLawsFile(); + sarStandFileEO.setCreationUser(LoginUserUtil.getUserId()); + sarStandFileEO.setCreationTime(new Date()); + sarStandFileEO.setModifyTime(new Date()); + sarStandFileEO.setValidFlag(0); + sarStandFileEO.setLawsId(standId); //标准ID + sarStandFileEO.setUseModel(UseModuleEnum.SOURCE_FILE.getValue()); //文件使用模式 + sarStandFileEO.setId(com.adc.da.sys.util.UUIDUtils.randomUUID20()); + sarStandFileEO.setAttId(fileInfo.getId()); //文件ID + sarStandFileEO.setLawsFileClassify(field); //文件分类 + sarStandFileEO.setFileName(fileInfo.getOldFileName()); + sarStandFileEO.setFileSuffix(fileInfo.getFileSuffix()); + sarStandFileEO.setOriAttId(fileInfo.getId()); + standFileList.add(sarStandFileEO); + //文档转换 + if ("pdf".equals(fileInfo.getFileSuffix()) || "PDF".equals(fileInfo.getFileSuffix())) { + SarLawsFile newFileEO = new SarLawsFile(); + newFileEO.setCreationUser(LoginUserUtil.getUserId()); + newFileEO.setCreationTime(new Date()); + newFileEO.setModifyTime(new Date()); + newFileEO.setValidFlag(0); + newFileEO.setLawsId(standId); //标准ID + newFileEO.setId(com.adc.da.sys.util.UUIDUtils.randomUUID20()); + newFileEO.setAttId(fileInfo.getId()); //文件ID + newFileEO.setLawsFileClassify(field); //文件分类 + newFileEO.setFileName(fileInfo.getOldFileName()); + newFileEO.setFileSuffix(fileInfo.getFileSuffix()); + newFileEO.setUseModel(UseModuleEnum.WEB_FILE.getValue()); //文件使用模式 //文件名称@@@@@@@需要修改 + newFileEO.setOriAttId(fileInfo.getId()); + standFileList.add(newFileEO); + } else { + String filePath = fileInfo.getFilePath() + fileInfo.getFileName(); + OtConvertMq convert = new OtConvertMq(); + convert.setLawsId(standId); + convert.setAttId(fileInfo.getId()); + convert.setFilePath(filePath); + convert.setAddOrUp("0"); + convert.setFileSuffix(fileInfo.getFileSuffix()); + convert.setStandFileClassify(field); + convert.setConvertType(SarTypeEnum.LAWS_STAND.getValue()); + if(elasflag){ + convertMq.sendMQ(convert); + } + } + } + } + + @Override + public ResponseMessage deleteSarLawsStandInfo(SarLawsStandInfoPage page) throws Exception { + SarLawsStandInfo sarLawsStandInfo = new SarLawsStandInfo(); + sarLawsStandInfo.setValidFlag(1); + sarLawsStandInfo.setModifyTime(new Date()); + for (String id : page.getIdlist()) { + //删除标准表 + sarLawsStandInfo.setId(id); + this.baseMapper.updateById(sarLawsStandInfo); + // 删除标准属性表 + sarLawsAttrInfoDao.deleteLawsAttrByStandId(id); + // 删除条款 + sarLawsItemsDao.deleteByStandIdAndFileType(id,null); + //删除收藏表中数据 + personCollectEODao.deleteByResId(id); + //删除标准关联的value表 + sarBussStandValEODao.deleteDataBylawsId(id); + List listFile = sarBussStandFileEODao.selectFileBylawsId(id); + if (listFile != null) { + if (!listFile.isEmpty()) { + for (int f = 0; f < listFile.size(); f++) { + sarBussStandFileEODao.deleteByPrimaryKey(listFile.get(f).getId()); + //删除文件信息表数据 +// sarFileInfoEODao.deleteByfileId(listFile.get(f).getId()); + //删除转换表ot_convert数据 + otConvertEODao.deleteByAttId(listFile.get(f).getAttId()); + } + } + } + if(elasflag) { + //删除成功后,将索引中对应数据删除 + StandLawsEO standLawsEO = new StandLawsEO(); + standLawsEO.setId(sarLawsStandInfo.getId()); + standLawsEO.setType("laws"); + standLawsSearchService.deleteStandLawsSearch(standLawsEO); + } + + } + return Result.success("0", "删除成功", sarLawsStandInfo); + } + + public List selectStandardsByStandNumber(String replaceStandNum) { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("LAWS_NUMBER",replaceStandNum); + wrapper.eq("VALID_FLAG",0); + return this.baseMapper.selectList(wrapper); + } + + /*** + * @Description: 新增政策 + * @Return: void + */ + public void createSarStandardsInfo(SarLawsStandInfo sarLawsStandInfo) throws Exception { + // 处理基础表信息 + sarLawsStandInfo.setId(UUIDUtils.randomUUID20()); + sarLawsStandInfo.setCreationUser(LoginUserUtil.getUserId()); + sarLawsStandInfo.setValidFlag(0); + sarLawsStandInfo.setCreationTime(new Date()); + sarLawsStandInfo.setModifyTime(new Date()); + //根据新建标准所在目录,确定此处是否需要在标准目录关联表中插入数据 + if (StringUtils.isNotEmpty(sarLawsStandInfo.getMenuId())) { + SarLawsMenu sarLawsMenu = new SarLawsMenu(); + sarLawsMenu.setLawsId(sarLawsStandInfo.getId()); + sarLawsMenu.setMenuId(sarLawsStandInfo.getMenuId()); + sarLawsMenu.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); + sarLawsMenu.setId(UUIDUtils.randomUUID20()); + sarLawsMenuDao.insert(sarLawsMenu); + } + int insertResult = this.baseMapper.insert(sarLawsStandInfo); + if (insertResult > 0) { + // 修改属性表数据 + List standAttrInfos = sarLawsAttrInfoDao.selectList(new QueryWrapper().eq("LAWS_ID",sarLawsStandInfo.getId())); + if(!standAttrInfos.isEmpty()){ + sarLawsAttrInfoDao.deleteLawsAttrByStandId(standAttrInfos.get(0).getLawsId()); + } + //编写预警信息 +// writeWarnings(sarStandardsInfoEO); + // 处理属性表信息 + if (StringUtils.isNotBlank(sarLawsStandInfo.getSarStandAttrEOStr())) { + createStandAttrInfo(sarLawsStandInfo); + } + updateCiteStand(sarLawsStandInfo, null, "DTWJHLAWS", "BDTWJHLAWS"); +// updateCiteStand(sarLawsStandInfo, null, "BFDTBZ", "BBFDTBZ"); +// updateRelateStand(sarStandardsInfoEO, "CBBH"); + // 根据代替标准号修改被代替的标准的状态 修改为已修订状态 +// replaseStandState(sarStandardsInfoEO); + // 增加关联事件 + String number = ""; + if (StringUtils.isNotBlank(sarLawsStandInfo.getLawsNumber())) { + number = sarLawsStandInfo.getLawsNumber(); + } + String content = "入库" + number + " 《" + sarLawsStandInfo.getLawsName() + "》"; + sarUpdLogEOService.createBaseLog(sarLawsStandInfo.getId(), sarLawsStandInfo.getLawsType() + "_Laws", content); + if(elasflag) { + // 消息队列 + attrInfoShowSearchDetails(sarLawsStandInfo,"add"); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarLawsStandInfo.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = sarLawsItemsDao.querySarItemAndInterpretation(pageInfo); + if(!sarItemVOS.isEmpty()){ + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarLawsItems::getItemsNum, SarLawsItems::getTermsConditions)); + sarLawsStandInfo.setMapItems(collectMap); + } + createStandMQService.sendLawsMQ(sarLawsStandInfo,"add"); + } + } + } + + // 新增修改标准过程中,根据代替标准号,修改被代替标准号对应的标准 + public void updateCiteStand(SarLawsStandInfo sarLawsStandInfo, SarLawsStandInfo beforeSarStandardsInfo, String upField, String beUpedField) throws Exception { + // 记录要被代替标准号的数据 +// SarStandardsInfoEO chageEO= new SarStandardsInfoEO(); + SarLawsStandInfo sarStandardsSelectEO = new SarLawsStandInfo(); + String addStrandNumber = ""; + String beforeStrandNumber = ""; + if (StringUtils.isNotEmpty(sarLawsStandInfo.getLawsNumber())) { + addStrandNumber = sarLawsStandInfo.getLawsNumber(); + } + if (beforeSarStandardsInfo != null) { + if (StringUtils.isNotEmpty(beforeSarStandardsInfo.getLawsNumber())) { + beforeStrandNumber = beforeSarStandardsInfo.getLawsNumber(); + } + } + // 以“,”分隔查看之前是否有 ,如果有不修改,如果没有,追加修改 + String newCiteStand = ""; + if ("DTWJHLAWS".equals(upField)) { + newCiteStand = sarLawsStandInfo.getReplaceFileNum(); + } + + if (StringUtils.isNotEmpty(newCiteStand) && newCiteStand.split(",").length > 0) { + // 主要逻辑处理新增的 + String nowEOrepNums[] = newCiteStand.split(","); + for (String citeStand : nowEOrepNums) { + sarStandardsSelectEO.setLawsNumber(citeStand); + List result = selectStandardsByStandNumber(citeStand); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = beUpedField; + String citedStand = sarLawsAttrInfoDao.selectFieldValByLawsId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (org.apache.commons.lang3.StringUtils.isNotBlank(citedStand)) { + String[] beforeReplacedStandNumStr = citedStand.split(","); + if (Arrays.asList(beforeReplacedStandNumStr).contains(addStrandNumber)) { + continue; + } else { + changeCitedStand = citedStand + "," + addStrandNumber; + } + } else { + changeCitedStand = addStrandNumber; + } + sarLawsAttrInfoDao.updateLawsInfo(standId, field, changeCitedStand); + } + } + // 如果id不为空,说明是修改,有逻辑删除的执行以下语句,存在之前是三项,现在修改成两项的情况 + if (null != beforeSarStandardsInfo) { + String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get(upField)); + if (StringUtils.isNotEmpty(oldCiteStand)) { + String[] beforeEOrepNums = oldCiteStand.split(","); + for (String beforeStr : beforeEOrepNums) { + // 如果再旧的中包含,在新的中没有,需要删除 + if (!Arrays.asList(nowEOrepNums).contains(beforeStr)) { + sarStandardsSelectEO.setLawsNumber(beforeStr); + List result = selectStandardsByStandNumber(beforeStr); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = beUpedField; + String citedStand = sarLawsAttrInfoDao.selectFieldValByLawsId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (StringUtils.isNotBlank(citedStand)) { + String[] beforerepalced = citedStand.split(","); + ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced)); + if (beforlist.contains(beforeStrandNumber)) { + beforlist.remove(beforeStrandNumber); + changeCitedStand = StringUtils.join(beforlist.toArray(), ","); + } else { + continue; + } + sarLawsAttrInfoDao.updateLawsInfo(standId, field, changeCitedStand); + } + } + } + } + } + } + + } else { + // 如果为空,判断是否为修改 + if (null != beforeSarStandardsInfo) { + String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get("YYBJ")); + if (StringUtils.isNotEmpty(oldCiteStand)) { + String[] beforeEOrepNums = oldCiteStand.split(","); + for (String beforeStr : beforeEOrepNums) { + // 如果再旧的中包含,在新的中没有,需要删除,相关数据取第一条是因为标准号是唯一的 + sarStandardsSelectEO.setLawsNumber(beforeStr); + List result = selectStandardsByStandNumber(beforeStr); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = "BDTWJHLAWS"; + String citedStand = sarLawsAttrInfoDao.selectFieldValByLawsId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (org.apache.commons.lang3.StringUtils.isNotBlank(citedStand)) { + String[] beforerepalced = citedStand.split(","); + ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced)); + if (beforlist.contains(beforeStrandNumber)) { + beforlist.remove(beforeStrandNumber); + changeCitedStand = org.apache.commons.lang3.StringUtils.join(beforlist.toArray(), ","); + } else { + continue; + } + sarLawsAttrInfoDao.updateLawsInfo(standId, field, changeCitedStand); + } + } + } + } + } + } + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/controller/SarLawsValController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/controller/SarLawsValController.java new file mode 100644 index 00000000..962f541a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/controller/SarLawsValController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarLawsVal.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarLawsVal.entity.SarLawsVal; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-10-28 +*/ +@RestController +@Api(description = "|SarLawsVal|") +@RequestMapping("/sarLawsVal/sar-laws-val") +public class SarLawsValController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/dao/SarLawsValDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/dao/SarLawsValDao.java new file mode 100644 index 00000000..51dc4689 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/dao/SarLawsValDao.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.sarLawsVal.dao; + +import com.adc.da.slrs.sarLawsVal.entity.SarLawsVal; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Repository +public interface SarLawsValDao extends BaseMapper { + + //通过标准id删除表中数据 + int deleteDataBylawsId(String standId); + + int insertForeach(List list); //批量新增 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/entity/SarLawsVal.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/entity/SarLawsVal.java new file mode 100644 index 00000000..ee02c769 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/entity/SarLawsVal.java @@ -0,0 +1,64 @@ +package com.adc.da.slrs.sarLawsVal.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarLawsVal对象", description="") +public class SarLawsVal extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "法规ID") + @TableField("LAWS_ID") + private String lawsId; + + @ApiModelProperty(value = "参数类型") + @TableField("PROPERTY_TYPE") + private String propertyType; + + @ApiModelProperty(value = "参数内容") + @TableField("PROPERTY_VAL") + private String propertyVal; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/service/ISarLawsValService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/service/ISarLawsValService.java new file mode 100644 index 00000000..a4f2349f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/service/ISarLawsValService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarLawsVal.service; + +import com.adc.da.slrs.sarLawsVal.entity.SarLawsVal; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +public interface ISarLawsValService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/service/impl/SarLawsValServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/service/impl/SarLawsValServiceImpl.java new file mode 100644 index 00000000..01a90c0d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarLawsVal/service/impl/SarLawsValServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarLawsVal.service.impl; + +import com.adc.da.slrs.sarLawsVal.entity.SarLawsVal; +import com.adc.da.slrs.sarLawsVal.dao.SarLawsValDao; +import com.adc.da.slrs.sarLawsVal.service.ISarLawsValService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-10-28 + */ +@Service +public class SarLawsValServiceImpl extends ServiceImpl implements ISarLawsValService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/controller/SarMenuController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/controller/SarMenuController.java new file mode 100644 index 00000000..34537793 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/controller/SarMenuController.java @@ -0,0 +1,109 @@ +package com.adc.da.slrs.sarMenu.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.sarMenu.service.ISarMenuService; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.service.IDicTypeEOService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-01 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库-菜单") +@RequestMapping("/${restPath}/lawss/sarMenu") +public class SarMenuController extends BaseController { + + @Autowired + private ISarMenuService sarMenuEOService; + + @Autowired + private IDicTypeEOService dicTypeEOService; + + @ApiOperation(value = "|SarMenuEO|查询当前登录用户拥有的目录") + @GetMapping("/selectMenuByRole") + public ResponseMessage> selectMenuByRole(SarMenu sarMenuEO) throws Exception { + // 根据当前登录人id查出对应角色 + String roleIds = UserUtils.getRoleIds(); + String[] roleArr = roleIds.split(","); + List roleIdList = Arrays.asList(roleArr); + sarMenuEO.setRoleIds(roleIdList); + //角色未配置根节点,手动加入根节点权限 + List resultList = sarMenuEOService.queryMenuByDis(sarMenuEO); + List list = sarMenuEOService.selectMenuByRole(sarMenuEO); + if(!"BUSINESS_STAND".equals(sarMenuEO.getSorDivide())){ + resultList.addAll(list); + } else { + resultList = list; + } + List listDic = new ArrayList<>(); + for (SarMenu resultMenu : resultList) { + if ("gxhbq".equals(resultMenu.getId())) { + // 查出配置管理项 + System.out.println(resultMenu); + List getDicList = dicTypeEOService.getDicTypeByDicId("ZHFKGAACTNUCN9AR5YBM"); + System.out.println(getDicList); + if (getDicList != null && !getDicList.isEmpty()) { + for (SelectionResult selectionResult : getDicList) { + int i=0; + SarMenu menuEO = new SarMenu(); + menuEO.setId(selectionResult.getValue()); + menuEO.setSorDivide(sarMenuEO.getSorDivide()); + menuEO.setMenuName(selectionResult.getLabel()); + menuEO.setParentId("gxhbq"); + menuEO.setDisplaySeq(i++); + menuEO.setValidFlag(0); + listDic.add(menuEO); + } + } + } + } + resultList.addAll(listDic); + System.out.println("listDic"); + System.out.println(listDic); + return Result.success(resultList); + } + + @ApiOperation("查询所有菜单") + @GetMapping + public ResponseMessage> getAll(){ + List sarMenus=sarMenuEOService.getAll(); + return Result.success(sarMenus); + } + + @ApiOperation("添加菜单") + @PostMapping("/add") + public ResponseMessage addMenu(@RequestBody SarMenu sarMenu){ + return sarMenuEOService.addMenu(sarMenu); + } + + @ApiOperation("编辑菜单") + @PutMapping + public ResponseMessage updateMenu(@Validated(SarMenu.update.class) @RequestBody SarMenu sarMenu){ + return sarMenuEOService.updateMenu(sarMenu); + } + + @ApiOperation("删除菜单") + @DeleteMapping + public ResponseMessage delMenu(@RequestParam String menuId){ + return sarMenuEOService.delMenu(menuId); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/dao/SarMenuDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/dao/SarMenuDao.java new file mode 100644 index 00000000..8aaae7e9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/dao/SarMenuDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.sarMenu.dao; + +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface SarMenuDao extends BaseMapper { + + List queryMenuByDis(SarMenu sarMenuEO); + + List selectMenuByRole(SarMenu sarMenuEO); + + List queryMenuByPid(SarMenu sarMenuEO); + + List queryByPidExcpetSelf(SarMenu sarMenuEO); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/entity/SarMenu.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/entity/SarMenu.java new file mode 100644 index 00000000..c69f65bc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/entity/SarMenu.java @@ -0,0 +1,102 @@ +package com.adc.da.slrs.sarMenu.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.utils.treetool.annotation.TreeNodeId; +import com.adc.da.utils.treetool.annotation.TreeNodeName; +import com.adc.da.utils.treetool.annotation.TreeNodeParentId; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Transient; + +import javax.validation.constraints.NotNull; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarMenu对象", description="") +public class SarMenu extends BaseEntity { + public interface update{ + } + + private static final long serialVersionUID = 1L; + + + @NotNull(message = "id不能为空",groups = {update.class}) + @ApiModelProperty(value = "主键") + @TableId(value = "ID",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "标准法规划分") + @TableField("SOR_DIVIDE") + private String sorDivide; + + @TreeNodeName + @ApiModelProperty(value = "目录名称") + @TableField("MENU_NAME") + private String menuName; + + @TreeNodeParentId + @ApiModelProperty(value = "父级ID") + @TableField("PARENT_ID") + private String parentId; + + @ApiModelProperty(value = "父级ID集合") + @TableField("PARENT_IDS") + private String parentIds; + + @ApiModelProperty(value = "排序序号") + @TableField("DISPLAY_SEQ") + private Integer displaySeq; + + @ApiModelProperty(value = "路径") + @TableField("HREF") + private String href; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private Date modifyTime; + + @ApiModelProperty(value = "备注") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty(value = "层级") + private Integer level; + + @TableField(exist=false) + private List roleIds; + + @TableField(exist=false) + private List childMenuIds; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/service/ISarMenuService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/service/ISarMenuService.java new file mode 100644 index 00000000..31cc4e96 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/service/ISarMenuService.java @@ -0,0 +1,70 @@ +package com.adc.da.slrs.sarMenu.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarMenuService extends IService { + + List selectMenuByRole(SarMenu sarMenuEO); + + List queryMenuByDis(SarMenu sarMenuEO); + + List getParentMenuId(String menuId); + + List queryRoleMenuIdList(String sordDivide, String menuId) throws Exception; + + List getChildMenuList(String menuId); + + /** + * 通过ids查询menus + * @param menuIds:菜单ID + * @return List + */ + List getMenusByIds(List menuIds); + + /** + * 查询所有菜单 + */ + List getAll(); + + /** + * 添加菜单 + * @param sarMenu:菜单信息 + * @return ResponseMessage + */ + ResponseMessage addMenu(SarMenu sarMenu); + + /** + * 编辑菜单 + * @param sarMenu:菜单信息 + * @return ResponseMessage + */ + ResponseMessage updateMenu(SarMenu sarMenu); + + /** + * 删除菜单 + * @param menuId :菜单ID + * @return ResponseMessage + */ + ResponseMessage delMenu(String menuId); + + /** + * 通过Ids查询menu + * @param menuIds :菜单Ids + * @return List + */ + List getMenuByIds(List menuIds); + + List getSecondMenuByIds(List menuIds); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/service/impl/SarMenuServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/service/impl/SarMenuServiceImpl.java new file mode 100644 index 00000000..6daf49a0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenu/service/impl/SarMenuServiceImpl.java @@ -0,0 +1,294 @@ +package com.adc.da.slrs.sarMenu.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarMenu.dao.SarMenuDao; +import com.adc.da.slrs.sarMenu.service.ISarMenuService; +import com.adc.da.utils.treetool.Tree; +import com.adc.da.utils.treetool.TreeNode; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarMenuServiceImpl extends ServiceImpl implements ISarMenuService { + + @Autowired + private SarMenuDao dao; + + public List getParentMenuId (String menuId) { + List parentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(menuId)) { + List sarMenuEOList = dao.selectList(new QueryWrapper<>()); + Tree tree = new Tree(sarMenuEOList); + TreeNode treeNode = tree.getTreeNode(menuId); + while (treeNode.getParent() != null) { + parentIds.add(treeNode.getParent().getNodeId()); + treeNode = treeNode.getParent(); + } + } + return parentIds; + } + + public List queryRoleMenuIdList(String sordDivide, String menuId) throws Exception{ + // 根据当前登录人id查出对应角色 + SarMenu sarMenu = new SarMenu(); + sarMenu.setSorDivide(sordDivide); + String roleIds = UserUtils.getRoleIds(); + String[] roleArr = roleIds.split(","); + List roleIdList = Arrays.asList(roleArr); + sarMenu.setRoleIds(roleIdList); + //角色未配置根节点,手动加入根节点权限 + List resultList = queryMenuByDis(sarMenu); + List list = selectMenuByRole(sarMenu); + if(!"BUSINESS_STAND".equals(sarMenu.getSorDivide())){ + resultList.addAll(list); + } else { + // 如果是企标,并且两个根节点都有权限,最先只查已分配下的节点 + if (resultList != null && resultList.size() == 2) { + SarMenu menu1 = resultList.get(0); + SarMenu menu2 = resultList.get(1); + if (list != null && list.size()>1) { + int menu1Index = -1; + int menu2Index = -1; + for (int i = 0;i < list.size();i++) { + if (list.get(i).getId().equals(menu1.getId())) { + menu1Index = i; + } else if (list.get(i).getId().equals(menu2.getId())) { + menu2Index = i; + } + } + if (menu1Index>0 && menu2Index>0 && StringUtils.isEmpty(menuId)) { + list.remove(menu2Index); + } + } + } + resultList = list; + } + List getMenuIds = new ArrayList<>(); + if(resultList != null && !resultList.isEmpty()){ + for(SarMenu menu : resultList){ + getMenuIds.add(menu.getId()); + } + } + return getMenuIds; + } + + public List queryMenuByDis(SarMenu sarMenu) { + return dao.queryMenuByDis(sarMenu); + } + + public List selectMenuByRole(SarMenu sarMenu) { + List list = dao.selectMenuByRole(sarMenu); + if (list == null) { + list = new ArrayList<>(); + } + SarMenu collectMenu = new SarMenu(); + collectMenu.setId("wdsc"); + collectMenu.setSorDivide(sarMenu.getSorDivide()); + collectMenu.setMenuName("我的收藏"); + collectMenu.setParentId("1"); + collectMenu.setDisplaySeq(9999); + list.add(collectMenu); + SarMenu labeltMenu = new SarMenu(); + labeltMenu.setId("gxhbq"); + labeltMenu.setSorDivide(sarMenu.getSorDivide()); + labeltMenu.setMenuName("个性化标签"); + labeltMenu.setParentId("1"); + labeltMenu.setDisplaySeq(10000); + if(!"BUSINESS_STAND".equals(sarMenu.getSorDivide())) { + list.add(labeltMenu); + } + return list; + } + + public List queryRoleMenuIdListForLaws(String sordDivide) throws Exception{ + // 根据当前登录人id查出对应角色 + SarMenu sarMenu = new SarMenu(); + sarMenu.setSorDivide(sordDivide); + String roleIds = UserUtils.getRoleIds(); + String[] roleArr = roleIds.split(","); + List roleIdList = Arrays.asList(roleArr); + sarMenu.setRoleIds(roleIdList); + //角色未配置根节点,手动加入根节点权限 +// List resultList = queryMenuByDis(SarMenu); + List list = selectMenuByRole(sarMenu); +// resultList.addAll(list); + List getMenuIds = new ArrayList<>(); + if(list != null && !list.isEmpty()){ + for(SarMenu menu : list){ + getMenuIds.add(menu.getId()); + } + } + return getMenuIds; + } + + public List getChildMenuList (String menuId) { + List menuIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(menuId)) { + List SarMenuList = dao.selectList(new QueryWrapper().eq("ID",menuId)); + Tree tree = new Tree(SarMenuList); + TreeNode treeNode = tree.getTreeNode(menuId); + if (treeNode != null) { + menuIds.add(treeNode.getNodeId()); + for (TreeNode node : treeNode.getAllChildren()) { + menuIds.add(node.getNodeId()); + } + } + } + return menuIds; + } + + /** + * 通过ids查询menus + * @param menuIds:菜单ID + * @return List + */ + @Override + public List getMenusByIds(List menuIds) { + QueryWrapper menuQueryWrapper=new QueryWrapper<>(); + menuQueryWrapper.in("id",menuIds); + return dao.selectList(menuQueryWrapper); + } + + /** + * 查询所有菜单 + */ + @Override + public List getAll() { + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.orderByAsc("DISPLAY_SEQ"); + sarMenuQueryWrapper.isNull("PARENT_ID"); + sarMenuQueryWrapper.eq("VALID_FLAG","0"); + List sarMenus=dao.selectList(sarMenuQueryWrapper); + for(SarMenu sarMenu:sarMenus){ + sarMenu.setChildren(recursionGetChildren((sarMenu))); + } + return sarMenus; + } + + /** + * 添加菜单 + * @param sarMenu:菜单信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage addMenu(SarMenu sarMenu) { + if(sarMenu.getParentId()!=null){ + SarMenu parent=dao.selectById(sarMenu.getParentId()); + if(parent==null){ + return Result.error("该父菜单不存在"); + } + } + dao.insert(sarMenu); + return Result.success(); + } + + /** + * 编辑菜单 + * @param sarMenu:菜单信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage updateMenu(SarMenu sarMenu) { + SarMenu oldMenu=dao.selectById(sarMenu.getId()); + if(oldMenu==null){ + return Result.error("该菜单不存在"); + } + if(sarMenu.getParentId()!=null){ + SarMenu parent=dao.selectById(sarMenu.getParentId()); + if(parent==null){ + return Result.error("父节点不存在"); + } + } + dao.updateById(sarMenu); + return Result.success(); + } + + /** + * 删除菜单 + * @param menuId :菜单ID + * @return ResponseMessage + */ + @Override + public ResponseMessage delMenu(String menuId) { + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.eq("parent_id",menuId); + List children=dao.selectList(sarMenuQueryWrapper); + if(children!=null&&children.size()>0){ + return Result.error("该菜单有子节点,无法删除"); + } + dao.deleteById(menuId); + return Result.success(); + } + + /** + * 通过Ids查询menu + * @param menuIds :菜单Ids + * @return List + */ + @Override + public List getMenuByIds(List menuIds) { + if(menuIds!=null&&menuIds.size()>0){ + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.in("id",menuIds); + return dao.selectList(sarMenuQueryWrapper); + } + return new ArrayList<>(); + } + + /** + * 通过Ids查询menu + * @param menuIds :菜单Ids + * @return List + */ + @Override + public List getSecondMenuByIds(List menuIds) { + if(menuIds!=null&&menuIds.size()>0){ + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.in("id",menuIds); + sarMenuQueryWrapper.eq("level",2); + sarMenuQueryWrapper.isNotNull("href"); + return dao.selectList(sarMenuQueryWrapper); + } + return new ArrayList<>(); + } + + /** + * 递归调用获取子节点 + * @param parent:父节点 + * @return List + */ + private List recursionGetChildren(SarMenu parent){ + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.orderByAsc("DISPLAY_SEQ"); + sarMenuQueryWrapper.eq("PARENT_ID",parent.getId()); + List children=dao.selectList(sarMenuQueryWrapper); + for(SarMenu sarMenu:children){ + if(sarMenu.getLevel()== null ){ + sarMenu.setLevel(parent.getLevel()+1); + dao.updateById(sarMenu); + }else{ + sarMenu.setLevel(parent.getLevel()+1); + } + sarMenu.setChildren(recursionGetChildren((sarMenu))); + } + return children; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/controller/SarMenuStandardNewController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/controller/SarMenuStandardNewController.java new file mode 100644 index 00000000..633e8b51 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/controller/SarMenuStandardNewController.java @@ -0,0 +1,54 @@ +package com.adc.da.slrs.sarMenuStandard.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarMenuStandard.entity.SarMenuStandardNew; +import com.adc.da.slrs.sarMenuStandard.service.ISarMenuStandardNewService; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.adc.da.util.LoginUserUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-07 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库-菜单标准体系") +@RequestMapping("/${restPath}/lawss/sarMenuStandardLimit") +public class SarMenuStandardNewController extends BaseController { + + @Autowired + private ISarMenuStandardNewService iSarMenuStandardNewService; + + @Autowired + private ITsUserService tsUserService; + + @ApiOperation("查询当前节点所有关联上级") + @GetMapping("/getTopMenu") + public ResponseMessage getTopMenu(SarMenuStandardNew sarMenuStandardNew){ + String tsResources= iSarMenuStandardNewService.getTopMenu(sarMenuStandardNew); + return Result.success(tsResources); + } + + @ApiOperation("查询有权限资源") + @GetMapping("/getListStandLimit") + public ResponseMessage> getListStandLimit(SarMenuStandardNew sarMenuStandardNew){ + List access = tsUserService.getResourceUserId(LoginUserUtil.getUserId()); + List tsResources= iSarMenuStandardNewService.getListStandLimit(sarMenuStandardNew,access); + return Result.success(tsResources); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/dao/SarMenuStandardNewDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/dao/SarMenuStandardNewDao.java new file mode 100644 index 00000000..6ff7f286 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/dao/SarMenuStandardNewDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarMenuStandard.dao; + +import com.adc.da.slrs.sarMenuStandard.entity.SarMenuStandardNew; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-07 + */ +public interface SarMenuStandardNewDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/entity/SarMenuStandardNew.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/entity/SarMenuStandardNew.java new file mode 100644 index 00000000..452e55ae --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/entity/SarMenuStandardNew.java @@ -0,0 +1,113 @@ +package com.adc.da.slrs.sarMenuStandard.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.sys.utils.treetool.annotation.TreeNodeId; +import com.adc.da.sys.utils.treetool.annotation.TreeNodeName; +import com.adc.da.sys.utils.treetool.annotation.TreeNodeParentId; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarMenuStandard对象", description="") +public class SarMenuStandardNew extends BaseEntity { + public interface update{ + } + + private static final long serialVersionUID = 1L; + + @TreeNodeId + @NotNull(message = "id不能为空",groups = {update.class}) + @ApiModelProperty(value = "主键") + @TableId(value = "ID",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "标准法规划分") + @TableField("SOR_DIVIDE") + private String sorDivide; + + @TreeNodeName + @ApiModelProperty(value = "目录名称") + @TableField("MENU_NAME") + private String menuName; + + @TreeNodeParentId + @ApiModelProperty(value = "父级ID") + @TableField("PARENT_ID") + private String parentId; + + @ApiModelProperty(value = "父级ID集合") + @TableField("PARENT_IDS") + private String parentIds; + + @ApiModelProperty(value = "排序序号") + @TableField("DISPLAY_SEQ") + private Integer displaySeq; + + @ApiModelProperty(value = "路径") + @TableField("HREF") + private String href; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "备注") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "数据字典ID") + @TableField("DIC_ID") + private String dicId; + + @ApiModelProperty(value = "子菜单") + @TableField(exist = false) + private List children; + + @TableField(exist=false) + private List roleIds; + + @TableField(exist=false) + private List childMenuIds; + + @TableField(exist=false) + private String parentIdsName; + + @TableField(exist=false) + private String userId; + + @ApiModelProperty(value = "树结构数据 区分 类型: 标准数据 tsr 技术系列 sarMs") + @TableField(exist = false) + private String treeType; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/ISarMenuStandardNewService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/ISarMenuStandardNewService.java new file mode 100644 index 00000000..8dec3378 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/ISarMenuStandardNewService.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.sarMenuStandard.service; + +import com.adc.da.slrs.sarMenuStandard.entity.SarMenuStandardNew; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-07-07 + */ +public interface ISarMenuStandardNewService extends IService { + + + List getListStandLimit(SarMenuStandardNew sarMenuStandardNew, List access); + + String getTopMenu(SarMenuStandardNew sarMenuStandardNew); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java new file mode 100644 index 00000000..aab8a4a5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java @@ -0,0 +1,122 @@ +package com.adc.da.slrs.sarMenuStandard.service.impl; + +import com.adc.da.slrs.sarMenuStandard.dao.SarMenuStandardNewDao; +import com.adc.da.slrs.sarMenuStandard.entity.SarMenuStandardNew; +import com.adc.da.slrs.sarMenuStandard.service.ISarMenuStandardNewService; +import com.adc.da.sys.sarMenuStandard.dao.SarMenuStandardDao; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-07 + */ +@Service +public class SarMenuStandardNewServiceNewImpl extends ServiceImpl implements ISarMenuStandardNewService { + + @Autowired + private SarMenuStandardDao dao; + + + @Override + public String getTopMenu(SarMenuStandardNew sarMenuStandardNew){ + QueryWrapper qw = new QueryWrapper(); + if(StringUtils.isNotBlank(sarMenuStandardNew.getId())){ + qw.eq("ID",sarMenuStandardNew.getId()); + } + if(StringUtils.isNotBlank(sarMenuStandardNew.getMenuName())){ + qw.eq("MENU_NAME",sarMenuStandardNew.getMenuName()); + } + + List list = dao.selectList(qw); + if(!list.isEmpty()){ + if(StringUtils.isNotBlank(list.get(0).getParentIds())){ + List topIdList = Arrays.stream(list.get(0).getParentIds().split(",")).map(String::trim).collect(Collectors.toList()); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.in("ID",topIdList); + List topList = dao.selectTopList(wrapper,list.get(0).getParentIds()); + List filterList = topList.stream().map(SarMenuStandard::getMenuName).collect(Collectors.toList()); + if(!filterList.isEmpty()){ + return StringUtils.join(filterList, "/")+'/'+list.get(0).getMenuName(); + } + }else { + return list.get(0).getMenuName(); + } + + } + + + return ""; + } + + /** + * 查询有权限菜单 + * @param sarMenuStandardNew + */ + @Override + public List getListStandLimit(SarMenuStandardNew sarMenuStandardNew, List access) { + List TsResources = new ArrayList<>(); + + QueryWrapper queryWrapper =new QueryWrapper<>(); + if(sarMenuStandardNew.getSorDivide()!=null){ + queryWrapper.eq("sor_divide", sarMenuStandardNew.getSorDivide()); + } + + if(sarMenuStandardNew.getDicId()!=null){ + queryWrapper.eq("DIC_ID", sarMenuStandardNew.getDicId()); + } + if(access!=null && !access.isEmpty()){ + queryWrapper.in(null!=access && !access.isEmpty(),"ID",access); + } + queryWrapper.isNull("PARENT_ID"); + queryWrapper.orderByAsc("DISPLAY_SEQ"); + TsResources=dao.selectList(queryWrapper); + + for(SarMenuStandard resource:TsResources){ + resource.setTreeType("sarMs"); + QueryWrapper TsResourceQueryWrapper=new QueryWrapper<>(); + TsResourceQueryWrapper.like("PARENT_IDS",resource.getId()); + if(access!=null && !access.isEmpty()){ + TsResourceQueryWrapper.in(null!=access && !access.isEmpty(),"ID",access); + } + TsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); + List children=dao.selectList(TsResourceQueryWrapper); + resource.setChildren(recursionGetListChildrenStand((resource),(children))); + } + + return TsResources; + } + + /** + * 递归调用获取子节点 + * @return List + */ + private List recursionGetListChildrenStand(SarMenuStandard resource, List children){ + List tsResources = children.stream() + .filter(resource1 -> resource1.getParentId().equals(resource.getId())) + .collect(Collectors.toList()); + if(!tsResources.isEmpty()){ + tsResources = tsResources.stream().sorted(Comparator.comparing(resource1 -> resource1.getDisplaySeq())).collect(Collectors.toList()); + tsResources.forEach(resource1 -> { + resource1.setTreeType("sarMs"); + resource1.setChildren(recursionGetListChildrenStand((resource1),(children))); + }); + } + return tsResources; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/controller/SarModelTreeController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/controller/SarModelTreeController.java new file mode 100644 index 00000000..253362b8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/controller/SarModelTreeController.java @@ -0,0 +1,98 @@ +package com.adc.da.slrs.sarModelTree.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarModelTree.service.ISarModelTreeService; +import com.adc.da.slrs.sarModelTree.service.ISarModuleTreeService; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.ResponseDto; +import com.adc.da.util.utils.StringUtils; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarModelTree.entity.SarModelTree; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-15 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库-模块树结构") +@RequestMapping("/${restPath}/sarModelTree") +public class SarModelTreeController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarModelTreeController.class); + + + @Autowired + private ISarModelTreeService iSarModelTreeService; + + @Autowired + private ISarModuleTreeService iSarModuleTreeService; + + @ApiOperation("查询父所有资源") + @GetMapping("/list") + public ResponseMessage> getAll(){ +// List tsResources = iSarModuleTreeService.getAll(null); + SarModelTree rootData = new SarModelTree(); + rootData.setModelType("TRUCK"); + rootData.setDelFlag("1"); + List tsResources = iSarModelTreeService.getAll(rootData); + return Result.success(tsResources); + } + + @ApiOperation("查询父所有资源") + @GetMapping("/listByType") + public ResponseMessage> getAllByType(String type){ +// List tsResources = iSarModuleTreeService.getAll(null); + SarModelTree rootData = new SarModelTree(); + rootData.setModelType(type); + rootData.setDelFlag("1"); + List tsResources = iSarModelTreeService.getAll(rootData); + return Result.success(tsResources); + } + + + + @ApiOperation("根据父ID查询子所有资源") + @GetMapping("/childByList") + public ResponseMessage> childByList(SarModelTree parentTree){ +// List tsResources = iSarModuleTreeService.recursionGetChildren(parentTree); + if(StringUtils.isNotBlank(parentTree.getType())){ + parentTree.setModelType(parentTree.getType()); + } + List tsResources = iSarModelTreeService.recursionGetChildren(parentTree); + + return Result.success(tsResources); + } + + @ApiOperation("同步模块单元信息") + @PostMapping("/save") + public ResponseDto save(@RequestBody String json){ + //todo 实现解析并存储的到数据库 + Head head = iSarModuleTreeService.analysisJsonAndStorage(json); + ResponseDto responseDto = new ResponseDto(head); + return responseDto; + } + + @ApiOperation("同步模块单元信息") + @PostMapping("/syncModelDto") + public ResponseDto syncModelDto(@RequestBody String jsonStr){ + logger.info("===========================开始接收模块单元数据=================================="); + ResponseDto responseDto = iSarModelTreeService.syncModelTreeDataToDB(jsonStr); + logger.info("===========================接收模块单元数据结束=================================="); + return responseDto; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModelTreeDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModelTreeDao.java new file mode 100644 index 00000000..f26aeef4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModelTreeDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarModelTree.dao; + +import com.adc.da.slrs.sarModelTree.entity.SarModelTree; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-15 + */ +public interface SarModelTreeDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModuleTreeDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModuleTreeDao.java new file mode 100644 index 00000000..01687cc2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/dao/SarModuleTreeDao.java @@ -0,0 +1,8 @@ +package com.adc.da.slrs.sarModelTree.dao; + +import com.adc.da.slrs.sarModelTree.entity.SarModuleTree; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface SarModuleTreeDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/ResponseResult.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/ResponseResult.java new file mode 100644 index 00000000..dbcf6612 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/ResponseResult.java @@ -0,0 +1,37 @@ +package com.adc.da.slrs.sarModelTree.entity; + +/** + * 同步数据时使用的返回给其他系统的结果 + */ +public class ResponseResult { + private String GUID; //序列号 业务主键 + + private String MESSAGE; //接口信息 失败时,详细的失败原因 + + private String STATUS; //接口状态 B(失败),S(成功) + + + public String getGUID() { + return GUID; + } + + public void setGUID(String GUID) { + this.GUID = GUID; + } + + public String getMESSAGE() { + return MESSAGE; + } + + public void setMESSAGE(String MESSAGE) { + this.MESSAGE = MESSAGE; + } + + public String getSTATUS() { + return STATUS; + } + + public void setSTATUS(String STATUS) { + this.STATUS = STATUS; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModelTree.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModelTree.java new file mode 100644 index 00000000..41fcc446 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModelTree.java @@ -0,0 +1,104 @@ +package com.adc.da.slrs.sarModelTree.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-07-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarModelTree对象", description="") +public class SarModelTree extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private String id; + + @TableField("NAME") + private String name; + + @TableField("PID") + private String pid; + + + @ApiModelProperty(value = "查询子节点时,使用model与结果对比,筛选出与父节点不同的数据") + @TableField("MODEL") + private String model; + + @ApiModelProperty(value = "模块结构特性") + @TableField("FEATURES") + private String features; + + @ApiModelProperty(value = "删除标识 1:未删除 2:已删除") + @TableField("DEL_FLAG") + private String delFlag; + + @ApiModelProperty(value = "排序序号") + @TableField("SORT") + private Integer sort; + + @ApiModelProperty(value = "子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty(value = "上级菜单名称") + @TableField(exist = false) + private String parentIdsName; + + @TableField(exist=false) + private List roleIds; + + @TableField(exist=false) + private List childMenuIds; + + @TableField("HAS_CHILDREN") + private String hasChildren; + + @TableField(exist = false) + private boolean leaf; + + /** + * 模块类型 + * TRUCK 卡车类 + * CAR 乘用车类 + */ + @TableField("MODEL_TYPE") + private String modelType; + + /** + * 模块层级父级ID + * 为兼容之前的树结构逻辑,此处单独新增父级ID关联关系 + */ + @TableField("MODEL_PID") + private String modelPid; + + /** + * 模块数据层级关系 + */ + @TableField("MODEL_LEVEL") + private int modelLevel; + + /** + * 前端数据查询字段 + */ + @TableField(exist=false) + private String type; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModuleTree.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModuleTree.java new file mode 100644 index 00000000..10d485f1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/entity/SarModuleTree.java @@ -0,0 +1,106 @@ +package com.adc.da.slrs.sarModelTree.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +@Data +@TableName("sar_module_tree") +public class SarModuleTree { + + //序列号 + @SerializedName("GUID") + @TableId + private String guid; + + //系统 + @SerializedName("FTVSTYPE1") + @TableField("FTVSTYPE1") + private String ftvstype1; + + //模块团队代号 + @SerializedName("FTVSTYPE2") + @TableField("FTVSTYPE2") + private String ftvstype2; + //模块团队名称 + @SerializedName("FTVSTYPE3") + @TableField("FTVSTYPE3") + private String ftvstype3; + + //模块结构家族SF + @SerializedName("FTVSTYPE4") + @TableField("FTVSTYPE4") + private String ftvstype4; + + //模块结构元素SE + @SerializedName("FTVSTYPE5") + @TableField("FTVSTYPE5") + private String ftvstype5; + + //结构单元SU + @SerializedName("FTVSTYPE6") + @TableField("FTVSTYPE6") + private String ftvstype6; + + //功能分组码VSG + @SerializedName("FTVSTYPE7") + @TableField("FTVSTYPE7") + private String ftvstype7; + + //关联特征族代号(驱动要素) + @SerializedName("FTVSTYPE9") + @TableField("FTVSTYPE9") + private String ftvstype9; + + //是否需要额外描述 + @SerializedName("ACLUSERNAMES") + @TableField("ACLUSERNAMES") + private String aclusernames; + + //操作人 + @SerializedName("CREATOR") + @TableField("CREATOR") + private String creator; + + //SF_ID + @SerializedName("SERIESID") + @TableField("SERIESID") + private String seriesid; //SF_ID + + //SE_ID + @SerializedName("RESERVED") + @TableField("RESERVED") + private String reserved; //SE_ID + + //SU_ID + @SerializedName("STARTED") + @TableField("STARTED") + private String started; //SU_ID + + //操作时间 + @SerializedName("CREATIONDATE") + @TableField("CREATIONDATE") + private String creationdate; + + @TableField(exist = false) + private Integer level; + + @TableField(exist = false) + private String model; + + @TableField(exist = false) + private String nextCondition; + + //列ID + @SerializedName("ROWID") + @TableField(exist = false) + private String rowId; + + //产品线分类 + @SerializedName("PRODUCTTYPE") + @TableField(exist = false) + private String productType; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModelTreeService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModelTreeService.java new file mode 100644 index 00000000..68469327 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModelTreeService.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.sarModelTree.service; + +import com.adc.da.slrs.sarModelTree.entity.SarModelTree; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.ResponseDto; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-07-15 + */ +public interface ISarModelTreeService extends IService { + + List getAll(SarModelTree sarModelTree); + + List recursionGetChildren(SarModelTree parent); + + public ResponseDto syncModelTreeDataToDB(String json); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModuleTreeService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModuleTreeService.java new file mode 100644 index 00000000..14941c85 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/ISarModuleTreeService.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarModelTree.service; + +import com.adc.da.slrs.sarModelTree.entity.SarModelTree; +import com.adc.da.slrs.sarModelTree.entity.SarModuleTree; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; + +import java.util.List; + +public interface ISarModuleTreeService { + + List getAll(SarModuleTree root); + + List recursionGetChildren(SarModuleTree parent); + + public Head analysisJsonAndStorage(String json); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModelTreeServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModelTreeServiceImpl.java new file mode 100644 index 00000000..3abf14e8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModelTreeServiceImpl.java @@ -0,0 +1,368 @@ +package com.adc.da.slrs.sarModelTree.service.impl; + +import com.adc.da.slrs.sarModelTree.entity.*; +import com.adc.da.slrs.sarModelTree.dao.SarModelTreeDao; +import com.adc.da.slrs.sarModelTree.service.ISarModelTreeService; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.ResponseDto; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-15 + */ +@Service +public class SarModelTreeServiceImpl extends ServiceImpl implements ISarModelTreeService { + + private static final Logger logger = LoggerFactory.getLogger(SarModelTreeServiceImpl.class); + + /** + * 查询所有菜单 + * @param sarModelTree + */ + @Override + public List getAll(SarModelTree sarModelTree) { + QueryWrapper tsResourceQueryWrapper=new QueryWrapper<>(); + tsResourceQueryWrapper.isNull("PID"); + if(sarModelTree!=null && StringUtils.isNotBlank(sarModelTree.getModelType())){ + tsResourceQueryWrapper.eq("MODEL_TYPE",sarModelTree.getModelType()); + } + tsResourceQueryWrapper.eq("DEL_FLAG","1"); + List list = this.baseMapper.selectList(tsResourceQueryWrapper); +// for(SarModelTree tree:list){ +// tree.setChildren(recursionGetChildren((tree))); +// } + list.forEach(item->{ + switch (item.getHasChildren()){ + case "0": + item.setLeaf(true); + break; + case "1": + item.setLeaf(false); + break; + } + item.setId(item.getName()); + }); + return list; + } + + /** + * 递归调用获取子节点 + * @param parent:父节点 + * @return List + */ + @Override + public List recursionGetChildren(SarModelTree parent){ + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.orderByAsc("SORT"); +// sarMenuQueryWrapper.in("PID",parent.getId()); + sarMenuQueryWrapper.eq("PID",parent.getId()); + if(parent!=null && StringUtils.isNotBlank(parent.getModelType())){ + sarMenuQueryWrapper.eq("MODEL_TYPE",parent.getModelType()); + } + sarMenuQueryWrapper.eq("DEL_FLAG","1"); + List children=this.baseMapper.selectList(sarMenuQueryWrapper); +// for(SarModelTree sarMenu:children){ +// sarMenu.setChildren(recursionGetChildren((sarMenu))); +// } + + List collect = children.stream() + .filter(item -> !parent.getModel().equals(item.getModel())).collect(Collectors.toList()); + + collect.forEach(item-> { + switch (item.getHasChildren()) { + case "0": + item.setLeaf(true); + break; + case "1": + item.setLeaf(false); + break; + } + item.setId(item.getName()); + if (null==item.getName() && null != item.getModel()){ + item.setName(item.getModel()); + } + }); + + + return collect; + } + + @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) + @Override + public ResponseDto syncModelTreeDataToDB(String json){ + logger.info("=========================接收模块单元数据==========================="); + logger.info(json); + logger.info("=========================接收模块单元数据==========================="); + String rootId = "10000"; + String rootPID = "根节点"; + + Head head = new Head(); + //构建返回的结果 + List resultList = new ArrayList<>(); + try{ + //把字符串转换成对象 + JsonObject parse = JsonParser.parseString(json).getAsJsonObject(); + //要把jsonObject里的HEAD强转成JsonObject类型 + JsonObject HEAD = (JsonObject) parse.get("HEAD"); + //因为是最后要取的值了,所以就拿到之后把它转换成String类型 + HEAD.get("CONSUMER").getAsString(); + //构建head头信息 + head.setBIZTRANSACTIONID(HEAD.get("BIZTRANSACTIONID").getAsString()); + + //获取json中的list + JsonArray list = (JsonArray)parse.get("LIST"); + Gson gson = new Gson(); + List moduleTreeList = new LinkedList<>(); + + AtomicInteger successCount = new AtomicInteger(); + + list.forEach(item->{ + JsonObject objectJson=(JsonObject) item; + SarModuleTree sarModuleTree = gson.fromJson(objectJson, SarModuleTree.class); + //返回结果集 + + String pName = sarModuleTree.getFtvstype1(); + String p2Name = sarModuleTree.getFtvstype2(); + String p3Name = sarModuleTree.getFtvstype3(); + String p4Name = sarModuleTree.getFtvstype4(); + String p5Name = sarModuleTree.getFtvstype5(); + String p6Name = sarModuleTree.getFtvstype6(); + String jgysName = sarModuleTree.getFtvstype9(); + String modelType = sarModuleTree.getProductType(); + if(StringUtils.equals(modelType,"f0_mssg")){ + modelType ="TRUCK";//卡车类 + }else{ + modelType ="CAR";//乘用车类 + } + if(StringUtils.isNotBlank(pName)){ + QueryWrapper queryP1Wrapper = new QueryWrapper<>(); + queryP1Wrapper.eq("NAME",pName); + queryP1Wrapper.eq("MODEL_TYPE",modelType); + queryP1Wrapper.eq("MODEL_LEVEL",1); + queryP1Wrapper.eq("MODEL_PID",rootId); + queryP1Wrapper.eq("DEL_FLAG","1"); + List p1TreeDataList = this.baseMapper.selectList(queryP1Wrapper); + SarModelTree p1TreeData = null; + if (p1TreeDataList !=null && !p1TreeDataList.isEmpty()) { + p1TreeData = p1TreeDataList.get(0); + p1TreeData.setModel(pName); + p1TreeData.setModelLevel(1); + p1TreeData.setModelPid(rootId); + p1TreeData.setModelType(modelType); + p1TreeData.setName(pName); + p1TreeData.setPid(rootPID); + p1TreeData.setDelFlag("1"); + p1TreeData.setHasChildren("1"); + this.baseMapper.updateById(p1TreeData); + }else{ + p1TreeData = new SarModelTree(); + p1TreeData.setId(UUIDUtils.randomUUID(20)); + p1TreeData.setModel(pName); + p1TreeData.setModelLevel(1); + p1TreeData.setModelPid(rootId); + p1TreeData.setModelType(modelType); + p1TreeData.setName(pName); + p1TreeData.setPid(rootPID); + p1TreeData.setDelFlag("1"); + p1TreeData.setHasChildren("1"); + this.baseMapper.insert(p1TreeData); + } + + if(StringUtils.isNotBlank(p2Name)){ + QueryWrapper queryP2Wrapper = new QueryWrapper<>(); + queryP2Wrapper.eq("NAME",pName); + queryP2Wrapper.eq("MODEL_TYPE",modelType); + queryP2Wrapper.eq("MODEL_LEVEL",1); + queryP2Wrapper.eq("MODEL_PID",rootId); + queryP2Wrapper.eq("DEL_FLAG","1"); + List p2TreeDataList = this.baseMapper.selectList(queryP2Wrapper); + SarModelTree p2TreeData = null; + if (p2TreeDataList !=null && !p2TreeDataList.isEmpty()) { + p2TreeData = p2TreeDataList.get(0); + p2TreeData.setModel(p3Name); + p2TreeData.setModelLevel(2); + p2TreeData.setModelPid(p1TreeData.getId()); + p2TreeData.setModelType(modelType); + p2TreeData.setName(p2Name); + p2TreeData.setPid(p1TreeData.getName()); + p2TreeData.setDelFlag("1"); + p2TreeData.setHasChildren("1"); + this.baseMapper.updateById(p2TreeData); + }else{ + p2TreeData = new SarModelTree(); + p2TreeData.setId(UUIDUtils.randomUUID(20)); + p2TreeData.setModel(p3Name); + p2TreeData.setModelLevel(2); + p2TreeData.setModelPid(p1TreeData.getId()); + p2TreeData.setModelType(modelType); + p2TreeData.setName(p2Name); + p2TreeData.setPid(p1TreeData.getName()); + p2TreeData.setDelFlag("1"); + p2TreeData.setHasChildren("1"); + this.baseMapper.insert(p2TreeData); + } + + if(StringUtils.isNotBlank(p3Name)){ + QueryWrapper queryP3Wrapper = new QueryWrapper<>(); + queryP3Wrapper.eq("NAME",pName); + queryP3Wrapper.eq("MODEL_TYPE",modelType); + queryP3Wrapper.eq("MODEL_LEVEL",1); + queryP3Wrapper.eq("MODEL_PID",rootId); + queryP3Wrapper.eq("DEL_FLAG","1"); + List p3TreeDataList = this.baseMapper.selectList(queryP3Wrapper); + SarModelTree p3TreeData = null; + + if (p3TreeDataList !=null && !p3TreeDataList.isEmpty()) { + p3TreeData = p3TreeDataList.get(0); + p3TreeData.setModel(p4Name); + p3TreeData.setModelLevel(3); + p3TreeData.setModelPid(p2TreeData.getId()); + p3TreeData.setModelType(modelType); + p3TreeData.setName(p4Name); + p3TreeData.setPid(p2TreeData.getName()); + p3TreeData.setDelFlag("1"); + p3TreeData.setHasChildren("1"); + this.baseMapper.updateById(p3TreeData); + }else{ + p3TreeData = new SarModelTree(); + p3TreeData.setId(UUIDUtils.randomUUID(20)); + p3TreeData.setModel(p4Name); + p3TreeData.setModelLevel(3); + p3TreeData.setModelPid(p2TreeData.getId()); + p3TreeData.setModelType(modelType); + p3TreeData.setName(p4Name); + p3TreeData.setPid(p2TreeData.getName()); + p3TreeData.setDelFlag("1"); + p3TreeData.setHasChildren("1"); + this.baseMapper.insert(p3TreeData); + } + + if(StringUtils.isNotBlank(p4Name)){ + QueryWrapper queryP4Wrapper = new QueryWrapper<>(); + queryP4Wrapper.eq("NAME",pName); + queryP4Wrapper.eq("MODEL_TYPE",modelType); + queryP4Wrapper.eq("MODEL_LEVEL",1); + queryP4Wrapper.eq("MODEL_PID",rootId); + queryP4Wrapper.eq("DEL_FLAG","1"); + List p4TreeDataList = this.baseMapper.selectList(queryP4Wrapper); + SarModelTree p4TreeData = null; + + if (p4TreeDataList !=null && !p4TreeDataList.isEmpty()) { + p4TreeData = p4TreeDataList.get(0); + p4TreeData.setModel(p5Name); + p4TreeData.setModelLevel(4); + p4TreeData.setModelPid(p3TreeData.getId()); + p4TreeData.setModelType(modelType); + p4TreeData.setName(p5Name); + p4TreeData.setPid(p3TreeData.getName()); + p4TreeData.setDelFlag("1"); + p4TreeData.setHasChildren("1"); + this.baseMapper.updateById(p4TreeData); + }else{ + p4TreeData = new SarModelTree(); + p4TreeData.setId(UUIDUtils.randomUUID(20)); + p4TreeData.setModel(p5Name); + p4TreeData.setModelLevel(4); + p4TreeData.setModelPid(p3TreeData.getId()); + p4TreeData.setModelType(modelType); + p4TreeData.setName(p5Name); + p4TreeData.setPid(p3TreeData.getName()); + p4TreeData.setDelFlag("1"); + p4TreeData.setHasChildren("1"); + this.baseMapper.insert(p4TreeData); + } + + if(StringUtils.isNotBlank(p5Name)){ + QueryWrapper queryP5Wrapper = new QueryWrapper<>(); + queryP5Wrapper.eq("NAME",pName); + queryP5Wrapper.eq("MODEL_TYPE",modelType); + queryP5Wrapper.eq("MODEL_LEVEL",1); + queryP5Wrapper.eq("MODEL_PID",rootId); + queryP5Wrapper.eq("DEL_FLAG","1"); + List p5TreeDataList = this.baseMapper.selectList(queryP5Wrapper); + SarModelTree p5TreeData = null; + + if (p5TreeDataList !=null && !p5TreeDataList.isEmpty()) { + p5TreeData = p5TreeDataList.get(0); + p5TreeData.setModel(p6Name); + p5TreeData.setModelLevel(5); + p5TreeData.setModelPid(p4TreeData.getId()); + p5TreeData.setModelType(modelType); + p5TreeData.setName(p6Name); + p5TreeData.setPid(p4TreeData.getName()); + p5TreeData.setFeatures(jgysName); + p5TreeData.setDelFlag("1"); + p5TreeData.setHasChildren("1"); + this.baseMapper.updateById(p5TreeData); + }else{ + p5TreeData = new SarModelTree(); + p5TreeData.setId(UUIDUtils.randomUUID(20)); + p5TreeData.setModel(p6Name); + p5TreeData.setModelLevel(5); + p5TreeData.setModelPid(p4TreeData.getId()); + p5TreeData.setModelType(modelType); + p5TreeData.setName(p6Name); + p5TreeData.setPid(p4TreeData.getName()); + p5TreeData.setFeatures(jgysName); + p5TreeData.setDelFlag("1"); + p5TreeData.setHasChildren("1"); + this.baseMapper.insert(p5TreeData); + } + } + } + } + } + } + successCount.getAndIncrement(); + }); + head.setERRORCODE("0"); + head.setRESULT("成功"); + ResponseResult returnData = new ResponseResult(); + returnData.setGUID("-1"); + returnData.setMESSAGE(""); + returnData.setSTATUS("S"); + resultList.add(returnData); + ResponseDto dto = new ResponseDto(head,resultList); + return dto; + }catch (Exception ex){ + logger.error(ex.getMessage(),ex); + head.setERRORCODE("2"); + head.setRESULT("业务失败需要重做"); + ResponseResult returnData = new ResponseResult(); + returnData.setGUID("-1"); + returnData.setMESSAGE("数据写入过程中发生错误,需重新推送"); + returnData.setSTATUS("E"); + resultList.add(returnData); + ResponseDto dto = new ResponseDto(head,resultList); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return dto; + } + + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModuleTreeServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModuleTreeServiceImpl.java new file mode 100644 index 00000000..82459152 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarModelTree/service/impl/SarModuleTreeServiceImpl.java @@ -0,0 +1,172 @@ +package com.adc.da.slrs.sarModelTree.service.impl; + +import com.adc.da.slrs.sarModelTree.dao.SarModuleTreeDao; +import com.adc.da.slrs.sarModelTree.entity.SarModelTree; +import com.adc.da.slrs.sarModelTree.entity.SarModuleTree; +import com.adc.da.slrs.sarModelTree.service.ISarModuleTreeService; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.awt.event.MouseAdapter; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.stream.Collectors; + +@Service +public class SarModuleTreeServiceImpl extends ServiceImpl implements ISarModuleTreeService { + + @Autowired() + private SarModuleTreeServiceImpl sarModuleTreeService; + + /** + * @return 所有的根节点 + */ + @Override + public List getAll(SarModuleTree root) { + QueryWrapper treeQueryWrapper = new QueryWrapper<>(); + treeQueryWrapper.select("FTVSTYPE1") + .groupBy("FTVSTYPE1"); + + List> moduleTreeList = this.baseMapper.selectMaps(treeQueryWrapper); + + List collect = moduleTreeList.stream() + .map(item -> { + SarModuleTree sarModuleTree = new SarModuleTree(); + sarModuleTree.setNextCondition(item.get("FTVSTYPE1").toString()); + sarModuleTree.setLevel(1); + sarModuleTree.setModel(item.get("FTVSTYPE1").toString()); + return sarModuleTree; + }).collect(Collectors.toList()); + + //返回转换元素后的数组 + return collect; + } + + /** + * 根据根节点查询其所有的子节点 + * @param parent + * @return + */ + @Override + public List recursionGetChildren(SarModuleTree parent) { + + QueryWrapper treeQueryWrapper = new QueryWrapper<>(); + Integer level =parent.getLevel(); + + switch (parent.getLevel()){ + case 1: + level=2; + break; + case 6: + return null; + } + + String column="FTVSTYPE"+(level+1); + + treeQueryWrapper.select(column) + .eq("FTVSTYPE"+parent.getLevel(),parent.getNextCondition()) + .groupBy(column); + + List> moduleTreeList = this.baseMapper.selectMaps(treeQueryWrapper); + + Integer finalLevel = level; + List collect = moduleTreeList.stream() + .map(item -> { + SarModuleTree sarModuleTree = new SarModuleTree(); + sarModuleTree.setNextCondition(item.get(column).toString()); //查询子节点条件 + sarModuleTree.setLevel(finalLevel + 1); + //拼接前端显示名称 +// switch (finalLevel){ +// case 3: +// sarModuleTree.setModel(item.get(column).toString());//前端显示名称 +// break; +// case +// } + + + return sarModuleTree; + }).collect(Collectors.toList()); + + + return collect; + } + + @Override + public Head analysisJsonAndStorage(String json) { + //获取头部 返回结果需要 + Head head = new Head(); + try{ + + //把字符串转换成对象 + JsonObject parse = JsonParser.parseString(json).getAsJsonObject(); + + + //要把jsonObject里的HEAD强转成JsonObject类型 + JsonObject HEAD = (JsonObject) parse.get("HEAD"); + //因为是最后要取的值了,所以就拿到之后把它转换成String类型 + HEAD.get("CONSUMER").getAsString(); + + head.setBIZTRANSACTIONID(HEAD.get("BIZTRANSACTIONID").getAsString()); + + //获取json中的list + JsonArray list = (JsonArray)parse.get("LIST"); + Gson gson = new Gson(); + List moduleTreeList = new LinkedList<>(); + list.forEach(item->{ + JsonObject objectJson=(JsonObject) item; + SarModuleTree sarModuleTree = gson.fromJson(objectJson, SarModuleTree.class); + sarModuleTree.setGuid(UUIDUtils.randomUUID20()); + moduleTreeList.add(sarModuleTree); + }); + //此处 + + //进行全量覆盖即删除表中所有数据,之后插入新的数据 + sarModuleTreeService.remove(null); + sarModuleTreeService.saveBatch(moduleTreeList); + head.setSUCCESSCOUNT(String.valueOf(moduleTreeList.size())); + }catch (Exception e){ + head.setERRORCODE("2"); + head.setRESULT("业务失败需要重做,失败原因: "+e.getMessage()); + return head; + } + + head.setERRORCODE("0"); + head.setRESULT("成功"); + return head; + } + + + + + /** + * 把SarModuleTree类型的list集合转换为SarModelTree类型的list集合,这样就不用修改前端代码( •̀ ω •́ )✧ + * --->对修改关闭,对扩展开放 + * @param moduleTreeList + * @return + */ + public List listTransform(List moduleTreeList){ + + return moduleTreeList.stream().map(SarModuleTree -> { + SarModelTree modelTree = new SarModelTree(); + modelTree.setId(SarModuleTree.getGuid()); + modelTree.setName(SarModuleTree.getFtvstype1()); + modelTree.setModel("TS" + +SarModuleTree.getFtvstype2().substring(SarModuleTree.getFtvstype2().length()-2) + +SarModuleTree.getSeriesid() + +SarModuleTree.getReserved() + +SarModuleTree.getStarted()); //"TS"+SF_ID+SE_ID+SU_ID 拼接模块编号ID + return modelTree; + }).collect(Collectors.toList()); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/controller/SarUserPersonalMenuController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/controller/SarUserPersonalMenuController.java new file mode 100644 index 00000000..6e99f43f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/controller/SarUserPersonalMenuController.java @@ -0,0 +1,43 @@ +package com.adc.da.slrs.sarPersonalCenter.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserPersonalMenuEO; +import com.adc.da.slrs.sarPersonalCenter.service.ISarUserPersonalMenuService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserPersonalMenu; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-22 +*/ +@RestController +@Api(tags = "福田标准法规--个人中心--我的板块") +@RequestMapping("/${restPath}/sarPersonalCenter/sar-user-personal-menu") +public class SarUserPersonalMenuController extends BaseController { + + @Autowired + private ISarUserPersonalMenuService iSarUserPersonalMenuService; + + @ApiOperation("获取用户的板块列表") + @GetMapping("/getList") + public ResponseMessage> getList(SarUserPersonalMenuEO eo){ + return iSarUserPersonalMenuService.getUserPersonalMenu(eo); + } + + @ApiOperation("更新用户的板块列表") + @PostMapping("/update") + public ResponseMessage> update(@RequestBody SarUserPersonalMenuEO eo){ + return iSarUserPersonalMenuService.updateUserPersonalMenu(eo); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/controller/SarUserStarController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/controller/SarUserStarController.java new file mode 100644 index 00000000..a32b041d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/controller/SarUserStarController.java @@ -0,0 +1,67 @@ +package com.adc.da.slrs.sarPersonalCenter.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStarEO; +import com.adc.da.slrs.sarPersonalCenter.service.ISarUserStarService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStar; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.Date; + +/** + *

    + * 前端控制器 + *

    + * + * @author zyl + * @since 2021-06-21 + */ +@RestController +@Api(tags = "福田标准法规--个人中心--我的收藏") +@RequestMapping("/${restPath}/sarPersonalCenter/sar-user-star") +public class SarUserStarController extends BaseController { + + @Autowired + private ISarUserStarService iSarUserStarService; + + @ApiOperation("获取用户收藏列表") + @GetMapping("/getList") + public ResponseMessage> getUserStarList(SarUserStarEO sarUserStarEO) { + return iSarUserStarService.getUserStarList(sarUserStarEO); + } + + @ApiOperation("批量删除用户收藏") + @PostMapping("/deleteList") + public ResponseMessage> deleteList(@RequestBody SarUserStarEO sarUserStars) { + return iSarUserStarService.deleteList(sarUserStars); + } + + @ApiOperation("删除用户收藏") + @PostMapping("/delete") + public ResponseMessage deleteById(@RequestBody SarUserStarEO sarUserStars) { + return iSarUserStarService.deleteById(sarUserStars); + } + + @ApiOperation("添加用户收藏") + @PostMapping("/addStar") + public ResponseMessage addStar(@RequestBody SarUserStar sarUserStar) { + return iSarUserStarService.addStar(sarUserStar); + } + + @ApiOperation("获取当前用户是否收藏该页面") + @GetMapping("/isStar") + public ResponseMessage isStar(String userId, String url) { + return iSarUserStarService.isStar(userId,url); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/dao/SarUserPersonalMenuDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/dao/SarUserPersonalMenuDao.java new file mode 100644 index 00000000..e11efb48 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/dao/SarUserPersonalMenuDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarPersonalCenter.dao; + +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserPersonalMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +public interface SarUserPersonalMenuDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/dao/SarUserStarDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/dao/SarUserStarDao.java new file mode 100644 index 00000000..ede9070d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/dao/SarUserStarDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarPersonalCenter.dao; + +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStar; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-21 + */ +public interface SarUserStarDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserPersonalMenu.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserPersonalMenu.java new file mode 100644 index 00000000..76fab518 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserPersonalMenu.java @@ -0,0 +1,49 @@ +package com.adc.da.slrs.sarPersonalCenter.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarUserPersonalMenu对象", description="") +public class SarUserPersonalMenu extends BaseEntity { + + @TableId(type = IdType.UUID) + @ApiModelProperty("id") + private String id; + + private String menuName; + + private String menuId; + + private Integer state; + + private String userId; + + private String menuUrl; + + + public SarUserPersonalMenu(String menuName, String menuId, String menuUrl) { + this.menuName = menuName; + this.menuId = menuId; + this.menuUrl = menuUrl; + } + + public SarUserPersonalMenu() { + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserPersonalMenuEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserPersonalMenuEO.java new file mode 100644 index 00000000..f456bc5a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserPersonalMenuEO.java @@ -0,0 +1,34 @@ +package com.adc.da.slrs.sarPersonalCenter.entity; + +import com.adc.da.base.entity.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarUserPersonalMenu批量操作对象", description="") +public class SarUserPersonalMenuEO extends SarUserPersonalMenu { + + @ApiModelProperty("当页数量") + private Integer size=20; + + @ApiModelProperty("当前页数") + private Integer current=1; + + @ApiModelProperty("操作信息") + private List sarUserPersonalMenus; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserStar.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserStar.java new file mode 100644 index 00000000..f49bc35e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserStar.java @@ -0,0 +1,55 @@ +package com.adc.da.slrs.sarPersonalCenter.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +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; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-21 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel(value="SarUserStar对象", description="") +public class SarUserStar extends BaseEntity { + + @ApiModelProperty("id") + private String id; + + @ApiModelProperty(value = "收藏名") + private String name; + + @ApiModelProperty(value = "收藏类型") + private String type; + + @ApiModelProperty(value = "收藏具体信息") + private String info; + + @ApiModelProperty(value = "用户id") + private String userId; + + @ApiModelProperty(value = "所属模块") + private String modular; + + @ApiModelProperty(value = "创建时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty(value = "该收藏对应的路由") + private String url; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserStarEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserStarEO.java new file mode 100644 index 00000000..a0c478bc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/entity/SarUserStarEO.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.sarPersonalCenter.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +@ApiModel(value="SarUserStar批量操作对象", description="") +public class SarUserStarEO extends SarUserStar{ + + @ApiModelProperty("当页数量") + private Integer size=20; + + @ApiModelProperty("当前页数") + private Integer current=1; + + @ApiModelProperty("操作信息") + private List sarUserStars; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/ISarUserPersonalMenuService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/ISarUserPersonalMenuService.java new file mode 100644 index 00000000..e29c294a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/ISarUserPersonalMenuService.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.sarPersonalCenter.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserPersonalMenu; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserPersonalMenuEO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +public interface ISarUserPersonalMenuService extends IService { + + public ResponseMessage> getUserPersonalMenu(SarUserPersonalMenuEO eo); + + public ResponseMessage> updateUserPersonalMenu(SarUserPersonalMenuEO eo); + + public void updateUserPersonalMenuForRole(List menus, String userId); + + /** + * 更新用户权限 + * @param roleId:角色ID + */ + void setPersonalMenu(String roleId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/ISarUserStarService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/ISarUserStarService.java new file mode 100644 index 00000000..0ac178b2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/ISarUserStarService.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.sarPersonalCenter.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStar; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStarEO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.bind.annotation.RequestBody; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-21 + */ +public interface ISarUserStarService extends IService { + public ResponseMessage> getUserStarList(SarUserStarEO sarUserStarEO); + public ResponseMessage> deleteList(@RequestBody SarUserStarEO sarUserStars); + public ResponseMessage deleteById(@RequestBody SarUserStarEO sarUserStars); + public ResponseMessage addStar(@RequestBody SarUserStar sarUserStar); + public ResponseMessage isStar(String userId, String url); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/impl/SarUserPersonalMenuServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/impl/SarUserPersonalMenuServiceImpl.java new file mode 100644 index 00000000..0bc087de --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/impl/SarUserPersonalMenuServiceImpl.java @@ -0,0 +1,127 @@ +package com.adc.da.slrs.sarPersonalCenter.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserPersonalMenu; +import com.adc.da.slrs.sarPersonalCenter.dao.SarUserPersonalMenuDao; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserPersonalMenuEO; +import com.adc.da.slrs.sarPersonalCenter.service.ISarUserPersonalMenuService; +import com.adc.da.slrs.sarUser.service.impl.TsUserServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@Service +public class SarUserPersonalMenuServiceImpl extends ServiceImpl implements ISarUserPersonalMenuService { + @Autowired + @Lazy + private TsUserServiceImpl tsUserService; + + @Override + public ResponseMessage> getUserPersonalMenu(SarUserPersonalMenuEO eo) { + if(eo.getUserId()==null||eo.getUserId().trim().length()==0){ + return Result.error("userId不能为空"); + } + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("user_id",eo.getUserId()); + if(eo.getMenuUrl()!=null)queryWrapper.eq("menu_url",eo.getMenuUrl()); + if(eo.getMenuName()!=null&&eo.getMenuName().trim().length()>0)queryWrapper.like("menu_name",eo.getMenuName().trim()); + if(eo.getState()!=null)queryWrapper.eq("state",eo.getState()); + + IPage iPage=new Page<>(eo.getCurrent(),eo.getSize()); + IPage page = page(iPage, queryWrapper); + while (page.getRecords().remove(null)); + return Result.success(page); + } + + @Override + public ResponseMessage> updateUserPersonalMenu(SarUserPersonalMenuEO eo) { + if(eo.getUserId()==null||eo.getUserId().trim().length()==0){ + return Result.error("userId不能为空"); + } + List menus=new ArrayList<>(); + if(eo.getSarUserPersonalMenus()!=null){ + for (SarUserPersonalMenu menu : eo.getSarUserPersonalMenus()) { + if(menu.getId()!=null&&menu.getId().trim().length()>0&&menu.getState()!=null){ + + SarUserPersonalMenu sarUserPersonalMenu=new SarUserPersonalMenu(); + sarUserPersonalMenu.setState(menu.getState()==0?0:1); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("user_id",eo.getUserId()); + queryWrapper.eq("id",menu.getId()); + + update(sarUserPersonalMenu,queryWrapper); + } + } + } + + return getUserPersonalMenu(eo); + } + + @Override + public void updateUserPersonalMenuForRole(List menuList,String userId) { + Set ids=new HashSet<>(); + + for (SarMenu menu : menuList) { + if(menu.getId()!=null&&menu.getId().trim().length()>0){ + + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("user_id",userId); + queryWrapper.eq("menu_id",menu.getId()); + List menus = getBaseMapper().selectList(queryWrapper); + if (menus.size()>0) { + ids.add(menus.get(0).getId()); + continue; + } + + SarUserPersonalMenu sarUserPersonalMenu=new SarUserPersonalMenu(); + sarUserPersonalMenu.setMenuName(menu.getMenuName()); + sarUserPersonalMenu.setMenuUrl(menu.getHref()); + sarUserPersonalMenu.setUserId(userId); + sarUserPersonalMenu.setMenuId(menu.getId()); + sarUserPersonalMenu.setState(0); + + getBaseMapper().insert(sarUserPersonalMenu); + ids.add(sarUserPersonalMenu.getId()); + } + } + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.notIn("id",ids); + queryWrapper.eq("user_id",userId); + getBaseMapper().delete(queryWrapper); + + } + + /** + * 更新用户权限 + * @param roleId:角色ID + */ + @Async + @Override + public void setPersonalMenu(String roleId) { + List userIds=tsUserService.getUserIdsByRoleId(roleId); + for(String userId:userIds){ + List menus=tsUserService.getSecondMenusByUserId(userId); + System.out.println("我的板块"); + System.out.println(menus); + updateUserPersonalMenuForRole(menus,userId); + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/impl/SarUserStarServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/impl/SarUserStarServiceImpl.java new file mode 100644 index 00000000..d6cdc8c5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPersonalCenter/service/impl/SarUserStarServiceImpl.java @@ -0,0 +1,148 @@ +package com.adc.da.slrs.sarPersonalCenter.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStar; +import com.adc.da.slrs.sarPersonalCenter.dao.SarUserStarDao; +import com.adc.da.slrs.sarPersonalCenter.entity.SarUserStarEO; +import com.adc.da.slrs.sarPersonalCenter.service.ISarUserStarService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Date; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-21 + */ +@Service +public class SarUserStarServiceImpl extends ServiceImpl implements ISarUserStarService { + + @Autowired + private ISarUserStarService iSarUserStarService; + + @Override + public ResponseMessage> getUserStarList(SarUserStarEO sarUserStarEO) { + if (sarUserStarEO.getUserId() == null) { + return Result.error("userId不能为空"); + } else { + if (sarUserStarEO.getSize() == null || sarUserStarEO.getSize() <= 0) sarUserStarEO.setSize(20); + if (sarUserStarEO.getCurrent() == null || sarUserStarEO.getCurrent() <= 0) sarUserStarEO.setCurrent(1); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id", sarUserStarEO.getUserId()); + if(sarUserStarEO.getType()!=null)wrapper.like("type",sarUserStarEO.getType()); + if(sarUserStarEO.getName()!=null)wrapper.like("name",sarUserStarEO.getName()); + if(sarUserStarEO.getModular()!=null)wrapper.like("modular",sarUserStarEO.getModular()); + if(sarUserStarEO.getInfo()!=null)wrapper.like("info",sarUserStarEO.getInfo()); + if(sarUserStarEO.getUrl()!=null)wrapper.like("url",sarUserStarEO.getUrl()); + IPage page = iSarUserStarService.page(new Page<>(sarUserStarEO.getCurrent(), sarUserStarEO.getSize()), wrapper); + while (page.getRecords().remove(null)) ; + return Result.success(page); + } + } + + +// @Override +// public ResponseMessage> getUserStarList(PersonCollectEO personCollectEO) { +// if (personCollectEO.getUserId() == null) { +// return Result.error("userId不能为空"); +// } else { +// +// QueryWrapper wrapper = new QueryWrapper<>(); +// wrapper.eq("user_id", personCollectEO.getUserId()); +// if(personCollectEO.getCollectType()!=null)wrapper.like("COLLECT_TYPE",personCollectEO.getCollectType()); +// if(personCollectEO.getCollectTitle()!=null)wrapper.like("name",personCollectEO.getCollectTitle()); +// if(sarUserStarEO.getModular()!=null)wrapper.like("modular",sarUserStarEO.getModular()); +// if(sarUserStarEO.getInfo()!=null)wrapper.like("info",sarUserStarEO.getInfo()); +// if(sarUserStarEO.getUrl()!=null)wrapper.like("url",sarUserStarEO.getUrl()); +// IPage page = iSarUserStarService.page(new Page<>(sarUserStarEO.getCurrent(), sarUserStarEO.getSize()), wrapper); +// while (page.getRecords().remove(null)) ; +// return Result.success(page); +// } +// } + + + + + + @Override + public ResponseMessage> deleteList(@RequestBody SarUserStarEO sarUserStars) { + if (sarUserStars.getUserId() == null) { + return Result.error("userId不能为空"); + } + if (!(sarUserStars.getSarUserStars() == null || sarUserStars.getSarUserStars().size() <= 0)) { + for (SarUserStar sarUserStar : sarUserStars.getSarUserStars()) { + if (sarUserStar.getId() != null) { + QueryWrapper sarUserStarQueryWrapper = new QueryWrapper<>(); + sarUserStarQueryWrapper.eq("id", sarUserStar.getId()); + sarUserStarQueryWrapper.eq("user_id", sarUserStars.getUserId()); + iSarUserStarService.remove(sarUserStarQueryWrapper); + } + } + } + return getUserStarList(sarUserStars); + } + + @Override + public ResponseMessage deleteById(@RequestBody SarUserStarEO sarUserStars) { + if (sarUserStars.getUserId() == null) { + return Result.error("userId不能为空"); + } + if ((sarUserStars.getId() == null && sarUserStars.getUrl() == null)) { + return Result.error("url或id不能为空"); + } + QueryWrapper sarUserStarQueryWrapper = new QueryWrapper<>(); + if(sarUserStars.getId()!=null)sarUserStarQueryWrapper.eq("id", sarUserStars.getId()); + else sarUserStarQueryWrapper.eq("url", sarUserStars.getUrl()); + sarUserStarQueryWrapper.eq("user_id", sarUserStars.getUserId()); + + + return Result.success(iSarUserStarService.remove(sarUserStarQueryWrapper)); + } + + @Override + public ResponseMessage addStar(@RequestBody SarUserStar sarUserStar) { + if (sarUserStar.getUserId() == null) { + return Result.error("userId不能为空"); + } + if (sarUserStar.getUrl() == null + && sarUserStar.getModular() == null + && sarUserStar.getName() == null + && sarUserStar.getType() == null) { + return Result.error("数据有误"); + } + + sarUserStar.setId(null); + sarUserStar.setCreateTime(new Date()); + + return Result.success(iSarUserStarService.save(sarUserStar)); + } + + @Override + public ResponseMessage isStar(String userId, String url) { + if (userId == null) { + return Result.error("userId不能为空"); + } + if (url == null) { + return Result.error("url不能为空"); + } + + QueryWrapper sarUserStarQueryWrapper = new QueryWrapper<>(); + sarUserStarQueryWrapper.eq("user_id", userId); + sarUserStarQueryWrapper.eq("url", url); + int count = iSarUserStarService.count(sarUserStarQueryWrapper); + + return Result.success(count > 0); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/controller/TsPositionController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/controller/TsPositionController.java new file mode 100644 index 00000000..752a43ba --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/controller/TsPositionController.java @@ -0,0 +1,77 @@ +package com.adc.da.slrs.sarPosition.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarPosition.entity.TsPositionRoleVO; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.validation.Valid; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-23 +*/ +@RestController +@Api(tags = "|岗位管理|") +@RequestMapping("/api/sarPosition/position") +public class TsPositionController extends BaseController { + @Autowired + private ITsPositionService tsPositionService; + + /** + * 查询岗位(可通过name筛选) + * @param tsPosition:筛选信息 + */ + @ApiOperation("查询岗位") + @GetMapping + public ResponseMessage> getPosition(TsPosition tsPosition){ + IPage positions=tsPositionService.getPosition(tsPosition); + return Result.success(positions); + } + + @ApiOperation("新增岗位") + @PostMapping + public ResponseMessage addPosition(@Validated(TsPosition.insert.class) TsPosition tsPosition){ + return tsPositionService.addPosition(tsPosition); + } + + @ApiOperation("配置角色") + @PostMapping("/role") + public ResponseMessage> setRole(@Valid @RequestBody TsPositionRoleVO tsPositionRoleVO){ + return tsPositionService.setRole(tsPositionRoleVO); + } + + @ApiOperation("查询角色") + @GetMapping("/role") + public ResponseMessage> getRole(@RequestParam String positionId){ + List roles=tsPositionService.getRole(positionId); + return Result.success(roles); + } + + @ApiOperation("编辑岗位") + @PutMapping + public ResponseMessage updatePosition(@Validated(TsPosition.update.class) TsPosition tsPosition){ + return tsPositionService.updatePosition(tsPosition); + } + + @ApiOperation("删除岗位") + @DeleteMapping + public ResponseMessage deletePosition(@RequestParam String positionId){ + return tsPositionService.deletePosition(positionId); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/dao/TsPositionDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/dao/TsPositionDao.java new file mode 100644 index 00000000..2708d80b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/dao/TsPositionDao.java @@ -0,0 +1,91 @@ +package com.adc.da.slrs.sarPosition.dao; + +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-23 + */ +public interface TsPositionDao extends BaseMapper { + + /** + * 查询岗位绑定的角色ID + * @param positionId:岗位ID + * @return List:角色ID + */ + @Select("select role_id from ts_position_role where position_id=#{positionId}") + List getRoleId(String positionId); + + /** + * 绑定角色 + * @param positionId:岗位ID + * @param roleId:角色ID + */ + @Insert("insert into ts_position_role (position_id,role_id) values (#{positionId},#{roleId})") + void insertRole(@Param("positionId") String positionId, @Param("roleId")String roleId); + + /** + * 解绑角色 + * @param positionId:岗位ID + * @param roleId:角色ID + */ + @Delete("delete from ts_position_role where position_id=#{positionId} and role_id=#{roleId}") + void deleteRole(String positionId, String roleId); + + /** + * 查询岗位绑定的角色信息 + * @param positionId:岗位ID + * @return List + */ + List getRole(String positionId); + + /** + * 根据用户ID获取岗位信息 + * @param userId + * @return + */ + List getPositionDataByUserId(@Param("userId") String userId); + /** + * 查询岗位以及绑定的角色信息 + * @param tsPosition:岗位信息 + * @return List + */ + List selectPositionAndRole(TsPosition tsPosition); + + /** + * 总数 + * @param tsPosition + * @return + */ + Integer countPositionAndRole(TsPosition tsPosition); + + + /** + * 通过岗位列表查询绑定的角色列表 + * @param positionIds:岗位列表 + * @return List + */ + List getRoleIdsByPositionIds(List positionIds); + + long pageTotal(); + + /** + * 通过roleId查询岗位ID列表 + * @param roleId:角色ID + * @return List + */ + @Select("select position_id from ts_position_role where role_id=#{roleId}") + List getPositionIdsByRoleId(String roleId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/entity/TsPosition.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/entity/TsPosition.java new file mode 100644 index 00000000..e703aaf8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/entity/TsPosition.java @@ -0,0 +1,97 @@ +package com.adc.da.slrs.sarPosition.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.util.List; + +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +import javax.validation.constraints.NotNull; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TsPosition对象", description="") +public class TsPosition extends BaseEntity { + public interface insert{ + } + public interface update{ + } + + private static final long serialVersionUID = 1L; + + + @ApiModelProperty(value = "操作时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp operateTime; + + @ApiModelProperty(value = "操作人") + private String operator; + + @NotNull(message = "name不能为空",groups = {insert.class}) + @ApiModelProperty(value = "岗位名称") + private String name; + + @ApiModelProperty(value = "创建部门ID") + private String createDeptId; + + @ApiModelProperty(value = "创建人ID") + private String createById; + + @ApiModelProperty(value = "类型(1为导入,2为新建)") + private String type; + + @NotNull(message = "id不能为空",groups = {update.class}) + @ApiModelProperty(value = "ID") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "绑定角色") + @TableField(exist = false) + private List roles; + + @TableField(exist = false) + private List tsUser; + + @ApiModelProperty(value = "操作人中文") + @TableField(exist = false) + private String uname; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp createTime; + + @TableField(exist = false) + private Integer current; + + @TableField(exist = false) + private Integer pageSize; + + @TableField(exist = false) + private Integer total; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/entity/TsPositionRoleVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/entity/TsPositionRoleVO.java new file mode 100644 index 00000000..ffb088e4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/entity/TsPositionRoleVO.java @@ -0,0 +1,17 @@ +package com.adc.da.slrs.sarPosition.entity; + +import com.adc.da.slrs.sarRole.entity.TsRole; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class TsPositionRoleVO { + @NotNull(message = "positionId不能为空") + private String positionId; + @NotNull(message = "roleIds不能为空") + private List roleIds; + + private String operator; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/service/ITsPositionService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/service/ITsPositionService.java new file mode 100644 index 00000000..87932f8c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/service/ITsPositionService.java @@ -0,0 +1,83 @@ +package com.adc.da.slrs.sarPosition.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarPosition.entity.TsPositionRoleVO; +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-23 + */ +public interface ITsPositionService extends IService { + + /** + * 查询岗位 + * @param tsPosition:查询信息 + * @return List + */ + IPage getPosition(TsPosition tsPosition); + + /** + * 配置角色 + * @param tsPositionRoleVO :角色ID + * @return ResponseMessage + */ + ResponseMessage> setRole(TsPositionRoleVO tsPositionRoleVO); + + /** + * 查询角色 + * @param positionId :岗位ID + * @return List + */ + List getRole(String positionId); + + /** + * 根据用户ID获取岗位信息 + * @param userId + * @return + */ + List getPositionDataByUserId(String userId); + /** + * 添加岗位 + * @param tsPosition:岗位信息 + * @return ResponseMessage + */ + ResponseMessage addPosition(TsPosition tsPosition); + + /** + * 修改岗位 + * @param tsPosition:岗位信息 + * @return ResponseMessage + */ + ResponseMessage updatePosition(TsPosition tsPosition); + + /** + * 删除岗位 + * @param positionId:岗位ID + * @return ResponseMessage + */ + ResponseMessage deletePosition(String positionId); + + /** + * 通过岗位列表查询绑定的角色列表 + * @param positionIds:岗位列表 + * @return List + */ + List getRoleIdsByPositionIds(List positionIds); + + /** + * 通过roleId查询岗位ID列表 + * @param roleId:角色ID + * @return List + */ + List getPositionIdsByRoleId(String roleId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/service/impl/TsPositionServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/service/impl/TsPositionServiceImpl.java new file mode 100644 index 00000000..60489696 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarPosition/service/impl/TsPositionServiceImpl.java @@ -0,0 +1,204 @@ +package com.adc.da.slrs.sarPosition.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarPosition.dao.TsPositionDao; +import com.adc.da.slrs.sarPosition.entity.TsPositionRoleVO; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.adc.da.utils.util.ListUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.management.relation.Role; +import javax.xml.crypto.Data; +import java.sql.Timestamp; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-23 + */ +@Service +public class TsPositionServiceImpl extends ServiceImpl implements ITsPositionService { + @Autowired + private TsPositionDao tsPositionDao; + + /** + * 查询岗位 + * @param tsPosition:查询信息 + * @return List + */ + @Override + public IPage getPosition(TsPosition tsPosition) { + IPage page=new Page(); +// page.setTotal(tsPositionDao.pageTotal()); + page.setTotal(tsPositionDao.countPositionAndRole(tsPosition)); + List list = tsPositionDao.selectPositionAndRole(tsPosition); + for (TsPosition tsPositions:list){ + tsPositions.getTsUser().forEach(res->{ + tsPositions.setOperator(res.getUname()); + }); + } + page.setRecords(list); + page.setTotal(page.getTotal()); + page.setCurrent(tsPosition.getCurrent()); + page.setSize(tsPosition.getPageSize()); + System.out.println(page.getTotal()); + + return page; + } + + /** + * 配置角色 + * @param tsPositionRoleVO :角色ID + * @return ResponseMessage + */ + @Override + @Transactional + public ResponseMessage> setRole(TsPositionRoleVO tsPositionRoleVO) { + TsPosition position=tsPositionDao.selectById(tsPositionRoleVO.getPositionId()); + if(position==null){ + return Result.error("该岗位不存在"); + } + List oldRoleIds=tsPositionDao.getRoleId(tsPositionRoleVO.getPositionId()); + Map> updateRoleIds= ListUtil.difList(tsPositionRoleVO.getRoleIds(),oldRoleIds); + List insertIds=updateRoleIds.get("insert"); + List deleteIds=updateRoleIds.get("delete"); + TsPosition tsPosition = new TsPosition(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + for(String id:insertIds){ + tsPositionDao.insertRole(tsPositionRoleVO.getPositionId(),id); + updateWrapper.eq("id", tsPositionRoleVO.getPositionId()); + tsPosition.setOperateTime(new Timestamp(System.currentTimeMillis())); + tsPosition.setOperator(tsPositionRoleVO.getOperator()); + baseMapper.update(tsPosition,updateWrapper); + } + for(String id:deleteIds){ + tsPositionDao.deleteRole(tsPositionRoleVO.getPositionId(),id); + updateWrapper.eq("id", tsPositionRoleVO.getPositionId()); + tsPosition.setOperateTime(new Timestamp(System.currentTimeMillis())); + tsPosition.setOperator(tsPositionRoleVO.getOperator()); + baseMapper.update(tsPosition,updateWrapper); + } + List roles=getRole(tsPositionRoleVO.getPositionId()); + return Result.success(roles); + } + + /** + * 查询角色 + * @param positionId :岗位ID + * @return List + */ + @Override + public List getRole(String positionId) { + return tsPositionDao.getRole(positionId); + } + + /** + * 根据用户ID获取岗位信息 + * @param userId + * @return + */ + @Override + public List getPositionDataByUserId(String userId) { + return tsPositionDao.getPositionDataByUserId(userId); + } + + /** + * 添加岗位 + * @param tsPosition:岗位信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage addPosition(TsPosition tsPosition) { + QueryWrapper positionQueryWrapper=new QueryWrapper<>(); + positionQueryWrapper.eq("name",tsPosition.getName()); + List tsPositions=tsPositionDao.selectList(positionQueryWrapper); + if(tsPositions!=null&&tsPositions.size()>0){ + return Result.error("该岗位已存在"); + } + //设置操作时间为当前系统时间 + tsPosition.setOperateTime(new Timestamp(System.currentTimeMillis())); + tsPosition.setType("2"); + tsPositionDao.insert(tsPosition); + return Result.success(); + } + + /** + * 修改岗位 + * @param tsPosition:岗位信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage updatePosition(TsPosition tsPosition) { + TsPosition oldPosition=tsPositionDao.selectById(tsPosition.getId()); + if(oldPosition==null){ + return Result.error("该岗位不存在"); + } + if(!oldPosition.getType().equals("2")){ + return Result.error("该岗位不可修改"); + } + tsPosition.setOperateTime(new Timestamp(System.currentTimeMillis())); + tsPositionDao.updateById(tsPosition); + return Result.success(); + } + + /** + * 删除岗位 + * @param positionId:岗位ID + * @return ResponseMessage + */ + @Override + public ResponseMessage deletePosition(String positionId) { + TsPosition oldPosition=tsPositionDao.selectById(positionId); + if(oldPosition==null){ + return Result.error("该岗位不存在"); + } + if(!oldPosition.getType().equals("2")){ + return Result.error("该岗位不可删除"); + } + List roleIds=tsPositionDao.getRoleId(positionId); + if(roleIds!=null&&roleIds.size()>0){ + return Result.error("该岗位已绑定角色,无法删除"); + } + tsPositionDao.deleteById(positionId); + return Result.success(); + } + + /** + * 通过岗位列表查询绑定的角色列表 + * @param positionIds:岗位列表 + * @return List + */ + @Override + public List getRoleIdsByPositionIds(List positionIds) { + if(positionIds!=null&&positionIds.size()>0){ + return tsPositionDao.getRoleIdsByPositionIds(positionIds); + } + return null; + } + + /** + * 通过roleId查询岗位ID列表 + * @param roleId:角色ID + * @return List + */ + @Override + public List getPositionIdsByRoleId(String roleId) { + return tsPositionDao.getPositionIdsByRoleId(roleId); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/controller/SarProductStandController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/controller/SarProductStandController.java new file mode 100644 index 00000000..6cd03c21 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/controller/SarProductStandController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarProductStand.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarProductStand.entity.SarProductStand; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 产品标准关联表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(description = "|SarProductStand|") +@RequestMapping("/sarProductStand/sar-product-stand") +public class SarProductStandController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/dao/SarProductStandDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/dao/SarProductStandDao.java new file mode 100644 index 00000000..fc5d1280 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/dao/SarProductStandDao.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarProductStand.dao; + +import com.adc.da.slrs.sarProductStand.entity.SarProductStand; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 产品标准关联表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface SarProductStandDao extends BaseMapper { + + Map queryStandSarState(String standId); + + List> queryStandSarStateNew(@Param("standId") String standId, @Param("productId") String productId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/entity/SarProductStand.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/entity/SarProductStand.java new file mode 100644 index 00000000..ee97b262 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/entity/SarProductStand.java @@ -0,0 +1,135 @@ +package com.adc.da.slrs.sarProductStand.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 产品标准关联表 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarProductStand对象", description="产品标准关联表") +public class SarProductStand extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "产品ID") + @TableField("PRODUCT_ID") + private String productId; + + @ApiModelProperty(value = "标准分类") + @TableField("STAND_TYPE") + private String standType; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private Date creationTime; + + @TableField("MODIFY_TIME") + private Date modifyTime; + + @ApiModelProperty(value = "标准/法规符合性状态(0不涉及1待确认2符合3不符合4部分符合8未评估)") + @TableField("SAR_STATE") + private Integer sarState; + + @ApiModelProperty(value = "清单类型(first研发合规,second认证合规)") + @TableField("ACCESS_TYPE") + private String accessType; + + @ApiModelProperty(value = "关联公告车型号") + @TableField("CAR_MODEL") + private String carModel; + + @ApiModelProperty(value = "关联清单id") + @TableField("RELATE_ACCESS_ID") + private String relateAccessId; + + @ApiModelProperty(value = "是否纳入开发") + @TableField("IS_DEVELOP") + private String isDevelop; + + @ApiModelProperty(value = "流程状态") + @TableField("ACT_STATE") + private String actState; + + @ApiModelProperty(value = "分级颜色") + @TableField("COLOR") + private String color; + + @ApiModelProperty(value = "不符合内容") + @TableField("NON_CONFOMITY") + private String nonConfomity; + + @ApiModelProperty(value = "我司现状") + @TableField("CURRENT") + private String current; + + @ApiModelProperty(value = "更改方案") + @TableField("CHANGE_SCHEME") + private String changeScheme; + + @ApiModelProperty(value = "预估更改周期") + @TableField("ESTIMATED_CHANGE_CYCLE") + private String estimatedChangeCycle; + + @ApiModelProperty(value = "预估成本") + @TableField("ESTIMATED_COST") + private String estimatedCost; + + @ApiModelProperty(value = "风险点") + @TableField("RISK_POINT") + private String riskPoint; + + @ApiModelProperty(value = "验证方案") + @TableField("VERIFICATION_SCHEME") + private String verificationScheme; + + @ApiModelProperty(value = "符合理由") + @TableField("JUSTIFIED") + private String justified; + + @ApiModelProperty(value = "评估人员") + @TableField("COMP_PERSON") + private String compPerson; + + @ApiModelProperty(value = "评估时间") + @TableField("COMP_TIME") + private Date compTime; + + @ApiModelProperty(value = "流程编号") + @TableField("PRC_NUM") + private String prcNum; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/service/ISarProductStandService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/service/ISarProductStandService.java new file mode 100644 index 00000000..f8891534 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/service/ISarProductStandService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarProductStand.service; + +import com.adc.da.slrs.sarProductStand.entity.SarProductStand; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 产品标准关联表 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarProductStandService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/service/impl/SarProductStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/service/impl/SarProductStandServiceImpl.java new file mode 100644 index 00000000..7f76200a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarProductStand/service/impl/SarProductStandServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarProductStand.service.impl; + +import com.adc.da.slrs.sarProductStand.entity.SarProductStand; +import com.adc.da.slrs.sarProductStand.dao.SarProductStandDao; +import com.adc.da.slrs.sarProductStand.service.ISarProductStandService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 产品标准关联表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class SarProductStandServiceImpl extends ServiceImpl implements ISarProductStandService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarQaInfo/entity/SarQaInfoPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarQaInfo/entity/SarQaInfoPage.java new file mode 100644 index 00000000..3f0a7d1f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarQaInfo/entity/SarQaInfoPage.java @@ -0,0 +1,79 @@ +package com.adc.da.slrs.sarQaInfo.entity; + +import com.adc.da.base.page.BasePage; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

    + * 标准法规问答信息表 + *

    + * + * @author yzh + * @since 2022-05-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarQaInfo对象", description="标准法规问答信息表") +public class SarQaInfoPage extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "资源类型-标准、法规、企标") + @TableField("RES_TYPE") + private String resType; + + @ApiModelProperty(value = "资源ID") + @TableField("RES_ID") + private String resId; + + @TableField("QUE_USER") + private String queUser; + + @TableField("ANSWER_USER") + private String answerUser; + + @TableField("RE_ANSWER_USER") + private String reAnswerUser; + + @ApiModelProperty(value = "提问时间") + @TableField("QUE_TIME") + private LocalDateTime queTime; + + @ApiModelProperty(value = "是否解答") + @TableField("ANSWER_FLAG") + private BigDecimal answerFlag; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private BigDecimal validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATED_TIME") + private LocalDateTime createdTime; + + @TableField("CREATED_USER") + private String createdUser; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private LocalDateTime modifyTime; + + @TableField("MODIFY_USER") + private String modifyUser; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/controller/TsResourceController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/controller/TsResourceController.java new file mode 100644 index 00000000..83dc212b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/controller/TsResourceController.java @@ -0,0 +1,114 @@ +package com.adc.da.slrs.sarResource.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-30 +*/ +@RestController +@CrossOrigin +@Api(tags = "资源管理") +@RequestMapping("/api/sarResource/ts-resource") +public class TsResourceController extends BaseController { + @Autowired + private ITsResourceService tsResourceService; + @Autowired + private ITsUserService tsUserService; + + @ApiOperation("根据ID查询菜单") + @GetMapping("/getMenuById") + public ResponseMessage getMenuById(@RequestParam String menuId){ + TsResource sarMenus = tsResourceService.getById(menuId); + if(sarMenus != null && sarMenus.getParentIds() != null && StringUtils.isNotBlank(sarMenus.getParentIds())){ + List menuStandards = tsResourceService.getMenuByIds(Arrays.asList(sarMenus.getParentIds().split(","))); + if(!menuStandards.isEmpty()){ + String parentIdsName = menuStandards.stream().map(TsResource::getMenuName).collect(Collectors.joining(",")); + sarMenus.setParentIdsName(parentIdsName); + } + } + return Result.success(sarMenus); + } + + @ApiOperation("查询所有资源") + @GetMapping + public ResponseMessage> getAll(TsResource tsResource){ + List tsResources=tsResourceService.getAll(tsResource); + return Result.success(tsResources); + } + + @ApiOperation("查询有权限资源") + @GetMapping("/getList") + public ResponseMessage> getList(TsResource tsResource){ + List tsResources=tsResourceService.getList(tsResource); + return Result.success(tsResources); + } + + @ApiOperation("查询有权限资源") + @GetMapping("/getListStand") + public ResponseMessage> getListStand(TsResource tsResource){ + List tsResources=tsResourceService.getListStand(tsResource); + return Result.success(tsResources); + } + + @ApiOperation("查询有权限资源") + @GetMapping("/getListStandLimitData") + public ResponseMessage> getListStandLimit(TsResource tsResource){ + List access = tsUserService.getResourceUserId(tsResource.getUserId()); + List tsResources=tsResourceService.getListStandLimit(tsResource,access); + return Result.success(tsResources); + } + + @ApiOperation("查询有权限资源") + @GetMapping("/dealWithData") + public ResponseMessage dealWithData(TsResource tsResource){ + tsResourceService.dealWithData(); + return Result.success(); + } + +// @ApiOperation("查询所有资源") +// @GetMapping("/getDefault") +// public ResponseMessage> getDefault(){ +// List tsResources=tsResourceService.getDefaultByName(); +// return Result.success(tsResources); +// } + + @ApiOperation("添加资源") + @PostMapping("/add") + public ResponseMessage addResource(@RequestBody TsResource tsResource){ + return tsResourceService.addResource(tsResource); + } + + @ApiOperation("编辑资源") + @PutMapping + public ResponseMessage updateResource(@Validated(TsResource.update.class) @RequestBody TsResource tsResource){ + return tsResourceService.updateResource(tsResource); + } + + @ApiOperation("删除资源") + @PutMapping("/delResourceById") + public ResponseMessage delResource(@RequestParam String resourceId){ + return tsResourceService.delResource(resourceId); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/dao/TsResourceDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/dao/TsResourceDao.java new file mode 100644 index 00000000..223bbb93 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/dao/TsResourceDao.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.sarResource.dao; + +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.HashMap; +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-30 + */ +@Repository +public interface TsResourceDao extends BaseMapper { + + List queryMenuByDis(TsResource sarMenuEO); + + List selectMenuByRole(TsResource sarMenuEO); + + int insertTsRoleResource(HashMap map); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/entity/TsResource.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/entity/TsResource.java new file mode 100644 index 00000000..47bada01 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/entity/TsResource.java @@ -0,0 +1,114 @@ +package com.adc.da.slrs.sarResource.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.utils.treetool.annotation.TreeNodeId; +import com.adc.da.utils.treetool.annotation.TreeNodeName; +import com.adc.da.utils.treetool.annotation.TreeNodeParentId; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-30 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TsResource对象", description="") +public class TsResource extends BaseEntity { + public interface update{ + } + + private static final long serialVersionUID = 1L; + + + + @TreeNodeId + @NotNull(message = "id不能为空",groups = {SarMenu.update.class}) + @ApiModelProperty(value = "主键") + @TableId(value = "ID",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "标准法规划分") + @TableField("SOR_DIVIDE") + private String sorDivide; + + @TreeNodeName + @ApiModelProperty(value = "目录名称") + @TableField("MENU_NAME") + private String menuName; + + @TreeNodeParentId + @ApiModelProperty(value = "父级ID") + @TableField("PARENT_ID") + private String parentId; + + @ApiModelProperty(value = "父级ID") + @TableField(exist = false) + private String middleParentId; + + @ApiModelProperty(value = "父级ID集合") + @TableField("PARENT_IDS") + private String parentIds; + + @ApiModelProperty(value = "排序序号") + @TableField("DISPLAY_SEQ") + private Integer displaySeq; + + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private Date modifyTime; + + @ApiModelProperty(value = "备注") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty(value = "上级菜单名称") + @TableField(exist = false) + private String parentIdsName; + + @TableField(exist=false) + private List roleIds; + + @TableField(exist=false) + private List childMenuIds; + + @TableField(exist=false) + private String userId; + + @TableField(exist = false) + private String isFlow; + + @ApiModelProperty(value = "树结构数据 区分 类型: 标准数据 tsr 技术系列 sarMs") + @TableField(exist = false) + private String treeType; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/ITsResourceService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/ITsResourceService.java new file mode 100644 index 00000000..13c08cd7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/ITsResourceService.java @@ -0,0 +1,62 @@ +package com.adc.da.slrs.sarResource.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-30 + */ +public interface ITsResourceService extends IService { + + List selectMenuByRole(TsResource sarMenuEO); + + List getParentMenuId(String menuId); + + List queryRoleMenuIdList(String sordDivide, String menuId) throws Exception; + + /** + * 通过Ids查询menu + * @param menuIds :菜单Ids + * @return List + */ + List getMenuByIds(List menuIds); + + List queryMenuByDis(TsResource sarMenuEO); + + List getAll(TsResource tsResource); + + List getList(TsResource tsResource); + + List getListStand(TsResource tsResource); + + List getListStandLimit(TsResource tsResource,List access); + + List getDefaultByName(); + + ResponseMessage addResource(TsResource tsResource); + + ResponseMessage updateResource(TsResource tsResource); + + ResponseMessage delResource(String resourceId); + + /** + * 通过Ids查询menu + * @param resourceIds :菜单Ids + * @param sorDivide + * @return List + */ + List getResourceByIds(List resourceIds, String sorDivide); + + List getChildMenuList(String menuId); + + boolean dealWithData(); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java new file mode 100644 index 00000000..0815fd38 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarResource/service/impl/TsResourceServiceImpl.java @@ -0,0 +1,510 @@ +package com.adc.da.slrs.sarResource.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; + +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.sarBussStandMenu.dao.SarBussStandMenuDao; +import com.adc.da.slrs.sarResource.dao.TsResourceDao; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarRole.dao.TsRoleDao; +import com.adc.da.slrs.sarRole.service.ITsRoleService; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.treetool.Tree; +import com.adc.da.utils.treetool.TreeNode; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-30 + */ +@Service +public class TsResourceServiceImpl extends ServiceImpl implements ITsResourceService { + @Autowired + private TsResourceDao dao; + + @Autowired + private ITsUserService tsUserService; + + @Autowired + private ITsResourceService iTsResourceService; + + @Autowired + private TsRoleDao tsRoleDao; + + @Autowired + private SarBussStandMenuDao sarBussStandMenuDao; + + public List selectMenuByRole(TsResource sarMenu) { + List list = dao.selectMenuByRole(sarMenu); + if (list == null) { + list = new ArrayList<>(); + } + TsResource collectMenu = new TsResource(); + collectMenu.setId("wdsc"); + collectMenu.setSorDivide(sarMenu.getSorDivide()); + collectMenu.setMenuName("我的收藏"); + collectMenu.setParentId("1"); + collectMenu.setDisplaySeq(9999); + list.add(collectMenu); + TsResource labeltMenu = new TsResource(); + labeltMenu.setId("gxhbq"); + labeltMenu.setSorDivide(sarMenu.getSorDivide()); + labeltMenu.setMenuName("个性化标签"); + labeltMenu.setParentId("1"); + labeltMenu.setDisplaySeq(10000); + if(!"BUSINESS_STAND".equals(sarMenu.getSorDivide())) { + list.add(labeltMenu); + } + return list; + } + + public List queryRoleMenuIdList(String sordDivide, String menuId) throws Exception{ + // 根据当前登录人id查出对应角色 + TsResource sarMenu = new TsResource(); + sarMenu.setSorDivide(sordDivide); + String roleIds = UserUtils.getRoleIds(); + String[] roleArr = roleIds.split(","); + List roleIdList = Arrays.asList(roleArr); + sarMenu.setRoleIds(roleIdList); + //角色未配置根节点,手动加入根节点权限 + List resultList = queryMenuByDis(sarMenu); + List list = selectMenuByRole(sarMenu); + if(!"BUSINESS_STAND".equals(sarMenu.getSorDivide())){ + resultList.addAll(list); + } else { + // 如果是企标,并且两个根节点都有权限,最先只查已分配下的节点 + if (resultList != null && resultList.size() == 2) { + TsResource menu1 = resultList.get(0); + TsResource menu2 = resultList.get(1); + if (list != null && list.size()>1) { + int menu1Index = -1; + int menu2Index = -1; + for (int i = 0;i < list.size();i++) { + if (list.get(i).getId().equals(menu1.getId())) { + menu1Index = i; + } else if (list.get(i).getId().equals(menu2.getId())) { + menu2Index = i; + } + } + if (menu1Index>0 && menu2Index>0 && StringUtils.isEmpty(menuId)) { + list.remove(menu2Index); + } + } + } + resultList = list; + } + List getMenuIds = new ArrayList<>(); + if(resultList != null && !resultList.isEmpty()){ + for(TsResource menu : resultList){ + getMenuIds.add(menu.getId()); + } + } + return getMenuIds; + } + + public List queryMenuByDis(TsResource sarMenu) { + return dao.queryMenuByDis(sarMenu); + } + + + public List getParentMenuId (String menuId) { + List parentIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(menuId)) { + List sarMenuEOList = dao.selectList(new QueryWrapper<>()); + Tree tree = new Tree(sarMenuEOList); + TreeNode treeNode = tree.getTreeNode(menuId); + while (treeNode.getParent() != null) { + parentIds.add(treeNode.getParent().getNodeId()); + treeNode = treeNode.getParent(); + } + } + return parentIds; + } + + /** + * 通过Ids查询menu + * @param menuIds :菜单Ids + * @return List + */ + @Override + public List getMenuByIds(List menuIds) { + if(menuIds!=null&&menuIds.size()>0){ + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.in("id",menuIds); + return dao.selectList(sarMenuQueryWrapper); + } + return new ArrayList<>(); + } + + /** + * 查询所有菜单 + * @param tsResource + */ + @Override + public List getAll(TsResource tsResource) { + QueryWrapper tsResourceQueryWrapper=new QueryWrapper<>(); + if(tsResource.getSorDivide()!=null){ + tsResourceQueryWrapper.eq("sor_divide",tsResource.getSorDivide()); + } + tsResourceQueryWrapper.isNull("PARENT_ID"); +// List list = new ArrayList<>(); +// list.add("INLAND_STAND"); +// list.add("FOREIGN_STAND"); +// tsResourceQueryWrapper.notIn("SOR_DIVIDE",list); + tsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); + List TsResources=dao.selectList(tsResourceQueryWrapper); + for(TsResource TsResource:TsResources){ + TsResource.setChildren(recursionGetChildren((TsResource))); + } + return TsResources; + } + + /** + * 查询有权限菜单 + * @param tsResource + */ + @Override + public List getList(TsResource tsResource) { + List TsResources = new ArrayList<>(); + + if(tsResource.getUserId() != null){ + List getMenuIdList = tsUserService.getResourceUserId(tsResource.getUserId()); + + if(!getMenuIdList.isEmpty()){ + QueryWrapper tsResourceQueryWrapper=new QueryWrapper<>(); + if(tsResource.getSorDivide()!=null){ + tsResourceQueryWrapper.eq("sor_divide",tsResource.getSorDivide()); + } + tsResourceQueryWrapper.isNull("PARENT_ID"); + tsResourceQueryWrapper.in("ID",getMenuIdList); + tsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); + TsResources=dao.selectList(tsResourceQueryWrapper); + + for(TsResource resource:TsResources){ + QueryWrapper TsResourceQueryWrapper=new QueryWrapper<>(); +// TsResourceQueryWrapper.like("PARENT_IDS",resource.getId()); + /** + * 没有把改节点查出 + */ + TsResourceQueryWrapper.isNotNull("PARENT_ID"); + + if(StringUtils.isNotBlank(tsResource.getSorDivide())){ + TsResourceQueryWrapper.in("ID",getMenuIdList); + } + TsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); + List children=dao.selectList(TsResourceQueryWrapper); + resource.setChildren(recursionGetListChildrenStand((resource),(children))); + } + } + } + + return TsResources; + } + + /** + * 查询有权限菜单 + * @param tsResource + */ + @Override + public List getListStand(TsResource tsResource) { + List TsResources = new ArrayList<>(); + + QueryWrapper queryWrapper =new QueryWrapper<>(); + if(tsResource.getSorDivide()!=null){ + queryWrapper.eq("sor_divide",tsResource.getSorDivide()); + } + queryWrapper.isNull("PARENT_ID"); + queryWrapper.eq("VALID_FLAG","0"); + queryWrapper.orderByAsc("DISPLAY_SEQ"); + TsResources=dao.selectList(queryWrapper); + + for(TsResource resource:TsResources){ + /** + * TODO 此处代码有坑,当前查询子节点的时候,只查询子节点ID包含的情况, + * 实际查询的时候 parentIds字段根本就没有记录当前节点下所有子节点的数据 + * 所以导致查询的时候查询的不对、 + * 修改逻辑如下: + * 1、将下方代码注释掉,通过递归查询每一级的数据然后组装 + * 2、将数据库中的parentIds字段数据重做,然后查询的时候like 匹配 分割符+ID或 + * ID+分割符的方式将当前节点下的所有子节点全部查询出来,然后通过流式计算对数据进行重新组装 + */ + resource.setTreeType("tsr"); + QueryWrapper TsResourceQueryWrapper=new QueryWrapper<>(); + TsResourceQueryWrapper.eq("VALID_FLAG","0"); + TsResourceQueryWrapper.like("PARENT_IDS",","+resource.getId()+","); + TsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); + List children=dao.selectList(TsResourceQueryWrapper); + + /** + * 入库流程去除我的收藏 flow + */ + if ( tsResource.getIsFlow()!=null && "flow".equals(tsResource.getIsFlow())){ + children=children.stream() + .filter(item->!"我的收藏".equals(item.getMenuName())) + .collect(Collectors.toList()); + } + resource.setChildren(recursionGetListChildrenStand((resource),(children))); + } + + return TsResources; + } + + /** + * 查询有权限菜单 + * @param tsResource + */ + @Override + public List getListStandLimit(TsResource tsResource,List access) { + List TsResources = new ArrayList<>(); + + QueryWrapper queryWrapper =new QueryWrapper<>(); + if(tsResource.getSorDivide()!=null){ + queryWrapper.eq("sor_divide",tsResource.getSorDivide()); + } + queryWrapper.isNull("PARENT_ID"); + queryWrapper.eq("VALID_FLAG","0"); + if(access!=null && !access.isEmpty()){ + queryWrapper.in(null!=access && !access.isEmpty(),"ID",access); + } + queryWrapper.orderByAsc("DISPLAY_SEQ"); + TsResources=dao.selectList(queryWrapper); + + for(TsResource resource:TsResources){ + resource.setTreeType("tsr"); + QueryWrapper TsResourceQueryWrapper=new QueryWrapper<>(); + TsResourceQueryWrapper.like("PARENT_IDS",","+resource.getId()+","); + if(access!=null && !access.isEmpty()){ + TsResourceQueryWrapper.in(null!=access && !access.isEmpty(),"ID",access); + } + TsResourceQueryWrapper.eq("VALID_FLAG","0"); + TsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); + List children=dao.selectList(TsResourceQueryWrapper); + + /** + * 入库流程去除我的收藏 flow + */ + if ( tsResource.getIsFlow()!=null && "flow".equals(tsResource.getIsFlow())){ + children=children.stream() + .filter(item->!"我的收藏".equals(item.getMenuName())) + .collect(Collectors.toList()); + } + resource.setChildren(recursionGetListChildrenStand((resource),(children))); + } + + return TsResources; + } + + @Override + public List getDefaultByName() { + List menusNames=new ArrayList<>(); + menusNames.add("海外标准法规"); + menusNames.add("国内标准法规"); + QueryWrapper tsResourceQueryWrapper=new QueryWrapper<>(); + tsResourceQueryWrapper.in("MENU_NAME",menusNames); + List TsResources=dao.selectList(tsResourceQueryWrapper); + List res=new ArrayList<>(); + TsResources.forEach(tsResource -> res.add(tsResource.getId())); + return res; + } + + /** + * 添加菜单 + * @param TsResource:菜单信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage addResource(TsResource TsResource) { + if(TsResource.getParentId() != null && StringUtils.isNotBlank(TsResource.getParentId())){ + TsResource parent=dao.selectById(TsResource.getParentId()); + if(parent==null){ + return Result.error("该父菜单不存在"); + } + } + TsResource.setValidFlag(0); + String pIds =TsResource.getParentIds(); + if(StringUtils.isNotBlank(pIds)){ + if(!pIds.startsWith(",")){ + pIds = ","+pIds; + } + if(!pIds.endsWith(",")){ + pIds = pIds+","; + } + TsResource.setParentIds(pIds); + } + dao.insert(TsResource); + // 把新生成的子目录加入用户的权限的下----插入ts_role_resource表 + List role=tsRoleDao.getRoleByUserId(LoginUserUtil.getUserId()); + for (String s:role) { + HashMap map = new HashMap<>(); + map.put("resourceId",TsResource.getId()); + map.put("roleId",s); + dao.insertTsRoleResource(map); + } + return Result.success(); + } + + /** + * 编辑菜单 + * @param TsResource:菜单信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage updateResource(TsResource TsResource) { + TsResource oldResource=dao.selectById(TsResource.getId()); + if(oldResource==null){ + return Result.error("该菜单不存在"); + } + if(TsResource.getParentId() != null && StringUtils.isNotBlank(TsResource.getParentId())){ + TsResource parent=dao.selectById(TsResource.getParentId()); + if(parent==null){ + return Result.error("父节点不存在"); + } + } + dao.updateById(TsResource); + return Result.success(); + } + + /** + * 删除菜单 + * @param ResourceId:菜单ID + * @return ResponseMessage + */ + @Override + public ResponseMessage delResource(String ResourceId) { + QueryWrapper TsResourceQueryWrapper=new QueryWrapper<>(); + TsResourceQueryWrapper.eq("parent_id",ResourceId); + List children=dao.selectList(TsResourceQueryWrapper); + if(children!=null&&children.size()>0){ + return Result.error("该菜单有子节点,无法删除"); + } + dao.deleteById(ResourceId); + //将该id下的信息放到最外层节点上 +// sarBussStandMenuDao.updateMenuidByMenuid(ResourceId,"3"); + return Result.success(); + } + + /** + * 通过Ids查询Resource + * @param resourceIds :菜单Ids + * @param sorDivide + * @return List + */ + @Override + public List getResourceByIds(List resourceIds, String sorDivide) { + if(resourceIds!=null&&resourceIds.size()>0){ + QueryWrapper TsResourceQueryWrapper=new QueryWrapper<>(); + if(sorDivide!=null){ + TsResourceQueryWrapper.eq("sor_divide",sorDivide); + } + TsResourceQueryWrapper.in("id",resourceIds); + return dao.selectList(TsResourceQueryWrapper); + } + return new ArrayList<>(); + } + + /** + * 递归调用获取子节点 + * @return List + */ + private List recursionGetListChildrenStand(TsResource resource,List children){ + List tsResources = children.stream() + .filter(resource1 -> !children.isEmpty() && StringUtils.isNotBlank(resource1.getParentId()) && resource1.getParentId().equals(resource.getId())) + .collect(Collectors.toList()); + if(!tsResources.isEmpty()){ + tsResources = tsResources.stream().sorted(Comparator.comparing(resource1 -> resource1.getDisplaySeq())).collect(Collectors.toList()); + tsResources.forEach(resource1 -> { + resource1.setTreeType("tsr"); + resource1.setChildren(recursionGetListChildrenStand((resource1),(children))); + }); + } + return tsResources; + } + + /** + * 递归调用获取子节点 + * @param parent:父节点 + * @return List + */ + private List recursionGetChildren(TsResource parent){ + + QueryWrapper TsResourceQueryWrapper=new QueryWrapper<>(); + TsResourceQueryWrapper.eq("PARENT_ID",parent.getId()); + List children=dao.selectList(TsResourceQueryWrapper); + for(TsResource TsResource:children){ + TsResource.setChildren(recursionGetChildren((TsResource))); + } + return children; + } + + public List getChildMenuList (String menuId) { + List menuIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(menuId)) { + List SarMenuList = dao.selectList(new QueryWrapper<>()); + Tree tree = new Tree(SarMenuList); + TreeNode treeNode = tree.getTreeNode(menuId); + if (treeNode != null) { + menuIds.add(treeNode.getNodeId()); + for (TreeNode node : treeNode.getAllChildren()) { + menuIds.add(node.getNodeId()); + } + } + } + return menuIds; + } + + @Override + public boolean dealWithData() { + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.eq("VALID_FLAG","0"); + List list=iTsResourceService.list(wrapper); + Map map=new HashMap<>(); + list.forEach(tsResource ->{ + if (null!=tsResource.getParentId()) { + tsResource.setParentIds(","); + } + tsResource.setMiddleParentId(tsResource.getParentId()); + map.put(tsResource.getId(),tsResource); + }); + list.forEach(tsResource -> dealData(tsResource,map)); + iTsResourceService.updateBatchById(list); + QueryWrapper wrapper1=new QueryWrapper<>(); + wrapper1.eq("PARENT_ID", "0").eq("PARENT_IDS",","); + TsResource user = new TsResource(); + user.setParentIds(""); + iTsResourceService.update(user,wrapper1); + return true; + } + + public boolean dealData(TsResource tsResource,Map map){ + if (null!=tsResource.getParentId() && !"".equals(tsResource.getParentId()) && !"0".equals(tsResource.getParentId())){ + tsResource.setParentIds(tsResource.getParentIds()+tsResource.getParentId()+","); + if (null!=map.get(tsResource.getParentId())) { + tsResource.setParentId(map.get(tsResource.getParentId()).getParentId()); + }else { + tsResource.setParentId(tsResource.getMiddleParentId()); + return true; + } + return dealData(tsResource,map); + }else { + tsResource.setParentId(tsResource.getMiddleParentId()); + return true; + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/controller/TsRoleController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/controller/TsRoleController.java new file mode 100644 index 00000000..ad0efc6e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/controller/TsRoleController.java @@ -0,0 +1,135 @@ +package com.adc.da.slrs.sarRole.controller; + + +import com.adc.da.exception.AdcDaBaseException; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarRole.dao.TsRoleDao; +import com.adc.da.slrs.sarRole.entity.TsRoleMenuVO; +import com.adc.da.slrs.sarRole.entity.TsRoleResourceVO; +import com.adc.da.slrs.sarRole.service.ITsRoleService; +import com.adc.da.sys.entity.UserEO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.ibatis.annotations.Delete; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarRole.entity.TsRole; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.validation.Valid; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author zxy +* @since 2021-06-22 +*/ +@RestController +@Api(tags = "|角色管理|") +@RequestMapping("/api/sarRole/role") +public class TsRoleController extends BaseController { + @Autowired + private ITsRoleService tsRoleService; + @Autowired + private TsRoleDao tsRoleDao; + + @ApiOperation("查询所有角色") + @GetMapping + public ResponseMessage> getAll(){ + List tsRoles=tsRoleService.getAll(); + return Result.success(tsRoles); + } + + @ApiOperation("根据角色名筛选角色") + @GetMapping("/name") + public ResponseMessage> getByName(String name){ + List tsRoles=tsRoleService.getByName(name); + return Result.success(tsRoles); + } + + @ApiOperation("新增角色") + @PostMapping + public ResponseMessage addRole(@Validated(TsRole.insert.class) @RequestBody TsRole tsRole){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("NAME",tsRole.getName()); + int count = tsRoleService.count(queryWrapper); + if (count>0){ + throw new AdcDaBaseException("角色名称已存在,请更换角色名称。"); + }else { + //设置操作人 + UserEO userEO = UserUtils.getUser(); + tsRole.setOperator(userEO.getUname()); + return tsRoleService.addRole(tsRole); + } + } + + @ApiOperation("编辑角色") + @PutMapping + public ResponseMessage updateRole(@Validated(TsRole.update.class)@RequestBody TsRole tsRole){ + //设置操作人 + UserEO userEO=UserUtils.getUser(); + tsRole.setOperator(userEO.getUname()); + System.out.println(tsRole); + return tsRoleService.updateRole(tsRole); + } + + @ApiOperation("删除角色") + @DeleteMapping + public ResponseMessage deleteRole(@RequestParam String roleId){ + return tsRoleService.deleteRole(roleId); + } + + @ApiOperation("配置权限") + @PostMapping("/menu") + public ResponseMessage setMenu(@Valid @RequestBody TsRoleMenuVO tsRoleMenuVO){ + return tsRoleService.setMenu(tsRoleMenuVO); + } + + @ApiOperation("查询角色详情") + @GetMapping("/id") + public ResponseMessage getRoleById(@RequestParam String roleId){ +// TsRole tsRole=tsRoleService.getById(roleId); +// if(tsRole.getParentId()!=null){ +// TsRole parent=tsRoleService.getById(tsRole.getParentId()); +// tsRole.setParent(parent.getName()); +// } + TsRole tsRole=tsRoleDao.getAllDatas(roleId); + if(ObjectUtils.isNotEmpty(tsRole.getParentId())){ + TsRole parent=tsRoleDao.getAllDatas(tsRole.getParentId()); + tsRole.setParent(parent.getName()); + } + return Result.success(tsRole); + } + + @ApiOperation("查询角色权限") + @GetMapping("/menu") + public ResponseMessage> getMenu(@RequestParam String roleId){ + List menuIds=tsRoleService.getMenu(roleId); + return Result.success(menuIds); + } + + @ApiOperation("配置资源") + @PostMapping("/resource") + public ResponseMessage setResource(@Valid @RequestBody TsRoleResourceVO tsRoleResourceVO){ + return tsRoleService.setResource(tsRoleResourceVO); + } + + @ApiOperation("查询角色资源") + @GetMapping("/resource") + public ResponseMessage> getResource(@RequestParam String roleId){ + List resourceIds=tsRoleService.getResource(roleId); + return Result.success(resourceIds); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/dao/TsRoleDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/dao/TsRoleDao.java new file mode 100644 index 00000000..1e10c1ac --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/dao/TsRoleDao.java @@ -0,0 +1,108 @@ +package com.adc.da.slrs.sarRole.dao; + +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +public interface TsRoleDao extends BaseMapper { + + /** + * 查询该角色绑定的岗位ID + * @param roleId:角色ID + * @return List:岗位ID + */ + @Select("select position_id from ts_position_role where role_id=#{roleId}") + List getPositionIds(String roleId); + + /** + * 查询角色的权限ID + * @param roleId:角色ID + * @return List + */ + @Select("select menu_id from ts_role_menu where role_id=#{roleId}") + List getMenuIds(String roleId); + + /** + * 添加权限 + * @param roleId:角色ID + * @param menuId:权限ID + */ + @Insert("insert into ts_role_menu (role_id,menu_id) values (#{roleId},#{menuId})") + void addMenu(@Param("roleId") String roleId, @Param("menuId") String menuId); + + /** + * 删除权限 + * @param roleId:角色ID + * @param menuId:权限ID + */ + @Delete("delete from ts_role_menu where role_id=#{roleId} and menu_id=#{menuId}") + void delMenu(String roleId, String menuId); + + @Select("select menu_id from ts_role_menu where role_id=#{roleId}") + List getMenuIdByRoleId(String roleId); + + /** + * 通过角色Id列表查询菜单Id列表 + * @param roleIds:角色ID列表 + * @return List + */ + List getMenuIdsByRoleIds(List roleIds); + + /** + * 通过角色ID查询绑定的资源ID + * @param roleId:角色ID + * @return List + */ + @Select("select resource_id from ts_role_resource where role_id=#{roleId}") + List getResourceIds(String roleId); + + + /** + * 添加资源 + * @param roleId:角色ID + * @param resourceId:权限ID + */ + @Insert("insert into ts_role_resource (role_id,resource_id) values (#{roleId},#{resourceId})") + void addResource(@Param("roleId") String roleId, @Param("resourceId") String resourceId); + + /** + * 删除权限 + * @param roleId:角色ID + * @param resourceId:权限ID + */ + @Delete("delete from ts_role_resource where role_id=#{roleId} and resource_id=#{resourceId}") + void delResource(@Param("roleId") String roleId,@Param("resourceId") String resourceId); + + /** + * 通过角色Id列表查询资源Id列表 + * @param roleIds:角色ID列表 + * @return List + */ + List getResourceIdsByRoleIds(List roleIds); + + /** + * 获取该角色的第一级权限 + * @param roleIds:角色ID + * @return List + */ + List getRootMenuIdsByRoleIds(List roleIds); + + @Select("select *,DATE_ADD(ts_role.operate_time,INTERVAL 8 HOUR) as operateTime from ts_role where ts_role.ID = #{roleId}") + TsRole getAllDatas(@Param("roleId") String roleId); + + @Select("select ROLE_ID from ts_user_role where USER_ID = #{userId}") + List getRoleByUserId(@Param("userId") String userId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRole.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRole.java new file mode 100644 index 00000000..cd72e305 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRole.java @@ -0,0 +1,127 @@ +package com.adc.da.slrs.sarRole.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import javax.validation.constraints.NotNull; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TsRole对象", description="") +public class TsRole extends BaseEntity { + public interface insert{ + } + public interface update{ + } + + private static final long serialVersionUID = 1L; + + @NotNull(message = "id不能为空",groups = {update.class}) + @ApiModelProperty(value = "主键") + @TableId(value = "ID",type = IdType.UUID) + private String id; + + @NotNull(message = "name不能为空",groups = {insert.class}) + @ApiModelProperty(value = "角色名称") + @TableField("NAME") + private String name; + + @ApiModelProperty(value = "角色类型") + @TableField("ROLE_TYPE") + private String roleType; + + @ApiModelProperty(value = "角色状态") + @TableField("USE_FLAG") + private BigDecimal useFlag; + + @ApiModelProperty(value = "是否默认") + @TableField("IS_DEFAULT") + private BigDecimal isDefault; + + @ApiModelProperty(value = "角色描述") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "操作时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss",locale = "zh") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp operateTime; + + @ApiModelProperty(value = "操作人") + private String operator; + + @ApiModelProperty(value = "备注") + @TableField("EXT_INFO") + private String extInfo; + + @TableField("OPER_USER") + private String operUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private BigDecimal validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp modifyTime; + + @ApiModelProperty(value = "上级节点id") + @TableField("PARENT_ID") + private String parentId; + + @ApiModelProperty(value = "角色层级") + @TableField("ROLE_HIERARCHY") + private Integer roleHierarchy; + + @ApiModelProperty(value = "对应部门id") + @TableField("DY_ORG_ID") + private String dyOrgId; + + @ApiModelProperty(value = "对应部门名称") + @TableField("DY_ORG_NAME") + private String dyOrgName; + + @ApiModelProperty(value = "子角色") + @TableField(exist = false) + private List children; + + @ApiModelProperty("父节点名称") + @TableField(exist = false) + private String parent; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRoleMenuVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRoleMenuVO.java new file mode 100644 index 00000000..3c3a775d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRoleMenuVO.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.sarRole.entity; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class TsRoleMenuVO { + @NotNull(message = "roleId不能为空") + private String roleId; + @NotNull(message = "menuIds不能为空") + private List menuIds; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRoleResourceVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRoleResourceVO.java new file mode 100644 index 00000000..6652ac28 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/entity/TsRoleResourceVO.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.sarRole.entity; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class TsRoleResourceVO { + @NotNull(message = "roleId不能为空") + private String roleId; + @NotNull(message = "resourceIds不能为空") + private List resourceIds; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/enums/MenuEnum.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/enums/MenuEnum.java new file mode 100644 index 00000000..22bd66f6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/enums/MenuEnum.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.sarRole.enums; + +public enum MenuEnum { + + SY("首页","asdfadf"); + + String menuName; + String menuId; + + MenuEnum(String menuName, String menuId) { + this.menuName = menuName; + this.menuId = menuId; + } + + public String getMenuName() { + return menuName; + } + + public void setMenuName(String menuName) { + this.menuName = menuName; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/service/ITsRoleService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/service/ITsRoleService.java new file mode 100644 index 00000000..3c9910bb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/service/ITsRoleService.java @@ -0,0 +1,89 @@ +package com.adc.da.slrs.sarRole.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.adc.da.slrs.sarRole.entity.TsRoleMenuVO; +import com.adc.da.slrs.sarRole.entity.TsRoleResourceVO; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +public interface ITsRoleService extends IService { + + /** + * 查询所有角色 + * @return List + */ + List getAll(); + + /** + * 通过名字查询角色 + * @param name:角色名 + * @return List + */ + List getByName(String name); + + /** + * 添加角色 + * @param tsRole :角色信息 + * @return ResponseMessage + */ + ResponseMessage addRole(TsRole tsRole); + + /** + * 编辑角色 + * @param tsRole:角色信息 + * @return ResponseMessage + */ + ResponseMessage updateRole(TsRole tsRole); + + /** + * 删除角色 + * @param roleId:角色Id + * @return ResponseMessage + */ + ResponseMessage deleteRole(String roleId); + + /** + * 配置菜单 + * @param tsRoleMenuVO:菜单ID + * @return ResponseMessage + */ + ResponseMessage setMenu(TsRoleMenuVO tsRoleMenuVO); + + /** + * 查询角色权限 + * @param roleId:角色ID + * @return List + */ + List getMenu(String roleId); + + /** + * 通过角色Id列表查询菜单Id列表 + * @param roleIds:角色ID列表 + * @return List + */ + List getMenuIdsByRoleIds(List roleIds); + + ResponseMessage setResource(TsRoleResourceVO tsRoleResourceVO); + + List getResource(String roleId); + + List getResourceIdsByRoleIds(List roleIds); + + /** + * 获取该角色的第一级权限 + * @param roleIds:角色ID + * @return List + */ + List getRootMenuIdsByRoleIds(List roleIds); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/service/impl/TsRoleServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/service/impl/TsRoleServiceImpl.java new file mode 100644 index 00000000..93586a44 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarRole/service/impl/TsRoleServiceImpl.java @@ -0,0 +1,287 @@ +package com.adc.da.slrs.sarRole.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarMenu.dao.SarMenuDao; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarMenu.service.ISarMenuService; +import com.adc.da.slrs.sarPersonalCenter.service.ISarUserPersonalMenuService; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.adc.da.slrs.sarRole.dao.TsRoleDao; +import com.adc.da.slrs.sarRole.entity.TsRoleMenuVO; +import com.adc.da.slrs.sarRole.entity.TsRoleResourceVO; +import com.adc.da.slrs.sarRole.enums.MenuEnum; +import com.adc.da.slrs.sarRole.service.ITsRoleService; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.utils.util.ListUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@EnableAsync +@Service +public class TsRoleServiceImpl extends ServiceImpl implements ITsRoleService { + @Autowired + private TsRoleDao tsRoleDao; + @Autowired + private ISarMenuService sarMenuService; + @Autowired + @Lazy + private ISarUserPersonalMenuService sarUserPersonalMenuService; + + @Autowired + private ITsResourceService tsResourceService; + /** + * 查询所有角色 + * @return List + */ + @Override + public List getAll() { + QueryWrapper tsRoleQueryWrapper=new QueryWrapper<>(); + tsRoleQueryWrapper.eq("ROLE_HIERARCHY",1); + tsRoleQueryWrapper.orderByDesc("NAME"); + List rootRole=tsRoleDao.selectList(tsRoleQueryWrapper); + for(TsRole tsRole:rootRole){ + tsRole.setChildren(recursionGetRole(tsRole)); + } + return rootRole; + } + + /** + * 递归查询子角色 + * @param tsRole:父角色 + * @return List + */ + private List recursionGetRole(TsRole tsRole){ + QueryWrapper tsRoleQueryWrapper=new QueryWrapper<>(); + tsRoleQueryWrapper.eq("parent_id",tsRole.getId()); + tsRoleQueryWrapper.eq("ROLE_HIERARCHY",tsRole.getRoleHierarchy()+1); + tsRoleQueryWrapper.orderByDesc("NAME"); + List tsRoles=tsRoleDao.selectList(tsRoleQueryWrapper); + for(TsRole tsRoleNode:tsRoles){ + tsRoleNode.setChildren(recursionGetRole(tsRoleNode)); + } + return tsRoles; + } + + /** + * 通过名字查询角色 + * @param name:角色名 + * @return List + */ + @Override + public List getByName(String name) { + QueryWrapper tsRoleQueryWrapper=new QueryWrapper<>(); + tsRoleQueryWrapper.like("name","%"+name+"%"); + return tsRoleDao.selectList(tsRoleQueryWrapper); + } + + /** + * 添加角色 + * @param tsRole :角色信息 + * @return TsRole + */ + @Override + public ResponseMessage addRole(TsRole tsRole) { + //判断是否是顶级角色 + if(ObjectUtils.isEmpty(tsRole.getParentId())){ + tsRole.setRoleHierarchy(1); + }else { + QueryWrapper parentQueryWrapper=new QueryWrapper<>(); + parentQueryWrapper.eq("id",tsRole.getParentId()); + TsRole parentRole=tsRoleDao.selectOne(parentQueryWrapper); + if(parentRole==null){ + return Result.error("父角色不存在"); + } + tsRole.setRoleHierarchy(parentRole.getRoleHierarchy()+1); + } + tsRoleDao.insert(tsRole); + //配置首页菜单 + tsRoleDao.addMenu(tsRole.getId(), MenuEnum.SY.getMenuId()); + List as=tsResourceService.getDefaultByName(); + as.forEach(s -> { + tsRoleDao.addResource(tsRole.getId(),s); + }); + return Result.success(); + } + + /** + * 编辑角色 + * @param tsRole:角色信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage updateRole(TsRole tsRole) { + TsRole oldRole=tsRoleDao.selectById(tsRole.getId()); + if(oldRole==null){ + return Result.error("该角色不存在"); + } + //不允许修改父节点 + tsRole.setRoleHierarchy(null); + tsRole.setParentId(null); + tsRoleDao.updateById(tsRole); + return Result.success(); + } + + /** + * 删除角色 + * @param roleId:角色Id + * @return ResponseMessage + */ + @Override + public ResponseMessage deleteRole(String roleId) { + TsRole tsRole=tsRoleDao.selectById(roleId); + if(tsRole==null){ + return Result.error("该角色不存在"); + } + QueryWrapper childrenRoleQueryWrapper=new QueryWrapper<>(); + childrenRoleQueryWrapper.eq("parent_id",roleId); + List childrenRole=tsRoleDao.selectList(childrenRoleQueryWrapper); + if(childrenRole!=null&&childrenRole.size()>0){ + return Result.error("该角色有下属角色,无法删除"); + } + List positionIds=tsRoleDao.getPositionIds(roleId); + if(positionIds!=null&&positionIds.size()>0){ + return Result.error("该角色已绑定岗位,无法删除"); + } + tsRoleDao.deleteById(roleId); + return Result.success(); + } + + /** + * 配置菜单 + * @param tsRoleMenuVO:菜单ID + * @return ResponseMessage + */ + @Override + @Transactional + public ResponseMessage setMenu(TsRoleMenuVO tsRoleMenuVO) { + TsRole role=tsRoleDao.selectById(tsRoleMenuVO.getRoleId()); + if(role==null){ + return Result.error("该角色不存在"); + } + List oldMenuIds=tsRoleDao.getMenuIds(tsRoleMenuVO.getRoleId()); + Map> updateMenuIds= ListUtil.difList(tsRoleMenuVO.getMenuIds(),oldMenuIds); + List insertIds=updateMenuIds.get("insert"); + List deleteIds=updateMenuIds.get("delete"); + if(insertIds!=null&&insertIds.size()>0){ + for(String menuId:insertIds){ + tsRoleDao.addMenu(tsRoleMenuVO.getRoleId(),menuId); + } + } + if(deleteIds!=null&&deleteIds.size()>0){ + for(String menuId:deleteIds){ + tsRoleDao.delMenu(tsRoleMenuVO.getRoleId(),menuId); + } + } + sarUserPersonalMenuService.setPersonalMenu(tsRoleMenuVO.getRoleId()); + return Result.success(); + } + + /** + * 查询角色权限 + * @param roleId:角色ID + * @return List + */ + @Override + public List getMenu(String roleId) { + return tsRoleDao.getMenuIdByRoleId(roleId); + } + + /** + * 通过角色Id列表查询菜单Id列表 + * @param roleIds:角色ID列表 + * @return List + */ + @Override + public List getMenuIdsByRoleIds(List roleIds) { + if(roleIds!=null&&roleIds.size()>0){ + return tsRoleDao.getMenuIdsByRoleIds(roleIds); + } + return null; + } + + /** + * 配置资源 + * @param tsRoleResourceVO:资源ID + * @return ResponseMessage + */ + @Override + public ResponseMessage setResource(TsRoleResourceVO tsRoleResourceVO) { + TsRole role=tsRoleDao.selectById(tsRoleResourceVO.getRoleId()); + if(role==null){ + return Result.error("该角色不存在"); + } + List oldResourceIds=tsRoleDao.getResourceIds(tsRoleResourceVO.getRoleId()); + Map> updateMenuIds= ListUtil.difList(tsRoleResourceVO.getResourceIds(),oldResourceIds); + List insertIds=updateMenuIds.get("insert"); + List deleteIds=updateMenuIds.get("delete"); + if(insertIds!=null&&insertIds.size()>0){ + for(String menuId:insertIds){ + tsRoleDao.addResource(tsRoleResourceVO.getRoleId(),menuId); + } + } + if(deleteIds!=null&&deleteIds.size()>0){ + for(String menuId:deleteIds){ + tsRoleDao.delResource(tsRoleResourceVO.getRoleId(),menuId); + } + } + + return Result.success(); + } + + /** + * 查询角色资源 + * @param roleId:角色ID + * @return List + */ + @Override + public List getResource(String roleId) { + return tsRoleDao.getResourceIds(roleId); + } + + /** + * 通过角色Id列表查询菜单Id列表 + * @param roleIds:角色ID列表 + * @return List + */ + @Override + public List getResourceIdsByRoleIds(List roleIds) { + if(roleIds!=null&&roleIds.size()>0){ + return tsRoleDao.getResourceIdsByRoleIds(roleIds); + } + return null; + } + + /** + * 获取该角色的第一级权限 + * @param roleIds:角色ID + * @return List + */ + @Override + public List getRootMenuIdsByRoleIds(List roleIds) { + if(roleIds!=null&&roleIds.size()>0){ + return tsRoleDao.getRootMenuIdsByRoleIds(roleIds); + } + return null; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/controller/SarSarAccessController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/controller/SarSarAccessController.java new file mode 100644 index 00000000..9b793492 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/controller/SarSarAccessController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarSarAccess.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarSarAccess.entity.SarSarAccess; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 标准法规准入清单信息表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(description = "|SarSarAccess|") +@RequestMapping("/sarSarAccess/sar-sar-access") +public class SarSarAccessController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/dao/SarSarAccessDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/dao/SarSarAccessDao.java new file mode 100644 index 00000000..b9abf808 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/dao/SarSarAccessDao.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarSarAccess.dao; + +import com.adc.da.slrs.sarSarAccess.entity.SarSarAccess; +import com.adc.da.slrs.sarSarAccess.page.SarSarAccessEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 标准法规准入清单信息表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface SarSarAccessDao extends BaseMapper { + + List selectAccessByRes(SarSarAccessEOPage page); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/entity/SarSarAccess.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/entity/SarSarAccess.java new file mode 100644 index 00000000..3c39885d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/entity/SarSarAccess.java @@ -0,0 +1,110 @@ +package com.adc.da.slrs.sarSarAccess.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +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.data.annotation.Transient; + +/** + *

    + * 标准法规准入清单信息表 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarSarAccess对象", description="标准法规准入清单信息表") +public class SarSarAccess extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "国家地区") + @TableField("COUNTRY") + private String country; + + @ApiModelProperty(value = "准入信息") + @TableField("ACCESS_CONTENT") + private String accessContent; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @TableField("APPLY_ARCTIC") + private String applyArctic; + + @TableField("ENERGY_KIND") + private String energyKind; + + @ApiModelProperty(value = "标准法规清单类型") + @TableField("TYPE") + private String type; + + @ApiModelProperty(value = "文本说明") + @TableField("REMARK") + private String remark; + + @ApiModelProperty(value = "附件") + @TableField("RELATE_FILE") + private String relateFile; + + @ApiModelProperty(value = "状态(1未发布,2已发布)") + @TableField("STATE") + private String state; + + @ApiModelProperty(value = "版本号") + @TableField("VERSION") + private Integer version; + + @Transient + private String uname; + @Transient + private String countryShow; + /** + * 技术要求清单 + */ + @Transient + private String inforlist; + /** + * 行政要求清单 + */ + @Transient + private String adminInfoList; + + @Transient + private String energyKindShow; + @Transient + private String applyArcticShow; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/page/SarSarAccessEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/page/SarSarAccessEOPage.java new file mode 100644 index 00000000..e5284a09 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/page/SarSarAccessEOPage.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.sarSarAccess.page; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:SAR_SAR_ACCESS SarSarAccessEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarSarAccessEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "LIKE"; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "LIKE"; + private String creationUser; + private String creationUserOperator = "LIKE"; + private String validFlag; + private String validFlagOperator = "LIKE"; + private String accessContent; + private String accessContentOperator = "LIKE"; + private String country; + private String countryOperator = "LIKE"; + private String id; + private String idOperator = "LIKE"; + private String applyArctic; + private String energyKind; + private String type; + private String resId; + private String sarType; + private String state; + + //高级检索 + private String advanceSearchVOStr; + private String advanceSearchStr; + + private String keywords; + private String accessSarType; + + private String shunxu; + private String sql; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/service/ISarSarAccessService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/service/ISarSarAccessService.java new file mode 100644 index 00000000..7e9a45ce --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/service/ISarSarAccessService.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.sarSarAccess.service; + +import com.adc.da.slrs.sarSarAccess.entity.SarSarAccess; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 标准法规准入清单信息表 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarSarAccessService extends IService { + + String getCountryByRes(String resId, String sarType) throws Exception; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/service/impl/SarSarAccessServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/service/impl/SarSarAccessServiceImpl.java new file mode 100644 index 00000000..cdb8ccde --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccess/service/impl/SarSarAccessServiceImpl.java @@ -0,0 +1,87 @@ +package com.adc.da.slrs.sarSarAccess.service.impl; + +import com.adc.da.slrs.sarSarAccess.entity.SarSarAccess; +import com.adc.da.slrs.sarSarAccess.dao.SarSarAccessDao; +import com.adc.da.slrs.sarSarAccess.page.SarSarAccessEOPage; +import com.adc.da.slrs.sarSarAccess.service.ISarSarAccessService; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.page.DicTypeEOPage; +import com.adc.da.sys.service.IDicTypeEOService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + *

    + * 标准法规准入清单信息表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class SarSarAccessServiceImpl extends ServiceImpl implements ISarSarAccessService { + + @Autowired + private IDicTypeEOService dicTypeEOService; + + @Autowired + private SarSarAccessDao dao; + + public SarSarAccessDao getDao() { + return dao; + } + + public String getCountryByRes(String resId,String sarType) throws Exception{ + String countryNames = ""; + Set countrySet = new HashSet<>(); + SarSarAccessEOPage page = new SarSarAccessEOPage(); + page.setResId(resId); + page.setSarType(sarType); + List getAccessList = selectAccessByRes(page); + if (getAccessList != null && !getAccessList.isEmpty()) { + for (SarSarAccess sarSarAccessEO : getAccessList) { + if (org.apache.commons.lang.StringUtils.isNotBlank(sarSarAccessEO.getCountryShow())) { + List countryArr = Arrays.asList(sarSarAccessEO.getCountryShow().split(",")); + countrySet.addAll(countryArr); + } + } + } + if (countrySet != null && !countrySet.isEmpty()) { + for (String set : countrySet) { + countryNames += set + ","; + } + countryNames = countryNames.substring(0,countryNames.length()-1); + } + return countryNames; + } + + public List selectAccessByRes(SarSarAccessEOPage page) throws Exception{ + List getList = dao.selectAccessByRes(page); + if (getList != null && !getList.isEmpty()) { + for (SarSarAccess sarSarAccessEO : getList) { + if(org.apache.commons.lang.StringUtils.isNotEmpty(sarSarAccessEO.getCountry())){ + String countryShow = ""; + String[] countryCodes = sarSarAccessEO.getCountry().split(","); + for(int index =0; index dicList = dicTypeEOService.queryByList(dicTypeEOPage); + if (dicList!= null && !dicList.isEmpty()) { + countryShow += dicList.get(0).getDicTypeName()+","; + } + } + sarSarAccessEO.setCountryShow(countryShow); + } + } + } + return getList; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/controller/SarSarAccessInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/controller/SarSarAccessInfoController.java new file mode 100644 index 00000000..241bb1d2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/controller/SarSarAccessInfoController.java @@ -0,0 +1,45 @@ +package com.adc.da.slrs.sarSarAccessInfo.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarSarAccessInfo.service.ISarSarAccessInfoService; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarSarAccessInfo.entity.SarSarAccessInfo; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.Map; +import java.util.Set; + +/** +*

    + * 标准法规准入清单详情表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库--入清单详情表") +@RequestMapping("/${restPath}/sarSarAccessInfo/sar-sar-access-info") +public class SarSarAccessInfoController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarSarAccessInfoController.class); + + @Autowired + private ISarSarAccessInfoService sarSarAccessInfoEOService; + + @ApiOperation(value = "|SarSarAccessInfoEO|查询标准涉及清单实施时间") + @GetMapping("/selectProTimeInfoByStandId") + public ResponseMessage>> selectProTimeInfoByStandId(String standId){ + Map> map = sarSarAccessInfoEOService.selectProTimeInfoByStandId(standId); + return Result.success(map); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/dao/SarSarAccessInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/dao/SarSarAccessInfoDao.java new file mode 100644 index 00000000..a9d3bc85 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/dao/SarSarAccessInfoDao.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarSarAccessInfo.dao; + +import com.adc.da.slrs.sarSarAccessInfo.entity.SarSarAccessInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 标准法规准入清单详情表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface SarSarAccessInfoDao extends BaseMapper { + + List selectProTimeInfoByStandId(@Param("standId") String standId); + + Map selectProTimeInfoByStandIdAndAccId(@Param("standId")String standId, @Param("accId")String accId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/entity/SarSarAccessInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/entity/SarSarAccessInfo.java new file mode 100644 index 00000000..f5c1bf93 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/entity/SarSarAccessInfo.java @@ -0,0 +1,322 @@ +package com.adc.da.slrs.sarSarAccessInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * 标准法规准入清单详情表 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarSarAccessInfo对象", description="标准法规准入清单详情表") +public class SarSarAccessInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "准入信息ID") + @TableField("ACCESS_ID") + private String accessId; + + @ApiModelProperty(value = "标准法规类型") + @TableField("SAR_TYPE") + private String sarType; + + @ApiModelProperty(value = "资源ID") + @TableField("RES_ID") + private String resId; + + @ApiModelProperty(value = "排序序号") + @TableField("DISPLAY_SEQ") + private Integer displaySeq; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "清单标准类型(SKILL技术要求,ADMIN行政要求)") + @TableField("ACCESS_SAR_TYPE") + private String accessSarType; + + @ApiModelProperty(value = "实施说明") + @TableField("PERFORM_INFO") + private String performInfo; + + @ApiModelProperty(value = "要求性质") + @TableField("ASK_NATURE") + private String askNature; + + @ApiModelProperty(value = "准入类型") + @TableField("ACCESS_TYPE") + private String accessType; + + @ApiModelProperty(value = "认证交付物") + @TableField("AUTH_DELIVE") + private String authDelive; + + @ApiModelProperty(value = "认证对象") + @TableField("AUTH_OBJ_ID") + private String authObjId; + + @ApiModelProperty(value = "认证责任部门") + @TableField("AUTH_DEPART_ID") + private String authDepartId; + + @ApiModelProperty(value = "新车型实施日期") + @TableField("NEW_PUT_TIME") + private String newPutTime; + + @ApiModelProperty(value = "在产车实施日期") + @TableField("PROD_PUT_TIME") + private String prodPutTime; + + @ApiModelProperty(value = "EOP车型实施日期") + @TableField("EOP_PUT_TIME") + private String eopPutTime; + + @ApiModelProperty(value = "新车型实施日期-文本") + @TableField("NEW_PUT_TEXT_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String newPutTextTime; + + @ApiModelProperty(value = "在产车实施日期-文本") + @TableField("PROD_PUT_TEXT_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String prodPutTextTime; + + @ApiModelProperty(value = "EOP车型实施日期-文本") + @TableField("EOP_PUT_TEXT_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String eopPutTextTime; + + @ApiModelProperty(value = "标准\\政策编号") + @TableField("STAND_CODE") + private String standCode; + + @ApiModelProperty(value = "合规性分级颜色") + @TableField("COLOR") + private String color; + + + //===========================================// + // 新增字段 + /** + * 要求性质 + */ + @TableField(exist = false) + private String askNatureName; + + + /** + * 认证对象 + */ + @TableField(exist = false) + private String authObj; + + /** + * 认证责任部门 + */ + @TableField(exist = false) + private String authDepart; + + //==================清单扩展字段========================// + /** + * 关联参数表ID + */ + @TableField(exist = false) + private String accValId; + @TableField(exist = false) + private String newAccValId; + /** + * 标准/政策编号 + */ + @TableField(exist = false) + private String code; + /** + * 标准/政策 中文名称 + */ + @TableField(exist = false) + private String name; + + /** + * 标准 政策 英文名称 + */ + @TableField(exist = false) + private String enName; + + /** + * 标准性质 + */ + @TableField(exist = false) + private String nature; + + /** + * 保存标准性质Code + */ + @TableField(exist = false) + private String natureId; + + /** + * 实施时间 + */ + @TableField(exist = false) + private String putTime; + + /** + * 标准状态 + */ + @TableField(exist = false) + private String state; + + /** + * 保存使用的标准状态CODE + */ + @TableField(exist = false) + private String stateId; + + /** + * 适用车型 + */ + @TableField(exist = false) + private String applyArctic; + + @TableField(exist = false) + private String applyArcticId; + + /** + * 责任部门 + */ + @TableField(exist = false) + private String ZRBMNAME; + + /** + * 责任部门显示 + */ + @TableField(exist = false) + private String ZRBM; + + /** + * 维护人员 + */ + @TableField(exist = false) + private String assertUser; + + /** + * FO + */ + @TableField(exist = false) + private String FOName; + + /** + * 保存使用的FO用户ID + */ + @TableField(exist = false) + private String FO; + /** + * 项目评估人员 + */ + @TableField(exist = false) + private String proEssessUser; + + /** + * 保存项目评估人员 + */ + @TableField(exist = false) + private String proEssessUserId; + + /** + * 文本说明 + */ + @TableField(exist = false) + private String synopsis; + //=========================================// + + //准入标准法规添加时页面显示(补充) + /** + * 能源种类 + */ + @TableField(exist = false) + private String energyKind; + + @TableField(exist = false) + private String energyKindId; + + @TableField(exist = false) + private String responsibleUnit; + /** + * 标准状态 + */ + @TableField(exist = false) + private String standState; + /** + * 备注 + */ + @TableField(exist = false) + private String remark; + + @TableField(exist = false) + private String standName; + @TableField(exist = false) + private String lawsCode; + @TableField(exist = false) + private String lawsName; + @TableField(exist = false) + private String country; + //标签 + @TableField(exist = false) + private String gxhbq; + + @TableField(exist = false) + private String gxhbqName; + //要求类型 + @TableField(exist = false) + private String askType; + + @TableField(exist = false) + private String askTypeName; + //相关部门 + @TableField(exist = false) + private String XGBM; + + @TableField(exist = false) + private String XGBMName; + @TableField(exist = false) + private String prcState; + @TableField(exist = false) + private String sarState; + + //等效标准 + @TableField(exist = false) + private String dxbz; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/service/ISarSarAccessInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/service/ISarSarAccessInfoService.java new file mode 100644 index 00000000..a861eb0e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/service/ISarSarAccessInfoService.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarSarAccessInfo.service; + +import com.adc.da.slrs.sarSarAccessInfo.entity.SarSarAccessInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; +import java.util.Set; + +/** + *

    + * 标准法规准入清单详情表 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarSarAccessInfoService extends IService { + + Map> selectProTimeInfoByStandId(String standId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/service/impl/SarSarAccessInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/service/impl/SarSarAccessInfoServiceImpl.java new file mode 100644 index 00000000..7d4fe9f3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarSarAccessInfo/service/impl/SarSarAccessInfoServiceImpl.java @@ -0,0 +1,106 @@ +package com.adc.da.slrs.sarSarAccessInfo.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.adc.da.slrs.sarSarAccessInfo.entity.SarSarAccessInfo; +import com.adc.da.slrs.sarSarAccessInfo.dao.SarSarAccessInfoDao; +import com.adc.da.slrs.sarSarAccessInfo.service.ISarSarAccessInfoService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

    + * 标准法规准入清单详情表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class SarSarAccessInfoServiceImpl extends ServiceImpl implements ISarSarAccessInfoService { + + @Autowired + private SarSarAccessInfoDao dao; + + @Autowired + private DicTypeEODao dicTypeEODao; + + public Map> selectProTimeInfoByStandId(String standId) { + List getList = dao.selectProTimeInfoByStandId(standId); + List newAccessInfoList = new ArrayList<>(); + Set countrySet = new LinkedHashSet<>(); + Map> countryMap = new LinkedHashMap<>(); + for (SarSarAccessInfo accessInfoEO : getList) { + if (StringUtils.isNotBlank(accessInfoEO.getCountry())) { + String[] countryIds = accessInfoEO.getCountry().split(","); + for (String countryId : countryIds) { + List dicTypeEOS = dicTypeEODao.getDicEOByDicTypeCodeParent(countryId); + if (!dicTypeEOS.isEmpty()) { + SarSarAccessInfo newAccessInfoEO = new SarSarAccessInfo(); + BeanUtil.copyProperties(accessInfoEO, newAccessInfoEO); + newAccessInfoEO.setCountry(dicTypeEOS.get(0).getDicTypeName()); + countrySet.add(dicTypeEOS.get(0).getDicTypeName()); + if (countryMap != null && countryMap.size() > 0 && countryMap.get(dicTypeEOS.get(0).getDicTypeName()) != null) { + List list = countryMap.get(dicTypeEOS.get(0).getDicTypeName()); + list.add(newAccessInfoEO); + countryMap.put(dicTypeEOS.get(0).getDicTypeName(), list); + } else { + List list = new ArrayList<>(); + list.add(newAccessInfoEO); + countryMap.put(dicTypeEOS.get(0).getDicTypeName(), list); + } + + newAccessInfoList.add(newAccessInfoEO); + } + } + } + } + Map> map = new LinkedHashMap<>(); + if (countryMap != null && countryMap.size() > 0) { + for (Map.Entry> entry : countryMap.entrySet()) { + Set newPutTextTimeList = new LinkedHashSet<>(); + Set prodPutTextTimeList = new LinkedHashSet<>(); + Set eopPutTextTimeList = new LinkedHashSet<>(); + for (SarSarAccessInfo sarSarAccessInfoEO : entry.getValue()) { + if (sarSarAccessInfoEO.getNewPutTime() != null) { + String key = "新车型实施日期(" + sarSarAccessInfoEO.getCountry() + ")"; + Set valueList = new LinkedHashSet<>(); +// String time = DateUtils.dateToString(sarSarAccessInfoEO.getNewPutTime(),"yyyy-MM-dd"); +// String time = sarSarAccessInfoEO.getNewPutTextTime(); + List list = Arrays.asList(sarSarAccessInfoEO.getNewPutTime().split(",")); + newPutTextTimeList.addAll(list); + map.put(key, newPutTextTimeList); + } + } + for (SarSarAccessInfo sarSarAccessInfoEO : entry.getValue()) { + if (sarSarAccessInfoEO.getProdPutTime() != null) { + String key = "在产车实施日期(" + sarSarAccessInfoEO.getCountry() + ")"; + Set valueList = new LinkedHashSet<>(); +// String time = DateUtils.dateToString(sarSarAccessInfoEO.getProdPutTextTime(),"yyyy-MM-dd"); +// String time = sarSarAccessInfoEO.getProdPutTextTime(); + List list = Arrays.asList(sarSarAccessInfoEO.getProdPutTime().split(",")); + prodPutTextTimeList.addAll(list); + map.put(key, prodPutTextTimeList); + } + } + for (SarSarAccessInfo sarSarAccessInfoEO : entry.getValue()) { + if (sarSarAccessInfoEO.getEopPutTime() != null) { + String key = "EOP车型实施日期(" + sarSarAccessInfoEO.getCountry() + ")"; + Set valueList = new LinkedHashSet<>(); +// String time = DateUtils.dateToString(sarSarAccessInfoEO.getEopPutTextTime(),"yyyy-MM-dd"); +// String time = sarSarAccessInfoEO.getEopPutTextTime(); + List list = Arrays.asList(sarSarAccessInfoEO.getEopPutTime().split(",")); + eopPutTextTimeList.addAll(list); + map.put(key, eopPutTextTimeList); + } + } + } + } + return map; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/controller/SarStandAttrDetailsController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/controller/SarStandAttrDetailsController.java new file mode 100644 index 00000000..5a759a15 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/controller/SarStandAttrDetailsController.java @@ -0,0 +1,194 @@ +package com.adc.da.slrs.sarStandAttrDetails.controller; + + +import com.adc.da.common.SarTypeEnum; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetailsDto; +import com.adc.da.slrs.sarStandAttrDetails.page.SarStandAttrDetailsEOPage; +import com.adc.da.slrs.sarStandAttrDetails.service.ISarStandAttrDetailsService; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.*; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-01 +*/ +@RestController +@Api(tags = "福田标准法规--标准属性自定义") +@RequestMapping("/${restPath}/lawss/sarStandAttrDetails") +public class SarStandAttrDetailsController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandAttrDetailsController.class); + + @Autowired + private ISarStandAttrDetailsService sarStandAttrDetailsEOService; + + @ApiOperation(value = "|SarStandAttrDetailsEO|分页查询") + @GetMapping("/page") +// @RequiresPermissions("lawss:sarStandAttrDetails:page") + public ResponseMessage> page(SarStandAttrDetailsEOPage page) throws Exception { + List rows = sarStandAttrDetailsEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|查询") + @GetMapping("/list") +// @RequiresPermissions("lawss:sarStandAttrDetails:list") + public ResponseMessage>> list(SarStandAttrDetailsEOPage page) throws Exception { + Map> resultMap = new HashMap<>(); + // 标准属性字段 + List getInlandStandList = InitStandAttrUtil.standInlandAttrFieldList; + resultMap.put(SarTypeEnum.INLAND_STAND.getValue(),getInlandStandList); + + + List getForeignStandList = InitStandAttrUtil.standForeignAttrFieldList; + //新增字段 +// Iterator iterator = getInlandStandList.iterator(); +// while (iterator.hasNext()){ +// SarStandAttrDetails next = iterator.next(); +// +// if (next.getAttrName().matches("能源类型|适用产品线|适用认证|责任工程师|关联文件")){ +// getForeignStandList.add(next); +// } +// +// } + resultMap.put(SarTypeEnum.FOREIGN_STAND.getValue(),getForeignStandList); + + + // 政策属性字段 + List getLawsStandList = InitStandAttrUtil.lawsStandAttrFieldList; + resultMap.put(SarTypeEnum.LAWS_STAND.getValue(),getLawsStandList); + List getInlandLawsList = InitStandAttrUtil.lawsInlandAttrFieldList; + resultMap.put(SarTypeEnum.INLAND_LAWS.getValue(),getInlandLawsList); + List getForeignLawsList = InitStandAttrUtil.lawsForeignAttrFieldList; + resultMap.put(SarTypeEnum.FOREIGN_LAWS.getValue(),getForeignLawsList); + // 企标属性字段 + List getBussList = InitStandAttrUtil.bussAttrFieldList; + resultMap.put(SarTypeEnum.BUSS.getValue(),getBussList); + return Result.success(resultMap); + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|详情") + @GetMapping("/getStandAttrDetailsById") +// @RequiresPermissions("lawss:sarStandAttrDetails:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(sarStandAttrDetailsEOService.getById(id)); + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|新增") + @PostMapping("/createStandAttrDetails") +// @RequiresPermissions("lawss:sarStandAttrDetails:save") + public ResponseMessage create(@RequestBody SarStandAttrDetails sarStandAttrDetailsEO) throws Exception { + String resultMsg = sarStandAttrDetailsEOService.createStandAttrDetails(sarStandAttrDetailsEO); + if ("success".equals(resultMsg)) { + // 重新加载数据 + sarStandAttrDetailsEOService.getAttrDetails(); + return Result.success("0","新增成功",sarStandAttrDetailsEO); + } else { + return Result.error("0","新增失败,"+resultMsg); + } + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|修改") + @PutMapping("/updateStandAttrDetails") +// @RequiresPermissions("lawss:sarStandAttrDetails:update") + public ResponseMessage update(@RequestBody SarStandAttrDetails sarStandAttrDetailsEO) throws Exception { + String resultMsg = sarStandAttrDetailsEOService.updateStandAttrDetails(sarStandAttrDetailsEO); + if ("success".equals(resultMsg)) { + // 重新加载数据 + sarStandAttrDetailsEOService.getAttrDetails(); + return Result.success("0","修改成功",sarStandAttrDetailsEO); + } else { + return Result.error("0","修改失败,"+resultMsg); + } + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|删除") + @DeleteMapping("/deleteAttrDetailsByIds") +// @RequiresPermissions("lawss:sarStandAttrDetails:delete") + public ResponseMessage delete(@PathVariable String id) throws Exception { + sarStandAttrDetailsEOService.removeById(id); + logger.info("delete from SAR_STAND_ATTR_DETAILS where id = {}", id); + return Result.success(); + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|批量删除") + @PutMapping("/deleteByIds") +// @RequiresPermissions("lawss:sarStandAttrDetails:update") + public ResponseMessage deleteByIds(String ids,String sarType) throws Exception { + String resultMsg = sarStandAttrDetailsEOService.deleteByIds(ids,sarType); + if ("success".equals(resultMsg)) { + // 重新加载数据 + sarStandAttrDetailsEOService.getAttrDetails(); + return Result.success("0","删除成功",null); + } else { + return Result.error("0","删除失败"); + } + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|查询标准中所有文件类型") + @GetMapping("/getFileFieldForSel") +// @RequiresPermissions("lawss:sarStandAttrDetails:get") + public ResponseMessage> getFileFieldForSel(){ + return Result.success(sarStandAttrDetailsEOService.selectFileFieldForSel(null)); + } + + // 标准拆分使用 + @ApiOperation(value = "|SarStandAttrDetailsEO|查询标准中所有文件类型") + @GetMapping("/getFileFieldForSel1") +// @RequiresPermissions("lawss:sarStandAttrDetails:get") + public ResponseMessage> selectFileFieldForSel1(){ + return Result.success(sarStandAttrDetailsEOService.selectFileFieldForSel1(null)); + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|查询标准中所有文件类型") + @GetMapping("/getListData") +// @RequiresPermissions("lawss:sarStandAttrDetails:get") + public ResponseMessage> getListData(){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("ATTR_TYPE","file"); + List sarStandAttrDetails=sarStandAttrDetailsEOService.list(queryWrapper); + return Result.success(sarStandAttrDetails); + } + + @ApiOperation(value = "|SarStandAttrDetailsEO|查询标准中所有文件类型") + @GetMapping("/getListData1") +// @RequiresPermissions("lawss:sarStandAttrDetails:get") + public ResponseMessage> getListData1(){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("ATTR_TYPE","file"); + List sarStandAttrDetails=sarStandAttrDetailsEOService.list(queryWrapper); + List sarStandAttrDetailsDtos = new ArrayList<>(); + for (SarStandAttrDetails sarStand:sarStandAttrDetails){ + SarStandAttrDetailsDto sarStandAttrDetailsDto = new SarStandAttrDetailsDto(); + BeanUtils.copyProperties(sarStand,sarStandAttrDetailsDto); + sarStandAttrDetailsDto.setLabel(sarStandAttrDetailsDto.getAttrName()); + sarStandAttrDetailsDto.setValue(sarStandAttrDetailsDto.getAttrField()); + sarStandAttrDetailsDtos.add(sarStandAttrDetailsDto); + } + return Result.success(sarStandAttrDetailsDtos); + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/dao/SarStandAttrDetailsDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/dao/SarStandAttrDetailsDao.java new file mode 100644 index 00000000..b36fc74c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/dao/SarStandAttrDetailsDao.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.sarStandAttrDetails.dao; + +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandAttrDetails.page.SarStandAttrDetailsEOPage; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface SarStandAttrDetailsDao extends BaseMapper { + + List queryByPage(SarStandAttrDetailsEOPage page); + + List queryByList(SarStandAttrDetailsEOPage page); + + Integer queryByCount(SarStandAttrDetailsEOPage page); + + int deleteByIds(@Param("idList") List idList); + + String selectAllFieldToStr(SarStandAttrDetailsEOPage page); + + List selectFileFieldForSel(@Param("attrField") String attrField); + + List selectFileFieldForSel1(@Param("attrField") String attrField); + + String selectNameByField(@Param("attrField") String attrField, @Param("sarType") String sarType); + + SarStandAttrDetails selectFieldByName(@Param("attrName") String attrName, @Param("sarType") String sarType); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/SarStandAttrDetails.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/SarStandAttrDetails.java new file mode 100644 index 00000000..7d6af359 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/SarStandAttrDetails.java @@ -0,0 +1,117 @@ +package com.adc.da.slrs.sarStandAttrDetails.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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.data.annotation.Transient; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandAttrDetails对象", description="") +public class SarStandAttrDetails extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "属性字段") + @TableField("ATTR_FIELD") + private String attrField; + + @ApiModelProperty(value = "属性名称") + @TableField("ATTR_NAME") + private String attrName; + + @ApiModelProperty(value = "类型(INPUT_STR字符串输入框,INPUT_NUM数字输入框,SELECT_OPTION下拉框,DATE_PICKER日期选择,FILE文件,TEXTAREA文本框)") + @TableField("ATTR_TYPE") + private String attrType; + + @ApiModelProperty(value = "属性字段长度") + @TableField("ATTR_LEN") + private Long attrLen; + + @ApiModelProperty(value = "展示顺序") + @TableField("ORDER_NUM") + private Long orderNum; + + @ApiModelProperty(value = "是否可编辑(0是,1否)") + @TableField("IS_EDIT") + private String isEdit; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date modifyTime; + + @ApiModelProperty(value = "是否必填") + @TableField("IS_MUST") + private String isMust; + + @ApiModelProperty(value = "是否展示") + @TableField("IS_SHOW_IMP") + private String isShowImp; + + @ApiModelProperty(value = "展示区域") + @TableField("SHOW_REGION_ID") + private String showRegionId; + + @ApiModelProperty(value = "下拉选项所用的值") + @TableField("SEL_VAL") + private String selVal; + + @ApiModelProperty(value = "模块类型(STAND标准,LAWS政策)") + @TableField("SAR_TYPE") + private String sarType; + + @ApiModelProperty(value = "是否作为检索条件") + @TableField("IS_SEARCH") + private String isSearch; + + @ApiModelProperty(value = "是否预警") + @TableField("IS_WARN") + private String isWarn; + + @ApiModelProperty(value = "是否检索字段") + @TableField("IS_JANSUO") + private String isJansuo; + + @TableField(exist = false) + private String attrValue; + + @TableField(exist = false) + private String areaName; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/SarStandAttrDetailsDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/SarStandAttrDetailsDto.java new file mode 100644 index 00000000..59289406 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/SarStandAttrDetailsDto.java @@ -0,0 +1,115 @@ +package com.adc.da.slrs.sarStandAttrDetails.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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 java.util.Date; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +public class SarStandAttrDetailsDto { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") +// @TableId("ID") + private String id; + + @ApiModelProperty(value = "属性字段") +// @TableField("ATTR_FIELD") + private String attrField; + + private String value; + + @ApiModelProperty(value = "属性名称") +// @TableField("ATTR_NAME") + private String attrName; + + private String label; + + @ApiModelProperty(value = "类型(INPUT_STR字符串输入框,INPUT_NUM数字输入框,SELECT_OPTION下拉框,DATE_PICKER日期选择,FILE文件,TEXTAREA文本框)") +// @TableField("ATTR_TYPE") + private String attrType; + + @ApiModelProperty(value = "属性字段长度") +// @TableField("ATTR_LEN") + private Long attrLen; + + @ApiModelProperty(value = "展示顺序") +// @TableField("ORDER_NUM") + private Long orderNum; + + @ApiModelProperty(value = "是否可编辑(0是,1否)") +// @TableField("IS_EDIT") + private String isEdit; + +// @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") +// @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") +// @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") +// @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date modifyTime; + + @ApiModelProperty(value = "是否必填") +// @TableField("IS_MUST") + private String isMust; + + @ApiModelProperty(value = "是否展示") +// @TableField("IS_SHOW_IMP") + private String isShowImp; + + @ApiModelProperty(value = "展示区域") +// @TableField("SHOW_REGION_ID") + private String showRegionId; + + @ApiModelProperty(value = "下拉选项所用的值") +// @TableField("SEL_VAL") + private String selVal; + + @ApiModelProperty(value = "模块类型(STAND标准,LAWS政策)") +// @TableField("SAR_TYPE") + private String sarType; + + @ApiModelProperty(value = "是否作为检索条件") +// @TableField("IS_SEARCH") + private String isSearch; + + @ApiModelProperty(value = "是否预警") +// @TableField("IS_WARN") + private String isWarn; + + @ApiModelProperty(value = "是否检索字段") +// @TableField("IS_JANSUO") + private String isJansuo; + +// @TableField(exist = false) + private String attrValue; + +// @TableField(exist = false) + private String areaName; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/listDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/listDTO.java new file mode 100644 index 00000000..0e4610b6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/entity/listDTO.java @@ -0,0 +1,12 @@ +package com.adc.da.slrs.sarStandAttrDetails.entity; + +import lombok.Data; + +@Data +public class listDTO { + + private String key; + + private String value; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/page/SarStandAttrDetailsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/page/SarStandAttrDetailsEOPage.java new file mode 100644 index 00000000..1b0f4a82 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/page/SarStandAttrDetailsEOPage.java @@ -0,0 +1,46 @@ +package com.adc.da.slrs.sarStandAttrDetails.page; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:SAR_STAND_ATTR_DETAILS SarStandAttrDetailsEOPage
    + * 作者:code generator
    + * 日期: 2020-08-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarStandAttrDetailsEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String attrField; + private String attrFieldOperator = "="; + private String attrName; + private String attrNameOperator = "="; + private String attrType; + private String attrTypeOperator = "="; + private String orderNum; + private String orderNumOperator = "="; + private String isEdit; + private String isEditOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String attrLen; + private String attrLenOperator = "="; + private String[] idList; + private String notId; + private String sarType; + private String isSearch; + private String isWarn; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/service/ISarStandAttrDetailsService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/service/ISarStandAttrDetailsService.java new file mode 100644 index 00000000..4bc37366 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/service/ISarStandAttrDetailsService.java @@ -0,0 +1,34 @@ +package com.adc.da.slrs.sarStandAttrDetails.service; + +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandAttrDetails.page.SarStandAttrDetailsEOPage; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarStandAttrDetailsService extends IService { + + List queryByPage(SarStandAttrDetailsEOPage page); + + String createStandAttrDetails (SarStandAttrDetails sarStandAttrDetailsEO); + + String updateStandAttrDetails (SarStandAttrDetails sarStandAttrDetailsEO); + + String deleteByIds (String ids,String sarType); + + void getAttrDetails(); + + List selectFileFieldForSel(String attrField); + + List selectFileFieldForSel1(String attrField); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/service/impl/SarStandAttrDetailsServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/service/impl/SarStandAttrDetailsServiceImpl.java new file mode 100644 index 00000000..0923070d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrDetails/service/impl/SarStandAttrDetailsServiceImpl.java @@ -0,0 +1,486 @@ +package com.adc.da.slrs.sarStandAttrDetails.service.impl; + +import com.adc.da.common.SarTypeEnum; +import com.adc.da.common.StandAttrTypeEnum; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarLawsAttrInfo.dao.SarLawsAttrInfoDao; +import com.adc.da.slrs.sarLawsInfo.dao.SarLawsInfoDao; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandAttrDetails.dao.SarStandAttrDetailsDao; +import com.adc.da.slrs.sarStandAttrDetails.page.SarStandAttrDetailsEOPage; +import com.adc.da.slrs.sarStandAttrDetails.service.ISarStandAttrDetailsService; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarStandAttrDetailsServiceImpl extends ServiceImpl implements ISarStandAttrDetailsService { + + private static final Logger logger = LoggerFactory.getLogger(ISarStandAttrDetailsService.class); + + @Autowired + private SarStandAttrDetailsDao dao; + + @Autowired + private SarLawsAttrInfoDao sarLawsAttrInfoDao; + + @Autowired + private SarLawsInfoDao sarLawsInfoEODao; + + @Autowired + private SarBussStandAttrInfoDao sarBussStandAttrInfoDao; + + @Autowired + private SarStandardsInfoDao sarStandardsInfoDao; + + @Autowired + private SarStandAttrInfoDao sarStandAttrInfoEODao; + +// @Autowired +// private SarBussionessStandDao sarBussionessStandEODao; + + private final static List standTypeList = new ArrayList<>(); + private final static List lawsTypeList = new ArrayList<>(); + + static { + standTypeList.add(SarTypeEnum.STAND.getValue()); + standTypeList.add(SarTypeEnum.INLAND_STAND.getValue()); + standTypeList.add(SarTypeEnum.FOREIGN_STAND.getValue()); + lawsTypeList.add(SarTypeEnum.LAWS.getValue()); + lawsTypeList.add(SarTypeEnum.LAWS_STAND.getValue()); + lawsTypeList.add(SarTypeEnum.INLAND_LAWS.getValue()); + lawsTypeList.add(SarTypeEnum.FOREIGN_LAWS.getValue()); + } + + @Override + public List queryByPage(SarStandAttrDetailsEOPage page){ + Integer pageCount = dao.queryByCount(page); + page.getPager().setRowCount(pageCount); + return dao.queryByPage(page); + } + + /*** + * @Description: + * @Author: yangxuenan + * @Date: 2020/8/17 15:44 + * @Param: [sarStandAttrDetailsEO] + * @Return: void + */ + public String createStandAttrDetails (SarStandAttrDetails sarStandAttrDetailsEO) { + //向属性表增加字段 + String fieldInfo = ""; + String attrType = sarStandAttrDetailsEO.getAttrType(); + String sarType = sarStandAttrDetailsEO.getSarType(); + String attrField = sarStandAttrDetailsEO.getAttrField(); + Long attrLen = sarStandAttrDetailsEO.getAttrLen(); + String validMsg = validAttrInfo(sarStandAttrDetailsEO); + if (StringUtils.isNotBlank(validMsg)) { + return validMsg; + } + // 根据不同字段类型拼接sql参数 + if (StandAttrTypeEnum.INPUT_STR.getValue().equals(attrType) || StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType) || StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fieldInfo = attrField + " varchar(" + String.valueOf(attrLen) + ")"; + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + fieldInfo = attrField + " int(" + String.valueOf(attrLen) + ")"; + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + fieldInfo = attrField + " datetime"; + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + fieldInfo = attrField + " varchar(500)"; + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && attrLen < 4000) { + fieldInfo = attrField + " varchar(" + String.valueOf(attrLen) + ")"; + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && attrLen >= 4000) { + fieldInfo = attrField + " text"; + } + if (StringUtils.isNotBlank(fieldInfo)) { + if (standTypeList.contains(sarType)) { + sarStandAttrInfoEODao.alterStandAttr(fieldInfo); + } else if (lawsTypeList.contains(sarType)) { + sarLawsAttrInfoDao.alterLawsAttr(fieldInfo); + } else if (SarTypeEnum.BUSS.getValue().equals(sarType)) { + sarBussStandAttrInfoDao.alterStandAttr(fieldInfo); + } + } + //向属性详细信息表添加数据 + sarStandAttrDetailsEO.setId(UUIDUtils.randomUUID20()); + sarStandAttrDetailsEO.setIsEdit("0"); + sarStandAttrDetailsEO.setCreationUser(LoginUserUtil.getUserId()); + sarStandAttrDetailsEO.setValidFlag("0"); + sarStandAttrDetailsEO.setCreationTime(new Date()); + sarStandAttrDetailsEO.setModifyTime(new Date()); + int successCount = dao.insert(sarStandAttrDetailsEO); + if (successCount > 0) { + return "success"; + } else { + return "error"; + } + } + + /*** + * @Description: 验证属性信息 + * @Author: yangxuenan + * @Date: 2020/8/18 10:39 + * @Param: [sarStandAttrDetailsEO] + * @Return: java.lang.String + */ + public String validAttrInfo (SarStandAttrDetails sarStandAttrDetailsEO) { + String attrFfield = sarStandAttrDetailsEO.getAttrField(); + String sarType = sarStandAttrDetailsEO.getSarType(); + // 判断新增字段在属性表中是否已存在 + SarStandAttrDetailsEOPage detailsEOPage = new SarStandAttrDetailsEOPage(); + detailsEOPage.setAttrField(attrFfield); + detailsEOPage.setSarType(sarType); + int countFiled = dao.queryByCount(detailsEOPage); + if (countFiled > 0) { + return "属性字段已存在"; + } + // 判断新增字段在基础表中是否已存在 + Integer count = 0; + if (standTypeList.contains(sarType)) { + count = sarStandardsInfoDao.selectStandColumn(attrFfield); + } else if (lawsTypeList.contains(sarType)) { + count = sarLawsInfoEODao.selectLawsColumn(attrFfield); + } else if (SarTypeEnum.BUSS.getValue().equals(sarType)) { +// count = sarBussionessStandEODao.selectStandColumn(attrFfield); + } + if (count > 0) { + return "属性字段在基础表SAR_STANDARDS_INFO中已存在"; + } + // 判断新增字段在属性表中是否已存在 + Integer countAtt = 0; + if (standTypeList.contains(sarType)) { + countAtt = sarStandAttrInfoEODao.selectStandAttrColumn(attrFfield); + } else if (lawsTypeList.contains(sarType)) { + countAtt = sarLawsAttrInfoDao.selectLawsAttrColumn(attrFfield); + } + if (countAtt > 0) { + return "属性字段在属性表SAR_STAND_ATTR_INFO中已存在"; + } + // 判断属性名称是否已存在 + detailsEOPage.setAttrField(null); + detailsEOPage.setAttrName(sarStandAttrDetailsEO.getAttrName()); + detailsEOPage.setSarType(sarType); + int countName = dao.queryByCount(detailsEOPage); + if (countName > 0) { + return "属性名称已存在"; + } + return ""; + } + + public void getAttrDetails(){ + String queryField = ""; //所有属性表需要查询的字段以逗号分隔 + String queryFieldNames = ""; //所有属性表需要查询的字段名以逗号分隔 + List queryFieldList = new ArrayList<>(); //所有属性表需要查询的字段 + List selectionFieldList = new ArrayList<>(); // 属性表下拉选项类型字段 + List fileFieldList = new ArrayList<>(); // 属性表文件类型字段 + List clobFieldList = new ArrayList<>(); // 属性表clob类型字段 + List timeFieldList = new ArrayList<>(); // 属性表日期类型字段 + List multiTimeFieldList = new ArrayList<>(); // 属性表多个日期类型字段 + List numFieldList = new ArrayList<>(); // 属性表数字类型字段 + List standInlandAttrFieldList = new ArrayList<>(); // 属性表数字类型字段 + List standForeignAttrFieldList = new ArrayList<>(); + Map selectFieldMap = new HashMap<>(); // 下拉属性字段及选项值 + + // 政策属性字段信息 + String queryFieldLaws = ""; //所有属性表需要查询的字段以逗号分隔 + String queryFieldNamesLaws = ""; //所有属性表需要查询的字段名以逗号分隔 + List queryFieldListLaws = new ArrayList<>(); //所有属性表需要查询的字段 + List selectionFieldListLaws = new ArrayList<>(); // 属性表下拉选项类型字段 + List fileFieldListLaws = new ArrayList<>(); // 属性表文件类型字段 + List clobFieldListLaws = new ArrayList<>(); // 属性表clob类型字段 + List timeFieldListLaws = new ArrayList<>(); // 属性表日期类型字段 + List multiTimeFieldListLaws = new ArrayList<>(); // 属性表多个日期类型字段 + List numFieldListLaws = new ArrayList<>(); // 属性表数字类型字段 + List lawsInlandAttrFieldList = new ArrayList<>(); // 属性表数字类型字段 + List lawsForeignAttrFieldList = new ArrayList<>(); + Map selectFieldMapLaws = new HashMap<>(); // 下拉属性字段及选项值 + + // 企标属性字段信息 + String queryFieldBuss = ""; //所有属性表需要查询的字段以逗号分隔 + String queryFieldNamesBuss = ""; //所有属性表需要查询的字段名以逗号分隔 + List queryFieldListBuss = new ArrayList<>(); //所有属性表需要查询的字段 + List selectionFieldListBuss = new ArrayList<>(); // 属性表下拉选项类型字段 + List fileFieldListBuss = new ArrayList<>(); // 属性表文件类型字段 + List clobFieldListBuss = new ArrayList<>(); // 属性表clob类型字段 + List timeFieldListBuss = new ArrayList<>(); // 属性表日期类型字段 + List multiTimeFieldListBuss = new ArrayList<>(); // 属性表多个日期类型字段 + List numFieldListBuss = new ArrayList<>(); // 属性表数字类型字段 + List bussAttrFieldList = new ArrayList<>(); // 属性表数字类型字段 + Map selectFieldMapBuss = new HashMap<>(); // 下拉属性字段及选项值 + + logger.info("新增编辑时加载--查询标准属性类!"); + // 属性表需要查询的字段 + StringBuilder fieldInfoBuilder = new StringBuilder(); + StringBuilder fieldInfoBuilderLaws = new StringBuilder(); + StringBuilder fieldInfoNameBuilder = new StringBuilder(); + StringBuilder fieldInfoNameBuilderLaws = new StringBuilder(); + StringBuilder fieldInfoBuilderBuss = new StringBuilder(); + StringBuilder fieldInfoNameBuilderBuss = new StringBuilder(); + SarStandAttrDetailsEOPage detailsEOPage = new SarStandAttrDetailsEOPage(); + List getDetailsList = dao.queryByList(detailsEOPage); + if (getDetailsList != null && !getDetailsList.isEmpty()) { + logger.info("新增编辑时加载--查询标准属性类--查询到" + getDetailsList.size() + "条属性字段数据!"); + for (SarStandAttrDetails detailsEO : getDetailsList) { + String sarType = detailsEO.getSarType(); + String attrType = detailsEO.getAttrType(); + if (standTypeList.contains(sarType)) { + if (!SarTypeEnum.FOREIGN_STAND.getValue().equals(sarType)) { + standInlandAttrFieldList.add(detailsEO); + } + if (!SarTypeEnum.INLAND_STAND.getValue().equals(sarType)) { + standForeignAttrFieldList.add(detailsEO); + } + fieldInfoBuilder.append(detailsEO.getAttrField() + ","); + fieldInfoNameBuilder.append(detailsEO.getAttrName() + ","); + queryFieldList.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldList.add(detailsEO.getAttrField()); + selectFieldMap.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldList.add(detailsEO.getAttrField()); + } + } else if (lawsTypeList.contains(sarType)) { + if (!SarTypeEnum.FOREIGN_LAWS.getValue().equals(sarType)) { + lawsInlandAttrFieldList.add(detailsEO); + } + if (!SarTypeEnum.INLAND_LAWS.getValue().equals(sarType)) { + lawsForeignAttrFieldList.add(detailsEO); + } + fieldInfoBuilderLaws.append(detailsEO.getAttrField() + ","); + fieldInfoNameBuilderLaws.append(detailsEO.getAttrName() + ","); + queryFieldListLaws.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldListLaws.add(detailsEO.getAttrField()); + selectFieldMapLaws.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldListLaws.add(detailsEO.getAttrField()); + } + } else if (SarTypeEnum.BUSS.getValue().equals(sarType)) { + bussAttrFieldList.add(detailsEO); + fieldInfoBuilderBuss.append(detailsEO.getAttrField() + ","); + fieldInfoNameBuilderBuss.append(detailsEO.getAttrName() + ","); + queryFieldListBuss.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldListBuss.add(detailsEO.getAttrField()); + selectFieldMapBuss.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldListBuss.add(detailsEO.getAttrField()); + } + } + } + queryField = fieldInfoBuilder.toString(); + queryFieldLaws = fieldInfoBuilderLaws.toString(); + queryFieldBuss = fieldInfoBuilderBuss.toString(); + if (StringUtils.isNotBlank(queryField)) { + queryField = queryField.substring(0,queryField.length()-1); + } + if (StringUtils.isNotBlank(queryFieldLaws)) { + queryFieldLaws = queryFieldLaws.substring(0,queryFieldLaws.length()-1); + } + if (StringUtils.isNotBlank(queryFieldBuss)) { + queryFieldBuss = queryFieldBuss.substring(0,queryFieldBuss.length()-1); + } + logger.info("新增编辑时加载--查询标准属性类--查询到属性字段为:" + queryField); + logger.info("新增编辑时加载--查询政策属性类--查询到属性字段为:" + queryFieldLaws); + logger.info("新增编辑时加载--查询企标属性类--查询到属性字段为:" + queryFieldBuss); + queryFieldNames = fieldInfoNameBuilder.toString(); + queryFieldNamesLaws = fieldInfoNameBuilderLaws.toString(); + queryFieldNamesBuss = fieldInfoNameBuilderBuss.toString(); + if (StringUtils.isNotBlank(queryFieldNames)) { + queryFieldNames = queryFieldNames.substring(0,queryFieldNames.length()-1); + } + if (StringUtils.isNotBlank(queryFieldNamesLaws)) { + queryFieldNamesLaws = queryFieldNamesLaws.substring(0,queryFieldNamesLaws.length()-1); + } + if (StringUtils.isNotBlank(queryFieldNamesBuss)) { + queryFieldNamesBuss = queryFieldNamesBuss.substring(0,queryFieldNamesBuss.length()-1); + } + } else { + logger.error("新增编辑时加载--查询标准属性类--未查询到属性字段数据!"); + } + InitStandAttrUtil.queryField = queryField; //所有属性表需要查询的字段以逗号分隔 + InitStandAttrUtil. queryFieldNames = queryFieldNames; //所有属性表需要查询的字段名以逗号分隔 + InitStandAttrUtil.queryFieldList = queryFieldList; //所有属性表需要查询的字段 + InitStandAttrUtil.selectionFieldList = selectionFieldList; // 属性表下拉选项类型字段 + InitStandAttrUtil.fileFieldList = fileFieldList; // 属性表文件类型字段 + InitStandAttrUtil.clobFieldList = clobFieldList; // 属性表clob类型字段 + InitStandAttrUtil.timeFieldList = timeFieldList; // 属性表日期类型字段 + InitStandAttrUtil.multiTimeFieldList = multiTimeFieldList; // 属性表日期类型字段 + InitStandAttrUtil.numFieldList = numFieldList; // 属性表数字类型字段 + InitStandAttrUtil.standInlandAttrFieldList = standInlandAttrFieldList; + InitStandAttrUtil.standForeignAttrFieldList = standForeignAttrFieldList; + InitStandAttrUtil.selectFieldMap = selectFieldMap; + // 政策属性字段信息 + InitStandAttrUtil.queryFieldLaws = queryFieldLaws; //所有属性表需要查询的字段以逗号分隔 + InitStandAttrUtil.queryFieldNamesLaws = queryFieldNamesLaws; //所有属性表需要查询的字段名以逗号分隔 + InitStandAttrUtil.queryFieldListLaws = queryFieldListLaws; //所有属性表需要查询的字段 + InitStandAttrUtil.selectionFieldListLaws = selectionFieldListLaws; // 属性表下拉选项类型字段 + InitStandAttrUtil.fileFieldListLaws = fileFieldListLaws; // 属性表文件类型字段 + InitStandAttrUtil.clobFieldListLaws = clobFieldListLaws; // 属性表clob类型字段 + InitStandAttrUtil.timeFieldListLaws = timeFieldListLaws; // 属性表日期类型字段 + InitStandAttrUtil.multiTimeFieldListLaws = multiTimeFieldListLaws; // 属性表日期类型字段 + InitStandAttrUtil.numFieldListLaws = numFieldListLaws; // 属性表数字类型字段 + InitStandAttrUtil.lawsInlandAttrFieldList = lawsInlandAttrFieldList; + InitStandAttrUtil.lawsForeignAttrFieldList = lawsForeignAttrFieldList; + InitStandAttrUtil.selectFieldMapLaws = selectFieldMapLaws; + // 企标属性字段信息 + InitStandAttrUtil.queryFieldBuss = queryFieldBuss; //所有属性表需要查询的字段以逗号分隔 + InitStandAttrUtil.queryFieldNamesBuss = queryFieldNamesBuss; //所有属性表需要查询的字段名以逗号分隔 + InitStandAttrUtil.queryFieldListBuss = queryFieldListBuss; //所有属性表需要查询的字段 + InitStandAttrUtil.selectionFieldListBuss = selectionFieldListBuss; // 属性表下拉选项类型字段 + InitStandAttrUtil.fileFieldListBuss = fileFieldListBuss; // 属性表文件类型字段 + InitStandAttrUtil.clobFieldListBuss = clobFieldListBuss; // 属性表clob类型字段 + InitStandAttrUtil.timeFieldListBuss = timeFieldListBuss; // 属性表日期类型字段 + InitStandAttrUtil.multiTimeFieldListBuss = multiTimeFieldListBuss; // 属性表日期类型字段 + InitStandAttrUtil.numFieldListBuss = numFieldListBuss; // 属性表数字类型字段 + InitStandAttrUtil.bussAttrFieldList = bussAttrFieldList; + InitStandAttrUtil.selectFieldMapBuss = selectFieldMapBuss; + } + + /*** + * @Description: 修改字段属性 + * @Author: yangxuenan + * @Date: 2020/8/18 9:19 + * @Param: [] + * @Return: void + */ + public String updateStandAttrDetails (SarStandAttrDetails sarStandAttrDetailsEO) { + // 查询修改数据原信息 + SarStandAttrDetails oldDetails = dao.selectById(sarStandAttrDetailsEO.getId()); + //验证属性名称是否已存在 + SarStandAttrDetailsEOPage detailsEOPage = new SarStandAttrDetailsEOPage(); + detailsEOPage.setNotId(sarStandAttrDetailsEO.getId()); + detailsEOPage.setAttrField(null); + detailsEOPage.setSarType(sarStandAttrDetailsEO.getSarType()); + detailsEOPage.setAttrName(sarStandAttrDetailsEO.getAttrName()); + int countName = dao.queryByCount(detailsEOPage); + if (countName > 0) { + return "属性名称已存在"; + } + // 修改属性表字段(当前仅允许修改长度) + Long oldLen = oldDetails.getAttrLen(); + Long newLen = sarStandAttrDetailsEO.getAttrLen(); + if (oldLen > newLen) { + return "修改字段长度不能小于原长度"; + } else if (oldLen < newLen) { + String fieldInfo = ""; + String attrType = sarStandAttrDetailsEO.getAttrType(); + String sarType = sarStandAttrDetailsEO.getSarType(); + String attrField = sarStandAttrDetailsEO.getAttrField(); +// if (StandAttrTypeEnum.INPUT_STR.getValue().equals(attrType) || StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType) || StandAttrTypeEnum.FILE.getValue().equals(attrType)) { +// fieldInfo = "(" + attrField + " VARCHAR2(" + String.valueOf(newLen) + " char))"; +// } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { +// fieldInfo = "(" + attrField + " NUMBER(" + String.valueOf(newLen) + "))"; +// } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { +// fieldInfo = "(" + attrField + " DATE)"; +// } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType)) { +// fieldInfo = "(" + attrField + " CLOB(" + String.valueOf(newLen) + "))"; +// } +// if (standTypeList.contains(sarType)) { +// sarStandAttrInfoEOService.updateAttrLen(fieldInfo); +// } else if (lawsTypeList.contains(sarType)) { +// sarLawsAttrInfoEOService.updateAttrLen(fieldInfo); +// } else if (SarTypeEnum.BUSS.getValue().equals(sarType)) { +// sarBussStandAttrInfoEOService.updateAttrLen(fieldInfo); +// } + } + // 修改属性详细信息表 + sarStandAttrDetailsEO.setModifyTime(new Date()); + int countSuc = dao.updateById(sarStandAttrDetailsEO); + if (countSuc > 0) { + return "success"; + } else { + return "error"; + } + } + + /*** + * @Description: 删除字段属性 + * @Author: yangxuenan + * @Date: 2020/8/18 9:19 + * @Param: [ids] + * @Return: java.lang.String + */ + public String deleteByIds (String ids,String sarType) { + String resultMsg = ""; + //查询所有字段名 + String[] idArr = ids.split(","); + SarStandAttrDetailsEOPage page = new SarStandAttrDetailsEOPage(); + page.setIdList(idArr); + List getList = dao.queryByList(page); + if (getList != null && !getList.isEmpty()) { + String columnNames = ""; + for (SarStandAttrDetails detailsEO : getList) { + columnNames += detailsEO.getAttrField() + ","; + } + columnNames = " " + columnNames.substring(0,columnNames.length()-1) + " "; + //删除属性表字段 sarLawsAttrInfoDao.alterLawsAttr(fieldInfo); + if (standTypeList.contains(sarType)) { + sarStandAttrInfoEODao.deleteStandAttr(columnNames); + } else if (lawsTypeList.contains(sarType)) { + sarLawsAttrInfoDao.deleteLawsAttr(columnNames); + } else if (SarTypeEnum.BUSS.getValue().equals(sarType)) { +// sarBussStandAttrInfoEOService.deleteStandAttr(columnNames); + } + } + //删除属性信息详情表数据 + List idList = Arrays.asList(idArr); + int countSuc = dao.deleteBatchIds(idList); + if (countSuc > 0) { + return "success"; + } else { + return "error"; + } + } + + public List selectFileFieldForSel(String attrField){ + return dao.selectFileFieldForSel(attrField); + } + public List selectFileFieldForSel1(String attrField){ + return dao.selectFileFieldForSel1(attrField); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/controller/SarStandAttrInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/controller/SarStandAttrInfoController.java new file mode 100644 index 00000000..09a2baae --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/controller/SarStandAttrInfoController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarStandAttrInfo.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-01 +*/ +@RestController +@Api(description = "|SarStandAttrInfo|") +@RequestMapping("/${restPath}/SarStandAttrInfo/sar-stand-attr-info") +public class SarStandAttrInfoController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/dao/SarStandAttrInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/dao/SarStandAttrInfoDao.java new file mode 100644 index 00000000..5eb588a9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/dao/SarStandAttrInfoDao.java @@ -0,0 +1,44 @@ +package com.adc.da.slrs.sarStandAttrInfo.dao; + +import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Repository +public interface SarStandAttrInfoDao extends BaseMapper { + + void alterStandAttr(@Param("fieldInfo") String fieldInfo); + + void deleteStandAttr(@Param("fieldInfo") String fieldInfo); + + void updateAttrLen(@Param("fieldInfo") String fieldInfo); + + Integer selectStandAttrColumn(@Param("columnName") String columnName); + + Map selectStandFieldAndData(@Param("fieldInfo") String fieldInfo, @Param("standId") String standId); + + List> selectStandFieldAndDataListMap(@Param("fieldInfo") String fieldInfo, @Param("ids") List ids); + + int insertStandAttr(@Param("fieldInfo") String fieldInfo, @Param("fieldValue") String fieldValue); + + int deleteStandAttrByStandId(@Param("standId") String standId); + + int updateStandInfo(@Param("standId") String standId, @Param("field") String field, @Param("value") String value); + + String selectFieldValByStandId(@Param("field") String field, @Param("standId") String standId); + + List selectFieldValByContainsVal(@Param("field") String field, @Param("value") String value, @Param("standIds") List standIds); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/entity/SarStandAttrInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/entity/SarStandAttrInfo.java new file mode 100644 index 00000000..146b2b83 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/entity/SarStandAttrInfo.java @@ -0,0 +1,242 @@ +package com.adc.da.slrs.sarStandAttrInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandAttrInfo对象", description="") +public class SarStandAttrInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableField("ID") + private String id; + + @ApiModelProperty(value = "标准基础表主键") + @TableField("STAND_ID") + private String standId; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private Date modifyTime; + + @ApiModelProperty(value = "归口管理部门") + @TableField("GKDW") + private String gkdw; + + @ApiModelProperty(value = "我司参与深度") + @TableField("CYSD") + private String cysd; + + @ApiModelProperty(value = "新车型实施日期(文本)") + @TableField("XCXSSRQ") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String xcxssrq; + + @ApiModelProperty(value = "在产车实施日期(文本)") + @TableField("ZCCSSRQ") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String zccssrq; + + @ApiModelProperty(value = "标签") + @TableField("GXHBQ") + private String gxhbq; + + @ApiModelProperty(value = "中国认证类型") + @TableField("ZGRZLX") + private String zgrzlx; + + @ApiModelProperty(value = "草案") + @TableField("CA") + private String ca; + + @ApiModelProperty(value = "征求意见稿") + @TableField("ZQYJG") + private String zqyjg; + + @ApiModelProperty(value = "送审稿") + @TableField("SSG") + private String ssg; + + @ApiModelProperty(value = "报批稿") + @TableField("BPG") + private String bpg; + + @ApiModelProperty(value = "采购部门") + @TableField("CGBM") + private String cgbm; + + @ApiModelProperty(value = "发布稿(必读)") + @TableField("FBGBJBD") + private String fbgbjbd; + + @ApiModelProperty(value = "增补件(必读)") + @TableField("ZBJBD") + private String zbjbd; + + @ApiModelProperty(value = "责任部门") + @TableField("ZRBM") + private String zrbm; + + @ApiModelProperty(value = "法规维护人") + @TableField("FGWHR") + private String fgwhr; + + @ApiModelProperty(value = "代替标准号") + @TableField("DTBJH") + private String dtbjh; + + @ApiModelProperty(value = "引用标准") + @TableField("YYBJ") + private String yybj; + + @ApiModelProperty(value = "被引用标准") + @TableField("BYYBJ") + private String byybj; + + @ApiModelProperty(value = "相关流程") + @TableField("XGLC") + private String xglc; + + @ApiModelProperty(value = "参会记录") + @TableField("CHJL") + private String chjl; + + @TableField("XCXSSRQXM") + private String xcxssrqxm; + + @TableField("ZCCSSRQXM") + private String zccssrqxm; + + @TableField("EOPSSRQXM") + private String eopssrqxm; + + @ApiModelProperty(value = "采标程度") + @TableField("CBCD") + private String cbcd; + + @TableField("NRDBZFGQD") + private String nrdbzfgqd; + + @ApiModelProperty(value = "实施日期(标准文本)") + @TableField("SSRQ") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String ssrq; + + @ApiModelProperty(value = "实施日期(国际)") + @TableField(exist=false) + private String ssrqgj; + + @ApiModelProperty(value = "新车型实施日期(国家)") + @TableField(exist=false) + private String xcxssrqgj; + + @ApiModelProperty(value = "在产车实施日期(国家)") + @TableField(exist=false) + private String zccssrqgj; + + @ApiModelProperty(value = "修改单") + @TableField("XGD") + private String xgd; + + @ApiModelProperty(value = "解读文件") + @TableField("JDWJ") + private String jdwj; + + @ApiModelProperty(value = "关联文件") + @TableField("GLWJ") + private String glwj; + + @ApiModelProperty(value = "我司署名人") + @TableField("WSSMR") + private String wssmr; + + @ApiModelProperty(value = "能源类型") + @TableField("NYLX") + private String nylx; + + @ApiModelProperty(value = "适用产品线") + @TableField("SYCPX") + private String sycpx; + + @ApiModelProperty(value = "适用认证") + @TableField("SYRZ") + private String syrz; + + @ApiModelProperty(value = "责任工程师") + @TableField("ZRGCS") + private String zrgcs; + + @ApiModelProperty(value = "关联模块--卡车VPPS编码") + @TableField("KCCVPPSBM") + private String kccvppsbm; + + @ApiModelProperty(value = "关联模块--卡车vpps中文名称") + @TableField("KCCVPPSCN") + private String kccvppscn; + + @ApiModelProperty(value = "模块结构单元变型号") + @TableField("DYBXH") + private String dybxh; + + @ApiModelProperty(value = "模块结构单元名称") + @TableField("DYMC") + private String dymc; + + @ApiModelProperty(value = "关联模块--乘用车VPPS编码") + @TableField("CYCVPPSBM") + private String cycvppsbm; + + @ApiModelProperty(value = "关联模块--乘用车vpps中文名称") + @TableField("CYCVPPSCN") + private String cycvppscn; + + @ApiModelProperty(value = "勘误件") + @TableField("KWJ") + private String kwj; + + @ApiModelProperty(value = "体系类别") + @TableField("TXLB") + private String txlb; + + @ApiModelProperty(value = "体系类别") + @TableField("BDTBZH") + private String bdtbzh; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/service/ISarStandAttrInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/service/ISarStandAttrInfoService.java new file mode 100644 index 00000000..c25044c5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/service/ISarStandAttrInfoService.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarStandAttrInfo.service; + +import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarStandAttrInfoService extends IService { + + String selectFieldValByStandId(String field,String standId); + + int updateStandInfo(String standId,String field,String value); + + Map getBussAttrInfo(String standId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/service/impl/SarStandAttrInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/service/impl/SarStandAttrInfoServiceImpl.java new file mode 100644 index 00000000..22848999 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandAttrInfo/service/impl/SarStandAttrInfoServiceImpl.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.sarStandAttrInfo.service.impl; + +import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandAttrInfo.service.ISarStandAttrInfoService; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarStandAttrInfoServiceImpl extends ServiceImpl implements ISarStandAttrInfoService { + + @Autowired + private SarStandAttrInfoDao dao; + + @Override + public String selectFieldValByStandId (String field,String standId) { + return dao.selectFieldValByStandId(field,standId); + } + + @Override + public int updateStandInfo(String standId,String field,String value){ + return dao.updateStandInfo(standId,field,value); + } + + @Override + public Map getBussAttrInfo(String standId){ + String fieldInfo = InitStandAttrUtil.queryField; + return this.baseMapper.selectStandFieldAndData(fieldInfo,standId); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/controller/SarStandFileController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/controller/SarStandFileController.java new file mode 100644 index 00000000..55b56335 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/controller/SarStandFileController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarStandFile.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(description = "|SarStandFile|") +@RequestMapping("/sarStandFile/sar-stand-file") +public class SarStandFileController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/dao/SarStandFileDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/dao/SarStandFileDao.java new file mode 100644 index 00000000..1ffb688c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/dao/SarStandFileDao.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.sarStandFile.dao; + +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Repository +public interface SarStandFileDao extends BaseMapper { + + List selectFileByStandId(String lawsId); + + List selectFileByAttId(String attId); + + List selectFileByResId(SarStandFile sarStandFileEO); + + List selectFileByStandIdAndId(SarStandFile sarStandFileEO); + + List selectFileMsgByAttId(String attId); + + int deleteByStandId(String standId); + + int insertForeach(List list); //批量新增 + + int insertSelective(SarStandFile sarStandFile); + + int updateByPrimaryKeySelective(SarStandFile sarStandFile); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/entity/SarStandFile.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/entity/SarStandFile.java new file mode 100644 index 00000000..45a89d18 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/entity/SarStandFile.java @@ -0,0 +1,114 @@ +package com.adc.da.slrs.sarStandFile.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Transient; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandFile对象", description="") +public class SarStandFile extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "标准文件分类") + @TableField("STAND_FILE_CLASSIFY") + private String standFileClassify; + + @ApiModelProperty(value = "文件主键") + @TableField("ATT_ID") + private String attId; + + @ApiModelProperty(value = "文件名称") + @TableField("FILE_NAME") + private String fileName; + + @ApiModelProperty(value = "文件后缀") + @TableField("FILE_SUFFIX") + private String fileSuffix; + + @ApiModelProperty(value = "使用模式(SOURCE_FILE原文件,WEB_FILE转换后文件)") + @TableField("USE_MODEL") + private String useModel; + + @ApiModelProperty(value = "加密密码") + @TableField("PASSWORD") + private String password; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "转换原文件id") + @TableField("ORI_ATT_ID") + private String oriAttId; + + @Transient + @TableField(exist = false) + private String resId; + @Transient + @TableField(exist = false) + private Integer pageCount; + @Transient + @TableField(exist = false) + private String fileOldName; + @Transient + @TableField(exist = false) + private List idList = new ArrayList<>(); + @Transient + @TableField(exist = false) + private String standFileClassifyShow; + @Transient + @TableField(exist = false) + private String standNumber; + @Transient + @TableField(exist = false) + private String standName; + @Transient + @TableField(exist = false) + private String sarType; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/service/ISarStandFileService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/service/ISarStandFileService.java new file mode 100644 index 00000000..428bf528 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/service/ISarStandFileService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandFile.service; + +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarStandFileService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/service/impl/SarStandFileServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/service/impl/SarStandFileServiceImpl.java new file mode 100644 index 00000000..ef8b748e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandFile/service/impl/SarStandFileServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarStandFile.service.impl; + +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import com.adc.da.slrs.sarStandFile.dao.SarStandFileDao; +import com.adc.da.slrs.sarStandFile.service.ISarStandFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class SarStandFileServiceImpl extends ServiceImpl implements ISarStandFileService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaAllController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaAllController.java new file mode 100644 index 00000000..10b03d84 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaAllController.java @@ -0,0 +1,280 @@ +package com.adc.da.slrs.sarStandIdea.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandIdea.dao.SarPublicIdeaAllDao; +import com.adc.da.slrs.sarStandIdea.entity.*; +import com.adc.da.slrs.sarStandIdea.service.Impl.SarPublicIdeaAllServiceImpl; +import com.adc.da.utils.removeHtml.RemoveHtml; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.google.common.collect.Lists; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(description = "|SarPublicIdeaAll|") +@RequestMapping("/${restPath}/slrs/sar-public-idea-all") +public class SarPublicIdeaAllController extends BaseController { + + @Autowired + private SarPublicIdeaAllServiceImpl sarPublicIdeaAllImpl; + @Autowired + private SarPublicIdeaAllDao sarPublicIdeaAllDao; + + + @ApiOperation(value = "根据ID查询ID下全部意见") + @GetMapping("/getAllStandById") + public List getAllStandById(@RequestParam("ideaId") String ideaId){ + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("idea_id",ideaId); + return sarPublicIdeaAllDao.selectList(wrapper); + } + + @ApiOperation(value = "查询全部意见") + @GetMapping("/getAllStand") + public ResponseMessage getAllStand(DetAllStandDto detAllStandDto){ + IPage publicList =sarPublicIdeaAllImpl.selectAll(detAllStandDto); + return Result.success("200",publicList); + } + + @ApiOperation(value = "查询流程汇总-公共意见") + @GetMapping("/getPublicIdea") + public ResponseMessage getPublicIdea(@Param("unique") String unique){ + List publicList =sarPublicIdeaAllDao.getPublicIdea(unique); + return Result.success("200",publicList); + } + + + @ApiOperation(value = "查询全部意见") + @GetMapping("/checkIsShow") + public ResponseMessage checkIsShow(DetAllStandDto detAllStandDto){ + String publicList =sarPublicIdeaAllImpl.checkIsShow(detAllStandDto); + return Result.success("200",publicList); + } + + @ApiOperation(value = "增加意见") + @PostMapping("/insetStand") + public ResponseMessage addAllStand(SarPublicIdeaAll sar){ + String src=sarPublicIdeaAllImpl.add(sar); + return Result.success("200",src); + + } + + @ApiOperation(value = "增加意见") + @PostMapping("/saveBatch") + public ResponseMessage saveBatch(@RequestBody List sar){ + boolean flag=sarPublicIdeaAllImpl.saveBatch(sar); + return Result.success("200",flag); + + } + + + @ApiOperation(value = "增加意见") + @PostMapping("/saveBatchByWk") + public ResponseMessage saveBatchByWk(@RequestBody List sar){ + boolean flag=sarPublicIdeaAllImpl.saveOrUpdateBatch(sar); + return Result.success("200",flag); + + } + + @ApiOperation(value = "删除意见") + @GetMapping("/deleteStand") + public ResponseMessage deleteStand(DelStandDto delStandDto){ + + String src=sarPublicIdeaAllImpl.delete(delStandDto); + return Result.success("200",src); + } + + @ApiOperation(value = "修改意见") + @PostMapping("/updateStand") + public ResponseMessage updateStand(SarPublicIdeaAll sarPublicIdeaAll,String autUserId){ + String src=sarPublicIdeaAllImpl.updateById(sarPublicIdeaAll,autUserId); + return Result.success("200",src); + } + + @ApiOperation(value = "导出全部意见") + @GetMapping("/tuallStand") + public void getAllStand(HttpServletResponse response,@RequestParam(value = "cid")String cid,@RequestParam(value = "type",required = false)String type){ + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String textName=""; + if ("1".equals(type)){ + textName= "流程意见详情"; + }else { + textName="意见详情"; + } + Map map=new HashMap<>(); + map.put("1","上报"); + map.put("2","处理后上报"); + map.put("3","不上报"); + String fileName = URLEncoder.encode(textName, "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List data=new ArrayList<>(); + if (!StringUtils.isEmpty(cid)){ +// if (null!=type) { + data = sarPublicIdeaAllDao.getPublicAllIdea(cid, type); +// }else { +// data = sarPublicIdeaAllDao.getPublicAllIdeaExport(cid,type); +// } + } + List standExcel=new ArrayList<>(); + List standExcel2=new ArrayList<>(); + int i=0; + for (SarPublicIdeaAll sarPublicIdeaAll:data){ + i++; + if ("1".equals(type)) { + GetExcelDto2 getExcelDto = GetExcelDto2.builder() + .partCode(sarPublicIdeaAll.getPartCode()) + .oldText(RemoveHtml.getResultsFromHtml(sarPublicIdeaAll.getOldText())) + .newText(RemoveHtml.getResultsFromHtml(sarPublicIdeaAll.getNewText())) + .reason(sarPublicIdeaAll.getReason()) + .partName(sarPublicIdeaAll.getChapterName()) + .num(String.valueOf(i)) +// .userName(sarPublicIdeaAll.getUserName()) +// .deptName(sarPublicIdeaAll.getDeptName()) +// .state(map.get(sarPublicIdeaAll.getState())) +// .cause(sarPublicIdeaAll.getCause()) + .build(); + standExcel2.add(getExcelDto); + }else { + GetExcelDto getExcelDto = GetExcelDto.builder() + .partCode(sarPublicIdeaAll.getPartCode()) + .oldText(RemoveHtml.getResultsFromHtml(sarPublicIdeaAll.getOldText())) + .newText(RemoveHtml.getResultsFromHtml(sarPublicIdeaAll.getNewText())) + .reason(sarPublicIdeaAll.getReason()) + .userName(sarPublicIdeaAll.getUserName()) + .deptName(sarPublicIdeaAll.getDeptName()) + .state(map.get(sarPublicIdeaAll.getState())) + .cause(sarPublicIdeaAll.getCause()) + .sourceType(sarPublicIdeaAll.getSourceType()) + .partName(sarPublicIdeaAll.getChapterName()) + .num(String.valueOf(i)) + .build(); + standExcel.add(getExcelDto); + } + } + + List> headList=new ArrayList>(); + headList.add(Lists.newArrayList("序号")); + headList.add(Lists.newArrayList("章节编号")); + headList.add(Lists.newArrayList("章节名称")); + headList.add(Lists.newArrayList("修改意见内容(包括理由或依据)","修改前")); + headList.add(Lists.newArrayList("修改意见内容(包括理由或依据)","修改后")); + headList.add(Lists.newArrayList("修改意见内容(包括理由或依据)","修改理由")); + if ("1".equals(type)) { + EasyExcel.write(response.getOutputStream(), GetExcelDto2.class).head(headList).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(standExcel2); + }else { + headList.add(Lists.newArrayList("提出部门")); + headList.add(Lists.newArrayList("提出人")); + headList.add(Lists.newArrayList("处理意见")); + headList.add(Lists.newArrayList("原因")); + headList.add(Lists.newArrayList("来源")); + EasyExcel.write(response.getOutputStream(), GetExcelDto.class).head(headList).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(standExcel); + } + } catch (Exception e) { + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + try { + response.getWriter().println(JSON.toJSONString(Result.error())); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + } + + } + + @ApiOperation(value = "导出全部意见-标准意见征求流程-意见处理节点") + @PostMapping("/tuallStandYJCL") + public void getAllStandYJCL(HttpServletResponse response, @RequestBody Map params){ + try { + JSONArray jsonArray = JSON.parseArray(params.get("json")); + List data = sarPublicIdeaAllImpl.getPublicAllIdeaYJCL(jsonArray); + + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String textName="流程意见详情"; + + Map map=new HashMap<>(); + map.put("1","上报"); + map.put("2","处理后上报"); + map.put("3","不上报"); + String fileName = URLEncoder.encode(textName, "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + List standExcel=new ArrayList<>(); + int i=0; + for (SarPublicIdeaAll sarPublicIdeaAll:data){ + i++; + GetExcelDto getExcelDto = GetExcelDto.builder() + .partCode(sarPublicIdeaAll.getPartCode()) + .oldText(RemoveHtml.getResultsFromHtml(sarPublicIdeaAll.getOldText())) + .newText(RemoveHtml.getResultsFromHtml(sarPublicIdeaAll.getNewText())) + .reason(sarPublicIdeaAll.getReason()) + .userName(sarPublicIdeaAll.getUserName()) + .deptName(sarPublicIdeaAll.getDeptName()) + .state(map.get(sarPublicIdeaAll.getState())) + .cause(sarPublicIdeaAll.getCause()) + .sourceType(sarPublicIdeaAll.getSourceType()) + .partName(sarPublicIdeaAll.getChapterName()) + .num(String.valueOf(i)) + .build(); + standExcel.add(getExcelDto); + } + + List> headList=new ArrayList>(); + headList.add(Lists.newArrayList("序号")); + headList.add(Lists.newArrayList("章节编号")); + headList.add(Lists.newArrayList("章节名称")); + headList.add(Lists.newArrayList("修改意见内容(包括理由或依据)","修改前")); + headList.add(Lists.newArrayList("修改意见内容(包括理由或依据)","修改后")); + headList.add(Lists.newArrayList("修改意见内容(包括理由或依据)","修改理由")); + headList.add(Lists.newArrayList("提出部门")); + headList.add(Lists.newArrayList("提出人")); + headList.add(Lists.newArrayList("处理意见")); + headList.add(Lists.newArrayList("原因")); + headList.add(Lists.newArrayList("来源")); + EasyExcel.write(response.getOutputStream(), GetExcelDto.class).head(headList).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(standExcel); + + } catch (Exception e) { + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + try { + response.getWriter().println(JSON.toJSONString(Result.error())); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaController.java new file mode 100644 index 00000000..efdd9481 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/controller/SarPublicIdeaController.java @@ -0,0 +1,111 @@ +package com.adc.da.slrs.sarStandIdea.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdeaAll; +import com.adc.da.slrs.sarStandIdea.entity.SeByoDto; +import com.adc.da.slrs.sarStandIdea.service.ISarPublicIdeaAllService; +import com.adc.da.slrs.sarStandIdea.service.ISarPublicIdeaService; +import com.adc.da.slrs.sarStandIdea.service.Impl.SarPublicIdeaServiceImpl; +import com.adc.da.sys.util.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdea; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(description = "|SarPublicIdea|") +@RequestMapping("/${restPath}/slrs/sar-public-idea") +public class SarPublicIdeaController extends BaseController { + + @Autowired + private ISarPublicIdeaService sarPublicIdeaService; + + @Autowired + private ISarPublicIdeaAllService sarPublicIdeaAllService; + + @ApiOperation(value = "分页查询") + @GetMapping("/SelectAllPage") + public ResponseMessage selectAllPage(@RequestParam(defaultValue="1")Integer page,@RequestParam(defaultValue="10")Integer size,String categorg, String cname, + String start, String end,String type){ + Date startdate = null; + Date enddate = null; + SimpleDateFormat formater = new SimpleDateFormat(); + formater.applyPattern("yyyy-MM-dd"); + try { + if (start!=null){ + startdate = formater.parse(start); + } + if (end!=null){ + enddate=formater.parse(end); + } + } catch (ParseException e) { + e.printStackTrace(); + } + IPage Publiclist =sarPublicIdeaService.selectAllP(page,size,categorg,cname,startdate,enddate,type); + return Result.success(Publiclist); + } + + @ApiOperation(value = "动态查询") + @GetMapping("/SelectByo") + public ResponseMessage selectByDynamic(SeByoDto seByoDto){ + IPage publicList =sarPublicIdeaService.selectAllDynamic(seByoDto); + return Result.success(publicList); + } + + @ApiOperation(value = "发起标准征求意见流程后自动公开征求意见") + @PostMapping("/addSarPublicIdea") + public ResponseMessage addSarPublicIdea(@RequestBody SarPublicIdea sarPublicIdea){ + try{ +// Calendar c = Calendar.getInstance(); +// c.setTime(sarPublicIdea.getStartTime()); +// c.add(Calendar.DAY_OF_MONTH, 1);// 今天+1天 +// sarPublicIdea.setStartTime(c.getTime()); +// + Calendar c2 = Calendar.getInstance(); + c2.setTime(sarPublicIdea.getEndTime()); + c2.add(Calendar.DAY_OF_MONTH, +1);// 今天+1天 + sarPublicIdea.setEndTime(c2.getTime()); + + sarPublicIdeaService.save(sarPublicIdea); + }catch(Exception e){ + return Result.error(); + } + return Result.success(); + } + + + @ApiOperation(value = "动态查询") + @GetMapping("/deletePublicIdea") + public ResponseMessage delete(@RequestParam("id") String id){ + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.eq("uniques",id); + SarPublicIdea sarPublicIdea=sarPublicIdeaService.getOne(wrapper); + sarPublicIdeaService.remove(wrapper); + QueryWrapper wrapper1=new QueryWrapper<>(); + wrapper1.eq("idea_id",sarPublicIdea.getId()); + sarPublicIdeaAllService.remove(wrapper1); + return Result.success(); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/dao/SarPublicIdeaAllDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/dao/SarPublicIdeaAllDao.java new file mode 100644 index 00000000..2f4ffad1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/dao/SarPublicIdeaAllDao.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.sarStandIdea.dao; + +import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdeaAll; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Mapper +public interface SarPublicIdeaAllDao extends BaseMapper { + + List getPublicIdea(@Param("unique")String unique); + + List getAllDataByIdea(@Param("page")Integer page,@Param("size")Integer size, @Param("ideaId")String ideaId); + + Integer getAllDataByIdeaCount( @Param("ideaId")String ideaId); + + List getPublicAllIdea(@Param("cid") String cid,@Param("type")String type); + + List getPublicAllIdeaExport(@Param("cid") String cid,@Param("type")String type); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/dao/SarPublicIdeaDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/dao/SarPublicIdeaDao.java new file mode 100644 index 00000000..027b2e08 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/dao/SarPublicIdeaDao.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.sarStandIdea.dao; + + +import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdea; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Mapper +public interface SarPublicIdeaDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/DelStandDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/DelStandDto.java new file mode 100644 index 00000000..4cc27d19 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/DelStandDto.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarStandIdea.entity; + +public class DelStandDto { + private String id; + private String userId; + private String autUserId; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getAutUserId() { + return autUserId; + } + + public void setAutUserId(String autUserId) { + this.autUserId = autUserId; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/DetAllStandDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/DetAllStandDto.java new file mode 100644 index 00000000..d18ba855 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/DetAllStandDto.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.sarStandIdea.entity; + +import lombok.Data; + +@Data +public class DetAllStandDto { + Integer page; + Integer size; + String cid; + String userId; + String endTime; + String Account; + String ideaId; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/GetExcelDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/GetExcelDto.java new file mode 100644 index 00000000..a38d95d5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/GetExcelDto.java @@ -0,0 +1,52 @@ +package com.adc.da.slrs.sarStandIdea.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentLoopMerge; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * //用于导出 + * + * @author ZhangZhiYuan + * @date 2021-07-14 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@HeadRowHeight(20) +@ColumnWidth(15) +public class GetExcelDto { + + private String num; + // @ExcelProperty("章节编号") + private String partCode; + + private String partName; +// @ExcelProperty("修改意见内容(包括理由或依据)") +// private String content; + private String oldText; + + private String newText; + + private String reason; +// @ExcelProperty("提出部门") + private String deptName; +// @ExcelProperty("提出人") + private String userName; + + private String state; + + private String cause; + + private String sourceType; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/GetExcelDto2.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/GetExcelDto2.java new file mode 100644 index 00000000..a2de4986 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/GetExcelDto2.java @@ -0,0 +1,47 @@ +package com.adc.da.slrs.sarStandIdea.entity; + +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * //用于导出 + * + * @author ZhangZhiYuan + * @date 2021-07-14 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@HeadRowHeight(20) +@ColumnWidth(15) +public class GetExcelDto2 { + + private String num; +// @ExcelProperty("章节编号") + private String partCode; + + private String partName; +// @ExcelProperty("修改意见内容(包括理由或依据)") +// private String content; + private String oldText; + + private String newText; + + private String reason; +//// @ExcelProperty("提出部门") +// private String deptName; +//// @ExcelProperty("提出人") +// private String userName; +// +// private String state; +// +// private String cause; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdea.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdea.java new file mode 100644 index 00000000..a3609dcd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdea.java @@ -0,0 +1,79 @@ +package com.adc.da.slrs.sarStandIdea.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import java.time.LocalDate; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("sar_public_idea") +@ApiModel(value="SarPublicIdea对象", description="") +public class SarPublicIdea extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("id") + private String id; + + @TableField("category") + private String category; + + @TableField("cid") + private String cid; + + @TableField("cname") + private String cname; + + @TableField("start_time") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date startTime; + + @TableField("end_time") + @DateTimeFormat(pattern="yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date endTime; + + @TableField("category_flag") + private String categoryFlag; + + @TableField("stand_id") + private String standId; + + @TableField("stand_type") + private String standType; + + @TableField("uniques") + private String uniques; + + @TableField("files") + private String files; + + @TableField("files_name") + private String filesName; + + @TableField("wkfiles") + private String wkfiles; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaAll.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaAll.java new file mode 100644 index 00000000..995dffb7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaAll.java @@ -0,0 +1,85 @@ +package com.adc.da.slrs.sarStandIdea.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("sar_public_idea_all") +@ApiModel(value="SarPublicIdeaAll对象", description="") +public class SarPublicIdeaAll extends BaseEntity { + + @TableId + private String id; + + @TableField("cid") + private String cid; + + @TableField("part_code") + private String partCode; + + @TableField("content") + private String content; + + @TableField("user_id") + private String userId; + + @TableField("user_name") + private String userName; + + @TableField("dept_id") + private String deptId; + + @TableField("dept_name") + private String deptName; + + @TableField("reason") + private String reason; + + @TableField("old_text") + private String oldText; + + @TableField("new_text") + private String newText; + + @TableField("idea_id") + private String ideaId; + + public static final String CID = "cid"; + + @TableField("chapter_name") + private String chapterName; + + @TableField(exist = false) + private String department; + + @TableField("wk_flag") + private String wkFlag; + + @TableField("state") + private String state; + + @TableField("cause") + private String cause; + + @TableField("source_type") + private String sourceType; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaAllSUD.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaAllSUD.java new file mode 100644 index 00000000..4226d043 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaAllSUD.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.sarStandIdea.entity; + +import lombok.Data; + +/** + * //用于增删查改的判断 + * + * @author ZhangZhiYuan + * @date 2021-07-27 + */ +@Data +public class SarPublicIdeaAllSUD extends SarPublicIdeaAll{ + public Integer ideaKey; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaDto.java new file mode 100644 index 00000000..b9243c90 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SarPublicIdeaDto.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarStandIdea.entity; + +import java.util.Date; + +/** + * //用于查询标准关联信息 + * + * @author ZhangZhiYuan + * @date 2021-07-27 + */ +public class SarPublicIdeaDto { + private String id; + private String category; + private String cid; + private String cname; + private Date startTime; + private Date endTime; + private String categoryFlag; + private String standId; +// private String ; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SeByoDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SeByoDto.java new file mode 100644 index 00000000..48623687 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/entity/SeByoDto.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.sarStandIdea.entity; + + +public class SeByoDto { + Integer page; + Integer size; + String category; + String cname; + String startTime; + String endTime; + + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getCname() { + return cname; + } + + public void setCname(String cname) { + this.cname = cname; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaAllService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaAllService.java new file mode 100644 index 00000000..f46b571f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaAllService.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.sarStandIdea.service; + + +import com.adc.da.slrs.sarStandIdea.entity.DelStandDto; +import com.adc.da.slrs.sarStandIdea.entity.DetAllStandDto; +import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdeaAll; +import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdeaAllSUD; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarPublicIdeaAllService extends IService { + + + IPage selectAll(DetAllStandDto detAllStandDto); + String add(SarPublicIdeaAll sarPublicIdeaAll); + String updateById(SarPublicIdeaAll sarPublicIdeaAll, String autUserid); + String delete(DelStandDto delStandDto); + String del(String id); + String checkIsShow(DetAllStandDto detAllStandDto); + List getPublicAllIdeaYJCL(JSONArray info); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaService.java new file mode 100644 index 00000000..886d4dc4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/ISarPublicIdeaService.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.sarStandIdea.service; + + + +import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdea; +import com.adc.da.slrs.sarStandIdea.entity.SeByoDto; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Date; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarPublicIdeaService extends IService { + + String add(SarPublicIdea sarPublicIdea); + IPage selectAllP(Integer page, Integer size, String categorg, String cname, Date startdate, Date enddate, String type); + IPage selectAllDynamic(SeByoDto seByoDto); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaAllServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaAllServiceImpl.java new file mode 100644 index 00000000..b837c7e3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaAllServiceImpl.java @@ -0,0 +1,190 @@ +package com.adc.da.slrs.sarStandIdea.service.Impl; + + +import com.adc.da.slrs.sarLawsDetailedList.Util.BeanConverUtil; +import com.adc.da.slrs.sarStandIdea.dao.SarPublicIdeaAllDao; +import com.adc.da.slrs.sarStandIdea.entity.*; +import com.adc.da.slrs.sarStandIdea.service.ISarPublicIdeaAllService; +import com.adc.da.sys.entity.LoginInfoEO; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class SarPublicIdeaAllServiceImpl extends ServiceImpl implements ISarPublicIdeaAllService { + + @Autowired + private SarPublicIdeaAllDao sarPublicIdeaAllDao; + + + @Override + public IPage selectAll(DetAllStandDto detAllStandDto) { + if (detAllStandDto.getEndTime() != null) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date Time = null; + try { + Time = sdf.parse(detAllStandDto.getEndTime()); + } catch (ParseException e) { + e.printStackTrace(); + } + List sarPublicIdeaAlls=sarPublicIdeaAllDao.getAllDataByIdea(detAllStandDto.getPage(),detAllStandDto.getSize(),detAllStandDto.getIdeaId()); + Integer a=sarPublicIdeaAllDao.getAllDataByIdeaCount(detAllStandDto.getIdeaId()); + Page userIPage=new Page(); + userIPage.setTotal(a); + userIPage.setRecords(sarPublicIdeaAlls); + userIPage.setSize(detAllStandDto.getSize()); + userIPage.setCurrent(detAllStandDto.getPage()); + System.out.println("总条数" + userIPage.getTotal()); + System.out.println("总页数" + userIPage.getPages()); + List list = userIPage.getRecords(); + List list1 = new ArrayList<>(); + List partTwo = new ArrayList<>(); + list.forEach(sarPublicIdeaAll -> { + SarPublicIdeaAllSUD sarPublicIdeaAllSUD=new SarPublicIdeaAllSUD(); + BeanUtils.copyProperties(sarPublicIdeaAll,sarPublicIdeaAllSUD); + if (sarPublicIdeaAll.getUserId().equals(detAllStandDto.getUserId())){ + list1.add(sarPublicIdeaAllSUD); + }else { + partTwo.add(sarPublicIdeaAllSUD); + } + }); + list1.addAll(partTwo); + IPage userIPage1 = new Page<>(); + userIPage1.setPages(userIPage.getPages()); + userIPage1.setSize(userIPage.getSize()); + userIPage1.setTotal(userIPage.getTotal()); + userIPage1.setCurrent(userIPage.getCurrent()); + userIPage1.setRecords(list1); + return userIPage1; + } else { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("CID", detAllStandDto.getCid()); + Page page = new Page<>(detAllStandDto.getPage(), detAllStandDto.getSize()); + IPage userIPage = sarPublicIdeaAllDao.selectPage(page, wrapper); + System.out.println("总条数" + userIPage.getTotal()); + System.out.println("总页数" + userIPage.getPages()); + List list = userIPage.getRecords(); + List list1 = new ArrayList<>(); + List partTwo = new ArrayList<>(); + list.forEach(sarPublicIdeaAll -> { + SarPublicIdeaAllSUD sarPublicIdeaAllSUD=new SarPublicIdeaAllSUD(); + BeanUtils.copyProperties(sarPublicIdeaAll,sarPublicIdeaAllSUD); + if (sarPublicIdeaAll.getUserId().equals(detAllStandDto.getUserId())){ + list1.add(sarPublicIdeaAllSUD); + }else { + partTwo.add(sarPublicIdeaAllSUD); + } + }); + list1.addAll(partTwo); + IPage userIPage1 = new Page<>(); + userIPage1.setPages(userIPage.getPages()); + userIPage1.setSize(userIPage.getSize()); + userIPage1.setTotal(userIPage.getTotal()); + userIPage1.setCurrent(userIPage.getCurrent()); + userIPage1.setRecords(list1); + return userIPage1; + } + } + + + @Override + public String checkIsShow(DetAllStandDto detAllStandDto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date Time = null; + try { + Time = sdf.parse(detAllStandDto.getEndTime()); + } catch (ParseException e) { + e.printStackTrace(); + } + + Date date=new Date(); //取时间 + Calendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.add(calendar.DATE,-1); //把日期往后增加一天,整数 往后推,负数往前移动 + date=calendar.getTime(); //这个时间就是日期往后推一天的结果 + + if (Time.compareTo(date) >= 0) return "0"; + else { + return "1"; + } + } + + @Override + public String add(SarPublicIdeaAll sar) { + sar.setId(UUIDUtils.randomUUID20()); + sarPublicIdeaAllDao.insert(sar); + return "增加成功"; + } + + + @Override + public String updateById(SarPublicIdeaAll sar, String autUserid) { + if (sar.getUserId().equals(autUserid)) { + sarPublicIdeaAllDao.updateById(sar); + return "修改成功"; + } else { + return "修改失败"; + + } + } + + @Override + public String delete(DelStandDto delStandDto) { + if (delStandDto.getUserId().equals(delStandDto.getAutUserId())) { + return del(delStandDto.getId()); + } else { + return "删除失败,不能删除别人的意见"; + } + + } + + @Override + public String del(String id) { + sarPublicIdeaAllDao.deleteById(id); + return "删除成功"; + } + + public List getPublicAllIdeaYJCL(JSONArray info) { + List publicList = new ArrayList<>(); + + for (Object object : info) { + JSONObject jsonObject = (JSONObject) object; + SarPublicIdeaAll sarPublicIdeaAll = new SarPublicIdeaAll(); + sarPublicIdeaAll.setPartCode(jsonObject.getString("chapterNumber")); + sarPublicIdeaAll.setOldText(jsonObject.getString("oldText")); + sarPublicIdeaAll.setNewText(jsonObject.getString("newText")); + sarPublicIdeaAll.setReason(jsonObject.getString("reason")); // 修改理由 + sarPublicIdeaAll.setUserName(jsonObject.getString("responUserName")); + sarPublicIdeaAll.setDeptName(jsonObject.getString("department")); + sarPublicIdeaAll.setState(jsonObject.getString("state")); // 处理意见 + sarPublicIdeaAll.setCause(jsonObject.getString("cause")); // 原因 + sarPublicIdeaAll.setSourceType(jsonObject.getString("sourceType")); + sarPublicIdeaAll.setChapterName(jsonObject.getString("chapterName")); + + publicList.add(sarPublicIdeaAll); + } + return publicList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaServiceImpl.java new file mode 100644 index 00000000..d6213731 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIdea/service/Impl/SarPublicIdeaServiceImpl.java @@ -0,0 +1,145 @@ +package com.adc.da.slrs.sarStandIdea.service.Impl; + + +import com.adc.da.slrs.sarStandIdea.dao.SarPublicIdeaDao; + +import com.adc.da.slrs.sarStandIdea.entity.SarPublicIdea; +import com.adc.da.slrs.sarStandIdea.entity.SeByoDto; +import com.adc.da.slrs.sarStandIdea.service.ISarPublicIdeaService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service("PublicIdeaStandEOService") +public class SarPublicIdeaServiceImpl extends ServiceImpl implements ISarPublicIdeaService { + + @Autowired + private SarPublicIdeaDao sarPublicIdeaDao; + + @Override + public String add(SarPublicIdea sarPublicIdea) { + if (!sarPublicIdea.getId().isEmpty()) { + sarPublicIdea.setId(UUIDUtils.randomUUID10()); + sarPublicIdeaDao.insert(sarPublicIdea); + return "增加成功"; + } + return "增加失败"; + } + + @Override + public IPage selectAllP(Integer p, Integer size, String category, String cname, Date start, Date end, String type) { + QueryWrapper list = new QueryWrapper<>(); + if ("1".equals(type)) { + if (start!=null && end !=null){ + String date1 = (new SimpleDateFormat("yyyy-MM-dd")).format(start); + String date2 = (new SimpleDateFormat("yyyy-MM-dd")).format(end); + + + list.like(StringUtils.isNotEmpty(category), "category", category) + .like(StringUtils.isNotEmpty(cname), "cid", cname) + .ge(start != null, "start_time", date1) + .le(end != null, "end_time", date2) + .orderByDesc("start_time"); + }else if (start!=null){ + String date1 = (new SimpleDateFormat("yyyy-MM-dd")).format(start); + list.like(StringUtils.isNotEmpty(category), "category", category) + .like(StringUtils.isNotEmpty(cname), "cid", cname) +// .le(start != null, "start_time", date1) +// .ge(start != null, "end_time", date1) + + .ge(start != null, "start_time", date1) +// .le(start != null, "end_time", date1) + + .orderByDesc("start_time"); + }else if (end!=null){ + String date2 = (new SimpleDateFormat("yyyy-MM-dd")).format(end); + list.like(StringUtils.isNotEmpty(category), "category", category) + .like(StringUtils.isNotEmpty(cname), "cid", cname) +// .le(end != null, "start_time", date2) +// .ge(end != null, "end_time", date2) + + .le(end != null, "end_time", date2) +// .ge(end != null, "end_time", date2) + + .orderByDesc("start_time"); + }else { + list.like(StringUtils.isNotEmpty(category), "category", category) + .like(StringUtils.isNotEmpty(cname), "cid", cname) + .orderByDesc("start_time"); + } + } else { + String date = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date()); + list.like(StringUtils.isNotEmpty(category), "category", category) + .like(StringUtils.isNotEmpty(cname), "cname", cname) + .ge("end_time", date) + .orderByAsc("end_time"); + } + Page page = new Page<>(p, size); + IPage userIPage = sarPublicIdeaDao.selectPage(page, list); + System.out.println("总条数" + userIPage.getTotal()); + System.out.println("总页数" + userIPage.getPages()); + return userIPage; + } + + /** + * @param seByoDto + * @return + */ + @Override + public IPage selectAllDynamic(SeByoDto seByoDto) { + SarPublicIdea sar = new SarPublicIdea(); + sar.setCategory(seByoDto.getCategory()); + sar.setCname(seByoDto.getCname()); + SimpleDateFormat formater = new SimpleDateFormat(); + formater.applyPattern("yyyy-MM-dd"); + try { + if (seByoDto.getStartTime() != null) { + sar.setStartTime(formater.parse(seByoDto.getStartTime())); + } + if (seByoDto.getEndTime() != null) { + sar.setEndTime(formater.parse(seByoDto.getEndTime())); + } + } catch (ParseException e) { + e.printStackTrace(); + } + QueryWrapper wrapper = new QueryWrapper<>(); + if (sar.getCategory() != null && sar.getCategory().length() != 0) { + wrapper.like("category", sar.getCategory()); + } + if (sar.getCname() != null && sar.getCname().length() != 0) { + wrapper.like("cname", sar.getCname()); + } + if (sar.getStartTime() != null) { + wrapper.le("start_time", sar.getStartTime()); + } + if (sar.getEndTime() != null) { + wrapper.gt("end_time", sar.getEndTime()); + } + + Page page = new Page<>(seByoDto.getPage(), seByoDto.getSize()); + IPage userIPage = sarPublicIdeaDao.selectPage(page, wrapper); + System.out.println("总条数" + userIPage.getTotal()); + System.out.println("总页数" + userIPage.getPages()); + return userIPage; + + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/controller/SarStandIssueControlCauseController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/controller/SarStandIssueControlCauseController.java new file mode 100644 index 00000000..83ed19c1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/controller/SarStandIssueControlCauseController.java @@ -0,0 +1,121 @@ +package com.adc.da.slrs.sarStandIssueControlCause.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.ResponseMessageCodeEnum; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCausePage; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseListVO; +import com.adc.da.slrs.sarStandIssueControlCause.service.ISarStandIssueControlCauseService; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedListVO; +import com.adc.da.slrs.sarStandUnqualified.service.ISarStandUnqualifiedService; +import com.adc.da.slrs.sarStandardsInfo.controller.SarStandardsInfoController; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-16 +*/ +@RestController +@Api(tags = "|重点问题项管控模块-事业部|") +@RequestMapping("/api/sarStandIssueControlCause/sar-stand-issue-control-cause") +public class SarStandIssueControlCauseController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoController.class); + + @Autowired + private ISarStandIssueControlCauseService sarStandIssueControlCauseService; + + + /** + * 分页查询 + * @param sarStandIssueControlCausePage:筛选、分页信息 + * @return ResponseMessage> + */ + @ApiOperation("分页查询") + @GetMapping + public ResponseMessage> getSarStandIssueControlCausePage(SarStandIssueControlCausePage sarStandIssueControlCausePage){ + IPage sarStandIssueControlCauseIPage=sarStandIssueControlCauseService.getSarStandIssueControlCausePage(sarStandIssueControlCausePage); + return Result.success(sarStandIssueControlCauseIPage); + } + + /** + * 分页查询历史数据 + * @param sarStandIssueControlCausePage:筛选、分页信息 + * @return ResponseMessage> + */ + @ApiOperation("分页查询历史数据") + @GetMapping("/history") + public ResponseMessage> getSarStandIssueControlCauseHistoryPage(SarStandIssueControlCausePage sarStandIssueControlCausePage){ + IPage sarStandIssueControlCauseIPage=sarStandIssueControlCauseService.getSarStandIssueControlCauseHistoryPage(sarStandIssueControlCausePage); + return Result.success(sarStandIssueControlCauseIPage); + } + + /** + * 批量关闭 + * @param standIssueControlCauseListVO:事业部重大问题ID列表 + * @return ResponseMessage>:关闭失败的事业部重大问题ID列表 + */ + @ApiOperation("批量关闭") + @PostMapping("/close") + public ResponseMessage> closeSarStandIssueControlCause(@RequestBody StandIssueControlCauseListVO standIssueControlCauseListVO){ + if(standIssueControlCauseListVO==null||standIssueControlCauseListVO.getIds().size()==0){ + return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"未传入ID",null); + } + List failIds=sarStandIssueControlCauseService.closeSarStandIssueControlCauseList(standIssueControlCauseListVO); + if(failIds==null||failIds.size()==0){ + return Result.success(null); + }else { + return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"部分关闭失败",null); + } + } + + @ApiOperation("导出Excel表") + @GetMapping(value = "/exportStandUnqulifiedExcel") + public void exportStandardsInfoExcel(StandIssueControlCauseExcelVO standIssueControlCauseExcelVO, HttpServletResponse response) throws Exception { + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + if(standIssueControlCauseExcelVO.getExportName()==null){ + standIssueControlCauseExcelVO.setExportName("事业部重点问题项管控"); + } + String fileName = URLEncoder.encode(standIssueControlCauseExcelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List data=sarStandIssueControlCauseService.getStandIssueControlCauseExcelData(standIssueControlCauseExcelVO); + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), SarStandIssueControlCause.class).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(data); + } catch (Exception e) { + System.out.println(e); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(Result.error())); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/dao/SarStandIssueControlCauseDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/dao/SarStandIssueControlCauseDao.java new file mode 100644 index 00000000..a305a3e7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/dao/SarStandIssueControlCauseDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandIssueControlCause.dao; + +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-16 + */ +public interface SarStandIssueControlCauseDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/SarStandIssueControlCause.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/SarStandIssueControlCause.java new file mode 100644 index 00000000..a0b2ad88 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/SarStandIssueControlCause.java @@ -0,0 +1,124 @@ +package com.adc.da.slrs.sarStandIssueControlCause.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.sql.Timestamp; +import java.time.LocalDateTime; + +import com.adc.da.slrs.sarStandUnqualified.utils.TimestampConverter; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandIssueControlCause对象", description="") +public class SarStandIssueControlCause extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ExcelProperty("创建部门") + @ApiModelProperty(value = "创建部门") + @TableField("CREATE_DEPT_ID") + private String createDeptId; + + @ExcelProperty("创建人") + @ApiModelProperty(value = "创建人") + @TableField("CREATE_BY_ID") + private String createById; + + @ExcelProperty(value = "创建时间",converter = TimestampConverter.class) + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("CREATE_TIME") + private Timestamp createTime; + + @ExcelIgnore + @ApiModelProperty(value = "关闭状态(1为开启,2为关闭)") + @TableField("CLOSE_STATE") + private Integer closeState; + + @ExcelIgnore + @ApiModelProperty(value = "实际关闭时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("ACTUAL_CLOSE_TIME") + private Timestamp actualCloseTime; + + @ExcelProperty(value = "要求关闭时间",converter = TimestampConverter.class) + @ApiModelProperty(value = "要求关闭时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("REQUIRE_CLOSE_TIME") + private Timestamp requireCloseTime; + + @ExcelProperty("质量工程师") + @ApiModelProperty(value = "质量工程师") + @TableField("QA_ENGINEER") + private String qaEngineer; + + @ExcelProperty("认证工程师") + @ApiModelProperty(value = "认证工程师") + @TableField("AUTH_ENGINEER") + private String authEngineer; + + @ExcelProperty("责任工程师") + @ApiModelProperty(value = "责任工程师") + @TableField("DUTY_ENGINEER") + private String dutyEngineer; + + @ExcelProperty("责任部门") + @ApiModelProperty(value = "责任部门") + @TableField("RESPONSIBLE_UNIT") + private String responsibleUnit; + + @ExcelProperty("项目名称") + @ApiModelProperty(value = "项目名称") + @TableField("PRODUCT_NAME") + private String productName; + + @ExcelProperty("产品线") + @ApiModelProperty(value = "产品线") + @TableField("PRODUCT_LINE") + private String productLine; + + @ExcelProperty("当前节点") + @ApiModelProperty(value = "当前节点") + @TableField("CURRENT_NODE") + private String currentNode; + + @ExcelProperty("标准名称") + @ApiModelProperty(value = "标准名称") + @TableField("STAND_NAME") + private String standName; + + @ExcelProperty("标准编号") + @ApiModelProperty(value = "标准编号") + @TableField("STAND_ID") + private String standId; + + @ExcelIgnore + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/SarStandIssueControlCausePage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/SarStandIssueControlCausePage.java new file mode 100644 index 00000000..26ea6e80 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/SarStandIssueControlCausePage.java @@ -0,0 +1,69 @@ +package com.adc.da.slrs.sarStandIssueControlCause.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Timestamp; + +@Data + +@ApiModel(value="SarStandIssueControlCausePage对象", description="") +public class SarStandIssueControlCausePage{ + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "创建部门") + private String createDeptId; + + @ApiModelProperty(value = "创建人") + private String createById; + + @ApiModelProperty(value = "创建时间") + private Timestamp createTime; + + @ApiModelProperty(value = "关闭状态(1为开启,2为关闭)") + private Integer closeState; + + @ApiModelProperty(value = "实际关闭时间") + private Timestamp actualCloseTime; + + @ApiModelProperty(value = "要求关闭时间") + private Timestamp requireCloseTime; + + @ApiModelProperty(value = "质量工程师") + private String qaEngineer; + + @ApiModelProperty(value = "认证工程师") + private String authEngineer; + + @ApiModelProperty(value = "责任工程师") + private String dutyEngineer; + + @ApiModelProperty(value = "责任部门") + private String responsibleUnit; + + @ApiModelProperty(value = "项目名称") + private String productName; + + @ApiModelProperty(value = "产品线") + private String productLine; + + @ApiModelProperty(value = "当前节点") + private String currentNode; + + @ApiModelProperty(value = "标准名称") + private String standName; + + @ApiModelProperty(value = "标准编号") + private String standId; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty("当前页") + private Integer current; + + @ApiModelProperty("每页条数") + private Integer size; +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/StandIssueControlCauseExcelVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/StandIssueControlCauseExcelVO.java new file mode 100644 index 00000000..fcf9e88b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/StandIssueControlCauseExcelVO.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandIssueControlCause.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(description = "ExcelVO类") +public class StandIssueControlCauseExcelVO { + @ApiModelProperty("文件名") + String exportName; + @ApiModelProperty("导出的ID列表") + List ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/StandIssueControlCauseListVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/StandIssueControlCauseListVO.java new file mode 100644 index 00000000..55f03312 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/entity/StandIssueControlCauseListVO.java @@ -0,0 +1,12 @@ +package com.adc.da.slrs.sarStandIssueControlCause.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class StandIssueControlCauseListVO { + @ApiModelProperty("ID列表") + private List Ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/service/ISarStandIssueControlCauseService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/service/ISarStandIssueControlCauseService.java new file mode 100644 index 00000000..6cf43e82 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/service/ISarStandIssueControlCauseService.java @@ -0,0 +1,49 @@ +package com.adc.da.slrs.sarStandIssueControlCause.service; + +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause; +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCausePage; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseListVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-16 + */ +public interface ISarStandIssueControlCauseService extends IService { + + /** + * 分页查询 + * @param sarStandIssueControlCausePage:筛选信息、分页信息 + * @return IPage + */ + IPage getSarStandIssueControlCausePage(SarStandIssueControlCausePage sarStandIssueControlCausePage); + + /** + * 分页查询历史数据 + * @param sarStandIssueControlCausePage:筛选信息、分页信息 + * @return IPage + */ + IPage getSarStandIssueControlCauseHistoryPage(SarStandIssueControlCausePage sarStandIssueControlCausePage); + + /** + * 批量关闭 + * @param standIssueControlCauseListVO:问题ID列表 + * @return List:关闭失败的ID列表 + */ + List closeSarStandIssueControlCauseList(StandIssueControlCauseListVO standIssueControlCauseListVO); + + /** + * 获得excel导出的数据 + * @param standIssueControlCauseExcelVO :筛选ID + * @return List + */ + List getStandIssueControlCauseExcelData(StandIssueControlCauseExcelVO standIssueControlCauseExcelVO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/service/impl/SarStandIssueControlCauseServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/service/impl/SarStandIssueControlCauseServiceImpl.java new file mode 100644 index 00000000..26c30a92 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlCause/service/impl/SarStandIssueControlCauseServiceImpl.java @@ -0,0 +1,145 @@ +package com.adc.da.slrs.sarStandIssueControlCause.service.impl; + +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause; +import com.adc.da.slrs.sarStandIssueControlCause.dao.SarStandIssueControlCauseDao; +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCausePage; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseListVO; +import com.adc.da.slrs.sarStandIssueControlCause.service.ISarStandIssueControlCauseService; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-16 + */ +@Service +public class SarStandIssueControlCauseServiceImpl extends ServiceImpl implements ISarStandIssueControlCauseService { + @Autowired + private SarStandIssueControlCauseDao sarStandIssueControlCauseDao; + + /** + * 分页查询 + * @param sarStandIssueControlCausePage:筛选信息、分页信息 + * @return SarStandIssueControlCause + */ + @Override + public IPage getSarStandIssueControlCausePage(SarStandIssueControlCausePage sarStandIssueControlCausePage) { + QueryWrapper sarStandIssueControlCauseQueryWrapper=new QueryWrapper<>(); + //仅查询未关闭的 + sarStandIssueControlCauseQueryWrapper.eq("close_state",1); + if(sarStandIssueControlCausePage.getStandId()!=null){ + sarStandIssueControlCauseQueryWrapper.eq("stand_id",sarStandIssueControlCausePage.getStandId()).or().like("stand_name","%"+sarStandIssueControlCausePage.getStandId()+"%"); + } + if(sarStandIssueControlCausePage.getProductName()!=null){ + sarStandIssueControlCauseQueryWrapper.like("product_name","%"+sarStandIssueControlCausePage.getProductName()+"%"); + } + if(sarStandIssueControlCausePage.getResponsibleUnit()!=null){ + sarStandIssueControlCauseQueryWrapper.eq("responsible_unit",sarStandIssueControlCausePage.getResponsibleUnit()); + } + Page standIssueControlCausePage=new Page<>(); + //判断前端是否提供页码和每页条数 + if(sarStandIssueControlCausePage.getCurrent()!=null&&sarStandIssueControlCausePage.getSize()!=null){ + standIssueControlCausePage=new Page<>(sarStandIssueControlCausePage.getCurrent(),sarStandIssueControlCausePage.getSize()); + } + return sarStandIssueControlCauseDao.selectPage(standIssueControlCausePage,sarStandIssueControlCauseQueryWrapper); + + } + + /** + * 分页查询历史数据 + * @param sarStandIssueControlCausePage:筛选信息、分页信息 + * @return IPage + */ + @Override + public IPage getSarStandIssueControlCauseHistoryPage(SarStandIssueControlCausePage sarStandIssueControlCausePage) { + QueryWrapper sarStandIssueControlCauseQueryWrapper=new QueryWrapper<>(); + //仅查询关闭的 + sarStandIssueControlCauseQueryWrapper.eq("close_state",2); + if(sarStandIssueControlCausePage.getStandId()!=null){ + sarStandIssueControlCauseQueryWrapper.eq("stand_id",sarStandIssueControlCausePage.getStandId()).or().like("stand_name","%"+sarStandIssueControlCausePage.getStandId()+"%"); + } + if(sarStandIssueControlCausePage.getProductName()!=null){ + sarStandIssueControlCauseQueryWrapper.like("product_name","%"+sarStandIssueControlCausePage.getProductName()+"%"); + } + if(sarStandIssueControlCausePage.getResponsibleUnit()!=null){ + sarStandIssueControlCauseQueryWrapper.eq("responsible_unit",sarStandIssueControlCausePage.getResponsibleUnit()); + } + Page standIssueControlCausePage=new Page<>(); + //判断前端是否提供页码和每页条数 + if(sarStandIssueControlCausePage.getCurrent()!=null&&sarStandIssueControlCausePage.getSize()!=null){ + standIssueControlCausePage=new Page<>(sarStandIssueControlCausePage.getCurrent(),sarStandIssueControlCausePage.getSize()); + } + return sarStandIssueControlCauseDao.selectPage(standIssueControlCausePage,sarStandIssueControlCauseQueryWrapper); + } + + /** + * 批量关闭 + * @param standIssueControlCauseListVO:问题ID列表 + * @return List:关闭失败的ID列表 + */ + @Override + public List closeSarStandIssueControlCauseList(StandIssueControlCauseListVO standIssueControlCauseListVO) { + List failIds=new ArrayList<>(); + for(String id:standIssueControlCauseListVO.getIds()){ + boolean success=closeSarStandIssueControlCause(id); + if(!success){ + failIds.add(id); + } + } + return failIds; + } + + /** + * 获得excel导出的数据 + * @param standIssueControlCauseExcelVO :筛选ID + * @return List + */ + @Override + public List getStandIssueControlCauseExcelData(StandIssueControlCauseExcelVO standIssueControlCauseExcelVO) { + QueryWrapper sarStandIssueControlCauseQueryWrapper=new QueryWrapper<>(); + sarStandIssueControlCauseQueryWrapper.eq("close_state",1); + if(standIssueControlCauseExcelVO.getIds()!=null&&standIssueControlCauseExcelVO.getIds().size()>0){ + sarStandIssueControlCauseQueryWrapper.in("id",standIssueControlCauseExcelVO.getIds()); + } + return sarStandIssueControlCauseDao.selectList(sarStandIssueControlCauseQueryWrapper); + } + + /** + * 问题关闭 + * @param standIssueControlCauseId:ID + * @return boolean + */ + private boolean closeSarStandIssueControlCause(String standIssueControlCauseId){ + SarStandIssueControlCause sarStandIssueControlCause=sarStandIssueControlCauseDao.selectById(standIssueControlCauseId); + //判断是否存在 + if(sarStandIssueControlCause==null){ + return false; + } + //判断是否已关闭 + if(sarStandIssueControlCause.getCloseState()==2){ + return false; + } + sarStandIssueControlCause.setCloseState(2); + sarStandIssueControlCause.setActualCloseTime(new Timestamp(new Date().getTime())); + sarStandIssueControlCauseDao.updateById(sarStandIssueControlCause); + return true; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/controller/SarStandIssueControlProductController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/controller/SarStandIssueControlProductController.java new file mode 100644 index 00000000..62816d52 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/controller/SarStandIssueControlProductController.java @@ -0,0 +1,122 @@ +package com.adc.da.slrs.sarStandIssueControlProduct.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.ResponseMessageCodeEnum; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause; +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCausePage; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseListVO; +import com.adc.da.slrs.sarStandIssueControlCause.service.ISarStandIssueControlCauseService; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProductPage; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductExcelVO; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductListVO; +import com.adc.da.slrs.sarStandIssueControlProduct.service.ISarStandIssueControlProductService; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import com.adc.da.slrs.sarStandardsInfo.controller.SarStandardsInfoController; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProduct; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author zxy +* @since 2021-06-17 +*/ +@RestController +@Api(tags = "|重点问题项管控-产品规划部|") +@RequestMapping("/api/sarStandIssueControlProduct/sar-stand-issue-control-product") +public class SarStandIssueControlProductController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoController.class); + + @Autowired + private ISarStandIssueControlProductService sarStandIssueControlProductService; + + + /** + * 分页查询 + * @param sarStandIssueControlProductPage:筛选、分页信息 + * @return ResponseMessage> + */ + @ApiOperation("分页查询") + @GetMapping + public ResponseMessage> getSarStandIssueControlProductPage(SarStandIssueControlProductPage sarStandIssueControlProductPage){ + IPage sarStandIssueControlCauseIPage=sarStandIssueControlProductService.getSarStandIssueControlProductPage(sarStandIssueControlProductPage); + return Result.success(sarStandIssueControlCauseIPage); + } + + /** + * 分页查询历史数据 + * @param sarStandIssueControlProductPage:筛选、分页信息 + * @return ResponseMessage> + */ + @ApiOperation("分页查询历史数据") + @GetMapping("/history") + public ResponseMessage> getSarStandIssueControlProductHistoryPage(SarStandIssueControlProductPage sarStandIssueControlProductPage){ + IPage sarStandIssueControlProductIPage=sarStandIssueControlProductService.getSarStandIssueControlProductHistoryPage(sarStandIssueControlProductPage); + return Result.success(sarStandIssueControlProductIPage); + } + + /** + * 批量关闭 + * @param standIssueControlProductListVO:重大问题ID列表 + * @return ResponseMessage>:关闭失败的重大问题ID列表 + */ + @ApiOperation("批量关闭") + @PostMapping("/close") + public ResponseMessage> closeSarStandIssueControlCause(@RequestBody StandIssueControlProductListVO standIssueControlProductListVO){ + if(standIssueControlProductListVO==null||standIssueControlProductListVO.getIds().size()==0){ + return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"未传入ID",null); + } + List failIds=sarStandIssueControlProductService.closeSarStandIssueControlProductList(standIssueControlProductListVO); + if(failIds==null||failIds.size()==0){ + return Result.success(null); + }else { + return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"部分关闭失败",null); + } + } + + @ApiOperation("导出Excel表") + @GetMapping(value = "/exportStandUnqulifiedExcel") + public void exportStandardsInfoExcel(StandIssueControlProductExcelVO standIssueControlProductExcelVO, HttpServletResponse response) throws Exception { + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + if(standIssueControlProductExcelVO.getExportName()==null){ + standIssueControlProductExcelVO.setExportName("产品规划部重点问题项管控"); + } + String fileName = URLEncoder.encode(standIssueControlProductExcelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List data=sarStandIssueControlProductService.getStandIssueControlProductExcelData(standIssueControlProductExcelVO); + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), SarStandIssueControlProduct.class).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(data); + } catch (Exception e) { + System.out.println(e); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(Result.error())); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/dao/SarStandIssueControlProductDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/dao/SarStandIssueControlProductDao.java new file mode 100644 index 00000000..e317ffc3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/dao/SarStandIssueControlProductDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandIssueControlProduct.dao; + +import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProduct; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-17 + */ +public interface SarStandIssueControlProductDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/SarStandIssueControlProduct.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/SarStandIssueControlProduct.java new file mode 100644 index 00000000..ca929c35 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/SarStandIssueControlProduct.java @@ -0,0 +1,131 @@ +package com.adc.da.slrs.sarStandIssueControlProduct.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.sql.Timestamp; +import java.time.LocalDateTime; + +import com.adc.da.slrs.sarStandUnqualified.utils.TimestampConverter; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandIssueControlProduct对象", description="产品规划部重大问题管控") +public class SarStandIssueControlProduct extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ExcelProperty("创建部门") + @ApiModelProperty(value = "创建部门") + @TableField("CREATE_DEPT_ID") + private String createDeptId; + + @ExcelProperty("创建人") + @ApiModelProperty(value = "创建人") + @TableField("CREATE_BY_ID") + private String createById; + + @ExcelProperty(value = "创建时间",converter = TimestampConverter.class) + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("CREATE_TIME") + private Timestamp createTime; + + @ExcelIgnore + @ApiModelProperty(value = "关闭状态(1为开启,2为关闭)") + @TableField("CLOSE_STATE") + private Integer closeState; + + @ExcelIgnore + @ApiModelProperty(value = "实际关闭时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("ACTUAL_CLOSE_TIME") + private Timestamp actualCloseTime; + + @ExcelProperty(value = "要求关闭时间",converter = TimestampConverter.class) + @ApiModelProperty(value = "要求关闭时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("REQUIRE_CLOSE_TIME") + private Timestamp requireCloseTime; + + @ExcelProperty("平台") + @ApiModelProperty(value = "平台") + @TableField("PLATFORM") + private String platform; + + @ExcelProperty("业务") + @ApiModelProperty(value = "业务") + @TableField("BUSINESS") + private String business; + + @ExcelProperty("符合性状态") + @ApiModelProperty(value = "符合性状态") + @TableField("CONFORMANCE_STATE") + private String conformanceState; + + @ExcelProperty("责任工程师") + @ApiModelProperty(value = "责任工程师") + @TableField("DUTY_ENGINEER") + private String dutyEngineer; + + @ExcelProperty("责任部门") + @ApiModelProperty(value = "责任部门") + @TableField("RESPONSIBLE_UNIT") + private String responsibleUnit; + + @ExcelProperty("实施要求") + @ApiModelProperty(value = "实施要求") + @TableField("IMPLEMENT_DEMAND") + private String implementDemand; + + @ExcelProperty(value = "实施时间",converter = TimestampConverter.class) + @ApiModelProperty(value = "实施时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("IMPLEMENT_TIME") + private Timestamp implementTime; + + @ExcelProperty("当前节点") + @ApiModelProperty(value = "当前节点") + @TableField("CURRENT_NODE") + private String currentNode; + + @ExcelProperty(value = "标准名称/政策名称") + @ApiModelProperty(value = "标准名称/政策名称") + @TableField("STAND_NAME") + private String standName; + + @ExcelProperty("标准编号/政策编号") + @ApiModelProperty(value = "标准编号/政策编号") + @TableField("STAND_ID") + private String standId; + + @ExcelIgnore + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/SarStandIssueControlProductPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/SarStandIssueControlProductPage.java new file mode 100644 index 00000000..eec3a722 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/SarStandIssueControlProductPage.java @@ -0,0 +1,91 @@ +package com.adc.da.slrs.sarStandIssueControlProduct.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Timestamp; +import java.time.LocalDateTime; + +@Data +@ApiModel(description = "产品规划部重大问题管控分页") +public class SarStandIssueControlProductPage { + + @ApiModelProperty(value = "创建部门") + @TableField("CREATE_DEPT_ID") + private String createDeptId; + + @ApiModelProperty(value = "创建人") + @TableField("CREATE_BY_ID") + private String createById; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATE_TIME") + private Timestamp createTime; + + @ApiModelProperty(value = "关闭状态(1为开启,2为关闭)") + @TableField("CLOSE_STATE") + private Integer closeState; + + @ApiModelProperty(value = "实际关闭时间") + @TableField("ACTUAL_CLOSE_TIME") + private Timestamp actualCloseTime; + + @ApiModelProperty(value = "要求关闭时间") + @TableField("REQUIRE_CLOSE_TIME") + private Timestamp requireCloseTime; + + @ApiModelProperty(value = "平台") + @TableField("PLANTFORM") + private String plantform; + + @ApiModelProperty(value = "业务") + @TableField("BUSINESS") + private String business; + + @ApiModelProperty(value = "符合性状态") + @TableField("CONFORMANCE_STATE") + private String conformanceState; + + @ApiModelProperty(value = "责任工程师") + @TableField("DUTY_ENGINEER") + private String dutyEngineer; + + @ApiModelProperty(value = "责任部门") + @TableField("RESPONSIBLE_UNIT") + private String responsibleUnit; + + @ApiModelProperty(value = "实施要求") + @TableField("IMPLEMEN_DEMAND") + private String implemenDemand; + + @ApiModelProperty(value = "实施时间") + @TableField("IMPLEMENT_TIME") + private Timestamp implementTime; + + @ApiModelProperty(value = "当前节点") + @TableField("CURRENT_NODE") + private String currentNode; + + @ApiModelProperty(value = "标准名称/政策名称") + @TableField("STAND_NAME") + private String standName; + + @ApiModelProperty(value = "标准编号/政策编号") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + + @ApiModelProperty("当前页") + private Integer current; + + @ApiModelProperty("每页条数") + private Integer size; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/StandIssueControlProductExcelVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/StandIssueControlProductExcelVO.java new file mode 100644 index 00000000..4b91393d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/StandIssueControlProductExcelVO.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandIssueControlProduct.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(description = "ExcelVO类") +public class StandIssueControlProductExcelVO { + @ApiModelProperty("文件名") + String exportName; + @ApiModelProperty("导出的ID列表") + List ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/StandIssueControlProductListVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/StandIssueControlProductListVO.java new file mode 100644 index 00000000..ee0b3e5b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/entity/StandIssueControlProductListVO.java @@ -0,0 +1,12 @@ +package com.adc.da.slrs.sarStandIssueControlProduct.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class StandIssueControlProductListVO { + @ApiModelProperty("ID列表") + private List Ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/service/ISarStandIssueControlProductService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/service/ISarStandIssueControlProductService.java new file mode 100644 index 00000000..d08b48f4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/service/ISarStandIssueControlProductService.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.sarStandIssueControlProduct.service; + +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause; +import com.adc.da.slrs.sarStandIssueControlCause.entity.StandIssueControlCauseExcelVO; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProduct; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProductPage; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductExcelVO; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductListVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zxy + * @since 2021-06-17 + */ +public interface ISarStandIssueControlProductService extends IService { + + /** + * 分页查询 + * @param sarStandIssueControlProductPage:筛选、分页信息 + * @return IPage + */ + IPage getSarStandIssueControlProductPage(SarStandIssueControlProductPage sarStandIssueControlProductPage); + + /** + * 分页查询 + * @param sarStandIssueControlProductPage:筛选、分页信息 + * @return IPage + */ + IPage getSarStandIssueControlProductHistoryPage(SarStandIssueControlProductPage sarStandIssueControlProductPage); + + /** + * 批量关闭 + * @param standIssueControlProductListVO:关闭ID列表 + * @return List:关闭失败的ID + */ + List closeSarStandIssueControlProductList(StandIssueControlProductListVO standIssueControlProductListVO); + + /** + * 获得导出excel的数据 + * @param standIssueControlProductExcelVO:导出的数据ID + * @return List + */ + List getStandIssueControlProductExcelData(StandIssueControlProductExcelVO standIssueControlProductExcelVO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/service/impl/SarStandIssueControlProductServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/service/impl/SarStandIssueControlProductServiceImpl.java new file mode 100644 index 00000000..55701ecc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandIssueControlProduct/service/impl/SarStandIssueControlProductServiceImpl.java @@ -0,0 +1,135 @@ +package com.adc.da.slrs.sarStandIssueControlProduct.service.impl; + +import com.adc.da.slrs.sarStandIssueControlCause.entity.SarStandIssueControlCause; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProduct; +import com.adc.da.slrs.sarStandIssueControlProduct.dao.SarStandIssueControlProductDao; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProductPage; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductExcelVO; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductListVO; +import com.adc.da.slrs.sarStandIssueControlProduct.service.ISarStandIssueControlProductService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-17 + */ +@Service +public class SarStandIssueControlProductServiceImpl extends ServiceImpl implements ISarStandIssueControlProductService { + @Autowired + private SarStandIssueControlProductDao sarStandIssueControlProductDao; + /** + * 分页查询 + * @param sarStandIssueControlProductPage:筛选、分页信息 + * @return IPage + */ + @Override + public IPage getSarStandIssueControlProductPage(SarStandIssueControlProductPage sarStandIssueControlProductPage) { + QueryWrapper sarStandIssueControlProductQueryWrapper=new QueryWrapper<>(); + //仅查询未关闭的 + sarStandIssueControlProductQueryWrapper.eq("close_state",1); + if(sarStandIssueControlProductPage.getStandId()!=null){ + sarStandIssueControlProductQueryWrapper.eq("stand_id",sarStandIssueControlProductPage.getStandId()).or().like("stand_name","%"+sarStandIssueControlProductPage.getStandId()+"%"); + } + if(sarStandIssueControlProductPage.getResponsibleUnit()!=null){ + sarStandIssueControlProductQueryWrapper.eq("responsible_unit",sarStandIssueControlProductPage.getResponsibleUnit()); + } + Page standIssueControlCausePage=new Page<>(); + //判断前端是否提供页码和每页条数 + if(sarStandIssueControlProductPage.getCurrent()!=null&&sarStandIssueControlProductPage.getSize()!=null){ + standIssueControlCausePage=new Page<>(sarStandIssueControlProductPage.getCurrent(),sarStandIssueControlProductPage.getSize()); + } + return sarStandIssueControlProductDao.selectPage(standIssueControlCausePage,sarStandIssueControlProductQueryWrapper); + } + + /** + * 分页查询 + * @param sarStandIssueControlProductPage:筛选、分页信息 + * @return IPage + */ + @Override + public IPage getSarStandIssueControlProductHistoryPage(SarStandIssueControlProductPage sarStandIssueControlProductPage) { + QueryWrapper sarStandIssueControlProductQueryWrapper=new QueryWrapper<>(); + //仅查询关闭的 + sarStandIssueControlProductQueryWrapper.eq("close_state",2); + if(sarStandIssueControlProductPage.getStandId()!=null){ + sarStandIssueControlProductQueryWrapper.eq("stand_id",sarStandIssueControlProductPage.getStandId()).or().like("stand_name","%"+sarStandIssueControlProductPage.getStandId()+"%"); + } + if(sarStandIssueControlProductPage.getResponsibleUnit()!=null){ + sarStandIssueControlProductQueryWrapper.eq("responsible_unit",sarStandIssueControlProductPage.getResponsibleUnit()); + } + Page standIssueControlCausePage=new Page<>(); + //判断前端是否提供页码和每页条数 + if(sarStandIssueControlProductPage.getCurrent()!=null&&sarStandIssueControlProductPage.getSize()!=null){ + standIssueControlCausePage=new Page<>(sarStandIssueControlProductPage.getCurrent(),sarStandIssueControlProductPage.getSize()); + } + return sarStandIssueControlProductDao.selectPage(standIssueControlCausePage,sarStandIssueControlProductQueryWrapper); + + } + + /** + * 批量关闭 + * @param standIssueControlProductListVO:关闭ID列表 + * @return List:关闭失败的ID + */ + @Override + public List closeSarStandIssueControlProductList(StandIssueControlProductListVO standIssueControlProductListVO) { + List failIds=new ArrayList<>(); + for(String id:standIssueControlProductListVO.getIds()){ + boolean success=closeSarStandIssueControlProduct(id); + if(!success){ + failIds.add(id); + } + } + return failIds; + } + + /** + * 获得导出excel的数据 + * @param standIssueControlProductExcelVO:导出的数据ID + * @return List + */ + @Override + public List getStandIssueControlProductExcelData(StandIssueControlProductExcelVO standIssueControlProductExcelVO) { + QueryWrapper sarStandIssueControlProductQueryWrapper=new QueryWrapper<>(); + sarStandIssueControlProductQueryWrapper.eq("close_state",1); + if(standIssueControlProductExcelVO.getIds()!=null&&standIssueControlProductExcelVO.getIds().size()>0){ + sarStandIssueControlProductQueryWrapper.in("id",standIssueControlProductExcelVO.getIds()); + } + return sarStandIssueControlProductDao.selectList(sarStandIssueControlProductQueryWrapper); + } + + /** + * 问题关闭 + * @param standIssueControlCauseId:ID + * @return boolean + */ + private boolean closeSarStandIssueControlProduct(String standIssueControlCauseId){ + SarStandIssueControlProduct sarStandIssueControlProduct=sarStandIssueControlProductDao.selectById(standIssueControlCauseId); + //判断是否存在 + if(sarStandIssueControlProduct==null){ + return false; + } + //判断是否已关闭 + if(sarStandIssueControlProduct.getCloseState()==2){ + return false; + } + sarStandIssueControlProduct.setCloseState(2); + sarStandIssueControlProduct.setActualCloseTime(new Timestamp(new Date().getTime())); + sarStandIssueControlProductDao.updateById(sarStandIssueControlProduct); + return true; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/controller/SarStandItemsController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/controller/SarStandItemsController.java new file mode 100644 index 00000000..6b6847e4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/controller/SarStandItemsController.java @@ -0,0 +1,154 @@ +package com.adc.da.slrs.sarStandItems.controller; + + +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; + +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.LawsDto; +import com.adc.da.slrs.sarStandItems.entity.*; +import com.adc.da.slrs.sarStandItems.service.impl.SarStandItemsServiceImpl; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.*; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-01 +*/ +@RestController +@Api(description = "|SarStandItems|") +@RequestMapping("/api/SarStandItems/sar-stand-items") +public class SarStandItemsController extends BaseController { + + @Autowired + private SarStandItemsServiceImpl ServiceImpl; + + @ApiOperation(value = "分解单查询") + @GetMapping("/findAllItems") + public ResponseMessage findAllItems( @RequestParam("type") String type,@RequestParam("ids") String ids){ + if (!StringUtils.isEmpty(ids) && ids.contains(",")){ + String[] Sids=ids.split(","); + List ItemDto = ServiceImpl.findAllItems(type,Sids); + return Result.success("200",ItemDto); + }else if (!StringUtils.isEmpty(ids)){ + String[] Sids=new String[1]; + Sids[0]=ids; + List ItemDto = ServiceImpl.findAllItems(type,Sids); + return Result.success("200",ItemDto); + }else { + List ItemDto = ServiceImpl.findAllItems(type,null); + return Result.success("200",ItemDto); + } + } + + @ApiOperation(value = "分解单查询") + @GetMapping("/findItemById") + public ResponseMessage findItemById( @RequestParam("type") String type,@RequestParam("ids") String ids){ + String[] Sids=ids.split(","); + List ItemDto = ServiceImpl.findItemById(type,Sids); + return Result.success("200",ItemDto); + } + + @ApiOperation(value = "项目评估流程分解单查询") + @GetMapping("/workflowFindItems") + public ResponseMessage workflowFindItems( @RequestParam("ids") String ids,@RequestParam("types") String types){ + List id=new ArrayList<>(Arrays.asList(ids.split(","))); + List type=new ArrayList<>(Arrays.asList(types.split(","))); + Map map=new HashMap<>(); + int i =0 ; + for (String s:type) { + if (null!=map.get(s)){ + map.put(s,map.get(s)+","+id.get(i)); + }else { + map.put(s,id.get(i)); + } + i++; + } + List ItemDto = new ArrayList<>(); + map.entrySet().forEach(stringStringEntry -> { + if (!"BDR".equals(stringStringEntry.getKey())){ + ItemDto.addAll(ServiceImpl.findAllItems(stringStringEntry.getKey(),stringStringEntry.getValue().split(","))); + } + }); + return Result.success("200",ItemDto); + } + + @ApiOperation(value = "分解单查询") + @GetMapping("/querySarItemAndInterpretation") + public ResponseMessage querySarItemAndInterpretation(FindSarItemsPageReqDTO page){ + List rows = ServiceImpl.querySarItemAndInterpretation(page); + + PageInfo pageInfo = getPageInfo(page.getPager(), rows); + + return Result.success(pageInfo); + } + + @ApiOperation(value = "分解单更新") + @PutMapping("/updateSarItemAndInterpretation") + public ResponseMessage updateSarItemAndInterpretation(@RequestBody SarStandItems resolveListForm){ + boolean rows = ServiceImpl.updateById(resolveListForm); + + return Result.success(rows); + } + + + + + @ApiOperation(value = "分解单查询(带时间)") + @GetMapping("/findAllItemsTimes") + public List findAllItemsTimes(@RequestParam("type") String type,@RequestParam("ids") String ids){ + List sarItemsTimes = ServiceImpl.findItemsTime(type,ids); + return sarItemsTimes; + } + + @ApiOperation(value = "标准查询") + @PostMapping("/findStand") + public IPage findStand(FindStandDto findStandDto){ + IPage sarItems = ServiceImpl.selectLawDto(findStandDto); + return sarItems; + } + + + @ApiOperation(value = "标准批量保存") + @PostMapping("/saveBatch") + public String saveBatch(@RequestBody List findStandDto){ + findStandDto.forEach(sarStandItems -> sarStandItems.setId(UUIDUtils.randomUUID(32))); + return ServiceImpl.sarStandItemsaveBatch(findStandDto); + } + + + @ApiOperation(value = "|SarFileSplitInfoEO|根据标准id查询分解单的文本类型") + @GetMapping("getFileType") + public ResponseMessage>> getFileType(String standId){ + List> fileType = ServiceImpl.getFileType(standId); + + return Result.success(fileType); + } + + @ApiOperation(value = "|SarFileSplitInfoEO|根据标准id查询分解单的文本类型用在合规评估的") + @GetMapping("getFileTypeHG") + public ResponseMessage>> getFileTypeHG(String standId){ + List> fileType = ServiceImpl.getFileTypeHG(standId); + + return Result.success(fileType); + } + + @ApiOperation(value = "项目合规评估流程-项目-分解单条款内容查询") + @PostMapping("/findTermsConditions") + public ResponseMessage findTermsConditions( @RequestParam(name = "idList", required = false) List idList){ + List ItemDto = ServiceImpl.findTermsConditions(idList); + return Result.success("200",ItemDto); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/dao/SarStandItemsDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/dao/SarStandItemsDao.java new file mode 100644 index 00000000..7cec98f0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/dao/SarStandItemsDao.java @@ -0,0 +1,87 @@ +package com.adc.da.slrs.sarStandItems.dao; + +import com.adc.da.slrs.sarStandItems.entity.*; +import com.adc.da.slrs.sarStandItems.page.SarStandItemsEOPage; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Set; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Mapper +@Repository +public interface SarStandItemsDao extends BaseMapper { + + List querySarItemAndInterpretation(FindSarItemsPageReqDTO page); + + Integer sarItemCount(FindSarItemsPageReqDTO page); + + + List querySarStandItemsList(SarStandItemsEOPage page); + + int querySarStandItemsListCount(SarStandItemsEOPage page); + + List queryItemsByList(SarStandItemsEOPage page); + + List selectItemByItemNum(SarStandItemsEOPage page); + + + @Select("SELECT id,VALID_FLAG FROM SAR_STAND_ITEMS WHERE id = #{id}") + SarStandItems getSarStandItemsEOById(String id); + + List queryIdsByList(SarStandItemsEOPage page); + + int insertForeach(List list); + + int updateForeach(List list); + + int deleteByStandIdAndFileType(@Param("standId") String standId, @Param("fileType") String fileType); + + int deleteByStandIdAndFileTypes(@Param("standId") String standId, @Param("fileType") String fileType,@Param("items")List strings); + + Set selectClaimTypesByStandId(@Param("standId") String standId, @Param("fileType") String fileType, @Param("idList") String[] idList); + + Set selectSvppsByStandId(@Param("standId") String standId, @Param("fileType") String fileType, @Param("idList") String[] idList); + + int deleteByIds(@Param("idList") String[] idList); + + List selectAllItemsClaimType(SarStandItems sarStandItemsEO); + + List selectAllItemsSvpps(SarStandItems sarStandItemsEO); + + List selectAllItemsByIds(@Param("type") String type,@Param("ids") String[] ids); + + List findItemById(@Param("type") String type,@Param("ids") String[] ids); + + StandsTimeDto selectStandTime(String standId); + + List selectStandTimeAll(); + + List selectStandId(@Param("page")int page, @Param("size")int size); + + int selectToken(); + + + /** + * 根据标准id查询该标准下有分解单的文本类型 + * @param standId + * @return + */ + List getFileType(@Param("standId") String standId); + + List getFileTypeHG(@Param("standId") String standId); + + List findTermsConditions(@Param("idList") List idsList); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/FindSarItemsPageReqDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/FindSarItemsPageReqDTO.java new file mode 100644 index 00000000..6d387013 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/FindSarItemsPageReqDTO.java @@ -0,0 +1,39 @@ +package com.adc.da.slrs.sarStandItems.entity; + +import com.adc.da.base.page.BasePage; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +@Data +public class FindSarItemsPageReqDTO extends BasePage { + + private static final long serialVersionUID = 1L; + private Integer page = 1; + private Integer pageSize = 20; + + + @ApiModelProperty(value = "标准id") + private String standId; + + @ApiModelProperty(value = "条款名称") + private String itemsName; + + @ApiModelProperty(value = "新车型实施日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private String XCXSSRQ; + + @ApiModelProperty(value = "在产车实施日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private String ZCCSSRQ; + + @ApiModelProperty(value = "文件类型") + private String fileType; + + @ApiModelProperty(value = "解读内容") + private String readContent; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/FindStandDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/FindStandDto.java new file mode 100644 index 00000000..09d43f4b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/FindStandDto.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarStandItems.entity; + +import lombok.Data; + +/** + * //查询dto + * + * @author ZhangZhiYuan + * @date 2021-07-19 + */ +@Data +public class FindStandDto { + private int page; + private int size; + private String standName; + private String standType; + private String fileType; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarItemVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarItemVO.java new file mode 100644 index 00000000..d63647ef --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarItemVO.java @@ -0,0 +1,70 @@ +package com.adc.da.slrs.sarStandItems.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@ApiModel(value="标准分解单显示对象", description="") +public class SarItemVO extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "标准ID") + private String standId; + + @ApiModelProperty(value = "条款号") + private String itemsNum; + + @ApiModelProperty(value = "条款名称") + private String itemsName; + + + @ApiModelProperty(value = "条款内容--条款要求") + private String termsConditions; + + @ApiModelProperty(value = "新车实施日期") + @DateTimeFormat + private Date XCXSSRQ; + + @ApiModelProperty(value = "在产车实施日期") + @DateTimeFormat + private Date ZCCSSRQ; + + @ApiModelProperty(value = "适用车型") + private String applyArctic; + + + @ApiModelProperty(value = "责任部门") + private String responsibleUnit; + + + @ApiModelProperty(value = "责任工程师") + private String dutyEngineer; + + @ApiModelProperty(value = "相对于上一版本变化点") + private String comparedWithPrevious; + + @ApiModelProperty(value = "合规性分析") + private String complianceState; + + @ApiModelProperty(value = "符合性要求-符合性状态") + private String complianceRequire; + + @ApiModelProperty(value = "文件类型") + private String fileType; + + @ApiModelProperty(value = "解读内容--核心技术要点") + private String interpretationContent; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarItemsTime.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarItemsTime.java new file mode 100644 index 00000000..c894d55a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarItemsTime.java @@ -0,0 +1,58 @@ +package com.adc.da.slrs.sarStandItems.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * //分解单dto + * + * @author ZhangZhiYuan + * @date 2021-07-14 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SarItemsTime { + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "标准ID") + private String standId; + + @ApiModelProperty(value = "条目编号") + private String itemsNum; + + @ApiModelProperty(value = "内容") + private String itemsName; + + @ApiModelProperty(value = "责任部门") + private String responsibleUnit; + + @ApiModelProperty(value = "新车型实施日期") + @TableField("XCXSSRQ") + private String XCXSSRQ; + + @ApiModelProperty(value = "在产车实施日期") + @TableField("ZCCSSRQ") + private String ZCCSSRQ; + + @ApiModelProperty(value = "SVPPS") + private String svpps; + + + @ApiModelProperty(value = "适用车型") + private String applyArctic; + + + @ApiModelProperty(value = "要求类型") + private String claimType; + + @ApiModelProperty(value = "覆盖关系") + private String busStandCover; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItems.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItems.java new file mode 100644 index 00000000..7d32b016 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItems.java @@ -0,0 +1,200 @@ +package com.adc.da.slrs.sarStandItems.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.SarCompStatusInfo.entity.SarCompStatusInfo; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandItems对象", description="") +public class SarStandItems extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "条目编号") + @TableField("ITEMS_NUM") + private String itemsNum; + + @ApiModelProperty(value = "条目内容") + @TableField("ITEMS_NAME") + private String itemsName; + + @ApiModelProperty(value = "涉及零部件") + @TableField("PARTS") + private String parts; + + @ApiModelProperty(value = "特殊生效时间") + @TableField("TACK_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date tackTime; + + @ApiModelProperty(value = "适用车型") + @TableField("APPLY_ARCTIC") + private String applyArctic; + + @ApiModelProperty(value = "能源类型") + @TableField("ENERGY_KIND") + private String energyKind; + + @ApiModelProperty(value = "责任部门") + @TableField("RESPONSIBLE_UNIT") + private String responsibleUnit; + + @ApiModelProperty(value = "备注") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "条款要求") + @TableField("TERMS_CONDITIONS") + private String termsConditions; + + @ApiModelProperty(value = "实施要点") + @TableField("MAINPOINTS_IMPEMENTATION") + private String mainpointsImpementation; + + @ApiModelProperty(value = "FO") + @TableField("FO") + private String fo; + + @ApiModelProperty(value = "责任工程师") + @TableField("DUTY_ENGINEER") + private String dutyEngineer; + + @ApiModelProperty(value = "SVPPS") + @TableField("SVPPS") + private String svpps; + + @ApiModelProperty(value = "要求类型") + @TableField("CLAIM_TYPE") + private String claimType; + + @ApiModelProperty(value = "企标覆盖关系") + @TableField("BUS_STAND_COVER") + private String busStandCover; + + @ApiModelProperty(value = "文件类型") + @TableField("FILE_TYPE") + private String fileType; + + + @ApiModelProperty(value = "新车型实施日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("XCXSSRQ") + private String xccssrq; + + @ApiModelProperty(value = "在产车实施日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("ZCCSSRQ") + private String zccssrq; + + + @ApiModelProperty(value = "符合性要求-符合性状态") + @TableField("COMPLIANCE_REQUIR") + private String complianceRequire; + + @ApiModelProperty(value = "解读内容--核心技术要点") + @TableField("core_technical_requirement") + private String interpretationContent; + + @TableField(exist = false) + private String emergyKindShow; + @TableField(exist = false) + private String applyArcticShow; + @TableField(exist = false) + private String responsibleUnitShow; + @TableField(exist = false) + private String mainPointImplementation; //实施要点 + //新加字段 + @TableField(exist = false) + private String foUser;//FO + //新加字段带show + @TableField(exist = false) + private String foShow;//FO + @TableField(exist = false) + private String dutyEngineerShow;//责任工程师 + @TableField(exist = false) + private String svppsShow;//SVPPS + @TableField(exist = false) + private String claimTypeShow;//要求类型 + @TableField(exist = false) + private String busStandCoverShow;//企标覆盖关系 + @TableField(exist = false) + private String fileTypeShow;//文件类型 + @TableField(exist = false) + private String itemState;//条款状态 + @TableField(exist = false) + private List idList; + @TableField(exist = false) + private String oldId; + @TableField(exist = false) + private String jspg; + @TableField(exist = false) + private SarCompStatusInfo pgForm; + + //责任工程师 + @TableField(exist = false) + private String responsibleEngineer; + + + @ApiModelProperty(value = "相对于上一版本变化点") + @TableField("compared_with_previous") + private String comparedWithPrevious; + + @ApiModelProperty(value = "合规性分析") + @TableField("compliance_state") + private String complianceState; + + @ApiModelProperty(value = "解读内容") + @TableField("read_content") + private String readContent; + + @ApiModelProperty(value = "编辑关联标识") + @TableField("edit_flag") + private String editFlag; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItemsDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItemsDto.java new file mode 100644 index 00000000..44b98724 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/SarStandItemsDto.java @@ -0,0 +1,60 @@ +package com.adc.da.slrs.sarStandItems.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +/** + * + * @author ZhangZhiYuan + * @date 2021-07-08 + */ +@Slf4j +@Data +public class SarStandItemsDto { + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "标准ID") + private String standId; + + @ApiModelProperty(value = "条目编号") + private String itemsNum; + + @ApiModelProperty(value = "名称") + private String itemsName; + + @ApiModelProperty(value = "内容") + @TableField("TERMS_CONDITIONS") + private String termsConditions; + + @ApiModelProperty(value = "责任部门") + private String responsibleUnit; + + private String responsibleEngineer; + + @ApiModelProperty(value = "SVPPS") + private String svpps; + + + @ApiModelProperty(value = "适用车型") + private String applyArctic; + + + @ApiModelProperty(value = "要求类型") + private String claimType; + + @ApiModelProperty(value = "覆盖关系") + private String busStandCover; + + private String xcxssrq; + + private String zccssrq; + + private String technicalRequir; + + private String changePoint; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/StandsTimeDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/StandsTimeDto.java new file mode 100644 index 00000000..38521d39 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/entity/StandsTimeDto.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.sarStandItems.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * //时间查询 + * + * @author ZhangZhiYuan + * @date 2021-07-14 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StandsTimeDto { + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "新车型实施日期") + @TableField("XCXSSRQ") + private String XCXSSRQ; + + @ApiModelProperty(value = "在产车实施日期") + @TableField("ZCCSSRQ") + private String ZCCSSRQ; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/page/SarStandItemsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/page/SarStandItemsEOPage.java new file mode 100644 index 00000000..cdae20ca --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/page/SarStandItemsEOPage.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.sarStandItems.page; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:SAR_STAND_ITEMS SarStandItemsEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarStandItemsEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String remarks; + private String remarksOperator = "="; + private String responsibleUnit; + private String responsibleUnitOperator = "="; + private String energyKind; + private String energyKindOperator = "="; + private String applyArctic; + private String applyArcticOperator = "="; + private String tackTime; + private String tackTime1; + private String tackTime2; + private String tackTimeOperator = "="; + private String parts; + private String partsOperator = "="; + private String itemsName; + private String itemsNameOperator = "="; + private String itemsNum; + private String itemsNumOperator = "="; + private String standId; + private String standIdOperator = "="; + private String id; + private String idOperator = "="; + private String nameOrRequest; + private String standNum; + private String processFlag; + private String fileType; + private String proType; + private String[] idlist; + private String noId; + private String productId; + private String lawsId; + private String sarState; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/ISarStandItemsService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/ISarStandItemsService.java new file mode 100644 index 00000000..2c2c4635 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/ISarStandItemsService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.sarStandItems.service; + +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.LawsDto; +import com.adc.da.slrs.sarStandItems.entity.FindStandDto; +import com.adc.da.slrs.sarStandItems.entity.SarItemsTime; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandItems.page.SarStandItemsEOPage; +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarStandItemsService extends IService { + + List queryItemsByList(SarStandItemsEOPage page, String resType); + List findItemsTime(String type,String ids); + IPage selectLawDto(FindStandDto findStandDto); + String sarStandItemsaveBatch(List sarStandItems); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/impl/SarStandItemsServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/impl/SarStandItemsServiceImpl.java new file mode 100644 index 00000000..2204a86d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandItems/service/impl/SarStandItemsServiceImpl.java @@ -0,0 +1,354 @@ +package com.adc.da.slrs.sarStandItems.service.impl; + +import com.adc.da.slrs.sarLawsAttrDetailedList.dao.SarLawsAttrDetailedListDao; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.LawsDto; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandItems.entity.*; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.page.SarStandItemsEOPage; +import com.adc.da.slrs.sarStandItems.service.ISarStandItemsService; +import com.adc.da.slrs.sarStandardsInfo.controller.SarStandardsInfoController; +import com.adc.da.slrs.sarStandardsInfo.entity.ActSarItemsEO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarStandItemsServiceImpl extends ServiceImpl implements ISarStandItemsService { + + @Autowired + private SarStandItemsDao dao; + @Autowired + private SysInfoEOService sysInfoEOService; + @Autowired + private SarLawsAttrDetailedListDao sarLawsAttrDetailedListDao; + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + @Autowired + private SarStandItemsDao sarStandItemsDao; + @Autowired + private IDicTypeEOService iDicTypeEOService; + + public List queryItemsByList(SarStandItemsEOPage page, String resType){ + List itemsEOList = dao.queryItemsByList(page); + List actitemsEOList = new ArrayList<>(); + if (itemsEOList != null && !itemsEOList.isEmpty()) { + for (SarStandItems itemsEO : itemsEOList) { + ActSarItemsEO actSarItemsEO = new ActSarItemsEO(); + actSarItemsEO.setResId(itemsEO.getId()); + actSarItemsEO.setResNum(itemsEO.getItemsNum()); + actSarItemsEO.setResType(resType); + actSarItemsEO.setResName(itemsEO.getItemsName()); + actSarItemsEO.setDeptName(itemsEO.getResponsibleUnit()); + actSarItemsEO.setOrgName(itemsEO.getResponsibleUnitShow()); + actSarItemsEO.setFoId(itemsEO.getFo()); + String foShow = sysInfoEOService.getRoleNamesByIds(itemsEO.getFo()); + actSarItemsEO.setFoName(foShow); + actSarItemsEO.setTermsConditions(itemsEO.getTermsConditions()); + actSarItemsEO.setResState(itemsEO.getItemState()); + actSarItemsEO.setRoleId(itemsEO.getDutyEngineer()); + String dutyShow = sysInfoEOService.getRoleNamesByIds(itemsEO.getDutyEngineer()); + actSarItemsEO.setRoleName(dutyShow); + actitemsEOList.add(actSarItemsEO); + } + } + return actitemsEOList; + } + + @Override + public List findItemsTime(String type, String ids) { + StandsTimeDto standsTimeDto=new StandsTimeDto(); + List sarItemsTime = new ArrayList<>(); + if (!StringUtils.isEmpty(ids) && ids.contains(",")){ + String[] strings=new String[1]; + String[] Sids=ids.split(","); + for (String id : Sids){ + strings[0]=id; + List ItemDto = dao.selectAllItemsByIds(type,strings); + standsTimeDto=dao.selectStandTime(id); + for (SarStandItemsDto sarStandItemsDto:ItemDto){ + SarItemsTime itemsTime = SarItemsTime.builder() + .id(sarStandItemsDto.getId()) + .standId(sarStandItemsDto.getStandId()) + .itemsName(sarStandItemsDto.getItemsName()) + .itemsNum(sarStandItemsDto.getItemsNum()) + .responsibleUnit(sarStandItemsDto.getResponsibleUnit()) + .XCXSSRQ(sarStandItemsDto.getXcxssrq()) + .ZCCSSRQ(sarStandItemsDto.getZccssrq()) + .svpps(sarStandItemsDto.getSvpps()) + .applyArctic(sarStandItemsDto.getApplyArctic()) + .claimType(sarStandItemsDto.getClaimType()) + .busStandCover(sarStandItemsDto.getBusStandCover()) + .build(); + sarItemsTime.add(itemsTime); + } + + } + }else if (!StringUtils.isEmpty(ids)){ + String[] Sids=new String[1]; + Sids[0]=ids; + List ItemDto = dao.selectAllItemsByIds(type,Sids); + standsTimeDto=dao.selectStandTime(ids); + for (SarStandItemsDto sarStandItemsDto:ItemDto){ + SarItemsTime itemsTime = SarItemsTime.builder() + .id(sarStandItemsDto.getId()) + .standId(sarStandItemsDto.getStandId()) + .itemsName(sarStandItemsDto.getItemsName()) + .itemsNum(sarStandItemsDto.getItemsNum()) + .responsibleUnit(sarStandItemsDto.getResponsibleUnit()) + .XCXSSRQ(sarStandItemsDto.getXcxssrq()) + .ZCCSSRQ(sarStandItemsDto.getZccssrq()) + .svpps(sarStandItemsDto.getSvpps()) + .applyArctic(sarStandItemsDto.getApplyArctic()) + .claimType(sarStandItemsDto.getClaimType()) + .busStandCover(sarStandItemsDto.getBusStandCover()) + .build(); + sarItemsTime.add(itemsTime); + } + }else { + List ItemDto = dao.selectAllItemsByIds(type,null); + List standsTimeDtos = dao.selectStandTimeAll(); + for (SarStandItemsDto sarStandItemsDto:ItemDto){ + for (StandsTimeDto standsTimeDto1:standsTimeDtos){ + if (sarStandItemsDto.getStandId().equals(standsTimeDto1.getStandId())){ + SarItemsTime itemsTime = SarItemsTime.builder() + .id(sarStandItemsDto.getId()) + .standId(sarStandItemsDto.getStandId()) + .itemsName(sarStandItemsDto.getItemsName()) + .itemsNum(sarStandItemsDto.getItemsNum()) + .responsibleUnit(sarStandItemsDto.getResponsibleUnit()) + .XCXSSRQ(sarStandItemsDto.getXcxssrq()) + .ZCCSSRQ(sarStandItemsDto.getZccssrq()) + .svpps(sarStandItemsDto.getSvpps()) + .applyArctic(sarStandItemsDto.getApplyArctic()) + .claimType(sarStandItemsDto.getClaimType()) + .busStandCover(sarStandItemsDto.getBusStandCover()) + .build(); + sarItemsTime.add(itemsTime); + } + } + } + } + + return sarItemsTime; + } + + @Override + public IPage selectLawDto(FindStandDto findStandDto) { + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); + page.setPage(findStandDto.getPage()); + page.setPageSize(findStandDto.getSize()); + page.setUserId(null); + List standId = new ArrayList<>(); + List list = sarLawsAttrDetailedListDao.selectLawsByIdC((findStandDto.getPage()-1)*findStandDto.getSize(),findStandDto.getPage()*findStandDto.getSize(),standId,findStandDto.getStandName(), findStandDto.getStandType(),findStandDto.getFileType()); + + IPage page1=new Page<>(); + page1.setRecords(list); + page1.setTotal(sarLawsAttrDetailedListDao.selectLawsByIdCount(standId,findStandDto.getStandName(),findStandDto.getStandType(),findStandDto.getFileType()).size()); + return page1; + } + + @Override + public String sarStandItemsaveBatch(List sarStandItems) { + if (null!=sarStandItems && sarStandItems.size()>0) { + List strings=new ArrayList<>(); + sarStandItems.forEach(sarStandItems1 -> { + strings.add(sarStandItems1.getItemsNum()); + }); + sarStandItemsDao.deleteByStandIdAndFileTypes(sarStandItems.get(0).getStandId(), sarStandItems.get(0).getFileType(),strings); + } + boolean flag=this.saveBatch(sarStandItems); + if (flag){ + return "0"; + }else { + return "1"; + } + } + + public List findAllItems(String type,String[] ids){ + List list=dao.selectAllItemsByIds(type,ids); + List res=new ArrayList<>(); + List chinese=new ArrayList<>(); + if (null == list || list.isEmpty()){ + return list; + }else { + List integerList=new ArrayList<>(); + Map> map=new HashMap<>(); + list.forEach(sarStandItemsDto -> { + int a= sarStandItemsDto.getItemsNum().indexOf("."); + String mark=sarStandItemsDto.getItemsNum(); + if (a>0){ + mark=mark.substring(0,a); + } + try { + if (null != map.get(Integer.valueOf(mark))) { + map.get(Integer.valueOf(mark)).add(sarStandItemsDto); + } else { + integerList.add(Integer.valueOf(mark)); + List middle = new ArrayList<>(); + middle.add(sarStandItemsDto); + map.put(Integer.valueOf(mark), middle); + } + }catch (Exception e){ + chinese.add(sarStandItemsDto); + } + }); + Collections.sort(integerList); + integerList.forEach(integer -> { + res.addAll(map.get(integer)); + }); + res.addAll(chinese); + return res; + } + } + + public List findItemById(String type,String[] ids){ + List list=dao.findItemById(type,ids); + List res=new ArrayList<>(); + List chinese=new ArrayList<>(); + if (null == list || list.isEmpty()){ + return list; + }else { + List integerList=new ArrayList<>(); + Map> map=new HashMap<>(); + list.forEach(sarStandItemsDto -> { + int a= sarStandItemsDto.getItemsNum().indexOf("."); + String mark=sarStandItemsDto.getItemsNum(); + if (a>0){ + mark=mark.substring(0,a); + } + try { + if (null != map.get(Integer.valueOf(mark))) { + map.get(Integer.valueOf(mark)).add(sarStandItemsDto); + } else { + integerList.add(Integer.valueOf(mark)); + List middle = new ArrayList<>(); + middle.add(sarStandItemsDto); + map.put(Integer.valueOf(mark), middle); + } + }catch (Exception e){ + chinese.add(sarStandItemsDto); + } + }); + Collections.sort(integerList); + integerList.forEach(integer -> { + res.addAll(map.get(integer)); + }); + res.addAll(chinese); + return res; + } + } + + + public List querySarItemAndInterpretation(FindSarItemsPageReqDTO page){ + //排序 + if (page.getOrderBy()!=null && page.getOrder()!=null){ + + switch (page.getOrderBy()){ + case "itemsNum" : page.setOrderBy("ITEMS_NUM"); break; + default:page.setOrderBy("ITEMS_NUM"); page.setOrder("ASC"); + } + + switch (page.getOrder()){ + case "descending":page.setOrder("DESC");break; + default:page.setOrder("ASC"); + } + }else { + page.setOrderBy("ITEMS_NUM"); + page.setOrder("ASC"); + } + + //分页查询的总数 + Integer count=dao.sarItemCount(page); + page.getPager().setRowCount(count); + List sarStandItems = dao.querySarItemAndInterpretation(page); + sarStandItems.forEach(sarStandItems1 -> sarStandItems1.setTermsConditions(StringUtils.replace(sarStandItems1.getTermsConditions(),"''","'"))); + List dicTypeEOList = iDicTypeEOService.getTypeIdByDicIdAndTypeName("VBMNNTHJG", null, null, null); + Map dicTypeMap = dicTypeEOList.stream().collect(Collectors.toMap(DicTypeEO::getDicTypeCode,DicTypeEO::getDicTypeName)); + for (SarStandItems sarStandItems1 : sarStandItems){ + String srcx = sarStandItems1.getApplyArctic(); + List srcxList = new ArrayList<>(); + if (null != srcx && !srcx.contains("[")){ + String[] srcxArray = srcx.split(","); + for (String srcxString : srcxArray){ + String ss = dicTypeMap.get(srcxString); + if (null != ss) { + srcxList.add(ss); + } + } + } + if (!CollectionUtils.isEmpty(srcxList)){ + sarStandItems1.setApplyArctic(String.join(",",srcxList)); + } + } + for (SarStandItems sarStandItems1 : sarStandItems){ + String srcx = sarStandItems1.getApplyArctic(); + if (null != srcx && srcx.contains("[")){ + //这么修改是因为存储的就有问题,数据库存储数据就有问题 + sarStandItems1.setApplyArctic(srcx.replace("[","").replace("]","").replace("\"","")); + } + } + return sarStandItems; + } + + public List> getFileType(String standId){ + List fileType = dao.getFileType(standId); + List res=new ArrayList<>(); + res= (List) CollectionUtils.union(InitStandAttrUtil.standInlandAttrFieldList, InitStandAttrUtil.standForeignAttrFieldList); + Map typeNameMap = res.stream() + .collect(Collectors.toMap(SarStandAttrDetails::getAttrField, SarStandAttrDetails::getAttrName)); + + List> collect = fileType.stream() + .map(item -> new HashMap(){ { put("label", typeNameMap.get(item));put("value", item);} } + ).collect(Collectors.toList()); + + + return collect; + } + + public List> getFileTypeHG(String standId){ + List fileType = dao.getFileTypeHG(standId); + List res=new ArrayList<>(); + res= (List) CollectionUtils.union(InitStandAttrUtil.standInlandAttrFieldList, InitStandAttrUtil.standForeignAttrFieldList); + Map typeNameMap = res.stream() + .collect(Collectors.toMap(SarStandAttrDetails::getAttrField, SarStandAttrDetails::getAttrName)); + + List> collect = fileType.stream() + .map(item -> new HashMap(){ { put("label", typeNameMap.get(item));put("value", item);} } + ).collect(Collectors.toList()); + + + return collect; + } + + public List findTermsConditions(List idsList) { + List sarStandItemsDtos = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(idsList)) { + sarStandItemsDtos = sarStandItemsDao.findTermsConditions(idsList); + } + return sarStandItemsDtos; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/controller/SarStandMenuController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/controller/SarStandMenuController.java new file mode 100644 index 00000000..527eb8d6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/controller/SarStandMenuController.java @@ -0,0 +1,109 @@ +package com.adc.da.slrs.sarStandMenu.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarMenu.service.ISarMenuService; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarStandMenu.service.ISarStandMenuService; +import com.adc.da.util.UUIDUtils; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarStandMenu.entity.SarStandMenu; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-01 +*/ +@RestController +@Api(description = "|SarStandMenu|") +@RequestMapping("/${restPath}/lawss/sarStandMenu") +public class SarStandMenuController extends BaseController { + + @Autowired + private ISarStandMenuService sarStandMenuEOService; + + @Autowired + private ITsResourceService sarMenuEOService; + + @ApiOperation(value = "|SarStandMenuEO|修改") + @PutMapping("/removeStandInfo") +// @RequiresPermissions("lawss:sarStandMenu:update") + public ResponseMessage update(@RequestBody SarStandMenu standardsInfoEO) throws Exception { + String[] idList = standardsInfoEO.getIdlist(); + int count = 0; + if(idList != null){ + for(String id : idList){ + SarStandMenu menuEO = new SarStandMenu(); + menuEO.setStandId(id); + menuEO.setMenuId(standardsInfoEO.getMenuId()); + //删除所选目录下关联 + String oldMenuId = standardsInfoEO.getOldMenuId(); + if (StringUtils.isEmpty(oldMenuId)) { + oldMenuId = standardsInfoEO.getMenuId(); + } + menuEO.setOldMenuId(oldMenuId); + count += sarStandMenuEOService.deleteByMenuId(menuEO); + //查询是否还有与其他节点的关联,若没有则增加与根节点的关联 + List getList = sarStandMenuEOService.selectAllMenuByStandId(menuEO); + if (getList == null || getList.isEmpty()) { + // 查询根节点 + TsResource sarMenuEO = new TsResource(); + sarMenuEO.setSorDivide(standardsInfoEO.getStandType() + "_STAND"); + List getRootMenu = sarMenuEOService.queryMenuByDis(sarMenuEO); + menuEO.setMenuId(getRootMenu.get(0).getId()); + menuEO.setId(UUIDUtils.randomUUID20()); + menuEO.setValidFlag(0); + sarStandMenuEOService.saveOrUpdate(menuEO); + } + } + } + if(count>0){ + return Result.success("0","移除成功!",true); + } else { + return Result.error("移除失败!"); + } + } + + @ApiOperation(value = "|SarStandMenuEO|移动标准") + @PutMapping("/moveStandInfo") + public ResponseMessage moveStandInfo(@RequestBody SarStandMenu standardsInfoEO){ + String[] idList = standardsInfoEO.getIdlist(); + int count = 0; + if(idList != null){ + for(String id : idList){ + SarStandMenu menuEO = new SarStandMenu(); + menuEO.setStandId(id); + //删除所选旧目录下关联, 存在 旧目录是目标标准所属目录的上级目录的情况 + menuEO.setOldMenuId(standardsInfoEO.getOldMenuId()); // 旧目录 + count+= sarStandMenuEOService.deleteByMenuId(menuEO); + + //新增新的关联 + menuEO.setMenuId(standardsInfoEO.getMenuId()); // 新目录 + menuEO.setId(UUIDUtils.randomUUID20()); + menuEO.setValidFlag(0); + sarStandMenuEOService.saveOrUpdate(menuEO); + } + } + if(count>0){ + return Result.success("0","移动成功!",true); + } else { + return Result.error("移动失败!"); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/dao/SarStandMenuDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/dao/SarStandMenuDao.java new file mode 100644 index 00000000..ccda4edd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/dao/SarStandMenuDao.java @@ -0,0 +1,34 @@ +package com.adc.da.slrs.sarStandMenu.dao; + +import com.adc.da.slrs.sarStandMenu.entity.SarStandMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Resource +public interface SarStandMenuDao extends BaseMapper { + + int deleteByStandId(String standId); + + List selectMenuByMenuParentId(SarStandMenu sarStandMenuEO); + + int updateByStandIdAndMenuId(SarStandMenu sarStandMenuEO); + + int deleteByStandIdAndMenuId(SarStandMenu sarStandMenuEO); + + int deleteByMenuId (SarStandMenu sarStandMenuEO); + + List selectAllMenuByStandId(SarStandMenu sarStandMenuEO); + + List getMenuByStandId(SarStandMenu sarStandMenu); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/entity/SarStandMenu.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/entity/SarStandMenu.java new file mode 100644 index 00000000..83100e02 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/entity/SarStandMenu.java @@ -0,0 +1,67 @@ +package com.adc.da.slrs.sarStandMenu.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Transient; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandMenu对象", description="") +public class SarStandMenu extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "目录ID") + @TableField("MENU_ID") + private String menuId; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @TableField(exist = false) + private String oldMenuId; + + @TableField(exist = false) + private String standType; + + @TableField(exist = false) + private String[] idlist; + + @TableField(exist = false) + private List menuIds; + + + @TableField(exist = false) + private String menuName; + + @TableField(exist = false) + private String standCode; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/service/ISarStandMenuService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/service/ISarStandMenuService.java new file mode 100644 index 00000000..c96f9818 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/service/ISarStandMenuService.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.sarStandMenu.service; + +import com.adc.da.slrs.sarStandMenu.entity.SarStandMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarStandMenuService extends IService { + + int deleteByMenuId (SarStandMenu sarStandMenuEO); + + List selectAllMenuByStandId(SarStandMenu sarStandMenuEO); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/service/impl/SarStandMenuServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/service/impl/SarStandMenuServiceImpl.java new file mode 100644 index 00000000..889b796e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/service/impl/SarStandMenuServiceImpl.java @@ -0,0 +1,43 @@ +package com.adc.da.slrs.sarStandMenu.service.impl; + +import com.adc.da.slrs.sarMenu.service.ISarMenuService; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarStandMenu.entity.SarStandMenu; +import com.adc.da.slrs.sarStandMenu.dao.SarStandMenuDao; +import com.adc.da.slrs.sarStandMenu.service.ISarStandMenuService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarStandMenuServiceImpl extends ServiceImpl implements ISarStandMenuService { + + @Autowired + private SarStandMenuDao dao; + + @Autowired + private ITsResourceService sarMenuEOService; + + @Override + public int deleteByMenuId (SarStandMenu sarStandMenuEO){ + List menuIds = sarMenuEOService.getChildMenuList(sarStandMenuEO.getOldMenuId()); + sarStandMenuEO.setMenuIds(menuIds); + return dao.deleteByMenuId(sarStandMenuEO); + } + + @Override + public List selectAllMenuByStandId(SarStandMenu sarStandMenuEO){ + return dao.selectAllMenuByStandId(sarStandMenuEO); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/controller/SarStandPartCodeApplyController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/controller/SarStandPartCodeApplyController.java new file mode 100644 index 00000000..32fb0284 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/controller/SarStandPartCodeApplyController.java @@ -0,0 +1,109 @@ +package com.adc.da.slrs.sarStandPartCodeApply.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandPartCodeApply.entity.SarStandPartCodeApply; +import com.adc.da.slrs.sarStandPartCodeApply.entity.SarStandPartCodeApplyPage; +import com.adc.da.slrs.sarStandPartCodeApply.entity.StandPartCodeExcelVO; +import com.adc.da.slrs.sarStandPartCodeApply.service.ISarStandPartCodeApplyService; +import com.adc.da.slrs.sarStandardsInfo.controller.SarStandardsInfoController; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +@RestController +@Api(tags = "零部件编号申请", value = "SarStandPartCodeApplyController", description = "零部件编号申请控制类") +@RequestMapping("/api/sarStandPartCodeApply")//前端和后端对的接口 +public class SarStandPartCodeApplyController extends BaseController { + + //创建日志实例 + private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoController.class); + + @Autowired + private ISarStandPartCodeApplyService sarStandPartCodeApplyService; + + @ApiOperation("零部件编号申请新增") + @PostMapping("/add") + public ResponseMessage add(@RequestBody List sarStandPartCodeApply) { + sarStandPartCodeApply.forEach(sarStandPartCodeApply1 -> sarStandPartCodeApply1.setCreateTime(new Date())); + if (sarStandPartCodeApplyService.saveBatch(sarStandPartCodeApply)) { + return Result.success("新增成功"); + } else { + return Result.error("新增失败"); + } + } + + /** + * 分页查询零部件 + * + * @param sarStandPartCodeApplyPage: 筛选、分页信息 + * @return IPage + */ + @ApiOperation("分页查询零部件") + @GetMapping + public ResponseMessage> getSarStandPartCodeApplyPage(SarStandPartCodeApplyPage sarStandPartCodeApplyPage) { + IPage sarStandPartCodeApplyIPage = sarStandPartCodeApplyService.getSarStandPartCodeApplyPage(sarStandPartCodeApplyPage); + return Result.success(sarStandPartCodeApplyIPage); + } + + /** + * 批量删除零部件 + * + * @param idList + * @return + */ + @ApiOperation(value = "批量删除零部件") + @PostMapping("/deleteListAll") + public ResponseMessage deleteListAll(String[] idList) { + if (idList == null || idList.length == 0) { + return Result.success("200", "要删除的数据为空"); + } else { + List list = new ArrayList<>(Arrays.asList(idList)); + String src = sarStandPartCodeApplyService.del(list); + return Result.success("200", src); + } + } + + @ApiOperation("导出Excel表") + @GetMapping(value = "exportPartInfoExcel") + public void exportPartInfoExcel(StandPartCodeExcelVO standPartCodeExcelVO, HttpServletResponse response) throws Exception { + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + if (standPartCodeExcelVO.getExportName() == null) { + standPartCodeExcelVO.setExportName("零部件申请信息"); + } + String fileName = URLEncoder.encode(standPartCodeExcelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List data = sarStandPartCodeApplyService.getPartInfoExcelData(standPartCodeExcelVO); + //这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), SarStandPartCodeApply.class).autoCloseStream(Boolean.FALSE) + .sheet("sheet1").doWrite(data); + } catch (Exception e) { + System.out.println(e); + //重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(Result.error())); + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/dao/SarStandPartCodeApplyDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/dao/SarStandPartCodeApplyDao.java new file mode 100644 index 00000000..a51ef362 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/dao/SarStandPartCodeApplyDao.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.sarStandPartCodeApply.dao; + +import com.adc.da.slrs.sarStandPartCodeApply.entity.SarStandPartCodeApply; +import com.adc.da.slrs.sarStandPartCodeApply.entity.SarStandPartCodeApplyPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface SarStandPartCodeApplyDao extends BaseMapper { + IPage getAllDatasByPage(Page page, @Param("sar")SarStandPartCodeApplyPage sarStandPartCodeApply); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/SarStandPartCodeApply.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/SarStandPartCodeApply.java new file mode 100644 index 00000000..a8b93259 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/SarStandPartCodeApply.java @@ -0,0 +1,84 @@ +package com.adc.da.slrs.sarStandPartCodeApply.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value = "SarStandPartCodeApply对象",description = "SarStandPartCodeApply基础表里的所有属性") +public class SarStandPartCodeApply extends BaseEntity { + + //版本号 + private static final long serialVersionUID = 1L; + + @ExcelIgnore//这个字段在导出Excel的时候不显示在Excel表头里 + @ApiModelProperty(value = "主键")//接口标志 + @TableId(type = IdType.UUID)//数据库表里的主键 + private String id; + + @ExcelProperty("子组号")//Excel里的表头显示的是什么 + @ApiModelProperty(value = "子组号")//接口标志 + @TableField("SUBGROUP_NUMBER")//数据库表里的字段 + private String subgroupNumber; + + @ExcelProperty("子组结构号")//Excel里的表头显示的是什么 + @ApiModelProperty(value = "子组结构号")//接口标志 + @TableField("SUBGROUP_STRUCTURE_NUMBER")//数据库表里的字段 + private String subgroupStructureNumber; + + @ExcelProperty("子组结构名称")//Excel里的表头显示的是什么 + @ApiModelProperty(value = "子组结构名称")//接口标志 + @TableField("SUBGROUP_STRUCTURE_NAME")//数据库表里的字段 + private String subgroupStructureName; + + @ExcelProperty("分组代号")//Excel里的表头显示的是什么 + @ApiModelProperty(value = "分组代号")//接口标志 + @TableField("GROUP_CODE")//数据库表里的字段 + private String groupCode; + + @ExcelProperty("零部件分类名称")//Excel里的表头显示的是什么 + @ApiModelProperty(value = "零部件分类名称")//接口标志 + @TableField("PART_CATEGORY_NAME")//数据库表里的字段 + private String partCategoryName; + + @ExcelProperty("零部件分类代号")//Excel里的表头显示的是什么 + @ApiModelProperty(value = "零部件分类代号")//接口标志 + @TableField("PART_CATEGORY_CODE")//数据库表里的字段 + private String partCategoryCode; + + @ExcelProperty("备注")//Excel里的表头显示的是什么 + @ApiModelProperty(value = "备注")//接口标志 + @TableField("REMARKS")//数据库表里的字段 + private String remarks; + + @ExcelIgnore//这个字段在导出Excel的时候不显示在Excel表头里 + @ApiModelProperty(value = "创建部门")//接口标志 + @TableField("CREATE_DEPT_ID")//数据库表里的字段 + private String createDeptId; + + @ExcelIgnore//这个字段在导出Excel的时候不显示在Excel表头里 + @ApiModelProperty(value = "创建人")//接口标志 + @TableField("CREATE_BY_ID")//数据库表里的字段 + private String createById; + + @ExcelIgnore//这个字段在导出Excel的时候不显示在Excel表头里 + @ApiModelProperty(value = "创建时间")//接口标志 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//时间格式化 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//时间格式化 + @TableField("CREATE_TIME")//数据库表里的字段 + private Date createTime; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/SarStandPartCodeApplyPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/SarStandPartCodeApplyPage.java new file mode 100644 index 00000000..2c5d819f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/SarStandPartCodeApplyPage.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.sarStandPartCodeApply.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.sql.Timestamp; + +@Data +@ApiModel(value = "SarStandPartCodeApply分页",description = "SarStandPartCodeApply对象分页信息") +public class SarStandPartCodeApplyPage { + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "子组号") + private String subgroupNumber; + + @ApiModelProperty(value = "子组结构号") + private String subgroupStructureNumber; + + @ApiModelProperty(value = "子组结构名称") + private String subgroupStructureName; + + @ApiModelProperty(value = "分组代号") + private String groupCode; + + @ApiModelProperty(value = "零部件分类名称") + private String partCategoryName; + + @ApiModelProperty(value = "零部件分类代号") + private String partCategoryCode; + + @ApiModelProperty(value = "备注") + private String remarks; + + @ApiModelProperty(value = "创建部门") + private String createDeptId; + + @ApiModelProperty(value = "创建人") + private String createById; + + @ApiModelProperty(value = "创建时间") + private Timestamp createTime; + + @ApiModelProperty("当前页") + private Integer current; + + @ApiModelProperty("每页条数") + private Integer size; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/StandPartCodeExcelVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/StandPartCodeExcelVO.java new file mode 100644 index 00000000..03bb1163 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/entity/StandPartCodeExcelVO.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandPartCodeApply.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(description = "零部件申请ExcelVO类") +public class StandPartCodeExcelVO { + @ApiModelProperty("文件名") + String exportName; + @ApiModelProperty("导出的零部件ID列表") + List ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/service/ISarStandPartCodeApplyService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/service/ISarStandPartCodeApplyService.java new file mode 100644 index 00000000..d2a1b4dc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/service/ISarStandPartCodeApplyService.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.sarStandPartCodeApply.service; + +import com.adc.da.slrs.sarStandPartCodeApply.entity.SarStandPartCodeApply; +import com.adc.da.slrs.sarStandPartCodeApply.entity.SarStandPartCodeApplyPage; +import com.adc.da.slrs.sarStandPartCodeApply.entity.StandPartCodeExcelVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface ISarStandPartCodeApplyService extends IService { + + /** + * 分页查询零部件 + * @param sarStandPartCodeApplyPage: 筛选、分页信息 + * @return: IPage + */ + IPage getSarStandPartCodeApplyPage(SarStandPartCodeApplyPage sarStandPartCodeApplyPage); + + /** + * 批量删除零件申请信息 + * @param idList + * @return + */ + String del(List idList); + + /** + * 获取导出Excel的数据 + * @param standPartCodeExcelVO: ids + * @return List + */ + List getPartInfoExcelData(StandPartCodeExcelVO standPartCodeExcelVO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/service/impl/SarStandPartCodeApplyServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/service/impl/SarStandPartCodeApplyServiceImpl.java new file mode 100644 index 00000000..e25edf6a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPartCodeApply/service/impl/SarStandPartCodeApplyServiceImpl.java @@ -0,0 +1,91 @@ +package com.adc.da.slrs.sarStandPartCodeApply.service.impl; + +import com.adc.da.slrs.sarStandPartCodeApply.dao.SarStandPartCodeApplyDao; +import com.adc.da.slrs.sarStandPartCodeApply.entity.SarStandPartCodeApply; +import com.adc.da.slrs.sarStandPartCodeApply.entity.SarStandPartCodeApplyPage; +import com.adc.da.slrs.sarStandPartCodeApply.entity.StandPartCodeExcelVO; +import com.adc.da.slrs.sarStandPartCodeApply.service.ISarStandPartCodeApplyService; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class SarStandPartCodeApplyServiceImpl extends ServiceImpl implements ISarStandPartCodeApplyService { + + @Autowired + private SarStandPartCodeApplyDao sarStandPartCodeApplyDao; + + @Resource + private SarStandardsInfoDao sarStandardsInfoDao; + + /** + * 分页查询零部件信息 + * @param sarStandPartCodeApplyPage: 筛选、分页信息 + * @return :IPage + */ + @Override + public IPage getSarStandPartCodeApplyPage(SarStandPartCodeApplyPage sarStandPartCodeApplyPage){ + QueryWrapper sarStandPartCodeApplyQueryWrapper = new QueryWrapper<>(); + //根据子组号查询 + if (sarStandPartCodeApplyPage.getSubgroupNumber() != null){ + sarStandPartCodeApplyQueryWrapper.like("SUBGROUP_NUMBER",sarStandPartCodeApplyPage.getSubgroupNumber()); + } + //根据分组代号查询 + if (sarStandPartCodeApplyPage.getGroupCode() != null){ + sarStandPartCodeApplyQueryWrapper.like("GROUP_CODE",sarStandPartCodeApplyPage.getGroupCode()); + } + //根据零件分类代号查询 + if (sarStandPartCodeApplyPage.getPartCategoryCode() != null){ + sarStandPartCodeApplyQueryWrapper.like("PART_CATEGORY_CODE",sarStandPartCodeApplyPage.getPartCategoryCode()); + } + Page standPartCodeApplyPage=new Page<>(); + //判断前端是否提供页码和每页条数 + if (sarStandPartCodeApplyPage.getCurrent()!=null && sarStandPartCodeApplyPage.getSize()!=null){ + standPartCodeApplyPage = new Page<>(sarStandPartCodeApplyPage.getCurrent(),sarStandPartCodeApplyPage.getSize()); + } + return sarStandPartCodeApplyDao.selectPage(standPartCodeApplyPage,sarStandPartCodeApplyQueryWrapper); + } + + /** + * 批量删除零部件信息 + * @param idList: 批量删除的id数组 + * @return + */ + @Override + public String del(List idList){ + QueryWrapper wrapper = new QueryWrapper<>(); + for (String id: idList) { + wrapper.eq("ID",id); + sarStandPartCodeApplyDao.delete(wrapper); + } + sarStandPartCodeApplyDao.deleteBatchIds(idList); + return "删除成功"; + } + + /** + * 获取导出excel的数据 + * @param standPartCodeExcelVO: ids + * @return List + */ + @Override + public List getPartInfoExcelData(StandPartCodeExcelVO standPartCodeExcelVO){ + QueryWrapper sarStandPartCodeApplyQueryWrapper = new QueryWrapper<>(); + if (standPartCodeExcelVO.getIds()!=null && standPartCodeExcelVO.getIds().size()>0){ + sarStandPartCodeApplyQueryWrapper.in("id",standPartCodeExcelVO.getIds()); + } + List stand = sarStandPartCodeApplyDao.selectList(sarStandPartCodeApplyQueryWrapper); + List a = stand; + return a; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/controller/SarStandProjectLibraryController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/controller/SarStandProjectLibraryController.java new file mode 100644 index 00000000..841c3917 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/controller/SarStandProjectLibraryController.java @@ -0,0 +1,404 @@ +package com.adc.da.slrs.sarStandProjectLibrary.controller; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandProjectLibrary.dao.standDTO; +import com.adc.da.slrs.sarStandProjectLibrary.entity.*; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.ResponseDto; +import com.adc.da.slrs.sarStandProjectLibrary.service.impl.SarStandProjectLibraryServiceImpl; +import com.adc.da.util.utils.StringUtils; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.*; +/** + *

    + * 前端控制器 + *

    + * + * @author ZhangJin + * @since 2021-06-15 + */ +@RestController +@Api(description = "|SarStandProjectLibrary|") +@RequestMapping("/${restPath}/sarStandProjectLibrary") +@Slf4j +public class SarStandProjectLibraryController extends BaseController { + @Resource + private SarStandProjectLibraryServiceImpl sarStandProjectLibraryService; + /** + * + * @param Page + * @param PageSize + * @param sarDto + * @return + * @author zj + * date 2021-06-22 + **/ + @GetMapping("/queryProject") + @ApiOperation("车型/项目库") + public ResponseMessage queryMaintenanceProject(@RequestParam(defaultValue = "1", required=false,value = "page")int Page, @RequestParam(defaultValue = "10", required=false,value = "pageSize") int PageSize, + SarStandProjectLibraryDto sarDto) { + IPage MaintenanceList = sarStandProjectLibraryService.queryMaintenanceProject(Page,PageSize,sarDto); + IPage notMaintenanceList = sarStandProjectLibraryService.queryNotMaintenanceProject(Page,PageSize,sarDto); + Map map = new HashMap(); + map.put("Maintenance",MaintenanceList); + map.put("notMaintenance",notMaintenanceList); + return Result.success("200",map); + } + + @GetMapping("/solostar") + @ApiOperation("车型/项目库") + public ResponseMessage queryMaintenanceProjectsolostar() { + return Result.success("200",sarStandProjectLibraryService.solostar()); + } + + @GetMapping("/queryProjectConfirm") + @ApiOperation("车型/项目库-清单标准确认流程用") + public ResponseMessage queryMaintenanceProjectConfirm(@RequestParam(defaultValue = "1", value = "Page")int Page, @RequestParam(defaultValue = "10", value = "PageSize") int PageSize,SarStandProjectLibraryDto sarDto) { + IPage MaintenanceList = sarStandProjectLibraryService.queryMaintenanceProjectConfirm(Page,PageSize,sarDto); + Map map = new HashMap(); + map.put("total",MaintenanceList); + return Result.success("200",map); + } + + @GetMapping("/queryProjectWorkFlow") + @ApiOperation("车型/项目库-!!!") + public ResponseMessage queryMaintenanceProjectWorkFlow(int Page, int PageSize,SarStandProjectLibraryDto sarDto) { + IPage MaintenanceList = sarStandProjectLibraryService.queryMaintenanceProjectWorkFlow(Page,PageSize,sarDto); + Map map = new HashMap(); + map.put("Maintenance",MaintenanceList); + return Result.success("200",map); + } + /** + * + * @param id + * @return + * @author zj + * date 2021-06-22 + **/ + @GetMapping("/queryById") + @ApiOperation("点击项目id查询") + public ResponseMessage queryByName(String id){ + List list = sarStandProjectLibraryService.queryById(id); + return Result.success("200",list); + } + /** + * + * @param current + * @param pageSize + * @return + * @author zj + * date 2021-07-13 + **/ + @GetMapping("/queryProjectManager") + @ApiOperation("查询产品线项目经理") + public ResponseMessage queryProjectManager(@RequestParam(defaultValue = "1", value = "current")int current, @RequestParam(defaultValue = "10", value = "PageSize") int pageSize, standDTO standDTO){ + IPage list1 = sarStandProjectLibraryService.queryProjectManager(current,pageSize, standDTO); + // 创建一个新的list集合,用于存储去重后的元素 + List listTemp = new ArrayList(); + for (SarStandProjectLibrary sarStandProjectLibrary:list1.getRecords()){ + productLineDto p = new productLineDto(); + p.setProductLine(sarStandProjectLibrary.getProductLine()); + p.setUName(sarStandProjectLibrary.getUName()); + p.setProjectManager(sarStandProjectLibrary.getProjectManager()); + List list2 = sarStandProjectLibraryService.queryByProductLine(sarStandProjectLibrary.getProductLine()); + p.setSarStandProjectLibraries(list2); + listTemp.add(p); + } + IPage pageres=new Page<>(); + pageres.setRecords(listTemp); + pageres.setPages(list1.getPages()); + pageres.setTotal(list1.getTotal()); + pageres.setCurrent(list1.getCurrent()); + pageres.setSize(list1.getSize()); + return Result.success("200",pageres); + } + + /** + * + * @param current + * @param pageSize + * @return + * @author zj + * date 2021-07-13 + **/ + @GetMapping("/queryProjectManagerXL") + @ApiOperation("查询产品线项目经理") + public ResponseMessage queryProjectManagerXL(@RequestParam(defaultValue = "1", value = "current")int current, @RequestParam(defaultValue = "10", value = "PageSize") int pageSize, standDTO standDTO){ + IPage list1 = sarStandProjectLibraryService.queryProjectManagerXL(current,pageSize, standDTO); + // 创建一个新的list集合,用于存储去重后的元素 + List listTemp = new ArrayList(); + for (SarStandProjectLibrary sarStandProjectLibrary:list1.getRecords()){ + productLineDto p = new productLineDto(); + p.setProductLine(sarStandProjectLibrary.getProductLine()); + List list2 = sarStandProjectLibraryService.queryByProductLineXL(sarStandProjectLibrary.getProductLine()); + p.setSarStandProjectLibraries(list2); + listTemp.add(p); + } + IPage pageres=new Page<>(); + pageres.setRecords(listTemp); + pageres.setPages(list1.getPages()); + pageres.setTotal(list1.getTotal()); + pageres.setCurrent(list1.getCurrent()); + pageres.setSize(list1.getSize()); + return Result.success("200",pageres); + } + + @GetMapping("/queryProjectUnderLine") + @ApiOperation("查询产品线项目经理") + public ResponseMessage queryProjectUnderLine(@RequestParam(defaultValue = "1", value = "current")int current, + @RequestParam(defaultValue = "10", value = "PageSize") int pageSize, + standDTO standDTO){ + List strings=new ArrayList<>(); + if (!standDTO.getProductLine().isEmpty()){ + if (standDTO.getProductLine().contains(",")){ + strings.addAll(new ArrayList<>(Arrays.asList(standDTO.getProductLine().split(",")))); + }else { + strings.add(standDTO.getProductLine()); + } + } + Page page=new Page(); + page.setCurrent(current); + page.setSize(pageSize); + QueryWrapper queryWrapper=new QueryWrapper<>(); + if (null!=standDTO.getProjectNumber()) { + queryWrapper.like("project_number", standDTO.getProjectNumber()); + } + if (null!=standDTO.getProjectName()) { + queryWrapper.like("project_name", standDTO.getProjectName()); + } + queryWrapper.in("product_line",strings); + queryWrapper.orderByAsc("product_line"); + // 创建一个新的list集合,用于存储去重后的元素 + IPage pageres=sarStandProjectLibraryService.page(page,queryWrapper); + return Result.success("200",pageres); + } + /** + * + * @param current + * @param pageSize + * @param id + * @return + * @author zj + * date 2021-07-15 + **/ + @GetMapping("/queryStandInfo") + @ApiOperation("查询标准信息") + public ResponseMessage queryStandInfo(@RequestParam(defaultValue = "1", value = "current")int current, @RequestParam(defaultValue = "10", value = "PageSize") int pageSize, + String id,String cars){ +// List list = sarStandProjectLibraryService.queryStandId(id); +// List list1 = new ArrayList(); +// for(SarStandProjectLibrary s:list){ +// list1.add(s.getStandId()); +// } +// System.out.println(list1); + IPage list = sarStandProjectLibraryService.queryStandInfo(current,pageSize,id,cars); + return Result.success("200",list); + } + + /** + * + * @param current + * @param pageSize + * @param id + * @return + * @author zj + * date 2021-07-15 + **/ + @GetMapping("/queryStandInfoNew") + @ApiOperation("查询标准信息") + public ResponseMessage queryStandInfoNew(@RequestParam(defaultValue = "1", value = "current")int current, @RequestParam(defaultValue = "10", value = "PageSize") int pageSize, + String id,String cars){ +// List list = sarStandProjectLibraryService.queryStandId(id); +// List list1 = new ArrayList(); +// for(SarStandProjectLibrary s:list){ +// list1.add(s.getStandId()); +// } +// System.out.println(list1); + IPage list = sarStandProjectLibraryService.queryStandInfoNew(current,pageSize,id,cars); + return Result.success("200",list); + } + /** + * + * @param id + * @return + * @author zj + * date 2021-07-15 + **/ + @PostMapping("/deleteByIds") + @ApiOperation("批量删除标准") + public ResponseMessage deleteByIds(String id){ + //从 项目id-标准id,项目id-标准id 拆分成 一个个 项目id-标准id + String[] ids = id.split(","); + String proId = null; + String standId = null; + //声明List + List list = new ArrayList<>(); + for (int i=0;i< ids.length;i++){ + StandProjectRelationDto standProjectRelationDto = new StandProjectRelationDto(); + //引入一个变量来记录"-"的位置 + int breakPosition = ids[i].indexOf("-"); + //proId 项目id 是从头开始到分隔符为止的字符串 + proId = ids[i].substring(0,breakPosition); + //standId 标准id 是从分隔符+1位开始到结束为止的字符串 + standId = ids[i].substring(breakPosition+1); + //把项目id赋值 + standProjectRelationDto.setProjectId(proId); + //把标准id赋值 + standProjectRelationDto.setStandId(standId); + //把值放到list里 + list.add(standProjectRelationDto); + } + + sarStandProjectLibraryService.deleteByIds(list); + return Result.success("200","删除成功"); + } + /** + * + * @param list + * @return + * @author zj + * date 2021-07-15 + **/ + @PostMapping("/batchInsert") + @ApiOperation("调取标准") + public ResponseMessage batchInsert(@RequestBody List list){ + sarStandProjectLibraryService.batchInsert(list); + return Result.success("200","新增成功",list); + } + + /** + * + * @param list + * @return + * @author zj + * date 2021-07-15 + **/ + @PostMapping("/batchInsertAdd") + @ApiOperation("调取标准") + public ResponseMessage batchInsertAdd(@RequestBody List list){ + sarStandProjectLibraryService.batchInsertAdd(list); + return Result.success("200","新增成功",list); + } + /** + * + * @param standAttrInfoExcelDto + * @param response + * @return + * @author zj + * date 2021-07-16 + **/ + @ApiOperation("导出Excel表") + @GetMapping(value = "/exportStandAttrInfoExcel") + public void exportStandAttrInfoExcel(StandAttrInfoExcelDto standAttrInfoExcelDto, HttpServletResponse response,String id) throws Exception { + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + if(standAttrInfoExcelDto.getExportName()==null){ + standAttrInfoExcelDto.setExportName("车型项目详情"); + } + String fileName = URLEncoder.encode(standAttrInfoExcelDto.getExportName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List data= sarStandProjectLibraryService.exportStandAttrInfoExcel(standAttrInfoExcelDto,id); + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), StandAttrInfoDto.class).useDefaultStyle(false).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(data); + } catch (Exception e) { + System.out.println(e); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(Result.error())); + } + } + + + @PostMapping("/save") + @ApiOperation("同步车型项目数据") + public ResponseDto save(@RequestBody String jsonStr){ + log.info("======================================开始同步车型项目数据========================================"); + log.info("同步数据内容:" + jsonStr); + if (StringUtils.isBlank(jsonStr)) { + log.info("同步数据内容为空"); + return null; + } + Head head = sarStandProjectLibraryService.AnalysisJsonAndStorage(jsonStr); + + ResponseDto responseDto = new ResponseDto(head); + log.info("======================================结束同步车型项目数据========================================"); + return responseDto; + } + + @PostMapping("/querySelect") + @ApiOperation("查询筛选条件项") + public ResponseMessage querySelect(SarStandProjectLibrary sarStandProjectLibrary){ + QueryWrapper qw = new QueryWrapper(); + if(StringUtils.isNotBlank(sarStandProjectLibrary.getManagementHostName())){ + qw.eq("management_host_name",sarStandProjectLibrary.getManagementHostName()); + } + if(StringUtils.isNotBlank(sarStandProjectLibrary.getDevelopmentHostName())){ + qw.eq("development_host_name",sarStandProjectLibrary.getDevelopmentHostName()); + } + if(StringUtils.isNotBlank(sarStandProjectLibrary.getCategoryName())){ + qw.eq("category_name",sarStandProjectLibrary.getCategoryName()); + } + + List list = sarStandProjectLibraryService.list(qw); + List managementHostList = new ArrayList<>(); + List developmentHostList = new ArrayList<>(); + List categoryList = new ArrayList<>(); + List statusList=new ArrayList<>(); + for(SarStandProjectLibrary sarStandProjectLibrary1 : list){ + if(null!= sarStandProjectLibrary1.getManagementHostName()&& !"".equals(sarStandProjectLibrary1.getManagementHostName()) && !managementHostList.contains(sarStandProjectLibrary1.getManagementHostName())){ + managementHostList.add(sarStandProjectLibrary1.getManagementHostName()); + } + if(null!= sarStandProjectLibrary1.getDevelopmentHostName()&& !"".equals(sarStandProjectLibrary1.getDevelopmentHostName()) && !developmentHostList.contains(sarStandProjectLibrary1.getDevelopmentHostName())){ + developmentHostList.add(sarStandProjectLibrary1.getDevelopmentHostName()); + } + if(null!= sarStandProjectLibrary1.getCategoryName()&& !"".equals(sarStandProjectLibrary1.getCategoryName()) && !categoryList.contains(sarStandProjectLibrary1.getCategoryName())){ + categoryList.add(sarStandProjectLibrary1.getCategoryName()); + } + if (null!= sarStandProjectLibrary1.getProjectStatus()&& !"".equals(sarStandProjectLibrary1.getProjectStatus()) && !statusList.contains(sarStandProjectLibrary1.getProjectStatus())){ + statusList.add(sarStandProjectLibrary1.getProjectStatus()); + } + } + QuerySelectRspDTO querySelectRspDTO = QuerySelectRspDTO.builder() + .managementHostList(managementHostList) + .developmentHostList(developmentHostList) + .categoryList(categoryList) + .statusList(statusList) + .build(); + return Result.success(querySelectRspDTO); + } + //标准评估流程 查询项目群接口 + @GetMapping("/queryProjectGroup") + @ApiOperation("查询项目群") + public ResponseMessage queryProjectGroup(@RequestParam(defaultValue = "1", value = "current")int current, + @RequestParam(defaultValue = "10", value = "PageSize") int pageSize, + SarStandProjectLibrary sarStandProjectLibrary){ + return Result.success( sarStandProjectLibraryService.queryProjectGroup(current,pageSize,sarStandProjectLibrary)); + } + //标准评估流程根据项目群查项目接口 + @GetMapping("/queryProjects") + @ApiOperation("查询项目群下的项目") + public ResponseMessage queryProjects(@RequestParam(defaultValue = "1", value = "current")int current, + @RequestParam(defaultValue = "10", value = "PageSize") int pageSize,SarStandProjectLibrary sarStandProjectLibrary){ + return Result.success( sarStandProjectLibraryService.queryProjects(current,pageSize,sarStandProjectLibrary)); + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/dao/SarStandProjectLibraryDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/dao/SarStandProjectLibraryDao.java new file mode 100644 index 00000000..034aa33e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/dao/SarStandProjectLibraryDao.java @@ -0,0 +1,45 @@ +package com.adc.da.slrs.sarStandProjectLibrary.dao; + +import com.adc.da.slrs.sarStandProjectLibrary.entity.SarStandProjectLibrary; +import com.adc.da.slrs.sarStandProjectLibrary.entity.StandProjectRelationDto; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author ZhangJin + * @since 2021-06-15 + */ +public interface SarStandProjectLibraryDao extends BaseMapper { + List queryProjectManagerPage(@Param("current") int current, @Param("pageSize") int pageSize); + void deleteByIds(@Param("ids") List ids); + void updateFlag(@Param("projectId") String projectId); + void batchInsert(@Param("list") List list); + List selectPages(@Param("page")Integer page, @Param("size")Integer size,@Param("qu") SarStandProjectLibrary sar,@Param("flag")int flag); + List selectPagessolostar(@Param("flag")int flag,@Param("type")String type); + Integer selectCount(@Param("qu") SarStandProjectLibrary sar,@Param("flag")int flag); + List selectPagesWorkFlow(@Param("page")Integer page, @Param("size")Integer size,@Param("qu") SarStandProjectLibrary sar,@Param("flag")int flag); + List selectPagesWorkFlowsolostar(@Param("flag")int flag,@Param("type")String type); + Integer selectCountWorkFlow(@Param("qu") SarStandProjectLibrary sar,@Param("flag")int flag); + List getAllStands(); + List getAllStand(); + void updateByProjectId(@Param("id")String id, @Param("version")String version); + List updateByProjectIdBath(@Param("id")List id, @Param("version")String version); + + void deleteByProjectId(@Param("projectId")String projectId); + + void deleteByProjectIdAndStandId(@Param("projectId")String projectId,@Param("standId")String standId); + + List selectListByids(@Param("ids") List ids); + List queryProjectGroup(@Param("current")int current,@Param("size")int size,@Param("sarStandProjectLibrary") SarStandProjectLibrary sarStandProjectLibrary); + Integer queryProjectGroupCount(@Param("sarStandProjectLibrary") SarStandProjectLibrary sarStandProjectLibrary); + + List queryProjects(@Param("current")int current,@Param("size")int size,@Param("sarStandProjectLibrary") SarStandProjectLibrary sarStandProjectLibrary,@Param("groups")List strings); + Integer queryProjectsCount(@Param("sarStandProjectLibrary") SarStandProjectLibrary sarStandProjectLibrary,@Param("groups")List strings); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/dao/standDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/dao/standDTO.java new file mode 100644 index 00000000..ea981228 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/dao/standDTO.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.sarStandProjectLibrary.dao; + +import lombok.Data; + +@Data +public class standDTO { + + private String uname; + + private String productLine; + + private String projectName; + + private String projectNumber; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/QuerySelectRspDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/QuerySelectRspDTO.java new file mode 100644 index 00000000..4f316dbb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/QuerySelectRspDTO.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +@Data +@Builder +public class QuerySelectRspDTO { + + private List managementHostList; + + private List developmentHostList; + + private List categoryList; + + private List statusList; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/SarStandProjectLibrary.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/SarStandProjectLibrary.java new file mode 100644 index 00000000..e9f942be --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/SarStandProjectLibrary.java @@ -0,0 +1,125 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +/** + *

    + * + *

    + * + * @author ZhangJin + * @since 2021-06-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandProjectLibrary对象", description="") +public class SarStandProjectLibrary extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("id") + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "产品平台") + private String projectPlatfor; + + @ApiModelProperty(value = "项目编号") + private String projectNumber; + + @ApiModelProperty(value = "项目名称") + private String projectName; + + @ApiModelProperty(value = "项目分类") + private String projectClassification; + + @ApiModelProperty(value = "项目状态") + private String projectStatus; + + @ApiModelProperty(value = "项目群") + private String projectGroup; + + + @ApiModelProperty(value = "项目开始日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date projectStartDate; + + + @ApiModelProperty(value = "项目完成日期") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date projectEndDate; + + @ApiModelProperty(value = "当前节点") + private String currentNode; + + @ApiModelProperty(value = "项目级别") + private String projectLevel; + + @ApiModelProperty(value = "产品线") + private String productLine; + + @ApiModelProperty(value = "项目经理") + private String projectManager; + + @ApiModelProperty(value = "项目经理名称") + @TableField(exist = false) + private String uName; + + @TableField("detailed_list_version") + private String detailedListVersion; + + @ApiModelProperty(value = "管理主体名称") + private String managementHostName; + + @ApiModelProperty(value = "开发主体名称") + private String developmentHostName; + + @ApiModelProperty(value = "项目细分类名称") + private String categoryName; + + @ApiModelProperty(value = "项目清单维护情况 ( 1:已维护 其他未维护)") + private String flag; + + + //标准编号 + @TableField(exist = false) + private String standId; + //中文名称 + @TableField(exist = false) + private String standName; + //英文名称 + @TableField(exist = false) + private String standEnName; + //标准实施日期 + @TableField(exist = false) + private String ssrq; + //新车型实施日期 + @TableField(exist = false) + private String XCXSSRQGJ; + //在产车实施日期 + @TableField(exist = false) + private String ZCCSSRQGJ; + //责任部门 + @TableField(exist = false) + private String ZRBM; + //关联模块-VPPS + @TableField(exist = false) + private String CYCVPPSBM; + //关联模块-中文名称 + @TableField(exist = false) + private String CYCVPPSCN; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/SarStandProjectLibraryDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/SarStandProjectLibraryDto.java new file mode 100644 index 00000000..df431ee1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/SarStandProjectLibraryDto.java @@ -0,0 +1,54 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * //TODO + * + * @author 作者信息 + * @date 2021-06-16 + */ +@Data +public class SarStandProjectLibraryDto { + + private String projectPlatfor; + + private String projectNumber; + + private String projectName; + + private String projectClassification; + + private String projectStatus; + + private String projectGroup; + + private String projectStartDate; + + private String projectEndDate; + + private String currentNode; + + private String projectLevel; + + private String projectManager; + + private String productLine; + + private String detailedListVersion; + + @ApiModelProperty(value = "管理主体名称") + private String managementHostName; + + @ApiModelProperty(value = "开发主体名称") + private String developmentHostName; + + @ApiModelProperty(value = "项目细分类名称") + private String categoryName; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandAttrInfoDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandAttrInfoDto.java new file mode 100644 index 00000000..361e245d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandAttrInfoDto.java @@ -0,0 +1,72 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; +/** + * //TODO 添加类/接口功能描述 + * + * @author zhangjin + * @date 2021-07-13 + */ +@Data +@HeadRowHeight(35) +@ColumnWidth(30) +@ExcelIgnoreUnannotated +public class StandAttrInfoDto { + //主键 + private String standId; + //标准编号 + @ExcelProperty("标准号") + private String standNumber; + //标准类别 + private String standSort; + //标准年份 + private String standYear; + //标准类型 + private String standType; + //中文名称 + @ExcelProperty("中文名称") + private String standName; + //英文名称 + @ExcelProperty("英文名称") + private String standEnName; + //标准实施日期 + @ExcelProperty("标准实施日期") + private String SSRQ; + //新车型实施日期 数据库中字段实际没有GJ 如需要修改 可修改此处 + @ExcelProperty("新车型实施日期") + private String XCXSSRQ; + //在产车实施日期 + @ExcelProperty("在产车实施日期") + private String ZCCSSRQ; + //责任部门 + @ExcelProperty("责任部门") + private String ZRBM; + +// @ExcelProperty("文本状态") + private String textStatus; +// //关联模块--卡车VPPS编码 +// @ExcelProperty("关联模块--卡车VPPS编码") +// private String KCCVPPSBM; +// //关联模块--卡车vpps中文名称 +// @ExcelProperty("关联模块--卡车vpps中文名称") +// private String KCCVPPSCN; +// //关联模块--乘用车VPPS编码 +// @ExcelProperty("关联模块--乘用车VPPS编码") +// private String CYCVPPSBM; +// //关联模块--乘用车vpps中文名称 +// @ExcelProperty("关联模块--乘用车vpps中文名称") +// private String CYCVPPSCN; + + private Long unCount; + + private String endTimes; +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandAttrInfoExcelDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandAttrInfoExcelDto.java new file mode 100644 index 00000000..e13d44c2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandAttrInfoExcelDto.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * //TODO 添加类/接口功能描述 + * + * @author zhangjin + * @date 2021-07-15 + */ +@Data +public class StandAttrInfoExcelDto { + + String exportName; + + List ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandProjectRelationDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandProjectRelationDto.java new file mode 100644 index 00000000..42dffe91 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/StandProjectRelationDto.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity; + +import lombok.Data; + +/** + * //TODO 添加类/接口功能描述 + * + * @author zhangjin + * @date 2021-07-13 + */ +@Data +public class StandProjectRelationDto { + + private String projectId; + + private String standId; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/Head.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/Head.java new file mode 100644 index 00000000..679e9700 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/Head.java @@ -0,0 +1,54 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Head extends BaseEntity { + private String BIZTRANSACTIONID; + private String RESULT; + private String ERRORCODE; + private String ERRORINFO; + private String COMMENTS; + private String SUCCESSCOUNT; + + public Head(String BIZTRANSACTIONID, String RESULT, String ERRORCODE, String ERRORINFO, String COMMENTS, String SUCCESSCOUNT) { + this.BIZTRANSACTIONID = BIZTRANSACTIONID; + this.RESULT = RESULT; + this.ERRORCODE = ERRORCODE; + this.ERRORINFO = ERRORINFO; + this.COMMENTS = COMMENTS; + this.SUCCESSCOUNT = SUCCESSCOUNT; + } + + public Head(){}; + + + @JsonProperty("BIZTRANSACTIONID") + public String getBIZTRANSACTIONID() { + return BIZTRANSACTIONID; + } + @JsonProperty("RESULT") + public String getRESULT() { + return RESULT; + } + @JsonProperty("ERRORCODE") + public String getERRORCODE() { + return ERRORCODE; + } + @JsonProperty("ERRORINFO") + public String getERRORINFO() { + return ERRORINFO; + } + @JsonProperty("COMMENTS") + public String getCOMMENTS() { + return COMMENTS; + } + @JsonProperty("SUCCESSCOUNT") + public String getSUCCESSCOUNT() { + return SUCCESSCOUNT; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/MyResult.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/MyResult.java new file mode 100644 index 00000000..cab3896c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/MyResult.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class MyResult { +// private String COMPANY_CODE; +// +// private String FISCAL_YEAR; + + private String msg; + + private String code; + + private boolean success; + + + public MyResult(){ + this.msg=""; + this.code=""; + this.success=true; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/ResponseDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/ResponseDto.java new file mode 100644 index 00000000..4b020348 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/myResponse/ResponseDto.java @@ -0,0 +1,45 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.Arrays; +import java.util.List; +@Data +public class ResponseDto { + + private Head HEAD; + +// private List LIST; + +// public ResponseDto(Head HEAD, List LIST) { +// this.HEAD = HEAD; +// this.LIST = LIST; +// } + + + List LIST; + + public ResponseDto(Head HEAD, List LIST) { + this.HEAD = HEAD; + this.LIST = LIST; + } + + public ResponseDto(Head HEAD) { + + + this.LIST=Arrays.asList(new MyResult()); + this.HEAD=HEAD; + } + + @JsonProperty("HEAD") + public Head getHEAD() { + return HEAD; + } + + @JsonProperty("LIST") + public List getLIST() { + return LIST; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/productLineDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/productLineDto.java new file mode 100644 index 00000000..f5f47d70 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/entity/productLineDto.java @@ -0,0 +1,17 @@ +package com.adc.da.slrs.sarStandProjectLibrary.entity; + +import lombok.Data; + +import java.util.List; + +@Data +public class productLineDto { + + private String uName; + + private String productLine; + + private String projectManager; + + private List sarStandProjectLibraries; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/SarStandProjectLibraryService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/SarStandProjectLibraryService.java new file mode 100644 index 00000000..c9f697d1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/SarStandProjectLibraryService.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.sarStandProjectLibrary.service; + +import com.adc.da.slrs.sarStandProjectLibrary.dao.standDTO; +import com.adc.da.slrs.sarStandProjectLibrary.entity.*; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface SarStandProjectLibraryService { + IPage queryMaintenanceProject(int current, int pageSize, SarStandProjectLibraryDto sarDto); + List queryMaintenanceProjectsolostar(String type); + IPage queryMaintenanceProjectWorkFlow(int current, int pageSize, SarStandProjectLibraryDto sarDto); + IPage queryMaintenanceProjectConfirm(int current, int pageSize, SarStandProjectLibraryDto sarDto); + IPage queryNotMaintenanceProject(int current, int pageSize, SarStandProjectLibraryDto sarDto); + List queryNotMaintenanceProjectsolostar(String type); + Map solostar(); + List queryById(String id); + IPage queryProjectManager(int current, int pageSize, standDTO standDTO); + IPage queryProjectManagerXL(int current, int pageSize, standDTO standDTO); + List queryByProductLine(String productLine); + List queryByProductLineXL(String productLine); + List queryStandId(String standId); + IPage queryStandInfo(int current, int pageSize, String standId, String cars); + + IPage queryStandInfoNew(int current, int pageSize, String standId, String cars); + void deleteByIds(List ids); + void batchInsert(@Param("ids") List list); + void batchInsertAdd(@Param("ids") List list); + List exportStandAttrInfoExcel(StandAttrInfoExcelDto standAttrInfoExcelDto,String standId); + public Head AnalysisJsonAndStorage(String jsonStr); + public IPage queryProjectGroup(@Param("current")int current,@Param("size")int size, @Param("sarStandProjectLibrary") SarStandProjectLibrary sarStandProjectLibrary); + + public IPage queryProjects(@Param("current")int current,@Param("size")int size, @Param("sarStandProjectLibrary") SarStandProjectLibrary sarStandProjectLibrary); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/impl/SarStandProjectLibraryServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/impl/SarStandProjectLibraryServiceImpl.java new file mode 100644 index 00000000..54ae351c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectLibrary/service/impl/SarStandProjectLibraryServiceImpl.java @@ -0,0 +1,797 @@ +package com.adc.da.slrs.sarStandProjectLibrary.service.impl; +import com.adc.da.ocr.util.UUIDUtils; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; +import com.adc.da.slrs.sarStandProjectLibrary.dao.standDTO; +import com.adc.da.slrs.sarStandProjectLibrary.entity.*; +import com.adc.da.slrs.sarStandProjectLibrary.dao.SarStandProjectLibraryDao; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.adc.da.slrs.sarStandProjectLibrary.service.SarStandProjectLibraryService; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.sys.service.IDicTypeEOService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.mysql.cj.x.protobuf.MysqlxDatatypes; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + *

    + * 服务实现类 + *

    + * + * @author ZhangJin + * @since 2021-06-15 + */ +@Service +public class SarStandProjectLibraryServiceImpl extends ServiceImpl implements SarStandProjectLibraryService { + @Resource + private SarStandProjectLibraryDao sarStandProjectLibraryDao; + @Resource + private SarStandardsInfoDao SarStandardsInfoDao; + @Resource + private SarStandAttrInfoDao sarStandAttrInfoDao; + @Resource + private IDicTypeEOService iDicTypeEOService; + + public String TimeVersion(){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(); + String version = simpleDateFormat.format(date); + return version; + } + + @Override + public Head AnalysisJsonAndStorage(String jsonStr){ + Head head = new Head(); + + + try { + //是数组就JSONarray,是对象就JSONobject + //把字符串转换成对象 + JsonObject jsonObject = (JsonObject) new JsonParser().parse(jsonStr); + //要把jsonObject里的HEAD强转成JsonObject类型 + JsonObject HEAD = (JsonObject) jsonObject.get("HEAD"); + //因为是最后要取的值了,所以就拿到之后把它转换成String类型 + ; + HEAD.get("CONSUMER").getAsString(); + + head.setBIZTRANSACTIONID(HEAD.get("BIZTRANSACTIONID").getAsString()); + + List strings=new ArrayList<>(); + strings.add("G4"); + strings.add("G9"); + strings.add("G8"); + strings.add("G7"); + + + //LIST是数组,所以强转成JSONArray + JsonArray LIST = (JsonArray) jsonObject.get("LIST"); + for (int i = 0; i < LIST.size(); i++) { + //把数组中的第一个强转成对象 + JsonObject projectObject = (JsonObject) LIST.get(i); + + //把刚刚拿到的值存到实体类里 + SarStandProjectLibrary projectInfo = new SarStandProjectLibrary(); + projectInfo + .setProjectPlatfor(projectObject.get("eng_platform")==null?"":projectObject.get("eng_platform").getAsString()) + .setProjectNumber(projectObject.get("code")==null?"":projectObject.get("code").getAsString()) + .setProjectName(projectObject.get("name")==null?"":projectObject.get("name").getAsString()) + .setProjectClassification(projectObject.get("catalog_name")==null?"":projectObject.get("catalog_name").getAsString()) + .setProjectStatus(projectObject.get("project_status_name")==null?"":projectObject.get("project_status_name").getAsString()) + .setProjectGroup(projectObject.get("project_group_name")==null?"":projectObject.get("project_group_name").getAsString()) + .setCurrentNode(projectObject.get("project_current_milestone")==null?"":projectObject.get("project_current_milestone").getAsString()) + .setProjectLevel(projectObject.get("project_level")==null?"":projectObject.get("project_level").getAsString()) + .setProductLine(projectObject.get("eng_product_line")==null?"":projectObject.get("eng_product_line").getAsString()) + .setManagementHostName(projectObject.get("management_host_name")==null?"":projectObject.get("management_host_name").getAsString()) + .setDevelopmentHostName(projectObject.get("development_host_name")==null?"":projectObject.get("development_host_name").getAsString()) + .setCategoryName(projectObject.get("category_name")==null?"":projectObject.get("category_name").getAsString()); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + if(projectObject.get("target_begin_on") != null){ + Date targetBeginOn = simpleDateFormat.parse(projectObject.get("target_begin_on").getAsString()); + projectInfo + .setProjectStartDate(targetBeginOn); + } + + if(projectObject.get("target_end_on") != null){ + Date targetEndOn = simpleDateFormat.parse(projectObject.get("target_end_on").getAsString()); + projectInfo + .setProjectEndDate(targetEndOn); + } + + projectInfo.setId(UUIDUtils.randomUUID20()); + QueryWrapper updateCondition = new QueryWrapper(); + updateCondition.eq("project_number",projectInfo.getProjectNumber()); + SarStandProjectLibrary res=this.getOne(updateCondition); + if (strings.contains(projectInfo.getCurrentNode().trim()) && !res.getCurrentNode().trim().equals(projectInfo.getCurrentNode())){ + projectInfo.setFlag("0"); + } + +// .eq("project_start_date",targetBeginOn); + this.saveOrUpdate(projectInfo,updateCondition); + + } + }catch (Exception e){ + e.printStackTrace(); + head.setERRORCODE("2"); + head.setRESULT("业务失败需要重做"); + return head; + } + head.setERRORCODE("0"); + head.setRESULT("成功"); + + return head; + } + + @Override + public IPage queryProjectGroup(int current,int size,SarStandProjectLibrary sarStandProjectLibrary) { + size = 10000; + List sarStandProjectLibraries=sarStandProjectLibraryDao.queryProjectGroup(current,size,sarStandProjectLibrary); + Integer total=sarStandProjectLibraryDao.queryProjectGroupCount(sarStandProjectLibrary); + Page page=new Page<>(); + page.setRecords(sarStandProjectLibraries); + page.setTotal(total); + page.setCurrent(current); + page.setSize(size); + return page; + } + + @Override + public IPage queryProjects(int current,int size, SarStandProjectLibrary sarStandProjectLibrary) { + List ids=new ArrayList<>(); + if (null!=sarStandProjectLibrary.getProjectGroup() && !"".equals(sarStandProjectLibrary.getProjectGroup())){ + if (sarStandProjectLibrary.getProjectGroup().contains(",")){ + ids.addAll(new ArrayList<>(Arrays.asList(sarStandProjectLibrary.getProjectGroup().split(",")))); + }else { + ids.add(sarStandProjectLibrary.getProjectGroup()); + } + } + IPage sarStandProjectLibraryIPage=new Page<>(); + List sarStandProjectLibraries=sarStandProjectLibraryDao.queryProjects(current,size,sarStandProjectLibrary,ids); + Integer total=sarStandProjectLibraryDao.queryProjectsCount(sarStandProjectLibrary,ids); + sarStandProjectLibraryIPage.setTotal(total); + sarStandProjectLibraryIPage.setCurrent(current); + sarStandProjectLibraryIPage.setSize(size); + sarStandProjectLibraryIPage.setRecords(sarStandProjectLibraries); + + return sarStandProjectLibraryIPage; + } + + @Override + public IPage queryMaintenanceProject(int current, int pageSize, + SarStandProjectLibraryDto sarDto) { + SarStandProjectLibrary sar = new SarStandProjectLibrary(); + sar.setProjectPlatfor(sarDto.getProjectPlatfor()); + sar.setProjectNumber(sarDto.getProjectNumber()); + sar.setProjectName(sarDto.getProjectName()); + sar.setProjectClassification(sarDto.getProjectClassification()); + sar.setProjectStatus(sarDto.getProjectStatus()); + sar.setProjectGroup(sarDto.getProjectGroup()); + sar.setCurrentNode(sarDto.getCurrentNode()); + sar.setProjectLevel(sarDto.getProjectLevel()); + sar.setProjectManager(sarDto.getProjectManager()); + sar.setProductLine(sarDto.getProductLine()); + SimpleDateFormat formater = new SimpleDateFormat(); + formater.applyPattern("yyyy-MM-dd"); + try { + if (sarDto.getProjectStartDate()!=null){ + sar.setProjectStartDate(formater.parse(sarDto.getProjectStartDate())); + } + if (sarDto.getProjectEndDate()!=null){ + sar.setProjectEndDate(formater.parse(sarDto.getProjectEndDate())); + } + } catch (ParseException e) { + e.printStackTrace(); + } + int flag=2; + return getSarStandProjectLibraryIPage(current, pageSize, sar,flag); + } + + @Override + public List queryMaintenanceProjectsolostar(String type) { + int flag=2; + return getSarStandProjectLibraryIPagesolostar(flag,type); + } + @Override + public IPage queryMaintenanceProjectWorkFlow(int current, int pageSize, + SarStandProjectLibraryDto sarDto) { + SarStandProjectLibrary sar = new SarStandProjectLibrary(); + sar.setProjectPlatfor(sarDto.getProjectPlatfor()); + sar.setProjectNumber(sarDto.getProjectNumber()); + sar.setProjectName(sarDto.getProjectName()); + sar.setProjectClassification(sarDto.getProjectClassification()); + sar.setProjectStatus(sarDto.getProjectStatus()); + sar.setProjectGroup(sarDto.getProjectGroup()); + sar.setCurrentNode(sarDto.getCurrentNode()); + sar.setProjectLevel(sarDto.getProjectLevel()); + sar.setProjectManager(sarDto.getProjectManager()); + sar.setProductLine(sarDto.getProductLine()); + sar.setManagementHostName(sarDto.getManagementHostName()); + sar.setDevelopmentHostName(sarDto.getDevelopmentHostName()); + sar.setCategoryName(sarDto.getCategoryName()); + SimpleDateFormat formater = new SimpleDateFormat(); + formater.applyPattern("yyyy-MM-dd"); + try { + if (sarDto.getProjectStartDate()!=null){ + sar.setProjectStartDate(formater.parse(sarDto.getProjectStartDate())); + } + if (sarDto.getProjectEndDate()!=null){ + sar.setProjectEndDate(formater.parse(sarDto.getProjectEndDate())); + } + } catch (ParseException e) { + e.printStackTrace(); + } + int flag=3; + return getSarStandProjectLibraryIPage(current, pageSize, sar,flag); + } + + @Override + public IPage queryMaintenanceProjectConfirm(int current, int pageSize, + SarStandProjectLibraryDto sarDto) { + SarStandProjectLibrary sar = new SarStandProjectLibrary(); + sar.setProjectPlatfor(sarDto.getProjectPlatfor()); + sar.setProjectNumber(sarDto.getProjectNumber()); + sar.setProjectName(sarDto.getProjectName()); + sar.setProjectClassification(sarDto.getProjectClassification()); + sar.setProjectStatus(sarDto.getProjectStatus()); + sar.setProjectGroup(sarDto.getProjectGroup()); + sar.setCurrentNode(sarDto.getCurrentNode()); + sar.setProjectLevel(sarDto.getProjectLevel()); + sar.setProjectManager(sarDto.getProjectManager()); + sar.setProductLine(sarDto.getProductLine()); + sar.setManagementHostName(sarDto.getManagementHostName()); + sar.setCategoryName(sarDto.getCategoryName()); + sar.setDevelopmentHostName(sarDto.getDevelopmentHostName()); + SimpleDateFormat formater = new SimpleDateFormat(); + formater.applyPattern("yyyy-MM-dd"); + try { + if (sarDto.getProjectStartDate()!=null){ + sar.setProjectStartDate(formater.parse(sarDto.getProjectStartDate())); + } + if (sarDto.getProjectEndDate()!=null){ + sar.setProjectEndDate(formater.parse(sarDto.getProjectEndDate())); + } + } catch (ParseException e) { + e.printStackTrace(); + } + int flag=4; + return getSarStandProjectLibraryIPage(current, pageSize, sar,flag); + } + @Override + public IPage queryNotMaintenanceProject(int current, int pageSize, + SarStandProjectLibraryDto sarDto) { + SarStandProjectLibrary sar = new SarStandProjectLibrary(); + sar.setProjectPlatfor(sarDto.getProjectPlatfor()); + sar.setProjectNumber(sarDto.getProjectNumber()); + sar.setProjectName(sarDto.getProjectName()); + sar.setProjectClassification(sarDto.getProjectClassification()); + sar.setProjectStatus(sarDto.getProjectStatus()); + sar.setProjectGroup(sarDto.getProjectGroup()); + sar.setCurrentNode(sarDto.getCurrentNode()); + sar.setProjectLevel(sarDto.getProjectLevel()); + sar.setProjectManager(sarDto.getProjectManager()); + sar.setProductLine(sarDto.getProductLine()); + SimpleDateFormat formater = new SimpleDateFormat(); + formater.applyPattern("yyyy-MM-dd"); + try { + if (sarDto.getProjectStartDate()!=null){ + sar.setProjectStartDate(formater.parse(sarDto.getProjectStartDate())); + } + if (sarDto.getProjectEndDate()!=null){ + sar.setProjectEndDate(formater.parse(sarDto.getProjectEndDate())); + } + } catch (ParseException e) { + e.printStackTrace(); + } + int flag=1; + return getSarStandProjectLibraryIPage(current, pageSize, sar,flag); + } + @Override + public List queryNotMaintenanceProjectsolostar(String type) { + int flag=1; + return getSarStandProjectLibraryIPagesolostar(flag,type); + } + + @Override + public List queryById(String id) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id",id); + List list = sarStandProjectLibraryDao.selectList(wrapper); + return list; + } + @Override + public IPage queryProjectManager(int current, int pageSize, standDTO standDTO) { + StringBuilder stringBuilder=new StringBuilder(); + stringBuilder.append("where 1=1 "); + if (null!=standDTO.getUname() && !"".equals(standDTO.getUname())){ + stringBuilder.append("and s.NAME like '%"+standDTO.getUname()+"%' "); + } + if (null!=standDTO.getProductLine() && !"".equals(standDTO.getProductLine())){ + stringBuilder.append("and sar_stand_project_library.product_line like '%"+standDTO.getProductLine()+"%' "); + } + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("product_line","s.user_id as projectManager","s.NAME AS uName"); + wrapper.last("inner join sar_stand_project_team s on s.project_code = sar_stand_project_library.project_number" + + " and sar_stand_project_library.product_line IS not NULL "+stringBuilder.toString()); + Page page = new Page<>(current, pageSize); + IPage userIPage = sarStandProjectLibraryDao.selectPage(page, wrapper); + System.out.println("总条数"+userIPage.getTotal()); + System.out.println("总页数"+userIPage.getPages()); + return userIPage; + } + + @Override + public IPage queryProjectManagerXL(int current, int pageSize, standDTO standDTO) { + StringBuilder stringBuilder=new StringBuilder(); + stringBuilder.append("where 1=1 "); + if (null!=standDTO.getUname() && !"".equals(standDTO.getUname())){ + stringBuilder.append("and s.NAME like '%"+standDTO.getUname()+"%' "); + } + if (null!=standDTO.getProductLine() && !"".equals(standDTO.getProductLine())){ + stringBuilder.append("and sar_stand_project_library.product_line like '%"+standDTO.getProductLine()+"%' "); + } + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("distinct product_line"); + wrapper.last("inner join sar_stand_project_team s on s.project_code = sar_stand_project_library.project_number" + + " and sar_stand_project_library.product_line IS not NULL "+stringBuilder.toString()); + Page page = new Page<>(current, pageSize); + IPage userIPage = sarStandProjectLibraryDao.selectPage(page, wrapper); + System.out.println("总条数"+userIPage.getTotal()); + System.out.println("总页数"+userIPage.getPages()); + return userIPage; + } + + @Override + public List queryByProductLine(String productLine) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("product_line",productLine); + List list = sarStandProjectLibraryDao.selectList(wrapper); + return list; + } + + @Override + public List queryByProductLineXL(String productLine) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("distinct project_number,project_name"); + wrapper.eq("product_line",productLine); + List list = sarStandProjectLibraryDao.selectList(wrapper); + return list; + } + @Override + public List queryStandId(String standId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("stand_id"); + wrapper.last("INNER JOIN sar_stand_project_relation r ON sar_stand_project_library.id = r.project_id"); + List list = sarStandProjectLibraryDao.selectList(wrapper); + return list; + } + @Override + public IPage queryStandInfo(int current, int pageSize, String standId, String cars) { + + List ids =new ArrayList<>(); + //cars传回值为1时判断是从车型项目库中调取 + if ("1".equals(cars)){ + ids=sarStandProjectLibraryDao.getAllStand(); + } + else { + ids=sarStandProjectLibraryDao.getAllStands(); + } + + String id=""; + for (String s:ids) { + id="'"+s+"',"+id; + } + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.select("ID","STAND_NUMBER","STAND_SORT","STAND_YEAR","STAND_NAME","STAND_EN_NAME","STAND_TYPE"); + if (ids.isEmpty()) { + wrapper1.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_standards_info.ID WHERE r.project_id ='" + standId + "'"); + }else { + wrapper1.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_standards_info.ID WHERE r.project_id ='" + standId + "'" ); +// "and r.STAND_ID in (" + id.substring(0, id.length() - 1) + ")"); + } + Page page1 = new Page<>(current, pageSize); + IPage userIPage1 = SarStandardsInfoDao.selectPage(page1, wrapper1); + System.out.println("总条数"+userIPage1.getTotal()); + System.out.println("总页数"+userIPage1.getPages()); + + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.select("r.STAND_ID","SSRQ","XCXSSRQ","ZCCSSRQ","ZRBM","KCCVPPSBM","KCCVPPSCN","CYCVPPSBM","CYCVPPSCN"); + if (ids.isEmpty()){ + wrapper2.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_stand_attr_info.STAND_ID WHERE r.project_id ='"+ standId+"'"); + }else { + wrapper2.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_stand_attr_info.STAND_ID WHERE r.project_id ='" + standId + "' " ); +// "and r.STAND_ID in (" + id.substring(0,id.length()-1) + ")"); + } + Page page2 = new Page<>(current, pageSize); + IPage userIPage2 = sarStandAttrInfoDao.selectPage(page2, wrapper2); + System.out.println("总条数"+userIPage2.getTotal()); + System.out.println("总页数"+userIPage2.getPages()); + List list = new ArrayList<>(); + List list1 = userIPage1.getRecords(); + List list2 = userIPage2.getRecords(); + for(SarStandardsInfo s:list1){ + StandAttrInfoDto p =new StandAttrInfoDto(); + p.setStandId(s.getId()); + p.setStandNumber(s.getStandNumber()); + p.setStandSort(s.getStandSort()); + p.setStandYear(s.getStandYear()); + p.setStandName(s.getStandName()); + p.setStandType(s.getStandType()); + p.setStandEnName(s.getStandEnName()); + for (SarStandAttrInfo a:list2){ + if(s.getId().equals(a.getStandId())){ +// p.setCYCVPPSBM(a.getCycvppsbm()); +// p.setCYCVPPSCN(a.getCycvppscn()); + p.setSSRQ(a.getSsrq()); + p.setXCXSSRQ(a.getXcxssrq()); + p.setZCCSSRQ(a.getZccssrq()); +// p.setKCCVPPSBM(a.getKccvppsbm()); +// p.setKCCVPPSCN(a.getKccvppscn()); + p.setZRBM(a.getZrbm()); + } + } + list.add(p); + } + IPage userIPage = new Page<>(); + userIPage.setRecords(list); + userIPage.setTotal(userIPage1.getTotal()); + System.out.println("总条数"+userIPage.getTotal()); + System.out.println("总页数"+userIPage.getPages()); + return userIPage; + } + + @Override + public IPage queryStandInfoNew(int current, int pageSize, String standId, String cars) { + + //cars传回值为1时判断是从车型项目库中调取 + + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.select("ID","STAND_NUMBER","STAND_SORT","STAND_YEAR","STAND_NAME","STAND_EN_NAME","TEXT_STATUS","STAND_TYPE","ISSUE_TIME", + "(select count(*) from sar_stand_unqualified ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.CLOSE_STATE = '1' and pn.id = '" + standId + "') as unCount ", + + "(select count(*) from sar_standard_compliance_product_assess ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.no_involve is not null and pn.id = '" + standId + "') as isOverCount ", + + "(select count(*) from sar_standard_compliance_product_assess ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.no_involve is null and pn.id = '" + standId + "') as isCount ", + + "(select count(*) from sar_stand_unqualified ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.CLOSE_STATE = '2' and pn.id = '" + standId + "') as counts ", + + "(select GROUP_CONCAT( DISTINCT DATE_FORMAT( ssu.PLAN_CLOSE_TIME, '%Y-%m-%d' ) ORDER BY ssu.PLAN_CLOSE_TIME ) from sar_stand_unqualified ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.CLOSE_STATE = '1' AND ssu.PLAN_CLOSE_TIME is NOT NULL and pn.id = '" + standId + "') as endTimes "); + wrapper1.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_standards_info.ID WHERE r.project_id ='" + standId + "'" + + "union all " + + "SELECT " + + "ID," + + "STAND_NUMBER," + + "STAND_SORT," + + "STAND_YEAR," + + "STAND_NAME," + + "STAND_EN_NAME," + + "TEXT_STATUS_BUSS as TEXT_STATUS," + + "'BUSINESS_STAND' as STAND_TYPE," + + "ISSUE_TIME,"+ + "(select count(*) from sar_stand_unqualified ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.CLOSE_STATE = '1' and pn.id = '" + standId + "') as unCount, "+ + "(select count(*) from sar_standard_compliance_product_assess ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.no_involve is not null and pn.id = '" + standId + "') as isOverCount, "+ + + "(select count(*) from sar_standard_compliance_product_assess ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.no_involve is null and pn.id = '" + standId + "') as isCount, "+ + "(select count(*) from sar_stand_unqualified ssu " + + "inner join sar_stand_project_library pn on pn.project_number = ssu.product_id" + + " where ssu.STAND_ID = r.stand_id and ssu.CLOSE_STATE = '2' and pn.id = '" + standId + "') as counts, "+ + "(" + + "SELECT " + + "GROUP_CONCAT( DISTINCT DATE_FORMAT( ssu.PLAN_CLOSE_TIME, '%Y-%m-%d' ) ORDER BY ssu.PLAN_CLOSE_TIME ) " + + "FROM " + + "sar_stand_unqualified ssu inner join sar_stand_project_library pn on pn.project_number = ssu.product_id " + + "WHERE " + + "ssu.STAND_ID = r.stand_id " + + "AND ssu.CLOSE_STATE = '1' " + + "AND ssu.PLAN_CLOSE_TIME IS NOT NULL " + + "AND pn.id = '" + standId + "' " + + ") AS endTimes " + + "FROM " + + "sar_bussioness_stand " + + "INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_bussioness_stand.ID " + + "WHERE " + + "r.project_id = '" + standId + "'"); + Page page1 = new Page<>(current, pageSize); + IPage userIPage1 = SarStandardsInfoDao.selectPage(page1, wrapper1); + System.out.println("总条数"+userIPage1.getTotal()); + System.out.println("总页数"+userIPage1.getPages()); + + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.select("r.STAND_ID","SSRQ","XCXSSRQ","ZCCSSRQ","ZRBM","KCCVPPSBM","KCCVPPSCN","CYCVPPSBM","CYCVPPSCN"); + wrapper2.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_stand_attr_info.STAND_ID " + + "WHERE r.project_id ='"+ standId+"'" + + "union all " + + "SELECT r.STAND_ID,'' as SSRQ,'' as XCXSSRQ,'' as ZCCSSRQ,'' as ZRBM,KCVPPSBMBUSS as KCCVPPSBM," + + "KCVPPSCNBUSS as KCCVPPSCN, CYCVPPSBMBUSS as CYCVPPSBM,CYCVPPSCNBUSS as CYCVPPSCN " + + "FROM sar_buss_stand_attr_info " + + "INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_buss_stand_attr_info.STAND_ID " + + "WHERE r.project_id ='" + standId + "'"); + + Page page2 = new Page<>(current, pageSize); + IPage userIPage2 = sarStandAttrInfoDao.selectPage(page2, wrapper2); + System.out.println("总条数"+userIPage2.getTotal()); + System.out.println("总页数"+userIPage2.getPages()); + List list = new ArrayList<>(); + List list1 = userIPage1.getRecords(); + List list2 = userIPage2.getRecords(); + for(SarStandardsInfo s:list1){ + StandAttrInfoDto p =new StandAttrInfoDto(); + p.setStandId(s.getId()); + p.setStandNumber(s.getStandNumber()); + p.setStandSort(s.getStandSort()); + p.setStandYear(s.getStandYear()); + p.setStandName(s.getStandName()); + p.setStandType(s.getStandType()); + p.setStandEnName(s.getStandEnName()); + p.setTextStatus(s.getTextStatus()); + + if (s.getUnCount()==0L && s.getCounts()>0L) { + p.setUnCount(s.getUnCount()); // uncount==0 + }else if (s.getUnCount() == 0L && s.getCounts()==0L){ + p.setUnCount(2L); + }else { // 有不满足时 + p.setUnCount(1L); // 不符合 + } + p.setEndTimes(s.getEndTimes()); + for (SarStandAttrInfo a:list2){ + if(s.getId().equals(a.getStandId())){ + p.setSSRQ(a.getSsrq()); + p.setXCXSSRQ(a.getXcxssrq()); + p.setZCCSSRQ(a.getZccssrq()); + p.setZRBM(a.getZrbm()); + } + } + if(StringUtils.equals(s.getStandType(),"BUSINESS_STAND")){ + p.setSSRQ(s.getIssueTime()); + } + if (0L == s.getUnCount()) { // 没有不满足时 + if (s.getIsCount() != 0L) { // 只有满足和不涉及---符合 + p.setUnCount(0L); // 符合 + } else if (s.getIsOverCount() != 0L) { //只有不涉及---不涉及 + p.setUnCount(-1L); // 不涉及 + } + } + list.add(p); + } + IPage userIPage = new Page<>(); + userIPage.setRecords(list); + userIPage.setTotal(userIPage1.getTotal()); + System.out.println("总条数"+userIPage.getTotal()); + System.out.println("总页数"+userIPage.getPages()); + return userIPage; + } + @Override + public void deleteByIds(List ids) { + sarStandProjectLibraryDao.deleteByIds(ids); + } + + @Override + public void batchInsert(List list) { + if(list!=null && !list.isEmpty()){ + StandProjectRelationDto standProjectRelationDto = list.get(0); + if(standProjectRelationDto!=null && StringUtils.isNotBlank(standProjectRelationDto.getProjectId())){ + sarStandProjectLibraryDao.updateFlag(standProjectRelationDto.getProjectId()); + } + for (StandProjectRelationDto relationDto : list){ + if (StringUtils.isNotBlank(relationDto.getStandId())) { + sarStandProjectLibraryDao.deleteByProjectIdAndStandId(relationDto.getProjectId(), relationDto.getStandId()); + } + } + sarStandProjectLibraryDao.batchInsert(list); + if(standProjectRelationDto!=null && StringUtils.isNotBlank(standProjectRelationDto.getProjectId())){ + sarStandProjectLibraryDao.updateByProjectId(standProjectRelationDto.getProjectId(), TimeVersion()); + } + } + } + + @Override + public void batchInsertAdd(List list) { + List ids=new ArrayList<>(); + List projectIds=new ArrayList<>(); + if(list!=null && !list.isEmpty()){ + list.forEach(standProjectRelationDto -> { + if (!ids.contains(standProjectRelationDto.getStandId())) { + ids.add(standProjectRelationDto.getStandId()); + }}); + } + List standProjectRelationDtos=sarStandProjectLibraryDao.selectListByids(ids); + List ins=new ArrayList<>(); + if(list!=null && !list.isEmpty()){ + list.forEach(standProjectRelationDto -> { + if (!standProjectRelationDtos.contains(standProjectRelationDto.getProjectId())){ + ins.add(standProjectRelationDto); + projectIds.add(standProjectRelationDto.getProjectId()); + } + }); + } + sarStandProjectLibraryDao.batchInsert(ins); + sarStandProjectLibraryDao.updateByProjectIdBath(projectIds, TimeVersion()); + } + + @Override + public List exportStandAttrInfoExcel(StandAttrInfoExcelDto standAttrInfoExcelDto ,String id) { + List ids = standAttrInfoExcelDto.getIds(); + List list = new ArrayList<>(); + String idmis=String.join(",",ids); + System.out.println(idmis); + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.select("ID","STAND_NUMBER","STAND_NAME","STAND_EN_NAME","STAND_TYPE","STAND_YEAR","STAND_SORT"); +// wrapper1.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_standards_info.ID WHERE r.stand_id in ("+ idmis +") and r.project_id = '"+ id+"'"); + wrapper1.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_standards_info.ID WHERE r.stand_id in ("+ idmis +") and r.project_id = '"+ id+"'" + + "union all " + + "SELECT " + + "ID, " + + "STAND_NUMBER, " + + "STAND_NAME, " + + "STAND_EN_NAME, " + + "'' as STAND_TYPE, " + + "STAND_YEAR, " + + "STAND_SORT " + + "FROM " + + "sar_bussioness_stand " + + "INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_bussioness_stand.ID " + + "WHERE " + + "r.stand_id IN ( '5iy8azycsw8vl5tfqckk', 'x0ncqakb4kajf9zdhg2p' ) " + + "AND r.project_id = '5DYWDVEQTNH5PXSP6LWQ'" +// "union all " + +// "SELECT " + +// "ID","STAND_NUMBER","STAND_NAME","STAND_EN_NAME","STAND_TYPE","STAND_YEAR","STAND_SORT" + +// "FROM " + +// "sar_bussioness_stand " + +// "INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_bussioness_stand.ID " + +// "WHERE " + +// "r.project_id = '" + standId + "'" + ); + List userList1 = SarStandardsInfoDao.selectList(wrapper1); + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.select("r.STAND_ID","SSRQ","XCXSSRQ","ZCCSSRQ","ZRBM","KCCVPPSBM","KCCVPPSCN","CYCVPPSBM","CYCVPPSCN"); + wrapper2.last("INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_stand_attr_info.STAND_ID " + + "WHERE r.stand_id in ("+ idmis +") and r.project_id = '"+ id+"'" + + "union all " + + "SELECT r.STAND_ID,'' as SSRQ,'' as XCXSSRQ,'' as ZCCSSRQ,'' as ZRBM,KCVPPSBMBUSS as KCCVPPSBM," + + "KCVPPSCNBUSS as KCCVPPSCN, CYCVPPSBMBUSS as CYCVPPSBM,CYCVPPSCNBUSS as CYCVPPSCN " + + "FROM sar_buss_stand_attr_info " + + "INNER JOIN sar_stand_project_relation r ON r.stand_id = sar_buss_stand_attr_info.STAND_ID " + + "WHERE r.stand_id in ("+ idmis +") and r.project_id = '"+ id+"'"); + List userList2 = sarStandAttrInfoDao.selectList(wrapper2); + + Map map= iDicTypeEOService.getDicTypeListCode(); + List> zrbn = (List>)map.get("ZRBMCLASS"); + for (SarStandAttrInfo l:userList2){ + if (org.apache.commons.lang3.StringUtils.isNotBlank(l.getZrbm()) && l.getZrbm().contains(",")){ + String[] split = l.getZrbm().split(","); + StringBuilder builder = new StringBuilder(); + for (String s:split){ + for (Map map1:zrbn) { + if (map1.get("value").equals(s)){ + s=map1.get("label"); + builder.append(s+","); + break; + } + } + } + String completedString = builder.delete(builder.length()-1,builder.length()).toString(); + l.setZrbm(completedString); + }else { + for (Map map1 : zrbn) { + if (map1.get("value").equals(l.getZrbm())) { + l.setZrbm(map1.get("label")); + break; + } + } + } + } + for(SarStandardsInfo s:userList1){ + StandAttrInfoDto p =new StandAttrInfoDto(); + p.setStandNumber(s.getStandSort()+" "+s.getStandNumber()+"-"+s.getStandYear()); + p.setStandName(s.getStandName()); + p.setStandEnName(s.getStandEnName()); + for (SarStandAttrInfo a:userList2){ + if(s.getId().equals(a.getStandId())){ + if (a.getSsrq()!=null){ + p.setSSRQ(a.getSsrq()); + } + if (a.getXcxssrq()!=null){ + p.setXCXSSRQ(a.getXcxssrq()); + } + if (a.getZccssrq()!=null){ + p.setZCCSSRQ(a.getZccssrq()); + } + p.setZRBM(a.getZrbm()); + } + } + list.add(p); + } + return list; + } + + private IPage getSarStandProjectLibraryIPage(int current, int pageSize,SarStandProjectLibrary wrapper,int flag) { + Page page = new Page<>(current, pageSize); + IPage userIPage = new Page<>(); + if (3!=flag) { + //6922 + List sarStandProjectLibraries = sarStandProjectLibraryDao.selectPages(current, pageSize, wrapper, flag); + Integer count = sarStandProjectLibraryDao.selectCount(wrapper, flag); + userIPage.setCurrent(current); + userIPage.setSize(pageSize); + userIPage.setRecords(sarStandProjectLibraries); + userIPage.setTotal(count); + return userIPage; + } + else { + //6922 + flag=2; + List sarStandProjectLibraries = sarStandProjectLibraryDao.selectPagesWorkFlow(current, pageSize, wrapper, flag); + Integer count = sarStandProjectLibraryDao.selectCountWorkFlow(wrapper, flag); + userIPage.setCurrent(current); + userIPage.setSize(pageSize); + userIPage.setRecords(sarStandProjectLibraries); + userIPage.setTotal(count); + return userIPage; + } + } + + private List getSarStandProjectLibraryIPagesolostar(int flag,String type) { + if (3!=flag) { + List sarStandProjectLibraries = sarStandProjectLibraryDao.selectPagessolostar(flag,type); + return sarStandProjectLibraries; + } + else { + flag=2; + List sarStandProjectLibraries = sarStandProjectLibraryDao.selectPagesWorkFlowsolostar(flag,type); + return sarStandProjectLibraries; + } + } + + + @Override + public Map solostar() { + Map map = new HashMap(); + List MaintenanceProjectClassification; + List MaintenanceProjectStatus; + List notMaintenanceProjectClassification; + List notMaintenanceProjectStatus; + MaintenanceProjectClassification = this.queryMaintenanceProjectsolostar("ProjectClassification"); + MaintenanceProjectStatus = this.queryMaintenanceProjectsolostar("ProjectStatus"); + notMaintenanceProjectClassification = this.queryNotMaintenanceProjectsolostar("ProjectClassification"); + notMaintenanceProjectStatus = this.queryMaintenanceProjectsolostar("ProjectStatus"); + map.put("MaintenanceProjectClassification",MaintenanceProjectClassification); + map.put("MaintenanceProjectStatus",MaintenanceProjectStatus); + map.put("notMaintenanceProjectClassification",notMaintenanceProjectClassification); + map.put("notMaintenanceProjectStatus",notMaintenanceProjectStatus); + + return map; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/controller/SarStandProjectTeamController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/controller/SarStandProjectTeamController.java new file mode 100644 index 00000000..9fe8004f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/controller/SarStandProjectTeamController.java @@ -0,0 +1,46 @@ +package com.adc.da.slrs.sarStandProjectTeam.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.ResponseDto; +import com.adc.da.slrs.sarStandProjectTeam.entity.SarStandProjectTeam; +import com.adc.da.slrs.sarStandProjectTeam.service.ISarStandProjectTeamService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** +*

    + * 前端控制器 + *

    +* +* @author wangxiahui +* @since 2021-08-10 +*/ +@RestController +@Api(description = "|SarStandProjectTeam|") +@RequestMapping("/${restPath}/sar-stand-project-team") +@Slf4j +public class SarStandProjectTeamController extends BaseController { + + @Autowired + private ISarStandProjectTeamService sarStandProjectTeamService; + + @PostMapping("/save") + @ApiOperation("同步PCMS组织信息") + public ResponseDto save(@RequestBody String jsonStr){ + log.info(jsonStr); + Head head = sarStandProjectTeamService.AnalysisJsonAndStorage(jsonStr); + //todo 未确定返回内容 + ResponseDto responseDto = new ResponseDto(head); + return responseDto; + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/dao/SarStandProjectTeamDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/dao/SarStandProjectTeamDao.java new file mode 100644 index 00000000..20c65e86 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/dao/SarStandProjectTeamDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandProjectTeam.dao; + +import com.adc.da.slrs.sarStandProjectTeam.entity.SarStandProjectTeam; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author wangxiahui + * @since 2021-08-10 + */ +public interface SarStandProjectTeamDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/entity/SarStandProjectTeam.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/entity/SarStandProjectTeam.java new file mode 100644 index 00000000..f44436c8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/entity/SarStandProjectTeam.java @@ -0,0 +1,36 @@ +package com.adc.da.slrs.sarStandProjectTeam.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandProjectTeam对象", description="") +@TableName("sar_stand_project_team") +public class SarStandProjectTeam extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("id") + private String id; + + @TableField("name") + private String name; + + @TableField("person") + private String person; + + @TableField("user_id") + private String userId; + + @TableField("project_code") + private String projectCode; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/ISarStandProjectTeamService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/ISarStandProjectTeamService.java new file mode 100644 index 00000000..812d17f4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/ISarStandProjectTeamService.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.sarStandProjectTeam.service; + +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.adc.da.slrs.sarStandProjectTeam.entity.SarStandProjectTeam; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author wangxiahui + * @since 2021-08-10 + */ +public interface ISarStandProjectTeamService extends IService { + + public Head AnalysisJsonAndStorage(String jsonStr); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/impl/SarStandProjectTeamServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/impl/SarStandProjectTeamServiceImpl.java new file mode 100644 index 00000000..a0aa7bc0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandProjectTeam/service/impl/SarStandProjectTeamServiceImpl.java @@ -0,0 +1,84 @@ +package com.adc.da.slrs.sarStandProjectTeam.service.impl; + +import com.adc.da.slrs.sarStandProjectLibrary.entity.myResponse.Head; +import com.adc.da.slrs.sarStandProjectTeam.entity.SarStandProjectTeam; +import com.adc.da.slrs.sarStandProjectTeam.dao.SarStandProjectTeamDao; +import com.adc.da.slrs.sarStandProjectTeam.service.ISarStandProjectTeamService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author wangxiahui + * @since 2021-08-10 + */ +@Service +public class SarStandProjectTeamServiceImpl extends ServiceImpl implements ISarStandProjectTeamService { + + @Override + public Head AnalysisJsonAndStorage(String jsonStr) { + Head responseHead = new Head(); + try { + + SarStandProjectTeam teamInfo = new SarStandProjectTeam(); + + JsonObject jsonObject = (JsonObject) new JsonParser().parse(jsonStr); + JsonObject jsonHead = (JsonObject) jsonObject.get("HEAD"); + responseHead.setBIZTRANSACTIONID(jsonHead.get("BIZTRANSACTIONID").getAsString()); + + + JsonArray LIST = (JsonArray) jsonObject.get("LIST"); + for (int i = 0; i < LIST.size(); i++) { + JsonObject jsonElement = (JsonObject) LIST.get(i); + teamInfo.setProjectCode(jsonElement.get("project_code").getAsString()); + + JsonArray orgNodes = (JsonArray) jsonElement.get("org_nodes"); + for (int j = 0; j < orgNodes.size(); j++) { + JsonObject project = (JsonObject)orgNodes.get(j); + + if (project.get("name").getAsString().equals("项目经理")) { + + + JsonArray persons = (JsonArray) project.get("persons"); + for (int k = 0; k < persons.size(); k++) { + + JsonObject jsonPerson = (JsonObject) persons.get(k); + + teamInfo.setId(UUIDUtils.randomUUID20()); + teamInfo.setUserId(jsonPerson.get("user_id").getAsString()); + teamInfo.setName(jsonPerson.get("name").getAsString()); + + QueryWrapper updateCondition = new QueryWrapper(); + updateCondition.eq("project_code",teamInfo.getProjectCode()) + .eq("user_id",teamInfo.getUserId()); + + this.saveOrUpdate(teamInfo,updateCondition); + + + } + } + + + } + + } + }catch (Exception e){ + responseHead.setERRORCODE("2"); + responseHead.setRESULT("业务失败需要重做"); + e.printStackTrace(); + return responseHead; + } + responseHead.setERRORCODE("0") + .setRESULT("成功"); + + return responseHead; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/controller/SarStandPutTimeController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/controller/SarStandPutTimeController.java new file mode 100644 index 00000000..dd3d900c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/controller/SarStandPutTimeController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarStandPutTime.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarStandPutTime.entity.SarStandPutTime; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-02 +*/ +@RestController +@Api(description = "|SarStandPutTime|") +@RequestMapping("/sarStandPutTime/sar-stand-put-time") +public class SarStandPutTimeController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/dao/SarStandPutTimeDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/dao/SarStandPutTimeDao.java new file mode 100644 index 00000000..ed18ef30 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/dao/SarStandPutTimeDao.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarStandPutTime.dao; + +import com.adc.da.slrs.sarStandPutTime.entity.SarStandPutTime; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface SarStandPutTimeDao extends BaseMapper { + + int deleteByStandId(String standId); + + int insertForeach(List list); //批量新增 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/entity/SarStandPutTime.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/entity/SarStandPutTime.java new file mode 100644 index 00000000..d370557f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/entity/SarStandPutTime.java @@ -0,0 +1,61 @@ +package com.adc.da.slrs.sarStandPutTime.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandPutTime对象", description="") +public class SarStandPutTime extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准基础表主键") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "日期名称") + @TableField("TIME_NAME") + private String timeName; + + @ApiModelProperty(value = "实施日期") + @TableField("PUT_TIME") + private Date putTime; + + @ApiModelProperty(value = "日期类型") + @TableField("TIME_TYPE") + private String timeType; + + @ApiModelProperty(value = "展示顺序") + @TableField("ORDER_NUM") + private String orderNum; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private Date creationTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/service/ISarStandPutTimeService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/service/ISarStandPutTimeService.java new file mode 100644 index 00000000..b5b304e4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/service/ISarStandPutTimeService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandPutTime.service; + +import com.adc.da.slrs.sarStandPutTime.entity.SarStandPutTime; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +public interface ISarStandPutTimeService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/service/impl/SarStandPutTimeServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/service/impl/SarStandPutTimeServiceImpl.java new file mode 100644 index 00000000..d3d9db52 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandPutTime/service/impl/SarStandPutTimeServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarStandPutTime.service.impl; + +import com.adc.da.slrs.sarStandPutTime.entity.SarStandPutTime; +import com.adc.da.slrs.sarStandPutTime.dao.SarStandPutTimeDao; +import com.adc.da.slrs.sarStandPutTime.service.ISarStandPutTimeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@Service +public class SarStandPutTimeServiceImpl extends ServiceImpl implements ISarStandPutTimeService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/BusinessDeptIssueController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/BusinessDeptIssueController.java new file mode 100644 index 00000000..5c50e8dd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/BusinessDeptIssueController.java @@ -0,0 +1,129 @@ +package com.adc.da.slrs.sarStandUnqualified.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssueVo; +import com.adc.da.slrs.sarStandUnqualified.service.IBusinessDeptIssueService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.List; + +@Controller +@RestController +@RequestMapping("/api/sarStandUnqualified/businessDeptIssue") +@Api(tags = "事业部重点问题") +public class BusinessDeptIssueController extends BaseController { + + + @Autowired + private IBusinessDeptIssueService iBusinessDeptIssueService; + + @PutMapping() + @ApiOperation("新增事业部重点问题") + public ResponseMessage addBussDeptIssue(@RequestBody BusinessDeptIssue issue){ + boolean b = iBusinessDeptIssueService.addBusinessDeptIssue(issue); + return Result.success(b); + } + + @PostMapping("/saveBatch") + @ApiOperation("批量新增事业部重点问题") + public ResponseMessage saveBatch(@RequestBody List issue){ + boolean b = iBusinessDeptIssueService.saveBatch(issue); + return Result.success(b); + } + + + @DeleteMapping + @ApiOperation("删除事业部重点问题") + public ResponseMessage removeBussDeptIssue(@RequestParam(value="selectedString") String idList){ + List stringList = Arrays.asList(idList.split(",")); + boolean b = iBusinessDeptIssueService.removeBusinessDeptIssue(stringList); + return Result.success(b); + } + + @GetMapping + @ApiOperation("查询事业部重点问题") + public ResponseMessage> getBussDeptIssue(BusinessDeptIssueVo pageVo){ + IPage page = iBusinessDeptIssueService.getBusinessDeptIssue(pageVo); + + + return Result.success(page); + + } + + @PostMapping + @ApiOperation("更新事业部重点问题") + public ResponseMessage updateBussDeptIssue(@RequestBody BusinessDeptIssue issue){ + boolean b = iBusinessDeptIssueService.updateBusinessDeptIssue(issue); + return Result.success(b); + } + + @PostMapping("/closeIssue") + @ApiOperation("批量关闭事业部重点问题") + public ResponseMessage closeBusinessIssue(@RequestParam(value="ids")String idList){ + List stringList = Arrays.asList(idList.split(",")); + boolean b = iBusinessDeptIssueService.closeBusinessDeptIssue(stringList); + return Result.success(b); + + } + + + @GetMapping("/exportIssue") + @ApiOperation("导出事业部重点问题") + public void exportIssue(HttpServletResponse response,BusinessDeptIssueVo issue) throws IOException { + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + + //TODO + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + + if(issue.getFileName()==null || issue.getFileName()==""){ + issue.setFileName("事业部重点问题信息"); + } + String fileName = URLEncoder.encode(issue.getFileName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + + /** + * 重写了get方法,无法使用net.sf.json.JSONObject转换对象 + */ +// net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(issue.getExportContent()); +// BusinessDeptIssueVo businessDeptIssueVo = (BusinessDeptIssueVo) net.sf.json.JSONObject.toBean(jsonObject, BusinessDeptIssueVo.class); + + JSONObject jsonObject = JSONObject.parseObject(issue.getExportContent()); + BusinessDeptIssueVo businessDeptIssueVo = JSONObject.toJavaObject(jsonObject, BusinessDeptIssueVo.class); + IPage page = iBusinessDeptIssueService.getBusinessDeptIssue(businessDeptIssueVo); + + + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), BusinessDeptIssue.class).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(page.getRecords()); + } catch (Exception e) { + e.printStackTrace(); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSONObject.toJSONString(Result.error())); + } + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/KeyIssueManagementController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/KeyIssueManagementController.java new file mode 100644 index 00000000..0d0bc370 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/KeyIssueManagementController.java @@ -0,0 +1,8 @@ +package com.adc.da.slrs.sarStandUnqualified.controller; + +import org.springframework.stereotype.Controller; + +@Controller +public class KeyIssueManagementController { + //TODO zky +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/ProductDeptIssueController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/ProductDeptIssueController.java new file mode 100644 index 00000000..cd1b1405 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/ProductDeptIssueController.java @@ -0,0 +1,118 @@ +package com.adc.da.slrs.sarStandUnqualified.controller; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssueVo; +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssueVo; +import com.adc.da.slrs.sarStandUnqualified.service.IBusinessDeptIssueService; +import com.adc.da.slrs.sarStandUnqualified.service.IProductDeptIssueService; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.List; + +@Controller +@RestController +@RequestMapping("/api/sarStandUnqualified/productDeptIssue") +@Api(tags = "产品规划部重点问题项管控") +public class ProductDeptIssueController { + + @Autowired + private IProductDeptIssueService iProductDeptIssueService; + + @PutMapping() + @ApiOperation("新增产品规划部重点问题") + public ResponseMessage addProductDeptIssue(@RequestBody ProductDeptIssue issue){ + boolean b = iProductDeptIssueService.addProductDeptIssue(issue); + return Result.success(b); + } + + @PostMapping("/saveBatch") + @ApiOperation("新增产品规划部重点问题") + public ResponseMessage productDeptIssueSaveBatch(@RequestBody List issue){ + boolean b = iProductDeptIssueService.saveBatch(issue); + return Result.success(b); + } + + + @DeleteMapping + @ApiOperation("删除产品规划部重点问题") + public ResponseMessage removeProductDeptIssue(@RequestParam(value="selectedString") String idList){ + + List stringList = Arrays.asList(idList.split(",")); + boolean b = iProductDeptIssueService.removeProductDeptIssue(stringList); + return Result.success(b); + } + + @GetMapping + @ApiOperation("查询产品规划部重点问题") + public ResponseMessage> getProductDeptIssue(ProductDeptIssueVo wrapper){ + IPage issueList = iProductDeptIssueService.getProductDeptIssue(wrapper); + return Result.success(issueList); + } + + @PostMapping + @ApiOperation("更新产品规划部重点问题") + public ResponseMessage updateProductDeptIssue(@RequestBody ProductDeptIssue issue){ + boolean b = iProductDeptIssueService.updateProductDeptIssue(issue); + return Result.success(b); + } + + @PostMapping("/closeProductIssue") + @ApiOperation("关闭产品规划部重点问题") + public ResponseMessage closeProductDeptIssue(String idList){ + List stringList = Arrays.asList(idList.split(",")); + boolean b = iProductDeptIssueService.closeProductDeptIssue(stringList); + + return Result.success(b); + } + + @GetMapping("/exportIssue") + @ApiOperation("导出产品规划部重点问题") + public void exportIssue(HttpServletResponse response, ProductDeptIssueVo issue ) throws IOException { + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + + if(issue.getFileName()==null || issue.getFileName()==""){ + issue.setFileName("事业部重点问题信息"); + } + String fileName = URLEncoder.encode(issue.getFileName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + /** + * 重写了get方法,无法使用net.sf.json.JSONObject转换对象 + */ +// net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(issue.getExportContent()); +// BusinessDeptIssueVo businessDeptIssueVo = (BusinessDeptIssueVo) net.sf.json.JSONObject.toBean(jsonObject, BusinessDeptIssueVo.class); + + JSONObject jsonObject = JSONObject.parseObject(issue.getExportContent()); + ProductDeptIssueVo businessDeptIssueVo = JSONObject.toJavaObject(jsonObject, ProductDeptIssueVo.class); + List page = iProductDeptIssueService.getExportData(businessDeptIssueVo,businessDeptIssueVo.getIdList()); + + + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), BusinessDeptIssue.class).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(page); + } catch (Exception e) { + e.printStackTrace(); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSONObject.toJSONString(Result.error())); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/SarStandUnqualifiedController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/SarStandUnqualifiedController.java new file mode 100644 index 00000000..64c9812c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/controller/SarStandUnqualifiedController.java @@ -0,0 +1,167 @@ +package com.adc.da.slrs.sarStandUnqualified.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.ResponseMessageCodeEnum; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedListVO; +import com.adc.da.slrs.sarStandUnqualified.service.ISarStandUnqualifiedService; +import com.adc.da.slrs.sarStandardsInfo.controller.SarStandardsInfoController; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.Date; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-15 +*/ +@RestController +@Api(tags = "未符合项整改") +@RequestMapping("/api/sarStandUnqualified/sar-stand-unqualified") +public class SarStandUnqualifiedController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoController.class); + + @Autowired + private ISarStandUnqualifiedService sarStandUnqualifiedService; + + @ApiOperation("未符合项整改新增") + @PostMapping("/add") + public ResponseMessage add(@RequestBody List sarStandUnqualified){ + sarStandUnqualified.forEach(sarStandUnqualified1 -> sarStandUnqualified1.setCreateTime(new Date())); + if (sarStandUnqualifiedService.saveBatch(sarStandUnqualified)) { + return Result.success("新增成功"); + } + else{ + return Result.error("新增失败"); + } + } + + @ApiOperation("未符合项整改新增") + @PostMapping("/addOne") + public ResponseMessage add(@RequestBody SarStandUnqualified sarStandUnqualified){ + sarStandUnqualified.setCreateTime(new Date()); + if (sarStandUnqualifiedService.save(sarStandUnqualified)) { + return Result.success("新增成功"); + } + else{ + return Result.error("新增失败"); + } + } + + @ApiOperation("未符合项整改修改") + @PostMapping("/updateOne") + public ResponseMessage update(@RequestBody SarStandUnqualified sarStandUnqualified){ + if (sarStandUnqualifiedService.updateById(sarStandUnqualified)) { + return Result.success("新增成功"); + } + else{ + return Result.error("新增失败"); + } + } + + @ApiOperation("未符合项整改修改") + @PostMapping("/updateBatch") + public ResponseMessage updateBatch(@RequestBody List sarStandUnqualified){ + if (sarStandUnqualifiedService.saveOrUpdateBatch(sarStandUnqualified)) { + return Result.success("新增成功"); + } + else{ + return Result.error("新增失败"); + } + } + + /** + * 分页查询未符合项 + * @param sarStandUnqualifiedPage:筛选、分页信息 + * @return ResponseMessage> + */ + @ApiOperation("分页查询未符合项") + @GetMapping + public ResponseMessage> getSarStandUnqualifiedPage(SarStandUnqualifiedPage sarStandUnqualifiedPage){ + if (StringUtils.isNotBlank(sarStandUnqualifiedPage.getProductName())) { + sarStandUnqualifiedPage.setProductName(sarStandUnqualifiedPage.getProductName().trim()); + } + IPage sarStandUnqualifiedIPage=sarStandUnqualifiedService.getSarStandUnqualifiedPage(sarStandUnqualifiedPage); + return Result.success(sarStandUnqualifiedIPage); + } + + + /** + * 分页查询未符合项历史数据 + * @param sarStandUnqualifiedPage:筛选、分页信息 + * @return ResponseMessage> + */ + @ApiOperation("分页查询未符合项历史数据") + @GetMapping("/history") + public ResponseMessage> getSarStandUnqualifiedHistoryPage(SarStandUnqualifiedPage sarStandUnqualifiedPage){ + IPage sarStandUnqualifiedIPage=sarStandUnqualifiedService.getSarStandUnqualifiedHistoryPage(sarStandUnqualifiedPage); + return Result.success(sarStandUnqualifiedIPage); + } + + /** + * 批量关闭未符合项 + * @param standUnqualifiedListVO:未符合项ID列表 + * @return ResponseMessage>:关闭失败的未符合项ID + */ + @ApiOperation("批量关闭未符合项") + @PostMapping("/close") + public ResponseMessage> closeSarStandUnqualified(StandUnqualifiedListVO standUnqualifiedListVO){ + if(standUnqualifiedListVO==null||standUnqualifiedListVO.getIds().size()==0){ + return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"未传入未符合项ID",null); + } + List failIds=sarStandUnqualifiedService.closeSarStandUnqualifiedList(standUnqualifiedListVO); + if(failIds==null||failIds.size()==0){ + return Result.success(null); + }else { + return Result.error(ResponseMessageCodeEnum.ERROR.getCode(),"部分未符合项关闭失败",null); + } + } + + @ApiOperation("导出Excel表") + @GetMapping(value = "/exportStandUnqulifiedExcel") + public void exportStandardsInfoExcel(StandUnqualifiedExcelVO standUnqualifiedExcelVO, HttpServletResponse response) throws Exception { + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + if(standUnqualifiedExcelVO.getExportName()==null){ + standUnqualifiedExcelVO.setExportName("未符合项信息"); + } + String fileName = URLEncoder.encode(standUnqualifiedExcelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List data=sarStandUnqualifiedService.getStandUnqualifiedExcelData(standUnqualifiedExcelVO); + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), SarStandUnqualified.class).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(data); + } catch (Exception e) { + System.out.println(e); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(Result.error())); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/BusinessDeptIssueDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/BusinessDeptIssueDao.java new file mode 100644 index 00000000..7416fb46 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/BusinessDeptIssueDao.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarStandUnqualified.dao; + + + + +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface BusinessDeptIssueDao extends BaseMapper { + + IPage findPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper + ,@Param("dept") String dept); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/ProductDeptIssueDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/ProductDeptIssueDao.java new file mode 100644 index 00000000..4faf0dc2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/ProductDeptIssueDao.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.sarStandUnqualified.dao; + +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssueVo; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ProductDeptIssueDao extends BaseMapper { + + public IPage findPage(IPage page, @Param("ew") ProductDeptIssueVo objVo); + public List findExportData(@Param("ew") ProductDeptIssueVo objVo, @Param("ids") List ids); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/SarStandUnqualifiedDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/SarStandUnqualifiedDao.java new file mode 100644 index 00000000..b83f734b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/dao/SarStandUnqualifiedDao.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarStandUnqualified.dao; + +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-15 + */ +@Mapper +public interface SarStandUnqualifiedDao extends BaseMapper { + IPage getAllDatasByPage(Page page,@Param("sar") SarStandUnqualifiedPage sarStandUnqualified); + + List getSarStandUnqualifiedPage(@Param("start")Integer start, @Param("end")Integer end, @Param("sar") SarStandUnqualifiedPage sarStandUnqualified); + + List getSarStandUnqualifiedExcel(@Param("ids")List strings); + + Integer getSarStandUnqualifiedCount(@Param("sar") SarStandUnqualifiedPage sarStandUnqualified); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssue.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssue.java new file mode 100644 index 00000000..a10bce66 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssue.java @@ -0,0 +1,109 @@ +package com.adc.da.slrs.sarStandUnqualified.entity; + + +import com.adc.da.base.page.BasePage; +import com.adc.da.http.PageInfo; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("business_dept_issue") +public class BusinessDeptIssue { + + + @ExcelIgnore + @TableId + private String id; + + @ExcelIgnore + @TableField("law_id") + private String lawId; + + @ExcelProperty("标准号") + @TableField(exist = false) + private String lawNumber; + + @ExcelProperty("标准名称") + @TableField(exist = false) + private String lawName; + + @ExcelProperty("产品类别") + @TableField("product_type") + private String productType; + + @ExcelProperty("实施实践") + @TableField("impl_time") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-mm-dd") + private Date implTime; + + @ExcelProperty("实施要求") + @TableField("impl_require") + private String implRequire; + + @ExcelProperty("资源符合状态") + @TableField("conform_situation") + private String conformSituation; + + @ExcelProperty("开发情况") + @TableField("dev_scheme") + private String devScheme; + + @ExcelProperty("sop时间") + @TableField("sop_time") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-mm-dd") + private Date sopTime; + + @ExcelProperty("完成情况") + @TableField("complete_situation") + private String completeSituation; + + @ExcelProperty("超出sop时限后计划") + @TableField("timeout_situation") + private String timeoutSituation; + + @ExcelIgnore + @TableLogic(value = "0", delval = "1") + @TableField("del_flag") + private String delFlag; + + @ExcelProperty("责任部门") + @TableField("response_dept") + private String responseDept; + + @ExcelProperty("责任人") + @TableField("response_people") + private String responsePeople; + + @ExcelIgnore + @TableField("is_close") + private String isClose; + + @ExcelIgnore + @TableField("is_risk") + private String isRisk; + + @ExcelIgnore + @TableField(exist = false) + private Integer page; + + @ExcelIgnore + @TableField(exist = false) + private Integer pageSize; + + @TableField(exist = false) + private String responseInsId; + + @TableField(exist = false) + private String responseInsName; + + @TableField(exist = false) + private String responseUserName; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssueVo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssueVo.java new file mode 100644 index 00000000..a2f4f90a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/BusinessDeptIssueVo.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.sarStandUnqualified.entity; + +import lombok.Data; + +import java.util.Arrays; +import java.util.List; + +@Data +public class BusinessDeptIssueVo extends BusinessDeptIssue { + + private String numberOrName; + + private String fileName; + + private String idList; + + private String exportContent; + + public List getIdList(){ + if (this.idList!=null){ + return Arrays.asList(this.idList.split(",")); + }else { + return null; + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/ProductDeptIssue.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/ProductDeptIssue.java new file mode 100644 index 00000000..5642c802 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/ProductDeptIssue.java @@ -0,0 +1,83 @@ +package com.adc.da.slrs.sarStandUnqualified.entity; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.models.auth.In; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("product_dept_issue") +public class ProductDeptIssue { + + @TableId + private String id; + + @TableField("law_id") + private String lawId; + + @TableField(exist = false) + private String lawsNumber; + + @TableField(exist = false) + private String lawsName; + + @TableField("product_business") + private String productBusiness; + + @TableField("platform") + private String platform; + + @TableField("poj_name") + private String pojName; + + @TableField("poj_description") + private String pojDescription; + + @TableField("current_node") + private String currentNode; + + @TableField("conceptual_state") + private String conceptualState; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-mm-dd") + @TableField("scheduled_issuance_time") + private Date scheduledIssuanceTime; + + @TableField("revised_plan") + private String revisedPlan; + + @TableField("explanation") + private String explanation; + + @TableField("response_dept") + private String responseDept; + + @TableLogic(value = "0", delval = "1") + @TableField("del_flag") + private String delFlag; + + @TableField("is_close") + private String isClose; + + @TableField(exist = false) + private Integer page; + + @TableField(exist = false) + private Integer pageSize; + + @TableField(exist = false) + private String responseInsId; + + @TableField(exist = false) + private String responseInsName; + + @TableField(exist = false) + private String responseUserName; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/ProductDeptIssueVo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/ProductDeptIssueVo.java new file mode 100644 index 00000000..4e3f40bd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/ProductDeptIssueVo.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.sarStandUnqualified.entity; + +import lombok.Data; + +import java.util.Arrays; +import java.util.List; + +@Data +public class ProductDeptIssueVo extends ProductDeptIssue { + + private String numberOrName; + + private String fileName; + + private String idList; + + private String exportContent; + + public List getIdList(){ + if (this.idList!=null){ + return Arrays.asList(this.idList.split(",")); + }else { + return null; + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/SarStandUnqualified.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/SarStandUnqualified.java new file mode 100644 index 00000000..89dcfe41 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/SarStandUnqualified.java @@ -0,0 +1,192 @@ +package com.adc.da.slrs.sarStandUnqualified.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.sql.Timestamp; +import java.util.Date; + +import com.adc.da.slrs.sarStandUnqualified.utils.ProductTypeConverter; +import com.adc.da.slrs.sarStandUnqualified.utils.TimestampConverter; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandUnqualified对象", description="") +public class SarStandUnqualified extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ExcelProperty("标准号") + @ApiModelProperty(value = "标准编号") + @TableField("STAND_SERIAL_NUMBER") + private String standSerialNumber; + + @ExcelIgnore + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ExcelProperty("标准名称") + @ApiModelProperty(value = "标准名称") + @TableField("STAND_NAME") + private String standName; + + @ExcelIgnore + @ApiModelProperty(value = "项目编号") + @TableField("product_id") + private String productId; +// @ExcelProperty("标准编号") +// @ApiModelProperty(value = "标准编号") +// @TableField("STAND_NUMBER") +// private String standNumber; +// +// @ApiModelProperty(value = "标准类别") +// @TableField("STAND_SORT") +// private String standSort; +// +// @ApiModelProperty(value = "标准年份") +// @TableField("STAND_YEAR") +// private String standYear; + + @ExcelProperty("条款号") + @ApiModelProperty(value = "条款号") + @TableField("ITEMS_NUM") + private String itemsNum; + + @ExcelProperty("条款名称") + @ApiModelProperty(value = "条款名称") + @TableField("ITEMS_NAME") + private String itemsName; + +// @ExcelProperty(value = "产品类型",converter = ProductTypeConverter.class) +// @ApiModelProperty(value = "产品类型(research为在研产品,product为在产产品)") +// @TableField("PRODUCT_TYPE") +// private String productType; + + @ExcelProperty("产品线") + @ApiModelProperty(value = "产品线") + @TableField("PRODUCT_LINE") + private String productLine; + + @ExcelProperty("项目名称") + @ApiModelProperty(value = "项目名称") + @TableField("PRODUCT_NAME") + private String productName; + + @ExcelIgnore + @ApiModelProperty(value = "创建部门") + @TableField("CREATE_DEPT_ID") + private String createDeptId; + + @ExcelIgnore + @ApiModelProperty(value = "创建人") + @TableField("CREATE_BY_ID") + private String createById; + + @ExcelIgnore + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("CREATE_TIME") + private Date createTime; + + @ExcelIgnore + @ApiModelProperty(value = "关闭状态(1为开启,2为关闭)") + @TableField("CLOSE_STATE") + private Integer closeState; + + @ExcelIgnore + @ApiModelProperty(value = "实际关闭时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("ACTUAL_CLOSE_TIME") + private Date actualCloseTime; + + @ExcelProperty("不合规项目") + @ApiModelProperty(value = "未符合原因") + @TableField("REASON") + private String reason; + + @ExcelProperty("责任部门") + @ApiModelProperty(value = "责任部门") + @TableField("RESPONSIBLE_UNIT") + private String responsibleUnit; + + @ExcelIgnore + @ApiModelProperty(value = "质量工程师") + @TableField("QA_ENGINEER") + private String qaEngineer; + + @ExcelIgnore + @ApiModelProperty(value = "认证工程师") + @TableField("AUTH_ENGINEER") + private String authEngineer; + + @ExcelIgnore + @ApiModelProperty(value = "责任工程师") + @TableField("DUTY_ENGINEER") + private String dutyEngineer; + + @ExcelProperty("责任工程师") + @ApiModelProperty(value = "责任工程师") + @TableField(exist=false) + private String dutyEngineerName; + + @ExcelIgnore + @ApiModelProperty(value = "计划关闭时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("PLAN_CLOSE_TIME") + private Date planCloseTime; + + + @ExcelProperty("整改完成时间") + @ApiModelProperty(value = "计划关闭时间excel导出") + + @TableField(exist = false) + private String planCloseTimeExport; + + + @ExcelIgnore + @ApiModelProperty(value = "主键") + @TableId(type = IdType.UUID) + private String id; + + @ExcelIgnore + @ApiModelProperty(value = "质量工程师") + @TableField(exist=false) + private String qaEngineerName; + + @ExcelIgnore + @ApiModelProperty(value = "认证工程师") + @TableField(exist=false) + private String authEngineerName; + + + @ExcelIgnore + @ApiModelProperty(value = "国内OR海外") + @TableField(exist=false) + private String standType; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/SarStandUnqualifiedPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/SarStandUnqualifiedPage.java new file mode 100644 index 00000000..636027e9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/SarStandUnqualifiedPage.java @@ -0,0 +1,102 @@ +package com.adc.da.slrs.sarStandUnqualified.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.sql.Timestamp; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonBackReference; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-15 + */ +@Data +@ApiModel(value="SarStandUnqualifiedPage对象", description="") +public class SarStandUnqualifiedPage { + + @ApiModelProperty(value = "创建部门") + private String createDeptId; + + @ApiModelProperty(value = "创建人") + private String createById; + + @ApiModelProperty(value = "创建时间") + private Timestamp createTime; + + @ApiModelProperty(value = "关闭状态(1为开启,2为关闭)") + private Integer closeState; + + @ApiModelProperty(value = "实际关闭时间") + private Timestamp actualCloseTime; + + @ApiModelProperty(value = "计划关闭时间") + private Timestamp planCloseTime; + + @ApiModelProperty(value = "标准编号") + private String standSerialNumber; + + @ApiModelProperty(value = "质量工程师") + private String qaEngineer; + + @ApiModelProperty(value = "认证工程师") + private String authEngineer; + + @ApiModelProperty(value = "责任工程师") + private String dutyEngineer; + + @ApiModelProperty(value = "责任部门") + private String responsibleUnit; + + @ApiModelProperty(value = "项目名称") + private String productName; + + @ApiModelProperty(value = "产品线") + private String productLine; + + @ApiModelProperty(value = "产品类型(research为在研产品,product为在产产品)") + private String productType; + + @ApiModelProperty(value = "条款名称") + private String itemsName; + + @ApiModelProperty(value = "条款号") + private String itemsNum; + + @ApiModelProperty(value = "标准名称") + private String standName; + + @ApiModelProperty(value = "标准ID") + private String standId; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty("当前页") + private Integer current; + + @ApiModelProperty("每页条数") + private Integer size; + +// @ApiModelProperty(value = "标准编号") +// private String standNumber; +// +// @ApiModelProperty(value = "标准类别") +// private String standSort; +// +// @ApiModelProperty(value = "标准年份") +// private String standYear; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/StandUnqualifiedExcelVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/StandUnqualifiedExcelVO.java new file mode 100644 index 00000000..47602dea --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/StandUnqualifiedExcelVO.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarStandUnqualified.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(description = "未符合项ExcelVO类") +public class StandUnqualifiedExcelVO { + @ApiModelProperty("文件名") + String exportName; + @ApiModelProperty("导出类型") + String exportType; + @ApiModelProperty("导出的未符合项ID列表") + List ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/StandUnqualifiedListVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/StandUnqualifiedListVO.java new file mode 100644 index 00000000..eb045402 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/entity/StandUnqualifiedListVO.java @@ -0,0 +1,12 @@ +package com.adc.da.slrs.sarStandUnqualified.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class StandUnqualifiedListVO { + @ApiModelProperty("未符合项ID列表") + private List Ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IBusinessDeptIssueService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IBusinessDeptIssueService.java new file mode 100644 index 00000000..2103c61a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IBusinessDeptIssueService.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.sarStandUnqualified.service; + +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrack; +import com.adc.da.slrs.sarIssueTrack.entity.IssueTrackVo; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssueVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface IBusinessDeptIssueService extends IService { + + + public boolean addBusinessDeptIssue(BusinessDeptIssue obj); + + public boolean removeBusinessDeptIssue(List idList); + + public IPage getBusinessDeptIssue(BusinessDeptIssueVo objVo); + + public boolean updateBusinessDeptIssue(BusinessDeptIssue obj); + + public boolean closeBusinessDeptIssue(List idList); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IProductDeptIssueService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IProductDeptIssueService.java new file mode 100644 index 00000000..40380aa4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/IProductDeptIssueService.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.sarStandUnqualified.service; + +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssueVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface IProductDeptIssueService extends IService { + + + public boolean addProductDeptIssue(ProductDeptIssue obj); + + public boolean removeProductDeptIssue(List idList); + + public IPage getProductDeptIssue(ProductDeptIssueVo objVo); + + public List getExportData(ProductDeptIssueVo objVo,List ids); + + public boolean updateProductDeptIssue(ProductDeptIssue obj); + + public boolean closeProductDeptIssue(List idList); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/ISarStandUnqualifiedService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/ISarStandUnqualifiedService.java new file mode 100644 index 00000000..df5fa169 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/ISarStandUnqualifiedService.java @@ -0,0 +1,50 @@ +package com.adc.da.slrs.sarStandUnqualified.service; + +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedListVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-15 + */ +public interface ISarStandUnqualifiedService extends IService { + + /** + * 分页查询未符合项 + * @param sarStandUnqualifiedPage:筛选、分页信息 + * @return:IPage + */ + IPage getSarStandUnqualifiedPage(SarStandUnqualifiedPage sarStandUnqualifiedPage); + + /** + * 分页查询未符合项历史数据 + * @param sarStandUnqualifiedPage:筛选、分页信息 + * @return:IPage + */ + IPage getSarStandUnqualifiedHistoryPage(SarStandUnqualifiedPage sarStandUnqualifiedPage); + + /** + * 批量关闭未符合项 + * @param standUnqualifiedListVO :要关闭的未符合项目列表 + * @return + */ + List closeSarStandUnqualifiedList(StandUnqualifiedListVO standUnqualifiedListVO); + + /** + * 获取导出excel的数据 + * @param standUnqualifiedExcelVO:ids + * @return List + */ + List getStandUnqualifiedExcelData(StandUnqualifiedExcelVO standUnqualifiedExcelVO); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/BusinessDeptIssueService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/BusinessDeptIssueService.java new file mode 100644 index 00000000..cc5a153b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/BusinessDeptIssueService.java @@ -0,0 +1,100 @@ +package com.adc.da.slrs.sarStandUnqualified.service.impl; + +import com.adc.da.slrs.sarStandUnqualified.dao.BusinessDeptIssueDao; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.entity.BusinessDeptIssueVo; +import com.adc.da.slrs.sarStandUnqualified.service.IBusinessDeptIssueService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class BusinessDeptIssueService extends ServiceImpl implements IBusinessDeptIssueService { + + @Autowired + private BusinessDeptIssueDao businessDeptIssueDao; + + @Override + public boolean addBusinessDeptIssue(BusinessDeptIssue obj) { + obj.setId(UUIDUtils.randomUUID20()); + obj.setDelFlag("0"); + return this.save(obj); + } + + @Override + public boolean removeBusinessDeptIssue(List idList) { + return removeByIds(idList); + } + + @Override + public IPage getBusinessDeptIssue(BusinessDeptIssueVo pageVo) { + + IPage page = new Page<>(); + QueryWrapper wrapper = new QueryWrapper<>(); + //是否分页 + if (pageVo.getPage()!=null && pageVo.getPageSize()!=null){ + page=new Page<>(pageVo.getPage(),pageVo.getPageSize()); + + }else { + Integer count = businessDeptIssueDao.selectCount(wrapper); + page=new Page<>(0,count,false); + } + + + //查询条件 + if (pageVo.getIsClose()!=null){ + wrapper.like("is_close",pageVo.getIsClose()); + } + + if (pageVo.getLawNumber()!=null || pageVo.getLawName()!=null){ + wrapper.like("laws.LAWS_NUMBER",pageVo.getLawNumber()) + .or() + .like("laws.LAWS_NAME",pageVo.getLawName()); + } + + if (pageVo.getProductType()!=null){ + wrapper.like("product_type",pageVo.getProductType()); + } + +// if (pageVo.getResponseDept()!=null){ +// wrapper.like("response_dept",pageVo.getResponseDept()); +// } + + /** + * 导出 + */ + if (pageVo.getIdList()!=null){ + wrapper.in("issue.ID",pageVo.getIdList()); + } + + page = businessDeptIssueDao.findPage(page, wrapper,pageVo.getResponseDept()); + + return page; + } + + @Override + public boolean updateBusinessDeptIssue(BusinessDeptIssue obj) { + return this.updateById(obj); + } + + @Override + public boolean closeBusinessDeptIssue(List idList){ + List collect = idList.stream() + .map(item -> { + BusinessDeptIssue businessDeptIssue = new BusinessDeptIssue(); + businessDeptIssue.setId(item); + businessDeptIssue.setIsClose("1"); + return businessDeptIssue; + }).collect(Collectors.toList()); + + return this.updateBatchById(collect); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/ProductDeptIssueService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/ProductDeptIssueService.java new file mode 100644 index 00000000..5b233d4c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/ProductDeptIssueService.java @@ -0,0 +1,93 @@ +package com.adc.da.slrs.sarStandUnqualified.service.impl; + +import com.adc.da.slrs.sarStandUnqualified.dao.ProductDeptIssueDao; +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssue; +import com.adc.da.slrs.sarStandUnqualified.entity.ProductDeptIssueVo; +import com.adc.da.slrs.sarStandUnqualified.service.IProductDeptIssueService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class ProductDeptIssueService extends ServiceImpl implements IProductDeptIssueService { + + + @Autowired + private ProductDeptIssueDao productDeptIssueDao; + + @Override + public boolean addProductDeptIssue(ProductDeptIssue obj) { + obj.setId(UUIDUtils.randomUUID20()); + obj.setDelFlag("0"); + return this.save(obj); + } + + @Override + public boolean removeProductDeptIssue(List idList) { + return removeByIds(idList); + } + + @Override + public IPage getProductDeptIssue(ProductDeptIssueVo objVo) { + + IPage page=new Page<>(objVo.getPage(),objVo.getPageSize()); + +// QueryWrapper wrapper = new QueryWrapper<>(); +// //查询条件 +// if (objVo.getIsClose()!=null){ +// wrapper.like("is_close",objVo.getIsClose()); +// } +// +// +// if (objVo.getLawsNumber()!=null){ +// wrapper.like("laws.LAWS_NAME",objVo.getLawsName()) +// .or() +// .like("laws.LAWS_NUMBER",objVo.getLawsNumber()); +// } +// +// if (objVo.getPojName()!=null){ +// wrapper.like("poj_name",objVo.getPojName()); +// } +// +// if (objVo.getResponseDept()!=null){ +// wrapper.like("response_dept",objVo.getResponseDept()); +// } + productDeptIssueDao.findPage(page,objVo); + + return page; + } + + @Override + public List getExportData(ProductDeptIssueVo objVo, List ids) { + + return productDeptIssueDao.findExportData(objVo,ids); + } + + @Override + public boolean updateProductDeptIssue(ProductDeptIssue obj) { + + return this.updateById(obj); + } + + @Override + public boolean closeProductDeptIssue(List idList){ + + List collect = idList.stream() + .map(id -> { + ProductDeptIssue productDeptIssue = new ProductDeptIssue(); + productDeptIssue.setId(id); + productDeptIssue.setIsClose("1"); + return productDeptIssue; + }).collect(Collectors.toList()); + return this.updateBatchById(collect); + + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/SarStandUnqualifiedServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/SarStandUnqualifiedServiceImpl.java new file mode 100644 index 00000000..8645ff6f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/service/impl/SarStandUnqualifiedServiceImpl.java @@ -0,0 +1,188 @@ +package com.adc.da.slrs.sarStandUnqualified.service.impl; + +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualified; +import com.adc.da.slrs.sarStandUnqualified.dao.SarStandUnqualifiedDao; +import com.adc.da.slrs.sarStandUnqualified.entity.SarStandUnqualifiedPage; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedExcelVO; +import com.adc.da.slrs.sarStandUnqualified.entity.StandUnqualifiedListVO; +import com.adc.da.slrs.sarStandUnqualified.service.ISarStandUnqualifiedService; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-15 + */ +@Service +public class SarStandUnqualifiedServiceImpl extends ServiceImpl implements ISarStandUnqualifiedService { + + @Autowired + private SarStandUnqualifiedDao sarStandUnqualifiedDao; + + @Resource + private SarStandardsInfoDao sarStandardsInfoDao; + +// @Resource +// private SarStandardsInfoDao SarStandardsInfoDao; + /** + * 分页查询未符合项 + * @param sarStandUnqualifiedPage :筛选、分页信息 + * @return:IPage + */ + @Override + public IPage getSarStandUnqualifiedPage(SarStandUnqualifiedPage sarStandUnqualifiedPage) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.select("STAND_NUMBER","STAND_SORT","STAND_YEAR","STAND_TYPE"); + wrapper1.last("INNER JOIN sar_stand_unqualified r ON r.STAND_ID = sar_standards_info.ID WHERE sar_standards_info.ID='"+sarStandUnqualifiedPage.getStandId()+"'"); + Page page1 = new Page<>(); + IPage userIPage1 = sarStandardsInfoDao.selectPage(page1,wrapper1); + List list1 = userIPage1.getRecords(); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("STAND_SERIAL_NUMBER"); + Page page = new Page<>(); + IPage userIPage = sarStandUnqualifiedDao.selectPage(page,wrapper); + List list = userIPage.getRecords(); + + for (SarStandardsInfo s : list1){ + for (SarStandUnqualified a : list){ + a.setStandSerialNumber(s.getStandSort()+" "+s.getStandNumber()+"-"+s.getStandYear()); + } + } + + Page standUnqualifiedPage=new Page<>(); + //判断前端是否提供页码和每页条数 + sarStandUnqualifiedPage.setCloseState(1); + List sarStandUnqualifieds=sarStandUnqualifiedDao.getSarStandUnqualifiedPage((sarStandUnqualifiedPage.getCurrent()-1)*sarStandUnqualifiedPage.getSize(),sarStandUnqualifiedPage.getSize(),sarStandUnqualifiedPage); + Integer total=sarStandUnqualifiedDao.getSarStandUnqualifiedCount(sarStandUnqualifiedPage); + standUnqualifiedPage.setRecords(sarStandUnqualifieds); + standUnqualifiedPage.setTotal(total); + standUnqualifiedPage.setCurrent(sarStandUnqualifiedPage.getCurrent()); + standUnqualifiedPage.setSize(sarStandUnqualifiedPage.getSize()); + return standUnqualifiedPage; + } + + /** + * 分页查询未符合项历史数据 + * @param sarStandUnqualifiedPage:筛选、分页信息 + * @return:IPage + */ + @Override + public IPage getSarStandUnqualifiedHistoryPage(SarStandUnqualifiedPage sarStandUnqualifiedPage) { +// QueryWrapper sarStandUnqualifiedQueryWrapper=new QueryWrapper<>(); + +// if(sarStandUnqualifiedPage.getStandId()!=null){ +//// sarStandUnqualifiedQueryWrapper.like("stand_id",sarStandUnqualifiedPage.getStandId()); +// sarStandUnqualifiedQueryWrapper.eq("stand_id",sarStandUnqualifiedPage.getStandId()).or().like("stand_name","%"+sarStandUnqualifiedPage.getStandId()+"%"); +// } +// if(sarStandUnqualifiedPage.getStandSerialNumber()!=null){ +// sarStandUnqualifiedQueryWrapper.like("stand_serial_number",sarStandUnqualifiedPage.getStandSerialNumber()); +// } +// if (sarStandUnqualifiedPage.getStandName()!=null){ +// sarStandUnqualifiedQueryWrapper.like("stand_name",sarStandUnqualifiedPage.getStandName()); +// } +// +// //仅查询关闭的 +// sarStandUnqualifiedQueryWrapper.eq("close_state",2); +// if(sarStandUnqualifiedPage.getProductName()!=null){ +// sarStandUnqualifiedQueryWrapper.like("product_name",sarStandUnqualifiedPage.getProductName()); +// } +// if(sarStandUnqualifiedPage.getResponsibleUnit()!=null){ +// sarStandUnqualifiedQueryWrapper.eq("responsible_unit",sarStandUnqualifiedPage.getResponsibleUnit()); +// } +// Page standUnqualifiedPage=new Page<>(); +// //判断前端是否提供页码和每页条数 +// if(sarStandUnqualifiedPage.getCurrent()!=null&&sarStandUnqualifiedPage.getSize()!=null){ +// standUnqualifiedPage=new Page<>(sarStandUnqualifiedPage.getCurrent(),sarStandUnqualifiedPage.getSize()); +// } + sarStandUnqualifiedPage.setCloseState(2); + List sarStandUnqualifieds=sarStandUnqualifiedDao.getSarStandUnqualifiedPage((sarStandUnqualifiedPage.getCurrent()-1)*sarStandUnqualifiedPage.getSize(),sarStandUnqualifiedPage.getSize(),sarStandUnqualifiedPage); + Integer total=sarStandUnqualifiedDao.getSarStandUnqualifiedCount(sarStandUnqualifiedPage); + Page page=new Page(); + page.setSize(sarStandUnqualifiedPage.getSize()); + page.setCurrent(sarStandUnqualifiedPage.getCurrent()); + page.setTotal(total); + page.setRecords(sarStandUnqualifieds); + return page; + } + + /** + * 批量关闭未符合项 + * @param standUnqualifiedListVO :要关闭的未符合项目列表 + * @return List:失败的ID列表 + */ + @Transactional + @Override + public List closeSarStandUnqualifiedList(StandUnqualifiedListVO standUnqualifiedListVO) { + List failIds=new ArrayList<>(); + for(String id:standUnqualifiedListVO.getIds()){ + boolean success=closeSarStandUnqualified(id); + if(!success){ + failIds.add(id); + } + } + return failIds; + } + + /** + * 获取导出excel的数据 + * @param standUnqualifiedExcelVO:ids + * @return List + */ + @Override + public List getStandUnqualifiedExcelData(StandUnqualifiedExcelVO standUnqualifiedExcelVO) { +// QueryWrapper sarStandUnqualifiedQueryWrapper=new QueryWrapper<>(); +// sarStandUnqualifiedQueryWrapper.eq("close_state",1); +// if(standUnqualifiedExcelVO.getIds()!=null && standUnqualifiedExcelVO.getIds().size()>0){ +// sarStandUnqualifiedQueryWrapper.in("id",standUnqualifiedExcelVO.getIds()); +// } + List stand = sarStandUnqualifiedDao.getSarStandUnqualifiedExcel(standUnqualifiedExcelVO.getIds()); + // 去掉日期时分秒 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); + + stand.forEach(item->{ + + Optional.ofNullable(item.getPlanCloseTime()) + .ifPresent(time ->{ + item.setPlanCloseTimeExport(sdf.format(time)); + }); + + }); + + List a = stand; + return a; + } + + private boolean closeSarStandUnqualified(String standUnqualifiedId){ + SarStandUnqualified sarStandUnqualified=sarStandUnqualifiedDao.selectById(standUnqualifiedId); + //判断是否存在 + if(sarStandUnqualified==null){ + return false; + } + //判断是否已关闭 + if(sarStandUnqualified.getCloseState()==2){ + return false; + } + sarStandUnqualified.setCloseState(2); + sarStandUnqualified.setActualCloseTime(new Timestamp(new Date().getTime())); + sarStandUnqualifiedDao.updateById(sarStandUnqualified); + return true; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/utils/ProductTypeConverter.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/utils/ProductTypeConverter.java new file mode 100644 index 00000000..d2b1cd58 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/utils/ProductTypeConverter.java @@ -0,0 +1,53 @@ +package com.adc.da.slrs.sarStandUnqualified.utils; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +/** + * excel产品类型转换 + */ +public class ProductTypeConverter implements Converter { + //在java中性别是用 0 1 来标识的 所以是int + @Override + public Class supportJavaTypeKey() {return String.class;} + // 在excel中是男女 所以是string + @Override + public CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;} + //将excel的数据类型转为java数据类型 + @Override + public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception { + String stringValue = cellData.getStringValue(); + if (stringValue != null) { + if(stringValue.equals("在研产品")){ + return "research"; + } + if(stringValue.equals("在产产品")){ + return "product"; + } + if (!stringValue.equals("在研产品") && !stringValue.equals("在产产品")){ + return ""; + } + } + return null; + } + + @Override + public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception { + if(s!=null){ + if(s.equals("research")){ + return new CellData<>("在研产品"); + } + if(s.equals("product")){ + return new CellData<>("在产产品"); + } + if (!s.equals("research") && !s.equals("product")){ + return new CellData<>(""); + } + } + return null; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/utils/TimestampConverter.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/utils/TimestampConverter.java new file mode 100644 index 00000000..feafea8c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandUnqualified/utils/TimestampConverter.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.sarStandUnqualified.utils; + +import com.adc.da.utils.util.DateUtil; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +import java.sql.Timestamp; +import java.text.ParseException; +import java.time.format.DateTimeFormatter; +import java.util.Date; + +/** + * excel输出时Timestamp和String的转换 + */ +public class TimestampConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + return Timestamp.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Timestamp convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) throws ParseException { + return new Timestamp(DateUtil.stingToDate(cellData.getDataFormatString(),"yyyy-MM-dd HH:mm:ss").getTime()); + } + + @Override + public CellData convertToExcelData(Timestamp value, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + return new CellData<>(DateUtil.dateToString(new Date(value.getTime()),"yyyy-MM-dd HH:mm:ss")); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/controller/SarStandValController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/controller/SarStandValController.java new file mode 100644 index 00000000..14c70054 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/controller/SarStandValController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarStandVal.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarStandVal.entity.SarStandVal; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-01 +*/ +@RestController +@Api(description = "|SarStandVal|") +@RequestMapping("/sarStandVal/sar-stand-val") +public class SarStandValController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/dao/SarStandValDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/dao/SarStandValDao.java new file mode 100644 index 00000000..7d6d82d8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/dao/SarStandValDao.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarStandVal.dao; + +import com.adc.da.slrs.sarStandVal.entity.SarStandVal; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface SarStandValDao extends BaseMapper { + + //通过标准id删除表中数据 + int deleteDataByStandid(String standId); + + int insertForeach(List list); //批量新增 + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/entity/SarStandVal.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/entity/SarStandVal.java new file mode 100644 index 00000000..5c540ef6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/entity/SarStandVal.java @@ -0,0 +1,65 @@ +package com.adc.da.slrs.sarStandVal.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandVal对象", description="") +public class SarStandVal extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "参数类型") + @TableField("PROPERTY_TYPE") + private String propertyType; + + @ApiModelProperty(value = "参数内容") + @TableField("PROPERTY_VAL") + private String propertyVal; + + @ApiModelProperty(value = "展示顺序") + @TableField("ORDER_NUM") + private Integer orderNum; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private Date modifyTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/service/ISarStandValService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/service/ISarStandValService.java new file mode 100644 index 00000000..186214f0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/service/ISarStandValService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandVal.service; + +import com.adc.da.slrs.sarStandVal.entity.SarStandVal; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarStandValService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/service/impl/SarStandValServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/service/impl/SarStandValServiceImpl.java new file mode 100644 index 00000000..c55483b0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandVal/service/impl/SarStandValServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarStandVal.service.impl; + +import com.adc.da.slrs.sarStandVal.entity.SarStandVal; +import com.adc.da.slrs.sarStandVal.dao.SarStandValDao; +import com.adc.da.slrs.sarStandVal.service.ISarStandValService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarStandValServiceImpl extends ServiceImpl implements ISarStandValService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/controller/EarlyWarningEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/controller/EarlyWarningEOController.java new file mode 100644 index 00000000..f66ba43d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/controller/EarlyWarningEOController.java @@ -0,0 +1,173 @@ +package com.adc.da.slrs.sarStandWarning.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.SarStandIssueControlProduct; +import com.adc.da.slrs.sarStandIssueControlProduct.entity.StandIssueControlProductExcelVO; +import com.adc.da.slrs.sarStandWarning.entity.EarlyWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.StandWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.WarningExcelVO; +import com.adc.da.slrs.sarStandWarning.entity.WarningExportVO; +import com.adc.da.slrs.sarStandWarning.service.Impl.EarlyWarningEOServiceImpl; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.*; + +@RestController +@RequestMapping("/${restPath}/sys/EarlyWarning") +@Api(tags = "sarStandWarning") +public class EarlyWarningEOController extends BaseController { + @Resource + private EarlyWarningEOServiceImpl earlyWarningEOService; +/** +* + * @param newStandPage + * @param newStandPageSize + * @param oldStandPage + * @param oldStandPageSize + * @param newItemsPage + * @param newItemsPageSize + * @param oldItemsPage + * @param oldItemsPageSize +* @return +* @author zj +* date 2021-06-15 +**/ + @GetMapping("/${restPath}/StandWarning") + @ApiOperation("标准预警查询") + public ResponseMessage newPageInfo(@RequestParam(defaultValue = "1", value = "newStandPage")int newStandPage, @RequestParam(defaultValue = "10", value = "newStandPageSize") int newStandPageSize, + @RequestParam(defaultValue = "1", value = "oldStandPage")int oldStandPage, @RequestParam(defaultValue = "10", value = "oldStandPageSize") int oldStandPageSize, + @RequestParam(defaultValue = "1", value = "newItemsPage")int newItemsPage, @RequestParam(defaultValue = "10", value = "newItemsPageSize") int newItemsPageSize, + @RequestParam(defaultValue = "1", value = "oldItemsPage")int oldItemsPage, @RequestParam(defaultValue = "10", value = "oldItemsPageSize") int oldItemsPageSize,EarlyWarningEO earlyWarningEO) { + IPage list1 = earlyWarningEOService.newStandQuery(newStandPage,newStandPageSize,earlyWarningEO);//新车标准预警 + IPage list2 = earlyWarningEOService.oldStandQuery(oldStandPage,oldStandPageSize,earlyWarningEO);//在产车标准预警 + IPage list3 = earlyWarningEOService.newItemsQuery(newItemsPage,newItemsPageSize,earlyWarningEO);//新车条款预警 + IPage list4 = earlyWarningEOService.oldItemsQuery(oldItemsPage,oldItemsPageSize,earlyWarningEO);//在产车条款预警 + return getResponseMessage(list1, list2, list3, list4); + } + + @GetMapping("/getStandWarning") + @ApiOperation("标准预警查询") + public ResponseMessage> getStandWaring(StandWarningEO queryPageEO){ + IPage standWarning = earlyWarningEOService.getStandWarning(queryPageEO); + standWarning.getRecords().forEach(item->{ + + Optional.ofNullable(item.getSSRQ()) + .ifPresent(SSRQ -> item.setSSRQ(item.getSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + Optional.ofNullable(item.getXCXSSRQ()) + .ifPresent(SSRQ ->item.setXCXSSRQ(item.getXCXSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + Optional.ofNullable(item.getZCCSSRQ()) + .ifPresent(SSRQ ->item.setZCCSSRQ(item.getZCCSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + + }); + return Result.success(standWarning); + } + + + + private ResponseMessage getResponseMessage(IPage list1, IPage list2, IPage list3, IPage list4) { + List> listMap = new ArrayList>(); + Map map = new HashMap(); + map.put("newStand", list1); + map.put("oldStand", list2); + map.put("newItems", list3); + map.put("oldItems", list4); + listMap .add(map); + return Result.success("200",listMap); + } + /** + * + * @param id + * @return + * @author zj + * date 2021-06-15 + **/ + @GetMapping("/ChangePermissions") + @ApiOperation("取消预警") + public ResponseMessage ChangePermissions(String id) { + String power = earlyWarningEOService.ChangePermissions(id); + return Result.success("200",power); + } + /** + * + * @param newPolicyPage + * @param newPolicyPageSize + * @param oldPolicyPage + * @param oldPolicyPageSize + * @return + * @author zj + * date 2021-06-15 + **/ + @GetMapping("/PolicyWarning") + @ApiOperation("政策预警查询") + public ResponseMessage newPolicyPageInfo(@RequestParam(defaultValue = "1", value = "newPolicyPage")int newPolicyPage, @RequestParam(defaultValue = "10", value = "newPolicyPageSize") int newPolicyPageSize, + @RequestParam(defaultValue = "1", value = "oldPolicyPage")int oldPolicyPage, @RequestParam(defaultValue = "10", value = "oldPolicyPageSize") int oldPolicyPageSize) { + IPage list1 = earlyWarningEOService.newPolicyQuery(newPolicyPage,newPolicyPageSize); + IPage list2 = earlyWarningEOService.oldPolicyQuery(oldPolicyPage,oldPolicyPageSize); + List> listMap = new ArrayList>(); + Map map = new HashMap(); + map.put("newPolicy", list1); + map.put("oldPolicy", list2); + System.out.println(map); + listMap .add(map); + System.out.println(listMap); + return Result.success("200",listMap); + } + + + + + + @GetMapping("/exportWarning") + @ApiOperation("导出预警") + public void exportStandardsInfoExcel(WarningExcelVO excelVO, HttpServletResponse response) throws Exception { + + + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + try { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + if(excelVO.getExportName()==null){ + excelVO.setExportName("标准预警"); + } + String fileName = URLEncoder.encode(excelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + +// List exportExcel = earlyWarningEOService.getExportExcel(excelVO); + List exportExcel = earlyWarningEOService.getExportExcel(excelVO); + for (WarningExportVO warningExportVO : exportExcel){ + String condition = warningExportVO.getTermsConditions(); + if (condition != null && condition.length() > 32001){ + condition = condition.substring(0,32000); + warningExportVO.setTermsConditions(condition); + } + } + + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), WarningExportVO.class).autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(exportExcel); + } catch (Exception e) { + System.out.println(e); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(Result.error())); + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/dao/EarlyWarningEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/dao/EarlyWarningEODao.java new file mode 100644 index 00000000..3b327344 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/dao/EarlyWarningEODao.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.sarStandWarning.dao; + + +import com.adc.da.slrs.sarStandWarning.entity.EarlyWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.StandWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.WarningExportVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface EarlyWarningEODao extends BaseMapper { + + IPage selectWarningPage(IPage page, @Param("waringEO") StandWarningEO warningEO); + + + List exportWarning(@Param("idList") List ids); + + String exportShow(@Param("str") List str); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/dao/WarningDateDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/dao/WarningDateDao.java new file mode 100644 index 00000000..88b46af8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/dao/WarningDateDao.java @@ -0,0 +1,7 @@ +package com.adc.da.slrs.sarStandWarning.dao; + +import com.adc.da.slrs.sarStandWarning.entity.WarningDate; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface WarningDateDao extends BaseMapper { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/EarlyWarningEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/EarlyWarningEO.java new file mode 100644 index 00000000..152c60d9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/EarlyWarningEO.java @@ -0,0 +1,125 @@ +package com.adc.da.slrs.sarStandWarning.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.Tag; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + + +import java.time.LocalDate; +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("sar_stand_warning") +@ApiModel(value="SarStandWarning对象", description="") +public class EarlyWarningEO extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ExcelIgnore + @ApiModelProperty("id") + @TableId("ID") + private String id; + + @ExcelIgnore + @ApiModelProperty("标准id") + @TableField("STAND_ID") + private String standId; + + @ExcelIgnore + @ApiModelProperty("分解单条款id") + @TableField("ITEM_ID") + private String itemId; + + @ExcelIgnore + @ApiModelProperty("标准类别") + @TableField(exist = false) + private String standType; + + @ExcelProperty(value = "标准编号",index = 1) + @ColumnWidth(20) + @ApiModelProperty("标准号") + @TableField(exist = false) + private String standCode; + + @ExcelProperty(value = "标准名称",index = 2) + @ColumnWidth(40) + @ApiModelProperty("标准名称") + @TableField(exist = false) + private String standName; + + @ExcelProperty(value = "发布日期",index = 6) + @ColumnWidth(20) + @ApiModelProperty("发布日期") + @TableField(exist = false) + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date putTime; + + @ExcelIgnore + @TableField(exist = false) + private Date lastTime; + + @ExcelIgnore + @ApiModelProperty("适用车型") + @TableField(exist = false) + private String applyType; + + @ExcelIgnore + @ApiModelProperty("责任工程师") + @TableField(exist = false) + private String dutyEngineer; + + @ExcelIgnore + @ApiModelProperty("条款(分解单)id") + @TableField(exist = false) + private String itemsId; + + @ExcelProperty(value = "条款编号",index = 3) + @ColumnWidth(20) + @ApiModelProperty("条款(分解单)编号") + @TableField(exist = false) + private String itemsNum; + + @ExcelProperty(value = "条款名称",index = 4) + @ColumnWidth(40) + @ApiModelProperty("条款(分解单)名称") + @TableField(exist = false) + private String itemsName; + + @ExcelProperty(value = "条款内容",index = 5) + @ColumnWidth(60) + @ApiModelProperty("条款内容") + @TableField(exist = false) + private String termsConditions; + + @ExcelIgnore + @TableField("POLICY_ID") + private String policyId; + + @ExcelIgnore + @TableField(exist = false) + private String policyName; + + @ExcelIgnore + @TableField("MARK") + private String mark; + + @ExcelIgnore + @TableField("POWER") + private String power; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/StandWarningEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/StandWarningEO.java new file mode 100644 index 00000000..398b5055 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/StandWarningEO.java @@ -0,0 +1,102 @@ +package com.adc.da.slrs.sarStandWarning.entity; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@Accessors(chain = true) +public class StandWarningEO extends EarlyWarningEO { + private static final long serialVersionUID = 1L; + + @ExcelProperty("条款内容") + @ApiModelProperty("条款内容") + private String termsConditions; + + + + @ExcelProperty("新车型实施日期") + @ApiModelProperty("新车型实施日期") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String XCXSSRQ; + + @ExcelProperty("在产车实施日期") + @ApiModelProperty("在产车实施日期") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String ZCCSSRQ; + + @ExcelProperty("实施日期") + @ApiModelProperty("实施日期") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String SSRQ; + + + @ExcelProperty("标准编号") + private String standNum; + + @ExcelProperty("标准类别") + private String standSort; + + @ExcelProperty("标准年份") + private String standYear; + + @ExcelProperty("发布日期") + private String issueTime; + + @ExcelIgnore + private Integer page; + + @ExcelIgnore + private Integer pageSize; + + @ExcelIgnore + @ApiModelProperty("范围查询新车型实施日期开始") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String startXCXSSRQ; + + @ExcelIgnore + @ApiModelProperty("范围查询新车型实施日期结束") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String endXCXSSRQ; + + @ExcelIgnore + @ApiModelProperty("范围查询在产车实施日期开始") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String startZCCSSRQ; + + @ExcelIgnore + @ApiModelProperty("范围查询在产车实施日期结束") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String endZCCSSRQ; + + @ExcelIgnore + @ApiModelProperty("范围查询实施日期开始") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String startSSRQ; + + + @ExcelIgnore + @ApiModelProperty("范围查询实施日期结束") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String endSSRQ; + + + @ExcelIgnore + @ApiModelProperty("范围查询发布日期开始") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String startIssueTime; + + @ExcelIgnore + @ApiModelProperty("范围查询发布日期结束") + @DateTimeFormat(pattern = "YYYY-MM-dd") + private String endIssueTime; + + @ExcelIgnore + @ApiModelProperty("stand标准 item条款") + private String mark; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningDate.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningDate.java new file mode 100644 index 00000000..1bcd8c59 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningDate.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarStandWarning.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("warning_date") +public class WarningDate { + + @TableField("id") + private String id; + + @TableField("law_id") + private String lawId; + + @TableField("item_id") + private String itemId; + + @TableField("SSRQ") + private String SSRQ; + + @TableField("time_Name") + private String timeName; + + @TableField("type") + private String type; + + @TableField(exist = false) + private String fileType; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningExcelVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningExcelVO.java new file mode 100644 index 00000000..179e4d3f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningExcelVO.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.sarStandWarning.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +@Data +public class WarningExcelVO { + @ApiModelProperty("文件名") + String exportName; + @ApiModelProperty("导出的ID列表") + List ids; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningExportVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningExportVO.java new file mode 100644 index 00000000..e3041f7d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/entity/WarningExportVO.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.sarStandWarning.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class WarningExportVO extends EarlyWarningEO { + + + + @ExcelProperty(value = "实施日期",index = 7) + @ColumnWidth(20) + @ApiModelProperty("实施日期") + private String SSRQ; + + + @ExcelProperty(value = "新车型实施日期",index = 8) + @ColumnWidth(20) + @ApiModelProperty("新车型实施日期") + private String XCXSSRQ; + + @ExcelProperty(value = "在产车实施日期",index = 9) + @ColumnWidth(20) + @ApiModelProperty("在产车实施日期") + private String ZCCSSRQ; + + @ExcelProperty(value = "类型",index = 0) + @ApiModelProperty("标准类别显示") + private String standTypeShow; + + @ExcelProperty(value = "适用车型",index = 10) + @ColumnWidth(20) + @ApiModelProperty("适用车型展示") + private String applyTypeShow; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/EarlyWarningEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/EarlyWarningEOService.java new file mode 100644 index 00000000..b5079d69 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/EarlyWarningEOService.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.sarStandWarning.service; + + +import com.adc.da.slrs.sarStandWarning.entity.EarlyWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.StandWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.WarningExcelVO; +import com.adc.da.slrs.sarStandWarning.entity.WarningExportVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface EarlyWarningEOService extends IService { + IPage newStandQuery(int current,int pageSize,EarlyWarningEO earlyWarningEO); + IPage oldStandQuery(int current,int pageSize,EarlyWarningEO earlyWarningEO); + IPage newItemsQuery(int current,int pageSize,EarlyWarningEO earlyWarningEO); + IPage oldItemsQuery(int current,int pageSize,EarlyWarningEO earlyWarningEO); + IPage newPolicyQuery(int current,int pageSize); + IPage oldPolicyQuery(int current,int pageSize); + String batchSave(List earlyWarningEOS); + String ChangePermissions(String id); + + + IPage getStandWarning(StandWarningEO queryPage); + + List getExportExcel(WarningExcelVO excelVO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/IWarningDateService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/IWarningDateService.java new file mode 100644 index 00000000..6e206854 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/IWarningDateService.java @@ -0,0 +1,8 @@ +package com.adc.da.slrs.sarStandWarning.service; + +import com.adc.da.slrs.sarStandWarning.entity.WarningDate; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface IWarningDateService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/Impl/EarlyWarningEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/Impl/EarlyWarningEOServiceImpl.java new file mode 100644 index 00000000..35470a63 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/Impl/EarlyWarningEOServiceImpl.java @@ -0,0 +1,189 @@ +package com.adc.da.slrs.sarStandWarning.service.Impl; + + +import com.adc.da.slrs.sarStandWarning.dao.EarlyWarningEODao; +import com.adc.da.slrs.sarStandWarning.entity.EarlyWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.StandWarningEO; +import com.adc.da.slrs.sarStandWarning.entity.WarningExcelVO; +import com.adc.da.slrs.sarStandWarning.entity.WarningExportVO; +import com.adc.da.slrs.sarStandWarning.service.EarlyWarningEOService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.List; + +@Service("EarlyWarningEOService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) + +public class EarlyWarningEOServiceImpl extends ServiceImpl implements EarlyWarningEOService { + @Resource + private EarlyWarningEODao earlyWarningEODao; + @Resource + private EarlyWarningEOServiceImpl earlyWarningEOService; + + /** + mark:标识预警的种类 + 1:新车标准预警 + 2:在产车标准预警 + 3:新车条款预警 + 4:在产车条款预警 + 5:新车政策预警 + 6:在产车政策预警 + */ + @Override + public IPage newStandQuery(int current,int pageSize,EarlyWarningEO earlyWarningEO){ + QueryWrapper wrapper = new QueryWrapper<>(); + selectMethods(earlyWarningEO, wrapper); + wrapper.eq("mark",1); + return getEarlyWarningEOIPage(current, pageSize, wrapper); + } + @Override + public IPage oldStandQuery(int current,int pageSize,EarlyWarningEO earlyWarningEO){ + QueryWrapper wrapper = new QueryWrapper<>(); + //根据标准编号查询 + selectMethods(earlyWarningEO, wrapper); + wrapper.eq("mark",2); + return getEarlyWarningEOIPage(current, pageSize, wrapper); + } + @Override + public IPage newItemsQuery(int current,int pageSize,EarlyWarningEO earlyWarningEO){ + QueryWrapper wrapper = new QueryWrapper<>(); + //根据标准编号查询 + selectMethods(earlyWarningEO, wrapper); + wrapper.eq("mark",3); + return getEarlyWarningEOIPage(current, pageSize, wrapper); + } + @Override + public IPage oldItemsQuery(int current,int pageSize,EarlyWarningEO earlyWarningEO){ + QueryWrapper wrapper = new QueryWrapper<>(); + //根据标准编号查询 + selectMethods(earlyWarningEO, wrapper); + wrapper.eq("mark",4); + return getEarlyWarningEOIPage(current, pageSize, wrapper); + } + + @Override + public IPage newPolicyQuery(int current,int pageSize) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("mark",5); + return getEarlyWarningEOIPage(current, pageSize, wrapper); + } + @Override + public IPage oldPolicyQuery(int current,int pageSize) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("mark",6); + return getEarlyWarningEOIPage(current, pageSize, wrapper); + } + + //批量插入 + @Override + public String batchSave(List earlyWarningEOS) { + boolean a = earlyWarningEOService.saveBatch(earlyWarningEOS); + return a?"插入成功":"插入失败"; + } + + @Override + public String ChangePermissions(String id) { + try { + QueryWrapper wrapper = new QueryWrapper<>(); + EarlyWarningEO earlyWarningEO =earlyWarningEODao.selectById(id); + if(earlyWarningEO==null){ + return "id不存在,更改失败"; + } + earlyWarningEO.setPower("0"); + earlyWarningEODao.updateById(earlyWarningEO); + }catch (Exception e){ + e.printStackTrace(); + return "更改失败"; + } + return "更改成功"; + } + + /** + * 分页查询标准预警 + * @return + */ + @Override + public IPage getStandWarning(StandWarningEO queryPage) { + IPage iPage = new Page<>(queryPage.getPage(),queryPage.getPageSize()); + IPage standWarningEOIPage = earlyWarningEODao.selectWarningPage(iPage,queryPage); + for (StandWarningEO standWarningEO : standWarningEOIPage.getRecords()) { + if (null != standWarningEO.getApplyType()) { + standWarningEO.setApplyType(standWarningEO.getApplyType().replace("[", "").replace("]", "").replace("\"", "")); + } + } + return standWarningEOIPage; + } + + /** + * 导出预警 + * @return + */ + @Override + public List getExportExcel(WarningExcelVO excelVO){ + List standWarningEOList = earlyWarningEODao.exportWarning( excelVO.getIds()); + for(WarningExportVO vo:standWarningEOList){ + if (vo.getApplyType() == null || vo.getApplyType().equals("")){ + vo.setApplyTypeShow(null); + }else { + List str = Arrays.asList(vo.getApplyType().split(",")); + vo.setApplyTypeShow(earlyWarningEODao.exportShow(str)); + } + } +// IPage standWarningEOIPage = earlyWarningEODao.selectWarningPage(null, null, null); + + return standWarningEOList; + } + + + private IPage getEarlyWarningEOIPage(int current,int pageSize, QueryWrapper wrapper) { + wrapper.eq("power",1); + Page page = new Page<>(current, pageSize); + IPage userIPage = earlyWarningEODao.selectPage(page, wrapper); + System.out.println("总条数"+userIPage.getTotal()); + System.out.println("总页数"+userIPage.getPages()); + return userIPage; + } + + private void selectMethods(EarlyWarningEO earlyWarningEO, QueryWrapper wrapper) { + //根据标准编号查询 + if (earlyWarningEO.getStandCode() != null && earlyWarningEO.getStandCode().length() != 0) { + wrapper.like("STAND_CODE", earlyWarningEO.getStandCode()); + } + //根据标准名称查询 + if (earlyWarningEO.getStandName() != null && earlyWarningEO.getStandName().length() != 0) { + wrapper.like("STAND_NAME", earlyWarningEO.getStandName()); + } + //根据实施日期查询 + if (earlyWarningEO.getPutTime() != null) { + SimpleDateFormat formater = new SimpleDateFormat(); + formater.applyPattern("yyyy-MM-dd"); + if (earlyWarningEO.getLastTime() != null) { + wrapper.between("PUT_TIME", formater.format(earlyWarningEO.getPutTime()), formater.format(earlyWarningEO.getLastTime())); + } else { + wrapper.ge("PUT_TIME", formater.format(earlyWarningEO.getPutTime())); + } + } + if (earlyWarningEO.getLastTime() != null) { + SimpleDateFormat formater = new SimpleDateFormat(); + formater.applyPattern("yyyy-MM-dd"); + wrapper.le("PUT_TIME", formater.format(earlyWarningEO.getLastTime())); + } + //根据适用车型查询 + if (earlyWarningEO.getApplyType() != null && earlyWarningEO.getApplyType().length() != 0) { + wrapper.like("APPLY_TYPE", earlyWarningEO.getApplyType()); + } + } + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/Impl/WarningDateServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/Impl/WarningDateServiceImpl.java new file mode 100644 index 00000000..e8dd0771 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandWarning/service/Impl/WarningDateServiceImpl.java @@ -0,0 +1,11 @@ +package com.adc.da.slrs.sarStandWarning.service.Impl; + +import com.adc.da.slrs.sarStandWarning.dao.WarningDateDao; +import com.adc.da.slrs.sarStandWarning.entity.WarningDate; +import com.adc.da.slrs.sarStandWarning.service.IWarningDateService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class WarningDateServiceImpl extends ServiceImpl implements IWarningDateService { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarInterpretationForeignStandardController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarInterpretationForeignStandardController.java new file mode 100644 index 00000000..74662767 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarInterpretationForeignStandardController.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarInterpretationForeignStandard; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-18 +*/ +@RestController +@Api(description = "|SarInterpretationForeignStandard|") +@RequestMapping("/sarStandardComplianceAssessResult/sar-interpretation-foreign-standard") +public class SarInterpretationForeignStandardController extends BaseController { + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarInterpretationNationalStandardController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarInterpretationNationalStandardController.java new file mode 100644 index 00000000..50e9f4e9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarInterpretationNationalStandardController.java @@ -0,0 +1,52 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandardComplianceAssessResult.service.impl.SarInterpretationNationalStandardServiceImpl; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarInterpretationNationalStandard; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-18 +*/ +@RestController +@Api(description = "|SarInterpretationNationalStandard|") +@RequestMapping("/${restPath}/sarStandardComplianceAssessResult/sar-interpretation-national-standard") +public class SarInterpretationNationalStandardController extends BaseController { + + @Autowired + SarInterpretationNationalStandardServiceImpl sarInterpretationNationalStandardService; + + @ApiOperation(value = "标准查询") + @PostMapping("/saveBatch") + public String saveBatch(@RequestBody List findStandDto){ + return sarInterpretationNationalStandardService.saveBath(findStandDto); + } + + @ApiOperation(value = "修改技术评估结果") + @PostMapping("/updateById") + public ResponseMessage updateById(@RequestBody SarInterpretationNationalStandard findStandDto){ + if (sarInterpretationNationalStandardService.updateData(findStandDto)) { + return Result.success("success"); + }else { + return Result.error("error"); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarStandardComplianceAssessResultController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarStandardComplianceAssessResultController.java new file mode 100644 index 00000000..680d71df --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarStandardComplianceAssessResultController.java @@ -0,0 +1,346 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.*; +import com.adc.da.slrs.sarStandardComplianceAssessResult.service.ISarInterpretationForeignStandardService; +import com.adc.da.slrs.sarStandardComplianceAssessResult.service.ISarInterpretationNationalStandardService; +import com.adc.da.slrs.sarStandardComplianceAssessResult.service.ISarStandardComplianceProductAssessService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.lang.reflect.InvocationTargetException; +import java.util.*; + +/** + *

    + * 标准法规准入清单详情表 前端控制器 + *

    + * + * @author super_liu + * @since 2021-06-02 + */ +@RestController +@Api(tags = "福田标准法规--标准法规库--标准合规评估结果") +@RequestMapping("/${restPath}/sarStandardComplianceAssessResult") +public class SarStandardComplianceAssessResultController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandardComplianceAssessResultController.class); + + + @Autowired + private ISarStandardComplianceProductAssessService iSarStandardComplianceProductAssessService; + + @Autowired + private ISarInterpretationForeignStandardService iSarInterpretationForeignStandardService; + @Autowired + private ISarInterpretationNationalStandardService iSarInterpretationNationalStandardService; + + @ApiOperation(value = "条件查询标准清单") + @GetMapping("/standard") + public ResponseMessage selectStandard(SarStandardsInfoEO eo) throws Exception { +// if(StringUtils.isNotBlank(eo.getStandNumber())){ +// eo.setStandNumber(eo.getStandNumber().replace(" ","  ")); +// } + if (eo.getStandApplicationType() == 1) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + IPage iPage = new Page<>(eo.getCurrent(), eo.getSize()); + queryWrapper.select(" STAND_ID,ANY_VALUE(STAND_NUMBER) as STAND_NUMBER, STAND_NAME, STAND_TYPE"); + if (eo.getStandName() != null && !eo.getStandName().trim().equals("")) { + queryWrapper.like("STAND_NAME", eo.getStandName().trim()); + } + if (eo.getStandNumber() != null && !eo.getStandNumber().trim().equals("")) { + queryWrapper.like("STAND_NUMBER", eo.getStandNumber().trim()); + } + if (eo.getType() != null && !eo.getType().trim().equals("")) { + queryWrapper.like("type", eo.getType().trim()); + } + queryWrapper.groupBy("STAND_ID,STAND_NAME,STAND_TYPE"); + IPage page = iSarStandardComplianceProductAssessService.page(iPage, queryWrapper); + + while (page.getRecords().remove(null)) ; + + return Result.success(page); + } else { + if (eo.getPosition() == 1) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + IPage iPage = new Page<>(eo.getCurrent(), eo.getSize()); + queryWrapper.select("distinct STAND_ID, STAND_NUMBER, STAND_NAME, STAND_TYPE, min(INTERPRETATION_TIME) as INTERPRETATION_TIME,risk_degree,prc_num"); + if (eo.getStandName() != null && !eo.getStandName().trim().equals("")) { + queryWrapper.like("STAND_NAME", eo.getStandName().trim()); + } + if (eo.getStandNumber() != null && !eo.getStandNumber().trim().equals("")) { + queryWrapper.like("STAND_NUMBER", eo.getStandNumber().trim()); + } + queryWrapper.groupBy("STAND_ID, STAND_NUMBER, STAND_NAME, STAND_TYPE,risk_degree,prc_num"); + IPage page = iSarInterpretationNationalStandardService.page(iPage, queryWrapper); + + while (page.getRecords().remove(null)) ; + + return Result.success(page); + } else { + QueryWrapper queryWrapper = new QueryWrapper<>(); + IPage iPage = new Page<>(eo.getCurrent(), eo.getSize()); + queryWrapper.select("distinct STAND_ID, STAND_NUMBER, STAND_NAME, STAND_TYPE, INTERPRETATION_TIME"); + if (eo.getStandName() != null && !eo.getStandName().trim().equals("")) { + queryWrapper.like("STAND_NAME", eo.getStandName().trim()); + } + if (eo.getStandNumber() != null && !eo.getStandNumber().trim().equals("")) { + queryWrapper.like("STAND_NUMBER", eo.getStandNumber().trim()); + } + + IPage page = iSarInterpretationForeignStandardService.page(iPage, queryWrapper); + while(page.getRecords().remove(null)); + return Result.success(page); + } + } + } + + private static class InsertEntity{ + List entityList; + T eo; + } + + @ApiOperation(value = "(插入/更新)标准清单") + @PostMapping("/standard") + public ResponseMessage insertStandard(@RequestBody InsertEntity insertEntity) throws InvocationTargetException, IllegalAccessException { + + SarStandardsInfoEO eo = insertEntity.eo; + + if (eo.getStandApplicationType() == 1) { + + List entityList = new ArrayList<>(); + for (int i = 0; i < insertEntity.entityList.size(); i++) { + SarStandardComplianceProductAssess obj = new SarStandardComplianceProductAssess(); + BeanUtils.populate(obj, insertEntity.entityList.get(i)); + entityList.add(obj); + } + + iSarStandardComplianceProductAssessService.saveOrUpdateBatch(entityList); + + } else { + if (eo.getPosition() == 1) { + List entityList = new ArrayList<>(); + for (int i = 0; i < insertEntity.entityList.size(); i++) { + SarInterpretationNationalStandard obj = new SarInterpretationNationalStandard(); + BeanUtils.populate(obj, insertEntity.entityList.get(i)); + entityList.add(obj); + } + iSarInterpretationNationalStandardService.saveOrUpdateBatch(entityList); + + }else{ + List entityList = new ArrayList<>(); + for (int i = 0; i < insertEntity.entityList.size(); i++) { + SarInterpretationForeignStandard obj = new SarInterpretationForeignStandard(); + BeanUtils.populate(obj, insertEntity.entityList.get(i)); + entityList.add(obj); + } + iSarInterpretationForeignStandardService.saveOrUpdateBatch(entityList); + + } + } + + + return Result.success(); + } + + @ApiOperation(value = "条件查询标准涉及项目符合性清单") + @GetMapping("/product") + public ResponseMessage> selectProduct(SarStandardComplianceProductAssessEO eo) throws Exception { + IPage iPage = new Page<>(eo.getCurrent(), eo.getSize()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (eo.getType() != null) queryWrapper.eq("type", eo.getType()); + if (eo.getProductName() != null) queryWrapper.like("product_name", eo.getProductName()); + if (eo.getProductId() != null) queryWrapper.like("product_id", eo.getProductId()); + queryWrapper.orderByAsc("product_name"); + queryWrapper.orderByAsc("standard_item"); + +// if (eo.getInterpretationTime() != null) queryWrapper.eq("INTERPRETATION_TIME", eo.getInterpretationTime()); + + IPage page = iSarStandardComplianceProductAssessService.page(iPage, queryWrapper); + return Result.success(page); + } + + + @ApiOperation(value = "标准涉及项目复合性详情") + @GetMapping("/productNewDetail") + public ResponseMessage>> selectProductDetail(SarStandardComplianceProductAssessEO eo) throws Exception { + IPage iPage = new Page<>(eo.getCurrent(), eo.getSize()); + Map> map=new HashMap<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("STAND_ID", eo.getStandId()); + queryWrapper.eq("product_id", eo.getProductId()); + queryWrapper.and(sarStandardComplianceProductAssessQueryWrapper -> sarStandardComplianceProductAssessQueryWrapper.eq("no_involve","").or().isNull("no_involve")); + queryWrapper.isNotNull("research_completion_time"); + queryWrapper.orderByAsc("product_name"); + queryWrapper.orderByAsc("standard_item"); + Page p1=new Page(); + IPage page = iSarStandardComplianceProductAssessService.page(iPage, queryWrapper); + BeanUtils.copyProperties(page,p1); + p1.setRecords(orderUtils(page.getRecords())); + p1.setTotal(page.getTotal()); + map.put("unfit",p1); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("STAND_ID", eo.getStandId()); + queryWrapper1.eq("product_id", eo.getProductId()); + queryWrapper1.and(sarStandardComplianceProductAssessQueryWrapper -> sarStandardComplianceProductAssessQueryWrapper.ne("research_compliance","").isNotNull("research_compliance")); + queryWrapper1.orderByAsc("product_name"); + queryWrapper1.orderByAsc("standard_item"); + IPage page1 = iSarStandardComplianceProductAssessService.page(iPage, queryWrapper1); + Page p2=new Page(); + BeanUtils.copyProperties(page1,p2); + p2.setRecords(orderUtils(page1.getRecords())); + p2.setTotal(page1.getTotal()); + map.put("fit",p2); + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper2.eq("STAND_ID", eo.getStandId()); + queryWrapper2.eq("product_id", eo.getProductId()); + queryWrapper2.and(sarStandardComplianceProductAssessQueryWrapper -> sarStandardComplianceProductAssessQueryWrapper.ne("no_involve","").and(sarStandardComplianceProductAssessQueryWrapper1 -> sarStandardComplianceProductAssessQueryWrapper1.isNotNull("no_involve"))); + queryWrapper2.orderByAsc("product_name"); + queryWrapper2.orderByAsc("standard_item"); + IPage page2 = iSarStandardComplianceProductAssessService.page(iPage, queryWrapper2); + page2.setRecords(orderUtils(page2.getRecords())); + map.put("noFit",page2); + return Result.success(map); + } + + private List orderUtils(List sarStandardCompliance){ + Map> stringMap=new HashMap<>(); + List orderKey=new ArrayList<>(); + + for (SarStandardComplianceProductAssess s:sarStandardCompliance) { + if (null!=s.getStandardItem()) { + String[] as=(s.getStandardItem()+".").split("\\."); + if(StringUtils.isNumeric(as[0].trim())){ + if (orderKey.contains(Integer.valueOf(as[0].trim().toString()))) { + stringMap.get(Integer.valueOf(as[0].trim().toString())).add(s); + } else { + orderKey.add(Integer.valueOf(as[0].trim().toString())); + List assesses2 = new ArrayList<>(); + assesses2.add(s); + stringMap.put(Integer.valueOf(as[0].trim().toString()), assesses2); + } + } + }else { + if (null!=stringMap.get(0)) { + stringMap.get(0).add(s); + }else { + List assesses = new ArrayList<>(); + assesses.add(s); + stringMap.put(0,assesses); + orderKey.add(0); + } + } + + + + } + Collections.sort(orderKey,(o1, o2) -> { + return (o1 -o2); + }); + List res=new ArrayList<>(); + orderKey.forEach(integer -> { + res.addAll(stringMap.get(integer)); + }); + return res; + } + + @ApiOperation(value = "标准涉及项目复合性") + @GetMapping("/productNew") + public ResponseMessage> selectProduct(unCountDTO eo) throws Exception { + Page iPage = new Page<>(); + iPage.setCurrent(eo.getCurrent()); + iPage.setSize(eo.getSize()); + + IPage page = iSarStandardComplianceProductAssessService.selectPages(iPage, eo); + return Result.success(page); + } + + @ApiOperation(value = "插入标准涉及项目符合性清单") + @PostMapping("/add") + public ResponseMessage insertProduct(@RequestBody List eo) throws Exception { + + eo.forEach(sarStandardComplianceProductAssess -> { + sarStandardComplianceProductAssess.setId(UUIDUtils.randomUUID(32)); + sarStandardComplianceProductAssess.setInterpretationTime(new Date()); + }); + iSarStandardComplianceProductAssessService.saveBatch(eo); + + + return Result.success(); + } + + + @ApiOperation(value = "条件查询技术审核符合性清单") + @GetMapping("/interpretation") + public ResponseMessage selectNationalStandard(InterpretationEO eo) throws Exception { + if (eo.getPosition() == 1) { + IPage iPage = new Page<>(eo.getCurrent(), eo.getSize()); + List standards=iSarInterpretationNationalStandardService.getAllDatas(eo); + Integer datasCount=iSarInterpretationNationalStandardService.getAllDatasCount(eo); + iPage.setTotal(datasCount); + iPage.setRecords(standards); + while (iPage.getRecords().remove(null)) ; + return Result.success(iPage); + } else { + IPage iPage = new Page<>(eo.getCurrent(), eo.getSize()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + //如果查询条件里标准编号不为空,查询 + if (eo.getStandNumber() != null) queryWrapper.like("STAND_NUMBER",eo.getStandNumber()); + //如果查询条件里标准名称不为空,查询 + if (eo.getStandName() != null) queryWrapper.like("STAND_NAME",eo.getStandName()); + //如果查询条件里具体章条不为空,查询 + if (eo.getSpecificItem() != null) queryWrapper.like("specific_item",eo.getSpecificItem()); + + if (eo.getInterpretationTime() != null) queryWrapper.eq("INTERPRETATION_TIME", eo.getInterpretationTime()); + if (eo.getStandId() != null) queryWrapper.eq("STAND_ID", eo.getStandId()); + IPage page = iSarInterpretationForeignStandardService.page(iPage, queryWrapper); + while (page.getRecords().remove(null)) ; + + return Result.success(page); + } + } + + + @ApiOperation(value = "插入技术审核符合性清单") + @PostMapping("/interpretation") + public ResponseMessage insertInterpretation(InsertEntity insertEntity) throws Exception { + + InterpretationEO eo = insertEntity.eo; + + if (eo.getPosition() == 1) { + + List entityList = new ArrayList<>(); + for (int i = 0; i < insertEntity.entityList.size(); i++) { + SarInterpretationNationalStandard obj = new SarInterpretationNationalStandard(); + BeanUtils.populate(obj, insertEntity.entityList.get(i)); + entityList.add(obj); + } + iSarInterpretationNationalStandardService.saveOrUpdateBatch(entityList); + } else { + + + List entityList = new ArrayList<>(); + for (int i = 0; i < insertEntity.entityList.size(); i++) { + SarInterpretationForeignStandard obj = new SarInterpretationForeignStandard(); + BeanUtils.populate(obj, insertEntity.entityList.get(i)); + entityList.add(obj); + } + iSarInterpretationForeignStandardService.saveOrUpdateBatch(entityList); + + } + + return Result.success(); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarStandardComplianceProductAssessController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarStandardComplianceProductAssessController.java new file mode 100644 index 00000000..6ed247de --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/controller/SarStandardComplianceProductAssessController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardComplianceProductAssess; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-18 +*/ +@RestController +@Api(description = "|SarStandardComplianceProductAssess|") +@RequestMapping("/sarStandardComplianceAssessResult/sar-standard-compliance-product-assess") +public class SarStandardComplianceProductAssessController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarInterpretationForeignStandardDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarInterpretationForeignStandardDao.java new file mode 100644 index 00000000..698cfcaa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarInterpretationForeignStandardDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.dao; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarInterpretationForeignStandard; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +public interface SarInterpretationForeignStandardDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarInterpretationNationalStandardDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarInterpretationNationalStandardDao.java new file mode 100644 index 00000000..b7a3094c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarInterpretationNationalStandardDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.dao; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.InterpretationEO; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarInterpretationNationalStandard; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +public interface SarInterpretationNationalStandardDao extends BaseMapper { + + boolean updateData(@Param("find") SarInterpretationNationalStandard findStandDto); + + List getAllDatas(InterpretationEO sarInterpretationNationalStandard); + + Integer getAllDatasCout(InterpretationEO sarInterpretationNationalStandard); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarStandardComplianceProductAssessDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarStandardComplianceProductAssessDao.java new file mode 100644 index 00000000..880f782d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/dao/SarStandardComplianceProductAssessDao.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.dao; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardComplianceProductAssess; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardComplianceProductAssessEO; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.unCountDTO; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +public interface SarStandardComplianceProductAssessDao extends BaseMapper { + + List selectPages(@Param("page")Long page,@Param("pageSize")Long size,@Param("product") unCountDTO productAssess); + + List selectPagesCount(@Param("product")unCountDTO productAssess); + + List selectByPages(@Param("page")Long page,@Param("pageSize")Long size,@Param("product") SarStandardComplianceProductAssess productAssess); + + List selectByPagesCount(@Param("product")SarStandardComplianceProductAssess productAssess); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/InterpretationEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/InterpretationEO.java new file mode 100644 index 00000000..660234f8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/InterpretationEO.java @@ -0,0 +1,54 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@ApiModel("条件查询") +public class InterpretationEO { + +// @ApiModelProperty(value = "'审核编号'") +// private String interpretation_id; + + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_NUMBER") + private String standNumber; + + @ApiModelProperty(value = "标准名称") + @TableField("STAND_NAME") + private String standName; + + @ApiModelProperty(value = "具体章条") + @TableField("specific_item") + private String specificItem; + + @ApiModelProperty(value = "评估时间") + @TableField("INTERPRETATION_TIME") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date interpretationTime; + + @ApiModelProperty(value = "流程编号") + private String prcNum; + + @ApiModelProperty(value = "国内(1)/外(2)") + private Integer position=1; + + @ApiModelProperty("页数") + private Integer current=1; + + @ApiModelProperty("页内数量") + private Integer size=20; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarBaseStandardInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarBaseStandardInfo.java new file mode 100644 index 00000000..90cc88c3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarBaseStandardInfo.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class SarBaseStandardInfo { + private String standard_id; + private String standard_number; + private String standard_name; + private String standard_type; + private LocalDateTime INTERPRETATION_TIME; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarInterpretationForeignStandard.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarInterpretationForeignStandard.java new file mode 100644 index 00000000..87930898 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarInterpretationForeignStandard.java @@ -0,0 +1,102 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarInterpretationForeignStandard对象", description="") +public class SarInterpretationForeignStandard extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "具体章条") + private String specificItem; + + @ApiModelProperty(value = "核心技术要求") + private String coreTechnicalRequirement; + + @ApiModelProperty(value = "相对于国行标差异点") + private String comparedDomesticStandard; + + @ApiModelProperty(value = "对应国行版(仅国外有)") + private String correspondDomesticStandard; + + private String complianceState; + + @ApiModelProperty(value = "上一版本号") + @TableField("LAST_VERSION_NUMBER") + private String lastVersionNumber; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "标准分类") + @TableField("STAND_TYPE") + private String standType; + + @ApiModelProperty(value = "标准类别") + @TableField("STAND_SORT") + private String standSort; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_NUMBER") + private String standNumber; + + @ApiModelProperty(value = "标准名称") + @TableField("STAND_NAME") + private String standName; + + + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "评估状态") + @TableField("INTERPRETATION_STATE") + private String interpretationState; + + @ApiModelProperty(value = "评估时间") + @TableField("INTERPRETATION_TIME") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date interpretationTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarInterpretationNationalStandard.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarInterpretationNationalStandard.java new file mode 100644 index 00000000..f71a5c73 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarInterpretationNationalStandard.java @@ -0,0 +1,138 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarInterpretationNationalStandard对象", description="") +public class SarInterpretationNationalStandard extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "具体章条") + private String specificItem; + + @ApiModelProperty(value = "核心技术要求") + private String coreTechnicalRequirement; + + @ApiModelProperty(value = "相对于上一版本变化点") + private String comparedWithPrevious; + + @ApiModelProperty(value = "合规性分析") + private String complianceState; + + @ApiModelProperty(value = "上一版本号") + @TableField("LAST_VERSION_NUMBER") + private String lastVersionNumber; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private Date modifyTime; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "标准分类") + @TableField("STAND_TYPE") + private String standType; + + @ApiModelProperty(value = "标准类别") + @TableField("STAND_SORT") + private String standSort; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_NUMBER") + private String standNumber; + + @ApiModelProperty(value = "标准名称") + @TableField("STAND_NAME") + private String standName; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "评估状态") + @TableField("INTERPRETATION_STATE") + private String interpretationState; + + @ApiModelProperty(value = "评估时间") + @TableField("INTERPRETATION_TIME") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date interpretationTime; + + @TableField("ID") + private String id; + + + @ApiModelProperty(value = "风险程度") + @TableField("risk_degree") + private String riskDegree; + + @ApiModelProperty(value = "流程编号") + private String prcNum; + + + @TableField(exist = false) + private String applyArctic; + @TableField(exist = false) + private String compliianceRequir; + @TableField(exist = false) + private String responseibleUnit; + @TableField(exist = false) + private String termsConditions; + @TableField(exist = false) + private String mainpointsImpementation; + @TableField(exist = false) + private String svpps; + @TableField(exist = false) + private String fileType; + @TableField(exist = false) + private String xccssrq; + @TableField(exist = false) + private String zccssrq; + @TableField(exist = false) + private String complianceStateSSI; + @TableField(exist = false) + private String compareWithPrevious; + @TableField(exist = false) + private String coreTechnicalRequirementSSI; + @TableField(exist = false) + private String readContent; + @TableField(exist = false) + private String itemName; + @TableField(exist = false) + private String dutyEngineer; + @TableField(exist = false) + private String complianceRequire; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardComplianceProductAssess.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardComplianceProductAssess.java new file mode 100644 index 00000000..cfe5d436 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardComplianceProductAssess.java @@ -0,0 +1,145 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandardComplianceProductAssess对象", description="") +public class SarStandardComplianceProductAssess extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "'产品线'") + private String productLineId; + + @ApiModelProperty(value = "'项目id'") + @TableField("product_id") + private String productId; + + @ApiModelProperty(value = "'项目名称'") + private String productName; + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_NUMBER") + private String standNumber; + + @ApiModelProperty(value = "'标准名称'") + @TableField("STAND_NAME") + private String standName; + + @ApiModelProperty(value = "'标准章条'") + private String standardItem; + + @ApiModelProperty(value = "标准类型") + @TableField("STAND_TYPE") + private String standType; + + @ApiModelProperty(value = "标准主要内容") + private String standardInfo; + + @ApiModelProperty(value = "1是在产,0是在研") + private Integer productType; + + @ApiModelProperty(value = "在研产品实施时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date researchImplementationTime; + + @ApiModelProperty(value = "在研产品合规信息") + private String researchCompliance; + + @ApiModelProperty(value = "在研产品不合规项目") + private String researchNonCompliance; + + @ApiModelProperty(value = "在研产品不合规应对措施") + private String researchCountermeasures; + + @ApiModelProperty(value = "在研产品不合规完成时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date researchCompletionTime; + + @ApiModelProperty(value = "在产产品实施时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date productionImplementationTime; + + @ApiModelProperty(value = "在产产品合规信息") + private String productionCompliance; + + @ApiModelProperty(value = "在产产品不合规信息") + @TableField("production_non_compliance") + private String productionNonCompliance; + + @ApiModelProperty(value = "在产产品不合规应对措施") + private String productionCountermeasures; + + @ApiModelProperty(value = "在产产品不合规完成时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date productionCompletionTime; + + @ApiModelProperty(value = "审查状态") + @TableField("INTERPRETATION_STATE") + private String interpretationState; + + @ApiModelProperty(value = "审查时间") + @TableField("INTERPRETATION_TIME") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date interpretationTime; + + @ApiModelProperty(value = "条款名称") + @TableField("clause_name") + private String clauseName; + + @ApiModelProperty(value = "流程UUID") + @TableField("type") + private String type; + + @ApiModelProperty(value = "评估时间") + @TableField("evaluation_time") + private String evaluationTime; + + @ApiModelProperty(value = "评估人") + @TableField("evaluation_people") + private String evaluationPeople; + + @ApiModelProperty(value = "评估人") + @TableField("evaluation_people_name") + private String evaluationPeopleName; + + @ApiModelProperty(value = "不涉及理由") + @TableField("no_involve") + private String noInvolve; + + private String id; + + @ApiModelProperty(value = "符合不符合") + @TableField(exist = false) + private String bfh; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardComplianceProductAssessEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardComplianceProductAssessEO.java new file mode 100644 index 00000000..dbd7514c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardComplianceProductAssessEO.java @@ -0,0 +1,44 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@ApiModel("条件查询") +public class SarStandardComplianceProductAssessEO{ + + @ApiModelProperty(value = "标准ID") + @TableField("STAND_ID") + private String standId; + + @ApiModelProperty(value = "流程UUID") + @TableField("type") + private String type; + + @ApiModelProperty(value = "项目编号") + @TableField("product_id") + private String productId; + + @ApiModelProperty(value = "'项目名称'") + private String productName; + + @ApiModelProperty(value = "评估时间") + @TableField("INTERPRETATION_TIME") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date interpretationTime; + + @ApiModelProperty("页数") + private Integer current=1; + + @ApiModelProperty("页内数量") + private Integer size=20; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardsInfoEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardsInfoEO.java new file mode 100644 index 00000000..4fb0c327 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/SarStandardsInfoEO.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@ApiModel(value="SarStandardsInfo对象", description="") +public class SarStandardsInfoEO { + @ApiModelProperty(value = "标准编号") + private String standNumber; + + private String standType; + + @ApiModelProperty(value = "标准名称") + private String standName; + + @ApiModelProperty(value = "应用类型") + private Integer standApplicationType=1; + + @ApiModelProperty(value = "国内1,国外2") + private Integer position=1; + + @ApiModelProperty(value = "流程UUID") + @TableField("type") + private String type; + + @ApiModelProperty("页数") + private Integer current=1; + + @ApiModelProperty("页内数量") + private Integer size=20; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/unCountDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/unCountDTO.java new file mode 100644 index 00000000..7239ca17 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/entity/unCountDTO.java @@ -0,0 +1,41 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.entity; + +import lombok.Data; + +@Data +public class unCountDTO { + + private String standId; + + private String productName; + + private String productId; + + private String productNumber; + + private String productLine; + + private String projectGroup; + + private String projectManager; + + private String uName; + + private String unCount; + + private String unCounts; + + private String allCounts; + + private Long current; + + private Long size; + + //项目编号 + private String sarId; + + private String type; + + private String noInvolveReason; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarInterpretationForeignStandardService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarInterpretationForeignStandardService.java new file mode 100644 index 00000000..9ba49575 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarInterpretationForeignStandardService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.service; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarInterpretationForeignStandard; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +public interface ISarInterpretationForeignStandardService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarInterpretationNationalStandardService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarInterpretationNationalStandardService.java new file mode 100644 index 00000000..52e6e773 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarInterpretationNationalStandardService.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.service; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.InterpretationEO; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarInterpretationNationalStandard; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +public interface ISarInterpretationNationalStandardService extends IService { + + String saveBath(List sarInterpretationNationalStandards); + + boolean updateData(SarInterpretationNationalStandard findStandDto); + + List getAllDatas(InterpretationEO sarInterpretationNationalStandard); + + Integer getAllDatasCount(InterpretationEO sarInterpretationNationalStandard); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarStandardComplianceProductAssessService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarStandardComplianceProductAssessService.java new file mode 100644 index 00000000..3b36bdbb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/ISarStandardComplianceProductAssessService.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.service; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardComplianceProductAssess; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.unCountDTO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; + + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +public interface ISarStandardComplianceProductAssessService extends IService { + + IPage selectPages(Page page, @Param("product") unCountDTO productAssess); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarInterpretationForeignStandardServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarInterpretationForeignStandardServiceImpl.java new file mode 100644 index 00000000..f78c54e0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarInterpretationForeignStandardServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.service.impl; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarInterpretationForeignStandard; +import com.adc.da.slrs.sarStandardComplianceAssessResult.dao.SarInterpretationForeignStandardDao; +import com.adc.da.slrs.sarStandardComplianceAssessResult.service.ISarInterpretationForeignStandardService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +@Service +public class SarInterpretationForeignStandardServiceImpl extends ServiceImpl implements ISarInterpretationForeignStandardService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarInterpretationNationalStandardServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarInterpretationNationalStandardServiceImpl.java new file mode 100644 index 00000000..01535a29 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarInterpretationNationalStandardServiceImpl.java @@ -0,0 +1,80 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.service.impl; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.dao.SarStandardComplianceProductAssessDao; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.InterpretationEO; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarInterpretationNationalStandard; +import com.adc.da.slrs.sarStandardComplianceAssessResult.dao.SarInterpretationNationalStandardDao; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardComplianceProductAssess; +import com.adc.da.slrs.sarStandardComplianceAssessResult.service.ISarInterpretationNationalStandardService; +import com.adc.da.sys.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +@Service +public class SarInterpretationNationalStandardServiceImpl extends ServiceImpl implements ISarInterpretationNationalStandardService { + + @Autowired + SarInterpretationNationalStandardDao sarInterpretationNationalStandardDao; + + @Override + public String saveBath(List sarInterpretationNationalStandards) { + sarInterpretationNationalStandards.forEach(sarInterpretationNationalStandard -> {sarInterpretationNationalStandard.setId(UUIDUtils.randomUUID(32));}); + boolean flag = this.saveBatch(sarInterpretationNationalStandards,sarInterpretationNationalStandards.size()); + sarInterpretationNationalStandards.forEach(sarInterpretationNationalStandard -> { + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("stand_id",sarInterpretationNationalStandard.getStandId()); +// List assessList = sarStandardComplianceProductAssessDao.selectList(queryWrapper); +// if (assessList.isEmpty()){ +// SarStandardComplianceProductAssess sar=new SarStandardComplianceProductAssess(); +// sar.setId(UUIDUtils.randomUUID(32)); +// sar.setStandId(sarInterpretationNationalStandard.getStandId()); +// sar.setStandNumber(sarInterpretationNationalStandard.getStandNumber()); +// sar.setStandType(sarInterpretationNationalStandard.getStandType()); +// sar.setStandName(sarInterpretationNationalStandard.getStandName()); +// sar.setStandType(sarInterpretationNationalStandard.getStandType()); +// sar.setInterpretationTime(sarInterpretationNationalStandard.getInterpretationTime()); +// sarStandardComplianceProductAssessDao.insert(sar); +// } + }); + String res = flag ? "1":"0"; + return res; + } + + @Override + public boolean updateData(SarInterpretationNationalStandard findStandDto) { + return sarInterpretationNationalStandardDao.updateData(findStandDto); + } + + @Override + public List getAllDatas(InterpretationEO sarInterpretationNationalStandard) { + List list = sarInterpretationNationalStandardDao.getAllDatas(sarInterpretationNationalStandard); + + // 处理适用车型 ["N1","N2"] + for (SarInterpretationNationalStandard standard : list) { + if (StringUtils.isNotEmpty(standard.getApplyArctic()) && standard.getApplyArctic().startsWith("[") && standard.getApplyArctic().endsWith("]")) { + String applyArctics = standard.getApplyArctic().substring(1,standard.getApplyArctic().length()-1).replace("\"", ""); + standard.setApplyArctic(applyArctics); + } + } + + return list; + } + + @Override + public Integer getAllDatasCount(InterpretationEO sarInterpretationNationalStandard) { + return sarInterpretationNationalStandardDao.getAllDatasCout(sarInterpretationNationalStandard); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarStandardComplianceProductAssessServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarStandardComplianceProductAssessServiceImpl.java new file mode 100644 index 00000000..66f8647f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardComplianceAssessResult/service/impl/SarStandardComplianceProductAssessServiceImpl.java @@ -0,0 +1,53 @@ +package com.adc.da.slrs.sarStandardComplianceAssessResult.service.impl; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardComplianceProductAssess; +import com.adc.da.slrs.sarStandardComplianceAssessResult.dao.SarStandardComplianceProductAssessDao; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardComplianceProductAssessEO; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.unCountDTO; +import com.adc.da.slrs.sarStandardComplianceAssessResult.service.ISarStandardComplianceProductAssessService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-18 + */ +@Service +public class SarStandardComplianceProductAssessServiceImpl extends ServiceImpl implements ISarStandardComplianceProductAssessService { + + @Autowired + SarStandardComplianceProductAssessDao sarStandardComplianceProductAssessDao; + + + @Override + public IPage selectPages(Page pages, unCountDTO productAssess) { + IPage productAssessIPage= new Page<>(); + List res=sarStandardComplianceProductAssessDao.selectPages(pages.getCurrent(),pages.getSize(),productAssess); + res.forEach(unCountDTO -> { + unCountDTO.setStandId(productAssess.getStandId()); + unCountDTO.setType(productAssess.getType()); + if (unCountDTO.getAllCounts().equals(unCountDTO.getUnCounts())){ + unCountDTO.setUnCount("-1"); + } + }); + productAssessIPage.setRecords(res); + List a=sarStandardComplianceProductAssessDao.selectPagesCount(productAssess); + if (null!=a) { + productAssessIPage.setTotal(a.size()); + }else { + productAssessIPage.setTotal(0); + } + productAssessIPage.setCurrent(pages.getCurrent()); + productAssessIPage.setSize(pages.getSize()); + return productAssessIPage; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java new file mode 100644 index 00000000..7bf2ac8b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java @@ -0,0 +1,928 @@ +package com.adc.da.slrs.sarStandardsInfo.controller; + + +import cn.hutool.core.util.ZipUtil; +import com.adc.da.Log.BusinessType; +import com.adc.da.Log.EpcLog; +import com.adc.da.common.FileUnZip; +import com.adc.da.common.ReadExcel; +import com.adc.da.exception.AdcDaBaseException; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarBussStandFile.entity.SarBussStandFile; +import com.adc.da.slrs.sarBussStandFile.service.ISarBussStandFileService; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarLawsInfo.service.ISarLawsInfoService; +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import com.adc.da.slrs.sarStandFile.service.ISarStandFileService; +import com.adc.da.slrs.sarStandMenu.dao.SarStandMenuDao; +import com.adc.da.slrs.sarStandMenu.entity.SarStandMenu; +import com.adc.da.slrs.sarStandardsInfo.entity.*; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.*; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.util.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +/** +*

    + * 前端控制器 There is no way the + *

    +* +* @author super_liu +* @since 2021-05-31 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库--国内标准法规") +@RequestMapping("/${restPath}/sarStandardsInfo/sar-standards-info") +public class SarStandardsInfoController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoController.class); + + @Autowired + private ISarStandardsInfoService sarStandardsInfoEOService; + + @Autowired + private ISarBussionessStandService iSarBussionessStandService; + + @Autowired + private ISarStandFileService sarStandFileService; + + + @Value("${file.path}") + private String filePath; + + @Value("${file.downloadUrl}") + private String fileDownloadPath; + + private static String stringTy = "UTF8"; + private static String responseParam1 = "Content-Disposition"; + private static String responseParam2 = "attachment;filename="; + + @Autowired + ISarLawsInfoService sarLawsInfoEOService; + +// @ApiOperation(value="SarStandardsInfoEO|反向标准操作") +// @GetMapping(value = "/reverseQueryStand") +// public void reverseQueryStand(@RequestParam(name="ids",required=true) String ids, String standName, String type) { +// this.sarStandardsInfoEOService.reverseQueryStand(Arrays.asList(ids.split(",")),standName,type); +// } + + @ApiOperation(value = "|SarStandardsInfoEO|自定义分页查询") + @GetMapping("/getSarStandardsInfoPage") + //@RequiresPermissions("lawss:sarStandardsInfo:getSarStandardsInfoPage") + public ResponseMessage> getSarStandardsInfoPage(SarStandardsInfoEOPage page,@RequestParam(defaultValue = "0") String mark) throws Exception { + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + + if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + //不改传参强行置换 +// searchList.forEach(sarAdvanceSearchVO -> { +// if ("TXLB".equals(sarAdvanceSearchVO.getField())){ +// sarAdvanceSearchVO.setField("STAND_SYSTEM"); +// } +// }); + String advanceStr = SarAdvanceSearchUtil.createStandSql(searchList,"sar_stand_attr_info"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + + if(page.getUserId() == null || page.getUserId().equals("")){ + page.setUserId(LoginUserUtil.getUserId()); + } + List rows = sarStandardsInfoEOService.getSarStandardsInfoPage(page); + +// 去掉日期时分秒 + rows.forEach(item->{ + + Optional.ofNullable(item.getSSRQ()) + .ifPresent(SSRQ -> item.setSSRQ(item.getSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + Optional.ofNullable(item.getXCXSSRQ()) + .ifPresent(SSRQ ->item.setXCXSSRQ(item.getXCXSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + Optional.ofNullable(item.getZCCSSRQ()) + .ifPresent(SSRQ ->item.setZCCSSRQ(item.getZCCSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + + }); + + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarStandardsInfoEO|自定义分页查询") + @GetMapping("/getSarStandardsInfoPageByWk1") + //@RequiresPermissions("lawss:sarStandardsInfo:getSarStandardsInfoPage") + public ResponseMessage> getSarStandardsInfoPageByWk1(SarStandardsInfoEOPage page,@RequestParam(defaultValue = "0") String mark) throws Exception { + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + + if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + //不改传参强行置换 +// searchList.forEach(sarAdvanceSearchVO -> { +// if ("TXLB".equals(sarAdvanceSearchVO.getField())){ +// sarAdvanceSearchVO.setField("STAND_SYSTEM"); +// } +// }); + String advanceStr = SarAdvanceSearchUtil.createStandSql(searchList,"sar_stand_attr_info"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + + if(page.getUserId() == null || page.getUserId().equals("")){ + page.setUserId(LoginUserUtil.getUserId()); + } + List rows = sarStandardsInfoEOService.getSarStandardsInfoPageByWk1(page); + +// 去掉日期时分秒 + rows.forEach(item->{ + + Optional.ofNullable(item.getSSRQ()) + .ifPresent(SSRQ -> item.setSSRQ(item.getSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + Optional.ofNullable(item.getXCXSSRQ()) + .ifPresent(SSRQ ->item.setXCXSSRQ(item.getXCXSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + Optional.ofNullable(item.getZCCSSRQ()) + .ifPresent(SSRQ ->item.setZCCSSRQ(item.getZCCSSRQ().replaceAll("\\s[0-6][0-9]\\:[0-6][0-9]\\:[0-6][0-9]", ""))); + + }); + + return Result.success(getPageInfo(page.getPager(), rows)); + } + + + + private void nowOrderFunc(SarStandardsInfoEOPage page) { + switch (page.getNowOrderBy()) { + case 1: + page.setOrderByA("ISSUE_TIME");//发布日期 + break; + case 2: + page.setOrderByA("ZCCSSRQ");//新车型实施日期 + break; + case 3: + page.setOrderByA("XCXSSRQ");//在产车实施日期 + break; + case 4: + page.setOrderByA("standTextStatusShow");//文本状态 + break; + case 5: + page.setOrderByA("paixu"); + break; + case 6: + page.setOrderByA("SSRQ"); + break; + default: + page.setNowOrder(null); + break; + } + if (null != page.getNowOrder()) { + switch (page.getNowOrder()) { + case 1: + page.setOrder1("desc"); + break; + case 2: + page.setOrder1("asc"); + break; + default: + page.setOrder1(null); + break; + } + } + } + + @ApiOperation(value = "|SarStandardsInfoEO|自定义分页查询") + @GetMapping("/getSarStandardsInfoPageBak") + //@RequiresPermissions("lawss:sarStandardsInfo:getSarStandardsInfoPage") + public ResponseMessage> getSarStandardsInfoPageBak(SarStandardsInfoEOPage page,@RequestParam(defaultValue = "0") String mark) throws Exception { + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + + if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + //不改传参强行置换 +// searchList.forEach(sarAdvanceSearchVO -> { +// if ("TXLB".equals(sarAdvanceSearchVO.getField())){ +// sarAdvanceSearchVO.setField("STAND_SYSTEM"); +// } +// }); + String advanceStr = SarAdvanceSearchUtil.createStandSql(searchList,"sar_stand_attr_info"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + + if(page.getUserId() == null || page.getUserId().equals("")){ + page.setUserId(LoginUserUtil.getUserId()); + } + List rows = sarStandardsInfoEOService.getSarStandardsInfoPageBak1(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + + + @ApiOperation(value = "|SarStandardsInfoEO|自定义分页查询") + @GetMapping("/selectHighLawsById") + //@RequiresPermissions("lawss:sarStandardsInfo:getSarStandardsInfoPage") + public ResponseMessage> selectHighLawsById(SarStandardsInfoEOPage page,@RequestParam(defaultValue = "0") String mark) throws Exception { + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + + if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); + //不改传参强行置换 +// searchList.forEach(sarAdvanceSearchVO -> { +// if ("TXLB".equals(sarAdvanceSearchVO.getField())){ +// sarAdvanceSearchVO.setField("STAND_SYSTEM"); +// } +// }); + String advanceStr = SarAdvanceSearchUtil.createStandSql(searchList,"sar_stand_attr_info"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + + if(page.getUserId() == null || page.getUserId().equals("")){ + page.setUserId(LoginUserUtil.getUserId()); + } + List rows = sarStandardsInfoEOService.selectHighLawsById(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarStandardsInfoEO|新增") + @PostMapping("/addarStandardsInfo") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandardsInfo:create") + public ResponseMessage create(@RequestBody SarStandardsInfo sarStandardsInfoEO) throws Exception { + if (StringUtils.isBlank(sarStandardsInfoEO.getMenuId()) && "INLAND".equals(sarStandardsInfoEO.getStandType())) { + sarStandardsInfoEO.setMenuId("64df1d5522bb49c09af2"); + } else if (StringUtils.isBlank(sarStandardsInfoEO.getMenuId()) && "FOREIGN".equals(sarStandardsInfoEO.getStandType())) { + sarStandardsInfoEO.setMenuId("22179d54d4e640098e29"); + } + sarStandardsInfoEOService.createSarStandardsInfo(sarStandardsInfoEO); + return Result.success("0", "添加成功", sarStandardsInfoEO); + } + + @ApiOperation(value = "|SarStandardsInfoEO|修改") + @PostMapping(value = "/updateSarStandardsInfo") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandardsInfo:updateSarStandardsInfo") + public ResponseMessage updateSarStandardsInfo(@RequestBody SarStandardsInfo sarStandardsInfoEO) throws Exception { + int result = sarStandardsInfoEOService.updateSarStandardsInfo(sarStandardsInfoEO); + if (result > 0) { + return Result.success("", "修改成功", sarStandardsInfoEO); + } else { + return Result.error("修改失败"); + } + } + + @ApiOperation(value = "|SarStandardsInfoEO|删除") + @PostMapping("/deleteSarStandards") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandardsInfo:delete") + public ResponseMessage delete(String ids) throws Exception { + int result = sarStandardsInfoEOService.deleteSarStandards(ids); + if (result > 0) { + return Result.success("0", "删除成功", result); + }else if(result == -1) { + return Result.success("-1","所选的标准下挂有清单,无法删除"); + } + else { + return Result.error("删除失败"); + } + } + + @ApiOperation(value = "|SysCorpEO|导出excel") + @GetMapping(value = "/exportStandardsInfoExcel") + public void exportStandardsInfoExcel(StandardsInfoExcelVO standardsInfoExcelVO,HttpServletResponse response, + HttpServletRequest request) throws Exception { + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(standardsInfoExcelVO.getExportName())||standardsInfoExcelVO.getExportName().equals("null")){ + standardsInfoExcelVO.setExportName("标准法规信息"); + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(standardsInfoExcelVO.getExportName()+".xlsx", + request)); +// response.setContentType("application/force-download"); + // 导出所有数据 + List datas = sarStandardsInfoEOService.getExportDatas(standardsInfoExcelVO); + workbook = StandExportUtil.exportDatas(datas,standardsInfoExcelVO.getStandType()); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarStandardsInfoEO|导入") + @PostMapping(value = "/importZipStandardsInfo") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandardsInfo:importZipStandardsInfo") + public ResponseMessage importStandardsInfoFile(@RequestParam(value = "file", required = false) MultipartFile file, String standType, String menuId) throws Exception { + //验证文件名是否合格 + //截取后缀名 + int pos = file.getOriginalFilename().lastIndexOf("."); + String str = file.getOriginalFilename().substring(pos+1).toLowerCase(); + String filenameorg = file.getOriginalFilename().substring(0,pos); + //判断上传文件必须是zip + if (!str.equals("zip")) { + return Result.error("fail", "请上传zip文件"); + } + String path = filePath + "/modal/"+filenameorg; + File saveDirectory = new File(path); + if(!saveDirectory.isDirectory()){ + saveDirectory.mkdir(); + } + FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path +"/"+ file.getOriginalFilename())); + try{ + //解压缩 + String zipEntryName = FileUnZip.unZipFiles(path +"/"+ file.getOriginalFilename(),path); + // 数据相关处理, + // 1.获取其中的Excel, + List excelfilelist = FileUnZip.readImpExcelFile(zipEntryName); + System.gc(); + if(excelfilelist.size()<1){ + int i = 0; + for(File file1:excelfilelist){ + if(file1.getName().indexOf("导入模板")>-1){ + i++; + } + } + if(i==0){ + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "压缩包内没有上传导入模板Excel"); + } + } else if (excelfilelist.size()>1) { + int i = 0; + for(File file1:excelfilelist){ + if(file1.getName().indexOf("导入模板")>-1){ + i++; + } + } + if(i>1){ + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "压缩包内有多个导入模板Excel"); + } + } + File excelfile = excelfilelist.get(0); + for(File file1:excelfilelist){ + if(file1.getName().indexOf("导入模板")>-1){ + excelfile = file1; + } + } + // 导入参数设置,默认即可 + Workbook workbook = null; + try { + workbook = WorkbookFactory.create(excelfile); + List> dataList = new ArrayList<>(); + if (workbook != null) { + DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + Sheet sheet = workbook.getSheetAt(0); + if (sheet != null) { + StringBuilder headerSb = new StringBuilder(); + int rowNos = sheet.getLastRowNum();// 得到excel的总记录条数 + for (int i = 0; i <= rowNos; i++) {// 遍历行 + Row row = sheet.getRow(i); + Row headerRow = sheet.getRow(0); + boolean isBlank = sarLawsInfoEOService.isRowEmpty(row); + if(row != null && !isBlank){ + int columNos = headerRow.getLastCellNum();// 表头总共的列数 + Map rowList = new LinkedHashMap<>(); + for (int j = 0; j < columNos; j++) { + Cell cell = row.getCell(j); + Cell headerCell = headerRow.getCell(j); + if(cell != null){ + if (i == 0) { + cell.setCellType(CellType.STRING); + headerSb.append(cell.getStringCellValue() + ","); + } else { + if(CellType.NUMERIC == cell.getCellType() && HSSFDateUtil.isCellDateFormatted(cell)){ + Date d = cell.getDateCellValue(); + rowList.put(headerCell.getStringCellValue(),df.format(d)); + }else{ + cell.setCellType(CellType.STRING); + rowList.put(headerCell.getStringCellValue(),cell.getStringCellValue()); + } + } + } else { + if (i != 0) { + rowList.put(headerCell.getStringCellValue(),""); + } + } + } + if (i != 0) { + dataList.add(rowList); + } + } + } + // 校验头部是否符合模板 + String fields = FieldConvertUtil.exportBaseFieldNames + "," + FieldConvertUtil.exportAttrFieldNamesInland + ","; + if ("FOREIGN".equals(standType)) { + fields = FieldConvertUtil.exportBaseFieldNamesForeign + "," + FieldConvertUtil.exportAttrFieldNamesForeign + ","; + } + String excelHeader = headerSb.toString(); + if (!fields.equals(excelHeader)) { + workbook.close(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "读取失败,请严格按照模板文件导入数据"); + } + } + } + //导入 + if(dataList!=null &&!dataList.isEmpty()){ + try { + String unzipfilepath = zipEntryName; + ResponseMessage message = sarStandardsInfoEOService.importSarStandardsInfoData(dataList, standType,menuId,unzipfilepath); + workbook.close(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return message; + } catch (Exception e) { + workbook.close(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", e.getMessage()); + } + }else{ + if (workbook != null) { + workbook.close(); + } + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "没有可导入的数据,请检查!"); + } + } catch (NoSuchElementException e){ + if (workbook != null) { + workbook.close(); + } + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "没有可导入的数据,请检查!"); + } catch (Exception e) { + if (workbook != null) { + workbook.close(); + } + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "读取失败,请严格按照模板文件导入数据"); + } + } catch (Exception e) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "读取失败,请严格按照模板文件导入数据"); + } + } + + @ApiOperation(value = "|SarStandardsInfoEO|验证输入的标准号") + @PostMapping("/validateStandNumber") + //@RequiresPermissions("lawss:sarStandardsInfo:selectReplaceStandNum") + public ResponseMessage validateStandNumber(SarStandardsInfoEOPage page) throws Exception { + if (StringUtils.isNotEmpty(page.getStandNumber()) && StringUtils.isNotEmpty(page.getStandSort())) { + SarStandardsInfoEOPage newQueryPage = new SarStandardsInfoEOPage(); + String standnumber = ""; + if(StringUtils.isNotEmpty(page.getStandYear()) && !"null".equals(page.getStandYear())){ + standnumber = page.getStandSort() + " " + page.getStandNumber() + "-" + page.getStandYear(); + newQueryPage.setStandSort(page.getStandSort()); + newQueryPage.setStandNumber(page.getStandNumber()); + newQueryPage.setStandYear(page.getStandYear()); + } else { + standnumber = page.getStandSort() + " " + page.getStandNumber(); + newQueryPage.setStandSort(page.getStandSort()); + newQueryPage.setStandNumber(page.getStandNumber()); + } + List standlist = sarStandardsInfoEOService.selectStandardsByStandnumber(newQueryPage, page.getStandType()); + if (standlist.size() > 0) { + if (StringUtils.isNotEmpty(page.getId())) { + // 如果是修改,判断id是否一样 + for (int i = 0; i < standlist.size(); i++) { + if (standlist.get(i).getId().equals(page.getId())) { + continue; + } else { + return Result.error(standnumber + "标准号已存在"); + } + } + return Result.success(); + } else { + return Result.error(standnumber + "标准号已存在"); + } + } else { + return Result.success(); + } + } else { + return Result.success(); + } + } + + + @ApiOperation(value = "标准发布查询") + @GetMapping("/getStandInfoByList") + //@RequiresPermissions("lawss:sarStandardsInfo:get") + public ResponseMessage> getStandInfoByList(String limit) throws Exception { + List result = sarStandardsInfoEOService.getStandInfoByList(limit); + return Result.success(result); + } + + @ApiOperation(value = "|SarStandardsInfoEO|详情") + @GetMapping("/getStandInfoById") + @EpcLog(description = "国内或国外详情查询",businessType = BusinessType.查询,speclaiFlag = "1",speclaiValue = "查询详情") + public ResponseMessage find(String id) throws Exception { + if(StringUtils.isNotBlank(id)){ + SarStandardsInfo result = sarStandardsInfoEOService.selectStandardsInfoByKey(id); + return Result.success(result); + }else{ + return Result.error("-1","数据传参错误",null); + } + + } + + @ApiOperation(value = "|SarStandardsInfoEO|修改详情") + @GetMapping("/getStandInfoUpdateById") + //@RequiresPermissions("lawss:sarStandardsInfo:get") + public ResponseMessage findUpdateById(String id) throws Exception { + SarStandardsInfo result = sarStandardsInfoEOService.selectStandardsInfoUpdateByKey(id); + return Result.success(result); + } + + @ApiOperation(value = "|SarStandardsInfoEO|确认配置标准") + @PostMapping("/saveStandardsMenu") + //@RequiresPermissions("lawss:sarStandardsInfo:saveStandardsMenu") + public ResponseMessage saveStandardsMenu(@RequestBody SarStandardsInfoEOPage standardsInfoEO) throws Exception { +// if ("wdsc".equals(standardsInfoEO.getMenuId()) || "gxhbq".equals(standardsInfoEO.getMenuId())) { +// return Result.error("所选节点不支持配置标准"); +// } else { +// boolean flag = false; +// try { +// flag = sarStandardsInfoEOService.updateStandardsMenu(standardsInfoEO); +// }catch (NullPointerException e){ +// flag = sarStandardsInfoEOService.updateStandInfo(standardsInfoEO); +// } +// if (flag){ +// return Result.success("200","配置成功",true); +// } +// return Result.error("-1","配置失败"); +// } + boolean flag = false; + try { + flag = sarStandardsInfoEOService.updateStandardsMenu(standardsInfoEO); + }catch (NullPointerException e){ + flag = sarStandardsInfoEOService.updateStandInfo(standardsInfoEO); + } + if (flag){ + return Result.success("200","配置成功",true); + } + return Result.error("-1","配置失败"); + + } + + @ApiOperation(value = "在入库流程中配置单个标准的 体系目录 体系目录可以是多个") + @PostMapping("/saveStandardsMenuForFlow") + public ResponseMessage saveStandardsMenuForFlow(@RequestBody SarStandardsInfoEOPage standardsInfoEO) throws Exception { + boolean flag = false; + for (String id : Arrays.asList(standardsInfoEO.getMenuIds().split(","))) { + standardsInfoEO.setMenuId(id); + + try { + flag = sarStandardsInfoEOService.updateStandardsMenu(standardsInfoEO); + }catch (NullPointerException e){ + flag = sarStandardsInfoEOService.updateStandInfo(standardsInfoEO); + } + + if (!flag){ + break; + } + } + + + + if (flag){ + return Result.success("200","配置成功",true); + } + return Result.error("-1","配置失败"); + + } + + @Autowired + SarStandMenuDao sarStandMenuDao; + @ApiOperation(value = "查询标准所在的 体系目录") + @GetMapping("/getStandMenuId") + public ResponseMessage> getStandMenuId(SarStandMenu getStandId){ + + List sarStandMenus = sarStandMenuDao.getMenuByStandId(getStandId); + //直接对回显数据进行处理 最好的解决方式是找到数据进入的地方进行修改 + for (int i=sarStandMenus.size()-1;i>=0;i--){ + if (null!=sarStandMenus.get(i) && null==sarStandMenus.get(i).getMenuName() ){ + sarStandMenus.remove(i); + } + } + return Result.success(sarStandMenus); + + } + + + @ApiOperation(value = "|SarStandardsInfoEO|详情页面查询相近标准") + @GetMapping("/selectCloseStand") + //@RequiresPermissions("lawss:sarStandardsInfo:list") + public ResponseMessage> selectCloseStand(SarStandardsInfoEOPage page) throws Exception { + SarStandardsInfoEOPage pagenew = new SarStandardsInfoEOPage(); + // 展示与本标准相近的标准信息,标准类别、标准号、标准年份、标准名称) + if (StringUtils.isNotEmpty(page.getId())) { + SarStandardsInfo sarStandardsInfoEO = sarStandardsInfoEOService.getById(page.getId()); + if (StringUtils.isNotEmpty(sarStandardsInfoEO.getStandSort())) { + pagenew.setStandSort(sarStandardsInfoEO.getStandSort()); + } + if (StringUtils.isNotEmpty(sarStandardsInfoEO.getStandNumber())) { + pagenew.setStandNumber(sarStandardsInfoEO.getStandNumber()); + } + if (StringUtils.isNotEmpty(sarStandardsInfoEO.getStandYear())) { + pagenew.setStandYear(sarStandardsInfoEO.getStandYear()); + } + if (StringUtils.isNotEmpty(sarStandardsInfoEO.getStandName())) { + pagenew.setStandName(sarStandardsInfoEO.getStandName()); + } + pagenew.setId(page.getId()); + } + List resultlist = sarStandardsInfoEOService.selectRecommendStand(pagenew); + return Result.success(resultlist); + } + + @ApiOperation(value = "|SysCorpEO|模板下载") + @GetMapping(value = "/exportTemplate") + public void exportTemplate(String exportName, String standType,HttpServletResponse response, HttpServletRequest request) throws Exception { + OutputStream os = null; + OutputStream excelOS = null; + HSSFWorkbook workbook = new HSSFWorkbook(); + String fileOriName = "标准导入模板"; + if (StringUtils.isNotEmpty(exportName)) { + fileOriName = exportName; + } + try{ + //创建临时文件夹 + String fileNowPath = filePath + "/tempZip/" + UUIDUtils.randomUUID20() + "/" + fileOriName; + File nowFile = new File(fileNowPath); + if (nowFile.exists()){ + nowFile.delete(); + } + nowFile.mkdirs(); + String fileName = "导入模板.xls"; + HSSFSheet sheetItems = workbook.createSheet("模板"); + sheetItems.setDefaultColumnWidth(16); + HSSFCellStyle cellStyle =workbook.createCellStyle(); + cellStyle.setWrapText(true); + cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + Row rowHeader = sheetItems.createRow(0);//开始创建标题行 + String exportFieldName = FieldConvertUtil.exportBaseFieldNames + "," + FieldConvertUtil.exportAttrFieldNamesInland; + if ("FOREIGN".equals(standType)) { + exportFieldName = FieldConvertUtil.exportBaseFieldNamesForeign + "," + FieldConvertUtil.exportAttrFieldNamesForeign; + } + if (StringUtils.isNotBlank(exportFieldName)) { + String[] headerArr = exportFieldName.split(","); + for (int i=0;i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); +// rowHeader.createCell(i).setCellStyle(cellStyle); + } + } + String repFileName = fileName.replaceAll("/","_"); + excelOS = new FileOutputStream(fileNowPath + "/" + repFileName); + response.setHeader("Content-Disposition", + "attachment; filename=\""+ ReadExcel.encodeFileName(fileOriName+".zip", request) +"\""); + response.setContentType("application/force-download"); + response.flushBuffer(); + os = response.getOutputStream(); + workbook.write(excelOS); + excelOS.flush(); + excelOS.close(); + ZipUtil.zip(fileNowPath,fileNowPath+".zip"); + FileInputStream fis = new FileInputStream(fileNowPath+".zip"); + int len = 0; + while ((len = fis.read()) != -1) { + os.write(len); + } + os.flush(); + os.close(); // 后开先关 + fis.close(); // 先开后关 + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + IOUtils.closeQuietly(excelOS); + } + } + + @ApiOperation(value = "|SarStandardsInfoEO|查询标准极其条款") + @GetMapping("/getSarStandAndItems") + //@RequiresPermissions("lawss:sarStandardsInfo:getSarStandardsInfoPage") + public ResponseMessage> getSarStandAndItems(SarStandardsInfoEOPage page) throws Exception { + if (StringUtils.isNotBlank(page.getIds())) { + List standList = sarStandardsInfoEOService.getStandAndItemsForAct(page); + return Result.success(standList); + } else { + return Result.error("传入id不能为空"); + } + + } + + @ApiOperation(value = "|SarStandardsInfoEO|根据标准号查询") + @GetMapping("/queryInfoByStandNum") + //@RequiresPermissions("lawss:sarStandardsInfo:list") + public ResponseMessage queryInfoByStandNum(SarStandardsInfoEOPage page) throws Exception { + if (org.apache.commons.lang.StringUtils.isNotBlank(page.getStandNumber())){ +// String sort = ""; +// if (page.getStandNumber().length()>3) { +// sort = page.getStandNumber().substring(0, 3); +// } +// if ("ECE".equals(sort)) { +// int length = page.getStandNumber().length(); +// String number = page.getStandNumber().substring(3,length); +// page.setStandNumber("UN(ECE)" + number); +// } + } + /** + * 此处需要拆分输入的标准编号 + * 只需要拆分国内、海外标准 + */ + SarStandardsInfoEOPage newQueryPage = new SarStandardsInfoEOPage(); + String standNumber = page.getStandNumber(); + String[] numberArray = standNumber.split(" "); + if(numberArray.length==2){ + newQueryPage.setStandSort(numberArray[0]); + String numLastStr = numberArray[1]; + String[] yearArray = numLastStr.split("-"); + if(yearArray.length==2){ + newQueryPage.setStandNumber(yearArray[0]); + newQueryPage.setStandYear(yearArray[1]); + }else{ + newQueryPage.setStandNumber(numLastStr); + } + }else{ + newQueryPage.setStandCode(page.getStandNumber()); + } + List getList = sarStandardsInfoEOService.selectStandardsByStandnumber(newQueryPage,page.getStandType()); + SarBussionessStandEOPage sarBussionessStandEOPage = new SarBussionessStandEOPage(); + sarBussionessStandEOPage.setStandCode(page.getStandNumber()); + List list = iSarBussionessStandService.queryByList(sarBussionessStandEOPage); + if(getList.size()>0){ + return Result.success(getList.get(0)); + } + if (list.size()>0){ + return Result.success(list.get(0)); + } + return Result.success("0","标准/企标已不存在"); + } + + + @ApiOperation(value = "国内预览日志") + @GetMapping("/logInvalid") + @EpcLog(description = "国内预览",businessType = BusinessType.预览 , speclaiFlag = "2" ,speclaiValue = "预览") + public String logInvalid(SarStandardsInfo sarStandardsInfo) { + return "1"; + } + + @ApiOperation(value = "海外预览日志") + @GetMapping("/logForeign") + @EpcLog(description = "海外预览",businessType = BusinessType.预览 , speclaiFlag = "3" ,speclaiValue = "预览") + public String logForeign(SarStandardsInfo sarStandardsInfo) { + return "1"; + } + + @ApiOperation(value = "国内下载不带水印") + @GetMapping("/logInvalidDownload1") + @EpcLog(description = "国内下载",businessType = BusinessType.下载 , speclaiFlag = "Invaliddownload1" ,speclaiValue = "下载") + public String logInvalidDownload(SarStandardsInfo sarStandardsInfo) { + return "1"; + } + + @ApiOperation(value = "国内下载带水印") + @GetMapping("/logInvalidDownload2") + @EpcLog(description = "国内下载",businessType = BusinessType.带水印下载 , speclaiFlag = "Invaliddownload2" ,speclaiValue = "下载") + public String logInvalidDownload2(SarStandardsInfo sarStandardsInfo) { + return "1"; + } + + @ApiOperation(value = "海外下载不带水印") + @GetMapping("/logForeignDownload1") + @EpcLog(description = "海外下载",businessType = BusinessType.下载 , speclaiFlag = "Foreigndownload1" ,speclaiValue = "下载") + public String logForeignDownload(SarStandardsInfo sarStandardsInfo) { + return "1"; + } + + @ApiOperation(value = "海外下载带水印") + @GetMapping("/logForeignDownload2") + @EpcLog(description = "海外下载",businessType = BusinessType.带水印下载 , speclaiFlag = "Foreigndownload2" ,speclaiValue = "下载") + public String logForeignDownload2(SarStandardsInfo sarStandardsInfo) { + return "1"; + } + + //处理 代替被代替数据 关系 + @ApiOperation(value = "国内海外数据处理接口") + @GetMapping("/replaceBdtbzhforDtbzh") + public String replaceBdtbzhforDtbzh(SarStandardsInfo sarStandardsInfo) { + sarStandardsInfoEOService.replaceBdtbzhforDtbzh(); + return "1"; + } + + @ApiOperation(value = "企标数据处理接口") + @GetMapping("/replaceBdtbzhforDtbzhQb") + public String replaceBdtbzhforDtbzhQb(SarStandardsInfo sarStandardsInfo) { + sarStandardsInfoEOService.replaceBdtbzhforDtbzhQb(); + return "1"; + } + + @ApiOperation(value = "|SarStandardsInfoEO|自定义分页查询") + @GetMapping("/checkIsOnly") + public ResponseMessage checkIsOnly (SarStandardsInfoEOPage page){ + + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper .eq("STAND_TYPE",page.getStandType()) + .eq(null!=page.getStandSort(),"STAND_SORT",page.getStandSort()) + .eq(null!=page.getStandNumber(),"STAND_NUMBER",page.getStandNumber()) + .eq(null!=page.getStandYear(),"STAND_YEAR",page.getStandYear()).eq("VALID_FLAG", 0); + Integer s=sarStandardsInfoEOService.count(wrapper); + if (s>0){ + return Result.error(); + }else { + return Result.success(); + } + } + + @Autowired + private ISarBussStandFileService sarBussStandFileService; + + @ApiOperation(value = "doc文件重新轉換[國内外標準]") + @GetMapping("/convertDocAll_GNW") + public String convertDocAll_GNW(Integer number) throws Exception { + QueryWrapper qw = new QueryWrapper(); + qw.eq("valid_flag","0"); + qw.and(wrapper -> wrapper.eq("file_suffix","DOC").or().eq("file_suffix","docx")); + if(number != null && number > 0){ + qw.last("limit 5"); + } + List list = sarStandFileService.list(qw); + logger.error("doc轉換共多少:"+list.size()); + sarStandardsInfoEOService.convertDocAll(list); + return "1"; + } + + @ApiOperation(value = "doc文件重新轉換[企標]") + @GetMapping("/convertDocAll_QB") + public String convertDocAll_QB(Integer number) throws Exception { + QueryWrapper qw = new QueryWrapper(); + qw.eq("valid_flag","0"); + qw.and(wrapper -> wrapper.eq("file_suffix","DOC").or().eq("file_suffix","docx")); + if(number != null && number > 0){ + qw.last("limit 5"); + } + List list = sarBussStandFileService.list(qw); + logger.error("doc轉換共多少:"+list.size()); + iSarBussionessStandService.convertDocAllQB(list); + return "1"; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/dao/SarStandardsInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/dao/SarStandardsInfoDao.java new file mode 100644 index 00000000..dfc26280 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/dao/SarStandardsInfoDao.java @@ -0,0 +1,102 @@ +package com.adc.da.slrs.sarStandardsInfo.dao; + +import com.adc.da.slrs.sarStandardsInfo.entity.DSarStandardDTO; +import com.adc.da.slrs.sarStandardsInfo.entity.RecommendVO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-05-31 + */ +@Repository +public interface SarStandardsInfoDao extends BaseMapper { + + String updateStateScheduledSql = "SELECT A.*,B.SSRQ,B.BDTBZH FROM sar_standards_info A LEFT JOIN sar_stand_attr_info B ON B.STAND_ID = A.ID ${ew.customSqlSegment}"; + + /** + * 自动更新文本状态通用查询 + * @param queryWrapper + * @return + */ + @Select(updateStateScheduledSql) + List getStateScheduledList(@Param("ew") QueryWrapper queryWrapper); + + List getSarStandardsInfoPage(@Param("page") SarStandardsInfoEOPage page,@Param("mark")String mark); + + List getSarStandardsInfoByNum(@Param("page") SarStandardsInfoEOPage page,@Param("mark")String mark); + + List selectHighLawsPage(@Param("page") SarStandardsInfoEOPage page,@Param("mark")String mark,@Param("list") List lawsIds); + + int getSarStandardsInfoCount(@Param("page") SarStandardsInfoEOPage page); + + int selectHighLawsCount(@Param("page") SarStandardsInfoEOPage page,@Param("list") List lawsIds); + + int getSarStandardsInfoCountWk1(SarStandardsInfoEOPage page); + + int insertSelective(SarStandardsInfo page); + + SarStandardsInfo selectByPrimaryKeyAndModifyTime(SarStandardsInfo page); + + List selectStandardsByStandnumber(SarStandardsInfo sarStandardsInfoEO); + + List queryStandInfoByList(@Param("limit") Integer limit); +// List queryStandInfoByList(@Param("limit") Integer limit,@Param("typeCode") String typeCode); + + Integer selectStandColumn(@Param("columnName") String columnName); + + Integer selectCounterStandardsCount(SarStandardsInfo sarStandardsInfoEO); + + int deleteByPrimaryKeyFlag(String id); + + int updateByStandNum(SarStandardsInfo standardsInfoEO); + + List selectStandardsInfoByIdAndRole(SarStandardsInfoEOPage standEO); + + int updateReplacedNumById(SarStandardsInfo sarStandardsInfoEO); + + int updateCitedStandById(SarStandardsInfo sarStandardsInfoEO); + + List getSarStandardsExportInfo(SarStandardsInfoEOPage page); + + List selectStandardsInfoByKey(String id); + + List selectRecommendStand(SarStandardsInfoEOPage pagenew); + + List countReplaceMsg(@Param("standNum") String standNum); + + List selectStandToUpState(@Param("stateName") String stateName); + + List selectStandToUpRepState(); + + List selectStandToUpRepAndTime(); + + int updateStateById(@Param("state") String state,@Param("list") List list); + + int selectIsExit(@Param("id") String id); + + //添加一个查询标准,但是不判断标准是否删除 + List selectStandardsInfoByIdAndRoleAll(SarStandardsInfoEOPage standEO); + + List selectStandardsInfoBynumber(SarStandardsInfoEOPage page); + + int updateISRELATEACCESSById(@Param("IS_RELATE_ACCESS") String ACCESS,@Param("list") List list); + + + List selectIdFormDTBZH(String DTBZHCode); + + List dealWithDS(@Param("type") String standType, @Param("status")List strings); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/ActSarItemsEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/ActSarItemsEO.java new file mode 100644 index 00000000..25e416ea --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/ActSarItemsEO.java @@ -0,0 +1,398 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author yangxuenan + * @Description 工作流使用 + * Date 2018/10/23 14:29 + * @Param + * @return + **/ +public class ActSarItemsEO { + private String resId;// 标准法规ID + private String resFlag; //类型 + private String resNum; //标准,文件号 + private String resName; //标准,文件名称 + private String resType; //标准类型 + private String deptName; //部门id + private String orgName; // 责任部门名称 + private String parentId; //仅条目有 + private String userId; //评估人ID + private List itemsList; //条目信息 + private String accessId; //导入时查询 + private String applyArctic; + private String[] applyArcticList; + private String energyKind; + private String[] energyKindList; + private String mainPointImplementation; + private String termsConditions; + private String parts; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date tackTime; + private String applyArcticShow; + private String energyKindShow; + private String remarks; + private String resState; //标准状态 + private String fileState; //文本状态 + private String type; //符合性状态 + private String prcNum; + private String foId; + private String foName; + private String form; + private String roleId; + private String roleName; + //流程分页用 + private Integer startIndex; + private Integer endIndex; + private Integer pageSize; + private Integer nowPage; + private Map attrInfoMap = new LinkedHashMap<>(); //属性表字段与值 + private String sarState; + private String newPutText; + private String prodPutText; + private String authObj; + private String authDelive; + private String performInfo; + + public String getResId() { + return resId; + } + + public void setResId(String resId) { + this.resId = resId; + } + + public String getResFlag() { + return resFlag; + } + + public void setResFlag(String resFlag) { + this.resFlag = resFlag; + } + + public String getResNum() { + return resNum; + } + + public void setResNum(String resNum) { + this.resNum = resNum; + } + + public String getResName() { + return resName; + } + + public void setResName(String resName) { + this.resName = resName; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getOrgName() { + return orgName; + } + + public void setOrgName(String orgName) { + this.orgName = orgName; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public List getItemsList() { + return itemsList; + } + + public void setItemsList(List itemsList) { + this.itemsList = itemsList; + } + + public String getAccessId() { + return accessId; + } + + public void setAccessId(String accessId) { + this.accessId = accessId; + } + + public String getApplyArctic() { + return applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public String getEnergyKind() { + return energyKind; + } + + public void setEnergyKind(String energyKind) { + this.energyKind = energyKind; + } + + public String[] getApplyArcticList() { + return applyArcticList; + } + + public void setApplyArcticList(String[] applyArcticList) { + this.applyArcticList = applyArcticList; + } + + public String[] getEnergyKindList() { + return energyKindList; + } + + public void setEnergyKindList(String[] energyKindList) { + this.energyKindList = energyKindList; + } + + public String getMainPointImplementation() { + return mainPointImplementation; + } + + public void setMainPointImplementation(String mainPointImplementation) { + this.mainPointImplementation = mainPointImplementation; + } + + public String getTermsConditions() { + return termsConditions; + } + + public void setTermsConditions(String termsConditions) { + this.termsConditions = termsConditions; + } + + public String getParts() { + return parts; + } + + public void setParts(String parts) { + this.parts = parts; + } + + public Date getTackTime() { + return tackTime; + } + + public void setTackTime(Date tackTime) { + this.tackTime = tackTime; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } + + public String getEnergyKindShow() { + return energyKindShow; + } + + public void setEnergyKindShow(String energyKindShow) { + this.energyKindShow = energyKindShow; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public Integer getStartIndex() { + return startIndex; + } + + public void setStartIndex(Integer startIndex) { + this.startIndex = startIndex; + } + + public Integer getEndIndex() { + return endIndex; + } + + public void setEndIndex(Integer endIndex) { + this.endIndex = endIndex; + } + + public Integer getPageSize() { + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + public Integer getNowPage() { + return nowPage; + } + + public void setNowPage(Integer nowPage) { + this.nowPage = nowPage; + } + + public String getResState() { + return resState; + } + + public void setResState(String resState) { + this.resState = resState; + } + + public String getFileState() { + return fileState; + } + + public void setFileState(String fileState) { + this.fileState = fileState; + } + + public String getResType() { + return resType; + } + + public void setResType(String resType) { + this.resType = resType; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getPrcNum() { + return prcNum; + } + + public void setPrcNum(String prcNum) { + this.prcNum = prcNum; + } + + public String getFoId() { + return foId; + } + + public void setFoId(String foId) { + this.foId = foId; + } + + public String getForm() { + return form; + } + + public void setForm(String form) { + this.form = form; + } + + public Map getAttrInfoMap() { + return attrInfoMap; + } + + public void setAttrInfoMap(Map attrInfoMap) { + this.attrInfoMap = attrInfoMap; + } + + public String getFoName() { + return foName; + } + + public void setFoName(String foName) { + this.foName = foName; + } + + public String getRoleId() { + return roleId; + } + + public void setRoleId(String roleId) { + this.roleId = roleId; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getSarState() { + return sarState; + } + + public void setSarState(String sarState) { + this.sarState = sarState; + } + + public String getNewPutText() { + return newPutText; + } + + public void setNewPutText(String newPutText) { + this.newPutText = newPutText; + } + + public String getProdPutText() { + return prodPutText; + } + + public void setProdPutText(String prodPutText) { + this.prodPutText = prodPutText; + } + + public String getAuthObj() { + return authObj; + } + + public void setAuthObj(String authObj) { + this.authObj = authObj; + } + + public String getAuthDelive() { + return authDelive; + } + + public void setAuthDelive(String authDelive) { + this.authDelive = authDelive; + } + + public String getPerformInfo() { + return performInfo; + } + + public void setPerformInfo(String performInfo) { + this.performInfo = performInfo; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/DSarStandardDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/DSarStandardDTO.java new file mode 100644 index 00000000..f1c31ab1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/DSarStandardDTO.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class DSarStandardDTO implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @TableField(exist = false) + private String SSRQ; + + // 新添加字段 + @ApiModelProperty(value = "文本状态") + @TableField("TEXT_STATUS") + private String textStatus; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/RecommendVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/RecommendVO.java new file mode 100644 index 00000000..bb4006b0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/RecommendVO.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import lombok.Data; + +/** + * Created by super_liu + * 用于搜索中心的推荐 + */ + +@Data +public class RecommendVO extends BaseEntity { + + private String nameShow; + private String numberShow; + private String typeShow; + private String id; + private String module; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarAdvanceSearchVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarAdvanceSearchVO.java new file mode 100644 index 00000000..3e6c41d5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarAdvanceSearchVO.java @@ -0,0 +1,69 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +/** + * @Description: 标准法规库高级查询 + * @Author: yangxuenan + * date: 2020/12/11 9:22 + */ +public class SarAdvanceSearchVO { + + private String field; //字段 如 标准类别 + + private String value; //值 + + private String type; //查询类型 如 = != like + + private String connect; //连接符号 如 and or + + private String timeSt; + + private String timeEd; + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getConnect() { + return connect; + } + + public void setConnect(String connect) { + this.connect = connect; + } + + public String getTimeSt() { + return timeSt; + } + + public void setTimeSt(String timeSt) { + this.timeSt = timeSt; + } + + public String getTimeEd() { + return timeEd; + } + + public void setTimeEd(String timeEd) { + this.timeEd = timeEd; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarBussionessStandEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarBussionessStandEOPage.java new file mode 100644 index 00000000..d2cc26c9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarBussionessStandEOPage.java @@ -0,0 +1,1395 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +import com.adc.da.sys.common.BasePage; +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.List; + +/** + * 功能:SAR_BUSSIONESS_STAND SarBussionessStandEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarBussionessStandEOPage extends BasePage { + + private String textStatusBuss; + + private String reviseStatus; + + private String revisionStatus; + + public String getTextStatusBuss() { + return textStatusBuss; + } + + public void setTextStatusBuss(String textStatusBuss) { + this.textStatusBuss = textStatusBuss; + } + + private String startIssueTime; + private String endIssueTime; + private String startPutTime; + private String endPutTime; + + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String putUser; + private String putUserOperator = "="; + private String citationUser; + private String citationUserOperator = "="; + private String responsibleUnit; + private String responsibleUnitOperator = "="; + private String standFile; + private String standFileOperator = "="; + private String tags; + private String tagsOperator = "="; + private String standStatus; + private String standStatusOperator = "="; + private String replacedStandNum; + private String replacedStandNumOperator = "="; + private String replaceStandNum; + private String replaceStandNumOperator = "="; + private String quoteStand; + private String quoteStandOperator = "="; + private String firstPutTime; + private String firstPutTime1; + private String firstPutTime2; + private String firstPutTimeOperator = "="; + private String putYear; + private String putYear1; + private String putYear2; + private String putYearOperator = "="; + private String putTime; + private String putTime1; + private String putTime2; + private String putTimeOperator = "="; + private String issueTime; + private String issueTime1; + private String issueTime2; + private String issueTimeOperator = "="; + private String energyKind; + private String energyKindOperator = "="; + private String applyArctic; + private String applyArcticOperator = "="; + private String standEnName; + private String standEnNameOperator = "="; + private String standName; + private String standNameOperator = "="; + private String standCode; + private String standCodeOperator = "="; + private String classifyCode; + private String classifyCodeOperator = "="; + private String standSubclass; + private String standSubclassOperator = "="; + private String standGenera; + private String standGeneraOperator = "="; + private String id; + private String idOperator = "="; + // 数据库新增字段 + private String applyCountry; + private String standYear; + private String applyCountryOperator = "="; + private String standNature; + private String standNatureOperator = "="; + private String synopsis; + private String synopsisOperator = "="; + private String standSort; + private String standSortOperator = "="; + private String opinionFile; + private String opinionFileOperator = "="; + private String relevanceFile; + private String relevanceFileOperator = "="; + private String remark; + private String remarkOperator = "="; + + private List roleIds; + private String rootMenuId; + private String orgName; + private List menuRoleList; + private String[] replacedStandNumList; + private String numberName; + // 树结构增加搜索条件 + private String collectMenuId; + private String advanceSearchVOStr; + private String advanceSearchStr; + private List menuAllChildrenIdList; + private String userId; + + private String zqcrId; + + //页面排序 + private String paixu; + private String shunxu; + private String sql; + private Integer nowOrder; + private Integer nowOrderBy; + private String orderByA = ""; + private String order1 = ""; + + // 新增字段 + private String FZRQBUSS; + private String FSRQBUSS; + private String FBGBUSS; + private String BZSMBUSS; + private String LSBBBUSS; + private String QTWJBUSS; + private String QCDW; + private String QCRBUSS; + private String WJSCRYBUSS; + private String SYCXCLASS; + private String NYLXCLASS; + private String SYCPXCLASS; + private String TXLBBUSS; + private String VPPSBMBUSS; + private String VPPSCNBUSS; + private String DTQBBHBUSS; + private String BDTQBBHBUSS; + private String XGJLBUSS; + private String XGLC; + private String GLWJBUSS; + private String XCSJBUSS; + private String BARQ; + private String XGD; + private String LLCS; + private String CS; + private String CYCVPPSBMBUSS; + private String CYCVPPSCNBUSS; + private String KCVPPSBMBUSS; + private String KCVPPSCNBUSS; + private String DYBXHBUSS; + private String DYMCBUSS; + private String YYBZ; + private String CBCD; + private String CYCD; + private String CYBZ; + private String isKU; + + private String exportAllAttrInfo; + private String exportAllResult; + + private String syncParam; + + public String getReviseStatus() { + return reviseStatus; + } + + public void setReviseStatus(String reviseStatus) { + this.reviseStatus = reviseStatus; + } + + public String getSyncParam() { + return syncParam; + } + + public void setSyncParam(String syncParam) { + this.syncParam = syncParam; + } + + public String getExportAllResult() { + return exportAllResult; + } + + public void setExportAllResult(String exportAllResult) { + this.exportAllResult = exportAllResult; + } + + public String getExportAllAttrInfo() { + return exportAllAttrInfo; + } + + public void setExportAllAttrInfo(String exportAllAttrInfo) { + this.exportAllAttrInfo = exportAllAttrInfo; + } + + public String getIsKU() { + return isKU; + } + + public void setIsKU(String isKU) { + this.isKU = isKU; + } + + public String getLLCS() { + return LLCS; + } + + public void setLLCS(String LLCS) { + this.LLCS = LLCS; + } + + public String getCS() { + return CS; + } + + public void setCS(String CS) { + this.CS = CS; + } + + public String getCYCVPPSBMBUSS() { + return CYCVPPSBMBUSS; + } + + public void setCYCVPPSBMBUSS(String CYCVPPSBMBUSS) { + this.CYCVPPSBMBUSS = CYCVPPSBMBUSS; + } + + public String getCYCVPPSCNBUSS() { + return CYCVPPSCNBUSS; + } + + public void setCYCVPPSCNBUSS(String CYCVPPSCNBUSS) { + this.CYCVPPSCNBUSS = CYCVPPSCNBUSS; + } + + public String getKCVPPSBMBUSS() { + return KCVPPSBMBUSS; + } + + public void setKCVPPSBMBUSS(String KCVPPSBMBUSS) { + this.KCVPPSBMBUSS = KCVPPSBMBUSS; + } + + public String getKCVPPSCNBUSS() { + return KCVPPSCNBUSS; + } + + public void setKCVPPSCNBUSS(String KCVPPSCNBUSS) { + this.KCVPPSCNBUSS = KCVPPSCNBUSS; + } + + public String getDYBXHBUSS() { + return DYBXHBUSS; + } + + public void setDYBXHBUSS(String DYBXHBUSS) { + this.DYBXHBUSS = DYBXHBUSS; + } + + public String getDYMCBUSS() { + return DYMCBUSS; + } + + public void setDYMCBUSS(String DYMCBUSS) { + this.DYMCBUSS = DYMCBUSS; + } + + public String getYYBZ() { + return YYBZ; + } + + public void setYYBZ(String YYBZ) { + this.YYBZ = YYBZ; + } + + public String getCBCD() { + return CBCD; + } + + public void setCBCD(String CBCD) { + this.CBCD = CBCD; + } + + public String getCYCD() { + return CYCD; + } + + public void setCYCD(String CYCD) { + this.CYCD = CYCD; + } + + public String getCYBZ() { + return CYBZ; + } + + public void setCYBZ(String CYBZ) { + this.CYBZ = CYBZ; + } + + public String getBARQ() { + return BARQ; + } + + public void setBARQ(String BARQ) { + this.BARQ = BARQ; + } + + public String getXGD() { + return XGD; + } + + public void setXGD(String XGD) { + this.XGD = XGD; + } + + public Integer getNowOrder() { + return nowOrder; + } + + public void setNowOrder(Integer nowOrder) { + this.nowOrder = nowOrder; + } + + public Integer getNowOrderBy() { + return nowOrderBy; + } + + public void setNowOrderBy(Integer nowOrderBy) { + this.nowOrderBy = nowOrderBy; + } + + public String getOrderByA() { + return orderByA; + } + + public void setOrderByA(String orderByA) { + this.orderByA = orderByA; + } + + public String getOrder1() { + return order1; + } + + public void setOrder1(String order1) { + this.order1 = order1; + } + + public String getFZRQBUSS() { + return FZRQBUSS; + } + + public void setFZRQBUSS(String FZRQBUSS) { + this.FZRQBUSS = FZRQBUSS; + } + + public String getFSRQBUSS() { + return FSRQBUSS; + } + + public void setFSRQBUSS(String FSRQBUSS) { + this.FSRQBUSS = FSRQBUSS; + } + + public String getFBGBUSS() { + return FBGBUSS; + } + + public void setFBGBUSS(String FBGBUSS) { + this.FBGBUSS = FBGBUSS; + } + + public String getBZSMBUSS() { + return BZSMBUSS; + } + + public void setBZSMBUSS(String BZSMBUSS) { + this.BZSMBUSS = BZSMBUSS; + } + + public String getLSBBBUSS() { + return LSBBBUSS; + } + + public void setLSBBBUSS(String LSBBBUSS) { + this.LSBBBUSS = LSBBBUSS; + } + + public String getQTWJBUSS() { + return QTWJBUSS; + } + + public void setQTWJBUSS(String QTWJBUSS) { + this.QTWJBUSS = QTWJBUSS; + } + + public String getQCDW() { + return QCDW; + } + + public void setQCDW(String QCDW) { + this.QCDW = QCDW; + } + + public String getQCRBUSS() { + return QCRBUSS; + } + + public void setQCRBUSS(String QCRBUSS) { + this.QCRBUSS = QCRBUSS; + } + + public String getWJSCRYBUSS() { + return WJSCRYBUSS; + } + + public void setWJSCRYBUSS(String WJSCRYBUSS) { + this.WJSCRYBUSS = WJSCRYBUSS; + } + + public String getSYCXCLASS() { + return SYCXCLASS; + } + + public void setSYCXCLASS(String SYCXCLASS) { + this.SYCXCLASS = SYCXCLASS; + } + + public String getNYLXCLASS() { + return NYLXCLASS; + } + + public void setNYLXCLASS(String NYLXCLASS) { + this.NYLXCLASS = NYLXCLASS; + } + + public String getSYCPXCLASS() { + return SYCPXCLASS; + } + + public void setSYCPXCLASS(String SYCPXCLASS) { + this.SYCPXCLASS = SYCPXCLASS; + } + + public String getTXLBBUSS() { + return TXLBBUSS; + } + + public void setTXLBBUSS(String TXLBBUSS) { + this.TXLBBUSS = TXLBBUSS; + } + + public String getVPPSBMBUSS() { + return VPPSBMBUSS; + } + + public void setVPPSBMBUSS(String VPPSBMBUSS) { + this.VPPSBMBUSS = VPPSBMBUSS; + } + + public String getVPPSCNBUSS() { + return VPPSCNBUSS; + } + + public void setVPPSCNBUSS(String VPPSCNBUSS) { + this.VPPSCNBUSS = VPPSCNBUSS; + } + + public String getDTQBBHBUSS() { + return DTQBBHBUSS; + } + + public void setDTQBBHBUSS(String DTQBBHBUSS) { + this.DTQBBHBUSS = DTQBBHBUSS; + } + + public String getBDTQBBHBUSS() { + return BDTQBBHBUSS; + } + + public void setBDTQBBHBUSS(String BDTQBBHBUSS) { + this.BDTQBBHBUSS = BDTQBBHBUSS; + } + + public String getXGJLBUSS() { + return XGJLBUSS; + } + + public void setXGJLBUSS(String XGJLBUSS) { + this.XGJLBUSS = XGJLBUSS; + } + + public String getXGLC() { + return XGLC; + } + + public void setXGLC(String XGLC) { + this.XGLC = XGLC; + } + + public String getGLWJBUSS() { + return GLWJBUSS; + } + + public void setGLWJBUSS(String GLWJBUSS) { + this.GLWJBUSS = GLWJBUSS; + } + + public String getXCSJBUSS() { + return XCSJBUSS; + } + + public void setXCSJBUSS(String XCSJBUSS) { + this.XCSJBUSS = XCSJBUSS; + } + + public String getZqcrId() { + return zqcrId; + } + + public void setZqcrId(String zqcrId) { + this.zqcrId = zqcrId; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getPutUser() { + return this.putUser; + } + + public void setPutUser(String putUser) { + this.putUser = putUser; + } + + public String getPutUserOperator() { + return this.putUserOperator; + } + + public void setPutUserOperator(String putUserOperator) { + this.putUserOperator = putUserOperator; + } + + public String getCitationUser() { + return this.citationUser; + } + + public void setCitationUser(String citationUser) { + this.citationUser = citationUser; + } + + public String getCitationUserOperator() { + return this.citationUserOperator; + } + + public void setCitationUserOperator(String citationUserOperator) { + this.citationUserOperator = citationUserOperator; + } + + public String getResponsibleUnit() { + return this.responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getResponsibleUnitOperator() { + return this.responsibleUnitOperator; + } + + public void setResponsibleUnitOperator(String responsibleUnitOperator) { + this.responsibleUnitOperator = responsibleUnitOperator; + } + + public String getStandFile() { + return this.standFile; + } + + public void setStandFile(String standFile) { + this.standFile = standFile; + } + + public String getStandFileOperator() { + return this.standFileOperator; + } + + public void setStandFileOperator(String standFileOperator) { + this.standFileOperator = standFileOperator; + } + + public String getTags() { + return this.tags; + } + + public void setTags(String tags) { + this.tags = tags; + } + + public String getTagsOperator() { + return this.tagsOperator; + } + + public void setTagsOperator(String tagsOperator) { + this.tagsOperator = tagsOperator; + } + + public String getStandStatus() { + return this.standStatus; + } + + public void setStandStatus(String standStatus) { + this.standStatus = standStatus; + } + + public String getStandStatusOperator() { + return this.standStatusOperator; + } + + public void setStandStatusOperator(String standStatusOperator) { + this.standStatusOperator = standStatusOperator; + } + + public String getReplacedStandNum() { + return this.replacedStandNum; + } + + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + public String getReplacedStandNumOperator() { + return this.replacedStandNumOperator; + } + + public void setReplacedStandNumOperator(String replacedStandNumOperator) { + this.replacedStandNumOperator = replacedStandNumOperator; + } + + public String getReplaceStandNum() { + return this.replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + public String getReplaceStandNumOperator() { + return this.replaceStandNumOperator; + } + + public void setReplaceStandNumOperator(String replaceStandNumOperator) { + this.replaceStandNumOperator = replaceStandNumOperator; + } + + public String getQuoteStand() { + return this.quoteStand; + } + + public void setQuoteStand(String quoteStand) { + this.quoteStand = quoteStand; + } + + public String getQuoteStandOperator() { + return this.quoteStandOperator; + } + + public void setQuoteStandOperator(String quoteStandOperator) { + this.quoteStandOperator = quoteStandOperator; + } + + public String getFirstPutTime() { + return this.firstPutTime; + } + + public void setFirstPutTime(String firstPutTime) { + this.firstPutTime = firstPutTime; + } + + public String getFirstPutTime1() { + return this.firstPutTime1; + } + + public void setFirstPutTime1(String firstPutTime1) { + this.firstPutTime1 = firstPutTime1; + } + + public String getFirstPutTime2() { + return this.firstPutTime2; + } + + public void setFirstPutTime2(String firstPutTime2) { + this.firstPutTime2 = firstPutTime2; + } + + public String getFirstPutTimeOperator() { + return this.firstPutTimeOperator; + } + + public void setFirstPutTimeOperator(String firstPutTimeOperator) { + this.firstPutTimeOperator = firstPutTimeOperator; + } + + public String getPutYear() { + return this.putYear; + } + + public void setPutYear(String putYear) { + this.putYear = putYear; + } + + public String getPutYear1() { + return this.putYear1; + } + + public void setPutYear1(String putYear1) { + this.putYear1 = putYear1; + } + + public String getPutYear2() { + return this.putYear2; + } + + public void setPutYear2(String putYear2) { + this.putYear2 = putYear2; + } + + public String getPutYearOperator() { + return this.putYearOperator; + } + + public void setPutYearOperator(String putYearOperator) { + this.putYearOperator = putYearOperator; + } + + public String getPutTime() { + return this.putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } + + public String getPutTime1() { + return this.putTime1; + } + + public void setPutTime1(String putTime1) { + this.putTime1 = putTime1; + } + + public String getPutTime2() { + return this.putTime2; + } + + public void setPutTime2(String putTime2) { + this.putTime2 = putTime2; + } + + public String getPutTimeOperator() { + return this.putTimeOperator; + } + + public void setPutTimeOperator(String putTimeOperator) { + this.putTimeOperator = putTimeOperator; + } + + public String getIssueTime() { + return this.issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getIssueTime1() { + return this.issueTime1; + } + + public void setIssueTime1(String issueTime1) { + this.issueTime1 = issueTime1; + } + + public String getIssueTime2() { + return this.issueTime2; + } + + public void setIssueTime2(String issueTime2) { + this.issueTime2 = issueTime2; + } + + public String getIssueTimeOperator() { + return this.issueTimeOperator; + } + + public void setIssueTimeOperator(String issueTimeOperator) { + this.issueTimeOperator = issueTimeOperator; + } + + public String getEnergyKind() { + return this.energyKind; + } + + public void setEnergyKind(String energyKind) { + this.energyKind = energyKind; + } + + public String getEnergyKindOperator() { + return this.energyKindOperator; + } + + public void setEnergyKindOperator(String energyKindOperator) { + this.energyKindOperator = energyKindOperator; + } + + public String getApplyArctic() { + return this.applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public String getApplyArcticOperator() { + return this.applyArcticOperator; + } + + public void setApplyArcticOperator(String applyArcticOperator) { + this.applyArcticOperator = applyArcticOperator; + } + + public String getStandEnName() { + return this.standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getStandEnNameOperator() { + return this.standEnNameOperator; + } + + public void setStandEnNameOperator(String standEnNameOperator) { + this.standEnNameOperator = standEnNameOperator; + } + + public String getStandName() { + return this.standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getStandNameOperator() { + return this.standNameOperator; + } + + public void setStandNameOperator(String standNameOperator) { + this.standNameOperator = standNameOperator; + } + + public String getStandCode() { + return this.standCode; + } + + public void setStandCode(String standCode) { + this.standCode = standCode; + } + + public String getStandCodeOperator() { + return this.standCodeOperator; + } + + public void setStandCodeOperator(String standCodeOperator) { + this.standCodeOperator = standCodeOperator; + } + + public String getClassifyCode() { + return this.classifyCode; + } + + public void setClassifyCode(String classifyCode) { + this.classifyCode = classifyCode; + } + + public String getClassifyCodeOperator() { + return this.classifyCodeOperator; + } + + public void setClassifyCodeOperator(String classifyCodeOperator) { + this.classifyCodeOperator = classifyCodeOperator; + } + + public String getStandSubclass() { + return this.standSubclass; + } + + public void setStandSubclass(String standSubclass) { + this.standSubclass = standSubclass; + } + + public String getStandSubclassOperator() { + return this.standSubclassOperator; + } + + public void setStandSubclassOperator(String standSubclassOperator) { + this.standSubclassOperator = standSubclassOperator; + } + + public String getStandGenera() { + return this.standGenera; + } + + public void setStandGenera(String standGenera) { + this.standGenera = standGenera; + } + + public String getStandGeneraOperator() { + return this.standGeneraOperator; + } + + public void setStandGeneraOperator(String standGeneraOperator) { + this.standGeneraOperator = standGeneraOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + private String menuId; + private String menuTopId; + private String menuName; + private String treeType; // 树结构数据 区分 类型: 标准数据 tsr 技术系列 sarMs + private String sarMsType; // 树结构数据 技术系列 sarMs 过滤此目录之外数据 + private String sarMsMenuId; + private String[] idlist; //用于导出数据过程中传递选择的标准id + private String[] replaceStandNumList; + + public String getMenuName() { + return menuName; + } + + public void setMenuName(String menuName) { + this.menuName = menuName; + } + + public String getMenuTopId() { + return menuTopId; + } + + public void setMenuTopId(String menuTopId) { + this.menuTopId = menuTopId; + } + + public String getTreeType() { + return treeType; + } + + public void setTreeType(String treeType) { + this.treeType = treeType; + } + + public String getSarMsType() { + return sarMsType; + } + + public void setSarMsType(String sarMsType) { + this.sarMsType = sarMsType; + } + + public String getSarMsMenuId() { + return sarMsMenuId; + } + + public void setSarMsMenuId(String sarMsMenuId) { + this.sarMsMenuId = sarMsMenuId; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String[] getIdlist() { + return idlist; + } + + public void setIdlist(String[] idlist) { + this.idlist = idlist; + } + + public String[] getReplaceStandNumList() { + return replaceStandNumList; + } + + public void setReplaceStandNumList(String[] replaceStandNumList) { + this.replaceStandNumList = replaceStandNumList; + } + + private String[] applyArcticList; + private String[] energyKindList; + + public String[] getApplyArcticList() { + return applyArcticList; + } + + public void setApplyArcticList(String[] applyArcticList) { + this.applyArcticList = applyArcticList; + } + + public String[] getEnergyKindList() { + return energyKindList; + } + + public void setEnergyKindList(String[] energyKindList) { + this.energyKindList = energyKindList; + } + + public String getApplyCountry() { + return applyCountry; + } + + public void setApplyCountry(String applyCountry) { + this.applyCountry = applyCountry; + } + + public String getApplyCountryOperator() { + return applyCountryOperator; + } + + public void setApplyCountryOperator(String applyCountryOperator) { + this.applyCountryOperator = applyCountryOperator; + } + + public String getStandNature() { + return standNature; + } + + public void setStandNature(String standNature) { + this.standNature = standNature; + } + + public String getStandNatureOperator() { + return standNatureOperator; + } + + public void setStandNatureOperator(String standNatureOperator) { + this.standNatureOperator = standNatureOperator; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getSynopsisOperator() { + return synopsisOperator; + } + + public void setSynopsisOperator(String synopsisOperator) { + this.synopsisOperator = synopsisOperator; + } + + public String getStandSort() { + return standSort; + } + + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + public String getStandSortOperator() { + return standSortOperator; + } + + public void setStandSortOperator(String standSortOperator) { + this.standSortOperator = standSortOperator; + } + + public String getOpinionFile() { + return opinionFile; + } + + public void setOpinionFile(String opinionFile) { + this.opinionFile = opinionFile; + } + + public String getOpinionFileOperator() { + return opinionFileOperator; + } + + public void setOpinionFileOperator(String opinionFileOperator) { + this.opinionFileOperator = opinionFileOperator; + } + + public String getRelevanceFile() { + return relevanceFile; + } + + public void setRelevanceFile(String relevanceFile) { + this.relevanceFile = relevanceFile; + } + + public String getRelevanceFileOperator() { + return relevanceFileOperator; + } + + public void setRelevanceFileOperator(String relevanceFileOperator) { + this.relevanceFileOperator = relevanceFileOperator; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRemarkOperator() { + return remarkOperator; + } + + public void setRemarkOperator(String remarkOperator) { + this.remarkOperator = remarkOperator; + } + + public List getRoleIds() { + return roleIds; + } + + public void setRoleIds(List roleIds) { + this.roleIds = roleIds; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public List getMenuRoleList() { + return menuRoleList; + } + + public void setMenuRoleList(List menuRoleList) { + this.menuRoleList = menuRoleList; + } + + public String getNumberName() { + return numberName; + } + + public void setNumberName(String numberName) { + this.numberName = numberName; + } + + public String[] getReplacedStandNumList() { + return replacedStandNumList; + } + + public void setReplacedStandNumList(String[] replacedStandNumList) { + this.replacedStandNumList = replacedStandNumList; + } + + public String getRootMenuId() { + return rootMenuId; + } + + public void setRootMenuId(String rootMenuId) { + this.rootMenuId = rootMenuId; + } + + public String getCollectMenuId() { + return collectMenuId; + } + + public void setCollectMenuId(String collectMenuId) { + this.collectMenuId = collectMenuId; + } + + public String getAdvanceSearchVOStr() { + return advanceSearchVOStr; + } + + public void setAdvanceSearchVOStr(String advanceSearchVOStr) { + this.advanceSearchVOStr = advanceSearchVOStr; + } + + public String getAdvanceSearchStr() { + return advanceSearchStr; + } + + public void setAdvanceSearchStr(String advanceSearchStr) { + this.advanceSearchStr = advanceSearchStr; + } + + public String getOrgName() { + return orgName; + } + + public void setOrgName(String orgName) { + this.orgName = orgName; + } + + public List getMenuAllChildrenIdList() { + return menuAllChildrenIdList; + } + + public void setMenuAllChildrenIdList(List menuAllChildrenIdList) { + this.menuAllChildrenIdList = menuAllChildrenIdList; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getPaixu() { + return paixu; + } + + public void setPaixu(String paixu) { + this.paixu = paixu; + } + + public String getShunxu() { + return shunxu; + } + + public void setShunxu(String shunxu) { + this.shunxu = shunxu; + } + + public String getSql() { + return sql; + } + + public void setSql(String sql) { + this.sql = sql; + } + + public String getStartIssueTime() { + return startIssueTime; + } + + public void setStartIssueTime(String startIssueTime) { + this.startIssueTime = startIssueTime; + } + + public String getEndIssueTime() { + return endIssueTime; + } + + public void setEndIssueTime(String endIssueTime) { + this.endIssueTime = endIssueTime; + } + + + public String getStartPutTime() { + return startPutTime; + } + + public void setStartPutTime(String startPutTime) { + this.startPutTime = startPutTime; + } + + public String getEndPutTime() { + return endPutTime; + } + + public void setEndPutTime(String endPutTime) { + this.endPutTime = endPutTime; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandImportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandImportDto.java new file mode 100644 index 00000000..bd1d96bf9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandImportDto.java @@ -0,0 +1,67 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + + + +import java.text.SimpleDateFormat; + +/*** + * @Description: 根据导入模板的标题,基础表填写对应数据 + * @Author: yangxuenan + * @Date: 2020/9/22 10:33 + * @Param: + * @Return: + */ +public class SarStandImportDto { + + public static void compareFieldAndName (String name, String value,SarStandardsInfo sarStandardsInfoEO) throws Exception{ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + switch(name){ + case "适用区域": + sarStandardsInfoEO.setCountry(value); + break; + case "标准类别": + sarStandardsInfoEO.setStandSort(value); + break; + case "标准编号": + sarStandardsInfoEO.setStandNumber(value); + break; + case "标准年份": + sarStandardsInfoEO.setStandYear(value); + break; + case "中文名称": + sarStandardsInfoEO.setStandName(value); + break; + case "英文名称": + sarStandardsInfoEO.setStandEnName(value); + break; + case "标准状态": + sarStandardsInfoEO.setStandState(value); + break; + case "标准性质": + sarStandardsInfoEO.setStandNature(value); + break; + case "发布日期": +// Date iuuseDate = sdf.parse(value); + sarStandardsInfoEO.setIssueTime(value); + break; + case "实施日期": +// Date putDate = sdf.parse(value); + sarStandardsInfoEO.setPutTime2(value); + break; + case "文本说明": + sarStandardsInfoEO.setSynopsis(value); + break; + case "代替标准号": + sarStandardsInfoEO.setReplaceStandNum(value); + break; + case "被代替标准号": + sarStandardsInfoEO.setReplacedStandNum(value); + break; + case "重要度": + sarStandardsInfoEO.setIsRelateAccess(value); + break; + default: + break; + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfo.java new file mode 100644 index 00000000..2ba4759f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfo.java @@ -0,0 +1,667 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandItems.entity.SarItemVO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.sys.entity.DicTypeEO; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.*; + +import com.baomidou.mybatisplus.annotation.TableField; +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.data.annotation.Transient; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-05-31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarStandardsInfo对象", description="") +public class SarStandardsInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "标准分类") + @TableField("STAND_TYPE") + private String standType; + + @ApiModelProperty(value = "国家地区") + @TableField("COUNTRY") + private String country; + + @ApiModelProperty(value = "标准类别") + @TableField("STAND_SORT") + private String standSort; + + @ApiModelProperty(value = "标准编号") + @TableField("STAND_NUMBER") + private String standNumber; + + @ApiModelProperty(value = "标准年份") + @TableField("STAND_YEAR") + private String standYear; + + @ApiModelProperty(value = "标准名称") + @TableField("STAND_NAME") + private String standName; + + @ApiModelProperty(value = "标准英文名称") + @TableField("STAND_EN_NAME") + private String standEnName; + + @ApiModelProperty(value = "标准状态") + @TableField("STAND_STATE") + private String standState; + + @ApiModelProperty(value = "标准性质") + @TableField("STAND_NATURE") + private String standNature; + + @ApiModelProperty(value = "标准发布日期") + @TableField("ISSUE_TIME") + private String issueTime; + + @ApiModelProperty(value = "实施日期") + @TableField("PUT_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date putTime; + + @ApiModelProperty(value = "内容摘要") + @TableField("SYNOPSIS") + private String synopsis; + + @ApiModelProperty(value = "代替标准号") + @TableField("REPLACE_STAND_NUM") + private String replaceStandNum; + + @ApiModelProperty(value = "代替标准号") + @TableField(exist = false) + private String dtbzh; + + @ApiModelProperty(value = "被代替标准号") + @TableField("REPLACED_STAND_NUM") + private String replacedStandNum; + + @ApiModelProperty(value = "代替部分标准号") + @TableField("REPLACE_PART_STAND_NUM") + private String replacePartStandNum; + + @ApiModelProperty(value = "被代替部分标准号") + @TableField("REPLACED_PART_STAND_NUM") + private String replacedPartStandNum; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date modifyTime; + + @ApiModelProperty(value = "是否纳入认证清单(2否 1是)") + @TableField("IS_RELATE_ACCESS") + private String isRelateAccess; + + + @ApiModelProperty(value = "引用标准") + @TableField("CITE_STAND") + private String citeStand; + + @ApiModelProperty(value = "被引用标准") + @TableField("CITED_STAND") + private String citedStand; + + // 新添加字段 + @ApiModelProperty(value = "文本状态") + @TableField("TEXT_STATUS") + private String textStatus; + + @ApiModelProperty(value = "标准体系") + @TableField("STAND_SYSTEM") + private String standSystem; + + @ApiModelProperty(value = "为符合数量") + @TableField(exist = false) + private Long unCount; + + @ApiModelProperty(value = "为符合数量") + @TableField(exist = false) + private Long counts; + + @ApiModelProperty(value = "整改完成时间") + @TableField(exist = false) + private String endTimes; + + @ApiModelProperty(value = "符合数量") + @TableField(exist = false) + private Long isCount; + + @ApiModelProperty(value = "不涉及数量") + @TableField(exist = false) + private Long isOverCount; + + + // 以下为非表中字段 + @TableField(exist = false) + private String collectId; // 收藏表ID + @TableField(exist = false) + private String countryShow; //国家地区显示名称 + @TableField(exist = false) + private String standSortShow; // 标准类别显示名称 + @TableField(exist = false) + private String standStateShow; // 标准状态显示名称 + @TableField(exist = false) + private String standNatureShow; // 标准性质显示名称 + @TableField(exist = false) + private String standTextStatusShow; // 标准文本状态显示名称 + @TableField(exist = false) + private String sychronId; // 同步数据ID + + @TableField(exist = false) + private String standCode;//标准编号 + @TableField(exist = false) + private List dicTypeList = new ArrayList(); // 记录标准涉及到的所有数据字典数据 + @TableField(exist = false) + private List attrInfoList = new ArrayList<>(); + @TableField(exist = false) + private Map attrInfoMap = new LinkedHashMap<>(); //属性表字段与值 + @TableField(exist = false) + private Map attrInfoCaseMap = new LinkedHashMap<>(); //属性表字段与值小写前端带入渲染 + @TableField(exist = false) + private String sarStandAttrEOStr; //新增修改时属性表信息 + @TableField(exist = false) + private String menuId; //目录ID + + @TableField(exist = false) + private String menuIds; //目录ID + @TableField(exist = false) + private int upReplaceNumFlag; //记录是否修改了替代文件号 + @TableField(exist = false) + private int upNumFlag; //记录是否修改了文件号 + @TableField(exist = false) + private String fileIds; //全部文件ID + @TableField(exist = false) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date newCarPutTime; + @TableField(exist = false) + private List itemsList = new ArrayList<>(); + @ApiModelProperty(value = "分解单条款内容") + @TableField(exist = false) + private Map mapItems = new TreeMap<>(); + @TableField(exist = false) + private String relateStand;//对应其他标准 + @TableField(exist = false) + private String accessCountry;//纳入清单的国家 + @TableField(exist = false) + private String processNum;//流程编号 + // 在库里的标准节点类型(工作组) + @TableField(exist = false) + private String menuType; + @TableField(exist = false) + private String allPutTime; + @TableField(exist = false) + private String jspg; + @TableField(exist = false) + private String CHJL; + @TableField(exist = false) + private String SSRQ; + @TableField(exist = false) + private String ZCCSSRQ; + @TableField(exist = false) + private String XCXSSRQ; + @TableField(exist = false) + private String BDTBZH; + + @TableField(exist = false) + private String putTime2; + + @TableField(exist = false) + private String standSystemName; + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStandType() { + return standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getStandSort() { + return standSort; + } + + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getStandEnName() { + return standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getStandState() { + return standState; + } + + public void setStandState(String standState) { + this.standState = standState; + } + + public String getStandNature() { + return standNature; + } + + public void setStandNature(String standNature) { + this.standNature = standNature; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public Date getPutTime() { + return putTime; + } + + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getReplaceStandNum() { + return replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + public String getReplacedStandNum() { + return replacedStandNum; + } + + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + public String getCreationUser() { + return creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getValidFlag() { + return validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getIsRelateAccess() { + return isRelateAccess; + } + + public void setIsRelateAccess(String isRelateAccess) { + this.isRelateAccess = isRelateAccess; + } + + public String getCiteStand() { + return citeStand; + } + + public void setCiteStand(String citeStand) { + this.citeStand = citeStand; + } + + public String getCitedStand() { + return citedStand; + } + + public void setCitedStand(String citedStand) { + this.citedStand = citedStand; + } + + public String getTextStatus() { + return textStatus; + } + + public void setTextStatus(String textStatus) { + this.textStatus = textStatus; + } + + public String getStandSystem() { + return standSystem; + } + + public void setStandSystem(String standSystem) { + this.standSystem = standSystem; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public String getCountryShow() { + return countryShow; + } + + public void setCountryShow(String countryShow) { + this.countryShow = countryShow; + } + + public String getStandSortShow() { + return standSortShow; + } + + public void setStandSortShow(String standSortShow) { + this.standSortShow = standSortShow; + } + + public String getStandStateShow() { + return standStateShow; + } + + public void setStandStateShow(String standStateShow) { + this.standStateShow = standStateShow; + } + + public String getStandNatureShow() { + return standNatureShow; + } + + public void setStandNatureShow(String standNatureShow) { + this.standNatureShow = standNatureShow; + } + + public String getSychronId() { + return sychronId; + } + + public void setSychronId(String sychronId) { + this.sychronId = sychronId; + } + + public List getDicTypeList() { + return dicTypeList; + } + + public void setDicTypeList(List dicTypeList) { + this.dicTypeList = dicTypeList; + } + + public List getAttrInfoList() { + return attrInfoList; + } + + public void setAttrInfoList(List attrInfoList) { + this.attrInfoList = attrInfoList; + } + + public Map getAttrInfoMap() { + return attrInfoMap; + } + + public void setAttrInfoMap(Map attrInfoMap) { + this.attrInfoMap = attrInfoMap; + } + + public Map getAttrInfoCaseMap() { + return attrInfoCaseMap; + } + + public void setAttrInfoCaseMap(Map attrInfoCaseMap) { + this.attrInfoCaseMap = attrInfoCaseMap; + } + + public String getSarStandAttrEOStr() { + return sarStandAttrEOStr; + } + + public void setSarStandAttrEOStr(String sarStandAttrEOStr) { + this.sarStandAttrEOStr = sarStandAttrEOStr; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public int getUpReplaceNumFlag() { + return upReplaceNumFlag; + } + + public void setUpReplaceNumFlag(int upReplaceNumFlag) { + this.upReplaceNumFlag = upReplaceNumFlag; + } + + public int getUpNumFlag() { + return upNumFlag; + } + + public void setUpNumFlag(int upNumFlag) { + this.upNumFlag = upNumFlag; + } + + public String getFileIds() { + return fileIds; + } + + public void setFileIds(String fileIds) { + this.fileIds = fileIds; + } + + public Date getNewCarPutTime() { + return newCarPutTime; + } + + public void setNewCarPutTime(Date newCarPutTime) { + this.newCarPutTime = newCarPutTime; + } + + public List getItemsList() { + return itemsList; + } + + public void setItemsList(List itemsList) { + this.itemsList = itemsList; + } + + public String getRelateStand() { + return relateStand; + } + + public void setRelateStand(String relateStand) { + this.relateStand = relateStand; + } + + public String getAccessCountry() { + return accessCountry; + } + + public void setAccessCountry(String accessCountry) { + this.accessCountry = accessCountry; + } + + public String getProcessNum() { + return processNum; + } + + public void setProcessNum(String processNum) { + this.processNum = processNum; + } + + public String getMenuType() { + return menuType; + } + + public void setMenuType(String menuType) { + this.menuType = menuType; + } + + public String getAllPutTime() { + return allPutTime; + } + + public void setAllPutTime(String allPutTime) { + this.allPutTime = allPutTime; + } + + public String getJspg() { + return jspg; + } + + public void setJspg(String jspg) { + this.jspg = jspg; + } + + public String getCHJL() { + return CHJL; + } + + public void setCHJL(String CHJL) { + this.CHJL = CHJL; + } + + public String getPutTime2() { + return putTime2; + } + + public void setPutTime2(String putTime2) { + this.putTime2 = putTime2; + } + + public String getStandSystemName() { + return standSystemName; + } + + public void setStandSystemName(String standSystemName) { + this.standSystemName = standSystemName; + } + + public String getStandTextStatusShow() { + return standTextStatusShow; + } + + public void setStandTextStatusShow(String standTextStatusShow) { + this.standTextStatusShow = standTextStatusShow; + } + + public String getStandCode() { + return standCode; + } + + public void setStandCode(String standCode) { + this.standCode = standCode; + } +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfoEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfoEOPage.java new file mode 100644 index 00000000..b0ac4bd3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/SarStandardsInfoEOPage.java @@ -0,0 +1,139 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * 功能:SAR_STANDARDS_INFO SarStandardsInfoEOPage
    + * 作者:code generator
    + * 日期: 2020-08-19
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ + +@Data +public class SarStandardsInfoEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String standType; + private String standTypeOperator = "="; + private String country; + private String countryOperator = "="; + private String standSort; + private String standSortOperator = "="; + private String standNumber; + private String standNumberOperator = "="; + private String standYear; + private String standYearOperator = "="; + private String standName; + private String standNameOperator = "="; + private String standEnName; + private String standEnNameOperator = "="; + private String standState; + private String standStateOperator = "="; + private String standNature; + private String standNatureOperator = "="; + private String issueTime; + private String issueTime1; + private String issueTime2; + private String issueTimeOperator = "="; + private String putTime; + private String putTime1; + private String putTime2; + private String putTimeOperator = "="; + private String synopsis; + private String synopsisOperator = "="; + private String replaceStandNum; + private String replaceStandNumOperator = "="; + private String replacedStandNum; + private String replacedStandNumOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String isRelateAccess; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private List menuRoleList; //有权限的目录 + private String[] idlist; //多个id + private String menuId; //目录ID + private String treeType; // 树结构数据 区分 类型: 标准数据 tsr 技术系列 sarMs + private String sarMsType; // 树结构数据 技术系列 sarMs 过滤此目录之外数据 + private String sarMsMenuId; + private String rootMenuId; + private String attrSearchStr; + private String advanceSearchStr; + private Map attrSearchMap; //属性表数据条件查询 + // 树结构增加搜索条件 + private String collectMenuId; + private String labelMenuId; + private String applyArctic; + private String ids; + private List replaceStandNumList; + private List menuAllChildrenIdList; + private List advanceSearchVOList; + private String advanceSearchVOStr; + private String proType; // 请求的流程类型 + private String userId; + private String productId; + private Integer nowOrder; + private Integer nowOrderBy; + private String orderByA = ""; + private String orderBy1 = "SAR_STANDARDS_INFO.issue_time"; + private String order1 = ""; + private String syzd = ""; + + // syncParam == sync + private String syncParam; + + /** + * zhaokaiyao + * 文本状态 + */ + private String textStatus; + + /** + * 日期范围查询发布日期开始 + */ + private String startIssueTime; + + /** + * 日期范围查询发布日期结束 + */ + private String endIssueTime; + + /** + * 标准添加到体系中的id多个 + */ + private String menuIds; + + /** + * 标准号 + */ + private String standCode; + + private String qdFlag; + + + private String qdid; +// private String standName; +// private String standEnName; + private String typeApplicable; + private String nylx; + private String zrbm; + private String sycpx; +// private String standSort; +// private String standType; +// private String standNumber; + private String types; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/StandProVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/StandProVO.java new file mode 100644 index 00000000..521260c0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/StandProVO.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +/** + * @Description: + * @Author: yangxuenan + * date: 2021/3/10 14:54 + */ +public class StandProVO { + + private String id; + + private String standState; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStandState() { + return standState; + } + + public void setStandState(String standState) { + this.standState = standState; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/StandardsInfoExcelVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/StandardsInfoExcelVO.java new file mode 100644 index 00000000..9fa14080 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/entity/StandardsInfoExcelVO.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.sarStandardsInfo.entity; + +import lombok.Data; + +@Data +public class StandardsInfoExcelVO { + String exportType; + String menuId; + String labelMenuId; + String exportContent; + String exportName; + String standType; + String standSort; + String standNumber; + String collectMenuId; + String userId; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java new file mode 100644 index 00000000..a5162260 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java @@ -0,0 +1,76 @@ +package com.adc.da.slrs.sarStandardsInfo.service; + +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import com.adc.da.slrs.sarStandardsInfo.entity.*; +import com.adc.da.http.ResponseMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-05-31 + */ +public interface ISarStandardsInfoService extends IService { + + void updateCiteStand(SarStandardsInfo sarStandardsInfoEO, SarStandardsInfo beforeSarStandardsInfo, String upField, String beUpedField); + +// void reverseQueryStand(List ids, String standName,String type); + + List getSarStandardsInfoPage(SarStandardsInfoEOPage page) throws Exception; + + List getSarStandardsInfoPageByWk1(SarStandardsInfoEOPage page) throws Exception; + + List getSarStandardsInfoPageBak(SarStandardsInfoEOPage page) throws Exception; + + List getSarStandardsInfoPageBak1(SarStandardsInfoEOPage page) throws Exception; + + List selectHighLawsById(SarStandardsInfoEOPage page) throws Exception; + + void createSarStandardsInfo(SarStandardsInfo sarStandardsInfoEO) throws Exception; + + int updateSarStandardsInfo(SarStandardsInfo sarStandardsInfoEO) throws Exception; + + int deleteSarStandards(String ids); + + List getExportDatas (StandardsInfoExcelVO standardsInfoExcelVO) throws Exception; + + ResponseMessage importSarStandardsInfoData(List> dataList, String standType, String menuId, String filepath); + + List selectStandardsByStandnumber(SarStandardsInfoEOPage queryPahe, String standType); + + + List getStandInfoByList(String limit); + + SarStandardsInfo selectStandardsInfoByKey(String id) throws Exception; + + SarStandardsInfo selectStandardsInfoUpdateByKey(String id) throws Exception; + + public void attrInfoDetails (SarStandardsInfo row) throws Exception; + + boolean updateStandardsMenu(SarStandardsInfoEOPage standardsInfoEO); + + boolean updateStandInfo(SarStandardsInfoEOPage standardsInfoEO); + + List selectRecommendStand(SarStandardsInfoEOPage pagenew); + + List getStandAndItemsForAct (SarStandardsInfoEOPage page) throws Exception; + + void insertIntoIndexForMap(Map attrInfoMap); + + void updateIntoIndexForMap(Map attrInfoMap); + + void replaceBdtbzhforDtbzh(); + + void replaceBdtbzhforDtbzhQb(); + + void convertDocAll(List list); + + void checkFileByEncrypt(); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java new file mode 100644 index 00000000..d3cad04c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java @@ -0,0 +1,3660 @@ +package com.adc.da.slrs.sarStandardsInfo.service.impl; + +import com.adc.da.att.dao.AttFileEODao; +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.person.entity.StandInfo; +import com.adc.da.person.entity.TsPersonCollect; +import com.adc.da.slrs.NewsFeed.entity.NewsFeed; +import com.adc.da.slrs.NewsFeed.service.INewsFeedService; +import com.adc.da.slrs.regulations.dao.StandDataDao; +import com.adc.da.slrs.regulations.entity.SearchStandContext; +import com.adc.da.slrs.regulations.entity.StandData; +import com.adc.da.slrs.sarBussStandAttrInfo.dao.SarBussStandAttrInfoDao; +import com.adc.da.slrs.sarBussStandAttrInfo.entity.SarBussStandAttrInfo; +import com.adc.da.slrs.sarLawsAttrDetailedList.dao.SarLawsAttrDetailedListDao; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarFindDto; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarStandFile.service.ISarStandFileService; +import com.adc.da.slrs.sarStandWarning.entity.WarningDate; +import com.adc.da.slrs.sarStandWarning.service.Impl.WarningDateServiceImpl; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.common.*; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.mq.CreateMQService; +import com.adc.da.mq.CreateStandMQService; +import com.adc.da.person.dao.PersonCollectEODao; +import com.adc.da.person.dao.PersonShareEODao; +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.entity.StandLawsEO; +import com.adc.da.search.service.StandLawsSearchService; +import com.adc.da.slrs.otConvertMq.dao.OtConvertMqDao; +import com.adc.da.slrs.otConvertMq.entity.OtConvertMq; +import com.adc.da.slrs.sarLawsAttrDetailedList.entity.SarLawsAttrDetailedList; +import com.adc.da.slrs.sarLawsAttrDetailedList.service.impl.SarLawsAttrDetailedListServiceImpl; +import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; +import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; +import com.adc.da.slrs.sarLawsInfo.page.SarLawsItemsEOPage; +import com.adc.da.slrs.sarLawsInfo.service.ISarLawsInfoService; +import com.adc.da.slrs.sarLawsItems.service.ISarLawsItemsService; +import com.adc.da.slrs.sarProductStand.dao.SarProductStandDao; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarSarAccess.service.ISarSarAccessService; +import com.adc.da.slrs.sarSarAccessInfo.dao.SarSarAccessInfoDao; +import com.adc.da.slrs.sarStandAttrDetails.dao.SarStandAttrDetailsDao; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; +import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; +import com.adc.da.slrs.sarStandFile.dao.SarStandFileDao; +import com.adc.da.slrs.sarStandFile.entity.SarStandFile; +import com.adc.da.slrs.sarStandItems.dao.SarStandItemsDao; +import com.adc.da.slrs.sarStandItems.entity.FindSarItemsPageReqDTO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandItems.page.SarStandItemsEOPage; +import com.adc.da.slrs.sarStandItems.service.ISarStandItemsService; +import com.adc.da.slrs.sarStandMenu.dao.SarStandMenuDao; +import com.adc.da.slrs.sarStandMenu.entity.SarStandMenu; +import com.adc.da.slrs.sarStandMenu.service.ISarStandMenuService; +import com.adc.da.slrs.sarStandPutTime.dao.SarStandPutTimeDao; +import com.adc.da.slrs.sarStandPutTime.entity.SarStandPutTime; +import com.adc.da.slrs.sarStandVal.dao.SarStandValDao; +import com.adc.da.slrs.sarStandVal.entity.SarStandVal; +import com.adc.da.slrs.sarStandardsInfo.entity.*; +import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.slrs.standardSplit.dao.SarFileSplitInfoEODao; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEOPage; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.constant.ValueStateEnum; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.*; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import net.sf.json.JSONObject; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.util.PDFTextStripper; +import org.apache.pdfbox.util.PDFTextStripperByArea; +import org.apache.poi.hwpf.extractor.WordExtractor; +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.poifs.filesystem.FileMagic; +import org.apache.poi.xwpf.extractor.XWPFWordExtractor; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.json.JSONArray; +import org.json.JSONTokener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Clob; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-05-31 + */ +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarStandardsInfoServiceImpl extends ServiceImpl implements ISarStandardsInfoService { + + private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoServiceImpl.class); + + @Value("${elas.flag}") + private boolean elasflag; //ES是否启用 + + @Value("${file.path}") + private String filePath;//文件存储路径 + + @Autowired + SarLawsAttrDetailedListDao sarLawsAttrDetailedListDao; + + @Autowired + WarningDateServiceImpl warningDateService; + + @Autowired + private ITsPositionService iTsPositionService; + + @Autowired + private SarStandardsInfoDao dao; + + @Autowired + private SarStandItemsDao standItemsDao; + + @Autowired + private ITsResourceService sarMenuEOService; + + @Autowired + private ISarMenuStandardService sarMenuStandardService; + + @Autowired + private SarSarAccessInfoDao sarSarAccessInfoEODao; + + @Autowired + private SarProductStandDao sarProductStandEODao; + + @Autowired + private ISarLawsItemsService sarLawsItemsEOService; + + @Autowired + private ISarStandItemsService sarStandItemsEOService; + + @Autowired + private IPersonCollectEOService personCollectEOService; + + @Autowired + private ISarSarAccessService sarSarAccessEOService; + + @Autowired + private ISarStandMenuService sarStandMenuService; + + @Autowired + private ISarLawsInfoService sarLawsInfoEOService; + + @Autowired + private ISarUpdLogService sarUpdLogEOService; + + @Autowired + private PersonCollectEODao personCollectEODao; + + @Autowired + private PersonShareEODao personShareEODao; + + @Autowired + private SarStandFileDao sarStandFileEODao; + + @Autowired + private SarStandValDao sarStandValEODao; + + @Autowired + private SarStandPutTimeDao sarStandPutTimeEODao; + + @Autowired + private SarStandAttrInfoDao sarStandAttrInfoEODao; + + @Autowired + private SarStandAttrDetailsDao sarStandAttrDetailsEODao; + + @Autowired + private SarStandMenuDao sarStandMenuEODao; + + @Autowired + private IAttFileEOService attFileEOService; + + @Autowired + private CreateMQService convertMq; + + @Autowired + private OtConvertMqDao otConvertEODao; + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private SarStandItemsDao sarStandItemsEODao; + + @Autowired + private SysInfoEOService sysInfoEOService; + + @Autowired + private ITsUserService tsUserService; + + @Autowired + private ITsResourceService iTsResourceService; + + @Autowired + private ISarMenuStandardService iSarMenuStandardService; + + @Autowired + private CreateStandMQService createStandMQService; + + @Autowired + private StandLawsSearchService standLawsSearchService; + + @Autowired + private SarBussStandAttrInfoDao standAttrInfoDao; + + + @Autowired + private StandDataDao standDataDao; + + @Autowired + private AttFileEODao attFileEODao; + + @Autowired + private INewsFeedService iNewsFeedService; + + @Autowired + private EncryptFileUtils encryptFileUtils; + +// /** +// * 反向操作标准 +// */ +// @Override +// @Async +// public void reverseQueryStand(List ids, String standName,String type){ +// String fieldInfo = InitStandAttrUtil.queryField; +// if (StringUtils.isNotBlank(fieldInfo) && StringUtils.isNotBlank(type)) { +// List> getAttrListMap = sarStandAttrInfoEODao.selectStandFieldAndDataListMap(fieldInfo, ids); +// getAttrListMap.forEach(attrMap -> { +// List list = Collections.singletonList(attrMap.get(type).toString()); +// list.add(standName); +// String reverseStandName = list.stream().map(String::toString).collect(Collectors.joining(",")); +// attrMap.put(type,reverseStandName); +// SarStandAttrInfo sarStandAttrInfo = map2Object(attrMap,SarStandAttrInfo.class); +// sarStandAttrInfoEODao.updateById(sarStandAttrInfo); +// }); +// } +// } +// +// public static T map2Object(Map map, Class clazz) { +// +// T obj = null; +// try { +// BeanInfo bean = Introspector.getBeanInfo(clazz); +// PropertyDescriptor[] propertyDescriptorArr = bean.getPropertyDescriptors(); +// for (int i = 0; i < propertyDescriptorArr.length; i++) { +// PropertyDescriptor propertyDescriptor = propertyDescriptorArr[i]; +// String name = propertyDescriptor.getName(); +// if(map.containsKey(name)) { +// Object value = map.get(name); +// if("null".equals(value)) { +// value = null; +// } +// Object[] objArr = new Object[0]; +// objArr[0] = value; +// try { +// propertyDescriptor.getWriteMethod().invoke(obj, objArr); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } catch (IllegalArgumentException e) { +// e.printStackTrace(); +// } catch (InvocationTargetException e) { +// e.printStackTrace(); +// } +// } +// +// } +// } catch (IntrospectionException e) { +// e.printStackTrace(); +// } +// return obj; +// } + + + @Override + public void replaceBdtbzhforDtbzh() { + //第一步先处理国内海外数据 + //获取代替标准号不为空的数据 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.isNotNull("DTBJH"); + wrapper.ne("DTBJH", ""); + wrapper.eq("valid_flag", "0"); +// wrapper.eq("stand_id", "6zaj8lx8s9ebc3za0g95"); + List sarStandAttrInfos = sarStandAttrInfoEODao.selectList(wrapper); + if (null != sarStandAttrInfos && !sarStandAttrInfos.isEmpty()) { + //获取数据以及更新自身 新查询当前标准数据并将格式化之后的数据更新到代替标准号中 + int i = 1; + for (SarStandAttrInfo sarStandAttrInfo : sarStandAttrInfos) { + String dtbzh = convertStandCodeHandle(sarStandAttrInfo.getDtbjh()); + logger.info("第" + i + "行数据代替标准号为" + dtbzh + "转换前标准号为" + sarStandAttrInfo.getDtbjh()); + logger.info("第" + i + "行数据为" + sarStandAttrInfo.toString()); + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.eq("valid_flag", "0"); + wrapper2.eq("stand_id", sarStandAttrInfo.getStandId()); + List attrInfoList = sarStandAttrInfoEODao.selectList(wrapper2); + attrInfoList.get(0).setDtbjh(dtbzh); + sarStandAttrInfoEODao.update(attrInfoList.get(0), wrapper2); + + + //找到用来代替的标准号 + SearchStandContext searchStandContext1 = new SearchStandContext(); + searchStandContext1.setStandId(sarStandAttrInfo.getStandId()); + List list1 = standDataDao.searchStandDataThree(searchStandContext1); + if (null != list1 && list1.size() > 0) { + String bdtbzh = list1.get(0).getStandNum(); + + //现在针对处理一波代替标准号 根据标准号找到 + if (dtbzh.contains(",") && !dtbzh.isEmpty() && !"".equals(dtbzh) && !dtbzh.contains("null") && !dtbzh.contains("Q/FT") &&null!=bdtbzh && !bdtbzh.contains("null")) { + //判定是不是多个 + List strings = new ArrayList<>(Arrays.asList(dtbzh.split(","))); + strings.forEach(s -> { + if (StringUtils.isNotBlank(s)) { + SearchStandContext searchStandContext = new SearchStandContext(); + searchStandContext.setStandCode(s); + List list = standDataDao.searchStandDataThree(searchStandContext); + if (null != list && list.size() > 0) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("valid_flag", "0"); + wrapper1.eq("stand_id", list.get(0).getStandId()); + List attrInfos = sarStandAttrInfoEODao.selectList(wrapper1); + if (null != attrInfos && attrInfos.size() > 0) { + if (null != attrInfos.get(0).getBdtbzh() && !"".equals(attrInfos.get(0).getBdtbzh())) { + if (!attrInfos.get(0).getBdtbzh().contains(bdtbzh)) { + attrInfos.get(0).setBdtbzh(attrInfos.get(0).getBdtbzh() + "," + bdtbzh); + } + } else { + attrInfos.get(0).setBdtbzh(bdtbzh); + } + sarStandAttrInfoEODao.update(attrInfos.get(0), wrapper1); + } + } + } + }); + + } else if (!dtbzh.isEmpty() && !"".equals(dtbzh) && !dtbzh.contains("null") && !dtbzh.contains("Q/FT") &&null!=bdtbzh && !bdtbzh.contains("null")) { + //单个 + SearchStandContext searchStandContext = new SearchStandContext(); + searchStandContext.setStandCode(dtbzh); + List list = standDataDao.searchStandDataThree(searchStandContext); + if (null != list && list.size() > 0) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("valid_flag", "0"); + wrapper1.eq("stand_id", list.get(0).getStandId()); + List attrInfos = sarStandAttrInfoEODao.selectList(wrapper1); + if (null != attrInfos && attrInfos.size() > 0) { + if (null != attrInfos.get(0).getBdtbzh() && !"".equals(attrInfos.get(0).getBdtbzh())) { + if (!attrInfos.get(0).getBdtbzh().contains(bdtbzh)) { + attrInfos.get(0).setBdtbzh(attrInfos.get(0).getBdtbzh() + "," + bdtbzh); + } + } else { + attrInfos.get(0).setBdtbzh(bdtbzh); + } + sarStandAttrInfoEODao.update(attrInfos.get(0), wrapper1); + } + } + } + i++; + } + } + } + + } + + @Override + public void replaceBdtbzhforDtbzhQb() { + //第一步先处理国内海外数据 + //获取代替标准号不为空的数据 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.isNotNull("DTQBBHBUSS"); + wrapper.ne("DTQBBHBUSS", ""); + wrapper.eq("valid_flag", "0"); +// wrapper.eq("STAND_ID","ruxmkyu3d6bgdg7wehkv"); + List sarStandAttrInfos = standAttrInfoDao.selectList(wrapper); + if (null != sarStandAttrInfos && !sarStandAttrInfos.isEmpty()) { + //获取数据以及更新自身 新查询当前标准数据并将格式化之后的数据更新到代替标准号中 + int i = 1; + for (SarBussStandAttrInfo sarBussStandAttrInfo : sarStandAttrInfos) { + String dtbzh = convertStandCodeHandle(sarBussStandAttrInfo.getDtqbbhbuss()); + logger.info("第" + i + "行数据代替标准号为" + dtbzh + "转换前标准号为" + sarBussStandAttrInfo.getDtqbbhbuss()); + logger.info("第" + i + "行数据为" + sarBussStandAttrInfo.toString()); + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.eq("valid_flag", "0"); + wrapper2.eq("stand_id", sarBussStandAttrInfo.getStandId()); + List attrInfoList = standAttrInfoDao.selectList(wrapper2); + attrInfoList.get(0).setDtqbbhbuss(dtbzh); + standAttrInfoDao.update(attrInfoList.get(0), wrapper2); + + + //找到用来代替的标准号 + SearchStandContext searchStandContext1 = new SearchStandContext(); + searchStandContext1.setStandId(sarBussStandAttrInfo.getStandId()); + List list1 = standDataDao.searchStandDataThree(searchStandContext1); + if (null != list1 && list1.size() > 0) { + String bdtbzh = list1.get(0).getStandNum(); + + //现在针对处理一波代替标准号 根据标准号找到 + if (dtbzh.contains(",") && !dtbzh.isEmpty() && !"".equals(dtbzh) ) { + //判定是不是多个 + List strings = new ArrayList<>(Arrays.asList(dtbzh.split(","))); + strings.forEach(s -> { + if (StringUtils.isNotBlank(s)) { + SearchStandContext searchStandContext = new SearchStandContext(); + searchStandContext.setStandCode(s); + List list = standDataDao.searchStandDataThree(searchStandContext); + if (null != list && list.size() > 0) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("valid_flag", "0"); + wrapper1.eq("stand_id", list.get(0).getStandId()); + List attrInfos = standAttrInfoDao.selectList(wrapper1); + if (null != attrInfos && attrInfos.size() > 0) { + if (null != attrInfos.get(0).getBdtqbbhbuss() && !"".equals(attrInfos.get(0).getBdtqbbhbuss())) { + if (!attrInfos.get(0).getBdtqbbhbuss().contains(bdtbzh)) { + attrInfos.get(0).setBdtqbbhbuss(attrInfos.get(0).getBdtqbbhbuss() + "," + bdtbzh); + } + } else { + attrInfos.get(0).setBdtqbbhbuss(bdtbzh); + } + standAttrInfoDao.update(attrInfos.get(0), wrapper1); + } + } + } + }); + + } else if (!dtbzh.isEmpty() && !"".equals(dtbzh) ) { + //单个 + SearchStandContext searchStandContext = new SearchStandContext(); + searchStandContext.setStandCode(dtbzh); + List list = standDataDao.searchStandDataThree(searchStandContext); + if (null != list && list.size() > 0) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("valid_flag", "0"); + wrapper1.eq("stand_id", list.get(0).getStandId()); + List attrInfos = standAttrInfoDao.selectList(wrapper1); + if (null != attrInfos && attrInfos.size() > 0) { + if (null != attrInfos.get(0).getBdtqbbhbuss() && !"".equals(attrInfos.get(0).getBdtqbbhbuss())) { + if (!attrInfos.get(0).getBdtqbbhbuss().contains(bdtbzh)) { + attrInfos.get(0).setBdtqbbhbuss(attrInfos.get(0).getBdtqbbhbuss() + "," + bdtbzh); + } + } else { + attrInfos.get(0).setBdtqbbhbuss(bdtbzh); + } + standAttrInfoDao.update(attrInfos.get(0), wrapper1); + } + } + } + i++; + } + } + } + + } + + @Override + public void convertDocAll(List list) { + try{ + for(SarStandFile sarStandFile : list){ + logger.error("GB++++++++++++++++:" + sarStandFile.getStandId()); + AttFileEO attFileEO = new AttFileEO(); + attFileEO.setId(sarStandFile.getAttId()); + AttFileEO temp = attFileEODao.selectFileInfoById(attFileEO); + createStandFileAppend(sarStandFile.getStandId(), sarStandFile.getStandFileClassify(), Arrays.asList(temp), new ArrayList<>(),true); + sarStandFile.setPassword("1"); + sarStandFileService.updateById(sarStandFile); + } + }catch(Exception e){ + logger.error(e.getMessage(),e); + } + } + + + + @Autowired + private ISarStandFileService sarStandFileService; + + private String convertStandCodeHandle(String standCode) { + if (StringUtils.isNotBlank(standCode)) { + standCode = standCode.replaceAll("—", "-"); + standCode = standCode.replaceAll(" -", "-"); + standCode = standCode.replaceAll("-", "-"); + standCode = standCode.replaceAll(" - ", "-"); + standCode = standCode.replaceAll(" ", " "); + standCode = standCode.replaceAll("—", "-"); + standCode = standCode.replaceAll("Q-QCBFC", "Q/QCBFC"); + standCode = standCode.replaceAll("Q-FT", "Q/FT"); + standCode = standCode.replaceAll("Q/ FT", "Q/FT"); + standCode = standCode.replaceAll(" -", "-"); + standCode = standCode.replaceAll("-", "-"); + standCode = standCode.replaceAll("Q/QCFLC", "Q/QCFLC"); + standCode = standCode.replaceAll(" ", " "); + standCode = standCode.replaceAll("—", "-"); + standCode = standCode.replaceAll("(", "("); + standCode = standCode.replaceAll(")", ")"); + standCode = standCode.replaceAll(" -", "-"); + standCode = standCode.replaceAll("-", "-"); + standCode = standCode.replaceAll(":", ":"); + standCode = standCode.replaceAll("Part", "PART"); + standCode = standCode.replaceAll(",", ","); + standCode = standCode.replaceAll("、", ","); +// standCode = standCode.replaceAll("--", ""); +// standCode = standCode.replaceAll("-", ""); + standCode = standCode.replaceAll("null", ""); + if ("--".equals(standCode) || "-".equals(standCode) || "_".equals(standCode)) { + standCode = ""; + } + } + return standCode; + } + + /*** + * @Description: 分页查询 + * @Author: super_liu + * @Date: 2020/8/19 10:23 + * @Param: [page] + * @Return: java.util.List + */ + @Override + public List getSarStandardsInfoPage(SarStandardsInfoEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if (page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())) { + String treeType = page.getTreeType(); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID", page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if (children.isEmpty() && !page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(treeType) && "tsr".equals(treeType)) { +// List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); +// if (getMenuIdList != null && !getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } else if (!page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(treeType) && "sarMs".equals(treeType)) { +// List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); +// if (getMenuIdList != null && !getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + List ids = iSarMenuStandardService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } else if (page.getMenuId().equals("nomenu") && StringUtils.isNotBlank(page.getSarMsType()) && "filterSarMsMenu".equals(page.getSarMsType())) { +// List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); +// if (getMenuIdList != null && !getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + List ids = iSarMenuStandardService.getChildMenuList(page.getSarMsMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + Integer rowCount = dao.getSarStandardsInfoCount(page); + page.getPager().setRowCount(rowCount); + List sarlist = dao.getSarStandardsInfoPage(page, "0"); + attrInfoCollect(sarlist); + return sarlist; + } + + @Override + public List getSarStandardsInfoPageByWk1(SarStandardsInfoEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if (page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID", page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if (children.isEmpty() && !page.getMenuId().equals("nomenu")) { +// List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); +// if (getMenuIdList != null && !getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + Integer rowCount = dao.getSarStandardsInfoCountWk1(page); + page.getPager().setRowCount(rowCount); + List sarlist = dao.getSarStandardsInfoPage(page, "996"); + attrInfoCollect(sarlist); + return sarlist; + } + + @Override + public List getSarStandardsInfoPageBak(SarStandardsInfoEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if (page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID", page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if (children.isEmpty() && !page.getMenuId().equals("nomenu")) { + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + Integer rowCount = dao.getSarStandardsInfoCount(page); + page.getPager().setRowCount(rowCount); + List sarlist = dao.getSarStandardsInfoPage(page, "999"); + attrInfo(sarlist); + return sarlist; + } + + @Override + public List getSarStandardsInfoPageBak1(SarStandardsInfoEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if (page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID", page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if (children.isEmpty() && !page.getMenuId().equals("nomenu")) { + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + Integer rowCount = dao.getSarStandardsInfoCount(page); + page.getPager().setRowCount(rowCount); + List sarlist = dao.getSarStandardsInfoPage(page, "0"); + attrInfo(sarlist); + return sarlist; + } + + @Override + public List selectHighLawsById(SarStandardsInfoEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 + if (page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID", page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if (children.isEmpty() && !page.getMenuId().equals("nomenu")) { + List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); + if (getMenuIdList != null && !getMenuIdList.isEmpty()) { + page.setMenuRoleList(getMenuIdList); + } else { + page.setMenuRoleList(null); + } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + List lawsIds = new ArrayList<>(); + if ("1".equals(page.getQdFlag())) { + + SarFindDto sarFindDto = new SarFindDto(); + sarFindDto.setId(page.getQdid()); + sarFindDto.setStandEnName(page.getStandEnName()); + sarFindDto.setStandName(page.getStandName()); + sarFindDto.setTypeApplicable(page.getTypeApplicable()); + sarFindDto.setSycpx(page.getSycpx()); + sarFindDto.setNylx(page.getNylx()); + sarFindDto.setTypes(page.getTypes()); + sarFindDto.setStandSort(page.getStandSort()); + sarFindDto.setZrbm(page.getZrbm()); + sarFindDto.setStandNumber(page.getStandNumber()); + sarFindDto.setStandType(page.getStandType()); + + lawsIds = sarLawsAttrDetailedListDao.selectHighLawsId(sarFindDto.getId(), sarFindDto); + + } + + Integer rowCount = dao.selectHighLawsCount(page, lawsIds); + page.getPager().setRowCount(rowCount); + List sarlist = dao.selectHighLawsPage(page, "0", lawsIds); + attrInfo(sarlist); + return sarlist; + } + + public void attrInfo(List sarlist) throws Exception { + for (SarStandardsInfo row : sarlist) { + attrInfoDetails(row); + } + } + + /*** + * @Description: 处理属性表数据 + * @Author: super_liu + * @Date: 2021/6/1 9:37 + * @Param: [sarlist] + * @Return: void + */ + public void attrInfoCollect(List sarlist) throws Exception { + List collectResIds = sarlist.stream().map(SarStandardsInfo::getId).collect(Collectors.toList()); + Map collectMap = personCollectEOService.queryCollectByUserAndIds(collectResIds); + for (SarStandardsInfo row : sarlist) { + if (collectMap != null && collectMap.get(row.getId()) != null) { + row.setCollectId(collectMap.get(row.getId())); + } + } + } + + + public void attrInfoDetails(SarStandardsInfo row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryField; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + List dicInfo = dicTypeEODao.getDicInfo("dic_type_code", "dic_type_name"); + Map dicMap = dicInfo.stream() + .filter(item -> !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode, DicTypeEO::getDicTypeName, (value1, value2) -> value2)); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + // 组织机构和人员 + Map newMap = new HashMap<>(); + if (getAttrMap != null) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + if ("\"null\"".equals(entry.getValue())) { + entry.setValue(""); + } + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { + String value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMap.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getOrgNamesByIds(value); + newMap.put(name + "Name", value); + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getUserNamesByIds(value); + newMap.put(name + "Name", value); + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + value = sysInfoEOService.getRoleNamesByIds(value); + newMap.put(name + "Name", value); + } + } + } + getAttrMap.putAll(newMap); + } + + if (getAttrMap != null && !getAttrMap.isEmpty()) { + if (null!=getAttrMap.get("QCDW")){ + String qcdw= String.valueOf(getAttrMap.get("QCDW")); + if (qcdw.contains(",")){ + List qc=new ArrayList<>(Arrays.asList(qcdw.split(","))); + List res=new ArrayList<>(); + for (String q:qc) { + if (null!=dicMap.get(q)) { + res.add(dicMap.get(q)); + }else { + res.add(q); + } + } + getAttrMap.put("QCDW",StringUtils.join(res,",")); + }else { + if (null!=dicMap.get(qcdw)) { + getAttrMap.put("QCDW", dicMap.get(qcdw)); + } + } + } + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + + row.setAttrInfoMap(getAttrMap); + } + } + + public void attrInfoDetailsExport(SarStandardsInfo row) throws Exception { + String fieldInfo = InitStandAttrUtil.queryField; + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = sarStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + // 组织机构和人员 + Map newMap = new HashMap<>(); + if (getAttrMap != null) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + if ("\"null\"".equals(entry.getValue())) { + entry.setValue(""); + } + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { + String value = entry.getValue().toString(); + String selVal = InitStandAttrUtil.selectFieldMap.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getOrgNamesByIds(value); + newMap.put(name + "Name", value); + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + value = sysInfoEOService.getUserNamesByIds(value); + newMap.put(name + "Name", value); + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + value = sysInfoEOService.getRoleNamesByIds(value); + newMap.put(name + "Name", value); + } + } + } + getAttrMap.putAll(newMap); + } + + if (getAttrMap != null && !getAttrMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + + row.setAttrInfoMap(getAttrMap); + } + } + + public void attrInfoSearchDetails(SarStandardsInfo row, String type) throws Exception { + String fieldInfo = InitStandAttrUtil.queryField; + String collectId = personCollectEOService.queryCollectByUserAndId(row.getId()); + row.setCollectId(collectId); + // 查询属性表数据 + if (StringUtils.isNotBlank(fieldInfo)) { + Map getAttrMap = new TreeMap<>(); + if (type.equals("add")) { + String sarStandAttrEOStr = row.getSarStandAttrEOStr(); + getAttrMap = JSONObject.fromObject(sarStandAttrEOStr); + } else { + getAttrMap = sarStandAttrInfoEODao.selectStandFieldAndData(fieldInfo, row.getId()); + } + if (InitStandAttrUtil.clobFieldList != null && !InitStandAttrUtil.clobFieldList.isEmpty()) { + // 遍历修改所有clob类型的值 + for (String clobField : InitStandAttrUtil.clobFieldList) { + Clob clobValue = (Clob) getAttrMap.get(clobField); + String fieldValue = FieldConvertUtil.ClobToString(clobValue); + getAttrMap.put(clobField, fieldValue); + } + } + + if (getAttrMap != null && !getAttrMap.isEmpty()) { + row.setAttrInfoCaseMap(transformUpperCase(getAttrMap)); + } + + row.setAttrInfoMap(getAttrMap); + } + } + + + private Map transformUpperCase(Map orgMap) { + Map resultMap = new HashMap<>(); + + for (Map.Entry entry : orgMap.entrySet()) { + String newKey = entry.getKey().toLowerCase(); + resultMap.put(newKey, orgMap.get(entry.getKey())); + if (entry.getValue() != null && InitStandAttrUtil.fileFieldList != null && !InitStandAttrUtil.fileFieldList.isEmpty() && InitStandAttrUtil.fileFieldList.contains(entry.getKey())) { + String value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + if (!fileObj.isEmpty()) { + resultMap.put(newKey + "Name", fileObj.get(0).getOldFileName()); + } + } + } + } + + return resultMap; + } + + @Autowired + private SarFileSplitInfoEODao sarFileSplitInfoEODao; + + public void attrInfoShowDetails(List sarlist) throws Exception { + for (SarStandardsInfo row : sarlist) { + attrInfoDetails(row); + Map getAttrMap = row.getAttrInfoMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + //判断文本是否已被拆分,把已被拆分过的文件给前端判断是否显示分解单 + SarFileSplitInfoEOPage sarFileSplitInfoEOPage = new SarFileSplitInfoEOPage(); + sarFileSplitInfoEOPage.setStandId(row.getId()); + List sarFileSplitInfoEOS = sarFileSplitInfoEODao.queryByPageOwn(sarFileSplitInfoEOPage); + List itemExistList = sarFileSplitInfoEOS.stream() + .map(item -> item.getFileType()) + .collect(Collectors.toList()); + getAttrMap.put("itemExistList", itemExistList); + + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + if (entry.getValue() != null && InitStandAttrUtil.fileFieldList != null && InitStandAttrUtil.fileFieldList.size() > 0 && InitStandAttrUtil.fileFieldList.contains(name)) { + value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfosOrderByDateDesc(value); + entry.setValue(fileObj); + } + } else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { + value = entry.getValue().toString(); + List valArr = Arrays.asList(value.split(",")); + + switch (name) { + //通过id绑定责任工程师名称 + case "ZRGCS": { + QueryWrapper tsUserQW = new QueryWrapper<>(); + tsUserQW.select("UNAME") + .in("USID", valArr); + List stringList = tsUserService.listObjs(tsUserQW, o -> o.toString()); + value = String.join(",", stringList.isEmpty() ? valArr : stringList); + break; + } + //通过id绑定责任部门师名称 + case "ZRBM": { + QueryWrapper tsPositionQW = new QueryWrapper<>(); + tsPositionQW.select("name") + .in("id", valArr); + List stringList = iTsPositionService.listObjs(tsPositionQW, o -> o.toString()); + value = String.join(",", stringList.isEmpty() ? valArr : stringList); + break; + } + default: + value = dicTypeEODao.getDicNamesByCodes(valArr, ""); + } + + + entry.setValue(value == null ? String.join(",", valArr) : value); + } + } + } + } + } + + public void attrInfoShowSearchDetails(SarStandardsInfo row, String type) throws Exception { + if (row != null) { + attrInfoSearchDetails(row, type); + Map getAttrMap = row.getAttrInfoMap(); + if (getAttrMap != null && getAttrMap.size() > 0) { + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + List valArr = new ArrayList<>(); + if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { + if (StringUtils.isNotBlank(entry.getValue().toString())) { + Object json = null; + if(Utils.isJson(entry.getValue().toString())){ + json = new JSONTokener(entry.getValue().toString()).nextValue(); + } + if (json instanceof JSONArray) { + valArr = com.alibaba.fastjson.JSONObject.parseArray(entry.getValue().toString(), String.class); + } else { + value = entry.getValue().toString(); + valArr = Arrays.asList(value.split(",")); + } + if (!valArr.isEmpty()) { + value = dicTypeEODao.getDicNamesByCodes(valArr, ""); + } + } + entry.setValue(value); + } + } + } + } + } + + public void attrInfoShow(List sarlist) throws Exception { + for (SarStandardsInfo row : sarlist) { + attrInfoDetails(row); + Map getAttrMap = row.getAttrInfoMap(); + Map getNewMap = new LinkedHashMap<>(); + if (getAttrMap != null && getAttrMap.size() > 0) { + String svppsTip = ""; + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + if ("SVPPS".equals(name)) { + Object svpps = entry.getValue(); + if (svpps != null && StringUtils.isNotBlank(svpps.toString())) { + svppsTip = svpps.toString(); + } + if (StringUtils.isNotBlank(svppsTip)) { + svppsTip = sysInfoEOService.getSvppsNamesTipByIds(svppsTip); + } + value = String.valueOf(getAttrMap.get("SVPPSName")); + entry.setValue(value); + } else if (entry.getValue() != null && InitStandAttrUtil.fileFieldList != null && InitStandAttrUtil.fileFieldList.size() > 0 && InitStandAttrUtil.fileFieldList.contains(name)) { + value = entry.getValue().toString(); + if (StringUtils.isNotBlank(value)) { + List fileObj = attFileEOService.getMultiFileInfos(value); + entry.setValue(fileObj); + } + } else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { + value = entry.getValue().toString(); + if ("GZZXX".equals(name)) { + value = sysInfoEOService.getGroupNamesByIds(value); + } else { + String selVal = InitStandAttrUtil.selectFieldMap.get(name); + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal) || SelectionTypeEnum.USERLIST.getValue().equals(selVal) || SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + if (getAttrMap.get(name + "Name") != null) { + value = String.valueOf(getAttrMap.get(name + "Name")); + } + } else { + List valArr = Arrays.asList(value.split(",")); + value = dicTypeEODao.getDicNamesByCodes(valArr, ""); + } + } + entry.setValue(value); + } + } + getAttrMap.put("SVPPSTips", svppsTip); + } + } + } + + public void attrInfoShowExport(List sarlist) throws Exception { + + //查询字典表,形成Hash映射提升速度 + List dicInfo = dicTypeEODao.getDicInfo("dic_type_code", "dic_type_name"); + Map dicMap = dicInfo.stream() + .filter(item -> !item.getDicTypeCode().isEmpty()) + .collect(Collectors.toMap(DicTypeEO::getDicTypeCode, DicTypeEO::getDicTypeName, (value1, value2) -> value2)); + + + for (SarStandardsInfo row : sarlist) { + attrInfoDetailsExport(row); + Map getAttrMap = row.getAttrInfoMap(); + Map getNewMap = new LinkedHashMap<>(); + if (getAttrMap != null && getAttrMap.size() > 0) { + String svppsTip = ""; + for (Map.Entry entry : getAttrMap.entrySet()) { + String name = entry.getKey(); + String value = ""; + + + if ("SVPPS".equals(name)) { + Object svpps = entry.getValue(); + if (svpps != null && StringUtils.isNotBlank(svpps.toString())) { + svppsTip = svpps.toString(); + } + if (StringUtils.isNotBlank(svppsTip)) { + svppsTip = sysInfoEOService.getSvppsNamesTipByIds(svppsTip); + } + value = String.valueOf(getAttrMap.get("SVPPSName")); + entry.setValue(value); + } +// else if (entry.getValue() != null && InitStandAttrUtil.fileFieldList != null && InitStandAttrUtil.fileFieldList.size() > 0 && InitStandAttrUtil.fileFieldList.contains(name)) { +// value = entry.getValue().toString(); +// if (StringUtils.isNotBlank(value)) { +// List fileObj = attFileEOService.getMultiFileInfos(value); +// entry.setValue(fileObj); +// } +// } + else if (entry.getValue() != null && InitStandAttrUtil.selectionFieldList != null && InitStandAttrUtil.selectionFieldList.size() > 0 && InitStandAttrUtil.selectionFieldList.contains(name)) { +// value = entry.getValue().toString(); +// String selVal = InitStandAttrUtil.selectFieldMap.get(name); +// if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal) || SelectionTypeEnum.USERLIST.getValue().equals(selVal) || SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { +// if (getAttrMap.get(name + "Name") != null) { +// value = String.valueOf(getAttrMap.get(name + "Name")); +// } +// +// +// } else { + /** + *============================ 对getAttrMap的value赋值中文名称=============================== + */ + if (entry.getValue() != null) { + StringBuilder builder = new StringBuilder(""); + for (String s : entry.getValue().toString().split(",")) { + if (dicMap.containsKey(s) && !"ZRBM".equals(name)) { + builder.append(dicMap.get(s) + " "); + } + + } + + + if (builder.toString().isEmpty()) { + getAttrMap.put(name, entry.getValue().toString()); + } else { + getAttrMap.put(name, builder.toString()); + } + } + /** + *============================ 对getAttrMap的value赋值中文名称=============================== + */ +// } + +// entry.setValue(value); + } + } + getAttrMap.put("SVPPSTips", svppsTip); + } + + //对attrMap赋值 + row.setAttrInfoMap(getAttrMap); + } + } + + + /*** + * @Description: 新增标准 + * @Author: yangxuenan + * @Date: 2020/9/8 9:15 + * @Param: [sarStandardsInfoEO] + * @Return: void + */ + public void createSarStandardsInfo(SarStandardsInfo sarStandardsInfoEO) throws Exception { + // 处理基础表信息 + sarStandardsInfoEO.setId(UUIDUtils.randomUUID20()); + sarStandardsInfoEO.setCreationUser(LoginUserUtil.getUserId()); + sarStandardsInfoEO.setValidFlag("0"); + sarStandardsInfoEO.setCreationTime(new Date()); + sarStandardsInfoEO.setModifyTime(new Date()); + //根据新建标准所在目录,确定此处是否需要在标准目录关联表中插入数据 + + //当代替标准号在我的收藏中时此标准也关联到我的收藏中 + associatedCollection(sarStandardsInfoEO); + + if (StringUtils.isNotEmpty(sarStandardsInfoEO.getMenuIds())) { + + for (String menuId : sarStandardsInfoEO.getMenuIds().split(",")) { + SarStandMenu sarStandMenuEO = new SarStandMenu(); + sarStandMenuEO.setStandId(sarStandardsInfoEO.getId()); + sarStandMenuEO.setMenuId(menuId); + sarStandMenuEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); + sarStandMenuEO.setId(UUIDUtils.randomUUID20()); + sarStandMenuEODao.insert(sarStandMenuEO); + } + } + // 根据其他字段,生成标准状态 + updateStandState(sarStandardsInfoEO, null); + int insertResult = dao.insertSelective(sarStandardsInfoEO); + if (insertResult > 0) { + // 修改属性表数据 + List standAttrInfos = sarStandAttrInfoEODao.selectList(new QueryWrapper().eq("STAND_ID", sarStandardsInfoEO.getId())); + if (!standAttrInfos.isEmpty()) { + sarStandAttrInfoEODao.deleteStandAttrByStandId(standAttrInfos.get(0).getStandId()); + } + //编写预警信息 +// writeWarnings(sarStandardsInfoEO); + // 处理属性表信息 + if (StringUtils.isNotBlank(sarStandardsInfoEO.getSarStandAttrEOStr())) { + createStandAttrInfo(sarStandardsInfoEO,false); + } + + // 根据引用标准修改其他被引用标准 + updateCiteStand(sarStandardsInfoEO, null, "YYBJ", "BYYBJ"); + /** + * 新增代替标准号修改其他被代替标准号 + */ + updateCiteStand(sarStandardsInfoEO, null, "DTBZH", "BDTBZH"); + updateCiteStand(sarStandardsInfoEO, null, "BFDTBZ", "BBFDTBZ"); +// updateRelateStand(sarStandardsInfoEO, "CBBH"); + // 根据代替标准号修改被代替的标准的状态 修改为已修订状态 + replaseStandState(sarStandardsInfoEO); + + // 增加关联事件 + String number = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + if (StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) { + number += "-" + sarStandardsInfoEO.getStandYear(); + } + String content = "入库" + number + " 《" + sarStandardsInfoEO.getStandName() + "》"; + sarUpdLogEOService.createBaseLog(sarStandardsInfoEO.getId(), sarStandardsInfoEO.getStandType() + "_STAND", content); + SarStandardsInfo old = new SarStandardsInfo(); + filterNewFeed(sarStandardsInfoEO,old); + if (elasflag) { + // 消息队列 + attrInfoShowSearchDetails(sarStandardsInfoEO, "add"); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarStandardsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为sarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + + List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + if (!sarItemVOS.isEmpty()) { + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarStandItems::getItemsNum, SarStandItems::getTermsConditions)); + sarStandardsInfoEO.setMapItems(collectMap); + } + createStandMQService.sendStandMQ(sarStandardsInfoEO, "add"); + } + } + } + + /*** + * @Description: 新增属性表数据 + * @Author: yangxuenan + * @Date: 2020/9/8 9:53 + * @Param: [sarStandardsInfoEO] + * @Return: void + */ + public void createStandAttrInfo(SarStandardsInfo sarStandardsInfoEO,boolean upFlag) throws Exception { + String sarStandAttrEOStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + String mustFields = FieldConvertUtil.mustFields; + String mustValues = FieldConvertUtil.mustValues(sarStandardsInfoEO.getId()); + // 将字符串转为map进行解析 + Map sarStandAttrMap = JSONObject.fromObject(sarStandAttrEOStr); + StringBuilder fieldsBuilder = new StringBuilder(); + StringBuilder valuesBuilder = new StringBuilder(); + Map selectionMap = new HashMap<>(); + Map fileMap = new HashMap<>(); + Map multiTimeMap = new HashMap<>(); + List fileIds = new ArrayList<>(); + for (Map.Entry entry : sarStandAttrMap.entrySet()) { + String attrKey = entry.getKey(); + String attrValue = String.valueOf(entry.getValue()); + if (InitStandAttrUtil.queryFieldList != null && !InitStandAttrUtil.queryFieldList.isEmpty()) { + if (InitStandAttrUtil.queryFieldList.contains(attrKey)) { + fieldsBuilder.append("," + attrKey); + if ("YYBJ".equals(attrKey)) { + sarStandardsInfoEO.setCiteStand(attrValue); + } else if ("CBBH".equals(attrKey)) { + sarStandardsInfoEO.setRelateStand(attrValue); + } else if ("DTBJH".equals(attrKey)) { + sarStandardsInfoEO.setReplaceStandNum(attrValue); + } else if ("BFDTBZ".equals(attrKey)) { + sarStandardsInfoEO.setReplacePartStandNum(attrValue); + } + // 多选项,文件类型需要单独处理 向子表添加数据 + if (InitStandAttrUtil.selectionFieldList.contains(attrKey)) { + selectionMap.put(attrKey, attrValue); + } else if (InitStandAttrUtil.fileFieldList.contains(attrKey)) { + fileMap.put(attrKey, attrValue); + List list = Arrays.asList(attrValue.split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList()); + fileIds.addAll(list); +// String attrValueStr = String.join(",", list); +// fileIds += attrValueStr + ","; + if (attrKey.equals("XXZLXX")) { +// this.saveMsgDynamicInfo(attrValue,sarStandardsInfoEO.getStandName(),sarStandardsInfoEO.getId(),sarStandardsInfoEO.getStandSort()+" "+sarStandardsInfoEO.getStandNumber()+"-"+sarStandardsInfoEO.getStandYear()); + } + } else if (InitStandAttrUtil.multiTimeFieldList.contains(attrKey)) { + multiTimeMap.put(attrKey, attrValue); + } + // 不同类型存储数据需单独处理值 + if (InitStandAttrUtil.numFieldList.contains(attrKey)) { + if (StringUtils.isBlank(attrValue)) { + attrValue = "null"; + } + } else if (InitStandAttrUtil.timeFieldList.contains(attrKey)) { + attrValue = FieldConvertUtil.changeTimeValue(attrValue); + } else { + attrValue = "'" + attrValue + "'"; + } + valuesBuilder.append("," + attrValue); + } + } + } + if (!fileIds.isEmpty()) { + sarStandardsInfoEO.setFileIds(String.join(",", fileIds)); + } else { + sarStandardsInfoEO.setFileIds(""); + } + String insertField = mustFields + fieldsBuilder.toString(); + String insertValue = mustValues + valuesBuilder.toString(); + int insertRes = sarStandAttrInfoEODao.insertStandAttr(insertField, insertValue); + if (insertRes > 0) { + // 多选项处理 + createStandVal(sarStandardsInfoEO.getId(), selectionMap); + // 文件处理 + createStandFile(sarStandardsInfoEO.getId(), fileMap,upFlag); + // 多时间处理 + createStandPutTime(sarStandardsInfoEO.getId(), multiTimeMap); + } + } + + /*** + * @Description: 多选项处理 + * @Author: yangxuenan + * @Date: 2020/9/8 14:37 + * @Param: [sarStandardsInfoEO, selectionMap] + * @Return: void + */ + public void createStandVal(String standId, Map selectionMap) { + if (selectionMap != null && selectionMap.size() > 0) { + List standValList = new ArrayList<>(); + for (Map.Entry entry : selectionMap.entrySet()) { + String value = entry.getValue(); + String field = entry.getKey(); + if (StringUtils.isNotBlank(value)) { + String[] valArr = value.trim().split(","); + for (String val : valArr) { + SarStandVal sarStandValEO = new SarStandVal(); + sarStandValEO.setValidFlag(ValueStateEnum.VALUE_TRUE.getValue()); + sarStandValEO.setCreationTime(new Date()); + sarStandValEO.setModifyTime(new Date()); + sarStandValEO.setStandId(standId); + sarStandValEO.setId(UUIDUtils.randomUUID20()); + sarStandValEO.setPropertyType(field); + sarStandValEO.setPropertyVal(val); + standValList.add(sarStandValEO); + } + } + } + if (standValList != null && !standValList.isEmpty()) { + sarStandValEODao.insertForeach(standValList); + } + } + } + + /*** + * @Description: 文件处理 + * @Author: yangxuenan + * @Date: 2020/9/8 15:01 + * @Param: [standId, fileMap] + * @Return: void + */ + public void createStandFile(String standId, Map fileMap,boolean upFlag) throws Exception { + if (fileMap != null && fileMap.size() > 0) { + List standFileList = new ArrayList<>(); + List fileList = new ArrayList<>(); + for (Map.Entry entry : fileMap.entrySet()) { + String value = entry.getValue(); + String field = entry.getKey(); + if (StringUtils.isNotBlank(value)) { + fileList = attFileEOService.getMultiFileInfos(value); + if (fileList != null && !fileList.isEmpty()) { + createStandFileAppend(standId, field, fileList, standFileList,upFlag); + } + } + } + if (standFileList != null && !standFileList.isEmpty()) { + sarStandFileEODao.insertForeach(standFileList); + } + } + } + + public void createStandFileAppend(String standId, String field, List fileList, List standFileList,boolean upFlag) throws Exception { + for (AttFileEO fileInfo : fileList) { + //TODO 20220727 此处为兼容老系统数据 将编辑去掉了先删除再添加的操作 + if(upFlag){ + QueryWrapper fileQueryWrapper = new QueryWrapper<>(); + fileQueryWrapper.eq("STAND_ID",standId); + fileQueryWrapper.eq("VALID_FLAG","0"); + fileQueryWrapper.eq("USE_MODEL","SOURCE_FILE"); + fileQueryWrapper.eq("ATT_ID",fileInfo.getId()); + int fileExist = sarStandFileService.count(fileQueryWrapper); + if(fileExist>0){ + continue; + } + } + SarStandFile sarStandFileEO = new SarStandFile(); + sarStandFileEO.setCreationUser(LoginUserUtil.getUserId()); + sarStandFileEO.setCreationTime(new Date()); + sarStandFileEO.setModifyTime(new Date()); + sarStandFileEO.setValidFlag("0"); + sarStandFileEO.setStandId(standId); //标准ID + sarStandFileEO.setUseModel(UseModuleEnum.SOURCE_FILE.getValue()); //文件使用模式 + sarStandFileEO.setId(UUIDUtils.randomUUID20()); + sarStandFileEO.setAttId(fileInfo.getId()); //文件ID + sarStandFileEO.setStandFileClassify(field); //文件分类 + sarStandFileEO.setFileName(fileInfo.getOldFileName()); + sarStandFileEO.setFileSuffix(fileInfo.getFileSuffix()); + sarStandFileEO.setOriAttId(fileInfo.getId()); + standFileList.add(sarStandFileEO); + //多文档转换 PPT|PPTX|ppt|pptx|PDF|pdf|DOC|doc|DOCX|docx + if ("pdf".equals(fileInfo.getFileSuffix()) || "PDF".equals(fileInfo.getFileSuffix())) { + SarStandFile newFileEO = new SarStandFile(); + newFileEO.setCreationUser(LoginUserUtil.getUserId()); + newFileEO.setCreationTime(new Date()); + newFileEO.setModifyTime(new Date()); + newFileEO.setValidFlag("0"); + newFileEO.setStandId(standId); //标准ID + newFileEO.setId(UUIDUtils.randomUUID20()); + newFileEO.setAttId(fileInfo.getId()); //文件ID + newFileEO.setStandFileClassify(field); //文件分类 + newFileEO.setFileName(fileInfo.getOldFileName()); + newFileEO.setFileSuffix(fileInfo.getFileSuffix()); + newFileEO.setUseModel(UseModuleEnum.WEB_FILE.getValue()); //文件使用模式 //文件名称@@@@@@@需要修改 + newFileEO.setOriAttId(fileInfo.getId()); + standFileList.add(newFileEO); + } else { + String filePath = fileInfo.getFilePath() + fileInfo.getFileName(); + OtConvertMq convert = new OtConvertMq(); + convert.setLawsId(standId); + convert.setAttId(fileInfo.getId()); + convert.setFilePath(filePath); + convert.setAddOrUp("0"); + convert.setFileSuffix(fileInfo.getFileSuffix()); + convert.setStandFileClassify(field); + convert.setConvertType(SarTypeEnum.STAND.getValue()); + convert.setOriAttId(fileInfo.getId()); + convertMq.sendMQ(convert); + } + } + } + + private Boolean verifyFileType(String str) { + String verifyType = "^PPT|PPTX|ppt|pptx|PDF|pdf|DOC|doc|DOCX|docx*$"; + return Pattern.matches(verifyType, str); + } + + + public void createStandPutTime(String standId, Map multiTimeMap) throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if (multiTimeMap != null && multiTimeMap.size() > 0) { + List standTimeList = new ArrayList<>(); + List warningDateList = new ArrayList<>(); + + for (Map.Entry entry : multiTimeMap.entrySet()) { + String value = entry.getValue(); + String field = entry.getKey(); + if (StringUtils.isNotBlank(value)) { + String[] valArr = value.trim().split(","); + int i = 0; + for (String val : valArr) { + if ("N/A".equals(val) && "TBD".equals(val) && "已实施".equals(val)) { + i++; + Date date = sdf.parse(val); + SarStandPutTime sarStandPutTimeEO = new SarStandPutTime(); + sarStandPutTimeEO.setId(UUIDUtils.randomUUID20()); + sarStandPutTimeEO.setStandId(standId); + sarStandPutTimeEO.setTimeType(field); + sarStandPutTimeEO.setCreationTime(new Date()); +// sarStandPutTimeEO.setOrderNum(Integer.valueOf(i)); + sarStandPutTimeEO.setTimeName(field); + sarStandPutTimeEO.setPutTime(date); + standTimeList.add(sarStandPutTimeEO); + } + + + if ("SSRQ".equals(field) || "XCXSSRQ".equals(field) || "ZCCSSRQ".equals(field)) { + WarningDate warningDate = new WarningDate(); + warningDate.setId(UUIDUtils.randomUUID20()); + warningDate.setLawId(standId); + warningDate.setSSRQ(val); + warningDate.setTimeName(field); + warningDateList.add(warningDate); + } + } + } + } + // 批量新增 + if (standTimeList != null && !standTimeList.isEmpty()) { + sarStandPutTimeEODao.insertForeach(standTimeList); + } + + if (warningDateList != null && warningDateList.size() > 0) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("law_id", standId); + warningDateService.remove(wrapper); + warningDateService.saveBatch(warningDateList); + } + } + } + + // 新增修改标准过程中,根据代替标准号,修改被代替标准号对应的标准 + public void updateCiteStand(SarStandardsInfo sarStandardsInfoEO, SarStandardsInfo beforeSarStandardsInfo, String upField, String beUpedField){ + // 记录要被代替标准号的数据 +// SarStandardsInfoEO chageEO= new SarStandardsInfoEO(); + SarStandardsInfo sarStandardsSelectEO = new SarStandardsInfo(); + String addStrandNumber = ""; + String beforeStrandNumber = ""; + if (StringUtils.isNotEmpty(sarStandardsInfoEO.getStandYear())) { + addStrandNumber = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber() + "-" + sarStandardsInfoEO.getStandYear(); + } else { + addStrandNumber = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + } + if (beforeSarStandardsInfo != null) { + if (StringUtils.isNotEmpty(beforeSarStandardsInfo.getStandYear())) { + beforeStrandNumber = beforeSarStandardsInfo.getStandSort() + " " + beforeSarStandardsInfo.getStandNumber() + "-" + beforeSarStandardsInfo.getStandYear(); + } else { + beforeStrandNumber = beforeSarStandardsInfo.getStandSort() + " " + beforeSarStandardsInfo.getStandNumber(); + } + } + // 以“,”分隔查看之前是否有 ,如果有不修改,如果没有,追加修改 + String newCiteStand = ""; + if ("YYBJ".equals(upField)) { + newCiteStand = sarStandardsInfoEO.getCiteStand(); + } else if ("CBBH".equals(upField)) { + newCiteStand = sarStandardsInfoEO.getRelateStand(); + } else if ("DTBJH".equals(upField)) { + newCiteStand = sarStandardsInfoEO.getReplaceStandNum(); + } else if ("DTBZH".equals(upField)) { + newCiteStand = sarStandardsInfoEO.getReplaceStandNum(); + } else if ("BFDTBZ".equals(upField)) { + newCiteStand = sarStandardsInfoEO.getReplacePartStandNum(); + } + if (StringUtils.isNotEmpty(newCiteStand) && newCiteStand.split(",").length > 0) { + // 主要逻辑处理新增的 + String nowEOrepNums[] = newCiteStand.split(","); + for (String citeStand : nowEOrepNums) { + sarStandardsSelectEO.setStandNumber(citeStand); +// if (StringUtils.isNotBlank(sarStandardsSelectEO.getStandNumber())) { +// String sort = ""; +// if (sarStandardsSelectEO.getStandNumber().length() > 3) { +// sort = sarStandardsSelectEO.getStandNumber().substring(0, 3); +// } +// if ("ECE".equals(sort)) { +// int length = sarStandardsSelectEO.getStandNumber().length(); +// String number = sarStandardsSelectEO.getStandNumber().substring(3, length); +// sarStandardsSelectEO.setStandNumber("UN(ECE)" + number); +// } +// } + List result = dao.selectStandardsByStandnumber(sarStandardsSelectEO); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = beUpedField; + String citedStand = sarStandAttrInfoEODao.selectFieldValByStandId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (StringUtils.isNotBlank(citedStand)) { + String[] beforeReplacedStandNumStr = citedStand.split(","); + if (Arrays.asList(beforeReplacedStandNumStr).contains(addStrandNumber)) { + continue; + } else { + changeCitedStand = citedStand + "," + addStrandNumber; + } + } else { + changeCitedStand = addStrandNumber; + } + sarStandAttrInfoEODao.updateStandInfo(standId, field, changeCitedStand); + } + } + // 如果id不为空,说明是修改,有逻辑删除的执行以下语句,存在之前是三项,现在修改成两项的情况 + if (null != beforeSarStandardsInfo) { + String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get(upField)); + if (StringUtils.isNotEmpty(oldCiteStand)) { + String[] beforeEOrepNums = oldCiteStand.split(","); + for (String beforeStr : beforeEOrepNums) { + // 如果再旧的中包含,在新的中没有,需要删除 + if (!Arrays.asList(nowEOrepNums).contains(beforeStr)) { + sarStandardsSelectEO.setStandNumber(beforeStr); + List result = dao.selectStandardsByStandnumber(sarStandardsSelectEO); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = beUpedField; + String citedStand = sarStandAttrInfoEODao.selectFieldValByStandId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (StringUtils.isNotBlank(citedStand)) { + String[] beforerepalced = citedStand.split(","); + ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced)); + if (beforlist.contains(beforeStrandNumber)) { + beforlist.remove(beforeStrandNumber); + changeCitedStand = StringUtils.join(beforlist.toArray(), ","); + } else { + continue; + } + sarStandAttrInfoEODao.updateStandInfo(standId, field, changeCitedStand); + } + } + } + } + } + } + + } else { + // 如果为空,判断是否为修改 + if (null != beforeSarStandardsInfo) { + String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get("YYBJ")); + if (StringUtils.isNotEmpty(oldCiteStand)) { + String[] beforeEOrepNums = oldCiteStand.split(","); + for (String beforeStr : beforeEOrepNums) { + // 如果再旧的中包含,在新的中没有,需要删除,相关数据取第一条是因为标准号是唯一的 + sarStandardsSelectEO.setStandNumber(beforeStr); + List result = dao.selectStandardsByStandnumber(sarStandardsSelectEO); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = "BYYBJ"; + String citedStand = sarStandAttrInfoEODao.selectFieldValByStandId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (StringUtils.isNotBlank(citedStand)) { + String[] beforerepalced = citedStand.split(","); + ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced)); + if (beforlist.contains(beforeStrandNumber)) { + beforlist.remove(beforeStrandNumber); + changeCitedStand = StringUtils.join(beforlist.toArray(), ","); + } else { + continue; + } + sarStandAttrInfoEODao.updateStandInfo(standId, field, changeCitedStand); + } + } + } + } + } + if (null != beforeSarStandardsInfo) { + String oldCiteStand = String.valueOf(beforeSarStandardsInfo.getAttrInfoMap().get("DTBJH")); + if (StringUtils.isNotEmpty(oldCiteStand)) { + String[] beforeEOrepNums = oldCiteStand.split(","); + for (String beforeStr : beforeEOrepNums) { + // 如果再旧的中包含,在新的中没有,需要删除,相关数据取第一条是因为标准号是唯一的 + sarStandardsSelectEO.setStandNumber(beforeStr); + List result = dao.selectStandardsByStandnumber(sarStandardsSelectEO); + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + String field = "BDTBZH"; + String citedStand = sarStandAttrInfoEODao.selectFieldValByStandId(field, result.get(0).getId()); + String changeCitedStand = ""; + if (StringUtils.isNotBlank(citedStand)) { + String[] beforerepalced = citedStand.split(","); + ArrayList beforlist = new ArrayList<>(Arrays.asList(beforerepalced)); + if (beforlist.contains(beforeStrandNumber)) { + beforlist.remove(beforeStrandNumber); + changeCitedStand = StringUtils.join(beforlist.toArray(), ","); + } else { + continue; + } + sarStandAttrInfoEODao.updateStandInfo(standId, field, changeCitedStand); + } + } + } + } + } + } + } + + public void updateRelateStand(SarStandardsInfo sarStandardsInfoEO, String upField) { + String addStandNumber = ""; + if (StringUtils.isNotEmpty(sarStandardsInfoEO.getStandYear())) { + addStandNumber = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber() + "-" + sarStandardsInfoEO.getStandYear(); + } else { + addStandNumber = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + } + if (StringUtils.isNotBlank(addStandNumber)) { + String relateStand = ""; + if ("CBBH".equals(upField)) { + relateStand = sarStandardsInfoEO.getRelateStand(); + } + List newStandIdList = new ArrayList<>(); + if (StringUtils.isNotBlank(relateStand)) { + List newRealteStandList = Arrays.asList(relateStand.split(",")); + for (String newRelate : newRealteStandList) { + SarStandardsInfo selectEO = new SarStandardsInfo(); + selectEO.setStandNumber(newRelate); + List result = dao.selectStandardsByStandnumber(selectEO); + // 新增关联 + if (result != null && result.size() > 0) { + String standId = result.get(0).getId(); + newStandIdList.add(standId); + String relatedStand = sarStandAttrInfoEODao.selectFieldValByStandId(upField, standId); + String changeStand = ""; + if (StringUtils.isNotBlank(relatedStand)) { + List beforelist = new ArrayList<>(Arrays.asList(relatedStand.split(","))); + if (!beforelist.contains(addStandNumber)) { + beforelist.add(addStandNumber); + changeStand = StringUtils.join(beforelist.toArray(), ","); + sarStandAttrInfoEODao.updateStandInfo(standId, upField, changeStand); + } else { + continue; + } + } else { + sarStandAttrInfoEODao.updateStandInfo(standId, upField, addStandNumber); + } + } + } + } + //查询对应当前标准的数据,删除关联 + if (newStandIdList == null || newStandIdList.size() < 1) { + newStandIdList = null; + } + List resultList = sarStandAttrInfoEODao.selectFieldValByContainsVal(upField, addStandNumber, newStandIdList); + if (resultList != null && !resultList.isEmpty()) { + for (SelectionResult result : resultList) { + String relatedStand = result.getLabel(); + List beforlist = new ArrayList<>(Arrays.asList(relatedStand.split(","))); + beforlist.remove(addStandNumber); + if (beforlist != null && !beforlist.isEmpty()) { + relatedStand = StringUtils.join(beforlist.toArray(), ","); + } else { + relatedStand = ""; + } + sarStandAttrInfoEODao.updateStandInfo(result.getValue(), upField, relatedStand); + } + } + } + } + + /** + * 代替标准号修改状态 + * + * @param sarStandardsInfoEO + */ + public void replaseStandState(SarStandardsInfo sarStandardsInfoEO) throws Exception { + String newCiteStand = sarStandardsInfoEO.getReplaceStandNum(); + if (StringUtils.isNotBlank(newCiteStand)) { + String nowEOrepNums[] = newCiteStand.split(","); + for (String citeStand : nowEOrepNums) { + SarStandardsInfo sarStandardsSelectEO = new SarStandardsInfo(); + sarStandardsSelectEO.setStandNumber(citeStand); + List result = dao.selectStandardsByStandnumber(sarStandardsSelectEO); + if (result != null && !result.isEmpty()) { + SarStandardsInfo replaseStand = result.get(0); + String standState = replaseStand.getStandState(); + String oldStandState = standState; + String oldStandStateShow = SarStandStateEnum.getLableByVal(oldStandState); + if (!SarStandStateEnum.N5KLTFLNRC.getValue().equals(standState) || !SarStandStateEnum.TOVOID.getValue().equals(standState)) { + replaseStand.setStandState(SarStandStateEnum.N5KLTFLNRC.getValue()); + dao.updateById(replaseStand); + //更新log日志 + sarUpdLogEOService.createBaseLog(replaseStand.getId(), replaseStand.getStandType() + "_STAND", "入库流程当前标准因被新标准代替修改标准状态的值从《" + oldStandStateShow + "》为《\"已修订\"》"); + } + } + } + } + } + + public void updateStandState(SarStandardsInfo sarStandardsInfoEO, String oldState) { + String resultState = ""; + String newState = sarStandardsInfoEO.getStandState(); + String standNum = ""; + List selectList = InitStandAttrUtil.standStateList; + if (org.apache.commons.lang.StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) { + standNum = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber() + "-" + sarStandardsInfoEO.getStandYear(); + } else { + standNum = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + } + // 根据数据信息判断当前应该状态 + if (!SarStandStateEnum.ZTXXYX.getValue().equals(newState)) { + // 查询当前标准被代替信息 + List countRep = dao.countReplaceMsg(standNum); + int countFB = 0; + int countQT = 0; + if (countRep != null && !countRep.isEmpty()) { + for (String state : countRep) { + if (SarStandStateEnum.FJNVYX9Q7J.getValue().equals(state)) { + countFB++; + break; + } else if (selectList.indexOf(state) < selectList.indexOf(SarStandStateEnum.FJNVYX9Q7J.getValue())) { + countQT++; + } + } + } + if (countFB > 0) { +// newState = SarStandStateEnum.TOVOID.getValue(); + } else if (countQT > 0) { + newState = SarStandStateEnum.ZTJJSS.getValue(); + } else { + // 查询各个文件稿状态 + Map sarStandAttrMap = JSONObject.fromObject(sarStandardsInfoEO.getSarStandAttrEOStr()); + if (sarStandAttrMap != null && !sarStandAttrMap.isEmpty()) { + if (StringUtils.isNotBlank(sarStandAttrMap.get("FBGBJBD"))) { + newState = SarStandStateEnum.FJNVYX9Q7J.getValue(); + } else if (StringUtils.isNotBlank(sarStandAttrMap.get("SSG"))) { + newState = SarStandStateEnum.SUBMIT.getValue(); + } else if (StringUtils.isNotBlank(sarStandAttrMap.get("BPG"))) { + newState = SarStandStateEnum.RADYSUBMIT.getValue(); + } else if (StringUtils.isNotBlank(sarStandAttrMap.get("ZQYJG"))) { + newState = SarStandStateEnum.ADVICE.getValue(); + } else if (StringUtils.isNotBlank(sarStandAttrMap.get("CA"))) { + newState = SarStandStateEnum.DRAFT.getValue(); + } + } + } + } + // 与旧状态对比,判断是否修改 + if (StringUtils.isNotBlank(oldState)) { + int newIndex = selectList.indexOf(newState); + int endIndex = selectList.indexOf(oldState); + if (newIndex < endIndex) { + resultState = oldState; + } else { + resultState = newState; + } + } else { + resultState = newState; + } + sarStandardsInfoEO.setStandState(resultState); + } + + + private void associatedCollection(SarStandardsInfo standInfo) { + /** + * 获取代替标准号 + * 判断getAttrInfoMap, dtbzh.get("DTBJH") 不为空 + */ + + String DTBJH = Optional.ofNullable(standInfo) + .flatMap(standEO -> Optional.ofNullable(JSONObject.fromObject(standEO.getSarStandAttrEOStr()))) + .flatMap(attrMap -> Optional.ofNullable(attrMap.get("DTBJH"))) + .map(str -> str.toString()) + .orElse(""); + + if (!"".equals(DTBJH)) { + + for (String s : DTBJH.split(",")) { + + /** + * 以逗号分割的代替标准号,只要其中一个存在于我的收藏之中,此标准就插入我的收藏 + */ + + StandInfo query = new StandInfo(); + + //用户id + query.setUserId(LoginUserUtil.getUserId()); + query.setStandCode(s); + if (personCollectEOService.countPersonCollectByStandInfo(query) > 0) { + + TsPersonCollect tsPersonCollect = new TsPersonCollect(); + tsPersonCollect.setId(UUIDUtils.randomUUID20()); + tsPersonCollect.setValidFlag(0); + tsPersonCollect.setCreationTime(new Date()); + tsPersonCollect.setModifyTime(new Date()); + tsPersonCollect.setCollectResId(standInfo.getId()); + tsPersonCollect.setCollectType(standInfo.getStandType() + "_STAND"); + tsPersonCollect.setCollectTitle(standInfo.getStandName() + "(编号:" + standInfo.getStandSort() + " " + standInfo.getStandNumber() + "-" + standInfo.getStandYear() + ")"); + tsPersonCollect.setUserId(LoginUserUtil.getUserId()); + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("COLLECT_RES_ID", standInfo.getId()) + .eq("VALID_FLAG", '0'); + personCollectEOService.saveOrUpdate(tsPersonCollect, ew); + + break; + } + + } + + + } + + } + + + /*** + * @Description: 修改标准 + * @Author: yangxuenan + * @Date: 2020/9/14 14:41 + * @Param: [sarStandardsInfoEO] + * @Return: com.adc.da.util.http.ResponseMessage + */ + public int updateSarStandardsInfo(SarStandardsInfo sarStandardsInfoEO) throws Exception { + + /** + * 加入对应"国家/地区"的清单列表 + */ + + //1.获取标准清单的"国家/地区" + //2.判断修改的标准的"国家/地区"与清单中的是否一致,一致则添加到清单中,不一致不作处理 + + + String standId = sarStandardsInfoEO.getId(); + // 查询修改前数据信息,为修改代替标准号使用 + SarStandardsInfo beforeSarStandardsInfo = dao.selectById(standId); + attrInfoDetails(beforeSarStandardsInfo); + sarStandardsInfoEO.setModifyTime(new Date()); + // 根据其他字段,生成标准状态 +// updateStandState(sarStandardsInfoEO,beforeSarStandardsInfo.getStandState()); + int result = dao.updateById(sarStandardsInfoEO); + //先删除标准关联表,然后插入数据 + sarStandValEODao.deleteDataByStandid(standId); +// //删除文件详情表数据 +// sarStandFileEODao.deleteByStandId(standId); + SarStandFile sarStandFileEO = new SarStandFile(); + sarStandFileEO.setStandId(sarStandardsInfoEO.getId()); + Map map = (Map) JSONObject.fromObject(sarStandardsInfoEO.getSarStandAttrEOStr()); + sarStandFileEO.setIdList(null); + List listFile = sarStandFileEODao.selectFileByStandIdAndId(sarStandFileEO); + if (listFile != null) { + if (!listFile.isEmpty()) { + for (int f = 0; f < listFile.size(); f++) { + //删除文件信息表数据 +// sarFileInfoEODao.deleteByfileId(listFile.get(f).getId()); + //删除转换表ot_convert数据 + otConvertEODao.deleteByAttId(listFile.get(f).getAttId()); + } + } + } + sarStandPutTimeEODao.deleteByStandId(standId); + // 修改属性表数据 + sarStandAttrInfoEODao.deleteStandAttrByStandId(standId); + createStandAttrInfo(sarStandardsInfoEO,true); + /** + * 编辑体系目录 当代替的标准号在我的收藏中时,此条标准也需要在我的收藏中 + */ + //当代替标准号在我的收藏中时此标准也关联到我的收藏中 + associatedCollection(sarStandardsInfoEO); + + + if (StringUtils.isNotEmpty(sarStandardsInfoEO.getMenuIds())) { + for (String menuId : sarStandardsInfoEO.getMenuIds().split(",")) { + SarStandardsInfoEOPage standardsInfoEO = new SarStandardsInfoEOPage(); + standardsInfoEO.setMenuId(menuId); + standardsInfoEO.setIdlist(new String[]{sarStandardsInfoEO.getId()}); + try { + updateStandardsMenu(standardsInfoEO); + } catch (NullPointerException e) { + logger.error(e.getMessage(),e); + } + } + } + + + //编写预警信息 +// writeWarnings(sarStandardsInfoEO); + //修改标准过程中,重新修改代替标准号对应的标准的被代替标准号 +// updateReplacedNumber(sarStandardsInfoEO,beforeSarStandardsInfo); + // 根据引用标准修改其他被引用标准 + updateCiteStand(sarStandardsInfoEO, null, "YYBJ", "BYYBJ"); + /** + * 新增代替标准号修改其他被代替标准号 + */ + updateCiteStand(sarStandardsInfoEO, beforeSarStandardsInfo, "DTBZH", "BDTBZH"); + updateCiteStand(sarStandardsInfoEO, null, "BFDTBZ", "BBFDTBZ"); + // 根据对应其他标准修改其他对应其他标准 +// updateRelateStand(sarStandardsInfoEO, "CBBH"); + // 根据代替标准号修改被代替的标准的状态 修改为已修订状态 +// replaseStandState(sarStandardsInfoEO); + // 记录修改日志 + saveUpdateLog(sarStandardsInfoEO, beforeSarStandardsInfo); + filterNewFeed(sarStandardsInfoEO, beforeSarStandardsInfo); + if (elasflag) { //what? + attrInfoShowSearchDetails(sarStandardsInfoEO, "upd"); + FindSarItemsPageReqDTO pageInfo = new FindSarItemsPageReqDTO(); + pageInfo.setStandId(sarStandardsInfoEO.getId()); + pageInfo.setFileType("FBGBJBD"); + + /** + * SarItemVO换为SarItemVOS + * List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + * .collect(Collectors.toMap(SarItemVO::getItemsNum, SarItemVO::getItemsName)); + */ + List sarItemVOS = standItemsDao.querySarItemAndInterpretation(pageInfo); + if (!sarItemVOS.isEmpty()) { + Map collectMap = sarItemVOS.stream().filter((e) -> e.getItemsNum() != null && e.getItemsName() != null) + .collect(Collectors.toMap(SarStandItems::getItemsNum, SarStandItems::getTermsConditions)); + sarStandardsInfoEO.setMapItems(collectMap); + } + createStandMQService.sendStandMQ(sarStandardsInfoEO, "update"); + } + return result; + } + + public void filterNewFeed(SarStandardsInfo sarStandardsInfoEO, SarStandardsInfo beforeSarStandardsInfo) throws Exception { + Map newMap = new HashMap<>(); + Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); + String attrStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + if (StringUtils.isNotBlank(attrStr)) { + newMap = JSONObject.fromObject(attrStr); + } + + // 发布稿 + List fbgNew = new ArrayList<>(); + if(newMap!=null && newMap.containsKey("FBGBJBD")){ + String fbgbjbd = String.valueOf(newMap.getOrDefault("FBGBJBD", "")); + if(StringUtils.isNotBlank(fbgbjbd)){ + fbgNew = Arrays.stream(fbgbjbd.split(",")) + .map(String::trim).collect(Collectors.toList()); + } + } + + List fbgOld = new ArrayList<>(); + if(oldMap!=null && oldMap.containsKey("FBGBJBD")){ + String fbgbjbd = String.valueOf(oldMap.getOrDefault("FBGBJBD", "")); + if(StringUtils.isNotBlank(fbgbjbd)){ + fbgOld = Arrays.stream(fbgbjbd.split(",")) + .map(String::trim).collect(Collectors.toList()); + } + } + + // 取差集 判断是否有新的发布稿 + List finalFbgOld = fbgOld; + List filterDisunityFbg = fbgNew.stream() + .filter(item -> !new ArrayList<>(finalFbgOld) + .contains(item)) + .collect(Collectors.toList()); + + filterDisunityFbg = filterDisunityFbg.stream().filter(s -> !s.equals("")).collect(Collectors.toList()); + // 在研稿件 + String strUsNew = verifyObj(newMap.getOrDefault("CA", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("GLWJ", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("XGD", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("BPG", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("ZQYJG", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("SSG", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("JDWJ", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("KWJ", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("XDB", "")).toString()+ + ","+ verifyObj(newMap.getOrDefault("ZBJBD", "")).toString(); + String strUsOld = verifyObj(oldMap.getOrDefault("CA", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("GLWJ", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("XGD", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("BPG", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("ZQYJG", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("SSG", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("JDWJ", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("KWJ", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("XDB", "")).toString()+ + ","+ verifyObj(oldMap.getOrDefault("ZBJBD", "")).toString(); + List usNew = Arrays.stream(strUsNew.split(",")) + .map(String::trim).collect(Collectors.toList()); + List usOld = Arrays.stream(strUsOld.split(",")) + .map(String::trim).collect(Collectors.toList()); + // 取差集 判断是否有新的在研稿件 + List filterDisunityUs = usNew.stream() + .filter(item -> !new ArrayList<>(usOld) + .contains(item)) + .collect(Collectors.toList()); + + filterDisunityUs = filterDisunityUs.stream().filter(s -> !s.equals("")).collect(Collectors.toList()); + + + // 0 发布稿件 新的文件数量 大于等于 在研稿件 就属于发布动态消息 则 为 1 在研 + if(filterDisunityFbg.size() >= filterDisunityUs.size()){ + saveNewFeed(sarStandardsInfoEO, "0"); + }else { + saveNewFeed(sarStandardsInfoEO, "1"); + } + + + + } + + private void saveNewFeed(SarStandardsInfo sarStandardsInfoEO, String s) { + NewsFeed newsFeed = new NewsFeed(); + newsFeed.setId(UUIDUtils.randomUUID20()); + newsFeed.setRenewTime(new Date()); + newsFeed.setStandardId(sarStandardsInfoEO.getId()); + newsFeed.setResourceType(verifyObj(sarStandardsInfoEO.getStandType()).toString()); + newsFeed.setMessageType(s); + String standard = ""; + if(StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())){ + standard = verifyObj(sarStandardsInfoEO.getStandSort()).toString() +" "+ verifyObj(sarStandardsInfoEO.getStandNumber()).toString()+"-"+verifyObj(sarStandardsInfoEO.getStandYear()).toString(); + }else { + standard = verifyObj(sarStandardsInfoEO.getStandSort()).toString() +" "+ verifyObj(sarStandardsInfoEO.getStandNumber()).toString(); + } + newsFeed.setStandard(standard); + newsFeed.setStandardName(verifyObj(sarStandardsInfoEO.getStandName()).toString()); + newsFeed.setReleaseDate(verifyObj(sarStandardsInfoEO.getIssueTime()).toString()); + newsFeed.setTextState(verifyObj(sarStandardsInfoEO.getTextStatus()).toString()); + iNewsFeedService.insertNewsFeed(newsFeed); + } + + public void saveUpdateLog(SarStandardsInfo sarStandardsInfoEO, SarStandardsInfo beforeSarStandardsInfo) throws Exception { + Map newMap = new HashMap<>(); + Map oldMap = beforeSarStandardsInfo.getAttrInfoMap(); + String attrStr = sarStandardsInfoEO.getSarStandAttrEOStr(); + if (StringUtils.isNotBlank(attrStr)) { + newMap = JSONObject.fromObject(attrStr); + } + //更新日志bug修复 + Map map = new HashMap<>(); + map.put("1", "是"); + map.put("2", "否"); + sarStandardsInfoEO.setIsRelateAccess(map.get(sarStandardsInfoEO.getIsRelateAccess())); + beforeSarStandardsInfo.setIsRelateAccess(map.get(beforeSarStandardsInfo.getIsRelateAccess())); + + newMap = changeMap(sarStandardsInfoEO, newMap); + oldMap = changeMap(beforeSarStandardsInfo, oldMap); + // 增加关联事件 + String number = sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber(); + if (StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) { + number += "-" + sarStandardsInfoEO.getStandYear(); + } + String content = number + " 《" + sarStandardsInfoEO.getStandName() + "》"; + sarUpdLogEOService.createUpdateLog(sarStandardsInfoEO.getStandType() + "_STAND", sarStandardsInfoEO.getId(), oldMap, newMap, content); + } + + public Map changeMap(SarStandardsInfo sarStandardsInfoEO, Map map) { +// map.put("country", sarStandardsInfoEO.getCountry()); + if (map == null) { + map = new TreeMap(); + } + map.put("standSystem", verifyObj(sarStandardsInfoEO.getStandSystem())); + map.put("isRelateAccess", verifyObj(sarStandardsInfoEO.getIsRelateAccess())); + map.put("standSort", verifyObj(sarStandardsInfoEO.getStandSort())); + map.put("standNumber", verifyObj(sarStandardsInfoEO.getStandNumber())); + map.put("standYear", verifyObj(sarStandardsInfoEO.getStandYear())); + map.put("standName", verifyObj(sarStandardsInfoEO.getStandName())); + map.put("standEnName", verifyObj(sarStandardsInfoEO.getStandEnName())); + map.put("standNature", verifyObj(sarStandardsInfoEO.getStandNature())); + map.put("standState", verifyObj(sarStandardsInfoEO.getStandState())); + map.put("textStatus", verifyObj(sarStandardsInfoEO.getTextStatus())); +// if (sarStandardsInfoEO.getIssueTime() != null) { +// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); +// String issueStr = format.format(sarStandardsInfoEO.getIssueTime()); +// +// } + map.put("issueTime", verifyObj(sarStandardsInfoEO.getIssueTime())); + map.put("synopsis", verifyObj(sarStandardsInfoEO.getSynopsis())); + return map; + } + + private Object verifyObj(Object str) { + return str == null ? "" : str; + } + + + @Autowired + SarLawsAttrDetailedListServiceImpl detailedListService; + + public int deleteSarStandards(String ids) { + QueryWrapper detailedListQueryWrapper = new QueryWrapper<>(); + + + String[] idArr = ids.split(","); + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); + sarStandardsInfoEO.setValidFlag("1"); + sarStandardsInfoEO.setModifyTime(new Date()); + int countResult = 0; + //如果清单下挂着标准A,在标准库里删除标准A的话,加个验证 不让删这个标准 + for (String id : idArr) { + detailedListQueryWrapper.eq("stand_id", id); + + int count = detailedListService.count(detailedListQueryWrapper); + if (count > 0) { + countResult = -1; + return countResult; + } + + } + + for (String id : idArr) { + + countResult++; + //查询删除的标准信息(为删除代替关系) + SarStandardsInfo getDelStandInfoList = dao.selectById(id); + //删除标准与菜单关联数据 + sarStandMenuEODao.deleteByStandId(id); + //删除标准表 + sarStandardsInfoEO.setId(id); + dao.updateById(sarStandardsInfoEO); + // 删除标准属性表 + sarStandAttrInfoEODao.deleteStandAttrByStandId(id); + // 删除标准下条款 + sarStandItemsEODao.deleteByStandIdAndFileType(id, null); + //删除标准关联的value表 + sarStandValEODao.deleteDataByStandid(id); + sarStandPutTimeEODao.deleteByStandId(id); + //删除文件详情表数据 + sarStandFileEODao.deleteByStandId(id); + //删除代替关系 + List listFile = sarStandFileEODao.selectFileByStandId(id); + if (listFile != null) { + if (!listFile.isEmpty()) { + for (int f = 0; f < listFile.size(); f++) { + //删除文件信息表数据 +// sarFileInfoEODao.deleteByfileId(listFile.get(f).getId()); + //删除转换表ot_convert数据 + otConvertEODao.deleteByAttId(listFile.get(f).getAttId()); + } + } + } + updateStandReplaceConnect(getDelStandInfoList); + //删除收藏表中数据 + personCollectEODao.deleteByResId(id); + // 删除分享表中数据 + personShareEODao.deleteByResId(id); + if (elasflag) { + //删除成功后,将索引中对应数据删除 + StandLawsEO standLawsEO = new StandLawsEO(); + standLawsEO.setId(sarStandardsInfoEO.getId()); + standLawsEO.setType("stand"); + standLawsSearchService.deleteStandLawsSearch(standLawsEO); + } + } + return countResult; + } + + /** + * 删除标准同时删除代替关系 + * + * @param getDelStandInfo + */ + public void updateStandReplaceConnect(SarStandardsInfo getDelStandInfo) { + if (getDelStandInfo != null) { + //查询该条标准代替过的标准 + SarStandardsInfoEOPage sarStandardsInfoEOPage = new SarStandardsInfoEOPage(); + String standNum = ""; + if (StringUtils.isNotEmpty(getDelStandInfo.getStandYear())) { + standNum = getDelStandInfo.getStandSort() + " " + getDelStandInfo.getStandNumber() + "-" + getDelStandInfo.getStandYear(); + } else { + standNum = getDelStandInfo.getStandSort() + " " + getDelStandInfo.getStandNumber(); + } + sarStandardsInfoEOPage.setReplacedStandNum(standNum); + List getReplacedStands = dao.getSarStandardsInfoPage(sarStandardsInfoEOPage, "0"); + if (getReplacedStands != null && !getReplacedStands.isEmpty()) { + for (SarStandardsInfo stand : getReplacedStands) { + SarStandardsInfo newStand = new SarStandardsInfo(); + newStand.setId(stand.getId()); + String replacedNum = stand.getReplacedStandNum(); + List numList = Arrays.asList(replacedNum.split(",")); + if (numList.contains(standNum)) { + //被代替标准号都已逗号分隔存在一个字段里,如果存在字符串中间,后面会有一个逗号, + // 存在字符串末尾则没有逗号 + if (numList.contains(standNum + ",")) { + newStand.setReplacedStandNum(stand.getReplacedStandNum().replaceAll(standNum + ",", "")); + dao.updateById(newStand); + } else { + if (numList.contains("," + standNum)) { + newStand.setReplacedStandNum(stand.getReplacedStandNum().replace("," + standNum, "")); + } else { + newStand.setReplacedStandNum(stand.getReplacedStandNum().replace(standNum, "")); + } + dao.updateById(newStand); + } + } + } + } + } + } + + /*** + * @Description: 查询导出数据 + * @Author: yangxuenan + * @Date: 2020/9/15 10:58 + * @Param: [exportType, exportContent] + * @Return: java.util.List + */ + public List getExportDatas(StandardsInfoExcelVO standardsInfoExcelVO) throws Exception { + SarStandardsInfoEOPage page = new SarStandardsInfoEOPage(); + BeanUtils.copyProperties(standardsInfoExcelVO, page); + if ("apart".equals(standardsInfoExcelVO.getExportType())) { + page.setIdlist(standardsInfoExcelVO.getExportContent().split(",")); + } else { + JSONObject jsonObject = JSONObject.fromObject(standardsInfoExcelVO.getExportContent()); + page = (SarStandardsInfoEOPage) JSONObject.toBean(jsonObject, SarStandardsInfoEOPage.class); + page.setStandType(standardsInfoExcelVO.getStandType()); + //查询当前登录人角色拥有权限的菜单 + if (page.getMenuId() != null && page.getUserId() != null && StringUtils.isNotBlank(page.getUserId())) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("ID", page.getMenuId()); + qw.isNull("PARENT_ID"); + List children = iTsResourceService.list(qw); + if (children.isEmpty() && !page.getMenuId().equals("nomenu")) { +// List getMenuIdList = tsUserService.getResourceUserId(page.getUserId()); +// if (getMenuIdList != null && !getMenuIdList.isEmpty()) { +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + List ids = iTsResourceService.getChildMenuList(page.getMenuId()); + if (ids != null && !ids.isEmpty()) { + page.setMenuAllChildrenIdList(ids); + } + } + } + if (org.apache.commons.lang.StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { + List searchList = com.alibaba.fastjson.JSONObject.parseArray(page.getAdvanceSearchVOStr(), SarAdvanceSearchVO.class); + //不改传参强行置换 +// searchList.forEach(sarAdvanceSearchVO -> { +// if ("TXLB".equals(sarAdvanceSearchVO.getField())){ +// sarAdvanceSearchVO.setField("STAND_SYSTEM"); +// } +// }); + String advanceStr = SarAdvanceSearchUtil.createStandSql(searchList, "sar_stand_attr_info"); + if (StringUtils.isNotBlank(advanceStr)) { + page.setAdvanceSearchStr(advanceStr); + } else { + page.setAdvanceSearchStr(null); + } + } + } + if (standardsInfoExcelVO.getUserId() != null) { + page.setUserId(standardsInfoExcelVO.getUserId()); + } else { + page.setUserId(LoginUserUtil.getUserId()); + } + if (null != page.getNowOrderBy()) { + nowOrderFunc(page); + } + List getList = dao.getSarStandardsExportInfo(page); + + attrInfoShowExport(getList); + return getList; + } + + private void nowOrderFunc(SarStandardsInfoEOPage page) { + switch (page.getNowOrderBy()) { + case 1: + page.setOrderByA("ISSUE_TIME");//发布日期 + break; + case 2: + page.setOrderByA("ZCCSSRQ");//新车型实施日期 + break; + case 3: + page.setOrderByA("XCXSSRQ");//在产车实施日期 + break; + case 4: + page.setOrderByA("text_status");//文本状态 + break; + case 5: + page.setOrderByA("paixu"); + break; + case 6: + page.setOrderByA("SSRQ"); + break; + default: + page.setNowOrder(null); + break; + } + if (null != page.getNowOrder()) { + switch (page.getNowOrder()) { + case 1: + page.setOrder1("desc"); + break; + case 2: + page.setOrder1("asc"); + break; + default: + page.setOrder1(null); + break; + } + } + } + + public ResponseMessage importSarStandardsInfoData(List> dataList, String standType, String menuId, String filepath) { +//此处需要做各种验证,数据库操作 + try { + //验证导入数据是否符合规则 + Map map = validateImportDatas(dataList, standType, filepath); + boolean isOk = (boolean) map.get("result"); + if (!isOk) { + //验证没有通过 + String message = (String) map.get("message"); + return Result.error("fail", message); + } + + //将导入数据循环新增至相应表 + List list = (List) map.get("resultList"); + int countSuccess = 0; + for (SarStandardsInfo sarStandardsInfoEO : list) { + sarStandardsInfoEO.setStandType(standType); + sarStandardsInfoEO.setMenuId(menuId); + createSarStandardsInfo(sarStandardsInfoEO); + countSuccess++; + } + String msg = "成功导入" + countSuccess + "条"; + return Result.success("0", msg, null); + } catch (Exception e) { + logger.error(e.getMessage(), e); + return Result.error("导入失败"); + } + } + + public Map validateImportDatas(List> dataList, String standType, String filepath) throws Exception { + //存放数据验证结果信息 + List stringMessage = new ArrayList<>(); + int i = 1; //记录行号 + List standnumberlist = new ArrayList<>(); // 记录验证过后的编码,用来判断是否有重复 + //循环验证数据 + List standList = new ArrayList<>(); + for (Map dataMap : dataList) { + i++; + int countError = 0; //记录失败数据数量 + String errorMsg = "

    第" + i + "行:

    "; + List baseFieldsList = Arrays.asList(FieldConvertUtil.exportBaseFieldNames.split(",")); + List attrFieldsList = Arrays.asList(FieldConvertUtil.exportAttrFieldNamesInland.split(",")); + if ("FOREIGN".equals(standType)) { + baseFieldsList = Arrays.asList(FieldConvertUtil.exportBaseFieldNamesForeign.split(",")); + attrFieldsList = Arrays.asList(FieldConvertUtil.exportAttrFieldNamesForeign.split(",")); + } + // 遍历map 找出基础表,属性表数据字段和对应值 + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); + List attrList = new ArrayList<>(); + String zrbmOrgNames = ""; + for (Map.Entry entry : dataMap.entrySet()) { + String name = entry.getKey(); + String value = entry.getValue(); + if ("责任部门".equals(name)) { + zrbmOrgNames = value; + } + if (baseFieldsList.contains(name)) { + SarStandImportDto.compareFieldAndName(name, value, sarStandardsInfoEO); + } else if (attrFieldsList.contains(name)) { + // 根据name查字段 + SarStandAttrDetails fieldEO = sarStandAttrDetailsEODao.selectFieldByName(name, standType + "_STAND"); + if (fieldEO != null) { + fieldEO.setAttrValue(value); + attrList.add(fieldEO); + } + } + } + sarStandardsInfoEO.setAttrInfoList(attrList); + // 验证基础表数据信息 + Map beseResultMap = validateBaseDatas(sarStandardsInfoEO, standType, errorMsg, countError, standnumberlist); + errorMsg = beseResultMap.get("errorMsg"); + countError = Integer.parseInt(beseResultMap.get("countError")); + Map attrResultMap = validateAttrDatas(sarStandardsInfoEO, standType, filepath, errorMsg, countError, zrbmOrgNames); + errorMsg = attrResultMap.get("errorMsg"); + countError = Integer.parseInt(attrResultMap.get("countError")); + if (countError > 0) { + stringMessage.add(errorMsg); + } + standList.add(sarStandardsInfoEO); + } + Map map = new HashMap(); + if (stringMessage.isEmpty()) { + map.put("result", true); + map.put("resultList", standList); + map.put("message", ""); + } else { + map.put("result", false); + String html = ""; + for (String message : stringMessage) { + html += message + "
    "; + } + map.put("message", html); + } + return map; + } + + public Map validateBaseDatas(SarStandardsInfo dto, String standType, String errorMsg, int countError, List standnumberlist) throws Exception { + Map map = new HashMap(); + // 验证国家及关联标准类别 + DicTypeEO dic = new DicTypeEO(); + List getDic = new ArrayList<>(); + boolean aorb = false; + //重要度 B 只有 编号 类别 名称 英文名称 标准年份 必填 + if (StringUtils.isNotEmpty(dto.getIsRelateAccess())) { + if ("A".equals(dto.getIsRelateAccess())) { + dto.setIsRelateAccess("1"); + aorb = true; + } else if ("B".equals(dto.getIsRelateAccess())) { + dto.setIsRelateAccess("0"); + } else { + errorMsg += "

    重要度只能为A/B;

    "; + countError++; + } + } else { + errorMsg += "

    重要度不能为空;

    "; + countError++; + } + + //编号必填 + if (StringUtils.isNotEmpty(dto.getStandNumber())) { + String str = getRightDate(dto.getStandNumber()); + dto.setStandNumber(str); + if (dto.getStandNumber().length() > 100) { + errorMsg += "

    标准编号不能超过100个字符;

    "; + countError++; + } + String regEx = "^[A-z0-9-.]*$"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(str); + if (!m.matches()) { + errorMsg += "

    标准编号只能输入字母 数字 . -;

    "; + countError++; + } + } else { + errorMsg += "

    标准编号不能为空;

    "; + countError++; + } + + //类别必填 + if (StringUtils.isNotEmpty(dto.getStandSort())) { + dic.setDicTypeName(dto.getStandSort()); + dic.setDicTypeCode("STANDCLASSIFY"); + getDic = dicTypeEODao.getDicTypeByDicTypeName(dic); + if (getDic.size() == 1) { + dto.setStandSort(getDic.get(0).getDicTypeCode()); + } else if (getDic.size() > 0) { + errorMsg += "

    标准类别不明确;

    "; + countError++; + } else { + errorMsg += "

    标准类别不存在;

    "; + countError++; + } + } else { + errorMsg += "

    标准类别不能为空;

    "; + countError++; + } + //年份必填 + if (StringUtils.isNotEmpty(dto.getStandYear())) { + String regEx = "^[0-9a-zA-Z]+$"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(dto.getStandYear()); + if (!m.matches() || dto.getStandYear().length() > 20) { + errorMsg += "

    标准年份只能输入20位以内的数字,字母;

    "; + countError++; + } + } else if (StringUtils.isEmpty(dto.getStandYear()) && "INLAND".equals(standType)) { + errorMsg += "

    标准年份不能为空;

    "; + countError++; + } + //中文名称 + if (StringUtils.isNotEmpty(dto.getStandName())) { + String str = getRightDate(dto.getStandName()); + dto.setStandName(str); + if (dto.getStandName().length() > 500) { + errorMsg += "

    中文名称不能超过500个字符;

    "; + countError++; + } + } else { + errorMsg += "

    中文名称不能为空;

    "; + countError++; + } + + //英文名称 + if (StringUtils.isNotEmpty(dto.getStandEnName())) { + String str = getRightDate(dto.getStandEnName()); + dto.setStandEnName(str); + if (dto.getStandEnName().length() > 1000) { + errorMsg += "

    英文名称不能超过1000个字符;

    "; + countError++; + } + Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); + Matcher m = p.matcher(str); + if (m.find()) { + errorMsg += "

    英文名称不能输入中文;

    "; + countError++; + } + } else { + errorMsg += "

    英文名称不能为空;

    "; + countError++; + } + + if (StringUtils.isNotEmpty(dto.getCountry())) { + if ("INLAND".equals(standType)) { + if (!"中国".equals(dto.getCountry())) { + errorMsg += "

    国内标准法规适用区域只能为中国;

    "; + countError++; + } + } + if (dto.getCountry().length() > 100) { + errorMsg += "

    适用区域不能超过100个字符;

    "; + countError++; + } else { + String countryName = dto.getCountry(); + dic.setDicTypeName(dto.getCountry()); + dic.setDicTypeCode("COUNTRY"); + getDic = dicTypeEODao.getDicTypeByDicTypeName(dic); + if (getDic.size() == 1) { + dto.setCountry(getDic.get(0).getDicTypeCode()); + // 在国家地区不为空的情况下去判断标准类别 + } else if (getDic.size() > 0) { + errorMsg += "

    适用区域不明确;

    "; + countError++; + } else { + errorMsg += "

    适用区域不存在;

    "; + countError++; + } + } + } + + + if (StringUtils.isNotEmpty(dto.getStandState())) { + dic.setDicTypeName(dto.getStandState()); + dic.setDicTypeCode("STANDSTATE"); + if (dto.getStandState().length() > 500) { + errorMsg += "

    标准状态不能超过500个字符;

    "; + countError++; + } else if (!"计划修订".equals(dto.getStandState())) { + errorMsg += "

    标准状态只能填写为计划修订;

    "; + countError++; + } else { + getDic = dicTypeEODao.getDicTypeByDicTypeName(dic); + if (getDic != null) { + if (getDic.size() == 1) { + dto.setStandState(getDic.get(0).getDicTypeCode()); + } else if (getDic.size() > 0) { + errorMsg += "

    标准状态不明确;

    "; + countError++; + } else { + errorMsg += "

    标准状态不存在;

    "; + countError++; + } + } else { + errorMsg += "

    标准状态不存在;

    "; + countError++; + } + } + } + if (StringUtils.isNotBlank(dto.getIssueTime())) { + if (!DateUtil.isValidDate(dto.getIssueTime()) && !"已发布".equals(dto.getIssueTime()) && !"TBD".equals(dto.getIssueTime())) { + errorMsg += "

    发布日期格式不正确;

    "; + countError++; + } + } else if ("1".equals(dto.getIsRelateAccess()) && StringUtils.isBlank(dto.getIssueTime())) { + if (aorb) { + errorMsg += "

    发布日期不能为空;

    "; + countError++; + } + } + if (StringUtils.isNotEmpty(dto.getSynopsis())) { + String str = getRightDate(dto.getSynopsis()); + dto.setSynopsis(str); + if (dto.getSynopsis().length() > 500) { + errorMsg += "

    文本说明不能超过500个字符;

    "; + countError++; + } + } + // 标准号唯一性验证 + if (StringUtils.isNotEmpty(dto.getStandNumber()) && StringUtils.isNotEmpty(dto.getStandYear()) && StringUtils.isNotEmpty(dto.getStandSort())) { + String standnumber = dto.getStandSort() + " " + dto.getStandNumber() + "-" + dto.getStandYear(); + String numberLen = standnumber + "-" + dto.getStandYear(); + if (numberLen.length() <= 1000) { + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); + sarStandardsInfoEO.setStandNumber(standnumber); + sarStandardsInfoEO.setStandType(standType); + List standlist = dao.selectStandardsByStandnumber(sarStandardsInfoEO); + if (standlist.size() > 0) { + errorMsg += standnumber + "

    标准号已存在;

    "; + countError++; + } else if (standnumberlist.contains(standnumber)) { + errorMsg += "

    导入数据存在标准号" + standnumber + "的重复数据;

    "; + countError++; + } else { + standnumberlist.add(standnumber); + } + } + } + map.put("errorMsg", errorMsg); + map.put("countError", String.valueOf(countError)); + return map; + } + + public Map validateAttrDatas(SarStandardsInfo dto, String standType, String filepath, String errorMsg, int countError, String zrbmOrgNames) throws Exception { + Map map = new HashMap(); + //根据重要度判断字段必填 + String isMustStr = "no"; + List isMustList = new ArrayList<>(); + if ("1".equals(dto.getIsRelateAccess())) { + if ("INLAND".equals(standType)) { + isMustStr = "GKDW,CYSD,CLLX,YQLX,XCXSSRQ,ZCCSSRQ,EOPSSRQ,FBJG,ZRBM,FGWHR,DTBJH,YYBJ,CBBH";//,DTBJH,YYBJ + } else if ("FOREIGN".equals(standType)) { + isMustStr = "CLLX,YQLX,XCXSSRQ,ZCCSSRQ,EOPSSRQ,ZRBM,FGWHR,DTBJH,DXBZ,YYBJ,CBBH"; + } + } else { + if ("INLAND".equals(standType)) { + isMustStr = "FGWHR";//,DTBJH,YYBJ + } + } + isMustList = Arrays.asList(isMustStr.split(",")); + Boolean putTimeState = false; + String putTimeFieldStr = "XCXSSRQ,ZCCSSRQ,EOPSSRQ"; + List putTimeFieldList = Arrays.asList(putTimeFieldStr.split(",")); + List attrList = dto.getAttrInfoList(); + if (attrList != null && !attrList.isEmpty()) { + if (StringUtils.isNotBlank(zrbmOrgNames)) { + zrbmOrgNames = sysInfoEOService.getOrgIdByName(zrbmOrgNames, null); + } + Map attrInfoMap = new HashMap<>(); + for (SarStandAttrDetails detailsEO : attrList) { + // 根据不同字段类型进行不同验证 + String attrType = detailsEO.getAttrType(); + String attrName = detailsEO.getAttrName(); + String attrValue = detailsEO.getAttrValue(); + String attrField = detailsEO.getAttrField(); + String selVal = detailsEO.getSelVal(); + Long attrLen = detailsEO.getAttrLen(); + // 判断是否为必填项 + if (isMustList.contains(attrField) && StringUtils.isEmpty(attrValue)) { + errorMsg += "

    " + attrName + "不能为空;

    "; + countError++; + } + if (StandAttrTypeEnum.INPUT_STR.getValue().equals(attrType)) { + if (StringUtils.isNotEmpty(attrValue)) { + String str = getRightDate(attrValue); + attrValue = str; + if (attrValue.length() > attrLen) { + errorMsg += "

    " + attrName + "不能超过" + attrLen + "个字符;

    "; + countError++; + } + } + if ("DTBJH".equals(attrField) || ",YYBJ".equals(attrField) || "BYYBJ".equals(attrField) || "CBBH".equals(attrField)) { + String regEx = "^[\\s0-9a-zA-Z/.-]*"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(attrValue); + if (!m.matches()) { + String name = ""; + switch (attrField) { + case "DTBJH": + name = "代替标准编号"; + break; + case "CBBH": + name = "对应其他标准"; + break; + case "YYBJ": + name = "引用标准"; + break; + case "BYYBJ": + name = "被引用标准"; + break; + default: + break; + } + errorMsg += "

    " + name + "只能为(字母、数字、.、-);

    "; + countError++; + } + } + attrInfoMap.put(attrField, attrValue); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + if (StringUtils.isNotEmpty(attrValue)) { + String str = getRightDate(attrValue); + attrValue = str; + if (attrValue.length() > attrLen) { + errorMsg += "

    " + attrName + "不能超过" + attrLen + "个字符;

    "; + countError++; + } + } + int value = Integer.parseInt(attrValue); + attrInfoMap.put(attrField, value); + } else if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + String saveCode = ""; + if (StringUtils.isNotEmpty(attrValue)) { + attrValue = attrValue.replace(",", ","); + String[] valueArr = attrValue.split(","); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) && valueArr.length > 1) { + errorMsg += "

    " + attrName + "单选字段只能输入一个选项;

    "; + countError++; + } else if (valueArr.length > 20) { + errorMsg += "

    " + attrName + "选项不能超过20个;

    "; + countError++; + } else if (attrValue.length() > attrLen) { + errorMsg += "

    " + attrName + "不能超过500个字符;

    "; + countError++; + } else { + Set set = new HashSet(); + if ("SVPPS".equals(attrField)) { + for (int e = 0; e < valueArr.length; e++) { + set.add(valueArr[e]); + String svppsId = sysInfoEOService.getSvppsIdByName(valueArr[e]); + if (StringUtils.isNotBlank(svppsId)) { + saveCode += svppsId + ','; + } else { + errorMsg += "

    " + attrName + valueArr[e] + "不存在;

    "; + countError++; + } + } + } else if (SelectionTypeEnum.GZZXX.getValue().equals(selVal)) { + for (int e = 0; e < valueArr.length; e++) { + set.add(valueArr[e]); + String id = sysInfoEOService.getGroupIdByNames(valueArr[e]); + if (StringUtils.isNotBlank(id)) { + saveCode += id + ','; + } else { + errorMsg += "

    " + attrName + valueArr[e] + "不存在;

    "; + countError++; + } + } + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + if ("FO".equals(attrField) && StringUtils.isBlank(zrbmOrgNames)) { + set.add(valueArr); + errorMsg += "

    FO不存在;

    "; + countError++; + } else { + for (int e = 0; e < valueArr.length; e++) { + set.add(valueArr[e]); + if (!"FO".equals(attrField)) { + zrbmOrgNames = ""; + } + String userId = sysInfoEOService.getUserIdByName(valueArr[e], zrbmOrgNames); + if (StringUtils.isNotBlank(userId)) { + saveCode += userId + ','; + } else { + errorMsg += "

    " + attrName + valueArr[e] + "不存在;

    "; + countError++; + } + } + } + } else if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + for (int e = 0; e < valueArr.length; e++) { + set.add(valueArr[e]); + String id = null; + if (attrName.equals("责任部门") || attrName.equals("相关部门")) { + id = sysInfoEOService.getOrgIdByName(valueArr[e], "DEPART"); + } else { + id = sysInfoEOService.getOrgIdByName(valueArr[e], null); + } + if (StringUtils.isNotBlank(id)) { + saveCode += id + ','; + } else { + errorMsg += "

    " + attrName + valueArr[e] + "不存在;

    "; + countError++; + } + } + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + for (int e = 0; e < valueArr.length; e++) { + set.add(valueArr[e]); + String id = sysInfoEOService.getRoleIdByName(valueArr[e]); + if (StringUtils.isNotBlank(id)) { + saveCode += id + ','; + } else { + errorMsg += "

    " + attrName + valueArr[e] + "不存在;

    "; + countError++; + } + } + } else { + for (int e = 0; e < valueArr.length; e++) { + set.add(valueArr[e]); + DicTypeEO dic = new DicTypeEO(); + List getDic = new ArrayList<>(); + dic.setDicTypeName(valueArr[e]); + dic.setDicTypeCode(selVal); + getDic = dicTypeEODao.getDicTypeByDicTypeName(dic); + if (getDic != null && getDic.size() > 0) { + saveCode += getDic.get(0).getDicTypeCode() + ','; + } else { + errorMsg += "

    " + attrName + valueArr[e] + "不存在;

    "; + countError++; + } + } + } + if (valueArr.length > set.size()) { + errorMsg += "

    " + attrName + "存在重复数据;

    "; + countError++; + } + if (!saveCode.equals("")) { + saveCode = saveCode.substring(0, saveCode.length() - 1); + } + } + } + attrInfoMap.put(attrField, saveCode); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + if (StringUtils.isNotBlank(attrValue)) { + String[] timeArr = attrValue.split(","); + if (timeArr.length > 1) { + errorMsg += "

    " + attrName + "只能输入一个日期;

    "; + countError++; + } else { + if (!DateUtil.isValidDate(attrValue)) { + errorMsg += "

    " + attrName + "格式不正确;

    "; + countError++; + } else { + attrInfoMap.put(attrField, attrValue); + } + } + } + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + if (StringUtils.isNotBlank(attrValue)) { + String[] timeArr = attrValue.split(","); + if (timeArr.length > 8) { + errorMsg += "

    " + attrName + "不能超过8个日期;

    "; + countError++; + } else { + if (putTimeFieldList.contains(attrField) && DateUtil.isValidDate(attrValue)) { + putTimeState = true; + } + if (!DateUtil.isValidDate(attrValue) && !"N/A".equals(attrValue) && !"TBD".equals(attrValue) && !"已实施".equals(attrValue)) { + errorMsg += "

    " + attrName + "格式不正确;

    "; + countError++; + } else { + attrInfoMap.put(attrField, attrValue); + } + } + } else { + if (putTimeFieldList.contains(attrField)) { + putTimeState = true; + } + } + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + String saveFiles = ""; + if (StringUtils.isNotEmpty(attrValue)) { + attrValue = attrValue.replace(",", ","); + String[] filelist = attrValue.split(","); + if (filelist != null && filelist.length > 8) { + errorMsg += "

    " + attrName + "不能超过8个

    "; + countError++; + } else { + for (int ind = 0; ind < filelist.length; ind++) { + String filename = filelist[ind]; + String resultMes = ExcelUtil.validatePattern(filename); + if (StringUtils.isNotEmpty(resultMes)) { + errorMsg += "

    " + attrName + resultMes + "

    "; + countError++; + continue; + } + List nowfilelist = FileUnZip.readFileByFilename(filepath, filename); + if (nowfilelist.size() <= 0) { + errorMsg += "

    压缩包中没有" + filename + "文件;

    "; + countError++; + } else { + // 判断文件大小是否超过200M + if (nowfilelist.get(0).length() > 200 * 1024 * 1024) { + errorMsg += "

    " + filename + "文件大小超过200M;

    "; + countError++; + continue; + } + AttFileVo fileid = attFileEOService.saveFileInfo(nowfilelist.get(0)); + saveFiles += fileid.getAttId() + ","; + } + } + if (saveFiles != "") { + saveFiles = saveFiles.substring(0, saveFiles.length() - 1); + } + } + } + attrInfoMap.put(attrField, saveFiles); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType)) { + if (StringUtils.isNotEmpty(attrValue)) { + String str = getRightDate(attrValue); + attrValue = str; + if (attrValue.length() > attrLen) { + errorMsg += "

    " + attrName + "不能超过" + attrLen + "个字符;

    "; + countError++; + } + } + attrInfoMap.put(attrField, attrValue); + } + } + //三个实施日期至少有一个日期格式 +// if (!putTimeState) { +// errorMsg += "实施日期必须有一项为日期格式;"; +// countError++; +// } + String attrStr = JSON.toJSONString(attrInfoMap, SerializerFeature.WriteMapNullValue); + dto.setSarStandAttrEOStr(attrStr); + } + map.put("errorMsg", errorMsg); + map.put("countError", String.valueOf(countError)); + return map; + } + + + public String getRightDate(String str) { + String strhours = str; + if (strhours.length() > 2) { + String strh = strhours.substring(strhours.length() - 2, strhours.length()); //截取 + if (strh.equals(".0")) { + strhours = strhours.substring(0, strhours.length() - 2); //截掉 + } + } + return strhours; + } + + + @Override + public List getStandInfoByList(String limit) { + +// //查询文本状态为即将实施的 +// QueryWrapper dictionaryWrapper = new QueryWrapper<>(); +// dictionaryWrapper.select("ID") +// .eq("DICTIONARY_NAME","文本状态"); +// List> dicMaps = tsDictionaryDao.selectMaps(dictionaryWrapper); +// +// +// QueryWrapper dicTypeWrapper = new QueryWrapper<>(); +// dicTypeWrapper.select("DIC_TYPE_CODE") +// .eq("DIC_ID",dicMaps.get(0).get("ID").toString()) +// .eq("DIC_TYPE_NAME","即将实施"); + +// List> typeMaps = tsDicTypeDao.selectMaps(dicTypeWrapper); + +// List standInfoList = dao.queryStandInfoByList(Integer.valueOf(limit), typeMaps.get(0).get("DIC_TYPE_CODE").toString()); + + List standInfoList = dao.queryStandInfoByList(Integer.valueOf(limit)); + return standInfoList; + } + + /** + * 新增过程中验证标准号 + * + * @param + * @return + * @author gaoyan + * date 2018-11-13 + */ + public List selectStandardsByStandnumber(SarStandardsInfoEOPage queryPage , String standType) { + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); + if(StringUtils.isNotBlank(queryPage.getStandSort())){ + sarStandardsInfoEO.setStandSort(queryPage.getStandSort()); + } + if(StringUtils.isNotBlank(queryPage.getStandNumber())){ + sarStandardsInfoEO.setStandNumber(queryPage.getStandNumber()); + } + if(StringUtils.isNotBlank(queryPage.getStandYear())){ + sarStandardsInfoEO.setStandYear(queryPage.getStandYear()); + } + if(StringUtils.isNotBlank(queryPage.getStandCode())){ + sarStandardsInfoEO.setStandCode(queryPage.getStandCode()); + } + if(StringUtils.isNotBlank(standType)){ + sarStandardsInfoEO.setStandType(standType); + } + return dao.selectStandardsByStandnumber(sarStandardsInfoEO); + } + + public SarStandardsInfo selectStandardsInfoByKey(String id) throws Exception { + //查询出详情信息 + List resultlist = dao.selectStandardsInfoByKey(id); + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); + if (resultlist.size() > 0) { + List sarStandardsInfoEOList = new ArrayList<>(); + sarStandardsInfoEOList.add(resultlist.get(0)); + attrInfoShowDetails(sarStandardsInfoEOList); + sarStandardsInfoEO = sarStandardsInfoEOList.get(0); + } + // 查询纳入清单的国家地区 + if (sarStandardsInfoEO != null) { + if (sarStandardsInfoEO.getStandSystem() != null) { + SarMenuStandard menu = sarMenuStandardService.selectMenuById(sarStandardsInfoEO.getStandSystem()); + if (menu != null) { + sarStandardsInfoEO.setStandSystemName(menu.getMenuName() == null ? "" : menu.getMenuName()); + } + } + String accessCountry = sarSarAccessEOService.getCountryByRes(sarStandardsInfoEO.getId(), sarStandardsInfoEO.getStandType() + "_STAND"); + sarStandardsInfoEO.setAccessCountry(accessCountry); + } + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("MENU_NAME",sarStandardsInfoEO.getStandSystem()); + wrapper.eq("DIC_ID","9m4qqqaansxmox5e82zm"); + wrapper.orderByDesc("length(PARENT_IDS)"); + List standards=iSarMenuStandardService.list(wrapper); + if (null!=standards && standards.size() == 1) { + List ids=new ArrayList<>(); + if (StringUtils.isNotBlank(standards.get(0).getParentIds())){ + if (standards.get(0).getParentIds().contains(",")){ + ids=new ArrayList<>(Arrays.asList(standards.get(0).getParentIds().split(","))); + }else { + ids.add(standards.get(0).getParentIds()); + } + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.in("id", ids); + List res = iSarMenuStandardService.list(wrapper1); + if (null!=res && res.size()>0){ + Map map=new HashMap<>(); + res.forEach(sarMenuStandard -> {map.put(sarMenuStandard.getId(),sarMenuStandard.getMenuName());}); + String result=""; + for (String s:ids) { + result +="/"+map.get(s); + } + sarStandardsInfoEO.setStandSystem(result.substring(1,result.length())); + } + } + } + + + return sarStandardsInfoEO; + } + + public SarStandardsInfo selectStandardsInfoUpdateByKey(String id) throws Exception { + //查询出详情信息 + List resultlist = dao.selectStandardsInfoByKey(id); + SarStandardsInfo sarStandardsInfoEO = new SarStandardsInfo(); + if (resultlist.size() > 0) { + List sarStandardsInfoEOList = new ArrayList<>(); + sarStandardsInfoEOList.add(resultlist.get(0)); + attrInfo(sarStandardsInfoEOList); + sarStandardsInfoEO = sarStandardsInfoEOList.get(0); + } + // 查询纳入清单的国家地区 + if (sarStandardsInfoEO != null) { + if (sarStandardsInfoEO.getStandSystem() != null) { + SarMenuStandard menu = sarMenuStandardService.selectMenuById(sarStandardsInfoEO.getStandSystem()); + if (menu != null) { + sarStandardsInfoEO.setStandSystemName(menu.getMenuName() == null ? "" : menu.getMenuName()); + } + } + String accessCountry = sarSarAccessEOService.getCountryByRes(sarStandardsInfoEO.getId(), sarStandardsInfoEO.getStandType() + "_STAND"); + sarStandardsInfoEO.setAccessCountry(accessCountry); + } + return sarStandardsInfoEO; + } + + public boolean updateStandardsMenu(SarStandardsInfoEOPage standardsInfoEO) { + SarStandMenu sarStandMenuEO = new SarStandMenu(); + String nowMenuId = standardsInfoEO.getMenuId(); + sarStandMenuEO.setMenuId(nowMenuId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + List menuOldIds = new ArrayList<>(); + for (int i = 0; i < standardsInfoEO.getIdlist().length; i++) { + sarStandMenuEO.setStandId(standardsInfoEO.getIdlist()[i]); + sarStandMenuEO.setId(null); + sarStandMenuEO.setValidFlag(0); + // 根据当前目录查询所在父节点 + String secondLevelId = ""; + List getMenuPIds = sarMenuEOService.getParentMenuId(nowMenuId); + if (getMenuPIds != null && getMenuPIds.size() > 1) { + int idSize = getMenuPIds.size(); + secondLevelId = getMenuPIds.get(idSize - 1); + } else { + secondLevelId = nowMenuId; + } + //查询标准是否已在 当前父节点中 + SarStandMenu standMenuEOQuery = new SarStandMenu(); + standMenuEOQuery.setMenuId(secondLevelId); + List menuIds = sarMenuEOService.getChildMenuList(secondLevelId); + standMenuEOQuery.setMenuIds(menuIds); + standMenuEOQuery.setStandId(standardsInfoEO.getIdlist()[i]); + List getInfo = sarStandMenuEODao.selectMenuByMenuParentId(standMenuEOQuery); + //删除节点与根节点的关联 + SarStandMenu sarStandMenuDel = new SarStandMenu(); + sarStandMenuDel.setStandId(standardsInfoEO.getIdlist()[i]); + sarStandMenuDel.setMenuId(standardsInfoEO.getRootMenuId()); + sarStandMenuEODao.deleteByStandIdAndMenuId(sarStandMenuDel); + //重新配置到相应节点 + queryWrapper.lambda().eq(SarStandMenu::getStandId, standardsInfoEO.getIdlist()[i]); + List oldList = sarStandMenuEODao.selectList(queryWrapper); + if (CollectionUtils.isNotEmpty(oldList)) { + menuOldIds = oldList.stream().map(SarStandMenu::getMenuId).collect(Collectors.toList()); + if (!menuOldIds.contains(nowMenuId)) { + sarStandMenuEO.setId(UUIDUtils.randomUUID20()); + int size = sarStandMenuEODao.insert(sarStandMenuEO); + } + } +// if (getInfo == null || getInfo.isEmpty()) { +// sarStandMenuEO.setId(UUIDUtils.randomUUID20()); +// int size = sarStandMenuEODao.insert(sarStandMenuEO); +//// if (size>0){ +//// return true; +//// } +// } else { +// sarStandMenuEO.setOldMenuId(secondLevelId); +// List menuOldIds = sarMenuEOService.getChildMenuList(secondLevelId); +// sarStandMenuEO.setMenuIds(menuOldIds); +// int size = sarStandMenuEODao.updateByStandIdAndMenuId(sarStandMenuEO); +//// if (size>0) { +//// return true; +//// } +// } + } + return true; + } + + public boolean updateStandInfo(SarStandardsInfoEOPage standardsInfoEO) { + String item = sarStandAttrInfoEODao.selectFieldValByStandId("GXHBQ", standardsInfoEO.getIdlist()[0]); + List list = new ArrayList<>(); + if (StringUtils.isNotBlank(item)) { + list = new ArrayList<>(Arrays.asList(item.split(","))); + } + list.add(standardsInfoEO.getMenuId()); + list = list.stream().distinct().collect(Collectors.toList()); + int size = sarStandAttrInfoEODao.updateStandInfo(standardsInfoEO.getIdlist()[0], "GXHBQ", org.apache.commons.lang.StringUtils.join(list, ",")); + return size > 0 ? true : false; + } + + public List selectRecommendStand(SarStandardsInfoEOPage pagenew) { + return dao.selectRecommendStand(pagenew); + } + + public List getStandAndItemsForAct(SarStandardsInfoEOPage page) throws Exception { + String queryList = page.getIds(); + List getQueryList = com.alibaba.fastjson.JSONObject.parseArray(queryList, StandProVO.class); + List standList = new ArrayList<>(); + if (getQueryList != null && !getQueryList.isEmpty()) { + for (StandProVO standProVO : getQueryList) { + String[] idArr = standProVO.getId().split(","); + getStandDetailsForAct(page, idArr, standProVO.getStandState(), standList); + } + } + return standList; + } + + @Override + public void insertIntoIndexForMap(Map attrInfoMap) { + Set keys = attrInfoMap.keySet(); + for (String key : keys) { + String value = String.valueOf(attrInfoMap.get(key)); + if (StringUtils.isNotBlank(value) && !"null".equals(value) && !"SVPPS".equals(key)) { + value = value.replace(" , ", ","); + value = value.replace(",", " , "); + attrInfoMap.put(key, value); + } + } + // 根据文件attid 读取文件内容 + if (StringUtils.isNotEmpty(String.valueOf(attrInfoMap.get("content")))) { + String[] attidlist = String.valueOf(attrInfoMap.get("content")).split(" , "); + StringBuilder content = new StringBuilder(""); + for (int i = 0; i < attidlist.length; i++) { + if (StringUtils.isNotEmpty(attidlist[i]) && !"null".equals(attidlist[i]) && (attidlist[i].contains("att_file") || attidlist[i].contains("ATT_FILE"))) { + AttFileEO attFileEO = attFileEOService.getFileInfo(attidlist[i].trim()); + if (null == attFileEO) { + continue; + } + String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); +// String readFilePath = "E:\\上汽企标流程总览.pdf"; + try { + File existsFile = new File(readFilePath); + if(existsFile.exists()){ + // 判断文件是docx还是PDF + if (null != attFileEO.getFileSuffix() && (attFileEO.getFileSuffix().equals("docx") || attFileEO.getFileSuffix().equals("doc") || attFileEO.getFileSuffix().equals("DOC") || attFileEO.getFileSuffix().equals("DOCX") || attFileEO.getFileSuffix().equals("ppt") || attFileEO.getFileSuffix().equals("pptx"))) { + if (attFileEO.getFileSuffix().equals("doc") || attFileEO.getFileSuffix().equals("docx") || attFileEO.getFileSuffix().equals("DOC") || attFileEO.getFileSuffix().equals("DOCX")) { + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(readFilePath))); + if (FileMagic.valueOf(bis) == FileMagic.OOXML) { + XWPFDocument doc = new XWPFDocument(bis); + XWPFWordExtractor extractor = new XWPFWordExtractor(doc); + String txt = extractor.getText(); + content.append(txt); + extractor.close(); + }else { + WordExtractor wordExtractor = new WordExtractor(bis); + String txt = wordExtractor.getText(); + content.append(txt); + wordExtractor.close(); + } + bis.close(); + } else { + OPCPackage opcPackage = XWPFDocument.openPackage(readFilePath); + XWPFWordExtractor extractor = new XWPFWordExtractor(opcPackage); + String txt = extractor.getText(); + content.append(txt); + opcPackage.close(); + } + } else { + PDDocument document = PDDocument.load(new File(readFilePath)); + document.getClass(); + if (!document.isEncrypted()) { + PDFTextStripperByArea stripper = new PDFTextStripperByArea(); + stripper.setSortByPosition(true); + PDFTextStripper tStripper = new PDFTextStripper(); + String pdfFileInText = tStripper.getText(document); + // String[] lines = pdfFileInText.split("\\r?\\n"); + content.append(pdfFileInText); + } + document.close(); + } + } + } catch (Exception e) { + logger.error("搜索中心新增数据读取文档内容时失败"); + logger.error(e.getMessage(), e); + } + attrInfoMap.put("content", content.toString()); + } + } + } else { + attrInfoMap.put("content", ""); + } + standLawsSearchService.addStandLawsSearchForMap(attrInfoMap); + } + + @Override + public void updateIntoIndexForMap(Map attrInfoMap) { + Set keys = attrInfoMap.keySet(); + for (String key : keys) { + String value = String.valueOf(attrInfoMap.get(key)); + if (com.adc.da.util.utils.StringUtils.isNotBlank(value) && !"null".equals(value) && !"SVPPS".equals(key) && !"content".equals(key)) { + value = value.replace(" , ", ","); + value = value.replace(",", " , "); + attrInfoMap.put(key, value); + } + } + // 根据文件attid 读取文件内容 + if (org.apache.commons.lang.StringUtils.isNotEmpty(String.valueOf(attrInfoMap.get("content")))) { + String[] attidlist = String.valueOf(attrInfoMap.get("content")).split(","); + StringBuilder content = new StringBuilder(""); + for (int i = 0; i < attidlist.length; i++) { + if (StringUtils.isNotEmpty(attidlist[i]) && !"null".equals(attidlist[i]) && (attidlist[i].contains("att_file") || attidlist[i].contains("ATT_FILE"))) { + AttFileEO attFileEO = attFileEOService.getFileInfo(attidlist[i].trim()); + if (null == attFileEO) { + continue; + } + String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); + try { + File existsFile = new File(readFilePath); + if(existsFile.exists()){ + // 判断文件是docx还是PDF + if (null != attFileEO.getFileSuffix() && (attFileEO.getFileSuffix().equals("docx") || attFileEO.getFileSuffix().equals("doc") || attFileEO.getFileSuffix().equals("DOC") || attFileEO.getFileSuffix().equals("DOCX") || attFileEO.getFileSuffix().equals("ppt") || attFileEO.getFileSuffix().equals("pptx"))) { + if (attFileEO.getFileSuffix().equals("doc") || attFileEO.getFileSuffix().equals("docx") || attFileEO.getFileSuffix().equals("DOC") || attFileEO.getFileSuffix().equals("DOCX")) { + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(readFilePath))); + if (FileMagic.valueOf(bis) == FileMagic.OOXML) { + XWPFDocument doc = new XWPFDocument(bis); + XWPFWordExtractor extractor = new XWPFWordExtractor(doc); + String txt = extractor.getText(); + content.append(txt); + extractor.close(); + }else { + WordExtractor wordExtractor = new WordExtractor(bis); + String txt = wordExtractor.getText(); + content.append(txt); + wordExtractor.close(); + } + bis.close(); + } else { + OPCPackage opcPackage = XWPFDocument.openPackage(readFilePath); + XWPFWordExtractor extractor = new XWPFWordExtractor(opcPackage); + String txt = extractor.getText(); + content.append(txt); + opcPackage.close(); + } + } else { + PDDocument document = PDDocument.load(new File(readFilePath)); + document.getClass(); + if (!document.isEncrypted()) { + PDFTextStripperByArea stripper = new PDFTextStripperByArea(); + stripper.setSortByPosition(true); + PDFTextStripper tStripper = new PDFTextStripper(); + String pdfFileInText = tStripper.getText(document); + // String[] lines = pdfFileInText.split("\\r?\\n"); + content.append(pdfFileInText); + } + document.close(); + } + } + } catch (Exception e) { + logger.error("搜索中心修改数据读取文档内容时失败"); + logger.error(e.getMessage(), e); + } + attrInfoMap.put("content", content.toString()); + } + } + } else { + attrInfoMap.put("content", ""); + } + standLawsSearchService.updateStandLawsSearchForMap(attrInfoMap); + } +// +// @Override +// public void insertIntoIndexForMap(Map attrInfoMap) { +// Set keys = attrInfoMap.keySet(); +// for (String key:keys) { +// String value = String.valueOf(attrInfoMap.get(key)); +// if (com.adc.da.util.utils.StringUtils.isNotBlank(value) && !"null".equals(value) && !"SVPPS".equals(key)){ +// value = value.replace(" , ",","); +// value = value.replace(","," , "); +// attrInfoMap.put(key,value); +// } +// } +// // 根据文件attid 读取文件内容 +// if (org.apache.commons.lang.StringUtils.isNotEmpty(String.valueOf(attrInfoMap.get("content")))) { +// String[] attidlist = String.valueOf(attrInfoMap.get("content")).split(" , "); +// StringBuilder content = new StringBuilder(""); +// for (int i = 0; i < attidlist.length; i++) { +// if(org.apache.commons.lang.StringUtils.isNotEmpty(attidlist[i]) ){ +// AttFileEO attFileEO = attFileEOService.getFileInfo(attidlist[i]); +// String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); +// try { +// // 判断文件是docx还是PDF +// if (null != attFileEO.getFileSuffix() && (attFileEO.getFileSuffix().equals("docx") || attFileEO.getFileSuffix().equals("doc") || attFileEO.getFileSuffix().equals("ppt") || attFileEO.getFileSuffix().equals("pptx"))) { +// if(attFileEO.getFileSuffix().equals("doc")){ +// FileInputStream fis = new FileInputStream(readFilePath); +// WordExtractor wordExtractor = new WordExtractor(fis); +// String txt = wordExtractor.getText(); +// content.append(txt); +// }else { +// OPCPackage opcPackage = XWPFDocument.openPackage(readFilePath); +// XWPFWordExtractor extractor = new XWPFWordExtractor(opcPackage); +// String txt = extractor.getText(); +// content.append(txt); +// } +// } else { +// PDDocument document = PDDocument.load(new File(readFilePath)); +// document.getClass(); +// if (!document.isEncrypted()) { +// PDFTextStripperByArea stripper = new PDFTextStripperByArea(); +// stripper.setSortByPosition(true); +// PDFTextStripper tStripper = new PDFTextStripper(); +// String pdfFileInText = tStripper.getText(document); +// // String[] lines = pdfFileInText.split("\\r?\\n"); +// content.append(pdfFileInText); +// } +// } +// } catch (Exception e) { +// logger.error("搜索中心新增数据读取文档内容时失败"); +// logger.error(e.getMessage(),e); +// } +// /*catch (IOException | OpenXML4JException | XmlException e) { +// logger.error(e.getMessage(),e); +// }*/ +// attrInfoMap.put("content",content.toString()); +// } +// } +// } +// else{ +// attrInfoMap.put("content",""); +// } +// standLawsSearchService.addStandLawsSearchForMap(attrInfoMap); +// } +// +// @Override +// public void updateIntoIndexForMap(Map attrInfoMap) { +// Set keys = attrInfoMap.keySet(); +// for (String key:keys) { +// String value = String.valueOf(attrInfoMap.get(key)); +// if (com.adc.da.util.utils.StringUtils.isNotBlank(value) && !"null".equals(value) && !"SVPPS".equals(key) && !"content".equals(key)){ +// value = value.replace(" , ",","); +// value = value.replace(","," , "); +// attrInfoMap.put(key,value); +// } +// } +// // 根据文件attid 读取文件内容 +// if (org.apache.commons.lang.StringUtils.isNotEmpty(String.valueOf(attrInfoMap.get("content")))) { +// String[] attidlist = String.valueOf(attrInfoMap.get("content")).split(" , "); +// StringBuilder content = new StringBuilder(""); +// for (int i = 0; i < attidlist.length; i++) { +// if(org.apache.commons.lang.StringUtils.isNotEmpty(attidlist[i]) && !"null".equals(attidlist[i])){ +// AttFileEO attFileEO = attFileEOService.getFileInfo(attidlist[i]); +// String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); +// try { +// // 判断文件是docx还是PDF +// if (attFileEO.getFileSuffix().equals("docx") || attFileEO.getFileSuffix().equals("doc")) { +// if(attFileEO.getFileSuffix().equals("doc")){ +// FileInputStream fis = new FileInputStream(readFilePath); +// WordExtractor wordExtractor = new WordExtractor(fis); +// String txt = wordExtractor.getText(); +// content.append(txt); +// }else { +// OPCPackage opcPackage = XWPFDocument.openPackage(readFilePath); +// XWPFWordExtractor extractor = new XWPFWordExtractor(opcPackage); +// String txt = extractor.getText(); +// content.append(txt); +// } +// } else if (attFileEO.getFileSuffix().equals("pdf")){ +// PDDocument document = PDDocument.load(new File(readFilePath)); +// document.getClass(); +// if (!document.isEncrypted()) { +// PDFTextStripperByArea stripper = new PDFTextStripperByArea(); +// stripper.setSortByPosition(true); +// PDFTextStripper tStripper = new PDFTextStripper(); +// String pdfFileInText = tStripper.getText(document); +// // String[] lines = pdfFileInText.split("\\r?\\n"); +// content.append(pdfFileInText); +// } +// } +// } catch (Exception e) { +// logger.error("搜索中心修改数据读取文档内容时失败"); +// logger.error(e.getMessage(),e); +// } +// attrInfoMap.put("content",content.toString()); +// } +// } +// } +// else{ +// attrInfoMap.put("content",""); +// } +// standLawsSearchService.updateStandLawsSearchForMap(attrInfoMap); +// } + + + public void getStandDetailsForAct(SarStandardsInfoEOPage page, String[] idArr, String standState, List standList) throws Exception { + page.setPageSize(100); + page.setIdlist(idArr); + List rows = getSarStandForAct(page); + SarLawsInfoEOPage lawsInfoEOPage = new SarLawsInfoEOPage(); + lawsInfoEOPage.setPageSize(100); + lawsInfoEOPage.setIdlist(idArr); + List lawsRows = sarLawsInfoEOService.getSarLawsForAct(lawsInfoEOPage); + if (rows != null && !rows.isEmpty()) { + for (SarStandardsInfo sarStandardsInfoEO : rows) { + ActSarItemsEO actSarItemsEO = new ActSarItemsEO(); + actSarItemsEO.setResId(sarStandardsInfoEO.getId()); + actSarItemsEO.setAttrInfoMap(sarStandardsInfoEO.getAttrInfoMap()); + if (StringUtils.isNotBlank(sarStandardsInfoEO.getStandYear())) { + actSarItemsEO.setResNum(sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber() + "-" + sarStandardsInfoEO.getStandYear()); + } else { + actSarItemsEO.setResNum(sarStandardsInfoEO.getStandSort() + " " + sarStandardsInfoEO.getStandNumber()); + } + actSarItemsEO.setResName(sarStandardsInfoEO.getStandName()); + String resType = sarStandardsInfoEO.getStandType() + "_STAND"; + actSarItemsEO.setResType(resType); + SarStandItemsEOPage standItemsEOPage = new SarStandItemsEOPage(); + standItemsEOPage.setStandId(sarStandardsInfoEO.getId()); + standItemsEOPage.setValidFlag("0"); + standItemsEOPage.setProductId(page.getProductId()); + standItemsEOPage.setProType(page.getProType()); + standItemsEOPage.setFileType(standState); + standItemsEOPage.setOrderBy("SAR_STAND_ITEMS.modify_time desc"); + List getItems = sarStandItemsEOService.queryItemsByList(standItemsEOPage, resType); + Map map = sarProductStandEODao.queryStandSarState(sarStandardsInfoEO.getId()); + if (Integer.valueOf(map.get("SAR_ID").toString()) > 0) { + actSarItemsEO.setSarState("1"); + if (getItems != null && getItems.size() > 0) { + for (ActSarItemsEO actSarItemsEO1 : getItems) { + actSarItemsEO1.setSarState("1"); + } + } + } else { + actSarItemsEO.setSarState("0"); + if (getItems != null && getItems.size() > 0) { + for (ActSarItemsEO actSarItemsEO1 : getItems) { + actSarItemsEO1.setSarState("0"); + } + } + } + actSarItemsEO.setItemsList(getItems); + if (StringUtils.isNotEmpty(page.getProductId())) { + List> sarProductStandEOS = sarProductStandEODao.queryStandSarStateNew(sarStandardsInfoEO.getId(), page.getProductId()); + if (sarProductStandEOS.size() > 0) { + if (sarProductStandEOS.get(0).get("RELATE_ACCESS_ID") != null) { + Map map1 = sarSarAccessInfoEODao.selectProTimeInfoByStandIdAndAccId(sarStandardsInfoEO.getId(), sarProductStandEOS.get(0).get("RELATE_ACCESS_ID").toString()); + if (map1 != null) { + actSarItemsEO.setNewPutText(map1.get("NEW_PUT_TEXT_TIME") != null ? map1.get("NEW_PUT_TEXT_TIME").toString().substring(0, 10) : ""); + actSarItemsEO.setProdPutText(map1.get("PROD_PUT_TEXT_TIME") != null ? map1.get("PROD_PUT_TEXT_TIME").toString().substring(0, 10) : ""); + actSarItemsEO.setAuthObj(map1.get("AUTH_OBJ_ID") != null ? map1.get("AUTH_OBJ_ID").toString() : ""); + actSarItemsEO.setAuthDelive(map1.get("AUTH_DELIVE") != null ? map1.get("AUTH_DELIVE").toString() : ""); + actSarItemsEO.setPerformInfo(map1.get("PERFORM_INFO") != null ? map1.get("PERFORM_INFO").toString() : ""); + } + } + } + } + standList.add(actSarItemsEO); + } + } + if (lawsRows != null && !lawsRows.isEmpty()) { + for (SarLawsInfo sarStandardsInfoEO : lawsRows) { + ActSarItemsEO actSarItemsEO = new ActSarItemsEO(); + actSarItemsEO.setResId(sarStandardsInfoEO.getId()); + actSarItemsEO.setAttrInfoMap(sarStandardsInfoEO.getAttrInfoMap()); + actSarItemsEO.setResNum(sarStandardsInfoEO.getLawsNumber()); + actSarItemsEO.setResName(sarStandardsInfoEO.getLawsName()); + String resType = sarStandardsInfoEO.getLawsType() + "_LAWS"; + actSarItemsEO.setResType(resType); + SarLawsItemsEOPage lawsItemsEOPage = new SarLawsItemsEOPage(); + lawsItemsEOPage.setLawsId(sarStandardsInfoEO.getId()); + lawsItemsEOPage.setValidFlag("0"); + lawsItemsEOPage.setProductId(page.getProductId()); + lawsItemsEOPage.setProType(page.getProType()); + lawsItemsEOPage.setFileType(standState); + lawsItemsEOPage.setOrderBy("SAR_LAWS_ITEMS.modify_time desc"); + List getItems = sarLawsItemsEOService.queryItemsByList(lawsItemsEOPage, resType); + actSarItemsEO.setItemsList(getItems); + Map map = sarProductStandEODao.queryStandSarState(sarStandardsInfoEO.getId()); + if (Integer.valueOf(map.get("SAR_ID").toString()) > 0) { + actSarItemsEO.setSarState("1"); + if (getItems != null && getItems.size() > 0) { + for (ActSarItemsEO actSarItemsEO1 : getItems) { + actSarItemsEO1.setSarState("1"); + } + } + } else { + actSarItemsEO.setSarState("0"); + if (getItems != null && getItems.size() > 0) { + for (ActSarItemsEO actSarItemsEO1 : getItems) { + actSarItemsEO1.setSarState("0"); + } + } + } + if (StringUtils.isNotEmpty(page.getProductId())) { + List> sarProductStandEOS = sarProductStandEODao.queryStandSarStateNew(sarStandardsInfoEO.getId(), page.getProductId()); + if (sarProductStandEOS.size() > 0) { + if (sarProductStandEOS.get(0).get("RELATE_ACCESS_ID") != null) { + Map map1 = sarSarAccessInfoEODao.selectProTimeInfoByStandIdAndAccId(sarStandardsInfoEO.getId(), sarProductStandEOS.get(0).get("RELATE_ACCESS_ID").toString()); + if (map1 != null) { + actSarItemsEO.setNewPutText(map1.get("NEW_PUT_TEXT_TIME") != null ? map1.get("NEW_PUT_TEXT_TIME").toString().substring(0, 10) : ""); + actSarItemsEO.setProdPutText(map1.get("PROD_PUT_TEXT_TIME") != null ? map1.get("PROD_PUT_TEXT_TIME").toString().substring(0, 10) : ""); + actSarItemsEO.setAuthObj(map1.get("AUTH_OBJ_ID") != null ? map1.get("AUTH_OBJ_ID").toString() : ""); + actSarItemsEO.setAuthDelive(map1.get("AUTH_DELIVE") != null ? map1.get("AUTH_DELIVE").toString() : ""); + actSarItemsEO.setPerformInfo(map1.get("PERFORM_INFO") != null ? map1.get("PERFORM_INFO").toString() : ""); + } + } + } + } + standList.add(actSarItemsEO); + } + } + } + + public List getSarStandForAct(SarStandardsInfoEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 +// List getMenuIdList = sarMenuEOService.queryRoleMenuIdList(page.getStandType()+"_STAND",null); +// if(getMenuIdList != null && !getMenuIdList.isEmpty()){ +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } + Integer rowCount = dao.getSarStandardsInfoCount(page); + page.getPager().setRowCount(rowCount); + List sarlist = dao.getSarStandardsInfoPage(page, "0"); + attrInfo(sarlist); + return sarlist; + } + + @Override + public void checkFileByEncrypt() { + /** + * 1、获取所有的原始文件 + * 2、判断文件头信息 + * 3、记录状态 + * 4、最后将所有涉及到的文件全部记录到文件中保存到本地 + */ + QueryWrapper standQueryWrapper = new QueryWrapper<>(); + standQueryWrapper.eq("VALID_FLAG","0"); + List sarStandardsInfos = dao.selectList(standQueryWrapper); + int checkStandNum = 0; + List outLogList = new ArrayList<>(); + if(sarStandardsInfos!=null && !sarStandardsInfos.isEmpty()){ + for (SarStandardsInfo data:sarStandardsInfos) { + logger.info("开始处理第 "+(checkStandNum++)+" 个标准: "+data.getId()+" "+data.getStandSort()+" "+data.getStandNumber()+"-"+data.getStandYear()); + QueryWrapper fileQueryWrapper = new QueryWrapper<>(); + fileQueryWrapper.eq("STAND_ID",data.getId()); + fileQueryWrapper.eq("USE_MODEL","SOURCE_FILE"); + fileQueryWrapper.eq("VALID_FLAG","0"); + List sarStandFiles = sarStandFileEODao.selectList(fileQueryWrapper); + if(sarStandFiles!=null && !sarStandFiles.isEmpty()){ + for(SarStandFile file : sarStandFiles){ + StringBuilder fileLog = new StringBuilder(); + String fileAttId = file.getAttId(); + if(org.apache.commons.lang.StringUtils.isNotBlank(fileAttId)){ + fileLog.append("标准 ").append(data.getStandSort()+" "+data.getStandNumber()+"-"+data.getStandYear()).append(" ").append(data.getId()); + fileLog.append(" 下的文件: ").append(file.getId()).append(" ").append(file.getFileName()); + //获取文件信息 + AttFileEO fileInfo = attFileEOService.getFileInfo(fileAttId); + String checkResult = encryptFileUtils.checkFileIsEncryFile(fileInfo); + logger.debug(checkResult); + switch (checkResult){ + case "NOFILE": + fileLog.append(" 检查结果为 不存在该数据 "); + break; + case "READERR": + fileLog.append(" 检查结果为 读取文件失败 "); + break; + case "READNO": + fileLog.append(" 检查结果为 读取文件为空 "); + break; + case "UNENCRYPT": + fileLog.setLength(0); + break; + case "ENCRYPT": + fileLog.append(" 检查结果为 文件加密 "); + break; + } + } + if(fileLog.length()>0){ + outLogList.add(fileLog.toString()); + } + } + } + } + } + if(!outLogList.isEmpty()){ + encryptFileUtils.writeTxt(outLogList); + } + logger.info("================================文件检查完毕=================================================="); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/controller/TreeController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/controller/TreeController.java new file mode 100644 index 00000000..d66960c4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/controller/TreeController.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.sarTree.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarRole.entity.TsRole; +import com.adc.da.slrs.sarTree.entity.SarModel; +import com.adc.da.slrs.sarTree.entity.SarVPPS; +import com.adc.da.slrs.sarTree.service.SarModelService; +import com.adc.da.slrs.sarTree.service.SarVPPSService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.Map; + +@RestController +@Api(tags = "|获取树列表|") +@RequestMapping("/api/sarVpps") +public class TreeController extends BaseController { + + @Autowired + private SarVPPSService sarVPPSService; + @Autowired + private SarModelService sarModelService; + + @ApiOperation("VPPS树列表") + @GetMapping("/tree/list1") + public ResponseMessage> getTreeList1(){ + List sarVpps = sarVPPSService.findTreeAll(); + return Result.success(sarVpps); + } + + @ApiOperation("模块结构单元树列表") + @GetMapping("/tree/list2") + public ResponseMessage> getTreeList2(){ + List sarVpps = sarModelService.findTreeAll(); + return Result.success(sarVpps); + } + +// @ApiOperation("根据角色名筛选角色") +// @GetMapping("/tree/node/list") +// public ResponseMessage> getTreeNodeList(String code){ +// Map map = sarVPPSService.findTreeAll(code); +// return Result.success(map); +// } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/dao/SarModelDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/dao/SarModelDao.java new file mode 100644 index 00000000..5eb54a3a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/dao/SarModelDao.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.sarTree.dao; + +import com.adc.da.slrs.sarTree.entity.SarModel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import java.util.List; + +public interface SarModelDao extends BaseMapper { + +// @Select("select id,pid,CONCAT(name,model) name,features from sar_model_tree where 1=1 and isnull(pid)") +// List findTreeAll(); +// @Select("select id,pid,CONCAT(name,model) name,features from sar_model_tree where 1=1 and pid = #{pid}") +// List selectList(@Param("pid") String pid); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/dao/SarVPPSDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/dao/SarVPPSDao.java new file mode 100644 index 00000000..92e7ff25 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/dao/SarVPPSDao.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.sarTree.dao; + +import com.adc.da.slrs.sarTree.entity.SarVPPS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import java.util.List; + +public interface SarVPPSDao extends BaseMapper { + + @Select("select id,pid,CONCAT(VPPS_CODE,CHINESE_NAME,ENGLISH_NAME) name,code from sar_vpps_tree where 1=1 and isnull(pid)") + List findTreeAll(); + @Select("select id,pid,CONCAT(VPPS_CODE,CHINESE_NAME,ENGLISH_NAME) name,code from sar_vpps_tree where 1=1 and pid = #{pid}") + List selectList(@Param("pid") String pid); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/entity/SarModel.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/entity/SarModel.java new file mode 100644 index 00000000..dab25cd9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/entity/SarModel.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.sarTree.entity; + +import com.adc.da.base.entity.BaseEntity; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Transient; + +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarModel对象", description="") +public class SarModel extends BaseEntity { + private static final long serialVersionUID = 1L; + + private String id; + + private String name; + + private String pid; + + private String model; + + private String features; + + private String delFlag; + + @Transient + private List children; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/entity/SarVPPS.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/entity/SarVPPS.java new file mode 100644 index 00000000..d50927e7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/entity/SarVPPS.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.sarTree.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.Transient; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarVPPS对象", description="") +@TableName(value = "sar_vpps_tree") +public class SarVPPS extends BaseEntity { + private static final long serialVersionUID = 1L; + + private String id; + + private String vppsCode; + + private String pid; + + private String code; + + private String chineseName; + + private String englishName; + + private String delFlag; + + @Transient + private List children; + + @Transient + private String name; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/SarModelService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/SarModelService.java new file mode 100644 index 00000000..8c02b113 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/SarModelService.java @@ -0,0 +1,11 @@ +package com.adc.da.slrs.sarTree.service; + +import com.adc.da.slrs.sarTree.entity.SarModel; +import com.adc.da.slrs.sarTree.entity.SarVPPS; + +import java.util.List; + +public interface SarModelService { + + List findTreeAll(); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/SarVPPSService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/SarVPPSService.java new file mode 100644 index 00000000..b9e4ac3f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/SarVPPSService.java @@ -0,0 +1,9 @@ +package com.adc.da.slrs.sarTree.service; + +import com.adc.da.slrs.sarTree.entity.SarVPPS; +import java.util.List; + +public interface SarVPPSService { + + List findTreeAll(); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/impl/SarModelServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/impl/SarModelServiceImpl.java new file mode 100644 index 00000000..586be308 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/impl/SarModelServiceImpl.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.sarTree.service.impl; + +import com.adc.da.slrs.sarTree.dao.SarModelDao; +import com.adc.da.slrs.sarTree.entity.SarModel; +import com.adc.da.slrs.sarTree.service.SarModelService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarModelServiceImpl implements SarModelService { + private static final Logger logger = LoggerFactory.getLogger(SarModelServiceImpl.class); + + @Autowired + private SarModelDao sarModelDao; + + @Override + public List findTreeAll() { + //查询父级都为null的数据 + QueryWrapper qw = new QueryWrapper<>(); + qw.isNull("pid"); + List sarVppsList = sarModelDao.selectList(qw); + for (SarModel sarVppsOne:sarVppsList) { + sarVppsOne.setChildren(getChildren(sarVppsOne)); + } + return sarVppsList; + } + + /** + * 递归调用获取子节点 + * @param parent:父节点 + * @return List + */ + private List getChildren(SarModel parent){ + String pid = parent.getId(); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("pid",parent.getId()); + List children=sarModelDao.selectList(qw); + for(SarModel sarVppsOne:children){ + sarVppsOne.setChildren(getChildren((sarVppsOne))); + } + return children; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/impl/SarVPPSServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/impl/SarVPPSServiceImpl.java new file mode 100644 index 00000000..d4ce1aba --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarTree/service/impl/SarVPPSServiceImpl.java @@ -0,0 +1,52 @@ +package com.adc.da.slrs.sarTree.service.impl; + +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarTree.dao.SarVPPSDao; +import com.adc.da.slrs.sarTree.entity.SarVPPS; +import com.adc.da.slrs.sarTree.service.SarVPPSService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarVPPSServiceImpl implements SarVPPSService { + private static final Logger logger = LoggerFactory.getLogger(SarVPPSServiceImpl.class); + + @Autowired + private SarVPPSDao sarVPPSDao; + + @Override + public List findTreeAll() { + //查询父级都为null的数据 + QueryWrapper qw = new QueryWrapper<>(); + qw.isNull("pid"); + List sarVppsList = sarVPPSDao.selectList(qw); + for (SarVPPS sarVppsOne:sarVppsList) { + sarVppsOne.setChildren(getChildren(sarVppsOne)); + } + return sarVppsList; + } + + /** + * 递归调用获取子节点 + * @param parent:父节点 + * @return List + */ + private List getChildren(SarVPPS parent){ + String pid = parent.getId(); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("pid",parent.getId()); + List children=sarVPPSDao.selectList(qw); + for(SarVPPS sarVppsOne:children){ + sarVppsOne.setChildren(getChildren((sarVppsOne))); + } + return children; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/controller/SarUpdLogController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/controller/SarUpdLogController.java new file mode 100644 index 00000000..c0d55b20 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/controller/SarUpdLogController.java @@ -0,0 +1,41 @@ +package com.adc.da.slrs.sarUpdLog.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarUpdLog.entity.SarUpdLogEOPage; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarUpdLog.entity.SarUpdLog; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-01 +*/ +@RestController +@Api(description = "|SarUpdLog|") +@RequestMapping("/${restPath}/lawss/sarUpdLog") +public class SarUpdLogController extends BaseController { + + @Autowired + private ISarUpdLogService iSarUpdLogService; + + @ApiOperation(value = "|SarUpdLogEO|查询") + @GetMapping("/getLogList") + public ResponseMessage> list(SarUpdLogEOPage page) throws Exception { + page.setOrderBy("SAR_UPD_LOG.creation_time desc,id"); + return Result.success(iSarUpdLogService.queryByList(page)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/dao/SarUpdLogDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/dao/SarUpdLogDao.java new file mode 100644 index 00000000..2243731c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/dao/SarUpdLogDao.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sarUpdLog.dao; + +import com.adc.da.slrs.sarUpdLog.entity.SarUpdLog; +import com.adc.da.slrs.sarUpdLog.entity.SarUpdLogEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface SarUpdLogDao extends BaseMapper { + + List queryByList(SarUpdLogEOPage page); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/entity/SarUpdLog.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/entity/SarUpdLog.java new file mode 100644 index 00000000..02a6cc82 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/entity/SarUpdLog.java @@ -0,0 +1,58 @@ +package com.adc.da.slrs.sarUpdLog.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarUpdLog对象", description="") +public class SarUpdLog extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private String id; + + @ApiModelProperty(value = "数据类型") + @TableField("SAR_TYPE") + private String sarType; + + @ApiModelProperty(value = "数据id") + @TableField("SAR_ID") + private String sarId; + + @ApiModelProperty(value = "更新内容") + @TableField("CONTENT") + private String content; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "创建用户名称") + @TableField(exist = false) + private String creationUserName; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/entity/SarUpdLogEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/entity/SarUpdLogEOPage.java new file mode 100644 index 00000000..0e42089c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/entity/SarUpdLogEOPage.java @@ -0,0 +1,122 @@ +package com.adc.da.slrs.sarUpdLog.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_UPD_LOG SarUpdLogEOPage
    + * 作者:code generator
    + * 日期: 2020-12-08
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarUpdLogEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String sarType; + private String sarTypeOperator = "="; + private String sarId; + private String sarIdOperator = "="; + private String content; + private String contentOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getSarType() { + return this.sarType; + } + + public void setSarType(String sarType) { + this.sarType = sarType; + } + + public String getSarTypeOperator() { + return this.sarTypeOperator; + } + + public void setSarTypeOperator(String sarTypeOperator) { + this.sarTypeOperator = sarTypeOperator; + } + + public String getSarId() { + return this.sarId; + } + + public void setSarId(String sarId) { + this.sarId = sarId; + } + + public String getSarIdOperator() { + return this.sarIdOperator; + } + + public void setSarIdOperator(String sarIdOperator) { + this.sarIdOperator = sarIdOperator; + } + + public String getContent() { + return this.content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getContentOperator() { + return this.contentOperator; + } + + public void setContentOperator(String contentOperator) { + this.contentOperator = contentOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/service/ISarUpdLogService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/service/ISarUpdLogService.java new file mode 100644 index 00000000..dfbc3391 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/service/ISarUpdLogService.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.sarUpdLog.service; + +import com.adc.da.slrs.sarUpdLog.entity.SarUpdLog; +import com.adc.da.slrs.sarUpdLog.entity.SarUpdLogEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +public interface ISarUpdLogService extends IService { + + List queryByList(SarUpdLogEOPage page); + + void createBaseLog(String sarId, String sarType, String content) throws Exception; + + void createBaseProcessLog(String sarId, String sarType, String content,String user) throws Exception; + + void createUpdateLog(String sarType, String sarId, Map oldMap, Map newMap, String standContent) throws Exception; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/service/impl/SarUpdLogServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/service/impl/SarUpdLogServiceImpl.java new file mode 100644 index 00000000..1b7da398 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUpdLog/service/impl/SarUpdLogServiceImpl.java @@ -0,0 +1,289 @@ +package com.adc.da.slrs.sarUpdLog.service.impl; + +import com.adc.da.common.SarTypeEnum; +import com.adc.da.slrs.sarStandAttrDetails.dao.SarStandAttrDetailsDao; +import com.adc.da.slrs.sarUpdLog.entity.SarUpdLog; +import com.adc.da.slrs.sarUpdLog.dao.SarUpdLogDao; +import com.adc.da.slrs.sarUpdLog.entity.SarUpdLogEOPage; +import com.adc.da.slrs.sarUpdLog.service.ISarUpdLogService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.adc.da.utils.util.DateUtil; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-01 + */ +@Service +public class SarUpdLogServiceImpl extends ServiceImpl implements ISarUpdLogService { + private static final Logger logger = LoggerFactory.getLogger(SarUpdLogServiceImpl.class); + + @Autowired + private SarUpdLogDao dao; + + public SarUpdLogDao getDao() { + return dao; + } + + @Autowired + private SarStandAttrDetailsDao sarStandAttrDetailsEODao; + + @Autowired + private SysInfoEOService sysInfoEOService; + + private String notCheckField = "XGLC,CHJL"; //不检测的是否修改字段 + + private List notCheckFieldList = Arrays.asList(notCheckField.split(",")); + + @Override + public List queryByList(SarUpdLogEOPage page){ + return dao.queryByList(page); + } + + public void createUpdateLog (String sarType, String sarId, Map oldMap, Map newMap,String standContent) throws Exception { + SarUpdLog sarUpdLogEO = new SarUpdLog(); + sarUpdLogEO.setId(UUIDUtils.randomUUID20()); + sarUpdLogEO.setSarId(sarId); + sarUpdLogEO.setSarType(sarType); + sarUpdLogEO.setCreationTime(new Date()); + sarUpdLogEO.setCreationUser(LoginUserUtil.getUserId()); + // 比对两个map组成content + String content = createStandContent(oldMap,newMap,sarType,standContent); + if (StringUtils.isNotBlank(content)) { + sarUpdLogEO.setContent(content); + dao.insert(sarUpdLogEO); + } + } + + public String createStandContent (Map oldMap, Map newMap,String sarType,String standContent) throws Exception{ + String content = ""; + StringBuilder contentBuider = new StringBuilder(); + for (Map.Entry entry : oldMap.entrySet()) { + String label = entry.getKey(); + String value = String.valueOf(entry.getValue()); + String newValue = String.valueOf(newMap.get(label)); + if (StringUtils.isNotBlank(newValue) && label.equals("EOPSSRQ") && newValue.length()>10) { + newValue = DateUtil.formatStrUTCToDateStr(newValue); + } + List allTimeField = new ArrayList<>(); + allTimeField.addAll(InitStandAttrUtil.timeFieldList); + allTimeField.addAll(InitStandAttrUtil.timeFieldListLaws); + allTimeField.addAll(InitStandAttrUtil.timeFieldListBuss); + if (allTimeField.contains(label)) { + if (StringUtils.isNotBlank(value) && value.length() > 10) { + value = value.substring(0,10); + } + if (StringUtils.isNotBlank(newValue) && newValue.length() > 10) { + newValue = newValue.substring(0,10); + } + } + boolean item3 = !("null".equals(value) && StringUtils.isBlank(newValue)); + boolean item4 = !("null".equals(newValue) && StringUtils.isBlank(value)); + if (!StringUtils.equals(value,newValue) && !notCheckFieldList.contains(label) && item3 && item4) { + String fieldName = ""; + if (SarTypeEnum.INLAND_STAND.getValue().equals(sarType) || SarTypeEnum.FOREIGN_STAND.getValue().equals(sarType)) { + fieldName = changeStandName(label,sarType); + } else if (SarTypeEnum.INLAND_LAWS.getValue().equals(sarType) || SarTypeEnum.FOREIGN_LAWS.getValue().equals(sarType)) { + fieldName = changeLawsName(label,sarType); + } else if (SarTypeEnum.BUSINESS.getValue().equals(sarType)) { + fieldName = changeBussName(label,sarType); + } + value = changeVal(label,value,sarType); + newValue = changeVal(label,newValue,sarType); + if ("null".equals(value) || StringUtils.isBlank(value)) { + value = ""; + } + if ("null".equals(newValue) || StringUtils.isBlank(newValue)) { + newValue = ""; + } + String con = "“" + fieldName + "”由“" + value + "”改为“" + newValue + "”;"; +// String con = "“" + fieldName + "”"; + if (StringUtils.isNotBlank(fieldName) && !"null".equals(fieldName)) { + contentBuider.append(con); + } + } + } + if (contentBuider != null && contentBuider.length() > 0) { + content += "修改" + standContent + ","; + } + content += contentBuider.toString(); + return content; + } + + public String changeVal (String field,String value,String sarType) { + if (StringUtils.isNotBlank(value)) { + Map selectFieldMap = new HashMap<>(); + String selVal = ""; + if (SarTypeEnum.INLAND_STAND.getValue().equals(sarType) || SarTypeEnum.FOREIGN_STAND.getValue().equals(sarType)) { + selectFieldMap = InitStandAttrUtil.selectFieldMap; + selectFieldMap.put("isRelateAccess","SHIFOUGL"); + selectFieldMap.put("country","COUNTRY"); + selectFieldMap.put("standSort","STANDCLASSIFY"); + selectFieldMap.put("standState","STANDSTATE"); + selectFieldMap.put("standNature","STANDNATURE"); + selectFieldMap.put("textStatus","TEXTSTATUS"); + } else if (SarTypeEnum.INLAND_LAWS.getValue().equals(sarType) || SarTypeEnum.FOREIGN_LAWS.getValue().equals(sarType)) { + selectFieldMap = InitStandAttrUtil.selectFieldMapLaws; + selectFieldMap.put("isRelateAccess","SHIFOUGL"); + selectFieldMap.put("country","COUNTRY"); + selectFieldMap.put("standSort","STANDCLASSIFY"); + selectFieldMap.put("standState","STANDSTATE"); + } else if (SarTypeEnum.BUSINESS.getValue().equals(sarType)) { + selectFieldMap = InitStandAttrUtil.selectFieldMapBuss; + selectFieldMap.put("standSort","BUSSSTANDCLASS"); + selectFieldMap.put("standState","STANDSTATE"); + } + selVal = selectFieldMap.get(field); + if (StringUtils.isNotBlank(selVal)) { + value = getSelectionValueName(selVal,value); + } else { + //变更字段是否是文件 + List fileList = new ArrayList<>(); + if (SarTypeEnum.INLAND_STAND.getValue().equals(sarType) || SarTypeEnum.FOREIGN_STAND.getValue().equals(sarType)) { + fileList = InitStandAttrUtil.fileFieldList; + } else if (SarTypeEnum.INLAND_LAWS.getValue().equals(sarType) || SarTypeEnum.FOREIGN_LAWS.getValue().equals(sarType)) { + fileList = InitStandAttrUtil.fileFieldListLaws; + } else if (SarTypeEnum.BUSINESS.getValue().equals(sarType)) { + fileList = InitStandAttrUtil.fileFieldListBuss; + } + if (fileList != null && fileList.contains(field)) { + value = sysInfoEOService.getFileNamesByIds(value); + } + } + } + return value; + } + + public String getSelectionValueName (String selVal,String value) { + switch (selVal) { + case "SVPPS": + value = sysInfoEOService.getSvppsNamesByIds(value); + return value; + case "GZZXX": + value = sysInfoEOService.getGroupNamesByIds(value); + return value; + case "USERLIST": + value = sysInfoEOService.getUserNamesByIds(value); + return value; + case "ORGLIST": + value = sysInfoEOService.getOrgNamesByIds(value); + return value; + case "ROLELIST": + value = sysInfoEOService.getRoleNamesByIds(value); + return value; + case "SHIFOUGL": + if ("1".equals(value)) { + value = "是"; + } else if ("0".equals(value)) { + value = "否"; + } + return value; + default: + String name = sysInfoEOService.getDicNamesByCodes(value,""); + if (StringUtils.isNotEmpty(name)){ + value = name; + } + return value; + } + } + + public String changeStandName (String field,String sarType) throws Exception{ + switch (field) { + case "textStatus":return "文本状态"; + case "country": return "适用区域"; + case "isRelateAccess": return "是否纳入认证清单"; + case "issueTime": return "发布日期"; + case "standYear": return "标准年份"; + case "standNature": return "标准性质"; + case "standEnName": return "英文名称"; + case "standName": return "中文名称"; + case "standNumber": return "标准编号"; + case "standSort": return "标准类别"; + case "standState": return "标准状态"; + case "synopsis": return "文本说明"; + default: + String name = sarStandAttrDetailsEODao.selectNameByField(field,sarType); + return name; + } + } + + public String changeLawsName (String field,String sarType) throws Exception{ + switch (field) { + case "lawsType": return "政策分类"; + case "lawsNumber": return "政策编号"; + case "lawsName": return "政策名称"; + case "lawsEnName": return "英文名称"; + case "standName": return "中文名称"; + case "lawsNo": return "政策文号"; + case "issueTime": return "发文日期"; + case "issueCompany": return "发文单位"; + case "lawsTextState": return "文本状态"; + case "lawsSyqy": return "适用区域"; + case "lawsSycx": return "适用车型"; + case "lawsYear": return "年度"; + case "lawsNotisyncNum": return "福田转发通知文号"; + case "lawsBulletin": return "信息简报"; + default: + String name = sarStandAttrDetailsEODao.selectNameByField(field,sarType); + return name; + } + } + + public String changeBussName (String field,String sarType) throws Exception{ + switch (field) { +// case "country": return "适用区域"; +// case "isRelateAccess": return "重要度"; + case "issueTime": return "发布日期"; + case "putTime": return "企标实施日期"; +// case "standYear": return "标准年份"; +// case "standNature": return "标准性质"; + case "standEnName": return "英文名称"; + case "standName": return "中文名称"; + case "standNumber": return "标准编号"; + case "standSort": return "企标类别"; + case "standState": return "标准状态"; + case "replaceStandNum": return "代替企标编号"; + case "replacedStandNum": return "被代替企标编号"; + default: + String name = sarStandAttrDetailsEODao.selectNameByField(field,"BUSS"); + return name; + } + } + + public void createBaseLog (String sarId,String sarType,String content) throws Exception { + SarUpdLog sarUpdLogEO = new SarUpdLog(); + sarUpdLogEO.setId(UUIDUtils.randomUUID20()); + sarUpdLogEO.setSarId(sarId); + sarUpdLogEO.setSarType(sarType); + sarUpdLogEO.setCreationTime(new Date()); + sarUpdLogEO.setCreationUser(LoginUserUtil.getUserId() == null ? "" : LoginUserUtil.getUserId()); + sarUpdLogEO.setContent(content); + dao.insert(sarUpdLogEO); + } + + public void createBaseProcessLog (String sarId,String sarType,String content,String user) throws Exception { + SarUpdLog sarUpdLogEO = new SarUpdLog(); + sarUpdLogEO.setId(UUIDUtils.randomUUID20()); + sarUpdLogEO.setSarId(sarId); + sarUpdLogEO.setSarType(sarType); + sarUpdLogEO.setCreationTime(new Date()); + sarUpdLogEO.setCreationUser(StringUtils.isNotBlank(user) ? user : (LoginUserUtil.getUserId() == null ? "" : LoginUserUtil.getUserId())); + sarUpdLogEO.setContent(content); + dao.insert(sarUpdLogEO); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/controller/TsUrlController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/controller/TsUrlController.java new file mode 100644 index 00000000..f4a48ad6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/controller/TsUrlController.java @@ -0,0 +1,196 @@ +package com.adc.da.slrs.sarUrl.controller; + + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarUrl.entity.OrderUrlVO; +import com.adc.da.slrs.sarUrl.entity.TsUrl; +import com.adc.da.slrs.sarUrl.service.ITsUrlService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.imageio.ImageIO; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.swing.*; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.Arrays; +import java.util.Base64; +import java.util.List; + +/** + * @Description: 第三方链接 + * @Author: jeecg-boot + * @Date: 2021-07-07 + * @Version: V1.0 + */ +@Api(tags="第三方链接") +@RestController +@RequestMapping("/api/sarUrl/tsUrl") +@Slf4j +public class TsUrlController{ + @Autowired + private ITsUrlService tsUrlService; + + @Autowired + private IAttFileEOService iAttFileEOService; + + @Value("${file.path}") + private String filePath; + + @GetMapping("getIconImg") + public String getIconImg(HttpServletRequest request, HttpServletResponse response){ + String url = ""; + String path = "api/att/attFile/upload"; + ServletOutputStream outputStream = null; + FileInputStream inputStream = null; + //通过id获取路径 + String id = request.getParameter("id"); + String fid = tsUrlService.getById(id).getIcon(); + List attFileEOS = iAttFileEOService.getMultiFileInfos(fid); + if(attFileEOS.isEmpty()){ + return null; + } + AttFileEO attFileEO = attFileEOS.get(0); + url = filePath + attFileEO.getFilePath() + attFileEO.getFileName(); + + try { + System.out.println(id); + TsUrl tsUrl = tsUrlService.getById(id); + System.out.println(tsUrl); + + File file = new File(url); + if(!file.exists()) return null; + inputStream = new FileInputStream(file); + response.setContentType("image/jpeg"); + outputStream = response.getOutputStream(); + int len = 0; + byte[] buffer = new byte[1024 * 10]; + while ((len = inputStream.read(buffer)) != -1){ + outputStream.write(buffer,0,len); + } + outputStream.flush(); + outputStream.close(); + inputStream.close(); + } catch (IOException e) { + System.out.println("---------图标获取异常--------------"); + } + return null; + } + + @ApiOperation("查询") + @GetMapping + public ResponseMessage> getUrls(){ + QueryWrapper tsUrlQueryWrapper=new QueryWrapper<>(); + tsUrlQueryWrapper.orderByAsc("order_by"); + List tsUrls=tsUrlService.list(tsUrlQueryWrapper); + return Result.success(tsUrls); + } + + /** + * @param orderList 修改排序后的列表 + * @return + */ + @ApiOperation("更新链接排序") + @PutMapping(value = "/updateOrder") + public ResponseMessage updateOrder(@RequestBody List orderList){ + //持久化修改排序后的列表 + boolean line=tsUrlService.updateBatchById(orderList); + return Result.success(line); + } + + + /** + * 添加 + * + * @param tsUrl + * @return + */ + @ApiOperation(value="第三方链接-添加", notes="第三方链接-添加") + @PostMapping(value = "/add") + public ResponseMessage add(@RequestBody TsUrl tsUrl) { + String orderBy=tsUrlService.getMaxOrderBy(); + if (null!=orderBy) { + tsUrl.setOrderBy(Integer.valueOf(orderBy) + 1); + }else { + tsUrl.setOrderBy(1); + } + tsUrlService.save(tsUrl); + return Result.success(); + } + + /** + * 编辑 + * + * @param tsUrl + * @return + */ + @ApiOperation(value="第三方链接-编辑", notes="第三方链接-编辑") + @PutMapping(value = "/edit") + public ResponseMessage edit(@RequestBody TsUrl tsUrl) { + tsUrl.setOrderBy(null); + tsUrlService.updateById(tsUrl); + return Result.success(); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @ApiOperation(value="第三方链接-通过id删除", notes="第三方链接-通过id删除") + @DeleteMapping(value = "/delete") + public ResponseMessage delete(@RequestParam(name="id",required=true) String id) { + tsUrlService.removeById(id); + return Result.success(); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @ApiOperation(value="第三方链接-批量删除", notes="第三方链接-批量删除") + @DeleteMapping(value = "/deleteBatch") + public ResponseMessage deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.tsUrlService.removeByIds(Arrays.asList(ids.split(","))); + return Result.success(); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @ApiOperation(value="第三方链接-通过id查询", notes="第三方链接-通过id查询") + @GetMapping(value = "/queryById") + public ResponseMessage queryById(@RequestParam(name="id",required=true) String id) { + TsUrl tsUrl = tsUrlService.getById(id); + if(tsUrl==null) { + return Result.error("未找到对应数据"); + } + return Result.success(tsUrl); + } + + @ApiOperation("排序") + @PostMapping("/order") + public ResponseMessage orderUrl(@RequestBody List orderUrlVOList){ + return tsUrlService.orderUrl(orderUrlVOList); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/dao/TsUrlDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/dao/TsUrlDao.java new file mode 100644 index 00000000..e3ecaf62 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/dao/TsUrlDao.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.sarUrl.dao; + + +import com.adc.da.slrs.sarUrl.entity.TsUrl; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; + +/** + * @Description: 第三方链接 + * @Author: jeecg-boot + * @Date: 2021-07-07 + * @Version: V1.0 + */ +public interface TsUrlDao extends BaseMapper { + + /** + * 获取最大排序号 + * @return int + */ + @Select("select max(order_by) from ts_url") + String getMaxOrderBy(); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/entity/OrderUrlVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/entity/OrderUrlVO.java new file mode 100644 index 00000000..8e0a32ef --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/entity/OrderUrlVO.java @@ -0,0 +1,9 @@ +package com.adc.da.slrs.sarUrl.entity; + +import lombok.Data; + +@Data +public class OrderUrlVO { + private String urlId; + private Integer orderBy; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/entity/TsUrl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/entity/TsUrl.java new file mode 100644 index 00000000..12d6c292 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/entity/TsUrl.java @@ -0,0 +1,70 @@ +package com.adc.da.slrs.sarUrl.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +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; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 第三方链接 + * @Author: jeecg-boot + * @Date: 2021-07-07 + * @Version: V1.0 + */ +@Data +@TableName("ts_url") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ts_url对象", description="第三方链接") +public class TsUrl implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.UUID) + @ApiModelProperty(value = "主键") + private String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createById; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateById; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private String createDeptId; + /**链接名称*/ + @ApiModelProperty(value = "链接名称") + private String name; + /**链接地址*/ + @ApiModelProperty(value = "链接地址") + private String url; + /**排序*/ + @ApiModelProperty(value = "排序") + private Integer orderBy; + + /**新增*/ + @ApiModelProperty(value = "图标信息") + private String icon; + @ApiModelProperty(value = "位置") + private Integer type; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/service/ITsUrlService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/service/ITsUrlService.java new file mode 100644 index 00000000..ab1bf403 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/service/ITsUrlService.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.sarUrl.service; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarUrl.entity.OrderUrlVO; +import com.adc.da.slrs.sarUrl.entity.TsUrl; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @Description: 第三方链接 + * @Author: jeecg-boot + * @Date: 2021-07-07 + * @Version: V1.0 + */ +public interface ITsUrlService extends IService { + + /** + * 获取最大排序号 + * @return int + */ + String getMaxOrderBy(); + + /** + * 排序 + * @param orderUrlVOList:id和orderBy + * @return ResponseMessage + */ + ResponseMessage orderUrl(List orderUrlVOList); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/service/impl/TsUrlServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/service/impl/TsUrlServiceImpl.java new file mode 100644 index 00000000..f4ac3d98 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUrl/service/impl/TsUrlServiceImpl.java @@ -0,0 +1,62 @@ +package com.adc.da.slrs.sarUrl.service.impl; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarUrl.dao.TsUrlDao; +import com.adc.da.slrs.sarUrl.entity.OrderUrlVO; +import com.adc.da.slrs.sarUrl.entity.TsUrl; +import com.adc.da.slrs.sarUrl.service.ITsUrlService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Comparator; +import java.util.List; + +/** + * @Description: 第三方链接 + * @Author: jeecg-boot + * @Date: 2021-07-07 + * @Version: V1.0 + */ +@Service +public class TsUrlServiceImpl extends ServiceImpl implements ITsUrlService { + @Autowired + private TsUrlDao tsUrlDao; + + /** + * 获取最大排序号 + * @return int + */ + @Override + public String getMaxOrderBy() { + return tsUrlDao.getMaxOrderBy(); + } + + /** + * 排序 + * @param orderUrlVOList:id和orderBy + * @return ResponseMessage + */ + @Override + public ResponseMessage orderUrl(List orderUrlVOList) { + List tsUrls=tsUrlDao.selectList(new QueryWrapper<>()); + if(orderUrlVOList.size()!=tsUrls.size()){ + return Result.error("请传入所有数据"); + } + orderUrlVOList.sort(Comparator.comparing(OrderUrlVO::getUrlId)); + tsUrls.sort(Comparator.comparing(TsUrl::getId)); + for(int i=0;i + * 前端控制器 + *

    +* +* @author zxy +* @since 2021-06-22 +*/ +@RestController +@Api(tags = "|人员管理|") +@RequestMapping("/api/sarUser/user") +public class TsUserController extends BaseController { + @Autowired + private ITsUserService tsUserService; + @Autowired + private TsUserDao tsUserDao; + @Autowired + private TsInstitutionDao tsInstitutionDao; + + @ApiOperation("禁用/解禁人员") + @PostMapping("/disable") + public ResponseMessage disable(@Validated(TsUser.disable.class) @RequestBody TsUser tsUser){ + //判断disableFlag是否填入正确 + if((!tsUser.getDisableFlag().equals("1"))&&(!tsUser.getDisableFlag().equals("0"))){ + return Result.error("disableFlag只能是0或1"); + } + return tsUserService.disable(tsUser); + } + + @ApiOperation("配置岗位") + @PostMapping("/position") + public ResponseMessage setPosition(@Valid @RequestBody UserPositionVO userPositionVO){ + return tsUserService.setPosition(userPositionVO); + } + + + @ApiOperation("配置岗位") + @PostMapping("/positionBatch") + public ResponseMessage setPositionBatch(@Valid @RequestBody UserPositionBatchVO userPositionVO){ + return tsUserService.setPositionBatch(userPositionVO); + } + + @ApiOperation("配置岗位") + @PostMapping("/positionBatchByOrgId") + public ResponseMessage setPositionBatchByOrgId(@Valid @RequestBody UserPositionBatchVO userPositionVO){ + return tsUserService.setPositionBatchByOrgId(userPositionVO); + } + + + @ApiOperation("查询当前登录用户权限") + @GetMapping("/menu") + public ResponseMessage> getMenu(){ + List menus=tsUserService.getMenu(); + return Result.success(menus); + } + + @ApiOperation("查询当前登录用户资源") + @GetMapping("/resource") + public ResponseMessage> getResource(TsResource tsResource){ + List resources=tsUserService.getResource(tsResource); + return Result.success(resources); + } + + @ApiOperation("导入人员数据") + @GetMapping("/import") + public ResponseMessage importUser() throws Exception { + tsUserService.parseUser(); + return Result.success(); + } + + + @ApiOperation("查询人接口悬浮窗") + @GetMapping("/selectUp") + public ResponseMessage> selectUp(@Param("uname") String uname) throws Exception { + return Result.success(tsUserService.selectByName(uname)); + } + + + @ApiOperation("调研流程查询人 部门专用接口") + @GetMapping("/selectDeptByDY") + public ResponseMessage> selectDeptByDY(@Param("ids") String ids) throws Exception { + List strings=new ArrayList<>(Arrays.asList(ids.split(","))); + return Result.success(tsUserDao.selectDeptByDY(strings)); + } + + + @ApiOperation("根据角色反向查出人员的接口") + @GetMapping("/selectUserByRole") + public ResponseMessage> selectUserByRole(RoleUserDTO roleSelectDTO) throws Exception { + Page page=new Page<>(); + page.setTotal(tsUserDao.selectUserByRole(roleSelectDTO)); + page.setSize(roleSelectDTO.getPageSize()); + page.setCurrent(roleSelectDTO.getPageNumber()); + page.setRecords(tsUserDao.selectUserByRoleByPage(roleSelectDTO)); + return Result.success(page); + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java new file mode 100644 index 00000000..b523c42a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/dao/TsUserDao.java @@ -0,0 +1,75 @@ +package com.adc.da.slrs.sarUser.dao; + +import com.adc.da.slrs.sarUser.entity.RoleUserDTO; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +public interface TsUserDao extends BaseMapper { + + @Update("truncate table ts_user") + void deleteUser(); + + /** + * 查询用户已经绑定的岗位ID + */ + @Select("select position_id from ts_user_position where user_id=#{userId}") + List selectPositionIds(String userId); + + @Update("UPDATE ts_user SET SYS_POSITION_IDS =#{positionIds} WHERE USID = #{userId}") + void updateUserPositionIds(@Param("userId") String userId,@Param("positionIds")String positionIds); + + + /** + * 添加岗位 + * @param userId:用户ID + * @param positionId:岗位ID + */ + @Insert("insert into ts_user_position (user_id,position_id) values (#{userId},#{positionId})") + void addPosition(@Param("userId") String userId,@Param("positionId")String positionId); + + /** + * 解绑岗位 + * @param userId:用户ID + * @param positionId:岗位ID + */ + @Delete("delete from ts_user_position where user_id=#{userId} and position_id=#{positionId}") + void delPosition(@Param("userId")String userId, @Param("positionId")String positionId); + + /** + * 通过岗位ID查询用户及其岗位 + * @param :岗位ID + * @return List + */ + List getUserAndPositionPage(@Param("start")Integer start, @Param("end")Integer end,@Param("TsUser") TsUser tsUser); + + List userUnderInstitution(@Param("start")Integer start, @Param("end")Integer end,@Param("TsUser") TsUser tsUser,@Param("ids") List ids); + + List getUserUnderInstitutionAll(@Param("ids") List ids); + + Integer getUserAndPositionCount(@Param("TsUser") TsUser tsUser); + + Integer userUnderInstitutionCount(@Param("TsUser") TsUser tsUser,@Param("ids") List ids); + /** + * 通过岗位Id列表查询用户ID列表 + * @param positionIds:岗位ID列表 + * @return List + */ + List getUserIdsByPositionIds(List positionIds); + + List selectDeptByDY(@Param("list") List strings); + + Integer selectUserByRole(@Param("role") RoleUserDTO roleSelectDTO); + + List selectUserByRoleByPage(@Param("role") RoleUserDTO roleSelectDTO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/RoleUserDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/RoleUserDTO.java new file mode 100644 index 00000000..f237e296 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/RoleUserDTO.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarUser.entity; + +import lombok.Data; + +@Data +public class RoleUserDTO { +// 用户id + private String userId; +// 用户中文名 + private String userName; +// 要查询的角色 + private String roleId; + + private String institutionName; + + private String institutionId; + + private long pageNumber; + + private long pageSize; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/SyncUser.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/SyncUser.java new file mode 100644 index 00000000..dfd9b03a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/SyncUser.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarUser.entity; + +import lombok.Data; + +@Data +public class SyncUser { + private String userid; + private String name; + private String gender; + private String givenName; + private String mail; + private String mobile; + private String title; + private String employeeNumber; + private String orgNumber; + private String orgName; + + public static TsUser toUser(SyncUser syncUser){ + return new TsUser(syncUser.getUserid(),syncUser.getName(),syncUser.getGender(),syncUser.getMobile(),syncUser.getMail(),syncUser.getOrgName(),syncUser.getOrgNumber(),syncUser.getTitle()); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/TsUser.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/TsUser.java new file mode 100644 index 00000000..6689c537 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/TsUser.java @@ -0,0 +1,174 @@ +package com.adc.da.slrs.sarUser.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import javax.validation.constraints.NotNull; + +/** + *

    + * + *

    + * + * @author zxy + * @since 2021-06-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TsUser对象", description="") +public class TsUser extends BaseEntity { + + public interface disable{ + } + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键Id") + @NotNull(message = "userId不能为空",groups = {disable.class}) + @TableId(value = "USID",type = IdType.UUID) + private String userId; + + @ApiModelProperty(value = "帐户") + @TableField("ACCOUNT") + private String account; + + @ApiModelProperty(value = "密码") + @TableField("PASSWORD") + private String password; + + @ApiModelProperty(value = "用户姓名") + @TableField("UNAME") + private String uname; + + @ApiModelProperty(value = "用户性别(1为男,2为女)") + @TableField("SEX") + private String sex; + + @ApiModelProperty(value = "用户来源") + @TableField("USER_SOURCE") + private String userSource; + + @ApiModelProperty(value = "用户手机号") + @TableField("PHONE") + private String phone; + + @ApiModelProperty(value = "用户状态") + @TableField("STATE") + private String state; + + @ApiModelProperty(value = "用户邮箱") + @TableField("EMAIL") + private String email; + + @ApiModelProperty(value = "所属部门名称") + @TableField("INSTITUTION_NAME") + private String institutionName; + + @ApiModelProperty(value = "所属部门ID") + @TableField("INSTITUTION_ID") + private String institutionId; + + @ApiModelProperty(value = "岗位名") + @TableField("POSITION_NAME") + private String positionName; + + @ApiModelProperty(value = "岗位ID") + @TableField("POSITION_ID") + private String positionId; + + @ApiModelProperty(value = "工号") + @TableField("WORK_NUM") + private String workNum; + + @ApiModelProperty(value = "备注") + @TableField("EXT_INFO") + private String extInfo; + + @TableField("OPER_USER") + private String operUser; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp modifyTime; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "是否禁用(0为未禁用,1为已禁用)") + @NotNull(message = "disableFlag不能为空",groups = {disable.class}) + @TableField("DISABLE_FLAG") + private String disableFlag; + + @ApiModelProperty(value = "是否锁定") + @TableField("UNLOCK_FLAG") + private String unlockFlag; + + @ApiModelProperty(value = "用户类型") + @TableField("USER_TYPE") + private String userType; + + @ApiModelProperty(value = "对接单点登录用户ID") + @TableField("SSO_ID") + private String ssoId; + + @ApiModelProperty(value = "系统设置岗位ID集合") + @TableField("SYS_POSITION_IDS") + private String sysPositionIds; + + @ApiModelProperty(value = "岗位") + @TableField(exist = false) + private List positions; + + @ApiModelProperty("当前页") + @TableField(exist = false) + private Integer current; + + @ApiModelProperty("每页条数") + @TableField(exist = false) + private Integer size; + + @TableField(exist = false) + private String token; + + + public TsUser() { + } + + public TsUser(String account, String uname, String sex, String phone, String email, String institutionName, String institutionId, String positionName) { + this.account = account; + this.uname = uname; + this.sex = sex; + this.phone = phone; + this.email = email; + this.institutionName = institutionName; + this.institutionId = institutionId; + this.positionName = positionName; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UpDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UpDTO.java new file mode 100644 index 00000000..730b9910 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UpDTO.java @@ -0,0 +1,13 @@ +package com.adc.da.slrs.sarUser.entity; + +import lombok.Data; + +@Data +public class UpDTO { + + + + private String value; + + private String id; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UserPositionBatchVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UserPositionBatchVO.java new file mode 100644 index 00000000..baecbceb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UserPositionBatchVO.java @@ -0,0 +1,17 @@ +package com.adc.da.slrs.sarUser.entity; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class UserPositionBatchVO { + @NotNull(message = "userId不能为空") + private List userId; + @NotNull(message = "positionIds不能为空") + private List positionIds; + @NotNull(message = "orgId不能为空") + private String orgId; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UserPositionVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UserPositionVO.java new file mode 100644 index 00000000..f07fbfbb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/entity/UserPositionVO.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.sarUser.entity; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class UserPositionVO { + @NotNull(message = "userId不能为空") + private String userId; + @NotNull(message = "positionIds不能为空") + private List positionIds; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java new file mode 100644 index 00000000..d850a34a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/ITsUserService.java @@ -0,0 +1,93 @@ +package com.adc.da.slrs.sarUser.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarUser.entity.TsUser; +import com.adc.da.slrs.sarUser.entity.UpDTO; +import com.adc.da.slrs.sarUser.entity.UserPositionBatchVO; +import com.adc.da.slrs.sarUser.entity.UserPositionVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +public interface ITsUserService extends IService { + + void deleteUser(); + + /** + * 通过机构ID查询人员 + * @param institutionId:机构ID + * @return List + */ + IPage getUserByInstitutionId(TsUser tsUser); + + /** + * 封禁、解禁用户 + * @param tsUser:目标用户 + * @return ResponseMessage + */ + ResponseMessage disable(TsUser tsUser); + + /** + * 配置岗位 + * @param userPositionVO :用户、岗位ID + * @return ResponseMessage + */ + ResponseMessage setPosition(UserPositionVO userPositionVO); + + ResponseMessage setPositionBatch(UserPositionBatchVO userPositionVO); + + ResponseMessage setPositionBatchByOrgId(UserPositionBatchVO userPositionVO); + + /** + * 查询当前登录的用户权限 + * @return List + */ + List getMenu(); + + List getResource(TsResource tsResource); + + /** + * 配置个人菜单 + * @param roleId :角色ID + * @return List + */ + public List getUserIdsByRoleId(String roleId); + + /** + * 通过用户ID查询菜单 + * @param userId:用户ID + * @return List + */ + public List getMenusByUserId(String userId); + + List getResourceId(TsResource tsResource); + + List getResourceUserId(String userId); + + //获取当前用户的 数据查看权限 针对于企业标准 + List getResourceDataUserId(String userId); + + /** + * 导入人员数据 + */ + void parseUser() throws Exception; + + List getSecondMenusByUserId(String userId); + + List selectByName(String name); + + List selectNameById(List strings,String type); + + IPage getAllUsers(TsUser tsUser); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java new file mode 100644 index 00000000..cb59428d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarUser/service/impl/TsUserServiceImpl.java @@ -0,0 +1,526 @@ +package com.adc.da.slrs.sarUser.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sarInstitution.service.ITsInstitutionService; +import com.adc.da.slrs.sarMenu.entity.SarMenu; +import com.adc.da.slrs.sarMenu.service.ISarMenuService; +import com.adc.da.slrs.sarPosition.dao.TsPositionDao; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarResource.entity.TsResource; +import com.adc.da.slrs.sarResource.service.ITsResourceService; +import com.adc.da.slrs.sarRole.service.ITsRoleService; +import com.adc.da.slrs.sarUser.entity.*; +import com.adc.da.slrs.sarUser.dao.TsUserDao; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.slrs.tsRoleMeunData.entity.TsRoleMenuData; +import com.adc.da.slrs.tsRoleMeunData.service.ITsRoleMenuDataService; +import com.adc.da.sync.service.SyncUserService; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.utils.util.ListUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-22 + */ +@Service +public class TsUserServiceImpl extends ServiceImpl implements ITsUserService { + @Autowired + private TsUserDao tsUserDao; + @Autowired + private ITsUserService tsUserService; + @Autowired + private ITsPositionService tsPositionService; + @Autowired + @Lazy + private ITsRoleService tsRoleService; + @Autowired + private ISarMenuService sarMenuService; + @Autowired + private ITsResourceService tsResourceService; + @Autowired + private SyncUserService syncUserService; + @Autowired + private TsPositionDao tsPositionDao; + @Autowired + private ITsInstitutionService tsInstitutionService; + @Autowired + ITsRoleMenuDataService iTsRoleMenuDataService; + + + public void deleteUser(){ + tsUserDao.deleteUser(); + }; + + /** + * 通过机构ID查询人员 + * @return List + */ + @Override + public IPage getUserByInstitutionId(TsUser tsUser) { +// return tsUserDao.getUserAndPosition(institutionId); + Page tsUserPage = new Page<>(); + System.out.println(tsUser.getCurrent()); + System.out.println(tsUser.getSize()); + List tsUserList = tsUserDao.getUserAndPositionPage((tsUser.getCurrent()-1)*tsUser.getSize(),tsUser.getSize(),tsUser); + Integer total = tsUserDao.getUserAndPositionCount(tsUser); + tsUserPage.setRecords(tsUserList); + tsUserPage.setCurrent(tsUser.getCurrent()); + tsUserPage.setSize(tsUser.getSize()); + tsUserPage.setTotal(total); + return tsUserPage; + } + + /** + * 封禁、解禁用户 + * @param tsUser:目标用户 + * @return ResponseMessage + */ + @Override + public ResponseMessage disable(TsUser tsUser) { + TsUser user=tsUserDao.selectById(tsUser.getUserId()); + if(user==null){ + return Result.error("该用户不存在"); + } + //解禁 + if(tsUser.getDisableFlag().equals("0")){ + if(user.getDisableFlag().equals("0")){ + return Result.error("该用户已被解禁,请勿重复操作"); + } + user.setDisableFlag("0"); + //封禁 + }else { + if(user.getDisableFlag().equals("1")){ + return Result.error("该用户已被封禁,请勿重复操作"); + } + user.setDisableFlag("1"); + } + tsUserDao.updateById(user); + return Result.success(); + } + + /** + * 配置岗位 + * @param userPositionVO :用户、岗位ID + * @return ResponseMessage + */ + @Override + @Transactional + public ResponseMessage setPosition(UserPositionVO userPositionVO) { + TsUser tsUser=tsUserDao.selectById(userPositionVO.getUserId()); + if(tsUser==null){ + return Result.error("该用户不存在"); + } + //此处更新user表中的岗位字段 + List positionIds = userPositionVO.getPositionIds(); + positionIds.removeIf(s -> null==s||""==s); + String optionsIdStr = StringUtils.join(positionIds, ","); + if(StringUtils.isBlank(optionsIdStr)){ + optionsIdStr = null; + } + tsUserDao.updateUserPositionIds(userPositionVO.getUserId(),optionsIdStr); + List oldPositionIds=tsUserDao.selectPositionIds(userPositionVO.getUserId()); + Map> ids= ListUtil.difList(positionIds,oldPositionIds); + List insertIds=ids.get("insert"); + List deleteIds=ids.get("delete"); + if(insertIds!=null&&insertIds.size()>0){ + for(String positionId:insertIds){ + tsUserDao.addPosition(userPositionVO.getUserId(),positionId); + } + } + if(deleteIds!=null&&deleteIds.size()>0){ + for(String positionId:deleteIds){ + tsUserDao.delPosition(userPositionVO.getUserId(),positionId); + } + } + return Result.success(); + } + + + /** + * 配置岗位 + * @param userPositionVO2:用户、岗位ID + * @return ResponseMessage + */ + @Override + @Transactional + public ResponseMessage setPositionBatch(UserPositionBatchVO userPositionVO2) { + + boolean flag=true; + //此处更新user表中的岗位字段 + List positionIds = userPositionVO2.getPositionIds(); + positionIds.removeIf(s -> null==s||""==s); + String optionsIdStr = StringUtils.join(positionIds, ","); + if(StringUtils.isBlank(optionsIdStr)){ + optionsIdStr = null; + } + for (String s:userPositionVO2.getUserId()) { + UserPositionVO userPositionVO=new UserPositionVO(); + userPositionVO.setUserId(s); + userPositionVO.setPositionIds(userPositionVO2.getPositionIds()); + TsUser tsUser=tsUserDao.selectById(userPositionVO.getUserId()); + if(tsUser==null){ + flag=false; + continue; + } + tsUserDao.updateUserPositionIds(userPositionVO.getUserId(),optionsIdStr); + List oldPositionIds=tsUserDao.selectPositionIds(userPositionVO.getUserId()); + Map> ids= ListUtil.difList(positionIds,oldPositionIds); + List insertIds=ids.get("insert"); + List deleteIds=ids.get("delete"); + if(insertIds!=null&&insertIds.size()>0){ + for(String positionId:insertIds){ + tsUserDao.addPosition(userPositionVO.getUserId(),positionId); + } + } + if(deleteIds!=null&&deleteIds.size()>0){ + for(String positionId:deleteIds){ + tsUserDao.delPosition(userPositionVO.getUserId(),positionId); + } + } + } + if (flag) { + return Result.success(); + }else { + return Result.error("用户不存在"); + } + } + + /** + * 配置岗位 + * @param userPositionVO2:用户、岗位ID + * @return ResponseMessage + */ + @Override + @Transactional + public ResponseMessage setPositionBatchByOrgId(UserPositionBatchVO userPositionVO2) { + + boolean flag=true; + //首先将所有用户查出来 + List orgIds=new ArrayList<>(); + orgIds.add(userPositionVO2.getOrgId()); + List middle=new ArrayList<>(); + middle.addAll(orgIds); + boolean Orgflag=true; + //此处更新user表中的岗位字段 + List positionIds = userPositionVO2.getPositionIds(); + positionIds.removeIf(s -> null==s||""==s); + String optionsIdStr = StringUtils.join(positionIds, ","); + if(StringUtils.isBlank(optionsIdStr)){ + optionsIdStr = null; + } + while (Orgflag){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.in("parent_id",middle); + List tsmiddle=tsInstitutionService.list(queryWrapper); + if (tsmiddle.size()>0){ + tsmiddle.forEach(tsInstitution -> { + middle.add(tsInstitution.getId()); + }); + middle.removeAll(orgIds); + orgIds.addAll(middle); + }else { + tsmiddle.forEach(tsInstitution -> { + middle.add(tsInstitution.getId()); + }); + middle.removeAll(orgIds); + orgIds.addAll(middle); + Orgflag=false; + } + } + orgIds.removeIf(s -> null==s); + List allUsers = tsUserDao.getUserUnderInstitutionAll(orgIds); + + for (TsUser user : allUsers) { + String userId = user.getUserId(); + TsUser tsUser=tsUserDao.selectById(userId); + if(tsUser==null){ + continue; + } + tsUserDao.updateUserPositionIds(userId,optionsIdStr); + List oldPositionIds=tsUserDao.selectPositionIds(userId); + Map> ids= ListUtil.difList(positionIds,oldPositionIds); + List insertIds=ids.get("insert"); + List deleteIds=ids.get("delete"); + if(insertIds!=null&&insertIds.size()>0){ + for(String positionId:insertIds){ + tsUserDao.addPosition(userId,positionId); + } + } + if(deleteIds!=null&&deleteIds.size()>0){ + for(String positionId:deleteIds){ + tsUserDao.delPosition(userId,positionId); + } + } + } + return Result.success(); + } + + /** + * 查询当前登录的用户权限 + * @return List + */ + @Override + public List getMenu() { + UserEO userEO=UserUtils.getUser(); + String userId= userEO.getUsid(); + List positionIds=tsUserDao.selectPositionIds(userId); + /** + * 当用户没有所属岗位,默认给一个other岗位,适用于特定权限外的其他用户 + * 用户同步时需要将用户配置的系统内的岗位保留 + */ + + if(positionIds == null || positionIds.isEmpty()){ + positionIds = Arrays.asList(new String[]{"other"}); + } + List roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds); + List menuIds=tsRoleService.getMenuIdsByRoleIds(roleIds); + return sarMenuService.getMenuByIds(menuIds); + } + + /** + * 查询当前登录的用户资源 + * @return List + * @param tsResource + */ + @Override + public List getResource(TsResource tsResource) { + UserEO userEO=UserUtils.getUser(); + String userId= userEO.getUsid(); + System.out.println(userId); + List positionIds=tsUserDao.selectPositionIds(userId); + List roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds); + List resourceIds=tsRoleService.getResourceIdsByRoleIds(roleIds); + return tsResourceService.getResourceByIds(resourceIds,tsResource.getSorDivide()); + } + + /** + * 配置个人菜单 + * @param roleId :角色ID + * @return List + */ + @Override + public List getUserIdsByRoleId(String roleId) { + List positionIds=tsPositionService.getPositionIdsByRoleId(roleId); + return tsUserDao.getUserIdsByPositionIds(positionIds); + } + + /** + * 通过用户ID查询菜单 + * @param userId:用户ID + * @return List + */ + @Override + public List getMenusByUserId(String userId){ + List positionIds=tsUserDao.selectPositionIds(userId); + List roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds); + List menuIds=tsRoleService.getMenuIdsByRoleIds(roleIds); + return sarMenuService.getMenuByIds(menuIds); + } + + /** + * 查询当前登录的用户资源 + * @return List + * @param tsResource + */ + @Override + public List getResourceId(TsResource tsResource) { + UserEO userEO=UserUtils.getUser(); + String userId= userEO.getUsid(); + System.out.println(userId); + List positionIds=tsUserDao.selectPositionIds(userId); + List roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds); + return tsRoleService.getResourceIdsByRoleIds(roleIds); + + } + + /** + * 查询当前登录的用户资源 + * @return List + */ + @Override + public List getResourceUserId(String userId) { + List positionIds=tsUserDao.selectPositionIds(userId); + List roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds); + return tsRoleService.getResourceIdsByRoleIds(roleIds); + + } + /** + * 查询当前登录的用户资源 + * @return List + */ + @Override + public List getResourceDataUserId(String userId) { + List positionIds=tsUserDao.selectPositionIds(userId); + List roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.select("MENU_ID"); + wrapper.in("ROLE_ID",roleIds); + List tsRoleMenuData=iTsRoleMenuDataService.list(wrapper); + return tsRoleMenuData.stream().map(TsRoleMenuData::getMenuId).distinct().collect(Collectors.toList()); + + } + + /** + * 导入人员数据 + */ + @Override + public void parseUser() throws Exception { +// List jsons=syncUserService.syncFotonUser(); +// for(String json:jsons){ +// JSONObject jsonObject= JSON.parseObject(json); +// JSONArray jsonArray=jsonObject.getJSONArray("results"); +// List syncUsers=jsonArray.toJavaList(SyncUser.class); +// for(SyncUser syncUser:syncUsers){ +// QueryWrapper positionQueryWrapper=new QueryWrapper<>(); +// positionQueryWrapper.eq("name",syncUser.getTitle()); +// TsPosition tsPosition=tsPositionDao.selectOne(positionQueryWrapper); +// if(tsPosition==null){ +// tsPosition=new TsPosition(); +// tsPosition.setName(syncUser.getTitle()); +// tsPosition.setType("1"); +// tsPositionDao.insert(tsPosition); +// } +// TsUser tsUser=SyncUser.toUser(syncUser); +// tsUser.setPositionId(tsPosition.getId()); +// tsUserDao.insert(tsUser); +// +// } +// } +// System.out.println(jsons.size()); + String json="{\"status\":\"true\",\"message\":\"成功\",\"cookie\":[0,0,0,0,0,1,101,213],\"returnCode\":\"0\",\"results\":[{\"userStatus\":\"1\",\"orgName\":\"福田图雅诺山东多功能质量\",\"gender\":\"男\",\"mail\":\"wanhao@foton.com.cn\",\"givenName\":\"万浩\",\"mobile\":\"13900000000\",\"title\":\"零部件检验员\",\"userid\":\"wanhao\",\"orgFullPath\":\"foton/福田汽车集团/BU/图雅诺事业部/山东多功能工厂/质量管理部\",\"employeeNumber\":\"00008676\",\"modifyTime\":\"20210702025758Z\",\"name\":\"万浩浩\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013507\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田图雅诺山东多功能总装\",\"gender\":\"男\",\"mail\":\"wanhaifeng@foton.com.cn\",\"givenName\":\"万海峰\",\"mobile\":\"13900000000\",\"title\":\"助理高级经理\",\"userid\":\"wanhaifeng\",\"orgFullPath\":\"foton/福田汽车集团/BU/图雅诺事业部/山东多功能工厂/总装部\",\"employeeNumber\":\"00032164\",\"modifyTime\":\"20210702025736Z\",\"name\":\"万海峰\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40012211\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代长沙工厂制造部\",\"gender\":\"男\",\"mail\":\"wanqi@foton.com.cn\",\"givenName\":\"万琪\",\"mobile\":\"13900000000\",\"title\":\"助理高级经理\",\"userid\":\"wanqi\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/长沙工厂/制造部\",\"employeeNumber\":\"00017219\",\"modifyTime\":\"20210702021159Z\",\"name\":\"万琪\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40006416\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代质量\",\"gender\":\"男\",\"mail\":\"wangziguang@foton.com.cn\",\"givenName\":\"王子光\",\"mobile\":\"13900000000\",\"title\":\"检验员\",\"userid\":\"wangziguang\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/质量管理部\",\"employeeNumber\":\"00029888\",\"modifyTime\":\"20210702021158Z\",\"name\":\"王子光\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40010047\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田奥铃营销市场与商品规划部\",\"gender\":\"男\",\"mail\":\"wangzhuqing@foton.com.cn\",\"givenName\":\"王竹青\",\"mobile\":\"13900000000\",\"title\":\"高级经理\",\"userid\":\"wangzhuqing\",\"orgFullPath\":\"foton/福田汽车集团/BU/奥铃事业部/营销公司/市场与商品规划部\",\"employeeNumber\":\"00036062\",\"modifyTime\":\"20210702031910Z\",\"name\":\"王竹青\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013955\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田图雅诺营销市场一线杭州销售中心\",\"gender\":\"男\",\"mail\":\"wangzhoujun@foton.com.cn\",\"givenName\":\"王周军\",\"mobile\":\"13900000000\",\"title\":\"销售中心经理\",\"userid\":\"wangzhoujun\",\"orgFullPath\":\"foton/福田汽车集团/BU/图雅诺事业部/营销公司/市场一线/杭州销售中心\",\"employeeNumber\":\"00002757\",\"modifyTime\":\"20210702025259Z\",\"name\":\"王周军\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013249\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田海外订单交付\",\"gender\":\"男\",\"mail\":\"wangzilong2@foton.com.cn\",\"givenName\":\"王子龙2\",\"mobile\":\"13900000000\",\"title\":\"生产主管\",\"userid\":\"wangzilong2\",\"orgFullPath\":\"foton/福田汽车集团/BU/海外事业部/订单交付中心\",\"employeeNumber\":\"00036831\",\"modifyTime\":\"20210702032711Z\",\"name\":\"王子龙\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40008257\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田海外战略客户营销公司\",\"gender\":\"男\",\"mail\":\"wangzhuozhong@foton.com.cn\",\"givenName\":\"王卓忠\",\"mobile\":\"13900000000\",\"title\":\"副总经理\",\"userid\":\"wangzhuozhong\",\"orgFullPath\":\"foton/福田汽车集团/BU/海外事业部/战略客户营销公司\",\"employeeNumber\":\"00037029\",\"modifyTime\":\"20210702031039Z\",\"name\":\"王卓忠\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013082\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田精益专家管理中心\",\"gender\":\"男\",\"mail\":\"wangzongming@foton.com.cn\",\"givenName\":\"王宗明\",\"mobile\":\"13900000000\",\"title\":\"副总工程师\",\"userid\":\"wangzongming\",\"orgFullPath\":\"foton/福田汽车集团/FU/精益运营推进部/专家管理中心\",\"employeeNumber\":\"00000028\",\"modifyTime\":\"20210702033201Z\",\"name\":\"王宗明\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40011053\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田海外业务运营\",\"gender\":\"男\",\"mail\":\"wanhongwei@foton.com.cn\",\"givenName\":\"万红委\",\"mobile\":\"13900000000\",\"title\":\"运营支持主管\",\"userid\":\"wanhongwei\",\"orgFullPath\":\"foton/福田汽车集团/BU/海外事业部/业务运营管理部\",\"employeeNumber\":\"00037136\",\"modifyTime\":\"20210702033557Z\",\"name\":\"万红委\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013650\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田IT营销与售后系统部\",\"gender\":\"男\",\"mail\":\"wanlingyun@foton.com.cn\",\"givenName\":\"万凌云\",\"mobile\":\"13900000000\",\"title\":\"项目经理\",\"userid\":\"wanlingyun\",\"orgFullPath\":\"foton/福田汽车集团/FU/信息技术部/营销与售后系统部\",\"employeeNumber\":\"00050274\",\"modifyTime\":\"20210702033547Z\",\"name\":\"万凌云\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40009093\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田冲压财\",\"gender\":\"女\",\"mail\":\"weifangli@foton.com.cn\",\"givenName\":\"魏芳莉\",\"mobile\":\"13900000000\",\"title\":\"高级经理\",\"userid\":\"weifangli\",\"orgFullPath\":\"foton/福田汽车集团/BU/冲压工厂/财务管理部\",\"employeeNumber\":\"00010235\",\"modifyTime\":\"20210702031521Z\",\"name\":\"魏芳莉\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40008917\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代采购\",\"gender\":\"男\",\"mail\":\"weihaibin@foton.com.cn\",\"givenName\":\"魏海斌\",\"mobile\":\"13900000000\",\"title\":\"协作件采购业务副经理\",\"userid\":\"weihaibin\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/采购管理部\",\"employeeNumber\":\"00017924\",\"modifyTime\":\"20210702021201Z\",\"name\":\"魏海斌\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40010045\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田普罗科营销订单管理中心\",\"gender\":\"男\",\"mail\":\"wanjianwei@foton.com.cn\",\"givenName\":\"万剑炜\",\"mobile\":\"13900000000\",\"title\":\"订单推进管理\",\"userid\":\"wanjianwei\",\"orgFullPath\":\"foton/福田汽车集团/SBU/普罗科事业部/营销公司/订单管理中心\",\"employeeNumber\":\"00016003\",\"modifyTime\":\"20210702021159Z\",\"name\":\"万剑炜\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013126\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"宝沃计划与物流整车物流部生产计划科\",\"gender\":\"女\",\"mail\":\"joan.wan@borgward.com\",\"givenName\":\"万琼\",\"mobile\":\"13900000000\",\"title\":\"物料筹措\",\"userid\":\"wanqiong\",\"orgFullPath\":\"foton/福田汽车集团/宝沃汽车集团/宝沃中国/计划与物流部/整车物流部/生产计划科\",\"employeeNumber\":\"60006362\",\"modifyTime\":\"20210702021159Z\",\"name\":\"万琼\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"10014050\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田海外制造采购\",\"gender\":\"男\",\"mail\":\"weihaikun@foton.com.cn\",\"givenName\":\"魏海坤\",\"mobile\":\"13900000000\",\"title\":\"卡车焊装工艺开发主管\",\"userid\":\"weihaikun\",\"orgFullPath\":\"foton/福田汽车集团/BU/海外事业部/制造与采购部\",\"employeeNumber\":\"00012049\",\"modifyTime\":\"20210702030415Z\",\"name\":\"魏海坤\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"30001820\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田物流怀生产物流一部\",\"gender\":\"女\",\"mail\":\"weihong@foton.com.cn\",\"givenName\":\"魏宏\",\"mobile\":\"13900000000\",\"title\":\"材料会计\",\"userid\":\"weihong\",\"orgFullPath\":\"foton/福田汽车集团/其它/物流公司/怀柔分公司/生产物流一部\",\"employeeNumber\":\"01036128\",\"modifyTime\":\"20210702021201Z\",\"name\":\"魏宏\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"30000437\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代领导\",\"gender\":\"男\",\"mail\":\"weibenhua@foton.com.cn\",\"givenName\":\"魏本华\",\"mobile\":\"13900000000\",\"title\":\"采购副总裁\",\"userid\":\"weibenhua\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/事业部领导\",\"employeeNumber\":\"00021526\",\"modifyTime\":\"20210702021200Z\",\"name\":\"魏本华\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40006610\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田欧辉营销销售管理部销售大区华北城间大区\",\"gender\":\"男\",\"mail\":\"weibin@foton.com.cn\",\"givenName\":\"魏斌\",\"mobile\":\"13900000000\",\"title\":\"执行副总经理(城市)\",\"userid\":\"weibin\",\"orgFullPath\":\"foton/福田汽车集团/SBU/欧辉客车事业部/营销公司/销售管理部/销售大区/华北分公司\",\"employeeNumber\":\"00027702\",\"modifyTime\":\"20210702021200Z\",\"name\":\"魏斌\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40003194\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代财务\",\"gender\":\"男\",\"mail\":\"wanrulong@foton.com.cn\",\"givenName\":\"万汝龙\",\"mobile\":\"13900000000\",\"title\":\"资金管理\",\"userid\":\"wanrulong\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/财务管理部\",\"employeeNumber\":\"00014889\",\"modifyTime\":\"20210702021200Z\",\"name\":\"万汝龙\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40006585\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田人昌平HR共享中心\",\"gender\":\"女\",\"mail\":\"weicui@foton.com.cn\",\"givenName\":\"魏翠\",\"mobile\":\"13900000000\",\"title\":\"员工关系管理\",\"userid\":\"weicui\",\"orgFullPath\":\"foton/福田汽车集团/FU/人力资源部/昌平HR共享中心\",\"employeeNumber\":\"00004674\",\"modifyTime\":\"20210702032357Z\",\"name\":\"魏翠\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40010761\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田采底盘\",\"gender\":\"男\",\"mail\":\"weiguang@foton.com.cn\",\"givenName\":\"魏广\",\"mobile\":\"13900000000\",\"title\":\"部长\",\"userid\":\"weiguang\",\"orgFullPath\":\"foton/福田汽车集团/FU/采购管理本部/底盘采购部\",\"employeeNumber\":\"00000405\",\"modifyTime\":\"20210702025240Z\",\"name\":\"魏广\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40010945\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代奥铃工厂订单与物流部\",\"gender\":\"女\",\"mail\":\"weijinhong@foton.com.cn\",\"givenName\":\"魏金红\",\"mobile\":\"13900000000\",\"title\":\"保管员\",\"userid\":\"weijinhong\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/奥铃工厂/订单与物流部\",\"employeeNumber\":\"00030261\",\"modifyTime\":\"20210702021202Z\",\"name\":\"魏金红\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40006333\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田欧辉营销市场工程部\",\"gender\":\"男\",\"mail\":\"weijinsong@foton.com.cn\",\"givenName\":\"魏劲松\",\"mobile\":\"13900000000\",\"title\":\"高级经理\",\"userid\":\"weijinsong\",\"orgFullPath\":\"foton/福田汽车集团/SBU/欧辉客车事业部/营销公司/市场工程部\",\"employeeNumber\":\"00027748\",\"modifyTime\":\"20210702021202Z\",\"name\":\"魏劲松\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40010274\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"宝沃汽车厂综合管理部消防保卫科\",\"gender\":\"男\",\"mail\":\"weihaipeng@foton.com.cn\",\"givenName\":\"魏海鹏\",\"mobile\":\"13900000000\",\"title\":\"消防管理员\",\"userid\":\"weihaipeng\",\"orgFullPath\":\"foton/福田汽车集团/宝沃汽车集团/宝沃中国/北京宝沃汽车厂/综合管理部/消防保卫科\",\"employeeNumber\":\"60006186\",\"modifyTime\":\"20210702021201Z\",\"name\":\"魏海鹏\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"10014556\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田海外人力资源与行政\",\"gender\":\"女\",\"mail\":\"weijuhong@foton.com.cn\",\"givenName\":\"卫菊红\",\"mobile\":\"13900000000\",\"title\":\"组织绩效主管\",\"userid\":\"weijuhong\",\"orgFullPath\":\"foton/福田汽车集团/BU/海外事业部/人力资源与行政部\",\"employeeNumber\":\"00015439\",\"modifyTime\":\"20210702031149Z\",\"name\":\"卫菊红\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"30001830\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田物流沙\",\"gender\":\"女\",\"mail\":\"weilijuan@foton.com.cn\",\"givenName\":\"魏丽娟\",\"mobile\":\"13900000000\",\"title\":\"副经理\",\"userid\":\"weilijuan\",\"orgFullPath\":\"foton/福田汽车集团/其它/物流公司/沙河分公司\",\"employeeNumber\":\"00027026\",\"modifyTime\":\"20210702021202Z\",\"name\":\"魏丽娟\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"30000456\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田欧辉技车身所\",\"gender\":\"女\",\"mail\":\"weilina@foton.com.cn\",\"givenName\":\"魏丽娜\",\"mobile\":\"13900000000\",\"title\":\"内饰设计\",\"userid\":\"weilina\",\"orgFullPath\":\"foton/福田汽车集团/SBU/欧辉客车事业部/技术研究院/车身所\",\"employeeNumber\":\"01006335\",\"modifyTime\":\"20210702021202Z\",\"name\":\"魏丽娜\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40008577\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田奥铃山东超级卡车质量质量管理业务\",\"gender\":\"女\",\"mail\":\"weipan@foton.com.cn\",\"givenName\":\"卫盼\",\"mobile\":\"13900000000\",\"title\":\"绩效管理\",\"userid\":\"weipan\",\"orgFullPath\":\"foton/福田汽车集团/BU/奥铃事业部/山东超级卡车工厂/质量管理部/质量管理业务\",\"employeeNumber\":\"00001385\",\"modifyTime\":\"20210702031818Z\",\"name\":\"卫盼\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013742\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田奥铃财务\",\"gender\":\"男\",\"mail\":\"weijingli@foton.com.cn\",\"givenName\":\"魏景利\",\"mobile\":\"13900000000\",\"title\":\"成本价格管理\",\"userid\":\"weijingli\",\"orgFullPath\":\"foton/福田汽车集团/BU/奥铃事业部/财务管理部\",\"employeeNumber\":\"00012839\",\"modifyTime\":\"20210702032720Z\",\"name\":\"魏景利\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40012254\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田奥铃营销市场一线江浙沪地区部\",\"gender\":\"男\",\"mail\":\"weimiaoyi@foton.com.cn\",\"givenName\":\"韦淼益\",\"mobile\":\"13900000000\",\"title\":\"杭州市场部服务工程师\",\"userid\":\"weimiaoyi\",\"orgFullPath\":\"foton/福田汽车集团/BU/奥铃事业部/营销公司/市场一线/江浙沪地区部\",\"employeeNumber\":\"00001781\",\"modifyTime\":\"20210702032542Z\",\"name\":\"韦淼益\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40014341\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田奥铃山东超级卡车车架\",\"gender\":\"男\",\"mail\":\"weiyuanbo@foton.com.cn\",\"givenName\":\"卫渊博\",\"mobile\":\"13900000000\",\"title\":\"助理高级经理(生产)\",\"userid\":\"weiyuanbo\",\"orgFullPath\":\"foton/福田汽车集团/BU/奥铃事业部/山东超级卡车工厂/车架部\",\"employeeNumber\":\"00021072\",\"modifyTime\":\"20210702025425Z\",\"name\":\"卫渊博\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40012370\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田物流财怀柔财务部\",\"gender\":\"女\",\"mail\":\"weiyuying@foton.com.cn\",\"givenName\":\"魏玉英\",\"mobile\":\"13900000000\",\"title\":\"计酬管理\",\"userid\":\"weiyuying\",\"orgFullPath\":\"foton/福田汽车集团/其它/物流公司/财务部/怀柔财务部\",\"employeeNumber\":\"01036011\",\"modifyTime\":\"20210702021205Z\",\"name\":\"魏玉英\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"30000394\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代长沙工厂制造部油漆车间\",\"gender\":\"男\",\"mail\":\"weiyong2@foton.com.cn\",\"givenName\":\"韦勇\",\"mobile\":\"13900000000\",\"title\":\"副主任\",\"userid\":\"weiyong2\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/长沙工厂/制造部/油漆车间\",\"employeeNumber\":\"00017349\",\"modifyTime\":\"20210702021205Z\",\"name\":\"韦勇\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40006428\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代IT\",\"gender\":\"男\",\"mail\":\"weiqing@foton.com.cn\",\"givenName\":\"魏青\",\"mobile\":\"13900000000\",\"title\":\"研发工程系统管理\",\"userid\":\"weiqing\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/信息技术部\",\"employeeNumber\":\"00014090\",\"modifyTime\":\"20210702021203Z\",\"name\":\"魏青\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40006576\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田营销专用车\",\"gender\":\"女\",\"mail\":\"wengxiaofang@foton.com.cn\",\"givenName\":\"瓮晓芳\",\"mobile\":\"13900000000\",\"title\":\"订单管理\",\"userid\":\"wengxiaofang\",\"orgFullPath\":\"foton/福田汽车集团/FU/营销总公司/专用车业务管理部\",\"employeeNumber\":\"01006367\",\"modifyTime\":\"20210702030640Z\",\"name\":\"瓮晓芳\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40008865\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田拓陆者营服\",\"gender\":\"男\",\"mail\":\"wengancheng@foton.com.cn\",\"givenName\":\"瓮安成\",\"mobile\":\"13900000000\",\"title\":\"助理高级经理\",\"userid\":\"wengancheng\",\"orgFullPath\":\"foton/福田汽车集团/BU/拓陆者事业部/营销公司/服务与配件部\",\"employeeNumber\":\"00002876\",\"modifyTime\":\"20210702025851Z\",\"name\":\"瓮安成\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40011678\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田总办管理推进部\",\"gender\":\"女\",\"mail\":\"weiwei@foton.com.cn\",\"givenName\":\"魏伟\",\"mobile\":\"13900000000\",\"title\":\"项目管理\",\"userid\":\"weiwei\",\"orgFullPath\":\"foton/福田汽车集团/FU/精益运营推进部/精益推进部\",\"employeeNumber\":\"00001272\",\"modifyTime\":\"20210702032217Z\",\"name\":\"魏伟\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40011052\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代其他人才市场\",\"gender\":\"男\",\"mail\":\"weixiangkun@foton.com.cn\",\"givenName\":\"魏相坤\",\"mobile\":\"13900000000\",\"title\":\"人才市场\",\"userid\":\"weixiangkun\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/其他/人才市场\",\"employeeNumber\":\"00033960\",\"modifyTime\":\"20210702021204Z\",\"name\":\"魏相坤\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40012953\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"null\",\"gender\":\"男\",\"mail\":\"wenhaipeng@foton.com.cn\",\"givenName\":\"温海鹏\",\"mobile\":\"13900000000\",\"title\":\"超卡工厂零部件质量响应\",\"userid\":\"wenhaipeng\",\"orgFullPath\":\"foton/福田汽车集团/BU/奥铃事业部/山东超级卡车工厂/采购管理部/零部件质量响应业务\",\"employeeNumber\":\"00033367\",\"modifyTime\":\"20210702030409Z\",\"name\":\"温海鹏\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40014604\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田物流技信息技术部IT系统科\",\"gender\":\"女\",\"mail\":\"weiyongjie@foton.com.cn\",\"givenName\":\"魏永杰\",\"mobile\":\"13900000000\",\"title\":\"零部件物流系统规划及实施\",\"userid\":\"weiyongjie\",\"orgFullPath\":\"foton/福田汽车集团/其它/物流公司/信息技术部/IT系统科\",\"employeeNumber\":\"01036771\",\"modifyTime\":\"20210702021205Z\",\"name\":\"魏永杰\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"30000413\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田模具制造模具车间\",\"gender\":\"男\",\"mail\":\"weiying@foton.com.cn\",\"givenName\":\"魏颖\",\"mobile\":\"13900000000\",\"title\":\"主任\",\"userid\":\"weiying\",\"orgFullPath\":\"foton/福田汽车集团/BU/模具工厂/模具制造部/模具车间\",\"employeeNumber\":\"00026806\",\"modifyTime\":\"20210702033626Z\",\"name\":\"魏颖\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"30002959\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代瑞沃营销诸城销售公司销售部\",\"gender\":\"男\",\"mail\":\"weiwei4@foton.com.cn\",\"givenName\":\"魏伟4\",\"mobile\":\"13900000000\",\"title\":\"计划管理\",\"userid\":\"weiwei4\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/瑞沃营销公司/诸城销售公司/销售部\",\"employeeNumber\":\"00014185\",\"modifyTime\":\"20210702021204Z\",\"name\":\"魏伟\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013967\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"宝沃研发电动汽车技术中心电池系统部电池系统科\",\"gender\":\"女\",\"mail\":\"weixiaowei@borgward.com\",\"givenName\":\"卫晓薇\",\"mobile\":\"13900000000\",\"title\":\"电池系统工程师\",\"userid\":\"weixiaowei\",\"orgFullPath\":\"foton/福田汽车集团/宝沃汽车集团/宝沃中国/工程研究院/电动汽车技术中心/电池系统部/电池系统科\",\"employeeNumber\":\"60006174\",\"modifyTime\":\"20210702021204Z\",\"name\":\"卫晓薇\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"10013443\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"宝沃研发发动机性能与分析部\",\"gender\":\"男\",\"mail\":\"weipiyong@borgward.com\",\"givenName\":\"魏丕勇\",\"mobile\":\"13900000000\",\"title\":\"总工\",\"userid\":\"weipiyong\",\"orgFullPath\":\"foton/福田汽车集团/宝沃汽车集团/宝沃中国/工程研究院/发动机性能与分析部\",\"employeeNumber\":\"60006094\",\"modifyTime\":\"20210702021203Z\",\"name\":\"魏丕勇\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"10013343\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田营销客服北京客户互动中心\",\"gender\":\"女\",\"mail\":\"weiyanliang@foton.com.cn\",\"givenName\":\"魏颜靓\",\"mobile\":\"13900000000\",\"title\":\"车联网组坐席\",\"userid\":\"weiyanliang\",\"orgFullPath\":\"foton/福田汽车集团/FU/营销总公司/客户服务中心/北京客户互动中心\",\"employeeNumber\":\"00001376\",\"modifyTime\":\"20210702033558Z\",\"name\":\"魏颜靓\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40007123\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代财务\",\"gender\":\"女\",\"mail\":\"weishasha@foton.com.cn\",\"givenName\":\"魏莎莎\",\"mobile\":\"13900000000\",\"title\":\"技术开发费管理兼三产\",\"userid\":\"weishasha\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/财务管理部\",\"employeeNumber\":\"00030311\",\"modifyTime\":\"20210702021203Z\",\"name\":\"魏莎莎\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40006585\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代长沙工厂制造部\",\"gender\":\"男\",\"mail\":\"wenjianbo@foton.com.cn\",\"givenName\":\"温建波\",\"mobile\":\"13900000000\",\"title\":\"设备能源业务经理\",\"userid\":\"wenjianbo\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/长沙工厂/制造部\",\"employeeNumber\":\"00016254\",\"modifyTime\":\"20210702021206Z\",\"name\":\"温建波\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40006416\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田奥铃其他\",\"gender\":\"男\",\"mail\":\"wenxianshun@foton.com.cn\",\"givenName\":\"温显顺\",\"mobile\":\"null\",\"title\":\"内退\",\"userid\":\"wenxianshun\",\"orgFullPath\":\"foton/福田汽车集团/BU/奥铃事业部/其他\",\"employeeNumber\":\"00001937\",\"modifyTime\":\"20210702034054Z\",\"name\":\"温显顺\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40012304\",\"pwdChangedTime\":\"null\"},{\"userStatus\":\"1\",\"orgName\":\"福田时代营销配件\",\"gender\":\"男\",\"mail\":\"wenjinfa@foton.com.cn\",\"givenName\":\"温金法\",\"mobile\":\"13900000000\",\"title\":\"电器配件采购管理\",\"userid\":\"wenjinfa\",\"orgFullPath\":\"foton/福田汽车集团/SBU/时代事业部/时代营销公司/配件管理部\",\"employeeNumber\":\"00014247\",\"modifyTime\":\"20210702021206Z\",\"name\":\"温金法\",\"userType\":\"E1\",\"ds-pwp-account-expiration-time\":\"null\",\"orgNumber\":\"40013208\",\"pwdChangedTime\":\"null\"}]}"; + JSONObject jsonObject= JSON.parseObject(json); + JSONArray jsonArray=jsonObject.getJSONArray("results"); + List syncUsers=jsonArray.toJavaList(SyncUser.class); + for(SyncUser syncUser:syncUsers){ + QueryWrapper positionQueryWrapper=new QueryWrapper<>(); + positionQueryWrapper.eq("name",syncUser.getTitle()); + TsPosition tsPosition=tsPositionDao.selectOne(positionQueryWrapper); + if(tsPosition==null){ + tsPosition=new TsPosition(); + tsPosition.setName(syncUser.getTitle()); + tsPosition.setType("1"); + tsPositionDao.insert(tsPosition); + } + TsUser tsUser=SyncUser.toUser(syncUser); + tsUser.setPositionId(tsPosition.getId()); + tsUserDao.insert(tsUser); + + } + } + + @Override + public List getSecondMenusByUserId(String userId) { + List positionIds=tsUserDao.selectPositionIds(userId); + List roleIds=tsPositionService.getRoleIdsByPositionIds(positionIds); + List menuIds=tsRoleService.getMenuIdsByRoleIds(roleIds); + return sarMenuService.getSecondMenuByIds(menuIds); + } + + @Override + public List selectByName(String name) { + QueryWrapper tsUserQueryWrapper=new QueryWrapper<>(); + tsUserQueryWrapper.like("ACCOUNT",name); + tsUserQueryWrapper.or().like("UNAME",name); + List res= tsUserDao.selectList(tsUserQueryWrapper); + List result=new ArrayList<>(); + res.forEach(tsUser -> { + UpDTO upDTO=new UpDTO(); + upDTO.setValue(tsUser.getUname()+"("+tsUser.getAccount()+")"); + upDTO.setId(tsUser.getUserId()); + result.add(upDTO); + }); + return result; + } + + @Override + public List selectNameById(List strings,String type) { + QueryWrapper tsUserQueryWrapper=new QueryWrapper<>(); + tsUserQueryWrapper.in("ACCOUNT",strings); + QueryWrapper nameQueryWrapper=new QueryWrapper<>(); + nameQueryWrapper.in("UNAME",strings); + List res= tsUserDao.selectList(tsUserQueryWrapper); + List res1= tsUserDao.selectList(nameQueryWrapper); + res1.removeIf(tsUser -> res.contains(tsUser)); + res.addAll(res1); + List result=new ArrayList<>(); + res.forEach(tsUser -> { + UpDTO upDTO=new UpDTO(); + upDTO.setValue(tsUser.getUname()+"("+tsUser.getAccount()+")"); + upDTO.setId(tsUser.getUserId()); + result.add(upDTO); + }); + return result; + } + + @Override + public IPage getAllUsers(TsUser tsUser) { + List ids=new ArrayList<>(); + ids.add(tsUser.getInstitutionId()); + List middle=new ArrayList<>(); + middle.addAll(ids); + boolean flag=true; + while (flag){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.in("parent_id",middle); + List tsmiddle=tsInstitutionService.list(queryWrapper); + if (tsmiddle.size()>0){ + tsmiddle.forEach(tsInstitution -> { + middle.add(tsInstitution.getId()); + }); + middle.removeAll(ids); + ids.addAll(middle); + }else { + tsmiddle.forEach(tsInstitution -> { + middle.add(tsInstitution.getId()); + }); + middle.removeAll(ids); + ids.addAll(middle); + flag=false; + } + } + ids.removeIf(s -> null==s); + List tsUsers = tsUserDao.userUnderInstitution((tsUser.getCurrent() - 1) * tsUser.getSize(), tsUser.getSize(), tsUser, ids); + if(tsUsers!=null && !tsUsers.isEmpty()){ + for (TsUser user:tsUsers) { + List positionList = tsPositionService.getPositionDataByUserId(user.getUserId()); + user.setPositions(positionList); + } + } + + Page tsUserPage = new Page<>(); + tsUserPage.setCurrent(tsUser.getCurrent()); + tsUserPage.setSize(tsUser.getSize()); + tsUserPage.setRecords(tsUsers); + tsUserPage.setTotal(tsUserDao.userUnderInstitutionCount(tsUser,ids)); + + return tsUserPage; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/controller/SarVppsTreeController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/controller/SarVppsTreeController.java new file mode 100644 index 00000000..6865fbd8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/controller/SarVppsTreeController.java @@ -0,0 +1,52 @@ +package com.adc.da.slrs.sarVppsTree.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sarVppsTree.service.ISarVppsTreeService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sarVppsTree.entity.SarVppsTree; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-15 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库-Vpps树结构") +@RequestMapping("/${restPath}/sarVppsTree") +public class SarVppsTreeController extends BaseController { + + @Autowired + private ISarVppsTreeService iSarVppsTreeService; + + @ApiOperation("查询父所有资源") + @GetMapping("/list") + public ResponseMessage> getAll(SarVppsTree sarVppsTree){ + List tsResources = iSarVppsTreeService.getAll(sarVppsTree); + return Result.success(tsResources); + } + + @ApiOperation("根据父ID查询子所有资源") + @GetMapping("/childByList") + public ResponseMessage> childByList(SarVppsTree parent){ +// SarVppsTree tree = new SarVppsTree(); +// tree.setId(ids); + List tsResources = iSarVppsTreeService.recursionGetChildren(parent); + return Result.success(tsResources); + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/dao/SarVppsTreeDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/dao/SarVppsTreeDao.java new file mode 100644 index 00000000..b91948c6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/dao/SarVppsTreeDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sarVppsTree.dao; + +import com.adc.da.slrs.sarVppsTree.entity.SarVppsTree; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-15 + */ +public interface SarVppsTreeDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/entity/SarVppsTree.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/entity/SarVppsTree.java new file mode 100644 index 00000000..8e31ac90 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/entity/SarVppsTree.java @@ -0,0 +1,90 @@ +package com.adc.da.slrs.sarVppsTree.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-07-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarVppsTree对象", description="") +public class SarVppsTree extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId("ID") + private String id; + + @ApiModelProperty(value = "VPPS编码") + @TableField("VPPS_CODE") + private String vppsCode; + + @ApiModelProperty(value = "父级id") + @TableField("PID") + private String pid; + + @ApiModelProperty(value = "编码") + @TableField("CODE") + private String code; + + @ApiModelProperty(value = "中文名称") + @TableField("CHINESE_NAME") + private String chineseName; + + @ApiModelProperty(value = "中文名称") + @TableField("ENGLISH_NAME") + private String englishName; + + @ApiModelProperty(value = "删除标识 1:未删除 2:已删除") + @TableField("DEL_FLAG") + private String delFlag; + + @ApiModelProperty(value = "排序序号") + @TableField("SORT") + private Integer sort; + + @ApiModelProperty(value = "子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty(value = "上级菜单名称") + @TableField(exist = false) + private String parentIdsName; + + @ApiModelProperty("层级") + @TableField("LEVEL") + private Integer level; + + @ApiModelProperty("类型") + @TableField("TYPE") + private String type; + + @ApiModelProperty("查询子节点条件") + @TableField(exist = false) + private String nextCondition; + + @TableField(exist=false) + private List roleIds; + + @TableField(exist=false) + private List childMenuIds; + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/service/ISarVppsTreeService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/service/ISarVppsTreeService.java new file mode 100644 index 00000000..77fb0689 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/service/ISarVppsTreeService.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.sarVppsTree.service; + +import com.adc.da.slrs.sarVppsTree.entity.SarVppsTree; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-07-15 + */ +public interface ISarVppsTreeService extends IService { + + List getAll(SarVppsTree sarVppsTree); + + List recursionGetChildren(SarVppsTree parent); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/service/impl/SarVppsTreeServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/service/impl/SarVppsTreeServiceImpl.java new file mode 100644 index 00000000..fb1c648d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarVppsTree/service/impl/SarVppsTreeServiceImpl.java @@ -0,0 +1,69 @@ +package com.adc.da.slrs.sarVppsTree.service.impl; + +import com.adc.da.slrs.sarVppsTree.entity.SarVppsTree; +import com.adc.da.slrs.sarVppsTree.dao.SarVppsTreeDao; +import com.adc.da.slrs.sarVppsTree.service.ISarVppsTreeService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-15 + */ +@Service +public class SarVppsTreeServiceImpl extends ServiceImpl implements ISarVppsTreeService { + + /** + * 查询所有菜单 + * @param sarVppsTree + */ + @Override + public List getAll(SarVppsTree sarVppsTree) { + QueryWrapper tsResourceQueryWrapper=new QueryWrapper<>(); + tsResourceQueryWrapper.eq("TYPE",sarVppsTree.getType()) + .eq("LEVEL",0); + List list = this.baseMapper.selectList(tsResourceQueryWrapper); + + list.forEach(item->{ + item.setCode(item.getVppsCode()+item.getChineseName()); + item.setId("10"); + }); +// for(SarVppsTree tree:list){ +// tree.setChildren(recursionGetChildren((tree))); +// } + return list; + } + + /** + * 递归调用获取子节点 + * @param parent:父节点 + * @return List + */ + @Override + public List recursionGetChildren(SarVppsTree parent){ + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.orderByAsc("SORT"); + + sarMenuQueryWrapper.eq("LEVEL", parent.getLevel()+1) + .eq("TYPE",parent.getType()); + + + if(parent.getLevel()!=0){ + sarMenuQueryWrapper.likeRight("VPPS_CODE",parent.getId()); + } + List children=this.baseMapper.selectList(sarMenuQueryWrapper); + + children.forEach(item->{ + item.setId(item.getVppsCode()); + item.setCode(item.getVppsCode()+item.getChineseName()); + }); + return children; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/search/SearchController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/search/SearchController.java new file mode 100644 index 00000000..1377523d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/search/SearchController.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.search; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.tsDictionaryType.entity.TsSearchMenu; +import com.adc.da.slrs.tsDictionaryType.service.ITsDicTypeService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/${restPath}/search") +public class SearchController { + + @Autowired + private ITsDicTypeService iTsDictypeService; + + @ApiOperation("获取筛选条件") + @PostMapping("/getMenu") + public ResponseMessage> getSearchMenu(){ + return Result.success(iTsDictypeService.getSearchMenu()); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/EventUtils/DiffMatchPatch.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/EventUtils/DiffMatchPatch.java new file mode 100644 index 00000000..0ab2356d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/EventUtils/DiffMatchPatch.java @@ -0,0 +1,2276 @@ +package com.adc.da.slrs.standardSplit.EventUtils; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2021年11月28日 12:30 + */ +/* + * Diff Match and Patch + * + * Copyright 2006 Google Inc. + * http://code.google.com/p/google-diff-match-patch/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +/* + * Functions for diff, match and patch. + * Computes the difference between two texts to create a patch. + * Applies the patch onto another text, allowing for errors. + * + * @author fraser@google.com (Neil Fraser) + */ + +/** + * Class containing the diff, match and patch methods. + * Also contains the behaviour settings. + */ +@SuppressWarnings("all") +public class DiffMatchPatch { + + // Defaults. + // Set these on your diff_match_patch instance to override the defaults. + + /** + * Number of seconds to map a diff before giving up (0 for infinity). + */ + public float Diff_Timeout = 1.0f; + /** + * Cost of an empty edit operation in terms of edit characters. + */ + public short Diff_EditCost = 4; + /** + * The size beyond which the double-ended diff activates. + * Double-ending is twice as fast, but less accurate. + */ + public short Diff_DualThreshold = 32; + /** + * At what point is no match declared (0.0 = perfection, 1.0 = very loose). + */ + public float Match_Threshold = 0.5f; + /** + * How far to search for a match (0 = exact location, 1000+ = broad match). + * A match this many characters away from the expected location will add + * 1.0 to the score (0.0 is a perfect match). + */ + public int Match_Distance = 1000; + /** + * When deleting a large block of text (over ~64 characters), how close does + * the contents have to match the expected contents. (0.0 = perfection, + * 1.0 = very loose). Note that Match_Threshold controls how closely the + * end points of a delete need to match. + */ + public float Patch_DeleteThreshold = 0.5f; + /** + * Chunk size for context length. + */ + public short Patch_Margin = 4; + /** + * The number of bits in an int. + */ + private int Match_MaxBits = 32; + + /** + * Internal class for returning results from diff_linesToChars(). + * Other less paranoid languages just use a three-element array. + */ + protected static class LinesToCharsResult { + protected String chars1; + protected String chars2; + protected List lineArray; + + protected LinesToCharsResult(String chars1, String chars2, + List lineArray) { + this.chars1 = chars1; + this.chars2 = chars2; + this.lineArray = lineArray; + } + } + // DIFF FUNCTIONS + /** + * The data structure representing a diff is a Linked list of Diff objects: + * {Diff(Operation.DELETE, "Hello"), Diff(Operation.INSERT, "Goodbye"), + * Diff(Operation.EQUAL, " world.")} + * which means: delete "Hello", add "Goodbye" and keep " world." + */ + public enum Operation { + DELETE, INSERT, EQUAL + } + /** + * Find the differences between two texts. + * Run a faster slightly less optimal diff + * This method allows the 'checklines' of diff_main() to be optional. + * Most of the time checklines is wanted, so default to true. + * @param text1 Old string to be diffed. + * @param text2 New string to be diffed. + * @return Linked List of Diff objects. + */ + public LinkedList diff_main(String text1, String text2) { + return diff_main(text1, text2, true); + } + /** + * Find the differences between two texts. Simplifies the problem by + * stripping any common prefix or suffix off the texts before diffing. + * @param text1 Old string to be diffed. + * @param text2 New string to be diffed. + * @param checklines Speedup flag. If false, then don't run a + * line-level diff first to identify the changed areas. + * If true, then run a faster slightly less optimal diff + * @return Linked List of Diff objects. + */ + public LinkedList diff_main(String text1, String text2, boolean checklines) { + // Check for equality (speedup) + LinkedList diffs; + if (text1.equals(text2)) { + diffs = new LinkedList(); + diffs.add(new Diff(Operation.EQUAL, text1)); + return diffs; + } + // Trim off common prefix (speedup) + int commonlength = diff_commonPrefix(text1, text2); + String commonprefix = text1.substring(0, commonlength); + text1 = text1.substring(commonlength); + text2 = text2.substring(commonlength); + // Trim off common suffix (speedup) + commonlength = diff_commonSuffix(text1, text2); + String commonsuffix = text1.substring(text1.length() - commonlength); + text1 = text1.substring(0, text1.length() - commonlength); + text2 = text2.substring(0, text2.length() - commonlength); + // Compute the diff on the middle block + diffs = diff_compute(text1, text2, checklines); + + // Restore the prefix and suffix + if (commonprefix.length() != 0) { + diffs.addFirst(new Diff(Operation.EQUAL, commonprefix)); + } + if (commonsuffix.length() != 0) { + diffs.addLast(new Diff(Operation.EQUAL, commonsuffix)); + } + diff_cleanupMerge(diffs); + return diffs; + } + /** + * Find the differences between two texts. Assumes that the texts do not + * have any common prefix or suffix. + * @param text1 Old string to be diffed. + * @param text2 New string to be diffed. + * @param checklines Speedup flag. If false, then don't run a + * line-level diff first to identify the changed areas. + * If true, then run a faster slightly less optimal diff + * @return Linked List of Diff objects. + */ + protected LinkedList diff_compute(String text1, String text2,boolean checklines) { + LinkedList diffs = new LinkedList(); + if (text1.length() == 0) { + // Just add some text (speedup) + diffs.add(new Diff(Operation.INSERT, text2)); + return diffs; + } + if (text2.length() == 0) { + // Just delete some text (speedup) + diffs.add(new Diff(Operation.DELETE, text1)); + return diffs; + } + String longtext = text1.length() > text2.length() ? text1 : text2; + String shorttext = text1.length() > text2.length() ? text2 : text1; + int i = longtext.indexOf(shorttext); + if (i != -1) { + // Shorter text is inside the longer text (speedup) + Operation op = (text1.length() > text2.length()) ? + Operation.DELETE : Operation.INSERT; + diffs.add(new Diff(op, longtext.substring(0, i))); + diffs.add(new Diff(Operation.EQUAL, shorttext)); + diffs.add(new Diff(op, longtext.substring(i + shorttext.length()))); + return diffs; + } + longtext = shorttext = null; // Garbage collect. + // Check to see if the problem can be split in two. + String[] hm = diff_halfMatch(text1, text2); + if (hm != null) { + // A half-match was found, sort out the return data. + String text1_a = hm[0]; + String text1_b = hm[1]; + String text2_a = hm[2]; + String text2_b = hm[3]; + String mid_common = hm[4]; + // Send both pairs off for separate processing. + LinkedList diffs_a = diff_main(text1_a, text2_a, checklines); + LinkedList diffs_b = diff_main(text1_b, text2_b, checklines); + // Merge the results. + diffs = diffs_a; + diffs.add(new Diff(Operation.EQUAL, mid_common)); + diffs.addAll(diffs_b); + return diffs; + } + // Perform a real diff. + if (checklines && (text1.length() < 100 || text2.length() < 100)) { + checklines = false; // Too trivial for the overhead. + } + List linearray = null; + if (checklines) { + // Scan the text on a line-by-line basis first. + LinesToCharsResult b = diff_linesToChars(text1, text2); + text1 = b.chars1; + text2 = b.chars2; + linearray = b.lineArray; + } + diffs = diff_map(text1, text2); + if (diffs == null) { + // No acceptable result. + diffs = new LinkedList(); + diffs.add(new Diff(Operation.DELETE, text1)); + diffs.add(new Diff(Operation.INSERT, text2)); + } + if (checklines) { + // Convert the diff back to original text. + diff_charsToLines(diffs, linearray); + // Eliminate freak matches (e.g. blank lines) + diff_cleanupSemantic(diffs); + // Rediff any replacement blocks, this time character-by-character. + // Add a dummy entry at the end. + diffs.add(new Diff(Operation.EQUAL, "")); + int count_delete = 0; + int count_insert = 0; + String text_delete = ""; + String text_insert = ""; + ListIterator pointer = diffs.listIterator(); + Diff thisDiff = pointer.next(); + while (thisDiff != null) { + switch (thisDiff.operation) { + case INSERT: + count_insert++; + text_insert += thisDiff.text; + break; + case DELETE: + count_delete++; + text_delete += thisDiff.text; + break; + case EQUAL: + // Upon reaching an equality, check for prior redundancies. + if (count_delete >= 1 && count_insert >= 1) { + // Delete the offending records and add the merged ones. + pointer.previous(); + for (int j = 0; j < count_delete + count_insert; j++) { + pointer.previous(); + pointer.remove(); + } + for (Diff newDiff : diff_main(text_delete, text_insert, false)) { + pointer.add(newDiff); + } + } + count_insert = 0; + count_delete = 0; + text_delete = ""; + text_insert = ""; + break; + } + thisDiff = pointer.hasNext() ? pointer.next() : null; + } + diffs.removeLast(); // Remove the dummy entry at the end. + } + return diffs; + } + /** + * Split two texts into a list of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * @param text1 First string. + * @param text2 Second string. + * @return An object containing the encoded text1, the encoded text2 and + * the List of unique strings. The zeroth element of the List of + * unique strings is intentionally blank. + */ + protected LinesToCharsResult diff_linesToChars(String text1, String text2) { + List lineArray = new ArrayList(); + Map lineHash = new HashMap(); + // e.g. linearray[4] == "Hello\n" + // e.g. linehash.get("Hello\n") == 4 + // "\x00" is a valid character, but various debuggers don't like it. + // So we'll insert a junk entry to avoid generating a null character. + lineArray.add(""); + String chars1 = diff_linesToCharsMunge(text1, lineArray, lineHash); + String chars2 = diff_linesToCharsMunge(text2, lineArray, lineHash); + return new LinesToCharsResult(chars1, chars2, lineArray); + } + /** + * Split a text into a list of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * @param text String to encode. + * @param lineArray List of unique strings. + * @param lineHash Map of strings to indices. + * @return Encoded string. + */ + private String diff_linesToCharsMunge(String text, List lineArray, + Map lineHash) { + int lineStart = 0; + int lineEnd = -1; + String line; + StringBuilder chars = new StringBuilder(); + // Walk the text, pulling out a substring for each line. + // text.split('\n') would would temporarily double our memory footprint. + // Modifying text would create many large strings to garbage collect. + while (lineEnd < text.length() - 1) { + lineEnd = text.indexOf('\n', lineStart); + if (lineEnd == -1) { + lineEnd = text.length() - 1; + } + line = text.substring(lineStart, lineEnd + 1); + lineStart = lineEnd + 1; + + if (lineHash.containsKey(line)) { + chars.append(String.valueOf((char) (int) lineHash.get(line))); + } else { + lineArray.add(line); + lineHash.put(line, lineArray.size() - 1); + chars.append(String.valueOf((char) (lineArray.size() - 1))); + } + } + return chars.toString(); + } + /** + * Rehydrate the text in a diff from a string of line hashes to real lines of + * text. + * @param diffs LinkedList of Diff objects. + * @param lineArray List of unique strings. + */ + protected void diff_charsToLines(LinkedList diffs, + List lineArray) { + StringBuilder text; + for (Diff diff : diffs) { + text = new StringBuilder(); + for (int y = 0; y < diff.text.length(); y++) { + text.append(lineArray.get(diff.text.charAt(y))); + } + diff.text = text.toString(); + } + } + /** + * Explore the intersection points between the two texts. + * @param text1 Old string to be diffed. + * @param text2 New string to be diffed. + * @return LinkedList of Diff objects or null if no diff available. + */ + protected LinkedList diff_map(String text1, String text2) { + long ms_end = System.currentTimeMillis() + (long) (Diff_Timeout * 1000); + // Cache the text lengths to prevent multiple calls. + int text1_length = text1.length(); + int text2_length = text2.length(); + int max_d = text1_length + text2_length - 1; + boolean doubleEnd = Diff_DualThreshold * 2 < max_d; + List> v_map1 = new ArrayList>(); + List> v_map2 = new ArrayList>(); + Map v1 = new HashMap(); + Map v2 = new HashMap(); + v1.put(1, 0); + v2.put(1, 0); + int x, y; + Long footstep = 0L; // Used to track overlapping paths. + Map footsteps = new HashMap(); + boolean done = false; + // If the total number of characters is odd, then the front path will + // collide with the reverse path. + boolean front = ((text1_length + text2_length) % 2 == 1); + for (int d = 0; d < max_d; d++) { + // Bail out if timeout reached. + if (Diff_Timeout > 0 && System.currentTimeMillis() > ms_end) { + return null; + } + + // Walk the front path one step. + v_map1.add(new HashSet()); // Adds at index 'd'. + for (int k = -d; k <= d; k += 2) { + if (k == -d || k != d && v1.get(k - 1) < v1.get(k + 1)) { + x = v1.get(k + 1); + } else { + x = v1.get(k - 1) + 1; + } + y = x - k; + if (doubleEnd) { + footstep = diff_footprint(x, y); + if (front && (footsteps.containsKey(footstep))) { + done = true; + } + if (!front) { + footsteps.put(footstep, d); + } + } + while (!done && x < text1_length && y < text2_length + && text1.charAt(x) == text2.charAt(y)) { + x++; + y++; + if (doubleEnd) { + footstep = diff_footprint(x, y); + if (front && (footsteps.containsKey(footstep))) { + done = true; + } + if (!front) { + footsteps.put(footstep, d); + } + } + } + v1.put(k, x); + v_map1.get(d).add(diff_footprint(x, y)); + if (x == text1_length && y == text2_length) { + // Reached the end in single-path mode. + return diff_path1(v_map1, text1, text2); + } else if (done) { + // Front path ran over reverse path. + v_map2 = v_map2.subList(0, footsteps.get(footstep) + 1); + LinkedList a = diff_path1(v_map1, text1.substring(0, x), + text2.substring(0, y)); + a.addAll(diff_path2(v_map2, text1.substring(x), text2.substring(y))); + return a; + } + } + if (doubleEnd) { + // Walk the reverse path one step. + v_map2.add(new HashSet()); // Adds at index 'd'. + for (int k = -d; k <= d; k += 2) { + if (k == -d || k != d && v2.get(k - 1) < v2.get(k + 1)) { + x = v2.get(k + 1); + } else { + x = v2.get(k - 1) + 1; + } + y = x - k; + footstep = diff_footprint(text1_length - x, text2_length - y); + if (!front && (footsteps.containsKey(footstep))) { + done = true; + } + if (front) { + footsteps.put(footstep, d); + } + while (!done && x < text1_length && y < text2_length + && text1.charAt(text1_length - x - 1) + == text2.charAt(text2_length - y - 1)) { + x++; + y++; + footstep = diff_footprint(text1_length - x, text2_length - y); + if (!front && (footsteps.containsKey(footstep))) { + done = true; + } + if (front) { + footsteps.put(footstep, d); + } + } + v2.put(k, x); + v_map2.get(d).add(diff_footprint(x, y)); + if (done) { + // Reverse path ran over front path. + v_map1 = v_map1.subList(0, footsteps.get(footstep) + 1); + LinkedList a + = diff_path1(v_map1, text1.substring(0, text1_length - x), + text2.substring(0, text2_length - y)); + a.addAll(diff_path2(v_map2, text1.substring(text1_length - x), + text2.substring(text2_length - y))); + return a; + } + } + } + } + // Number of diffs equals number of characters, no commonality at all. + return null; + } + /** + * Work from the middle back to the start to determine the path. + * @param v_map List of path sets. + * @param text1 Old string fragment to be diffed. + * @param text2 New string fragment to be diffed. + * @return LinkedList of Diff objects. + */ + protected LinkedList diff_path1(List> v_map, + String text1, String text2) { + LinkedList path = new LinkedList(); + int x = text1.length(); + int y = text2.length(); + Operation last_op = null; + for (int d = v_map.size() - 2; d >= 0; d--) { + while (true) { + if (v_map.get(d).contains(diff_footprint(x - 1, y))) { + x--; + if (last_op == Operation.DELETE) { + path.getFirst().text = text1.charAt(x) + path.getFirst().text; + } else { + path.addFirst(new Diff(Operation.DELETE, + text1.substring(x, x + 1))); + } + last_op = Operation.DELETE; + break; + } else if (v_map.get(d).contains(diff_footprint(x, y - 1))) { + y--; + if (last_op == Operation.INSERT) { + path.getFirst().text = text2.charAt(y) + path.getFirst().text; + } else { + path.addFirst(new Diff(Operation.INSERT, + text2.substring(y, y + 1))); + } + last_op = Operation.INSERT; + break; + } else { + x--; + y--; + assert (text1.charAt(x) == text2.charAt(y)) + : "No diagonal. Can't happen. (diff_path1)"; + if (last_op == Operation.EQUAL) { + path.getFirst().text = text1.charAt(x) + path.getFirst().text; + } else { + path.addFirst(new Diff(Operation.EQUAL, text1.substring(x, x + 1))); + } + last_op = Operation.EQUAL; + } + } + } + return path; + } + /** + * Work from the middle back to the end to determine the path. + * @param v_map List of path sets. + * @param text1 Old string fragment to be diffed. + * @param text2 New string fragment to be diffed. + * @return LinkedList of Diff objects. + */ + protected LinkedList diff_path2(List> v_map, + String text1, String text2) { + LinkedList path = new LinkedList(); + int x = text1.length(); + int y = text2.length(); + Operation last_op = null; + for (int d = v_map.size() - 2; d >= 0; d--) { + while (true) { + if (v_map.get(d).contains(diff_footprint(x - 1, y))) { + x--; + if (last_op == Operation.DELETE) { + path.getLast().text += text1.charAt(text1.length() - x - 1); + } else { + path.addLast(new Diff(Operation.DELETE, + text1.substring(text1.length() - x - 1, text1.length() - x))); + } + last_op = Operation.DELETE; + break; + } else if (v_map.get(d).contains(diff_footprint(x, y - 1))) { + y--; + if (last_op == Operation.INSERT) { + path.getLast().text += text2.charAt(text2.length() - y - 1); + } else { + path.addLast(new Diff(Operation.INSERT, + text2.substring(text2.length() - y - 1, text2.length() - y))); + } + last_op = Operation.INSERT; + break; + } else { + x--; + y--; + assert (text1.charAt(text1.length() - x - 1) + == text2.charAt(text2.length() - y - 1)) + : "No diagonal. Can't happen. (diff_path2)"; + if (last_op == Operation.EQUAL) { + path.getLast().text += text1.charAt(text1.length() - x - 1); + } else { + path.addLast(new Diff(Operation.EQUAL, + text1.substring(text1.length() - x - 1, text1.length() - x))); + } + last_op = Operation.EQUAL; + } + } + } + return path; + } + /** + * Compute a good hash of two integers. + * @param x First int. + * @param y Second int. + * @return A long made up of both ints. + */ + protected long diff_footprint(int x, int y) { + // The maximum size for a long is 9,223,372,036,854,775,807 + // The maximum size for an int is 2,147,483,647 + // Two ints fit nicely in one long. + long result = x; + result = result << 32; + result += y; + return result; + } + /** + * Determine the common prefix of two strings + * @param text1 First string. + * @param text2 Second string. + * @return The number of characters common to the start of each string. + */ + public int diff_commonPrefix(String text1, String text2) { + // Performance analysis: http://neil.fraser.name/news/2007/10/09/ + int n = Math.min(text1.length(), text2.length()); + for (int i = 0; i < n; i++) { + if (text1.charAt(i) != text2.charAt(i)) { + return i; + } + } + return n; + } + /** + * Determine the common suffix of two strings + * @param text1 First string. + * @param text2 Second string. + * @return The number of characters common to the end of each string. + */ + public int diff_commonSuffix(String text1, String text2) { + // Performance analysis: http://neil.fraser.name/news/2007/10/09/ + int text1_length = text1.length(); + int text2_length = text2.length(); + int n = Math.min(text1_length, text2_length); + for (int i = 1; i <= n; i++) { + if (text1.charAt(text1_length - i) != text2.charAt(text2_length - i)) { + return i - 1; + } + } + return n; + } + /** + * Do the two texts share a substring which is at least half the length of + * the longer text? + * @param text1 First string. + * @param text2 Second string. + * @return Five element String array, containing the prefix of text1, the + * suffix of text1, the prefix of text2, the suffix of text2 and the + * common middle. Or null if there was no match. + */ + protected String[] diff_halfMatch(String text1, String text2) { + String longtext = text1.length() > text2.length() ? text1 : text2; + String shorttext = text1.length() > text2.length() ? text2 : text1; + if (longtext.length() < 10 || shorttext.length() < 1) { + return null; // Pointless. + } + + // First check if the second quarter is the seed for a half-match. + String[] hm1 = diff_halfMatchI(longtext, shorttext, + (longtext.length() + 3) / 4); + // Check again based on the third quarter. + String[] hm2 = diff_halfMatchI(longtext, shorttext, + (longtext.length() + 1) / 2); + String[] hm; + if (hm1 == null && hm2 == null) { + return null; + } else if (hm2 == null) { + hm = hm1; + } else if (hm1 == null) { + hm = hm2; + } else { + // Both matched. Select the longest. + hm = hm1[4].length() > hm2[4].length() ? hm1 : hm2; + } + // A half-match was found, sort out the return data. + if (text1.length() > text2.length()) { + return hm; + //return new String[]{hm[0], hm[1], hm[2], hm[3], hm[4]}; + } else { + return new String[]{hm[2], hm[3], hm[0], hm[1], hm[4]}; + } + } + /** + * Does a substring of shorttext exist within longtext such that the + * substring is at least half the length of longtext? + * @param longtext Longer string. + * @param shorttext Shorter string. + * @param i Start index of quarter length substring within longtext. + * @return Five element String array, containing the prefix of longtext, the + * suffix of longtext, the prefix of shorttext, the suffix of shorttext + * and the common middle. Or null if there was no match. + */ + private String[] diff_halfMatchI(String longtext, String shorttext, int i) { + // Start with a 1/4 length substring at position i as a seed. + String seed = longtext.substring(i, i + longtext.length() / 4); + int j = -1; + String best_common = ""; + String best_longtext_a = "", best_longtext_b = ""; + String best_shorttext_a = "", best_shorttext_b = ""; + while ((j = shorttext.indexOf(seed, j + 1)) != -1) { + int prefixLength = diff_commonPrefix(longtext.substring(i), shorttext.substring(j)); + int suffixLength = diff_commonSuffix(longtext.substring(0, i), + shorttext.substring(0, j)); + if (best_common.length() < suffixLength + prefixLength) { + best_common = shorttext.substring(j - suffixLength, j) + + shorttext.substring(j, j + prefixLength); + best_longtext_a = longtext.substring(0, i - suffixLength); + best_longtext_b = longtext.substring(i + prefixLength); + best_shorttext_a = shorttext.substring(0, j - suffixLength); + best_shorttext_b = shorttext.substring(j + prefixLength); + } + } + if (best_common.length() >= longtext.length() / 2) { + return new String[]{best_longtext_a, best_longtext_b, + best_shorttext_a, best_shorttext_b, best_common}; + } else { + return null; + } + } + /** + * Reduce the number of edits by eliminating semantically trivial equalities. + * @param diffs LinkedList of Diff objects. + */ + public void diff_cleanupSemantic(LinkedList diffs) { + if (diffs.isEmpty()) { + return; + } + boolean changes = false; + Stack equalities = new Stack(); // Stack of qualities. + String lastequality = null; // Always equal to equalities.lastElement().text + ListIterator pointer = diffs.listIterator(); + // Number of characters that changed prior to the equality. + int length_changes1 = 0; + // Number of characters that changed after the equality. + int length_changes2 = 0; + Diff thisDiff = pointer.next(); + while (thisDiff != null) { + if (thisDiff.operation == Operation.EQUAL) { + // equality found + equalities.push(thisDiff); + length_changes1 = length_changes2; + length_changes2 = 0; + lastequality = thisDiff.text; + } else { + // an insertion or deletion + length_changes2 += thisDiff.text.length(); + if (lastequality != null && (lastequality.length() <= length_changes1) + && (lastequality.length() <= length_changes2)) { + //System.out.println("Splitting: '" + lastequality + "'"); + // Walk back to offending equality. + while (thisDiff != equalities.lastElement()) { + thisDiff = pointer.previous(); + } + pointer.next(); + // Replace equality with a delete. + pointer.set(new Diff(Operation.DELETE, lastequality)); + // Insert a corresponding an insert. + pointer.add(new Diff(Operation.INSERT, lastequality)); + + equalities.pop(); // Throw away the equality we just deleted. + if (!equalities.empty()) { + // Throw away the previous equality (it needs to be reevaluated). + equalities.pop(); + } + if (equalities.empty()) { + // There are no previous equalities, walk back to the start. + while (pointer.hasPrevious()) { + pointer.previous(); + } + } else { + // There is a safe equality we can fall back to. + thisDiff = equalities.lastElement(); + while (thisDiff != pointer.previous()) { + // Intentionally empty loop. + } + } + length_changes1 = 0; // Reset the counters. + length_changes2 = 0; + lastequality = null; + changes = true; + } + } + thisDiff = pointer.hasNext() ? pointer.next() : null; + } + if (changes) { + diff_cleanupMerge(diffs); + } + diff_cleanupSemanticLossless(diffs); + } + /** + * Look for single edits surrounded on both sides by equalities + * which can be shifted sideways to align the edit to a word boundary. + * e.g: The cat came. -> The cat came. + * @param diffs LinkedList of Diff objects. + */ + public void diff_cleanupSemanticLossless(LinkedList diffs) { + String equality1, edit, equality2; + String commonString; + int commonOffset; + int score, bestScore; + String bestEquality1, bestEdit, bestEquality2; + // Create a new iterator at the start. + ListIterator pointer = diffs.listIterator(); + Diff prevDiff = pointer.hasNext() ? pointer.next() : null; + Diff thisDiff = pointer.hasNext() ? pointer.next() : null; + Diff nextDiff = pointer.hasNext() ? pointer.next() : null; + // Intentionally ignore the first and last element (don't need checking). + while (nextDiff != null) { + if (prevDiff.operation == Operation.EQUAL && + nextDiff.operation == Operation.EQUAL) { + // This is a single edit surrounded by equalities. + equality1 = prevDiff.text; + edit = thisDiff.text; + equality2 = nextDiff.text; + + // First, shift the edit as far left as possible. + commonOffset = diff_commonSuffix(equality1, edit); + if (commonOffset != 0) { + commonString = edit.substring(edit.length() - commonOffset); + equality1 = equality1.substring(0, equality1.length() - commonOffset); + edit = commonString + edit.substring(0, edit.length() - commonOffset); + equality2 = commonString + equality2; + } + // Second, step character by character right, looking for the best fit. + bestEquality1 = equality1; + bestEdit = edit; + bestEquality2 = equality2; + bestScore = diff_cleanupSemanticScore(equality1, edit) + + diff_cleanupSemanticScore(edit, equality2); + while (edit.length() != 0 && equality2.length() != 0 + && edit.charAt(0) == equality2.charAt(0)) { + equality1 += edit.charAt(0); + edit = edit.substring(1) + equality2.charAt(0); + equality2 = equality2.substring(1); + score = diff_cleanupSemanticScore(equality1, edit) + + diff_cleanupSemanticScore(edit, equality2); + // The >= encourages trailing rather than leading whitespace on edits. + if (score >= bestScore) { + bestScore = score; + bestEquality1 = equality1; + bestEdit = edit; + bestEquality2 = equality2; + } + } + + if (!prevDiff.text.equals(bestEquality1)) { + // We have an improvement, save it back to the diff. + if (bestEquality1.length() != 0) { + prevDiff.text = bestEquality1; + } else { + pointer.previous(); // Walk past nextDiff. + pointer.previous(); // Walk past thisDiff. + pointer.previous(); // Walk past prevDiff. + pointer.remove(); // Delete prevDiff. + pointer.next(); // Walk past thisDiff. + pointer.next(); // Walk past nextDiff. + } + thisDiff.text = bestEdit; + if (bestEquality2.length() != 0) { + nextDiff.text = bestEquality2; + } else { + pointer.remove(); // Delete nextDiff. + nextDiff = thisDiff; + thisDiff = prevDiff; + } + } + } + prevDiff = thisDiff; + thisDiff = nextDiff; + nextDiff = pointer.hasNext() ? pointer.next() : null; + } + } + /** + * Given two strings, compute a score representing whether the internal + * boundary falls on logical boundaries. + * Scores range from 5 (best) to 0 (worst). + * @param one First string. + * @param two Second string. + * @return The score. + */ + private int diff_cleanupSemanticScore(String one, String two) { + if (one.length() == 0 || two.length() == 0) { + // Edges are the best. + return 5; + } + // Each port of this function behaves slightly differently due to + // subtle differences in each language's definition of things like + // 'whitespace'. Since this function's purpose is largely cosmetic, + // the choice has been made to use each language's native features + // rather than force total conformity. + int score = 0; + // One point for non-alphanumeric. + if (!Character.isLetterOrDigit(one.charAt(one.length() - 1)) + || !Character.isLetterOrDigit(two.charAt(0))) { + score++; + // Two points for whitespace. + if (Character.isWhitespace(one.charAt(one.length() - 1)) + || Character.isWhitespace(two.charAt(0))) { + score++; + // Three points for line breaks. + if (Character.getType(one.charAt(one.length() - 1)) == Character.CONTROL + || Character.getType(two.charAt(0)) == Character.CONTROL) { + score++; + // Four points for blank lines. + if (BLANKLINEEND.matcher(one).find() + || BLANKLINESTART.matcher(two).find()) { + score++; + } + } + } + } + return score; + } + private Pattern BLANKLINEEND + = Pattern.compile("\\n\\r?\\n\\Z", Pattern.DOTALL); + private Pattern BLANKLINESTART + = Pattern.compile("\\A\\r?\\n\\r?\\n", Pattern.DOTALL); + /** + * Reduce the number of edits by eliminating operationally trivial equalities. + * @param diffs LinkedList of Diff objects. + */ + public void diff_cleanupEfficiency(LinkedList diffs) { + if (diffs.isEmpty()) { + return; + } + boolean changes = false; + Stack equalities = new Stack(); // Stack of equalities. + String lastequality = null; // Always equal to equalities.lastElement().text + ListIterator pointer = diffs.listIterator(); + // Is there an insertion operation before the last equality. + boolean pre_ins = false; + // Is there a deletion operation before the last equality. + boolean pre_del = false; + // Is there an insertion operation after the last equality. + boolean post_ins = false; + // Is there a deletion operation after the last equality. + boolean post_del = false; + Diff thisDiff = pointer.next(); + Diff safeDiff = thisDiff; // The last Diff that is known to be unsplitable. + while (thisDiff != null) { + if (thisDiff.operation == Operation.EQUAL) { + // equality found + if (thisDiff.text.length() < Diff_EditCost && (post_ins || post_del)) { + // Candidate found. + equalities.push(thisDiff); + pre_ins = post_ins; + pre_del = post_del; + lastequality = thisDiff.text; + } else { + // Not a candidate, and can never become one. + equalities.clear(); + lastequality = null; + safeDiff = thisDiff; + } + post_ins = post_del = false; + } else { + // an insertion or deletion + if (thisDiff.operation == Operation.DELETE) { + post_del = true; + } else { + post_ins = true; + } + /* + * Five types to be split: + * ABXYCD + * AXCD + * ABXC + * AXCD + * ABXC + */ + if (lastequality != null + && ((pre_ins && pre_del && post_ins && post_del) + || ((lastequality.length() < Diff_EditCost / 2) + && ((pre_ins ? 1 : 0) + (pre_del ? 1 : 0) + + (post_ins ? 1 : 0) + (post_del ? 1 : 0)) == 3))) { + //System.out.println("Splitting: '" + lastequality + "'"); + // Walk back to offending equality. + while (thisDiff != equalities.lastElement()) { + thisDiff = pointer.previous(); + } + pointer.next(); + + // Replace equality with a delete. + pointer.set(new Diff(Operation.DELETE, lastequality)); + // Insert a corresponding an insert. + pointer.add(thisDiff = new Diff(Operation.INSERT, lastequality)); + + equalities.pop(); // Throw away the equality we just deleted. + lastequality = null; + if (pre_ins && pre_del) { + // No changes made which could affect previous entry, keep going. + post_ins = post_del = true; + equalities.clear(); + safeDiff = thisDiff; + } else { + if (!equalities.empty()) { + // Throw away the previous equality (it needs to be reevaluated). + equalities.pop(); + } + if (equalities.empty()) { + // There are no previous questionable equalities, + // walk back to the last known safe diff. + thisDiff = safeDiff; + } else { + // There is an equality we can fall back to. + thisDiff = equalities.lastElement(); + } + while (thisDiff != pointer.previous()) { + // Intentionally empty loop. + } + post_ins = post_del = false; + } + changes = true; + } + } + thisDiff = pointer.hasNext() ? pointer.next() : null; + } + if (changes) { + diff_cleanupMerge(diffs); + } + } + /** + * Reorder and merge like edit sections. Merge equalities. + * Any edit section can move as long as it doesn't cross an equality. + * @param diffs LinkedList of Diff objects. + */ + public void diff_cleanupMerge(LinkedList diffs) { + diffs.add(new Diff(Operation.EQUAL, "")); // Add a dummy entry at the end. + ListIterator pointer = diffs.listIterator(); + int count_delete = 0; + int count_insert = 0; + String text_delete = ""; + String text_insert = ""; + Diff thisDiff = pointer.next(); + Diff prevEqual = null; + int commonlength; + while (thisDiff != null) { + switch (thisDiff.operation) { + case INSERT: + count_insert++; + text_insert += thisDiff.text; + prevEqual = null; + break; + case DELETE: + count_delete++; + text_delete += thisDiff.text; + prevEqual = null; + break; + case EQUAL: + if (count_delete != 0 || count_insert != 0) { + // Delete the offending records. + pointer.previous(); // Reverse direction. + while (count_delete-- > 0) { + pointer.previous(); + pointer.remove(); + } + while (count_insert-- > 0) { + pointer.previous(); + pointer.remove(); + } + if (count_delete != 0 && count_insert != 0) { + // Factor out any common prefixies. + commonlength = diff_commonPrefix(text_insert, text_delete); + if (commonlength != 0) { + if (pointer.hasPrevious()) { + thisDiff = pointer.previous(); + assert thisDiff.operation == Operation.EQUAL + : "Previous diff should have been an equality."; + thisDiff.text += text_insert.substring(0, commonlength); + pointer.next(); + } else { + pointer.add(new Diff(Operation.EQUAL, + text_insert.substring(0, commonlength))); + } + text_insert = text_insert.substring(commonlength); + text_delete = text_delete.substring(commonlength); + } + // Factor out any common suffixies. + commonlength = diff_commonSuffix(text_insert, text_delete); + if (commonlength != 0) { + thisDiff = pointer.next(); + thisDiff.text = text_insert.substring(text_insert.length() + - commonlength) + thisDiff.text; + text_insert = text_insert.substring(0, text_insert.length() + - commonlength); + text_delete = text_delete.substring(0, text_delete.length() + - commonlength); + pointer.previous(); + } + } + // Insert the merged records. + if (text_delete.length() != 0) { + pointer.add(new Diff(Operation.DELETE, text_delete)); + } + if (text_insert.length() != 0) { + pointer.add(new Diff(Operation.INSERT, text_insert)); + } + // Step forward to the equality. + thisDiff = pointer.hasNext() ? pointer.next() : null; + } else if (prevEqual != null) { + // Merge this equality with the previous one. + prevEqual.text += thisDiff.text; + pointer.remove(); + thisDiff = pointer.previous(); + pointer.next(); // Forward direction + } + count_insert = 0; + count_delete = 0; + text_delete = ""; + text_insert = ""; + prevEqual = thisDiff; + break; + } + thisDiff = pointer.hasNext() ? pointer.next() : null; + } + // System.out.println(diff); + if (diffs.getLast().text.length() == 0) { + diffs.removeLast(); // Remove the dummy entry at the end. + } + /* + * Second pass: look for single edits surrounded on both sides by equalities + * which can be shifted sideways to eliminate an equality. + * e.g: ABAC -> ABAC + */ + boolean changes = false; + // Create a new iterator at the start. + // (As opposed to walking the current one back.) + pointer = diffs.listIterator(); + Diff prevDiff = pointer.hasNext() ? pointer.next() : null; + thisDiff = pointer.hasNext() ? pointer.next() : null; + Diff nextDiff = pointer.hasNext() ? pointer.next() : null; + // Intentionally ignore the first and last element (don't need checking). + while (nextDiff != null) { + if (prevDiff.operation == Operation.EQUAL && + nextDiff.operation == Operation.EQUAL) { + // This is a single edit surrounded by equalities. + if (thisDiff.text.endsWith(prevDiff.text)) { + // Shift the edit over the previous equality. + thisDiff.text = prevDiff.text + thisDiff.text.substring(0, thisDiff.text.length() - prevDiff.text.length()); + nextDiff.text = prevDiff.text + nextDiff.text; + pointer.previous(); // Walk past nextDiff. + pointer.previous(); // Walk past thisDiff. + pointer.previous(); // Walk past prevDiff. + pointer.remove(); // Delete prevDiff. + pointer.next(); // Walk past thisDiff. + thisDiff = pointer.next(); // Walk past nextDiff. + nextDiff = pointer.hasNext() ? pointer.next() : null; + changes = true; + } else if (thisDiff.text.startsWith(nextDiff.text)) { + // Shift the edit over the next equality. + prevDiff.text += nextDiff.text; + thisDiff.text = thisDiff.text.substring(nextDiff.text.length()) + + nextDiff.text; + pointer.remove(); // Delete nextDiff. + nextDiff = pointer.hasNext() ? pointer.next() : null; + changes = true; + } + } + prevDiff = thisDiff; + thisDiff = nextDiff; + nextDiff = pointer.hasNext() ? pointer.next() : null; + } + // If shifts were made, the diff needs reordering and another shift sweep. + if (changes) { + diff_cleanupMerge(diffs); + } + } + /** + * loc is a location in text1, compute and return the equivalent location in + * text2. + * e.g. "The cat" vs "The big cat", 1->1, 5->8 + * @param diffs LinkedList of Diff objects. + * @param loc Location within text1. + * @return Location within text2. + */ + public int diff_xIndex(LinkedList diffs, int loc) { + int chars1 = 0; + int chars2 = 0; + int last_chars1 = 0; + int last_chars2 = 0; + Diff lastDiff = null; + for (Diff aDiff : diffs) { + if (aDiff.operation != Operation.INSERT) { + // Equality or deletion. + chars1 += aDiff.text.length(); + } + if (aDiff.operation != Operation.DELETE) { + // Equality or insertion. + chars2 += aDiff.text.length(); + } + if (chars1 > loc) { + // Overshot the location. + lastDiff = aDiff; + break; + } + last_chars1 = chars1; + last_chars2 = chars2; + } + if (lastDiff != null && lastDiff.operation == Operation.DELETE) { + // The location was deleted. + return last_chars2; + } + // Add the remaining character length. + return last_chars2 + (loc - last_chars1); + } + /** + * Convert a Diff list into a pretty HTML report. + * @param diffs LinkedList of Diff objects. + * @return HTML representation. + */ + public String diff_prettyHtml(LinkedList diffs) { + StringBuilder html = new StringBuilder(); + int i = 0; + for (Diff aDiff : diffs) { + String text = aDiff.text.replace("&", "&").replace("<", "<") + .replace(">", ">").replace("\n", "¶
    "); + switch (aDiff.operation) { + case INSERT: + html.append("").append(text).append(""); + break; + case DELETE: + html.append("").append(text).append(""); + break; + case EQUAL: + html.append("").append(text) + .append(""); + break; + } + if (aDiff.operation != Operation.DELETE) { + i += aDiff.text.length(); + } + } + return html.toString(); + } + /** + * Compute and return the source text (all equalities and deletions). + * @param diffs LinkedList of Diff objects. + * @return Source text. + */ + public String diff_text1(LinkedList diffs) { + StringBuilder text = new StringBuilder(); + for (Diff aDiff : diffs) { + if (aDiff.operation != Operation.INSERT) { + text.append(aDiff.text); + } + } + return text.toString(); + } + /** + * Compute and return the destination text (all equalities and insertions). + * @param diffs LinkedList of Diff objects. + * @return Destination text. + */ + public String diff_text2(LinkedList diffs) { + StringBuilder text = new StringBuilder(); + for (Diff aDiff : diffs) { + if (aDiff.operation != Operation.DELETE) { + text.append(aDiff.text); + } + } + return text.toString(); + } + /** + * Compute the Levenshtein distance; the number of inserted, deleted or + * substituted characters. + * @param diffs LinkedList of Diff objects. + * @return Number of changes. + */ + public int diff_levenshtein(LinkedList diffs) { + int levenshtein = 0; + int insertions = 0; + int deletions = 0; + for (Diff aDiff : diffs) { + switch (aDiff.operation) { + case INSERT: + insertions += aDiff.text.length(); + break; + case DELETE: + deletions += aDiff.text.length(); + break; + case EQUAL: + // A deletion and an insertion is one substitution. + levenshtein += Math.max(insertions, deletions); + insertions = 0; + deletions = 0; + break; + } + } + levenshtein += Math.max(insertions, deletions); + return levenshtein; + } + /** + * Crush the diff into an encoded string which describes the operations + * required to transform text1 into text2. + * E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. + * Operations are tab-separated. Inserted text is escaped using %xx notation. + * @param diffs Array of diff tuples. + * @return Delta text. + */ + public String diff_toDelta(LinkedList diffs) { + StringBuilder text = new StringBuilder(); + for (Diff aDiff : diffs) { + switch (aDiff.operation) { + case INSERT: + try { + text.append("+").append(URLEncoder.encode(aDiff.text, "UTF-8") + .replace('+', ' ')).append("\t"); + } catch (UnsupportedEncodingException e) { + // Not likely on modern system. + throw new Error("This system does not support UTF-8.", e); + } + break; + case DELETE: + text.append("-").append(aDiff.text.length()).append("\t"); + break; + case EQUAL: + text.append("=").append(aDiff.text.length()).append("\t"); + break; + } + } + String delta = text.toString(); + if (delta.length() != 0) { + // Strip off trailing tab character. + delta = delta.substring(0, delta.length() - 1); + delta = unescapeForEncodeUriCompatability(delta); + } + return delta; + } + /** + * Given the original text1, and an encoded string which describes the + * operations required to transform text1 into text2, compute the full diff. + * @param text1 Source string for the diff. + * @param delta Delta text. + * @return Array of diff tuples or null if invalid. + * @throws IllegalArgumentException If invalid input. + */ + public LinkedList diff_fromDelta(String text1, String delta) + throws IllegalArgumentException { + LinkedList diffs = new LinkedList(); + int pointer = 0; // Cursor in text1 + String[] tokens = delta.split("\t"); + for (String token : tokens) { + if (token.length() == 0) { + // Blank tokens are ok (from a trailing \t). + continue; + } + // Each token begins with a one character parameter which specifies the + // operation of this token (delete, insert, equality). + String param = token.substring(1); + switch (token.charAt(0)) { + case '+': + // decode would change all "+" to " " + param = param.replace("+", "%2B"); + try { + param = URLDecoder.decode(param, "UTF-8"); + } catch (UnsupportedEncodingException e) { + // Not likely on modern system. + throw new Error("This system does not support UTF-8.", e); + } catch (IllegalArgumentException e) { + // Malformed URI sequence. + throw new IllegalArgumentException( + "Illegal escape in diff_fromDelta: " + param, e); + } + diffs.add(new Diff(Operation.INSERT, param)); + break; + case '-': + // Fall through. + case '=': + int n; + try { + n = Integer.parseInt(param); + } catch (NumberFormatException e) { + throw new IllegalArgumentException( + "Invalid number in diff_fromDelta: " + param, e); + } + if (n < 0) { + throw new IllegalArgumentException( + "Negative number in diff_fromDelta: " + param); + } + String text; + try { + text = text1.substring(pointer, pointer += n); + } catch (StringIndexOutOfBoundsException e) { + throw new IllegalArgumentException("Delta length (" + pointer + + ") larger than source text length (" + text1.length() + + ").", e); + } + if (token.charAt(0) == '=') { + diffs.add(new Diff(Operation.EQUAL, text)); + } else { + diffs.add(new Diff(Operation.DELETE, text)); + } + break; + default: + // Anything else is an error. + throw new IllegalArgumentException( + "Invalid diff operation in diff_fromDelta: " + token.charAt(0)); + } + } + if (pointer != text1.length()) { + throw new IllegalArgumentException("Delta length (" + pointer + + ") smaller than source text length (" + text1.length() + ")."); + } + return diffs; + } + // MATCH FUNCTIONS + /** + * Locate the best instance of 'pattern' in 'text' near 'loc'. + * Returns -1 if no match found. + * @param text The text to search. + * @param pattern The pattern to search for. + * @param loc The location to search around. + * @return Best match index or -1. + */ + public int match_main(String text, String pattern, int loc) { + loc = Math.max(0, Math.min(loc, text.length())); + if (text.equals(pattern)) { + // Shortcut (potentially not guaranteed by the algorithm) + return 0; + } else if (text.length() == 0) { + // Nothing to match. + return -1; + } else if (loc + pattern.length() <= text.length() + && text.substring(loc, loc + pattern.length()).equals(pattern)) { + // Perfect match at the perfect spot! (Includes case of null pattern) + return loc; + } else { + // Do a fuzzy compare. + return match_bitap(text, pattern, loc); + } + } + /** + * Locate the best instance of 'pattern' in 'text' near 'loc' using the + * Bitap algorithm. Returns -1 if no match found. + * @param text The text to search. + * @param pattern The pattern to search for. + * @param loc The location to search around. + * @return Best match index or -1. + */ + protected int match_bitap(String text, String pattern, int loc) { + assert (Match_MaxBits == 0 || pattern.length() <= Match_MaxBits) + : "Pattern too long for this application."; + // Initialise the alphabet. + Map s = match_alphabet(pattern); + // Highest score beyond which we give up. + double score_threshold = Match_Threshold; + // Is there a nearby exact match? (speedup) + int best_loc = text.indexOf(pattern, loc); + if (best_loc != -1) { + score_threshold = Math.min(match_bitapScore(0, best_loc, loc, pattern), + score_threshold); + // What about in the other direction? (speedup) + best_loc = text.lastIndexOf(pattern, loc + pattern.length()); + if (best_loc != -1) { + score_threshold = Math.min(match_bitapScore(0, best_loc, loc, pattern), + score_threshold); + } + } + // Initialise the bit arrays. + int matchmask = 1 << (pattern.length() - 1); + best_loc = -1; + int bin_min, bin_mid; + int bin_max = pattern.length() + text.length(); + // Empty initialization added to appease Java compiler. + int[] last_rd = new int[0]; + for (int d = 0; d < pattern.length(); d++) { + // Scan for the best match; each iteration allows for one more error. + // Run a binary search to determine how far from 'loc' we can stray at + // this error level. + bin_min = 0; + bin_mid = bin_max; + while (bin_min < bin_mid) { + if (match_bitapScore(d, loc + bin_mid, loc, pattern) + <= score_threshold) { + bin_min = bin_mid; + } else { + bin_max = bin_mid; + } + bin_mid = (bin_max - bin_min) / 2 + bin_min; + } + // Use the result from this iteration as the maximum for the next. + bin_max = bin_mid; + int start = Math.max(1, loc - bin_mid + 1); + int finish = Math.min(loc + bin_mid, text.length()) + pattern.length(); + int[] rd = new int[finish + 2]; + rd[finish + 1] = (1 << d) - 1; + for (int j = finish; j >= start; j--) { + int charMatch; + if (text.length() <= j - 1 || !s.containsKey(text.charAt(j - 1))) { + // Out of range. + charMatch = 0; + } else { + charMatch = s.get(text.charAt(j - 1)); + } + if (d == 0) { + // First pass: exact match. + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; + } else { + // Subsequent passes: fuzzy match. + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch + | (((last_rd[j + 1] | last_rd[j]) << 1) | 1) | last_rd[j + 1]; + } + if ((rd[j] & matchmask) != 0) { + double score = match_bitapScore(d, j - 1, loc, pattern); + // This match will almost certainly be better than any existing + // match. But check anyway. + if (score <= score_threshold) { + // Told you so. + score_threshold = score; + best_loc = j - 1; + if (best_loc > loc) { + // When passing loc, don't exceed our current distance from loc. + start = Math.max(1, 2 * loc - best_loc); + } else { + // Already passed loc, downhill from here on in. + break; + } + } + } + } + if (match_bitapScore(d + 1, loc, loc, pattern) > score_threshold) { + // No hope for a (better) match at greater error levels. + break; + } + last_rd = rd; + } + return best_loc; + } + /** + * Compute and return the score for a match with e errors and x location. + * @param e Number of errors in match. + * @param x Location of match. + * @param loc Expected location of match. + * @param pattern Pattern being sought. + * @return Overall score for match (0.0 = good, 1.0 = bad). + */ + private double match_bitapScore(int e, int x, int loc, String pattern) { + float accuracy = (float) e / pattern.length(); + int proximity = Math.abs(loc - x); + if (Match_Distance == 0) { + // Dodge divide by zero error. + return proximity == 0 ? accuracy : 1.0; + } + return accuracy + (proximity / (float) Match_Distance); + } + /** + * Initialise the alphabet for the Bitap algorithm. + * @param pattern The text to encode. + * @return Hash of character locations. + */ + protected Map match_alphabet(String pattern) { + Map s = new HashMap(); + char[] char_pattern = pattern.toCharArray(); + for (char c : char_pattern) { + s.put(c, 0); + } + int i = 0; + for (char c : char_pattern) { + s.put(c, s.get(c) | (1 << (pattern.length() - i - 1))); + i++; + } + return s; + } + // PATCH FUNCTIONS + /** + * Increase the context until it is unique, + * but don't let the pattern expand beyond Match_MaxBits. + * @param patch The patch to grow. + * @param text Source text. + */ + protected void patch_addContext(Patch patch, String text) { + if (text.length() == 0) { + return; + } + String pattern = text.substring(patch.start2, patch.start2 + patch.length1); + int padding = 0; + // Look for the first and last matches of pattern in text. If two different + // matches are found, increase the pattern length. + while (text.indexOf(pattern) != text.lastIndexOf(pattern) + && pattern.length() < Match_MaxBits - Patch_Margin - Patch_Margin) { + padding += Patch_Margin; + pattern = text.substring(Math.max(0, patch.start2 - padding), + Math.min(text.length(), patch.start2 + patch.length1 + padding)); + } + // Add one chunk for good luck. + padding += Patch_Margin; + // Add the prefix. + String prefix = text.substring(Math.max(0, patch.start2 - padding), + patch.start2); + if (prefix.length() != 0) { + patch.diffs.addFirst(new Diff(Operation.EQUAL, prefix)); + } + // Add the suffix. + String suffix = text.substring(patch.start2 + patch.length1, + Math.min(text.length(), patch.start2 + patch.length1 + padding)); + if (suffix.length() != 0) { + patch.diffs.addLast(new Diff(Operation.EQUAL, suffix)); + } + // Roll back the start points. + patch.start1 -= prefix.length(); + patch.start2 -= prefix.length(); + // Extend the lengths. + patch.length1 += prefix.length() + suffix.length(); + patch.length2 += prefix.length() + suffix.length(); + } + /** + * Compute a list of patches to turn text1 into text2. + * A set of diffs will be computed. + * @param text1 Old text. + * @param text2 New text. + * @return LinkedList of Patch objects. + */ + public LinkedList patch_make(String text1, String text2) { + // No diffs provided, compute our own. + LinkedList diffs = diff_main(text1, text2, true); + if (diffs.size() > 2) { + diff_cleanupSemantic(diffs); + diff_cleanupEfficiency(diffs); + } + return patch_make(text1, diffs); + } + /** + * Compute a list of patches to turn text1 into text2. + * text1 will be derived from the provided diffs. + * @param diffs Array of diff tuples for text1 to text2. + * @return LinkedList of Patch objects. + */ + public LinkedList patch_make(LinkedList diffs) { + // No origin string provided, compute our own. + String text1 = diff_text1(diffs); + return patch_make(text1, diffs); + } + /** + * Compute a list of patches to turn text1 into text2. + * text2 is ignored, diffs are the delta between text1 and text2. + * @param text1 Old text + * @param text2 Ignored. + * @param diffs Array of diff tuples for text1 to text2. + * @return LinkedList of Patch objects. + * @deprecated Prefer patch_make(String text1, LinkedList diffs). + */ + public LinkedList patch_make(String text1, String text2, + LinkedList diffs) { + return patch_make(text1, diffs); + } + /** + * Compute a list of patches to turn text1 into text2. + * text2 is not provided, diffs are the delta between text1 and text2. + * @param text1 Old text. + * @param diffs Array of diff tuples for text1 to text2. + * @return LinkedList of Patch objects. + */ + public LinkedList patch_make(String text1, LinkedList diffs) { + LinkedList patches = new LinkedList(); + if (diffs.isEmpty()) { + return patches; // Get rid of the null case. + } + Patch patch = new Patch(); + int char_count1 = 0; // Number of characters into the text1 string. + int char_count2 = 0; // Number of characters into the text2 string. + // Start with text1 (prepatch_text) and apply the diffs until we arrive at + // text2 (postpatch_text). We recreate the patches one by one to determine + // context info. + String prepatch_text = text1; + String postpatch_text = text1; + for (Diff aDiff : diffs) { + if (patch.diffs.isEmpty() && aDiff.operation != Operation.EQUAL) { + // A new patch starts here. + patch.start1 = char_count1; + patch.start2 = char_count2; + } + switch (aDiff.operation) { + case INSERT: + patch.diffs.add(aDiff); + patch.length2 += aDiff.text.length(); + postpatch_text = postpatch_text.substring(0, char_count2) + + aDiff.text + postpatch_text.substring(char_count2); + break; + case DELETE: + patch.length1 += aDiff.text.length(); + patch.diffs.add(aDiff); + postpatch_text = postpatch_text.substring(0, char_count2) + + postpatch_text.substring(char_count2 + aDiff.text.length()); + break; + case EQUAL: + if (aDiff.text.length() <= 2 * Patch_Margin + && !patch.diffs.isEmpty() && aDiff != diffs.getLast()) { + // Small equality inside a patch. + patch.diffs.add(aDiff); + patch.length1 += aDiff.text.length(); + patch.length2 += aDiff.text.length(); + } + if (aDiff.text.length() >= 2 * Patch_Margin) { + // Time for a new patch. + if (!patch.diffs.isEmpty()) { + patch_addContext(patch, prepatch_text); + patches.add(patch); + patch = new Patch(); + // Unlike Unidiff, our patch lists have a rolling context. + // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff + // Update prepatch text & pos to reflect the application of the + // just completed patch. + prepatch_text = postpatch_text; + char_count1 = char_count2; + } + } + break; + } + // Update the current character count. + if (aDiff.operation != Operation.INSERT) { + char_count1 += aDiff.text.length(); + } + if (aDiff.operation != Operation.DELETE) { + char_count2 += aDiff.text.length(); + } + } + // Pick up the leftover patch if not empty. + if (!patch.diffs.isEmpty()) { + patch_addContext(patch, prepatch_text); + patches.add(patch); + } + return patches; + } + /** + * Given an array of patches, return another array that is identical. + * @param patches Array of patch objects. + * @return Array of patch objects. + */ + public LinkedList patch_deepCopy(LinkedList patches) { + LinkedList patchesCopy = new LinkedList(); + for (Patch aPatch : patches) { + Patch patchCopy = new Patch(); + for (Diff aDiff : aPatch.diffs) { + Diff diffCopy = new Diff(aDiff.operation, aDiff.text); + patchCopy.diffs.add(diffCopy); + } + patchCopy.start1 = aPatch.start1; + patchCopy.start2 = aPatch.start2; + patchCopy.length1 = aPatch.length1; + patchCopy.length2 = aPatch.length2; + patchesCopy.add(patchCopy); + } + return patchesCopy; + } + /** + * Merge a set of patches onto the text. Return a patched text, as well + * as an array of true/false values indicating which patches were applied. + * @param patches Array of patch objects + * @param text Old text. + * @return Two element Object array, containing the new text and an array of + * boolean values. + */ + public Object[] patch_apply(LinkedList patches, String text) { + if (patches.isEmpty()) { + return new Object[]{text, new boolean[0]}; + } + // Deep copy the patches so that no changes are made to originals. + patches = patch_deepCopy(patches); + String nullPadding = patch_addPadding(patches); + text = nullPadding + text + nullPadding; + patch_splitMax(patches); + int x = 0; + // delta keeps track of the offset between the expected and actual location + // of the previous patch. If there are patches expected at positions 10 and + // 20, but the first patch was found at 12, delta is 2 and the second patch + // has an effective expected position of 22. + int delta = 0; + boolean[] results = new boolean[patches.size()]; + for (Patch aPatch : patches) { + int expected_loc = aPatch.start2 + delta; + String text1 = diff_text1(aPatch.diffs); + int start_loc; + int end_loc = -1; + if (text1.length() > this.Match_MaxBits) { + // patch_splitMax will only provide an oversized pattern in the case of + // a monster delete. + start_loc = match_main(text, + text1.substring(0, this.Match_MaxBits), expected_loc); + if (start_loc != -1) { + end_loc = match_main(text, + text1.substring(text1.length() - this.Match_MaxBits), + expected_loc + text1.length() - this.Match_MaxBits); + if (end_loc == -1 || start_loc >= end_loc) { + // Can't find valid trailing context. Drop this patch. + start_loc = -1; + } + } + } else { + start_loc = match_main(text, text1, expected_loc); + } + if (start_loc == -1) { + // No match found. :( + results[x] = false; + // Subtract the delta for this failed patch from subsequent patches. + delta -= aPatch.length2 - aPatch.length1; + } else { + // Found a match. :) + results[x] = true; + delta = start_loc - expected_loc; + String text2; + if (end_loc == -1) { + text2 = text.substring(start_loc, + Math.min(start_loc + text1.length(), text.length())); + } else { + text2 = text.substring(start_loc, + Math.min(end_loc + this.Match_MaxBits, text.length())); + } + if (text1.equals(text2)) { + // Perfect match, just shove the replacement text in. + text = text.substring(0, start_loc) + diff_text2(aPatch.diffs) + + text.substring(start_loc + text1.length()); + } else { + // Imperfect match. Run a diff to get a framework of equivalent + // indices. + LinkedList diffs = diff_main(text1, text2, false); + if (text1.length() > this.Match_MaxBits + && diff_levenshtein(diffs) / (float) text1.length() + > this.Patch_DeleteThreshold) { + // The end points match, but the content is unacceptably bad. + results[x] = false; + } else { + diff_cleanupSemanticLossless(diffs); + int index1 = 0; + for (Diff aDiff : aPatch.diffs) { + if (aDiff.operation != Operation.EQUAL) { + int index2 = diff_xIndex(diffs, index1); + if (aDiff.operation == Operation.INSERT) { + // Insertion + text = text.substring(0, start_loc + index2) + aDiff.text + + text.substring(start_loc + index2); + } else if (aDiff.operation == Operation.DELETE) { + // Deletion + text = text.substring(0, start_loc + index2) + + text.substring(start_loc + diff_xIndex(diffs, + index1 + aDiff.text.length())); + } + } + if (aDiff.operation != Operation.DELETE) { + index1 += aDiff.text.length(); + } + } + } + } + } + x++; + } + // Strip the padding off. + text = text.substring(nullPadding.length(), text.length() + - nullPadding.length()); + return new Object[]{text, results}; + } + /** + * Add some padding on text start and end so that edges can match something. + * Intended to be called only from within patch_apply. + * @param patches Array of patch objects. + * @return The padding string added to each side. + */ + public String patch_addPadding(LinkedList patches) { + int paddingLength = this.Patch_Margin; + String nullPadding = ""; + for (int x = 1; x <= paddingLength; x++) { + nullPadding += String.valueOf((char) x); + } + // Bump all the patches forward. + for (Patch aPatch : patches) { + aPatch.start1 += paddingLength; + aPatch.start2 += paddingLength; + } + // Add some padding on start of first diff. + Patch patch = patches.getFirst(); + LinkedList diffs = patch.diffs; + if (diffs.isEmpty() || diffs.getFirst().operation != Operation.EQUAL) { + // Add nullPadding equality. + diffs.addFirst(new Diff(Operation.EQUAL, nullPadding)); + patch.start1 -= paddingLength; // Should be 0. + patch.start2 -= paddingLength; // Should be 0. + patch.length1 += paddingLength; + patch.length2 += paddingLength; + } else if (paddingLength > diffs.getFirst().text.length()) { + // Grow first equality. + Diff firstDiff = diffs.getFirst(); + int extraLength = paddingLength - firstDiff.text.length(); + firstDiff.text = nullPadding.substring(firstDiff.text.length()) + + firstDiff.text; + patch.start1 -= extraLength; + patch.start2 -= extraLength; + patch.length1 += extraLength; + patch.length2 += extraLength; + } + // Add some padding on end of last diff. + patch = patches.getLast(); + diffs = patch.diffs; + if (diffs.isEmpty() || diffs.getLast().operation != Operation.EQUAL) { + // Add nullPadding equality. + diffs.addLast(new Diff(Operation.EQUAL, nullPadding)); + patch.length1 += paddingLength; + patch.length2 += paddingLength; + } else if (paddingLength > diffs.getLast().text.length()) { + // Grow last equality. + Diff lastDiff = diffs.getLast(); + int extraLength = paddingLength - lastDiff.text.length(); + lastDiff.text += nullPadding.substring(0, extraLength); + patch.length1 += extraLength; + patch.length2 += extraLength; + } + return nullPadding; + } + /** + * Look through the patches and break up any which are longer than the + * maximum limit of the match algorithm. + * @param patches LinkedList of Patch objects. + */ + public void patch_splitMax(LinkedList patches) { + int patch_size; + String precontext, postcontext; + Patch patch; + int start1, start2; + boolean empty; + Operation diff_type; + String diff_text; + ListIterator pointer = patches.listIterator(); + Patch bigpatch = pointer.hasNext() ? pointer.next() : null; + while (bigpatch != null) { + if (bigpatch.length1 <= Match_MaxBits) { + bigpatch = pointer.hasNext() ? pointer.next() : null; + continue; + } + // Remove the big old patch. + pointer.remove(); + patch_size = Match_MaxBits; + start1 = bigpatch.start1; + start2 = bigpatch.start2; + precontext = ""; + while (!bigpatch.diffs.isEmpty()) { + // Create one of several smaller patches. + patch = new Patch(); + empty = true; + patch.start1 = start1 - precontext.length(); + patch.start2 = start2 - precontext.length(); + if (precontext.length() != 0) { + patch.length1 = patch.length2 = precontext.length(); + patch.diffs.add(new Diff(Operation.EQUAL, precontext)); + } + while (!bigpatch.diffs.isEmpty() + && patch.length1 < patch_size - Patch_Margin) { + diff_type = bigpatch.diffs.getFirst().operation; + diff_text = bigpatch.diffs.getFirst().text; + if (diff_type == Operation.INSERT) { + // Insertions are harmless. + patch.length2 += diff_text.length(); + start2 += diff_text.length(); + patch.diffs.addLast(bigpatch.diffs.removeFirst()); + empty = false; + } else if (diff_type == Operation.DELETE && patch.diffs.size() == 1 + && patch.diffs.getFirst().operation == Operation.EQUAL + && diff_text.length() > 2 * patch_size) { + // This is a large deletion. Let it pass in one chunk. + patch.length1 += diff_text.length(); + start1 += diff_text.length(); + empty = false; + patch.diffs.add(new Diff(diff_type, diff_text)); + bigpatch.diffs.removeFirst(); + } else { + // Deletion or equality. Only take as much as we can stomach. + diff_text = diff_text.substring(0, Math.min(diff_text.length(), + patch_size - patch.length1 - Patch_Margin)); + patch.length1 += diff_text.length(); + start1 += diff_text.length(); + if (diff_type == Operation.EQUAL) { + patch.length2 += diff_text.length(); + start2 += diff_text.length(); + } else { + empty = false; + } + patch.diffs.add(new Diff(diff_type, diff_text)); + if (diff_text.equals(bigpatch.diffs.getFirst().text)) { + bigpatch.diffs.removeFirst(); + } else { + bigpatch.diffs.getFirst().text = bigpatch.diffs.getFirst().text + .substring(diff_text.length()); + } + } + } + // Compute the head context for the next patch. + precontext = diff_text2(patch.diffs); + precontext = precontext.substring(Math.max(0, precontext.length() + - Patch_Margin)); + // Append the end context for this patch. + if (diff_text1(bigpatch.diffs).length() > Patch_Margin) { + postcontext = diff_text1(bigpatch.diffs).substring(0, Patch_Margin); + } else { + postcontext = diff_text1(bigpatch.diffs); + } + if (postcontext.length() != 0) { + patch.length1 += postcontext.length(); + patch.length2 += postcontext.length(); + if (!patch.diffs.isEmpty() + && patch.diffs.getLast().operation == Operation.EQUAL) { + patch.diffs.getLast().text += postcontext; + } else { + patch.diffs.add(new Diff(Operation.EQUAL, postcontext)); + } + } + if (!empty) { + pointer.add(patch); + } + } + bigpatch = pointer.hasNext() ? pointer.next() : null; + } + } + /** + * Take a list of patches and return a textual representation. + * @param patches List of Patch objects. + * @return Text representation of patches. + */ + public String patch_toText(List patches) { + StringBuilder text = new StringBuilder(); + for (Patch aPatch : patches) { + text.append(aPatch); + } + return text.toString(); + } + /** + * Parse a textual representation of patches and return a List of Patch + * objects. + * @param textline Text representation of patches. + * @return List of Patch objects. + * @throws IllegalArgumentException If invalid input. + */ + public List patch_fromText(String textline) + throws IllegalArgumentException { + List patches = new LinkedList(); + if (textline.length() == 0) { + return patches; + } + List textList = Arrays.asList(textline.split("\n")); + LinkedList text = new LinkedList(textList); + Patch patch; + Pattern patchHeader + = Pattern.compile("^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$"); + Matcher m; + char sign; + String line; + while (!text.isEmpty()) { + m = patchHeader.matcher(text.getFirst()); + if (!m.matches()) { + throw new IllegalArgumentException( + "Invalid patch string: " + text.getFirst()); + } + patch = new Patch(); + patches.add(patch); + patch.start1 = Integer.parseInt(m.group(1)); + if (m.group(2).length() == 0) { + patch.start1--; + patch.length1 = 1; + } else if ("0".equals(m.group(2))) { + patch.length1 = 0; + } else { + patch.start1--; + patch.length1 = Integer.parseInt(m.group(2)); + } + patch.start2 = Integer.parseInt(m.group(3)); + if (m.group(4).length() == 0) { + patch.start2--; + patch.length2 = 1; + } else if ("0".equals(m.group(4))) { + patch.length2 = 0; + } else { + patch.start2--; + patch.length2 = Integer.parseInt(m.group(4)); + } + text.removeFirst(); + + while (!text.isEmpty()) { + try { + sign = text.getFirst().charAt(0); + } catch (IndexOutOfBoundsException e) { + // Blank line? Whatever. + text.removeFirst(); + continue; + } + line = text.getFirst().substring(1); + line = line.replace("+", "%2B"); // decode would change all "+" to " " + try { + line = URLDecoder.decode(line, "UTF-8"); + } catch (UnsupportedEncodingException e) { + // Not likely on modern system. + throw new Error("This system does not support UTF-8.", e); + } catch (IllegalArgumentException e) { + // Malformed URI sequence. + throw new IllegalArgumentException( + "Illegal escape in patch_fromText: " + line, e); + } + if (sign == '-') { + // Deletion. + patch.diffs.add(new Diff(Operation.DELETE, line)); + } else if (sign == '+') { + // Insertion. + patch.diffs.add(new Diff(Operation.INSERT, line)); + } else if (sign == ' ') { + // Minor equality. + patch.diffs.add(new Diff(Operation.EQUAL, line)); + } else if (sign == '@') { + // Start of next patch. + break; + } else { + // WTF? + throw new IllegalArgumentException( + "Invalid patch mode '" + sign + "' in: " + line); + } + text.removeFirst(); + } + } + return patches; + } + + + /** + * Class representing one diff operation. + */ + public static class Diff { + /** + * One of: INSERT, DELETE or EQUAL. + */ + public Operation operation; + /** + * The text associated with this diff operation. + */ + public String text; + + /** + * Constructor. Initializes the diff with the provided values. + * @param operation One of INSERT, DELETE or EQUAL. + * @param text The text being applied. + */ + public Diff(Operation operation, String text) { + // Construct a diff with the specified operation and text. + this.operation = operation; + this.text = text; + } + + + /** + * Display a human-readable version of this Diff. + * @return text version. + */ + @Override + public String toString() { + String prettyText = this.text.replace('\n', '\u00b6'); + return "Diff(" + this.operation + ",\"" + prettyText + "\")"; + } + + + /** + * Is this Diff equivalent to another Diff? + * @param d Another Diff to compare against. + * @return true or false. + */ + @Override + public boolean equals(Object d) { + try { + return (((Diff) d).operation == this.operation) + && (((Diff) d).text.equals(this.text)); + } catch (ClassCastException e) { + return false; + } + } + } + + + /** + * Class representing one patch operation. + */ + public static class Patch { + public LinkedList diffs; + public int start1; + public int start2; + public int length1; + public int length2; + + + /** + * Constructor. Initializes with an empty list of diffs. + */ + public Patch() { + this.diffs = new LinkedList(); + } + + + /** + * Emmulate GNU diff's format. + * Header: @@ -382,8 +481,9 @@ + * Indicies are printed as 1-based, not 0-based. + * @return The GNU diff string. + */ + @Override + public String toString() { + String coords1, coords2; + if (this.length1 == 0) { + coords1 = this.start1 + ",0"; + } else if (this.length1 == 1) { + coords1 = Integer.toString(this.start1 + 1); + } else { + coords1 = (this.start1 + 1) + "," + this.length1; + } + if (this.length2 == 0) { + coords2 = this.start2 + ",0"; + } else if (this.length2 == 1) { + coords2 = Integer.toString(this.start2 + 1); + } else { + coords2 = (this.start2 + 1) + "," + this.length2; + } + StringBuilder text = new StringBuilder(); + text.append("@@ -").append(coords1).append(" +").append(coords2) + .append(" @@\n"); + // Escape the body of the patch with %xx notation. + for (Diff aDiff : this.diffs) { + switch (aDiff.operation) { + case INSERT: + text.append('+'); + break; + case DELETE: + text.append('-'); + break; + case EQUAL: + text.append(' '); + break; + } + try { + text.append(URLEncoder.encode(aDiff.text, "UTF-8").replace('+', ' ')) + .append("\n"); + } catch (UnsupportedEncodingException e) { + // Not likely on modern system. + throw new Error("This system does not support UTF-8.", e); + } + } + return unescapeForEncodeUriCompatability(text.toString()); + } + } + + + /** + * Unescape selected chars for compatability with JavaScript's encodeURI. + * In speed critical applications this could be dropped since the + * receiving application will certainly decode these fine. + * Note that this function is case-sensitive. Thus "%3f" would not be + * unescaped. But this is ok because it is only called with the output of + * URLEncoder.encode which returns uppercase hex. + * + * Example: "%3F" -> "?", "%24" -> "$", etc. + * + * @param str The string to escape. + * @return The escaped string. + */ + private static String unescapeForEncodeUriCompatability(String str) { + return str.replace("%21", "!").replace("%7E", "~") + .replace("%27", "'").replace("%28", "(").replace("%29", ")") + .replace("%3B", ";").replace("%2F", "/").replace("%3F", "?") + .replace("%3A", ":").replace("%40", "@").replace("%26", "&") + .replace("%3D", "=").replace("%2B", "+").replace("%24", "$") + .replace("%2C", ",").replace("%23", "#"); + } + + public String getHtmlDiffString(String text1,String text2){ + return diff_prettyHtml(diff_main(text1,text2)); + } + + public static void main(String[] args){ + DiffMatchPatch dmp = new DiffMatchPatch(); + String text1 = "我方在“福市财政资金补助项目管理系统”的项目实施过程,为保证该项目的工程进度、质量,符合数办项目的实施管理规范与要求。"; + String text2 = "我方在“福州市财政资金补助项目管理系统”的项目实施过程,为保证该haha项目的工程进度、质量,符合目的实施管理规范与要求。"; + System.out.println(dmp.getHtmlDiffString(text1,text2)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/EventUtils/EventEditHistoryHighLightUtil.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/EventUtils/EventEditHistoryHighLightUtil.java new file mode 100644 index 00000000..e8058b57 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/EventUtils/EventEditHistoryHighLightUtil.java @@ -0,0 +1,209 @@ +package com.adc.da.slrs.standardSplit.EventUtils; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2021年11月28日 12:28 + */ + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +/** + * 文本差异高亮算法 + * + * @Author : cron + * @Date: 2020-01-15 + */ +@SuppressWarnings("all") +public class EventEditHistoryHighLightUtil { + + /** + * 传入2个字符串进行相比高亮显示 + * eg: + * 原数据一:王五张三 + * 原数据二:张三李四 + * 王五张三 + * 张三李四 + */ + + public static String[] getHighLightDifferentOld(String a, String b) { + String[] temp = getDiff(a, b); + String[] result = {getHighLight(a, temp[0]), getHighLight(b, temp[1])}; + return result; + } + + private static String getHighLight(String source, String temp) { + StringBuffer sb = new StringBuffer(); + char[] sourceChars = source.toCharArray(); + char[] tempChars = temp.toCharArray(); + boolean flag = false; + for (int i = 0; i < sourceChars.length; i++) { + if (tempChars[i] != ' ') { + if (i == 0) { + sb.append("").append(sourceChars[i]); + } else if (flag) { + sb.append(sourceChars[i]); + } else { + sb.append("").append(sourceChars[i]); + } + flag = true; + if (i == sourceChars.length - 1) { + sb.append(""); + } + } else if (flag) { + sb.append("").append(sourceChars[i]); + flag = false; + } else { + sb.append(sourceChars[i]); + } + } + return sb.toString(); + } + + public static String[] getDiff(String a, String b) { + String[] result = null; + //选取长度较小的字符串用来穷举子串 + if (a.length() < b.length()) { + result = getDiff(a, b, 0, a.length()); + } else { + result = getDiff(b, a, 0, b.length()); + result = new String[]{result[1], result[0]}; + } + return result; + } + + /** + * 将a的指定部分与b进行比较生成比对结果 + */ + private static String[] getDiff(String a, String b, int start, int end) { + String[] result = new String[]{a, b}; + int len = result[0].length(); + while (len > 0) { + for (int i = start; i < end - len + 1; i++) { + String sub = result[0].substring(i, i + len); + int idx = -1; + if ((idx = result[1].indexOf(sub)) != -1) { + result[0] = setEmpty(result[0], i, i + len); + result[1] = setEmpty(result[1], idx, idx + len); + if (i > 0) { + //递归获取空白区域左边差异 + result = getDiff(result[0], result[1], 0, i); + } + if (i + len < end) { + //递归获取空白区域右边差异 + result = getDiff(result[0], result[1], i + len, end); + } + len = 0;//退出while循环 + break; + } + } + len = len / 2; + } + return result; + } + + /** + * 将字符串s指定的区域设置成空格 + */ + public static String setEmpty(String s, int start, int end) { + char[] array = s.toCharArray(); + for (int i = start; i < end; i++) { + array[i] = ' '; + } + return new String(array); + } + + //--------------new ------------------------- + + public static String[] getHighLightDifferent(String altbe, String altaf) { + //字符串1 altbe 字符串2 altaf + List beList = rememberSpacing(altbe); + List afList = rememberSpacing(altaf); + altbe = altbe.replace(" ", ""); + altaf = altaf.replace(" ", ""); + LinkedList t = new DiffMatchPatch().diff_main(altbe, altaf); + StringBuffer s1 = new StringBuffer(); + StringBuffer s2 = new StringBuffer(); + Integer indexBe = 0; + Integer indexAf = 0; + for (DiffMatchPatch.Diff diff : t) { + StringBuffer diffTextBe = new StringBuffer(diff.text); + StringBuffer diffTextAf = new StringBuffer(diff.text); + if ("EQUAL".equalsIgnoreCase(diff.operation.toString())) { + addSpacing(beList, indexBe, diffTextBe); + addSpacing(afList, indexAf, diffTextAf); + s1.append(diffTextBe); + s2.append(diffTextAf); + indexBe += diffTextBe.length(); + indexAf += diffTextAf.length(); + } + indexBe = appendString2("DELETE", diff, s1, s2, beList, indexBe); + indexAf = appendString2("INSERT", diff, s2, s1, afList, indexAf); + } + String[] result = new String[2]; + result[0] = s1.toString(); + result[1] = s2.toString(); + return result; + } + +// public static void appendString(String type, Diff diff, StringBuffer sbOne, StringBuffer sbTwo) { +// if (type.equals(diff.operation.toString())) { +// if (" ".equals(diff.text)) { +// sbOne.append(" "); +// sbTwo.append(" "); +// } else { +// sbOne.append("").append(diff.text).append(""); +// } +// } +// } + + private static List rememberSpacing(String str) { + List list = new ArrayList<>(); + for (int i = 0; i < str.length(); i++) { + if (' ' == str.charAt(i)) { + list.add(i); + } + } + return list; + } + + public static void addSpacing(List list, Integer index, StringBuffer str) { + for (Integer o : list) { + if (o >= index && o < index + str.length()) { + str.insert(o - index, ' '); + } + } + } + + public static Integer appendString2(String type, DiffMatchPatch.Diff diff, StringBuffer sbOne, + StringBuffer sbTwo, List list, Integer i) { + Integer result = i; + if (type.equals(diff.operation.toString())) { + StringBuffer sb = new StringBuffer(diff.text); + for (Integer o : list) { + if (o >= i && o < i + sb.length()) { + sb.insert(o - i, ' '); + } + } + sbOne.append("").append(sb).append(""); + result = i + sb.length(); + } + return result; + } + + public static void main(String[] args) { + String a = "测试测试测试仅关注界面和功能,数据准确性在暂不测试"; + String b = "提交留言数据仅关注界面和功能,数据准确性在暂不测试"; + String[] anb = getHighLightDifferent(a, b); + System.out.println(Arrays.toString(anb)); + +// String altbe = "提交留言数据仅关注界面和 功能,数据准确性在暂不测试"; +// String altaf = "提交留言数据仅关注界面和功能,数据准确性在暂不测试提交 留言数据仅关注界面和功能,数据准确性在暂不测试"; +// String[] highLightDifferentNew = getHighLightDifferent(altbe, altaf); +// System.out.println(Arrays.toString(highLightDifferentNew)); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitInfoEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitInfoEOController.java new file mode 100644 index 00000000..a6d6cd24 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitInfoEOController.java @@ -0,0 +1,360 @@ +package com.adc.da.slrs.standardSplit.controller; + +import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.person.entity.PersonMsgEO; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandItems.service.impl.SarStandItemsServiceImpl; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardsInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEOPage; + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; +import com.adc.da.slrs.standardSplit.entity.SarLawsInfoEO; +import com.adc.da.slrs.standardSplit.service.*; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.adc.da.sys.service.IUserEOService; + +@RestController +@RequestMapping("/${restPath}/lawss/sarFileSplitInfo") +@Api(description = "|SarFileSplitInfoEO|") +public class SarFileSplitInfoEOController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitInfoEOController.class); + + @Autowired + private SarFileSplitInfoEOService sarFileSplitInfoEOService; +// @Autowired +// private SarStandardsInfoEOService sarStandardsInfoEOService; +// @Autowired +// private PersonMsgEOService personMsgEOService; + @Autowired + private IUserEOService userService; + @Autowired + private SarLawsInfoEOService sarLawsInfoEOService; + + @ApiOperation(value = "|SarFileSplitInfoEO|分页查询") + @GetMapping("/page") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitInfo:page") + public ResponseMessage> page(SarFileSplitInfoEOPage page) throws Exception { + page.setOrderBy("modify_time desc"); + List rows = sarFileSplitInfoEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarFileSplitInfoEO|查询") + @GetMapping("") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitInfo:list") + public ResponseMessage> list(SarFileSplitInfoEOPage page) throws Exception { + return Result.success(sarFileSplitInfoEOService.queryByList(page)); + } + + @ApiOperation(value = "|SarFileSplitInfoEO|详情") + @GetMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitInfo:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(sarFileSplitInfoEOService.selectByPrimaryKey(id)); + } + + @ApiOperation(value = "|SarFileSplitInfoEO|新增") + @PostMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitInfo:save") + public ResponseMessage create(@RequestBody SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception { + sarFileSplitInfoEOService.insertSelective(sarFileSplitInfoEO); + return Result.success(sarFileSplitInfoEO); + } + + @ApiOperation(value = "|SarFileSplitInfoEO|修改") + @PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitInfo:update") + public ResponseMessage update(@RequestBody SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception { + sarFileSplitInfoEOService.updateByPrimaryKeySelective(sarFileSplitInfoEO); + return Result.success(sarFileSplitInfoEO); + } + + @ApiOperation(value = "|SarFileSplitInfoEO|删除") + @DeleteMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitInfo:delete") + public ResponseMessage delete(@PathVariable String id) throws Exception { + sarFileSplitInfoEOService.deleteByPrimaryKey(id); + logger.info("delete from SAR_FILE_SPLIT_INFO where id = {}", id); + return Result.success(); + } + + @ApiOperation(value = "|SarFileSplitInfoEO|文件拆分相关信息存储") + @PostMapping("/fileSplit") + public ResponseMessage fileSplit(@RequestBody SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception { + if (sarFileSplitInfoEO.getStopNumber()<=0){ + sarFileSplitInfoEO.setStopNumber(200); + } + if (sarFileSplitInfoEO.getStartNumber()<=0){ + sarFileSplitInfoEO.setStartNumber(1); + } + int i = sarFileSplitInfoEOService.fileAplit(sarFileSplitInfoEO); + if (i>0){ + SarFileSplitInfoEO newinfo = new SarFileSplitInfoEO(); + newinfo.setResult("1"); + newinfo.setId(sarFileSplitInfoEO.getId()); + newinfo.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitInfoEOService.updateByPrimaryKeySelective(newinfo); + return Result.success(sarFileSplitInfoEO); + } else { + SarFileSplitInfoEO newinfo = new SarFileSplitInfoEO(); + newinfo.setResult("2"); + newinfo.setId(sarFileSplitInfoEO.getId()); + newinfo.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitInfoEOService.updateByPrimaryKeySelective(newinfo); + return Result.error("该文档不符合规范,无法拆分"); + } + } + + @ApiOperation(value = "|SarFileSplitInfoEO|自定义分页查询列表") + @GetMapping("/getSarFileSplitInfoEOPage") + //@RequiresPermissions("lawss:sarBussionessStand:getSarBussionStandPage") + public ResponseMessage> getSarFileSplitInfoEOPage(SarFileSplitInfoEOPage page) throws Exception { + if(StringUtils.isNotBlank(page.getPaixu())){ + page.setOrderBy("SAR_FILE_SPLIT_INFO."+page.getPaixu()+" "+page.getShunxu()); + }else{ + page.setOrderBy("SAR_FILE_SPLIT_INFO.creation_time desc,SAR_FILE_SPLIT_INFO.id"); + } + List rows = sarFileSplitInfoEOService.queryByPageOwn(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + +// @ApiOperation(value = "拆分审核完成回调接口") +// @GetMapping("/changeSarFileSplitInfoStatusCallBack") +// public ResponseMessage changeSarFileSplitInfoStatusCallBack(@RequestBody @Validated ChangeSarFileSplitInfoStatusDTO changeSarFileSplitInfoStatusDTO) throws Exception { +// boolean flag = sarFileSplitInfoEOService.changeSarFileSplitInfoStatusCallBack(changeSarFileSplitInfoStatusDTO); +// if(flag){ +// return Result.success(); +// } +// return Result.error(); +// } + + @ApiOperation(value = "|SarFileSplitInfoEO|批量删除") + @PostMapping("/batchDelete") + public ResponseMessage batchDelete(String ids) throws Exception { + if (StringUtils.isNotEmpty(ids)) { + int result = sarFileSplitInfoEOService.deleteByIds(ids); + if (result > 0) { + return Result.success("0","删除成功",null); + } else { + return Result.error("删除失败"); + } + + } else { + return Result.error("请选择要删除的数据"); + } + } + + + @Autowired + private SarStandItemsServiceImpl ServiceImpl; + @ApiOperation(value = "|SarFileSplitInfoEO|关联") + @PostMapping("/connectToStandItems") + public ResponseMessage connectToStandItems(@RequestBody List sarFileSplitInfoEOList) throws Exception { + List querySame = null; + + /** + * 删除原来的分解单 + */ + + QueryWrapper removeWrapper = new QueryWrapper<>(); + removeWrapper.eq("STAND_ID",sarFileSplitInfoEOList.get(0).getStandId()) + .eq("FILE_TYPE",sarFileSplitInfoEOList.get(0).getFileType()); + ServiceImpl.remove(removeWrapper); + for (SarFileSplitInfoEO sarFileSplitInfoEO : sarFileSplitInfoEOList) { +// List getList = new ArrayList<>(); +// List sarLawsInfoEOList = new ArrayList<>(); + + querySame = sarFileSplitInfoEOService.querySame(sarFileSplitInfoEO); + + /** + * 使选定的拆分条款 插入分解单 + */ + + List sarStandItemList = querySame.stream() + .map(item -> { + SarStandItems sarStandItem = new SarStandItems(); + sarStandItem.setStandId(sarFileSplitInfoEO.getStandId()); + sarStandItem.setEditFlag(item.getEditFlag()); + sarStandItem.setItemsName(item.getItemsName()); + sarStandItem.setTermsConditions(item.getItermsConditions()); + sarStandItem.setItemsNum(item.getItemsNum()); + sarStandItem.setId(UUIDUtils.randomUUID20()); + sarStandItem.setFileType(sarFileSplitInfoEO.getFileType()); + + sarStandItem.setEditFlag(item.getEditFlag()); + return sarStandItem; + }) + .collect(Collectors.toList()); + + ServiceImpl.saveBatch(sarStandItemList); + + +// querySame.forEach(item->{ +// QueryWrapper sarStandItemsQueryWrapper = new QueryWrapper<>(); +// sarStandItemsQueryWrapper.eq("edit_flag",item.getEditFlag()); +// SarStandItems sarStandItems = new SarStandItems(); +// sarStandItems.setStandId(sarFileSplitInfoEO.getStandId()); +// sarStandItems.setEditFlag(item.getEditFlag()); +// sarStandItems.setItemsName(item.getItemsName()); +// sarStandItems.setTermsConditions(item.getItermsConditions()); +// sarStandItems.setItemsNum(item.getItemsNum()); +// sarStandItems.setId(UUIDUtils.randomUUID20()); +// sarStandItems.setFileType(sarFileSplitInfoEO.getFileType()); +// ServiceImpl.saveOrUpdate(sarStandItems,sarStandItemsQueryWrapper); +// +// }); + + + //根据标准号查询标准是否存在 +// String standNum=""; +// if (StringUtils.isNotEmpty(sarFileSplitInfoEO.getStandId())) { +// standNum=sarFileSplitInfoEO.getShowNumber(); +// } else if(StringUtils.isNotEmpty(sarFileSplitInfoEO.getStandNumSplit())){ +// standNum=sarFileSplitInfoEO.getStandNumSplit(); +// }else{ +// return Result.error("标准号不能为空"); +// } +// if (sarFileSplitInfoEO.getFileType().equals("ZCWB") || sarFileSplitInfoEO.getFileType().equals("GCGJ")) { +// SarLawsInfoEOPage page = new SarLawsInfoEOPage(); +// page.setLawsType("FOREIGN"); +// page.setLawsNumber(standNum); +// sarLawsInfoEOList = sarLawsInfoEOService.getLawsInfoPage(page); +// }else { +// getList = sarStandardsInfoEOService.selectStandardsByStandnumber(standNum,null); +// } +// +// SarStandardsInfoEO result = new SarStandardsInfoEO(); +// SarLawsInfoEO result1 = new SarLawsInfoEO(); +// +// if(getList != null && getList.size()>0){ +// result = getList.get(0); +// String msg = sarFileSplitInfoEOService.addToStandItems(sarFileSplitInfoEO,result); +// return Result.success("0",msg,null); +// } else if (sarLawsInfoEOList.size()>0) { +// result1 = sarLawsInfoEOList.get(0); +// String msg = sarFileSplitInfoEOService.addToStandItems1(sarFileSplitInfoEO,result1); +// return Result.success("0",msg,null); +// }else { +// return Result.error("0", "该条数据标准号在标准库中不存在"); +// } + } +// return Result.error("0","关联失败"); + return Result.success(querySame); + } + + @ApiOperation(value = "|SarFileSplitInfoEO|标准拆分编辑") + @PostMapping("/updateSarFileSplitInfo") + public ResponseMessage updateSarFileSplitInfo(@RequestBody SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception { + + if(null!=sarFileSplitInfoEO){ + sarFileSplitInfoEO.setModifyTime(new Date()); + if (null==sarFileSplitInfoEO.getSplitStatus()) + sarFileSplitInfoEO.setStandId(null); +// sarFileSplitInfoEO.setSplitStatus("1"); + sarFileSplitInfoEOService.updateByPrimaryKeySelective(sarFileSplitInfoEO); + return Result.success("0","编辑成功",null); + }else{ + return Result.error(); + } + + } + + @ApiOperation(value = "|SarFileSplitInfoEO|标准拆分提交FO审核") + @GetMapping("submitAndExamine") + public ResponseMessage submitAndExamine(String id, String standNum, String standName,String standType) throws Exception { + String standId = null; +// if (standType.equals("POLICY")){ +// SarLawsInfoEOPage page = new SarLawsInfoEOPage(); +// page.setLawsType("FOREIGN"); +// page.setLawsNumber(standNum); +// page.setLawsNumberOperator("="); +// List sarLawsInfoEOList = sarLawsInfoEOService.getLawsInfoPage(page); +// if (sarLawsInfoEOList.size() == 0){ +// return Result.error("政策号不存在"); +// } +// standId = sarLawsInfoEOList.get(0).getId(); +// }else if(standType.equals("STAND")){ +// List getList = sarStandardsInfoEOService.selectStandardsByStandnumber(StringUtils.trim(standNum), +// null); +// if (getList.size() == 0){ +// return Result.error("标准号不存在"); +// } +// standId = getList.get(0).getId(); +// }else { +// List getList = sarStandardsInfoEOService.selectStandardsByStandnumber(StringUtils.trim(standNum), +// standType); +// if (getList.size() == 0){ +// return Result.error("标准号不存在"); +// } +// standId = getList.get(0).getId(); +// } + + SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO(); + sarFileSplitInfoEO.setId(id); + sarFileSplitInfoEO.setSplitStatus("1"); + sarFileSplitInfoEO.setStandId(standId); + sarFileSplitInfoEO.setModifyTime(new Date()); + sarFileSplitInfoEOService.updateByPrimaryKeySelective(sarFileSplitInfoEO); + String roleName = "国内标准法规FO"; + String stand = "国内标准法规"; + if (standType.equals("FOREIGN")){ + roleName = "海外标准法规FO"; + stand = "海外标准法规"; + }else if (standType.equals("POLICY")){ + roleName = "政策法规FO"; + stand = "国内外政策"; + }else if(standType.equals("STAND")){ + roleName = "国内标准法规FO,海外标准法规FO"; + stand = "国内外标准法规"; + } +// List userList = userService.getUserByRole(null,null,null,roleName); +// for (RoleUserVO data:userList) { +// PersonMsgEO personMsgEO = new PersonMsgEO(); +// personMsgEO.setUserIds(data.getUserId()); +// personMsgEO.setMsgTitle("确认【"+stand+"】标准拆分数据"+standNum); +// personMsgEO.setMsgContent("【"+stand+"】标准拆分数据"+standNum+",请确认审核是否通过?"); +// personMsgEO.setMsgType("SPLIT"); +// personMsgEO.setBusiId(id); +// personMsgEO.setSenderId(LoginUserUtil.getUserId()); +// personMsgEO.setReturnAddress("itemSplitInfo?infoId="+id+"&standNumSplit="+standNum+"&standNameSplit="+standName); +// personMsgEOService.saveNew(personMsgEO); +// } + return Result.success("提交成功"); + } + + + @ApiOperation(value = "|PersonMsgEO|修改新") + @PostMapping("updateNew") + //@RequiresPermissions("person:personMsg:update") + public ResponseMessage updateNew(@RequestBody PersonMsgEO personMsgEO) throws Exception { + return Result.success(sarFileSplitInfoEOService.updateNew(personMsgEO)); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java new file mode 100644 index 00000000..a7ee5512 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsEOController.java @@ -0,0 +1,623 @@ +package com.adc.da.slrs.standardSplit.controller; + +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.hutool.core.util.ZipUtil; +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.base.web.BaseController; +import com.adc.da.common.ConvertHtml2Excel; +import com.adc.da.common.FileUnZip; +import com.adc.da.common.SplitTableInfo; +import com.adc.da.http.PageInfo; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardsInfoEO; +import com.adc.da.slrs.standardSplit.dto.*; +import com.adc.da.slrs.standardSplit.entity.*; +import com.adc.da.slrs.standardSplit.service.*; +import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.IOUtils; +import com.adc.da.utils.util.POIReadExcelToHtml; +import com.adc.da.common.ReadExcel; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.common.usermodel.HyperlinkType; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.util.*; + +import static com.adc.da.utils.util.ExcelUtil.checkObjAllFieldsIsNull; +import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; + +@RestController +@RequestMapping("/${restPath}/lawss/sarFileSplitItems") +@Api(description = "|SarFileSplitItemsEO|") +public class SarFileSplitItemsEOController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitItemsEOController.class); + + @Autowired + private SarFileSplitItemsEOService sarFileSplitItemsEOService; + @Autowired + private SarFileSplitItemsValEOService sarFileSplitItemsValEOService; + @Autowired + private SarFileSplitItemsTableEOService sarFileSplitItemsTableEOService; + @Autowired + private SarFileSplitItemsParamsEOService sarFileSplitItemsParamsEOService; + @Autowired + private SarFileSplitMenuEOService sarFileSplitMenuEOService; + @Autowired + private IAttFileEOService attFileEOService; + @Autowired + private SarFileSplitInfoEOService sarFileSplitInfoEOService; + @Autowired + private SarStandardsInfoEOService sarStandardsInfoEOService; + + @Value("${file.path}") + private String filePath; + + @Value("${file.path}") + private String uploadFilePath; + + @ApiOperation(value = "|SarFileSplitItemsEO|分页查询") + @GetMapping("/getSplitItemsByPage") +// @RequiresPermissions("lawss:sarFileSplitItems:page") + public ResponseMessage> page(SarFileSplitItemsEOPage page) throws Exception { + //6-18 端哥已做修改 + Map map = sarFileSplitItemsEOService.getByPage(page); + page.getPager().setRowCount((Integer) map.get("count")); + return Result.success(getPageInfo(page.getPager(), (List) map.get("list"))); + } + + @ApiOperation(value = "|SarFileSplitItemsEO|查询") + @GetMapping("") +// @RequiresPermissions("lawss:sarFileSplitItems:list") + public ResponseMessage> list(SarFileSplitItemsEOPage page) throws Exception { + return Result.success(sarFileSplitItemsEOService.queryByList(page)); + } + + @ApiOperation(value = "|SarFileSplitItemsEO|详情") + @GetMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitItems:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(sarFileSplitItemsEOService.selectByPrimaryKey(id)); + } + + @ApiOperation(value = "|SarFileSplitItemsEO|新增") + @PostMapping(consumes = APPLICATION_JSON_UTF8_VALUE) +// @RequiresPermissions("lawss:sarFileSplitItems:save") + //401问题2021-03-31暂时注释掉 liuhuiwen + public ResponseMessage create(@RequestBody SarFileSplitItemsEO sarFileSplitItemsEO) throws Exception { + sarFileSplitItemsEOService.insertSelective(sarFileSplitItemsEO); + return Result.success(sarFileSplitItemsEO); + } + + @ApiOperation(value = "|SarFileSplitItemsEO|修改") + @PutMapping("/updateSplitItems") + public ResponseMessage update(@RequestBody SarFileSplitItemsEO sarFileSplitItemsEO) throws Exception { + int resultCount = sarFileSplitItemsEOService.updateItemContent(sarFileSplitItemsEO); + if (resultCount > 0) { + return Result.success("0","修改成功",sarFileSplitItemsEO); + } else { + return Result.error("修改失败"); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|删除") + @DeleteMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitItems:delete") + public ResponseMessage delete(@PathVariable String id) throws Exception { + sarFileSplitItemsEOService.deleteByPrimaryKey(id); + logger.info("delete from SAR_FILE_SPLIT_ITEMS where id = {}", id); + return Result.success(); + } + + @ApiOperation(value = "|SarFileSplitItemsEO|批量删除") + @PostMapping("/batchDeleteItems") + public ResponseMessage batchDeleteItems(String ids,String editFlag) throws Exception { + if (StringUtils.isNotEmpty(ids)) { + int result = sarFileSplitItemsEOService.batchDeleteItems(ids,editFlag); + if (result > 0) { + return Result.success("0","删除成功",null); + } else { + return Result.error("删除失败"); + } + + } else { + return Result.error("请选择要删除的数据"); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|根据id查询") + @GetMapping("/getInfoById") +// @RequiresPermissions("lawss:sarFileSplitItems:get") + public ResponseMessage getInfoById(String id) throws Exception { + SarFileSplitItemsEO sarFileSplitItemsEO = sarFileSplitItemsEOService.selectByPrimaryKey(id); + if (sarFileSplitItemsEO != null) { + SarFileSplitItemsParamsEOPage paramPage = new SarFileSplitItemsParamsEOPage(); + paramPage.setItemId(id); + List paramList = sarFileSplitItemsParamsEOService.queryByList(paramPage); + sarFileSplitItemsEO.setParamsList(paramList); + } + // 查询特殊参数要求信息 + return Result.success(sarFileSplitItemsEO); + } + + @ApiOperation(value = "判断包含子节点") + @GetMapping("/judgeContaintChilds") + /*@RequiresPermissions("lawss:sarMenu:judgequeryMenuByPid")*/ + public ResponseMessage judgeContaintChilds(String ids) throws Exception { + boolean result = sarFileSplitItemsEOService.judgeContaintChilds(ids); + return Result.success(result); + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导出zip") + @GetMapping(value = "/exportSplitInfoZip") + public void exportSplitInfoZip(String idList, String infoId, String exportName, HttpServletResponse response, HttpServletRequest request) throws Exception { + OutputStream os = null; + OutputStream excelOS = null; + HSSFWorkbook workbook = new HSSFWorkbook(); + String fileOriName = "拆分条款信息"; + if (StringUtils.isNotEmpty(exportName)) { + fileOriName = exportName; + } + try{ + //创建临时文件夹 + String fileNowPath = uploadFilePath + "/tempZip/" + UUIDUtils.randomUUID20() + "/" + fileOriName; + File nowFile = new File(fileNowPath); + if (nowFile.exists()){ + nowFile.delete(); + } + nowFile.mkdirs(); + String fileName = fileOriName + ".xls"; + HSSFSheet sheetItems = workbook.createSheet("条款内容"); + String[] headers = {"条款号","条款名称","内容简介"}; + HSSFCellStyle cellStyle =workbook.createCellStyle(); + cellStyle.setWrapText(true); +// cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); + cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + HSSFCellStyle cellStyle1 =workbook.createCellStyle(); + cellStyle1.setAlignment(HorizontalAlignment.CENTER); + HSSFCellStyle cellStyleLink =workbook.createCellStyle(); + HSSFFont font = workbook.createFont(); + font.setColor(IndexedColors.LIGHT_BLUE.index); + cellStyleLink.setFont(font); + cellStyleLink.setWrapText(true); + List itemIdList = new ArrayList<>(); + SarFileSplitItemsEOPage page = new SarFileSplitItemsEOPage(); + if (StringUtils.isNotEmpty(idList)) { + String[] idArr = idList.split(","); + itemIdList = Arrays.asList(idArr); + page.setIdList(itemIdList); + } + //查询全部条款 + page.setInfoId(infoId); + page.setOrderBy("SAR_FILE_SPLIT_MENU.display_seq asc"); + List allItemsList = sarFileSplitItemsEOService.queryByOrdersForExport(page); + List allTableList = new ArrayList<>(); + List allImgList = new ArrayList<>(); + List allRelevFileList = new ArrayList<>(); + int countMaxFile = 1; + if (allItemsList != null && !allItemsList.isEmpty()) { + for (FileSplitItemsExportDto itemsExportDto : allItemsList) { + SarFileSplitItemsValEOPage valEOPage = new SarFileSplitItemsValEOPage(); + valEOPage.setItemId(itemsExportDto.getId()); + valEOPage.setOrderBy("DISPLAY_SEQ,ID"); + List getValList = sarFileSplitItemsValEOService.queryByList(valEOPage); + List valContentList = sarFileSplitItemsEOService.combineItemValInfo(getValList,allTableList,allImgList,page); + itemsExportDto.setItemValContent(valContentList); + } + } + // 在excel表中添加表头 + HSSFRow row = sheetItems.createRow(0); + sheetItems.setColumnWidth(0,10*256); + sheetItems.setColumnWidth(1,20*256); + sheetItems.setColumnWidth(2,100*256); + sheetItems.setColumnWidth(3,20*256); + sheetItems.setColumnWidth(4,20*256); + sheetItems.setColumnWidth(5,20*256); + sheetItems.setColumnWidth(6,20*256); + sheetItems.setColumnWidth(7,20*256); + sheetItems.setColumnWidth(8,20*256); + sheetItems.setColumnWidth(9,20*256); + + for (int i = 0; i < headers.length; i++) { + HSSFCell cell = row.createCell(i); + HSSFRichTextString text = new HSSFRichTextString(headers[i]); + cell.setCellValue(text); + cell.setCellStyle(cellStyle1); + } + //放文字内容 + int allRow = 0; + for(int rowNum = 0;rowNum < allItemsList.size(); rowNum++){ + FileSplitItemsExportDto exportDto = allItemsList.get(rowNum); + List valList = exportDto.getItemValContent(); + int countFile = 0; + if(valList != null && !valList.isEmpty()){ + int startRow = allRow + 1; + for (int valRow=0;valRow -1) { + content = content.substring(0,content.lastIndexOf("\n")); + } + } + //处理上下角标 + List subList = new ArrayList<>(); + List supList = new ArrayList<>(); + boolean handleCorner = false; + if (content.contains("")) { + handleCornerMarkers(content, supList, "",""); + } + if (content.contains("")) { + handleCornerMarkers(content, subList, "",""); + } + if (subList.size() > 0 || supList.size() > 0) { + content = content.replaceAll("", ""); + content = content.replaceAll("", ""); + content = content.replaceAll("", ""); + //设置角标font + HSSFFont fontSub = workbook.createFont(); + fontSub.setTypeOffset(HSSFFont.SS_SUB); + HSSFFont fontSup = workbook.createFont(); + fontSup.setTypeOffset(HSSFFont.SS_SUPER); + + RichTextString richTextString = new HSSFRichTextString(content); + if (subList.size() > 0) { + for (SplitFont splitFont : subList) { + richTextString.applyFont(splitFont.getStartIndex(),splitFont.getEndIndex(),fontSub); + } + } + if (supList.size() > 0) { + for (SplitFont splitFont : supList) { + richTextString.applyFont(splitFont.getStartIndex(),splitFont.getEndIndex(),fontSup); + } + } + cell2.setCellValue(richTextString); + handleCorner = true; + } + + if("TABLE".equals(valList.get(valRow).getValType())){ + /* 连接跳转*/ + CreationHelper createHelper = workbook.getCreationHelper(); + Hyperlink hyperlink1 = createHelper.createHyperlink(HyperlinkType.DOCUMENT); + String tableName = "#\'"+ content + "\'!A1"; + hyperlink1.setAddress(tableName); + cell2.setHyperlink(hyperlink1);// 链接 + row1.getCell(2).setCellStyle(cellStyleLink); + } else if ("IMG".equals(valList.get(valRow).getValType())) { + /* 连接跳转*/ + CreationHelper createHelper = workbook.getCreationHelper(); + Hyperlink hyperlink1 = createHelper.createHyperlink(HyperlinkType.FILE); + String imgName = content; + hyperlink1.setAddress(imgName); + cell2.setHyperlink(hyperlink1);// 链接 + row1.getCell(2).setCellStyle(cellStyleLink); + } + if (!handleCorner) { + cell2.setCellValue(content); + } + + + row1.createCell(3).setCellValue(exportDto.getResponsibleUnitShow()); + row1.getCell(3).setCellStyle(cellStyle); + row1.createCell(4).setCellValue(exportDto.getFoShow()); + row1.getCell(4).setCellStyle(cellStyle); + row1.createCell(5).setCellValue(exportDto.getDutyEngineerShow()); + row1.getCell(5).setCellStyle(cellStyle); + row1.createCell(6).setCellValue(exportDto.getSvpps()); + row1.getCell(6).setCellStyle(cellStyle); + row1.createCell(7).setCellValue(exportDto.getApplyArctic()); + row1.getCell(7).setCellStyle(cellStyle); + row1.createCell(8).setCellValue(exportDto.getClaimTypeShow()); + row1.getCell(8).setCellStyle(cellStyle); + row1.createCell(9).setCellValue(exportDto.getBusStandCover()); + row1.getCell(9).setCellStyle(cellStyle); + + } + if (allRow > startRow) { + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,0,0)); + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,1,1)); + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,3,3)); + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,4,4)); + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,5,5)); + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,6,6)); + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,7,7)); + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,8,8)); + sheetItems.addMergedRegion(new CellRangeAddress(startRow,allRow,9,9)); + } + } else { + allRow++; + HSSFRow row1 = sheetItems.createRow(allRow); + row1.createCell(0).setCellValue(exportDto.getItemsNum()); + row1.getCell(0).setCellStyle(cellStyle); + row1.createCell(1).setCellValue(exportDto.getItemsName()); + row1.getCell(1).setCellStyle(cellStyle); + row1.createCell(2).setCellValue(""); + row1.getCell(2).setCellStyle(cellStyle); + row1.createCell(3).setCellValue(exportDto.getResponsibleUnitShow()); + row1.getCell(3).setCellStyle(cellStyle); + row1.createCell(4).setCellValue(exportDto.getFoShow()); + row1.getCell(4).setCellStyle(cellStyle); + row1.createCell(5).setCellValue(exportDto.getDutyEngineerShow()); + row1.getCell(5).setCellStyle(cellStyle); + row1.createCell(6).setCellValue(exportDto.getSvpps()); + row1.getCell(6).setCellStyle(cellStyle); + row1.createCell(7).setCellValue(exportDto.getApplyArctic()); + row1.getCell(7).setCellStyle(cellStyle); + row1.createCell(8).setCellValue(exportDto.getClaimTypeShow()); + row1.getCell(8).setCellStyle(cellStyle); + row1.createCell(9).setCellValue(exportDto.getBusStandCover()); + row1.getCell(9).setCellStyle(cellStyle); + } + } + if (countMaxFile > 1) { + for (int i=1;i> rowtableList = tableExportDto.getTableEOList(); +// HSSFSheet sheetTable = workbook.createSheet(tableExportDto.getTableName()); + String tableName = tableExportDto.getTableName(); + String tableHtml = tableExportDto.getTableHtCon(); + if (StringUtils.isNotEmpty(tableHtml) && tableHtml.indexOf("
    ") < 0) { + if (tableHtml.indexOf("") < 0) { + tableHtml = tableHtml.replaceFirst("",""); + tableHtml = tableHtml.replaceFirst("
    ",""); + } else { + tableHtml = tableHtml.replaceFirst("",""); + tableHtml = tableHtml.replaceFirst("",""); + } + } + String cnt = "\n"; + tableHtml = tableHtml.replaceAll("<[\\s]*?br[^>]*?>|<[\\s]*?\\/[\\s]*?br[\\s]*?>", cnt); + workbook = ConvertHtml2Excel.table2Excel(tableHtml,workbook,tableName); +// for (int r=0;r colTableList = rowtableList.get(r); +// HSSFRow tRow = sheetTable.createRow(colTableList.get(0).getRowNum()-1); +// for(int c=0;c splitFontList, String label,String remove) { + content = content.replaceAll(remove, ""); + String[] split = content.split(label); + split[0] = split[0].replaceAll("", ""); + int index = split[0].length(); + for (int i = 1; i < split.length; i++) { + SplitFont splitFont = new SplitFont(); + String text = split[i]; + String cornerLabel = text.substring(0, text.indexOf("")); + splitFont.setStartIndex(index); + splitFont.setEndIndex(index + cornerLabel.length()); + splitFontList.add(splitFont); + text = text.replaceAll("", ""); + index = index + text.length(); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importSplitItemsZip") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file, + SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception { + //验证文件名是否合格 + /* 截取后缀名 */ + sarFileSplitInfoEO.setFileName(file.getOriginalFilename()); + int pos = file.getOriginalFilename().lastIndexOf("."); + String str = file.getOriginalFilename().substring(pos+1).toLowerCase(); + String filenameorg = file.getOriginalFilename().substring(0,pos); + //判断上传文件必须是zip + if (!str.equals("zip")) { + return Result.error("fail", "请上传zip文件"); + } + String path = filePath + "/modal/"+filenameorg; + File saveDirectory = new File(path); + if(!saveDirectory.isDirectory()){ + saveDirectory.mkdir(); + } + FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path +"/"+ file.getOriginalFilename())); + try{ + //解压缩 + String zipEntryName = FileUnZip.unZipFiles(path +"/"+ file.getOriginalFilename(),path); + // 数据相关处理, + // 1.获取其中的Excel, + List excelfilelist = FileUnZip.readExcelFile(zipEntryName); + if(excelfilelist.size()<1){ + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "压缩包内没有上传Excel数据"); + } else if (excelfilelist.size()>1) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "压缩包内有多个Excel数据源"); + } + File excelfile = excelfilelist.get(0); + // 导入参数设置,默认即可 + ImportParams params = new ImportParams(); + try { + String fields[] = {"条款号", "条款名称","内容简介","责任部门", + "FO","责任工程师","SVPPS","适用车辆类型","要求类型","企标覆盖关系"}; + params.setImportFields(fields); + List result = new ArrayList<>(); + // 解析excel,并返回校验信息 + result = ExcelImportUtil.importExcel(excelfile, SarFileSplitItemsImportDto.class, params); + Long getExcelInfo = System.currentTimeMillis(); + //excel读取到的数据 + List datas = result; + if(datas!=null &&!datas.isEmpty()){ + try { + //获取全部sheet页中表格 + Workbook workbook = WorkbookFactory.create(new FileInputStream(excelfile)); + //XSSFWorkbook workbook=new XSSFWorkbook(new FileInputStream(excelfile)); + Sheet sheet=null; + List getSheetTableList = new ArrayList(); + for (int i = 1; i < workbook.getNumberOfSheets(); i++) {//获取每个Sheet表 + sheet = workbook.getSheetAt(i); + SplitTableInfo splitTableInfo = new SplitTableInfo(); + splitTableInfo.setTableName(sheet.getSheetName()); + String tableHtml = POIReadExcelToHtml.readExcelToHtml(workbook,i,false); + splitTableInfo.setTableHtml(tableHtml); + getSheetTableList.add(splitTableInfo); + } + int i = 0 ; + List datasUpdate = new ArrayList<>(); + //2019.05.14 当读取exceL出现空行过多时,空行数为20以上时中断读取,将数据清洗为新的list + for(SarFileSplitItemsImportDto sarStandImportDto :datas){ + if(i>20){ + break; + } + //判断此行数据是否全部为空 + if(checkObjAllFieldsIsNull(sarStandImportDto)){ + i++; + //是则不读取 + continue; + } + i = 0; + datasUpdate.add(sarStandImportDto); + } + String unzipfilepath = zipEntryName; + ResponseMessage message = sarFileSplitItemsEOService.importSplitItems + (datasUpdate,unzipfilepath,sarFileSplitInfoEO,getSheetTableList); + workbook.close(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return message; + } catch (Exception e) { + e.printStackTrace(); + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", e.getMessage()); + } + }else{ + + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "没有可导入的数据,请检查!"); + } + } catch (NoSuchElementException e){ + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "没有可导入的数据,请检查!"); + } catch (Exception e) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "读取失败,请严格按照模板文件导入数据"); + } + } catch (Exception e) { + //删除原上传文件 + FileUnZip.deleteDir(saveDirectory); + return Result.error("fail", "读取失败,请严格按照模板文件导入数据"); + } + + } + + @ApiOperation(value = "合并条款") + @PostMapping("/combineItems") + public ResponseMessage combineItems(String ids) throws Exception { + if (StringUtils.isNotBlank(ids)) { + sarFileSplitItemsEOService.combineItems(ids); + return Result.success("0","合并条款成功",ids); + } else { + return Result.error("传入id不能为空"); + } + + } + + /** + * 获取对应条款信息 + * @param standNum + * @param fileType + * @return + */ + @ApiOperation(value = "|SarFileSplitInfoEO|获取所有对应的条款") + @GetMapping("getClauseBySplitId") + public ResponseMessage getClauseBySplitId(String standNum, String fileType, SarFileSplitItemsEOPage page) throws Exception{ + //根据标准号查询标准是否存在 + if (standNum == null) { + return Result.error("标准号不能为空"); + } + List getList = sarStandardsInfoEOService.selectStandardsByStandnumber(standNum,null); + if (getList.size()>0){ + //查询拆分中所有条款信息 + String getSplitItemsList = sarFileSplitInfoEOService.getClauseBySplitId(standNum,fileType); + page.setInfoId(getSplitItemsList); + Map map = sarFileSplitItemsEOService.getByPage(page); + page.getPager().setRowCount((Integer) map.get("count")); + return Result.success(getPageInfo(page.getPager(), (List) map.get("list"))); + } + return Result.error("0", "该条数据标准号在标准库中不存在"); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsValEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsValEOController.java new file mode 100644 index 00000000..c0204cdb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitItemsValEOController.java @@ -0,0 +1,132 @@ +package com.adc.da.slrs.standardSplit.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsValEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsValEOPage; +import com.adc.da.slrs.standardSplit.service.SarFileSplitItemsEOService; +import com.adc.da.slrs.standardSplit.service.SarFileSplitItemsTableEOService; +import com.adc.da.slrs.standardSplit.service.SarFileSplitItemsValEOService; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; + +@RestController +@RequestMapping("/${restPath}/lawss/sarFileSplitItemsVal") +@Api(description = "|SarFileSplitItemsValEO|") +public class SarFileSplitItemsValEOController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitItemsValEOController.class); + + @Autowired + private SarFileSplitItemsValEOService sarFileSplitItemsValEOService; + + @Autowired + private SarFileSplitItemsTableEOService sarFileSplitItemsTableEOService; + + @Autowired + private SarFileSplitItemsEOService sarFileSplitItemsEOService; + + @ApiOperation(value = "|SarFileSplitItemsValEO|分页查询") + @GetMapping("/page") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitItemsVal:page") + public ResponseMessage> page(SarFileSplitItemsValEOPage page) throws Exception { + page.setOrderBy("modify_time desc"); + List rows = sarFileSplitItemsValEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarFileSplitItemsValEO|查询") + @GetMapping("/getItemsValList") +// @RequiresPermissions("lawss:sarFileSplitItemsVal:list") + public ResponseMessage> list(SarFileSplitItemsValEOPage page) throws Exception { + page.setOrderBy("DISPLAY_SEQ,ID"); + List getList = sarFileSplitItemsValEOService.queryByList(page); + if (getList != null && !getList.isEmpty()) { + for (SarFileSplitItemsValEO sarFileSplitItemsValEO : getList) { + String imgPath = sarFileSplitItemsValEO.getItemContent(); + if ("IMG".equals(sarFileSplitItemsValEO.getType()) && StringUtils.isNotEmpty(imgPath)) { + String imgName = imgPath.substring(imgPath.lastIndexOf("/")+1, imgPath.length()); + sarFileSplitItemsValEO.setImgName(imgName); + } + /*else if ("TABLE".equals(sarFileSplitItemsValEO.getType())) { + SarFileSplitItemsTableEOPage tablePage = new SarFileSplitItemsTableEOPage(); + tablePage.setItemsValId(sarFileSplitItemsValEO.getId()); + List tableList = sarFileSplitItemsTableEOService.queryByList(tablePage); + List tableListRow = sarFileSplitItemsTableEOService.queryByRowNum(tablePage); + sarFileSplitItemsValEO.setTableList(tableList); + if (tableListRow != null && !tableListRow.isEmpty()) { + List> getTableList = new ArrayList<>(); + for (int i=1; i <= tableListRow.size();i++) { + List rowList = new ArrayList<>(); + for (int j=0; j < tableList.size();j++) { + if (tableList.get(j).getRowNum() == i) { + rowList.add(tableList.get(j)); + } + } + getTableList.add(rowList); + } + sarFileSplitItemsValEO.setTableListShow(getTableList); + } + }*/ + } + } + return Result.success(getList); + } + + @ApiOperation(value = "|SarFileSplitItemsValEO|详情") + @GetMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitItemsVal:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(sarFileSplitItemsValEOService.selectByPrimaryKey(id)); + } + + @ApiOperation(value = "|SarFileSplitItemsValEO|新增") + @PostMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitItemsVal:save") + public ResponseMessage create(@RequestBody SarFileSplitItemsValEO sarFileSplitItemsValEO) throws Exception { + sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); + return Result.success(sarFileSplitItemsValEO); + } + + @ApiOperation(value = "|SarFileSplitItemsValEO|修改") + @PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitItemsVal:update") + public ResponseMessage update(@RequestBody SarFileSplitItemsValEO sarFileSplitItemsValEO) throws Exception { + sarFileSplitItemsValEOService.updateByPrimaryKeySelective(sarFileSplitItemsValEO); + return Result.success(sarFileSplitItemsValEO); + } + + @ApiOperation(value = "|SarFileSplitItemsValEO|删除") + @DeleteMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitItemsVal:delete") + public ResponseMessage delete(@PathVariable String id) throws Exception { + sarFileSplitItemsValEOService.deleteByPrimaryKey(id); + logger.info("delete from SAR_FILE_SPLIT_ITEMS_VAL where id = {}", id); + return Result.success(); + } + + @ApiOperation(value = "|SarFileSplitItemsEO|根据目录查询") + @GetMapping("/getSplitItemsByMenu") +// @RequiresPermissions("lawss:sarFileSplitItems:page") + public ResponseMessage> getSplitItemsByMenu(String menuId,String infoId) throws Exception { + List getList = sarFileSplitItemsValEOService.getSplitItemsByMenu(menuId,infoId); + return Result.success(getList); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitMenuEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitMenuEOController.java new file mode 100644 index 00000000..57957edd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarFileSplitMenuEOController.java @@ -0,0 +1,150 @@ +package com.adc.da.slrs.standardSplit.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.slrs.standardSplit.dao.SarFileSplitItemsEODao; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitMenuEO; +import com.adc.da.slrs.standardSplit.service.SarFileSplitMenuEOService; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitMenuEOPage; +import com.adc.da.slrs.standardSplit.entity.DrageMenuEO; + +@RestController +@RequestMapping("/${restPath}/lawss/sarFileSplitMenu") +@Api(description = "|SarFileSplitMenuEO|") +public class SarFileSplitMenuEOController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitMenuEOController.class); + + @Autowired + private SarFileSplitMenuEOService sarFileSplitMenuEOService; + + @Autowired + private SarFileSplitItemsEODao sarFileSplitItemsEODao; + + @ApiOperation(value = "|SarFileSplitMenuEO|分页查询") + @GetMapping("/page") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitMenu:page") + public ResponseMessage> page(SarFileSplitMenuEOPage page) throws Exception { + page.setOrderBy("modify_time desc"); + List rows = sarFileSplitMenuEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|查询") + @GetMapping("getSplitMenusByInfoId") + //@RequiresPermissions("lawss:sarFileSplitMenu:list") + public ResponseMessage> list(SarFileSplitMenuEOPage page) throws Exception { + page.setValidFlag("0"); + // page.setOrderBy("regexp_replace(replace('.'||NAME, '.', '.00000000'), '0+([^\\.]{8})', '\\1')"); + page.setOrderBy("display_seq asc"); + List getList = sarFileSplitMenuEOService.queryByList(page); + return Result.success(getList); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|详情") + @GetMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarFileSplitMenu:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(sarFileSplitMenuEOService.selectByPrimaryKey(id)); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|新增") + @PostMapping("/addMenu") +// @RequiresPermissions("lawss:sarFileSplitMenu:save") + public ResponseMessage create(SarFileSplitMenuEO sarFileSplitMenuEO) throws Exception { + sarFileSplitMenuEOService.addMenu(sarFileSplitMenuEO); + return Result.success("0","新增成功",sarFileSplitMenuEO); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|修改") + @PutMapping("/updateMenu") +// @RequiresPermissions("lawss:sarFileSplitMenu:update") + public ResponseMessage update(SarFileSplitMenuEO sarFileSplitMenuEO) throws Exception { + sarFileSplitMenuEOService.updateByPrimaryKeySelective(sarFileSplitMenuEO); + return Result.success("0","修改成功",sarFileSplitMenuEO); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|删除") + @DeleteMapping("/deleteMenu") +// @RequiresPermissions("lawss:sarFileSplitMenu:delete") + public ResponseMessage delete(String id) throws Exception { + sarFileSplitMenuEOService.deleteMenu(id); + return Result.success("0","删除成功",null); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|拖拽节点") + @PostMapping("/dragMenu") + public ResponseMessage dragMenu(@RequestBody DrageMenuEO drageMenuEO) throws Exception { + sarFileSplitMenuEOService.dragMenu(drageMenuEO); + return Result.success("0","修改成功",drageMenuEO); + } + + @ApiOperation(value = "查询子节点") + @PostMapping("/judgequeryMenuByPid") + /*@RequiresPermissions("lawss:sarMenu:judgequeryMenuByPid")*/ + public ResponseMessage judgequeryMenuByPid(SarFileSplitMenuEO sarMenuEO) throws Exception { + return Result.success(sarFileSplitMenuEOService.judgequeryMenuByPid(sarMenuEO)); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|复制节点包括子节点") + @PostMapping("/copyMenu") + public ResponseMessage copyMenu(@RequestBody SarFileSplitMenuEO sarMenuEO) throws Exception { + int result = sarFileSplitMenuEOService.copyMenu(sarMenuEO); + return Result.success("0","复制成功",sarMenuEO); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|复制节点不包括子节点") + @PostMapping("/copyMenuNotChildren") + public ResponseMessage copyMenuNotChildren(@RequestBody SarFileSplitItemsEO sarFileSplitItemsEO) throws Exception { + int result = sarFileSplitMenuEOService.copyMenuNotChildren(sarFileSplitItemsEO); + return Result.success("0","复制成功",sarFileSplitItemsEO); + } + + @ApiOperation(value = "|SarFileSplitMenuEO|批量复制节点不包括子节点") + @PostMapping("/copyMenuNotChildrenall") + public ResponseMessage> copyMenuNotChildrenall(String ids, String menuids, String infoIds) throws Exception { + + /*int result = sarFileSplitMenuEOService.copyMenuNotChildren(sarFileSplitItemsEO); + return Result.success("0","复制成功",sarFileSplitItemsEO);*/ + String idsl[] = ids.split(","); + List idlist =new ArrayList<>(); + idlist = Arrays.asList(idsl); + + String menuidss[] = menuids.split(","); + List menuidslist =new ArrayList<>(); + menuidslist = Arrays.asList(menuidss); + + + String infoIdss[] = infoIds.split(","); + List infoIdslist =new ArrayList<>(); + infoIdslist = Arrays.asList(infoIdss); + List sarFileSplitItemsEOS = new ArrayList<>(); + for(int i=0;i { + + private static final Logger logger = LoggerFactory.getLogger(SarItemsStandCompareHisEOController.class); + + @Autowired + private SarItemsCompareHisEODao sarItemsCompareHisEOService; + + @ApiOperation(value = "|SarStandItemsCompareHisEO|分页查询") + @GetMapping("/page") + public ResponseMessage> page(SarStandItemsCompareHisEOPage page) throws Exception { + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("STAND_HIS_ID",page.getStandHisId()); + List rows = sarItemsCompareHisEOService.selectList(queryWrapper); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandCompareHisEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandCompareHisEOController.java new file mode 100644 index 00000000..ef94128e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandCompareHisEOController.java @@ -0,0 +1,168 @@ +package com.adc.da.slrs.standardSplit.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.person.dao.PersonCollectEODao; +import com.adc.da.person.dao.PersonShareEODao; +import com.adc.da.slrs.standardSplit.dao.SarStandCompareHisEODao; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarStandCompareHisEO; +import com.adc.da.slrs.standardSplit.entity.SarStandCompareHisEOPage; +import com.adc.da.slrs.standardSplit.service.SarFileSplitInfoEOService; +import com.adc.da.slrs.standardSplit.service.SarItemsCompareHisEOService; +import com.adc.da.slrs.standardSplit.service.SarStandCompareHisEOService; +import com.adc.da.slrs.standardSplit.service.SarStandItemsCompareHisEOService; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.web.bind.annotation.*; +import java.util.Date; +import java.util.List; +import java.util.Map; +import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; + +@RestController +@RequestMapping("/${restPath}/lawss/sarStandCompareHis") +@Api(description = "|SarStandCompareHisEO|") +public class SarStandCompareHisEOController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandCompareHisEOController.class); + + @Autowired + private SarStandCompareHisEOService sarStandCompareHisEOService; + + @Autowired + private SarFileSplitInfoEOService sarFileSplitInfoEOService; + + @Autowired + private SarStandItemsCompareHisEOService sarStandItemsCompareHisEOService; + + @Autowired + private SarItemsCompareHisEOService sarItemsCompareHisEOService; + + @Autowired + private PersonShareEODao personShareEODao; + + @Autowired + private PersonCollectEODao personCollectEODao; + + @Autowired + private SarStandCompareHisEODao dao; + + @ApiOperation(value = "|SarStandCompareHisEO|分页查询") + @GetMapping("/page") +// @RequiresPermissions("lawss:sarStandCompareHis:page") + public ResponseMessage> page(SarStandCompareHisEOPage page) throws Exception { + List rows = sarStandCompareHisEOService.standCompareHisPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarStandCompareHisEO|查询") + @GetMapping("") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandCompareHis:list") + public ResponseMessage> list(SarStandCompareHisEOPage page) throws Exception { + return Result.success(sarStandCompareHisEOService.queryByList(page)); + } + + @ApiOperation(value = "|SarStandCompareHisEO|详情") + @GetMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandCompareHis:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(sarStandCompareHisEOService.selectByPrimaryKey(id)); + } + + @ApiOperation(value = "|SarStandCompareHisEO|新增") + @PostMapping("/addStandCompareHis") + //@RequiresPermissions("lawss:sarStandCompareHis:save") + public ResponseMessage addStandCompareHis(@RequestBody SarStandCompareHisEO sarStandCompareHisEO) { + try { + String id = UUIDUtils.randomUUID20(); + sarStandCompareHisEO.setId(id); + sarStandCompareHisEO.setCreateUser(LoginUserUtil.getUserId()); + sarStandCompareHisEO.setModifyUser(LoginUserUtil.getUserId()); + sarStandCompareHisEO.setCreateTime(new Date()); + sarStandCompareHisEO.setModifyTime(new Date()); + sarStandCompareHisEOService.insertSelective(sarStandCompareHisEO); + return Result.success(id); + }catch (Exception e){ + logger.error(e.getMessage(),e); + return Result.error("保存失败"); + } + } + + @ApiOperation(value = "|SarStandCompareHisEO|修改") + @PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandCompareHis:update") + public ResponseMessage update(@RequestBody SarStandCompareHisEO sarStandCompareHisEO) throws Exception { + sarStandCompareHisEOService.updateByPrimaryKeySelective(sarStandCompareHisEO); + return Result.success(sarStandCompareHisEO); + } + + @ApiOperation(value = "批量删除") + @PostMapping("/deleteByIds") +// @RequiresPermissions("lawss:sarStandCompareHis:delete") + public ResponseMessage deleteByIds(String deleteByIdList){ + String ids[] = deleteByIdList.split(","); + try { + for (String id : ids) { + sarStandCompareHisEOService.deleteByPrimaryKey(id); + sarStandItemsCompareHisEOService.deleteByStandHisId(id); + sarItemsCompareHisEOService.deleteByStandHisId(id); + personShareEODao.deleteByResId(id); + personCollectEODao.deleteByResId(id); + } + return Result.success("001","删除成功",true); + }catch (Exception e){ + return Result.error("002","删除失败",false); + } + } + + @ApiOperation(value = "条款比对") + @PostMapping("/clauseComparison") + public ResponseMessage> clauseComparison(String oldItemId, String newItemId, String standHisId,String flag) throws Exception { + Map resultMap = sarStandCompareHisEOService.clauseComparisonEvent(oldItemId,newItemId,standHisId,flag); + return Result.success(resultMap); + } + + @ApiOperation(value = "全文比对") + @PostMapping("/fullTextComparison") + public ResponseMessage fullTextComparison(String leftStandard, String rightStandard) throws Exception { + SarFileSplitInfoEO leftInfo = sarFileSplitInfoEOService.selectByPrimaryKey(leftStandard); + SarFileSplitInfoEO rightInfo = sarFileSplitInfoEOService.selectByPrimaryKey(rightStandard); + //保存标准比对历史表数据 + SarStandCompareHisEO sarStandCompareHisEO = new SarStandCompareHisEO(); +// String id = UUIDUtils.randomUUID20(); + String id=UUIDUtils.randomUUID(32); + sarStandCompareHisEO.setId(id); + sarStandCompareHisEO.setOldStandId(leftStandard); + sarStandCompareHisEO.setNewStandId(rightStandard); + sarStandCompareHisEO.setOldFileType(leftInfo.getFileType()); + sarStandCompareHisEO.setNewFileType(rightInfo.getFileType()); + sarStandCompareHisEO.setOldStandName(leftInfo.getStandNameSplit()); + sarStandCompareHisEO.setNewStandName(rightInfo.getStandNameSplit()); + sarStandCompareHisEO.setOldStandNum(leftInfo.getStandNumSplit()); + sarStandCompareHisEO.setNewStandNum(rightInfo.getStandNumSplit()); + sarStandCompareHisEO.setOldSarType(leftInfo.getSarType()); + sarStandCompareHisEO.setNewSarType(rightInfo.getSarType()); + sarStandCompareHisEO.setCreateTime(new Date()); + sarStandCompareHisEO.setModifyTime(new Date()); + sarStandCompareHisEO.setCreateUser(LoginUserUtil.getUserId()); + sarStandCompareHisEO.setModifyUser(LoginUserUtil.getUserId()); + sarStandCompareHisEO.setCompareStatus("比对中"); + sarStandCompareHisEO.setCompareType("全文比对"); + sarStandCompareHisEO.setCreateTime(new Date()); + dao.insertSelective(sarStandCompareHisEO); + Map resultMap = sarStandCompareHisEOService.fullTextComparison(leftStandard,rightStandard,id); + return Result.success("标准正在比对中请稍后查看结果"); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandFileEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandFileEOController.java new file mode 100644 index 00000000..637f9fe0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandFileEOController.java @@ -0,0 +1,170 @@ +package com.adc.da.slrs.standardSplit.controller; + +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; +import com.adc.da.slrs.standardSplit.entity.SarStandFileEO; +import com.adc.da.slrs.standardSplit.entity.SarStandFileEOPage; +import com.adc.da.slrs.standardSplit.service.SarStandAttrDetailsEOService; +import com.adc.da.slrs.standardSplit.service.SarStandFileEOService; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.adc.da.att.entity.AttFileEO; + +@RestController +@RequestMapping("/${restPath}/lawss/sarStandFile") +@Api(description = "|SarStandFileEO|") +public class SarStandFileEOController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandFileEOController.class); + + @Autowired + private SarStandFileEOService sarStandFileEOService; + @Autowired + private IAttFileEOService attFileEOService; + @Autowired + private SarStandAttrDetailsEOService sarStandAttrDetailsEOService; + public static final String APPLICATION_JSON_UTF8_VALUE = "application/json;charset=UTF-8"; + + + @ApiOperation(value = "|SarStandFileEO|分页查询") + @GetMapping("/page") + // 401问题2021-03-31暂时注释掉 liuhuiwen + // @RequiresPermissions("lawss:sarStandFile:page") + public ResponseMessage> page(SarStandFileEOPage page) throws Exception { + List rows = sarStandFileEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarStandFileEO|查询") + @GetMapping("") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandFile:list") + public ResponseMessage> list(SarStandFileEOPage page) throws Exception { + return Result.success(sarStandFileEOService.queryByList(page)); + } + + @ApiOperation(value = "|SarStandFileEO|详情") + @GetMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandFile:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(sarStandFileEOService.selectByPrimaryKey(id)); + } + + @ApiOperation(value = "|SarStandFileEO|新增") + @PostMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandFile:save") + public ResponseMessage create(@RequestBody SarStandFileEO sarStandFileEO) throws Exception { + sarStandFileEOService.insertSelective(sarStandFileEO); + return Result.success(sarStandFileEO); + } + + @ApiOperation(value = "|SarStandFileEO|修改") + @PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandFile:update") + public ResponseMessage update(@RequestBody SarStandFileEO sarStandFileEO) throws Exception { + sarStandFileEOService.updateByPrimaryKeySelective(sarStandFileEO); + return Result.success(sarStandFileEO); + } + + @ApiOperation(value = "|SarStandFileEO|删除") + @DeleteMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandFile:delete") + public ResponseMessage delete(@PathVariable String id) throws Exception { + sarStandFileEOService.deleteByPrimaryKey(id); + logger.info("delete from SAR_STAND_FILE where id = {}", id); + return Result.success(); + } + + @ApiOperation(value = "|SarStandFileEO|查询转换后的文档详情") + @GetMapping("/queryConvertAtt") + /*@RequiresPermissions("lawss:sarLawsFile:list")*/ + public ResponseMessage queryConvertAtt(String attId) throws Exception { + List getList = sarStandFileEOService.selectFileByAttId(attId); + SarStandFileEO sarBussStandFileEO = new SarStandFileEO(); + if(getList != null && !getList.isEmpty()){ + sarBussStandFileEO = getList.get(0); + AttFileEO attFileEO = attFileEOService.getFileInfo(attId); + if(attFileEO != null){ + sarBussStandFileEO.setFileOldName(attFileEO.getOldFileName()); + } +// readStandOrLawsLogService.sendReadSOLLog("STAND",sarBussStandFileEO); + return Result.success(sarBussStandFileEO); + } else { + return Result.success(null); + } + + } + + @ApiOperation(value = "|SarStandFileEO|分页查询") + @GetMapping("/getStandFileListByPage") +// @RequiresPermissions("lawss:sarStandRes:page") + public ResponseMessage> getStandFileListByPage(SarStandFileEOPage page) throws Exception { + String suffix = page.getFileSuffix(); + if (StringUtils.isNotBlank(suffix)) { + page.setFileSuffixList(suffix.split(",")); + } + List rows = sarStandFileEOService.getStandFileListByPage(page); + Integer count = sarStandFileEOService.getStandFileListByPageCount(page); + page.getPager().setRowCount(count); + for (SarStandFileEO one:rows) { + one.setAttId(one.getAttId1()); + } + if (rows != null && !rows.isEmpty()) { + for (SarStandFileEO sarStandFileEO : rows) { + List getField = sarStandAttrDetailsEOService.selectFileFieldForSel(sarStandFileEO.getStandFileClassify()); + if (getField != null && !getField.isEmpty()) { + sarStandFileEO.setStandFileClassifyShow(getField.get(0).getLabel()); + } else { + sarStandFileEO.setStandFileClassifyShow(null); + } + } + } + return Result.success(getPageInfo(page.getPager(), rows)); + } + + + @ApiOperation(value = "查询转换后文本信息") + @GetMapping("/queryFileInfo") + public ResponseMessage> queryFileInfo(String standId){ + + List sarStandFileEOS = sarStandFileEOService.selectFileByStandId(standId); + return Result.success(sarStandFileEOS); + } + + @ApiOperation(value = "查询文本信息") + @GetMapping("/queryFileInfoNew") + public ResponseMessage> queryFileInfoNew(@RequestParam("standId") String standId,@RequestParam("type") String type) throws Exception { + + List sarStandFileEOS = sarStandFileEOService.selectFileByStandIdOCR(standId,type); + return Result.success(sarStandFileEOS); + } + + + + @ApiOperation(value = "查询转原始文件信息") + @GetMapping("/querySourceFileInfo") + public ResponseMessage> querySourceFileInfo(String standId){ + + List sarStandFileEOS = sarStandFileEOService.querySourceFileInfo(standId); + return Result.success(sarStandFileEOS); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandItemsCompareHisEOController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandItemsCompareHisEOController.java new file mode 100644 index 00000000..de6ea81a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/controller/SarStandItemsCompareHisEOController.java @@ -0,0 +1,284 @@ +package com.adc.da.slrs.standardSplit.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.common.HtmlTextExcel; +import com.adc.da.common.ReadExcel; +import com.adc.da.http.PageInfo; +import com.adc.da.slrs.standardSplit.entity.SarStandItemsCompareHisEO; +import com.adc.da.slrs.standardSplit.entity.SarStandItemsCompareHisEOPage; +import com.adc.da.slrs.standardSplit.service.SarStandCompareHisEOService; +import com.adc.da.slrs.standardSplit.service.SarStandItemsCompareHisEOService; +import com.adc.da.slrs.standardSplit.vo.MarkTextVO; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.IOUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.util.*; +import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; + +@RestController +@RequestMapping("/${restPath}/lawss/sarStandItemsCompareHis") +@Api(description = "|SarStandItemsCompareHisEO|") +public class SarStandItemsCompareHisEOController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(SarStandItemsCompareHisEOController.class); + + @Autowired + private SarStandItemsCompareHisEOService sarStandItemsCompareHisEOService; + + @Autowired + private SarStandCompareHisEOService sarStandCompareHisEOService; + + @ApiOperation(value = "|SarStandItemsCompareHisEO|分页查询") + @GetMapping("/page") +// @RequiresPermissions("lawss:sarStandItemsCompareHis:page") + public ResponseMessage> page(SarStandItemsCompareHisEOPage page) throws Exception { + List rows = sarStandItemsCompareHisEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|SarStandItemsCompareHisEO|查询") + @GetMapping("getStandItemsCompareHisList") +// @RequiresPermissions("lawss:sarStandItemsCompareHis:list") + public ResponseMessage> list(SarStandItemsCompareHisEOPage page) throws Exception { + List list = sarStandItemsCompareHisEOService.queryByList(page); + Map pidMap = new HashMap<>(); + for(SarStandItemsCompareHisEO sarStandItemsCompareHisEO : list){ + pidMap.put(sarStandItemsCompareHisEO.getItemsNum(),sarStandItemsCompareHisEO.getId()); + } + for(SarStandItemsCompareHisEO sarStandItemsCompareHisEO : list){ + String menu = sarStandItemsCompareHisEO.getItemsNum(); + if(menu.indexOf(".") > 0){ + String menuP = menu.substring(0,menu.lastIndexOf(".")); + sarStandItemsCompareHisEO.setPid(pidMap.get(menuP)); + }else{ + sarStandItemsCompareHisEO.setPid(""); + } + } + return Result.success(list); + } + + @ApiOperation(value = "|SarStandItemsCompareHisEO|详情") + @GetMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandItemsCompareHis:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(sarStandItemsCompareHisEOService.selectByPrimaryKey(id)); + } + + @ApiOperation(value = "|SarStandItemsCompareHisEO|新增") + @PostMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandItemsCompareHis:save") + public ResponseMessage create(@RequestBody SarStandItemsCompareHisEO sarStandItemsCompareHisEO) throws Exception { + sarStandItemsCompareHisEOService.insertSelective(sarStandItemsCompareHisEO); + return Result.success(sarStandItemsCompareHisEO); + } + + @ApiOperation(value = "|SarStandItemsCompareHisEO|修改") + @PutMapping("/updateCompareItems") +// @RequiresPermissions("lawss:sarStandItemsCompareHis:update") + public ResponseMessage update(@RequestBody SarStandItemsCompareHisEO sarStandItemsCompareHisEO) throws Exception { + sarStandItemsCompareHisEO.setModifyTime(new Date()); + sarStandItemsCompareHisEOService.updateByPrimaryKeySelective(sarStandItemsCompareHisEO); + return Result.success("0","保存成功",sarStandItemsCompareHisEO); + } + + @ApiOperation(value = "|SarStandItemsCompareHisEO|删除") + @DeleteMapping("/{id}") + //401问题2021-03-31暂时注释掉 liuhuiwen +// @RequiresPermissions("lawss:sarStandItemsCompareHis:delete") + public ResponseMessage delete(@PathVariable String id) throws Exception { + sarStandItemsCompareHisEOService.deleteByPrimaryKey(id); + logger.info("delete from SAR_STAND_ITEMS_COMPARE_HIS where id = {}", id); + return Result.success(); + } + + @ApiOperation(value = "|SarItemsCompareHisEO|导出excel") + @GetMapping(value = "/exportItemsCompareHis") + public void exportItemsCompareHis(String standHisId, String exportName, HttpServletResponse response, HttpServletRequest request) throws Exception { + OutputStream os = null; + OutputStream excelOS = null; + HSSFWorkbook workbook = new HSSFWorkbook(); + String fileOriName = "条款比对信息"; + if (StringUtils.isNotEmpty(exportName)) { + fileOriName = exportName; + } + try{ + String fileName = fileOriName + ".xls"; + HSSFSheet sheetItemsLeft = workbook.createSheet("旧文档"); + HSSFSheet sheetItemsRight = workbook.createSheet("新文档"); + String[] headers = {"条款号","条款名称","条款内容","备注"}; + // 基础样式 + HSSFCellStyle cellStyleBase =workbook.createCellStyle(); + cellStyleBase.setWrapText(true); + cellStyleBase.setVerticalAlignment(VerticalAlignment.CENTER); + HSSFFont fontBase = workbook.createFont(); + fontBase.setColor(IndexedColors.BLACK.index); + // 增加文字样式 + HSSFFont fontAdd = workbook.createFont(); + fontAdd.setColor(IndexedColors.LIGHT_BLUE.index); + // 删除文字样式 + HSSFFont fontDel = workbook.createFont(); + fontDel.setColor(IndexedColors.RED.index); + //查询左侧全部条款 + SarStandItemsCompareHisEOPage page = new SarStandItemsCompareHisEOPage(); + page.setStandHisId(standHisId); + page.setLeftOrRight("LEFT"); + List getLeftList = sarStandItemsCompareHisEOService.queryByList(page); + //查询右侧全部条款 + page.setStandHisId(standHisId); + page.setLeftOrRight("RIGHT"); + List getRightList = sarStandItemsCompareHisEOService.queryByList(page); + //左右两侧都不为空才会执行比对 + if (getLeftList != null && !getLeftList.isEmpty() && getRightList != null && !getRightList.isEmpty()) { + for (SarStandItemsCompareHisEO compareHisEO : getLeftList) { + Integer targetStand = compareHisEO.getTargetStand(); + if (targetStand != null) { + String oldItemId = compareHisEO.getItemsId(); + if(getRightList.size() > targetStand){ + SarStandItemsCompareHisEO rightCompareHis = getRightList.get(targetStand); + String newItemId = rightCompareHis.getItemsId(); + Map resultMap = sarStandCompareHisEOService.clauseComparison(oldItemId,newItemId,standHisId); + List leftString = (ArrayList)resultMap.get("leftString"); + List rightString = (ArrayList)resultMap.get("rightString"); + String leftContent = ""; + if (leftString != null && !leftString.isEmpty()) { + for (String content : leftString) { + leftContent += content; + } + } + compareHisEO.setItemsText(leftContent); + String rightContent = ""; + if (rightString != null && !rightString.isEmpty()) { + for (String content : rightString) { + rightContent += content; + } + } + getRightList.get(targetStand).setItemsText(rightContent); + } + } + } + } + //导出左侧比对结果 + if (getLeftList != null && !getLeftList.isEmpty()) { + // 左侧在excel表中添加表头 + HSSFRow row = sheetItemsLeft.createRow(0); + sheetItemsLeft.setColumnWidth(0,20*256); + sheetItemsLeft.setColumnWidth(1,30*256); + sheetItemsLeft.setColumnWidth(2,100*256); + sheetItemsLeft.setColumnWidth(3,80*256); + for (int i = 0; i < headers.length; i++) { + HSSFCell cell = row.createCell(i); + HSSFRichTextString text = new HSSFRichTextString(headers[i]); + cell.setCellValue(text); + } + // 左侧放文字内容 + for(int rowNum = 0;rowNum < getLeftList.size(); rowNum++){ + HSSFRow row1 = sheetItemsLeft.createRow(rowNum + 1); + row1.createCell(0).setCellValue(getLeftList.get(rowNum).getItemsNum()); + row1.createCell(1).setCellValue(getLeftList.get(rowNum).getItemsName()); + row1.getCell(1).setCellStyle(cellStyleBase); + //处理条款内容 + String itemText = getLeftList.get(rowNum).getItemsText(); + List addList = new ArrayList<>(); + List delList = new ArrayList<>(); + itemText = HtmlTextExcel.changeHtmlToExcel(itemText,addList,delList); + HSSFRichTextString ts= new HSSFRichTextString(itemText); + ts.applyFont(0,ts.length(),fontBase); + if (addList != null && !addList.isEmpty()) { + for (MarkTextVO markTextVO : addList) { + int stIndex = markTextVO.getStartIndex(); + int edIndex = markTextVO.getEndIndex(); + ts.applyFont(stIndex,edIndex,fontAdd); + } + } + if (delList != null && !delList.isEmpty()) { + for (MarkTextVO markTextVO : delList) { + int stIndex = markTextVO.getStartIndex(); + int edIndex = markTextVO.getEndIndex(); + ts.applyFont(stIndex,edIndex,fontDel); + } + } + row1.createCell(2).setCellValue(ts); + row1.getCell(2).setCellStyle(cellStyleBase); + row1.createCell(3).setCellValue(getLeftList.get(rowNum).getRemark()); + row1.getCell(3).setCellStyle(cellStyleBase); + } + } + //导出右侧比对结果 + if (getRightList != null && !getRightList.isEmpty()) { + HSSFRow rowRightHeader = sheetItemsRight.createRow(0); + sheetItemsRight.setColumnWidth(0,20*256); + sheetItemsRight.setColumnWidth(1,30*256); + sheetItemsRight.setColumnWidth(2,100*256); + sheetItemsRight.setColumnWidth(3,80*256); + for (int i = 0; i < headers.length; i++) { + HSSFCell cell = rowRightHeader.createCell(i); + HSSFRichTextString text = new HSSFRichTextString(headers[i]); + cell.setCellValue(text); + } + // 右侧放文字内容 + for(int rowNum = 0;rowNum < getRightList.size(); rowNum++){ + HSSFRow row1 = sheetItemsRight.createRow(rowNum + 1); + row1.createCell(0).setCellValue(getRightList.get(rowNum).getItemsNum()); + row1.createCell(1).setCellValue(getRightList.get(rowNum).getItemsName()); + row1.getCell(1).setCellStyle(cellStyleBase); + //处理条款内容 + String itemText = getRightList.get(rowNum).getItemsText(); + List addList = new ArrayList<>(); + List delList = new ArrayList<>(); + itemText = HtmlTextExcel.changeHtmlToExcel(itemText,addList,delList); + HSSFRichTextString ts= new HSSFRichTextString(itemText); + ts.applyFont(0,ts.length(),fontBase); + if (addList != null && !addList.isEmpty()) { + for (MarkTextVO markTextVO : addList) { + int stIndex = markTextVO.getStartIndex(); + int edIndex = markTextVO.getEndIndex(); + ts.applyFont(stIndex,edIndex,fontAdd); + } + } + if (delList != null && !delList.isEmpty()) { + for (MarkTextVO markTextVO : delList) { + int stIndex = markTextVO.getStartIndex(); + int edIndex = markTextVO.getEndIndex(); + ts.applyFont(stIndex,edIndex,fontDel); + } + } + row1.createCell(2).setCellValue(ts); + row1.getCell(2).setCellStyle(cellStyleBase); + row1.createCell(3).setCellValue(getRightList.get(rowNum).getRemark()); + row1.getCell(3).setCellStyle(cellStyleBase); + } + } + response.setHeader("Content-Disposition", + "attachment; filename=\"" + ReadExcel.encodeFileName(fileName, request) +"\""); + response.setContentType("application/force-download"); + response.flushBuffer(); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + os.close(); // 后开先关 + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + IOUtils.closeQuietly(excelOS); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitInfoEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitInfoEODao.java new file mode 100644 index 00000000..1b0855b8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitInfoEODao.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import java.util.List; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEOPage; + +/** + * + *
    + * 功能:OCR_RECORD OcrRecordEODao
    + * 作者:code generator
    + * 日期: 2019-03-25
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarFileSplitInfoEODao extends BaseMapper { + + List queryByPage(BasePage var1); + + List queryByList(BasePage var1); + + SarFileSplitInfoEO selectByPrimaryKey(String id); + + int insertSelective(SarFileSplitInfoEO sarFileSplitInfoEO); + + int updateByPrimaryKeySelective(SarFileSplitInfoEO sarFileSplitInfoEO); + + int deleteByPrimaryKey(String id); + + List queryByPageOwn(SarFileSplitInfoEOPage page); + + int queryByCountOwn(SarFileSplitInfoEOPage page); + + int deleteByIds(SarFileSplitInfoEO sarFileSplitInfoEO); + + List querySame (SarFileSplitInfoEO sarFileSplitInfoEO); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsEODao.java new file mode 100644 index 00000000..722ae9d0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsEODao.java @@ -0,0 +1,62 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.standardSplit.dto.FileSplitItemsExportDto; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEOPage; +import com.adc.da.slrs.standardSplit.entity.SarStandItemsEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * + *
    + * 功能:SAR_FILE_SPLIT_ITEMS SarFileSplitItemsEODao
    + * 作者:code generator
    + * 日期: 2020-01-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarFileSplitItemsEODao extends BaseMapper { + + int insertForeach(List list); + + int insertStandSplitForeach(@Param(value = "list") List list); + + int deleteByIds(SarFileSplitItemsEO sarFileSplitItemsEO); + + int deleteByItemsIds(SarFileSplitItemsEO sarFileSplitItemsEO); + + int deleteByMenuIds(@Param("idList") List idList); + + int deleteByItemsIdList(@Param("idList") List idList); + + int deleteByItemsIdList1(@Param("idList") List idList); + + List queryItemsByMenuId(@Param("menuId") String menuId); + + List queryByItemsIds(@Param("idList") List idList); + + List queryByOrdersForExport(SarFileSplitItemsEOPage page); + + List queryByList2(SarFileSplitItemsEOPage page); + + List queryByList(SarFileSplitItemsEOPage page); + + SarFileSplitItemsEO selectByPrimaryKey(String id); + + int insertSelective(SarFileSplitItemsEO sarFileSplitItemsEO); + + int queryByCount(SarFileSplitItemsEOPage page); + + List queryByPage(SarFileSplitItemsEOPage page); + + int updateByPrimaryKeySelective(SarFileSplitItemsEO page); + + int updateByPrimaryKeySelective1(SarFileSplitItemsEO page); + + int deleteByPrimaryKey(String id); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsParamsEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsParamsEODao.java new file mode 100644 index 00000000..154f3fb8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsParamsEODao.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsParamsEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsParamsEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * + *
    + * 功能:SAR_FILE_SPLIT_ITEMS_PARAMS SarFileSplitItemsParamsEODao
    + * 作者:code generator
    + * 日期: 2020-02-04
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarFileSplitItemsParamsEODao extends BaseMapper { + + int deleteByItemIds(@Param("idList") List idList); + + int deleteByInfoIds(@Param("idList") List idList); + + int insertForeach(List list); + + List queryItemsParamsByMenuId(@Param("idList") List idList); + + List queryByList(SarFileSplitItemsParamsEOPage paramPage); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsTableEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsTableEODao.java new file mode 100644 index 00000000..96a1514c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsTableEODao.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsTableEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsTableEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * + *
    + * 功能:SAR_FILE_SPLIT_ITEMS_TABLE SarFileSplitItemsTableEODao
    + * 作者:code generator
    + * 日期: 2020-01-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarFileSplitItemsTableEODao extends BaseMapper { + + int insertForeach(List list); + + List queryByRowNum(SarFileSplitItemsTableEOPage page); + + int deleteByitemValIds(@Param("idList") List idList); + + int deleteTableByMenuIds(@Param("idList") List idList); + + int deleteByitemIds(@Param("idList") List idList); + + List queryItemsTableByMenuId(@Param("idList") List idList); + + List queryByList(@Param("pager") SarFileSplitItemsTableEOPage pager); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsValEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsValEODao.java new file mode 100644 index 00000000..7e762ccc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitItemsValEODao.java @@ -0,0 +1,49 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsValEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsValEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * + *
    + * 功能:SAR_FILE_SPLIT_ITEMS_VAL SarFileSplitItemsValEODao
    + * 作者:code generator
    + * 日期: 2020-01-07
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarFileSplitItemsValEODao extends BaseMapper { + + int deleteByIds(SarFileSplitItemsValEO sarFileSplitItemsValEO); + + int deleteByitemId(String id); + + int insertForeach(List list); + + int updateForeach(List list); + + int deleteValByInfoIds(@Param("idList") List idList); + + int deleteValByitemIds(@Param("idList") List idList); + + int deleteValByMenuIds(@Param("idList") List idList); + + List queryItemsValByMenuId(@Param("idList") List idList); + + List queryByList(SarFileSplitItemsValEOPage valEOPage); + + List queryByPage(SarFileSplitItemsValEOPage page); + + SarFileSplitItemsValEO selectByPrimaryKey(String id); + + void insertSelective(SarFileSplitItemsValEO sarFileSplitItemsValEO); + + void updateByPrimaryKeySelective(SarFileSplitItemsValEO sarFileSplitItemsValEO); + + void deleteByPrimaryKey(String id); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitMenuEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitMenuEODao.java new file mode 100644 index 00000000..753cba57 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarFileSplitMenuEODao.java @@ -0,0 +1,65 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitMenuEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitMenuEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * + *
    + * 功能:SAR_FILE_SPLIT_MENU SarFileSplitMenuEODao
    + * 作者:code generator
    + * 日期: 2020-01-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarFileSplitMenuEODao extends BaseMapper { + + int insertForeach(List list); + + int deleteByIds(SarFileSplitMenuEO sarFileSplitMenuEO); + + int updateDisplaySeqAdd(SarFileSplitMenuEO sarFileSplitMenuEO); + + int updateDisplaySeqCut(SarFileSplitMenuEO sarFileSplitMenuEO); + + List queryByPidExcpetSelf(SarFileSplitMenuEO sarFileSplitMenuEO); + + int deleteByPId(@Param("id") List id); + + List getChild(@Param("id") String id); + + List getChildData(@Param("id") String id); + + int getMaxDisplayByid(@Param("id") String id); + + int getChildrenCountByParentId(@Param("id") String id); + + int updateChildrenDisplaySeqByIDAdd(SarFileSplitMenuEO childrenUpdateEO); + + int updateChildrenDisplaySeqByIDCut(SarFileSplitMenuEO childrenUpdateEO); + + /** + * 根据ID查询所有的子节点包括父节点 + * @param sarFileSplitMenuEO + * @return + */ + List queryAllChildrenByid(SarFileSplitMenuEO sarFileSplitMenuEO); + + int deleteByIdList(@Param("idList") List idList); + + int insertSelective(SarFileSplitMenuEO sarFileSplitMenuEO); + + List queryByList(SarFileSplitMenuEOPage page); + + int updateByPrimaryKeySelective(SarFileSplitMenuEO menu); + + SarFileSplitMenuEO selectByPrimaryKey(String id); + + List queryByPage(BasePage page); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarItemsCompareHisEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarItemsCompareHisEODao.java new file mode 100644 index 00000000..ce9614d8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarItemsCompareHisEODao.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.standardSplit.entity.SarItemsCompareHisEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; + +/** + * + *
    + * 功能:SAR_ITEMS_COMPARE_HIS SarItemsCompareHisEODao
    + * 作者:code generator
    + * 日期: 2020-02-26
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarItemsCompareHisEODao extends BaseMapper { + + @Delete("delete from SAR_ITEMS_COMPARE_HIS WHERE STAND_HIS_ID = #{standHisId}") + void deleteByStandHisId(String standHisId); + + int insertSelective(SarItemsCompareHisEO sarItemsCompareHisEO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandAttrDetailsEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandAttrDetailsEODao.java new file mode 100644 index 00000000..aea3e2b6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandAttrDetailsEODao.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.standardSplit.entity.SarStandAttrDetailsEO; +import com.adc.da.slrs.standardSplit.entity.SarStandAttrDetailsEOPage; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * + *
    + * 功能:SAR_STAND_ATTR_DETAILS SarStandAttrDetailsEODao
    + * 作者:code generator
    + * 日期: 2020-08-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarStandAttrDetailsEODao extends BaseMapper { + + int deleteByIds(@Param("idList") List idList); + + String selectAllFieldToStr(SarStandAttrDetailsEOPage page); + + SarStandAttrDetailsEO selectFieldByName(@Param("attrName") String attrName, @Param("sarType") String sarType); + + String selectNameByField(@Param("attrField") String attrField, @Param("sarType") String sarType); + + List selectFileFieldForSel(@Param("attrField") String attrField); + + List selectFileFieldForSel1(@Param("attrField") String attrField); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandCompareHisEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandCompareHisEODao.java new file mode 100644 index 00000000..269f8d36 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandCompareHisEODao.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.standardSplit.entity.SarStandCompareHisEO; +import com.adc.da.slrs.standardSplit.entity.SarStandCompareHisEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * + *
    + * 功能:SAR_STAND_COMPARE_HIS SarStandCompareHisEODao
    + * 作者:code generator
    + * 日期: 2020-02-24
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarStandCompareHisEODao extends BaseMapper { + + int queryByCount(SarStandCompareHisEOPage page); + + List queryByPage(SarStandCompareHisEOPage page); + + List queryByList(SarStandCompareHisEOPage page); + + SarStandCompareHisEO selectByPrimaryKey(String id); + + int insertSelective(SarStandCompareHisEO sarStandCompareHisEO); + + int updateByPrimaryKeySelective(SarStandCompareHisEO sarStandCompareHisEO); + + int deleteByPrimaryKey(String id); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandFileEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandFileEODao.java new file mode 100644 index 00000000..6e33be7d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandFileEODao.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.standardSplit.entity.SarStandFileEO; +import com.adc.da.slrs.standardSplit.entity.SarStandFileEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import java.util.List; + +/** + * + *
    + * 功能:SAR_STAND_FILE SarStandFileEODao
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarStandFileEODao extends BaseMapper { + List selectFileByStandId(String lawsId); + + List selectFileByAttId(String attId); + + List selectFileByResId(SarStandFileEO sarStandFileEO); + + List selectFileByStandIdAndId(SarStandFileEO sarStandFileEO); + + List selectFileMsgByAttId(String attId); + + int deleteByStandId(String standId); + + int insertForeach(List list); //批量新增 + + List getStandFileListByPage(SarStandFileEOPage stand); + + Integer getStandFileListByPageCount(SarStandFileEOPage stand); + + int queryStandFileListByCount(SarStandFileEOPage stand); + + List queryByPage(SarStandFileEOPage page); + + List queryByList(SarStandFileEOPage page); + + SarStandFileEO selectByPrimaryKey(String id); + + int insertSelective(SarStandFileEO sarStandFileEO); + + int updateByPrimaryKeySelective(SarStandFileEO sarStandFileEO); + + int deleteByPrimaryKey(String id); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandItemsCompareHisEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandItemsCompareHisEODao.java new file mode 100644 index 00000000..086345e5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandItemsCompareHisEODao.java @@ -0,0 +1,36 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.standardSplit.entity.SarStandItemsCompareHisEO; +import com.adc.da.slrs.standardSplit.entity.SarStandItemsCompareHisEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * + *
    + * 功能:SAR_STAND_ITEMS_COMPARE_HIS SarStandItemsCompareHisEODao
    + * 作者:code generator
    + * 日期: 2020-02-24
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarStandItemsCompareHisEODao extends BaseMapper { + + @Delete("delete from SAR_STAND_ITEMS_COMPARE_HIS WHERE STAND_HIS_ID = #{standHisId}") + void deleteByStandHisId(String standHisId); + + int insertSelective(SarStandItemsCompareHisEO var); + + List queryByPage(SarStandItemsCompareHisEOPage page); + + List queryByList(SarStandItemsCompareHisEOPage page); + + SarStandItemsCompareHisEO selectByPrimaryKey(String id); + + void updateByPrimaryKeySelective(SarStandItemsCompareHisEO page); + + void deleteByPrimaryKey(String id); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandardsInfoEODao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandardsInfoEODao.java new file mode 100644 index 00000000..21a5b6aa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dao/SarStandardsInfoEODao.java @@ -0,0 +1,66 @@ +package com.adc.da.slrs.standardSplit.dao; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardsInfoEO; +import com.adc.da.slrs.sarStandardsInfo.entity.RecommendVO; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfoEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * + *
    + * 功能:SAR_STANDARDS_INFO SarStandardsInfoEODao
    + * 作者:code generator
    + * 日期: 2020-08-19
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface SarStandardsInfoEODao extends BaseMapper { + + List getSarStandardsInfoPage(SarStandardsInfoEOPage page); + + int getSarStandardsInfoCount(SarStandardsInfoEOPage page); + + SarStandardsInfoEO selectByPrimaryKeyAndModifyTime(SarStandardsInfoEO page); + + List selectStandardsByStandnumber(SarStandardsInfoEO sarStandardsInfoEO); + + Integer selectStandColumn(@Param("columnName") String columnName); + + Integer selectCounterStandardsCount(SarStandardsInfoEO sarStandardsInfoEO); + + int deleteByPrimaryKeyFlag(String id); + + int updateByStandNum(SarStandardsInfoEO standardsInfoEO); + + List selectStandardsInfoByIdAndRole(SarStandardsInfoEOPage standEO); + + int updateReplacedNumById(SarStandardsInfoEO sarStandardsInfoEO); + + int updateCitedStandById(SarStandardsInfoEO sarStandardsInfoEO); + + List getSarStandardsExportInfo(SarStandardsInfoEOPage page); + + List selectStandardsInfoByKey(String id); + + List selectRecommendStand(SarStandardsInfoEOPage pagenew); + + List countReplaceMsg(@Param("standNum") String standNum); + + List selectStandToUpState(@Param("stateName") String stateName); + + List selectStandToUpRepState(); + + List selectStandToUpRepAndTime(); + + int updateStateById(@Param("state") String state, @Param("list") List list); + + int selectIsExit(@Param("id") String id); + + //添加一个查询标准,但是不判断标准是否删除 + List selectStandardsInfoByIdAndRoleAll(SarStandardsInfoEOPage standEO); + + List selectStandardsInfoBynumber(SarStandardsInfoEOPage page); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSpiltValTableExportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSpiltValTableExportDto.java new file mode 100644 index 00000000..9c7b9b36 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSpiltValTableExportDto.java @@ -0,0 +1,43 @@ +package com.adc.da.slrs.standardSplit.dto; + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsTableEO; + +import java.util.List; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/2/14 10:06 + */ +public class FileSpiltValTableExportDto { + + private String tableName; + + private List> tableEOList; + + private String tableHtCon; + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public List> getTableEOList() { + return tableEOList; + } + + public void setTableEOList(List> tableEOList) { + this.tableEOList = tableEOList; + } + + public String getTableHtCon() { + return tableHtCon; + } + + public void setTableHtCon(String tableHtCon) { + this.tableHtCon = tableHtCon; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitItemsExportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitItemsExportDto.java new file mode 100644 index 00000000..fd9de690 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitItemsExportDto.java @@ -0,0 +1,230 @@ +package com.adc.da.slrs.standardSplit.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import java.util.List; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/2/13 9:48 + */ +public class FileSplitItemsExportDto { + private String id; + + private String itemsNum; + + private String itemsName; + + private String itermsConditions; + + private String type; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date newcarPutTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date productPutTime; + private String svpps; + private String applyArctic; + private String referenceStand; + private String remarks; + private String relevanceFile; + + //导出新加字段 + private String fo; + private String dutyEngineer; + private String claimType; + private String claimTypeShow; + private String busStandCover; + private String fileType; + private String responsibleUnit;//责任部门 + private String responsibleUnitShow; + private String dutyEngineerShow;//责任工程师 + private String foShow;//fo + + + private List itemValContent; + + public String getItemsNum() { + return itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getItemsName() { + return itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItermsConditions() { + return itermsConditions; + } + + public void setItermsConditions(String itermsConditions) { + this.itermsConditions = itermsConditions; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public List getItemValContent() { + return itemValContent; + } + + public void setItemValContent(List itemValContent) { + this.itemValContent = itemValContent; + } + + public Date getNewcarPutTime() { + return newcarPutTime; + } + + public void setNewcarPutTime(Date newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + public Date getProductPutTime() { + return productPutTime; + } + + public void setProductPutTime(Date productPutTime) { + this.productPutTime = productPutTime; + } + + public String getSvpps() { + return svpps; + } + + public void setSvpps(String svpps) { + this.svpps = svpps; + } + + public String getApplyArctic() { + return applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public String getReferenceStand() { + return referenceStand; + } + + public void setReferenceStand(String referenceStand) { + this.referenceStand = referenceStand; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getRelevanceFile() { + return relevanceFile; + } + + public void setRelevanceFile(String relevanceFile) { + this.relevanceFile = relevanceFile; + } + + public String getFo() { + return fo; + } + + public void setFo(String fo) { + this.fo = fo; + } + + public String getDutyEngineer() { + return dutyEngineer; + } + + public void setDutyEngineer(String dutyEngineer) { + this.dutyEngineer = dutyEngineer; + } + + public String getClaimType() { + return claimType; + } + + public void setClaimType(String claimType) { + this.claimType = claimType; + } + + public String getBusStandCover() { + return busStandCover; + } + + public void setBusStandCover(String busStandCover) { + this.busStandCover = busStandCover; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getResponsibleUnit() { + return responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getResponsibleUnitShow() { + return responsibleUnitShow; + } + + public void setResponsibleUnitShow(String responsibleUnitShow) { + this.responsibleUnitShow = responsibleUnitShow; + } + + public String getClaimTypeShow() { + return claimTypeShow; + } + + public void setClaimTypeShow(String claimTypeShow) { + this.claimTypeShow = claimTypeShow; + } + + public String getDutyEngineerShow() { + return dutyEngineerShow; + } + + public void setDutyEngineerShow(String dutyEngineerShow) { + this.dutyEngineerShow = dutyEngineerShow; + } + + public String getFoShow() { + return foShow; + } + + public void setFoShow(String foShow) { + this.foShow = foShow; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitValExportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitValExportDto.java new file mode 100644 index 00000000..f0c7c6ec --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitValExportDto.java @@ -0,0 +1,43 @@ +package com.adc.da.slrs.standardSplit.dto; + + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsTableEO; +import java.util.List; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/2/14 9:18 + */ +public class FileSplitValExportDto { + + private String valType; + + private String valContent; + + private List tableEOList; + + public String getValType() { + return valType; + } + + public void setValType(String valType) { + this.valType = valType; + } + + public String getValContent() { + return valContent; + } + + public void setValContent(String valContent) { + this.valContent = valContent; + } + + public List getTableEOList() { + return tableEOList; + } + + public void setTableEOList(List tableEOList) { + this.tableEOList = tableEOList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitValImgExportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitValImgExportDto.java new file mode 100644 index 00000000..1dc3d5e0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/FileSplitValImgExportDto.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.standardSplit.dto; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/2/14 15:58 + */ +public class FileSplitValImgExportDto { + + private String imgName; + + private String imgPath; + + public String getImgName() { + return imgName; + } + + public void setImgName(String imgName) { + this.imgName = imgName; + } + + public String getImgPath() { + return imgPath; + } + + public void setImgPath(String imgPath) { + this.imgPath = imgPath; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/SarFileSplitItemsImportDto.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/SarFileSplitItemsImportDto.java new file mode 100644 index 00000000..754f9ef3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/dto/SarFileSplitItemsImportDto.java @@ -0,0 +1,148 @@ +package com.adc.da.slrs.standardSplit.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/5/9 14:40 + */ +public class SarFileSplitItemsImportDto { + @Excel(name = "条款号", orderNum = "1") + private String itemsNum; + + @Excel(name = "条款名称", orderNum = "1") + private String itemsName; + + @Excel(name = "内容简介", orderNum = "1") + private String itermsConditions; + + @Excel(name = "责任部门", orderNum = "1") + private String responsibleUnit; + +// @Excel(name = "责任部门", orderNum = "1") + private String newcarPutTime; + + @Excel(name = "FO", orderNum = "1") + private String fo; + + @Excel(name = "责任工程师", orderNum = "1") + private String dutyEngineer; + + @Excel(name = "SVPPS", orderNum = "1") + private String svpps; + + @Excel(name = "适用车辆类型", orderNum = "1") + private String applyArctic; + + @Excel(name = "要求类型", orderNum = "1") + private String claimType; + + @Excel(name = "企标覆盖关系", orderNum = "1") + private String busStandCover; + + + +// @Excel(name = "在产车实施日期", orderNum = "1") +// private Date productPutTime; +// +// @Excel(name = "引用标准", orderNum = "1") +// private String referenceStand; +// +// @Excel(name = "备注", orderNum = "1") +// private String remarks; +// +// @Excel(name = "关联文件", orderNum = "1") +// private String relevanceFile; +// +// private String relevanceFileName; + + + public String getItemsNum() { + return itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getItemsName() { + return itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItermsConditions() { + return itermsConditions; + } + + public void setItermsConditions(String itermsConditions) { + this.itermsConditions = itermsConditions; + } + + public String getResponsibleUnit() { + return responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getNewcarPutTime() { + return newcarPutTime; + } + + public void setNewcarPutTime(String newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + public String getFo() { + return fo; + } + + public void setFo(String fo) { + this.fo = fo; + } + + public String getDutyEngineer() { + return dutyEngineer; + } + + public void setDutyEngineer(String dutyEngineer) { + this.dutyEngineer = dutyEngineer; + } + + public String getSvpps() { + return svpps; + } + + public void setSvpps(String svpps) { + this.svpps = svpps; + } + + public String getApplyArctic() { + return applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public String getClaimType() { + return claimType; + } + + public void setClaimType(String claimType) { + this.claimType = claimType; + } + + public String getBusStandCover() { + return busStandCover; + } + + public void setBusStandCover(String busStandCover) { + this.busStandCover = busStandCover; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/DrageMenuEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/DrageMenuEO.java new file mode 100644 index 00000000..d8ac87c2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/DrageMenuEO.java @@ -0,0 +1,87 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; + +/** + * 功能:MSG_BROWSE_INFO MsgBrowseInfoEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class DrageMenuEO extends BaseEntity { + + private String menuId; + private String menuParentId; + private Long menuDisplay; + private String targetMenuId; + private String targetParentId; + private Long targetMenuDisplay; + private String infoId; + private String moveType; + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getMenuParentId() { + return menuParentId; + } + + public void setMenuParentId(String menuParentId) { + this.menuParentId = menuParentId; + } + + + + public String getTargetMenuId() { + return targetMenuId; + } + + public void setTargetMenuId(String targetMenuId) { + this.targetMenuId = targetMenuId; + } + + public String getTargetParentId() { + return targetParentId; + } + + public void setTargetParentId(String targetParentId) { + this.targetParentId = targetParentId; + } + + public Long getMenuDisplay() { + return menuDisplay; + } + + public void setMenuDisplay(Long menuDisplay) { + this.menuDisplay = menuDisplay; + } + + public Long getTargetMenuDisplay() { + return targetMenuDisplay; + } + + public void setTargetMenuDisplay(Long targetMenuDisplay) { + this.targetMenuDisplay = targetMenuDisplay; + } + + public String getInfoId() { + return infoId; + } + + public void setInfoId(String infoId) { + this.infoId = infoId; + } + + public String getMoveType() { + return moveType; + } + + public void setMoveType(String moveType) { + this.moveType = moveType; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/PrcNumName.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/PrcNumName.java new file mode 100644 index 00000000..0886eb4a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/PrcNumName.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.standardSplit.entity; + +public class PrcNumName { + private String prcNum; + private String prcName; + + public String getPrcNum() { + return prcNum; + } + + public void setPrcNum(String prcNum) { + this.prcNum = prcNum; + } + + public String getPrcName() { + return prcName; + } + + public void setPrcName(String prcName) { + this.prcName = prcName; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarCompStatusInfoEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarCompStatusInfoEO.java new file mode 100644 index 00000000..7f5ecab5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarCompStatusInfoEO.java @@ -0,0 +1,423 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:SAR_COMP_STATUS_INFO SarCompStatusInfoEOEntity
    + * 作者:code generator
    + * 日期: 2021-02-04
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarCompStatusInfoEO extends BaseEntity { + + private String id; + private String sarType; + private String sarId; + private String sarItemId; + private String sarState; + private String sarItemState; + private String prcNum; + private String color; + private String prcState; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + private String nonConfomity; + private String current;//我司现状 + private String changeScheme;//更改方案 + private String estimatedChangeCycle; + private String estimatedCost; + private String riskPoint; + private String verificationScheme; + private String justified; + private String compPerson; + private String compPersonName; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date compTime; + private String state; + private String sarNumber; + private String sarItemNumber; + private String standId; + private String standType; + private String standCode; + private String standName; + private String createType; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • sarType -> sar_type
  • + *
  • sarId -> sar_id
  • + *
  • sarItemId -> sar_item_id
  • + *
  • sarState -> sar_state
  • + *
  • sarItemState -> sar_item_state
  • + *
  • prcNum -> prc_num
  • + *
  • color -> color
  • + *
  • prcState -> prc_state
  • + *
  • creationTime -> creation_time
  • + *
  • nonConfomity -> non_confomity
  • + *
  • current -> current
  • + *
  • changeScheme -> change_scheme
  • + *
  • estimatedChangeCycle -> estimated_change_cycle
  • + *
  • estimatedCost -> estimated_cost
  • + *
  • riskPoint -> risk_point
  • + *
  • verificationScheme -> verification_scheme
  • + *
  • justified -> justified
  • + *
  • compPerson -> comp_person
  • + *
  • compTime -> comp_time
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "sarType": return "sar_type"; + case "sarId": return "sar_id"; + case "sarItemId": return "sar_item_id"; + case "sarState": return "sar_state"; + case "sarItemState": return "sar_item_state"; + case "prcNum": return "prc_num"; + case "color": return "color"; + case "prcState": return "prc_state"; + case "creationTime": return "creation_time"; + case "nonConfomity": return "non_confomity"; + case "current": return "current"; + case "changeScheme": return "change_scheme"; + case "estimatedChangeCycle": return "estimated_change_cycle"; + case "estimatedCost": return "estimated_cost"; + case "riskPoint": return "risk_point"; + case "verificationScheme": return "verification_scheme"; + case "justified": return "justified"; + case "compPerson": return "comp_person"; + case "compTime": return "comp_time"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • sar_type -> sarType
  • + *
  • sar_id -> sarId
  • + *
  • sar_item_id -> sarItemId
  • + *
  • sar_state -> sarState
  • + *
  • sar_item_state -> sarItemState
  • + *
  • prc_num -> prcNum
  • + *
  • color -> color
  • + *
  • prc_state -> prcState
  • + *
  • creation_time -> creationTime
  • + *
  • non_confomity -> nonConfomity
  • + *
  • current -> current
  • + *
  • change_scheme -> changeScheme
  • + *
  • estimated_change_cycle -> estimatedChangeCycle
  • + *
  • estimated_cost -> estimatedCost
  • + *
  • risk_point -> riskPoint
  • + *
  • verification_scheme -> verificationScheme
  • + *
  • justified -> justified
  • + *
  • comp_person -> compPerson
  • + *
  • comp_time -> compTime
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "sar_type": return "sarType"; + case "sar_id": return "sarId"; + case "sar_item_id": return "sarItemId"; + case "sar_state": return "sarState"; + case "sar_item_state": return "sarItemState"; + case "prc_num": return "prcNum"; + case "color": return "color"; + case "prc_state": return "prcState"; + case "creation_time": return "creationTime"; + case "non_confomity": return "nonConfomity"; + case "current": return "current"; + case "change_scheme": return "changeScheme"; + case "estimated_change_cycle": return "estimatedChangeCycle"; + case "estimated_cost": return "estimatedCost"; + case "risk_point": return "riskPoint"; + case "verification_scheme": return "verificationScheme"; + case "justified": return "justified"; + case "comp_person": return "compPerson"; + case "comp_time": return "compTime"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getSarType() { + return this.sarType; + } + + /** **/ + public void setSarType(String sarType) { + this.sarType = sarType; + } + + /** **/ + public String getSarId() { + return this.sarId; + } + + /** **/ + public void setSarId(String sarId) { + this.sarId = sarId; + } + + /** **/ + public String getSarItemId() { + return this.sarItemId; + } + + /** **/ + public void setSarItemId(String sarItemId) { + this.sarItemId = sarItemId; + } + + /** **/ + public String getSarState() { + return this.sarState; + } + + /** **/ + public void setSarState(String sarState) { + this.sarState = sarState; + } + + /** **/ + public String getSarItemState() { + return this.sarItemState; + } + + /** **/ + public void setSarItemState(String sarItemState) { + this.sarItemState = sarItemState; + } + + /** **/ + public String getPrcNum() { + return this.prcNum; + } + + /** **/ + public void setPrcNum(String prcNum) { + this.prcNum = prcNum; + } + + /** **/ + public String getColor() { + return this.color; + } + + /** **/ + public void setColor(String color) { + this.color = color; + } + + /** **/ + public String getPrcState() { + return this.prcState; + } + + /** **/ + public void setPrcState(String prcState) { + this.prcState = prcState; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public String getNonConfomity() { + return this.nonConfomity; + } + + /** **/ + public void setNonConfomity(String nonConfomity) { + this.nonConfomity = nonConfomity; + } + + /** **/ + public String getCurrent() { + return this.current; + } + + /** **/ + public void setCurrent(String current) { + this.current = current; + } + + /** **/ + public String getChangeScheme() { + return this.changeScheme; + } + + /** **/ + public void setChangeScheme(String changeScheme) { + this.changeScheme = changeScheme; + } + + /** **/ + public String getEstimatedChangeCycle() { + return this.estimatedChangeCycle; + } + + /** **/ + public void setEstimatedChangeCycle(String estimatedChangeCycle) { + this.estimatedChangeCycle = estimatedChangeCycle; + } + + /** **/ + public String getEstimatedCost() { + return this.estimatedCost; + } + + /** **/ + public void setEstimatedCost(String estimatedCost) { + this.estimatedCost = estimatedCost; + } + + /** **/ + public String getRiskPoint() { + return this.riskPoint; + } + + /** **/ + public void setRiskPoint(String riskPoint) { + this.riskPoint = riskPoint; + } + + /** **/ + public String getVerificationScheme() { + return this.verificationScheme; + } + + /** **/ + public void setVerificationScheme(String verificationScheme) { + this.verificationScheme = verificationScheme; + } + + /** **/ + public String getJustified() { + return this.justified; + } + + /** **/ + public void setJustified(String justified) { + this.justified = justified; + } + + /** **/ + public String getCompPerson() { + return this.compPerson; + } + + /** **/ + public void setCompPerson(String compPerson) { + this.compPerson = compPerson; + } + + /** **/ + public Date getCompTime() { + return this.compTime; + } + + /** **/ + public void setCompTime(Date compTime) { + this.compTime = compTime; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getSarNumber() { + return sarNumber; + } + + public void setSarNumber(String sarNumber) { + this.sarNumber = sarNumber; + } + + public String getSarItemNumber() { + return sarItemNumber; + } + + public void setSarItemNumber(String sarItemNumber) { + this.sarItemNumber = sarItemNumber; + } + + public String getStandId() { + return standId; + } + + public void setStandId(String standId) { + this.standId = standId; + } + + public String getStandType() { + return standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } + + public String getStandCode() { + return standCode; + } + + public void setStandCode(String standCode) { + this.standCode = standCode; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getCompPersonName() { + return compPersonName; + } + + public void setCompPersonName(String compPersonName) { + this.compPersonName = compPersonName; + } + + public String getCreateType() { + return createType; + } + + public void setCreateType(String createType) { + this.createType = createType; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitInfoEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitInfoEO.java new file mode 100644 index 00000000..367f311a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitInfoEO.java @@ -0,0 +1,334 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:SAR_FILE_SPLIT_INFO SarFileSplitInfoEOEntity
    + * 作者:code generator
    + * 日期: 2020-01-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitInfoEO extends BaseEntity { + + + private String standType; + private String sarType; + private String fileName; + private String id; + private String standId; + private String fileType; + private String fileTypeShow; + private String attId; + private Integer validFlag; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private String creationUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String modifyUser; + private String standName; + private String standNumSplit; + private String standNameSplit; + private String[] idList; + private int startNumber; + private int stopNumber; + private String result; + private String splitStatus; + private String collectId; + //用于拆分结果导入 by zj + private String menuId; + private String infoId; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • sarType -> sar_type
  • + *
  • fileName -> file_name
  • + *
  • id -> id
  • + *
  • standId -> stand_id
  • + *
  • fileType -> file_type
  • + *
  • attId -> att_id
  • + *
  • validFlag -> valid_flag
  • + *
  • creationTime -> creation_time
  • + *
  • creationUser -> creation_user
  • + *
  • modifyTime -> modify_time
  • + *
  • modifyUser -> modify_user
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "sarType": return "sar_type"; + case "fileName": return "file_name"; + case "id": return "id"; + case "standId": return "stand_id"; + case "fileType": return "file_type"; + case "attId": return "att_id"; + case "validFlag": return "valid_flag"; + case "creationTime": return "creation_time"; + case "creationUser": return "creation_user"; + case "modifyTime": return "modify_time"; + case "modifyUser": return "modify_user"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • sar_type -> sarType
  • + *
  • file_name -> fileName
  • + *
  • id -> id
  • + *
  • stand_id -> standId
  • + *
  • file_type -> fileType
  • + *
  • att_id -> attId
  • + *
  • valid_flag -> validFlag
  • + *
  • creation_time -> creationTime
  • + *
  • creation_user -> creationUser
  • + *
  • modify_time -> modifyTime
  • + *
  • modify_user -> modifyUser
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "sar_type": return "sarType"; + case "file_name": return "fileName"; + case "id": return "id"; + case "stand_id": return "standId"; + case "file_type": return "fileType"; + case "att_id": return "attId"; + case "valid_flag": return "validFlag"; + case "creation_time": return "creationTime"; + case "creation_user": return "creationUser"; + case "modify_time": return "modifyTime"; + case "modify_user": return "modifyUser"; + default: return null; + } + } + + /** **/ + public String getSarType() { + return this.sarType; + } + + /** **/ + public void setSarType(String sarType) { + this.sarType = sarType; + } + + /** **/ + public String getFileName() { + return this.fileName; + } + + /** **/ + public void setFileName(String fileName) { + this.fileName = fileName; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getStandId() { + return this.standId; + } + + /** **/ + public void setStandId(String standId) { + this.standId = standId; + } + + /** **/ + public String getFileType() { + return this.fileType; + } + + /** **/ + public void setFileType(String fileType) { + this.fileType = fileType; + } + + /** **/ + public String getAttId() { + return this.attId; + } + + /** **/ + public void setAttId(String attId) { + this.attId = attId; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public String getCreationUser() { + return this.creationUser; + } + + /** **/ + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public String getModifyUser() { + return this.modifyUser; + } + + /** **/ + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + private String showNumber; + + public String getShowNumber() { + return showNumber; + } + + public void setShowNumber(String showNumber) { + this.showNumber = showNumber; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String[] getIdList() { + return idList; + } + + public void setIdList(String[] idList) { + this.idList = idList; + } + + public String getStandNumSplit() { + return standNumSplit; + } + + public void setStandNumSplit(String standNumSplit) { + this.standNumSplit = standNumSplit; + } + + public String getStandNameSplit() { + return standNameSplit; + } + + public void setStandNameSplit(String standNameSplit) { + this.standNameSplit = standNameSplit; + } + + public int getStartNumber() { + return startNumber; + } + + public void setStartNumber(int startNumber) { + this.startNumber = startNumber; + } + + public int getStopNumber() { + return stopNumber; + } + + public void setStopNumber(int stopNumber) { + this.stopNumber = stopNumber; + } + + public String getFileTypeShow() { + return fileTypeShow; + } + + public void setFileTypeShow(String fileTypeShow) { + this.fileTypeShow = fileTypeShow; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public String getSplitStatus() { + return splitStatus; + } + + public void setSplitStatus(String splitStatus) { + this.splitStatus = splitStatus; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getInfoId() { + return infoId; + } + + public void setInfoId(String infoId) { + this.infoId = infoId; + } + + public String getStandType() { + return standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitInfoEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitInfoEOPage.java new file mode 100644 index 00000000..cda70bf7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitInfoEOPage.java @@ -0,0 +1,319 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_FILE_SPLIT_INFO SarFileSplitInfoEOPage
    + * 作者:code generator
    + * 日期: 2020-01-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitInfoEOPage extends BasePage { + + private String standType; + private String sarType; + private String sarTypeOperator = "="; + private String fileName; + private String fileNameOperator = "="; + private String id; + private String idOperator = "="; + private String standId; + private String standIdOperator = "="; + private String fileType; + private String fileTypeOperator = "="; + private String attId; + private String attIdOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String modifyUser; + private String modifyUserOperator = "="; + + private String numOrName; + + private String splitStatus; + + private String standNum; + + private String result; + + private String paixu; + + private String shunxu; + + public SarFileSplitInfoEOPage() { + } + + public String getStandType() { + return standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public String getStandNum() { + return standNum; + } + + public void setStandNum(String standNum) { + this.standNum = standNum; + } + + public String getSplitStatus() { + return splitStatus; + } + + public void setSplitStatus(String splitStatus) { + this.splitStatus = splitStatus; + } + + public String getSarType() { + return this.sarType; + } + + public void setSarType(String sarType) { + this.sarType = sarType; + } + + public String getSarTypeOperator() { + return this.sarTypeOperator; + } + + public void setSarTypeOperator(String sarTypeOperator) { + this.sarTypeOperator = sarTypeOperator; + } + + public String getFileName() { + return this.fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileNameOperator() { + return this.fileNameOperator; + } + + public void setFileNameOperator(String fileNameOperator) { + this.fileNameOperator = fileNameOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getStandId() { + return this.standId; + } + + public void setStandId(String standId) { + this.standId = standId; + } + + public String getStandIdOperator() { + return this.standIdOperator; + } + + public void setStandIdOperator(String standIdOperator) { + this.standIdOperator = standIdOperator; + } + + public String getFileType() { + return this.fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getFileTypeOperator() { + return this.fileTypeOperator; + } + + public void setFileTypeOperator(String fileTypeOperator) { + this.fileTypeOperator = fileTypeOperator; + } + + public String getAttId() { + return this.attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + public String getAttIdOperator() { + return this.attIdOperator; + } + + public void setAttIdOperator(String attIdOperator) { + this.attIdOperator = attIdOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getCreationUser() { + return this.creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getCreationUserOperator() { + return this.creationUserOperator; + } + + public void setCreationUserOperator(String creationUserOperator) { + this.creationUserOperator = creationUserOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getModifyUser() { + return this.modifyUser; + } + + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + public String getModifyUserOperator() { + return this.modifyUserOperator; + } + + public void setModifyUserOperator(String modifyUserOperator) { + this.modifyUserOperator = modifyUserOperator; + } + + public String getNumOrName() { + return numOrName; + } + + public void setNumOrName(String numOrName) { + this.numOrName = numOrName; + } + + public String getPaixu() { + return paixu; + } + + public void setPaixu(String paixu) { + this.paixu = paixu; + } + + public String getShunxu() { + return shunxu; + } + + public void setShunxu(String shunxu) { + this.shunxu = shunxu; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsEO.java new file mode 100644 index 00000000..3156b55c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsEO.java @@ -0,0 +1,536 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_FILE_SPLIT_ITEMS SarFileSplitItemsEOEntity
    + * 作者:code generator
    + * 日期: 2020-01-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarFileSplitItemsEO extends BaseEntity { + + private String id; + private String infoId; + private String itemsNum; + private String itemsName; + private String itermsConditions; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date newcarPutTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date productPutTime; + private String menuId; + private String svpps; + private String applyArctic; + private String referenceStand; + private String specialRequest; + private String relevanceFile; + private String remarks; + private Integer validFlag; + private String creationUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String modifyUser; + private String[] infoIdList; + private String[] idList; + private List itemValEOList; + // 前台删除的VAL表条目内容ID + private String delItemIds; + private String sMenuId; + //特殊参数要求 + private List paramsList; + private String relevanceFileAttid; + + //新加字段 SVPPS在前边已经存在 + private String fo;//FO + private String dutyEngineer;//责任工程师 + private String claimType;//要求类型 + private String busStandCover;//企标覆盖关系 + private String fileType;//文件类型 + + //新加字段带show + private String foShow;//FO + private String dutyEngineerShow;//责任工程师 + private String svppsShow;//SVPPS + private String claimTypeShow;//要求类型 + private String busStandCoverShow;//企标覆盖关系 + private String fileTypeShow;//文件类型 + + private String responsibleUnit;//责任部门 + private String responsibleUnitShow; + + private String editFlag; + private String workFlowShow; + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • infoId -> info_id
  • + *
  • itemsNum -> items_num
  • + *
  • itemsName -> items_name
  • + *
  • itermsConditions -> iterms_conditions
  • + *
  • newcarPutTime -> newcar_put_time
  • + *
  • productPutTime -> product_put_time
  • + *
  • menuId -> menu_id
  • + *
  • svpps -> svpps
  • + *
  • applyArctic -> apply_arctic
  • + *
  • referenceStand -> reference_stand
  • + *
  • specialRequest -> special_request
  • + *
  • relevanceFile -> relevance_file
  • + *
  • remarks -> remarks
  • + *
  • validFlag -> valid_flag
  • + *
  • creationUser -> creation_user
  • + *
  • creationTime -> creation_time
  • + *
  • modifyTime -> modify_time
  • + *
  • modifyUser -> modify_user
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "infoId": return "info_id"; + case "itemsNum": return "items_num"; + case "itemsName": return "items_name"; + case "itermsConditions": return "iterms_conditions"; + case "newcarPutTime": return "newcar_put_time"; + case "productPutTime": return "product_put_time"; + case "menuId": return "menu_id"; + case "svpps": return "svpps"; + case "applyArctic": return "apply_arctic"; + case "referenceStand": return "reference_stand"; + case "specialRequest": return "special_request"; + case "relevanceFile": return "relevance_file"; + case "remarks": return "remarks"; + case "validFlag": return "valid_flag"; + case "creationUser": return "creation_user"; + case "creationTime": return "creation_time"; + case "modifyTime": return "modify_time"; + case "modifyUser": return "modify_user"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • info_id -> infoId
  • + *
  • items_num -> itemsNum
  • + *
  • items_name -> itemsName
  • + *
  • iterms_conditions -> itermsConditions
  • + *
  • newcar_put_time -> newcarPutTime
  • + *
  • product_put_time -> productPutTime
  • + *
  • menu_id -> menuId
  • + *
  • svpps -> svpps
  • + *
  • apply_arctic -> applyArctic
  • + *
  • reference_stand -> referenceStand
  • + *
  • special_request -> specialRequest
  • + *
  • relevance_file -> relevanceFile
  • + *
  • remarks -> remarks
  • + *
  • valid_flag -> validFlag
  • + *
  • creation_user -> creationUser
  • + *
  • creation_time -> creationTime
  • + *
  • modify_time -> modifyTime
  • + *
  • modify_user -> modifyUser
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "info_id": return "infoId"; + case "items_num": return "itemsNum"; + case "items_name": return "itemsName"; + case "iterms_conditions": return "itermsConditions"; + case "newcar_put_time": return "newcarPutTime"; + case "product_put_time": return "productPutTime"; + case "menu_id": return "menuId"; + case "svpps": return "svpps"; + case "apply_arctic": return "applyArctic"; + case "reference_stand": return "referenceStand"; + case "special_request": return "specialRequest"; + case "relevance_file": return "relevanceFile"; + case "remarks": return "remarks"; + case "valid_flag": return "validFlag"; + case "creation_user": return "creationUser"; + case "creation_time": return "creationTime"; + case "modify_time": return "modifyTime"; + case "modify_user": return "modifyUser"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getInfoId() { + return this.infoId; + } + + /** **/ + public void setInfoId(String infoId) { + this.infoId = infoId; + } + + /** **/ + public String getItemsNum() { + return this.itemsNum; + } + + /** **/ + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + /** **/ + public String getItemsName() { + return this.itemsName; + } + + /** **/ + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItermsConditions() { + return itermsConditions; + } + + public void setItermsConditions(String itermsConditions) { + this.itermsConditions = itermsConditions; + } + + /** **/ + public Date getNewcarPutTime() { + return this.newcarPutTime; + } + + /** **/ + public void setNewcarPutTime(Date newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + /** **/ + public Date getProductPutTime() { + return this.productPutTime; + } + + /** **/ + public void setProductPutTime(Date productPutTime) { + this.productPutTime = productPutTime; + } + + /** **/ + public String getMenuId() { + return this.menuId; + } + + /** **/ + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + /** **/ + public String getSvpps() { + return this.svpps; + } + + /** **/ + public void setSvpps(String svpps) { + this.svpps = svpps; + } + + /** **/ + public String getApplyArctic() { + return this.applyArctic; + } + + /** **/ + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + /** **/ + public String getReferenceStand() { + return this.referenceStand; + } + + /** **/ + public void setReferenceStand(String referenceStand) { + this.referenceStand = referenceStand; + } + + /** **/ + public String getSpecialRequest() { + return this.specialRequest; + } + + /** **/ + public void setSpecialRequest(String specialRequest) { + this.specialRequest = specialRequest; + } + + /** **/ + public String getRelevanceFile() { + return this.relevanceFile; + } + + /** **/ + public void setRelevanceFile(String relevanceFile) { + this.relevanceFile = relevanceFile; + } + + /** **/ + public String getRemarks() { + return this.remarks; + } + + /** **/ + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getCreationUser() { + return this.creationUser; + } + + /** **/ + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public String getModifyUser() { + return this.modifyUser; + } + + /** **/ + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + + List itemsCondi; + + public List getItemsCondi() { + return itemsCondi; + } + + public void setItemsCondi(List itemsCondi) { + this.itemsCondi = itemsCondi; + } + + public String[] getInfoIdList() { + return infoIdList; + } + + public void setInfoIdList(String[] infoIdList) { + this.infoIdList = infoIdList; + } + + public String[] getIdList() { + return idList; + } + + public void setIdList(String[] idList) { + this.idList = idList; + } + + public List getItemValEOList() { + return itemValEOList; + } + + public void setItemValEOList(List itemValEOList) { + this.itemValEOList = itemValEOList; + } + + public String getDelItemIds() { + return delItemIds; + } + + public void setDelItemIds(String delItemIds) { + this.delItemIds = delItemIds; + } + + public String getsMenuId() { + return sMenuId; + } + + public void setsMenuId(String sMenuId) { + this.sMenuId = sMenuId; + } + + public List getParamsList() { + return paramsList; + } + + public void setParamsList(List paramsList) { + this.paramsList = paramsList; + } + + public String getRelevanceFileAttid() { + return relevanceFileAttid; + } + + public void setRelevanceFileAttid(String relevanceFileAttid) { + this.relevanceFileAttid = relevanceFileAttid; + } + + public String getFo() { + return fo; + } + + public void setFo(String fo) { + this.fo = fo; + } + + public String getDutyEngineer() { + return dutyEngineer; + } + + public void setDutyEngineer(String dutyEngineer) { + this.dutyEngineer = dutyEngineer; + } + + public String getClaimType() { + return claimType; + } + + public void setClaimType(String claimType) { + this.claimType = claimType; + } + + public String getBusStandCover() { + return busStandCover; + } + + public void setBusStandCover(String busStandCover) { + this.busStandCover = busStandCover; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getFoShow() { + return foShow; + } + + public void setFoShow(String foShow) { + this.foShow = foShow; + } + + public String getDutyEngineerShow() { + return dutyEngineerShow; + } + + public void setDutyEngineerShow(String dutyEngineerShow) { + this.dutyEngineerShow = dutyEngineerShow; + } + + public String getSvppsShow() { + return svppsShow; + } + + public void setSvppsShow(String svppsShow) { + this.svppsShow = svppsShow; + } + + public String getClaimTypeShow() { + return claimTypeShow; + } + + public void setClaimTypeShow(String claimTypeShow) { + this.claimTypeShow = claimTypeShow; + } + + public String getBusStandCoverShow() { + return busStandCoverShow; + } + + public void setBusStandCoverShow(String busStandCoverShow) { + this.busStandCoverShow = busStandCoverShow; + } + + public String getFileTypeShow() { + return fileTypeShow; + } + + public void setFileTypeShow(String fileTypeShow) { + this.fileTypeShow = fileTypeShow; + } + + public String getResponsibleUnit() { + return responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getResponsibleUnitShow() { + return responsibleUnitShow; + } + + public void setResponsibleUnitShow(String responsibleUnitShow) { + this.responsibleUnitShow = responsibleUnitShow; + } + + public String getEditFlag() { + return editFlag; + } + + public void setEditFlag(String editFlag) { + this.editFlag = editFlag; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsEOPage.java new file mode 100644 index 00000000..d7a9e58c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsEOPage.java @@ -0,0 +1,484 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; + +import java.util.List; + +/** + * 功能:SAR_FILE_SPLIT_ITEMS SarFileSplitItemsEOPage
    + * 作者:code generator
    + * 日期: 2020-01-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitItemsEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String infoId; + private String infoIdOperator = "="; + private String itemsNum; + private String itemsNumOperator = "="; + private String itemsName; + private String itemsNameOperator = "="; + private String itermsConditions; + private String itermsConditionsOperator = "="; + private String newcarPutTime; + private String newcarPutTime1; + private String newcarPutTime2; + private String newcarPutTimeOperator = "="; + private String productPutTime; + private String productPutTime1; + private String productPutTime2; + private String productPutTimeOperator = "="; + private String menuId; + private String menuIdOperator = "="; + private String svpps; + private String svppsOperator = "="; + private String applyArctic; + private String applyArcticOperator = "="; + private String referenceStand; + private String referenceStandOperator = "="; + private String specialRequest; + private String specialRequestOperator = "="; + private String relevanceFile; + private String relevanceFileOperator = "="; + private String remarks; + private String remarksOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String modifyUser; + private String modifyUserOperator = "="; + private String sMenuId; + private List idList; + private List menuIdList; + private String edirFlag; + + private int tableIndex = 1; + private int imgIndex = 1; + + public String getEdirFlag() { + return edirFlag; + } + + public void setEdirFlag(String edirFlag) { + this.edirFlag = edirFlag; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getInfoId() { + return this.infoId; + } + + public void setInfoId(String infoId) { + this.infoId = infoId; + } + + public String getInfoIdOperator() { + return this.infoIdOperator; + } + + public void setInfoIdOperator(String infoIdOperator) { + this.infoIdOperator = infoIdOperator; + } + + public String getItemsNum() { + return this.itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getItemsNumOperator() { + return this.itemsNumOperator; + } + + public void setItemsNumOperator(String itemsNumOperator) { + this.itemsNumOperator = itemsNumOperator; + } + + public String getItemsName() { + return this.itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItemsNameOperator() { + return this.itemsNameOperator; + } + + public void setItemsNameOperator(String itemsNameOperator) { + this.itemsNameOperator = itemsNameOperator; + } + + public String getItermsConditions() { + return this.itermsConditions; + } + + public void setItermsConditions(String itermsConditions) { + this.itermsConditions = itermsConditions; + } + + public String getItermsConditionsOperator() { + return this.itermsConditionsOperator; + } + + public void setItermsConditionsOperator(String itermsConditionsOperator) { + this.itermsConditionsOperator = itermsConditionsOperator; + } + + public String getNewcarPutTime() { + return this.newcarPutTime; + } + + public void setNewcarPutTime(String newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + public String getNewcarPutTime1() { + return this.newcarPutTime1; + } + + public void setNewcarPutTime1(String newcarPutTime1) { + this.newcarPutTime1 = newcarPutTime1; + } + + public String getNewcarPutTime2() { + return this.newcarPutTime2; + } + + public void setNewcarPutTime2(String newcarPutTime2) { + this.newcarPutTime2 = newcarPutTime2; + } + + public String getNewcarPutTimeOperator() { + return this.newcarPutTimeOperator; + } + + public void setNewcarPutTimeOperator(String newcarPutTimeOperator) { + this.newcarPutTimeOperator = newcarPutTimeOperator; + } + + public String getProductPutTime() { + return this.productPutTime; + } + + public void setProductPutTime(String productPutTime) { + this.productPutTime = productPutTime; + } + + public String getProductPutTime1() { + return this.productPutTime1; + } + + public void setProductPutTime1(String productPutTime1) { + this.productPutTime1 = productPutTime1; + } + + public String getProductPutTime2() { + return this.productPutTime2; + } + + public void setProductPutTime2(String productPutTime2) { + this.productPutTime2 = productPutTime2; + } + + public String getProductPutTimeOperator() { + return this.productPutTimeOperator; + } + + public void setProductPutTimeOperator(String productPutTimeOperator) { + this.productPutTimeOperator = productPutTimeOperator; + } + + public String getMenuId() { + return this.menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getMenuIdOperator() { + return this.menuIdOperator; + } + + public void setMenuIdOperator(String menuIdOperator) { + this.menuIdOperator = menuIdOperator; + } + + public String getSvpps() { + return this.svpps; + } + + public void setSvpps(String svpps) { + this.svpps = svpps; + } + + public String getSvppsOperator() { + return this.svppsOperator; + } + + public void setSvppsOperator(String svppsOperator) { + this.svppsOperator = svppsOperator; + } + + public String getApplyArctic() { + return this.applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public String getApplyArcticOperator() { + return this.applyArcticOperator; + } + + public void setApplyArcticOperator(String applyArcticOperator) { + this.applyArcticOperator = applyArcticOperator; + } + + public String getReferenceStand() { + return this.referenceStand; + } + + public void setReferenceStand(String referenceStand) { + this.referenceStand = referenceStand; + } + + public String getReferenceStandOperator() { + return this.referenceStandOperator; + } + + public void setReferenceStandOperator(String referenceStandOperator) { + this.referenceStandOperator = referenceStandOperator; + } + + public String getSpecialRequest() { + return this.specialRequest; + } + + public void setSpecialRequest(String specialRequest) { + this.specialRequest = specialRequest; + } + + public String getSpecialRequestOperator() { + return this.specialRequestOperator; + } + + public void setSpecialRequestOperator(String specialRequestOperator) { + this.specialRequestOperator = specialRequestOperator; + } + + public String getRelevanceFile() { + return this.relevanceFile; + } + + public void setRelevanceFile(String relevanceFile) { + this.relevanceFile = relevanceFile; + } + + public String getRelevanceFileOperator() { + return this.relevanceFileOperator; + } + + public void setRelevanceFileOperator(String relevanceFileOperator) { + this.relevanceFileOperator = relevanceFileOperator; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getRemarksOperator() { + return this.remarksOperator; + } + + public void setRemarksOperator(String remarksOperator) { + this.remarksOperator = remarksOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationUser() { + return this.creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getCreationUserOperator() { + return this.creationUserOperator; + } + + public void setCreationUserOperator(String creationUserOperator) { + this.creationUserOperator = creationUserOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getModifyUser() { + return this.modifyUser; + } + + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + public String getModifyUserOperator() { + return this.modifyUserOperator; + } + + public void setModifyUserOperator(String modifyUserOperator) { + this.modifyUserOperator = modifyUserOperator; + } + + public String getsMenuId() { + return sMenuId; + } + + public void setsMenuId(String sMenuId) { + this.sMenuId = sMenuId; + } + + public List getIdList() { + return idList; + } + + public void setIdList(List idList) { + this.idList = idList; + } + + public int getTableIndex() { + return tableIndex; + } + + public void setTableIndex(int tableIndex) { + this.tableIndex = tableIndex; + } + + public int getImgIndex() { + return imgIndex; + } + + public void setImgIndex(int imgIndex) { + this.imgIndex = imgIndex; + } + + public List getMenuIdList() { + return menuIdList; + } + + public void setMenuIdList(List menuIdList) { + this.menuIdList = menuIdList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsParamsEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsParamsEO.java new file mode 100644 index 00000000..5b1457f9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsParamsEO.java @@ -0,0 +1,160 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + * 功能:SAR_FILE_SPLIT_ITEMS_PARAMS SarFileSplitItemsParamsEOEntity
    + * 作者:code generator
    + * 日期: 2020-02-04
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitItemsParamsEO extends BaseEntity { + + private String id; + private String itemId; + private String description; + private String figure; + private Integer validFlag; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String infoId; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • itemId -> item_id
  • + *
  • description -> description
  • + *
  • figure -> figure
  • + *
  • validFlag -> valid_flag
  • + *
  • creationTime -> creation_time
  • + *
  • modifyTime -> modify_time
  • + *
  • infoId -> info_id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "itemId": return "item_id"; + case "description": return "description"; + case "figure": return "figure"; + case "validFlag": return "valid_flag"; + case "creationTime": return "creation_time"; + case "modifyTime": return "modify_time"; + case "infoId": return "info_id"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • item_id -> itemId
  • + *
  • description -> description
  • + *
  • figure -> figure
  • + *
  • valid_flag -> validFlag
  • + *
  • creation_time -> creationTime
  • + *
  • modify_time -> modifyTime
  • + *
  • info_id -> infoId
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "item_id": return "itemId"; + case "description": return "description"; + case "figure": return "figure"; + case "valid_flag": return "validFlag"; + case "creation_time": return "creationTime"; + case "modify_time": return "modifyTime"; + case "info_id": return "infoId"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getItemId() { + return this.itemId; + } + + /** **/ + public void setItemId(String itemId) { + this.itemId = itemId; + } + + /** **/ + public String getDescription() { + return this.description; + } + + /** **/ + public void setDescription(String description) { + this.description = description; + } + + /** **/ + public String getFigure() { + return this.figure; + } + + /** **/ + public void setFigure(String figure) { + this.figure = figure; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public String getInfoId() { + return this.infoId; + } + + /** **/ + public void setInfoId(String infoId) { + this.infoId = infoId; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsParamsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsParamsEOPage.java new file mode 100644 index 00000000..98dd0384 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsParamsEOPage.java @@ -0,0 +1,194 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_FILE_SPLIT_ITEMS_PARAMS SarFileSplitItemsParamsEOPage
    + * 作者:code generator
    + * 日期: 2020-02-04
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitItemsParamsEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String itemId; + private String itemIdOperator = "="; + private String description; + private String descriptionOperator = "="; + private String figure; + private String figureOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String infoId; + private String infoIdOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getItemId() { + return this.itemId; + } + + public void setItemId(String itemId) { + this.itemId = itemId; + } + + public String getItemIdOperator() { + return this.itemIdOperator; + } + + public void setItemIdOperator(String itemIdOperator) { + this.itemIdOperator = itemIdOperator; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getDescriptionOperator() { + return this.descriptionOperator; + } + + public void setDescriptionOperator(String descriptionOperator) { + this.descriptionOperator = descriptionOperator; + } + + public String getFigure() { + return this.figure; + } + + public void setFigure(String figure) { + this.figure = figure; + } + + public String getFigureOperator() { + return this.figureOperator; + } + + public void setFigureOperator(String figureOperator) { + this.figureOperator = figureOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getInfoId() { + return this.infoId; + } + + public void setInfoId(String infoId) { + this.infoId = infoId; + } + + public String getInfoIdOperator() { + return this.infoIdOperator; + } + + public void setInfoIdOperator(String infoIdOperator) { + this.infoIdOperator = infoIdOperator; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsTableEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsTableEO.java new file mode 100644 index 00000000..e421d727 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsTableEO.java @@ -0,0 +1,190 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + * 功能:SAR_FILE_SPLIT_ITEMS_TABLE SarFileSplitItemsTableEOEntity
    + * 作者:code generator
    + * 日期: 2020-01-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitItemsTableEO extends BaseEntity { + + private String id; + private String itemsValId; + private String itemsId; + private Integer rowNum; + private Integer colNum; + private String content; + private Integer validFlag; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String modifyUser; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • itemsValId -> items_val_id
  • + *
  • itemsId -> items_id
  • + *
  • rowNum -> row_num
  • + *
  • colNum -> col_num
  • + *
  • content -> content
  • + *
  • validFlag -> valid_flag
  • + *
  • creationTime -> creation_time
  • + *
  • modifyTime -> modify_time
  • + *
  • modifyUser -> modify_user
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "itemsValId": return "items_val_id"; + case "itemsId": return "items_id"; + case "rowNum": return "row_num"; + case "colNum": return "col_num"; + case "content": return "content"; + case "validFlag": return "valid_flag"; + case "creationTime": return "creation_time"; + case "modifyTime": return "modify_time"; + case "modifyUser": return "modify_user"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • items_val_id -> itemsValId
  • + *
  • items_id -> itemsId
  • + *
  • row_num -> rowNum
  • + *
  • col_num -> colNum
  • + *
  • content -> content
  • + *
  • valid_flag -> validFlag
  • + *
  • creation_time -> creationTime
  • + *
  • modify_time -> modifyTime
  • + *
  • modify_user -> modifyUser
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "items_val_id": return "itemsValId"; + case "items_id": return "itemsId"; + case "row_num": return "rowNum"; + case "col_num": return "colNum"; + case "content": return "content"; + case "valid_flag": return "validFlag"; + case "creation_time": return "creationTime"; + case "modify_time": return "modifyTime"; + case "modify_user": return "modifyUser"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getItemsValId() { + return this.itemsValId; + } + + /** **/ + public void setItemsValId(String itemsValId) { + this.itemsValId = itemsValId; + } + + /** **/ + public String getItemsId() { + return this.itemsId; + } + + /** **/ + public void setItemsId(String itemsId) { + this.itemsId = itemsId; + } + + /** **/ + public Integer getRowNum() { + return this.rowNum; + } + + /** **/ + public void setRowNum(Integer rowNum) { + this.rowNum = rowNum; + } + + /** **/ + public Integer getColNum() { + return this.colNum; + } + + /** **/ + public void setColNum(Integer colNum) { + this.colNum = colNum; + } + + /** **/ + public String getContent() { + return this.content; + } + + /** **/ + public void setContent(String content) { + this.content = content; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public String getModifyUser() { + return this.modifyUser; + } + + /** **/ + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsTableEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsTableEOPage.java new file mode 100644 index 00000000..dd1f9ed2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsTableEOPage.java @@ -0,0 +1,230 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_FILE_SPLIT_ITEMS_TABLE SarFileSplitItemsTableEOPage
    + * 作者:code generator
    + * 日期: 2020-01-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitItemsTableEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String itemsValId; + private String itemsValIdOperator = "="; + private String itemsId; + private String itemsIdOperator = "="; + private String rowNum; + private String rowNumOperator = "="; + private String colNum; + private String colNumOperator = "="; + private String content; + private String contentOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String modifyUser; + private String modifyUserOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getItemsValId() { + return this.itemsValId; + } + + public void setItemsValId(String itemsValId) { + this.itemsValId = itemsValId; + } + + public String getItemsValIdOperator() { + return this.itemsValIdOperator; + } + + public void setItemsValIdOperator(String itemsValIdOperator) { + this.itemsValIdOperator = itemsValIdOperator; + } + + public String getItemsId() { + return this.itemsId; + } + + public void setItemsId(String itemsId) { + this.itemsId = itemsId; + } + + public String getItemsIdOperator() { + return this.itemsIdOperator; + } + + public void setItemsIdOperator(String itemsIdOperator) { + this.itemsIdOperator = itemsIdOperator; + } + + public String getRowNum() { + return this.rowNum; + } + + public void setRowNum(String rowNum) { + this.rowNum = rowNum; + } + + public String getRowNumOperator() { + return this.rowNumOperator; + } + + public void setRowNumOperator(String rowNumOperator) { + this.rowNumOperator = rowNumOperator; + } + + public String getColNum() { + return this.colNum; + } + + public void setColNum(String colNum) { + this.colNum = colNum; + } + + public String getColNumOperator() { + return this.colNumOperator; + } + + public void setColNumOperator(String colNumOperator) { + this.colNumOperator = colNumOperator; + } + + public String getContent() { + return this.content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getContentOperator() { + return this.contentOperator; + } + + public void setContentOperator(String contentOperator) { + this.contentOperator = contentOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getModifyUser() { + return this.modifyUser; + } + + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + public String getModifyUserOperator() { + return this.modifyUserOperator; + } + + public void setModifyUserOperator(String modifyUserOperator) { + this.modifyUserOperator = modifyUserOperator; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsValEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsValEO.java new file mode 100644 index 00000000..d2951f2a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsValEO.java @@ -0,0 +1,246 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.common.UploadFileInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_FILE_SPLIT_ITEMS_VAL SarFileSplitItemsValEOEntity
    + * 作者:code generator
    + * 日期: 2020-01-07
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitItemsValEO extends BaseEntity { + + private String id; + private String type; + private String itemId; + private String itemContent; + private Integer validFlag; + private String creationUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String modifyUser; + private Integer displaySeq; + private String[] idList; + private List defaultFileList; + private String imgName; + private List tableList; + private List> tableListShow; + private int rowCount; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • type -> type
  • + *
  • itemId -> item_id
  • + *
  • itemContent -> item_content
  • + *
  • validFlag -> valid_flag
  • + *
  • creationUser -> creation_user
  • + *
  • creationTime -> creation_time
  • + *
  • modifyTime -> modify_time
  • + *
  • modifyUser -> modify_user
  • + *
  • displaySeq -> display_seq
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "type": return "type"; + case "itemId": return "item_id"; + case "itemContent": return "item_content"; + case "validFlag": return "valid_flag"; + case "creationUser": return "creation_user"; + case "creationTime": return "creation_time"; + case "modifyTime": return "modify_time"; + case "modifyUser": return "modify_user"; + case "displaySeq": return "display_seq"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • type -> type
  • + *
  • item_id -> itemId
  • + *
  • item_content -> itemContent
  • + *
  • valid_flag -> validFlag
  • + *
  • creation_user -> creationUser
  • + *
  • creation_time -> creationTime
  • + *
  • modify_time -> modifyTime
  • + *
  • modify_user -> modifyUser
  • + *
  • display_seq -> displaySeq
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "type": return "type"; + case "item_id": return "itemId"; + case "item_content": return "itemContent"; + case "valid_flag": return "validFlag"; + case "creation_user": return "creationUser"; + case "creation_time": return "creationTime"; + case "modify_time": return "modifyTime"; + case "modify_user": return "modifyUser"; + case "display_seq": return "displaySeq"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getType() { + return this.type; + } + + /** **/ + public void setType(String type) { + this.type = type; + } + + /** **/ + public String getItemId() { + return this.itemId; + } + + /** **/ + public void setItemId(String itemId) { + this.itemId = itemId; + } + + /** **/ + public String getItemContent() { + return itemContent; + } + + public void setItemContent(String itemContent) { + this.itemContent = itemContent; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getCreationUser() { + return this.creationUser; + } + + /** **/ + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public String getModifyUser() { + return this.modifyUser; + } + + /** **/ + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + /** **/ + public Integer getDisplaySeq() { + return this.displaySeq; + } + + /** **/ + public void setDisplaySeq(Integer displaySeq) { + this.displaySeq = displaySeq; + } + + public String[] getIdList() { + return idList; + } + + public void setIdList(String[] idList) { + this.idList = idList; + } + + public List getDefaultFileList() { + return defaultFileList; + } + + public void setDefaultFileList(List defaultFileList) { + this.defaultFileList = defaultFileList; + } + + public String getImgName() { + return imgName; + } + + public void setImgName(String imgName) { + this.imgName = imgName; + } + + public List getTableList() { + return tableList; + } + + public void setTableList(List tableList) { + this.tableList = tableList; + } + + public int getRowCount() { + return rowCount; + } + + public void setRowCount(int rowCount) { + this.rowCount = rowCount; + } + + public List> getTableListShow() { + return tableListShow; + } + + public void setTableListShow(List> tableListShow) { + this.tableListShow = tableListShow; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsValEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsValEOPage.java new file mode 100644 index 00000000..b03b9c7b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitItemsValEOPage.java @@ -0,0 +1,230 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_FILE_SPLIT_ITEMS_VAL SarFileSplitItemsValEOPage
    + * 作者:code generator
    + * 日期: 2020-01-07
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitItemsValEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String type; + private String typeOperator = "="; + private String itemId; + private String itemIdOperator = "="; + private String itemContent; + private String itemContentOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String modifyUser; + private String modifyUserOperator = "="; + private String displaySeq; + private String displaySeqOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTypeOperator() { + return this.typeOperator; + } + + public void setTypeOperator(String typeOperator) { + this.typeOperator = typeOperator; + } + + public String getItemId() { + return this.itemId; + } + + public void setItemId(String itemId) { + this.itemId = itemId; + } + + public String getItemIdOperator() { + return this.itemIdOperator; + } + + public void setItemIdOperator(String itemIdOperator) { + this.itemIdOperator = itemIdOperator; + } + + public String getItemContent() { + return this.itemContent; + } + + public void setItemContent(String itemContent) { + this.itemContent = itemContent; + } + + public String getItemContentOperator() { + return this.itemContentOperator; + } + + public void setItemContentOperator(String itemContentOperator) { + this.itemContentOperator = itemContentOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationUser() { + return this.creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getCreationUserOperator() { + return this.creationUserOperator; + } + + public void setCreationUserOperator(String creationUserOperator) { + this.creationUserOperator = creationUserOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getModifyUser() { + return this.modifyUser; + } + + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + public String getModifyUserOperator() { + return this.modifyUserOperator; + } + + public void setModifyUserOperator(String modifyUserOperator) { + this.modifyUserOperator = modifyUserOperator; + } + + public String getDisplaySeq() { + return this.displaySeq; + } + + public void setDisplaySeq(String displaySeq) { + this.displaySeq = displaySeq; + } + + public String getDisplaySeqOperator() { + return this.displaySeqOperator; + } + + public void setDisplaySeqOperator(String displaySeqOperator) { + this.displaySeqOperator = displaySeqOperator; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitMenuEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitMenuEO.java new file mode 100644 index 00000000..af4f1dc0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitMenuEO.java @@ -0,0 +1,295 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.utils.treetool.annotation.TreeNodeId; +import com.adc.da.utils.treetool.annotation.TreeNodeName; +import com.adc.da.utils.treetool.annotation.TreeNodeParentId; +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; + +/** + * 功能:SAR_FILE_SPLIT_MENU SarFileSplitMenuEOEntity
    + * 作者:code generator
    + * 日期: 2020-01-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitMenuEO extends BaseEntity { + + @TreeNodeId + private String id; + private String infoId; + @TreeNodeName + private String name; + @TreeNodeParentId + private String pId; + private Long displaySeq; + private Integer validFlag; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String remarks; + private String creationUser; + private String modifyUser; + private String itemName; + private String[] infoIdList; + + private Long displaySeqStart; + private Long displaySeqEnd; + private Long childrenCount; + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • infoId -> info_id
  • + *
  • name -> name
  • + *
  • pId -> p_id
  • + *
  • displaySeq -> display_seq
  • + *
  • validFlag -> valid_flag
  • + *
  • creationTime -> creation_time
  • + *
  • modifyTime -> modify_time
  • + *
  • remarks -> remarks
  • + *
  • creationUser -> creation_user
  • + *
  • modifyUser -> modify_user
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "infoId": return "info_id"; + case "name": return "name"; + case "pId": return "p_id"; + case "displaySeq": return "display_seq"; + case "validFlag": return "valid_flag"; + case "creationTime": return "creation_time"; + case "modifyTime": return "modify_time"; + case "remarks": return "remarks"; + case "creationUser": return "creation_user"; + case "modifyUser": return "modify_user"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • info_id -> infoId
  • + *
  • name -> name
  • + *
  • p_id -> pId
  • + *
  • display_seq -> displaySeq
  • + *
  • valid_flag -> validFlag
  • + *
  • creation_time -> creationTime
  • + *
  • modify_time -> modifyTime
  • + *
  • remarks -> remarks
  • + *
  • creation_user -> creationUser
  • + *
  • modify_user -> modifyUser
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "info_id": return "infoId"; + case "name": return "name"; + case "p_id": return "pId"; + case "display_seq": return "displaySeq"; + case "valid_flag": return "validFlag"; + case "creation_time": return "creationTime"; + case "modify_time": return "modifyTime"; + case "remarks": return "remarks"; + case "creation_user": return "creationUser"; + case "modify_user": return "modifyUser"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getInfoId() { + return this.infoId; + } + + /** **/ + public void setInfoId(String infoId) { + this.infoId = infoId; + } + + /** **/ + public String getName() { + return this.name; + } + + /** **/ + public void setName(String name) { + this.name = name; + } + + /** **/ + public String getPId() { + return this.pId; + } + + /** **/ + public void setPId(String pId) { + this.pId = pId; + } + + /** **/ + public Long getDisplaySeq() { + return this.displaySeq; + } + + /** **/ + public void setDisplaySeq(Long displaySeq) { + this.displaySeq = displaySeq; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public String getRemarks() { + return this.remarks; + } + + /** **/ + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + /** **/ + public String getCreationUser() { + return this.creationUser; + } + + /** **/ + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + /** **/ + public String getModifyUser() { + return this.modifyUser; + } + + /** **/ + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + public String getpId() { + return pId; + } + + public void setpId(String pId) { + this.pId = pId; + } + + + public String[] getInfoIdList() { + return infoIdList; + } + + public void setInfoIdList(String[] infoIdList) { + this.infoIdList = infoIdList; + } + + public SarFileSplitMenuEO(){ + } + + public SarFileSplitMenuEO(String id, String name, String parentId, String infoId, Long displaySeq,String itemName) { + this.id = id; + this.name = name; + this.pId = parentId; + this.infoId = infoId; + this.displaySeq = displaySeq; + this.validFlag = 0; + this.creationTime = new Date(); + this.creationUser = LoginUserUtil.getUserId(); + this.modifyTime = new Date(); + this.modifyUser = LoginUserUtil.getUserId(); + this.itemName = itemName; + } + + public SarFileSplitMenuEO(String id, String name, String infoId,Long displaySeq,String itemName) { + this.id = id; + this.name = name; + this.infoId = infoId; + this.displaySeq = displaySeq; + this.validFlag = 0; + this.creationTime = new Date(); + this.creationUser = LoginUserUtil.getUserId(); + this.modifyTime = new Date(); + this.modifyUser = LoginUserUtil.getUserId(); + this.itemName = itemName; + } + + public Long getDisplaySeqStart() { + return displaySeqStart; + } + + public void setDisplaySeqStart(Long displaySeqStart) { + this.displaySeqStart = displaySeqStart; + } + + public Long getDisplaySeqEnd() { + return displaySeqEnd; + } + + public void setDisplaySeqEnd(Long displaySeqEnd) { + this.displaySeqEnd = displaySeqEnd; + } + + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public Long getChildrenCount() { + return childrenCount; + } + + public void setChildrenCount(Long childrenCount) { + this.childrenCount = childrenCount; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitMenuEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitMenuEOPage.java new file mode 100644 index 00000000..273090a6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarFileSplitMenuEOPage.java @@ -0,0 +1,248 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_FILE_SPLIT_MENU SarFileSplitMenuEOPage
    + * 作者:code generator
    + * 日期: 2020-01-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarFileSplitMenuEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String infoId; + private String infoIdOperator = "="; + private String name; + private String nameOperator = "="; + private String pId; + private String pIdOperator = "="; + private String displaySeq; + private String displaySeqOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String remarks; + private String remarksOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String modifyUser; + private String modifyUserOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getInfoId() { + return this.infoId; + } + + public void setInfoId(String infoId) { + this.infoId = infoId; + } + + public String getInfoIdOperator() { + return this.infoIdOperator; + } + + public void setInfoIdOperator(String infoIdOperator) { + this.infoIdOperator = infoIdOperator; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNameOperator() { + return this.nameOperator; + } + + public void setNameOperator(String nameOperator) { + this.nameOperator = nameOperator; + } + + public String getPId() { + return this.pId; + } + + public void setPId(String pId) { + this.pId = pId; + } + + public String getPIdOperator() { + return this.pIdOperator; + } + + public void setPIdOperator(String pIdOperator) { + this.pIdOperator = pIdOperator; + } + + public String getDisplaySeq() { + return this.displaySeq; + } + + public void setDisplaySeq(String displaySeq) { + this.displaySeq = displaySeq; + } + + public String getDisplaySeqOperator() { + return this.displaySeqOperator; + } + + public void setDisplaySeqOperator(String displaySeqOperator) { + this.displaySeqOperator = displaySeqOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getRemarksOperator() { + return this.remarksOperator; + } + + public void setRemarksOperator(String remarksOperator) { + this.remarksOperator = remarksOperator; + } + + public String getCreationUser() { + return this.creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getCreationUserOperator() { + return this.creationUserOperator; + } + + public void setCreationUserOperator(String creationUserOperator) { + this.creationUserOperator = creationUserOperator; + } + + public String getModifyUser() { + return this.modifyUser; + } + + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + public String getModifyUserOperator() { + return this.modifyUserOperator; + } + + public void setModifyUserOperator(String modifyUserOperator) { + this.modifyUserOperator = modifyUserOperator; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarItemsCompareHisEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarItemsCompareHisEO.java new file mode 100644 index 00000000..1d490b88 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarItemsCompareHisEO.java @@ -0,0 +1,285 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:SAR_ITEMS_COMPARE_HIS SarItemsCompareHisEOEntity
    + * 作者:code generator
    + * 日期: 2020-02-26
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@TableName("sar_items_compare_his") +public class SarItemsCompareHisEO extends BaseEntity { + + private String id; + private String oldItemsId; + private String oldItemsName; + private String oldItemsText; + private String newItemsId; + private String newItemsName; + private String newItemsText; + private String createUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private String modifyUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String standHisId; + private String similarityDegree; + private String oldItemsNum; + private String newItemsNum; + private String oldRemark; + private String newRemark; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • oldItemsId -> old_items_id
  • + *
  • oldItemsName -> old_items_name
  • + *
  • oldItemsText -> old_items_text
  • + *
  • newItemsId -> new_items_id
  • + *
  • newItemsName -> new_items_name
  • + *
  • newItemsText -> new_items_text
  • + *
  • createUser -> create_user
  • + *
  • createTime -> create_time
  • + *
  • modifyUser -> modify_user
  • + *
  • modifyTime -> modify_time
  • + *
  • standHisId -> stand_his_id
  • + *
  • similarityDegree -> similarity_degree
  • + *
  • oldItemsNum -> old_items_num
  • + *
  • newItemsNum -> new_items_num
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "oldItemsId": return "old_items_id"; + case "oldItemsName": return "old_items_name"; + case "oldItemsText": return "old_items_text"; + case "newItemsId": return "new_items_id"; + case "newItemsName": return "new_items_name"; + case "newItemsText": return "new_items_text"; + case "createUser": return "create_user"; + case "createTime": return "create_time"; + case "modifyUser": return "modify_user"; + case "modifyTime": return "modify_time"; + case "standHisId": return "stand_his_id"; + case "similarityDegree": return "similarity_degree"; + case "oldItemsNum": return "old_items_num"; + case "newItemsNum": return "new_items_num"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • old_items_id -> oldItemsId
  • + *
  • old_items_name -> oldItemsName
  • + *
  • old_items_text -> oldItemsText
  • + *
  • new_items_id -> newItemsId
  • + *
  • new_items_name -> newItemsName
  • + *
  • new_items_text -> newItemsText
  • + *
  • create_user -> createUser
  • + *
  • create_time -> createTime
  • + *
  • modify_user -> modifyUser
  • + *
  • modify_time -> modifyTime
  • + *
  • stand_his_id -> standHisId
  • + *
  • similarity_degree -> similarityDegree
  • + *
  • old_items_num -> oldItemsNum
  • + *
  • new_items_num -> newItemsNum
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "old_items_id": return "oldItemsId"; + case "old_items_name": return "oldItemsName"; + case "old_items_text": return "oldItemsText"; + case "new_items_id": return "newItemsId"; + case "new_items_name": return "newItemsName"; + case "new_items_text": return "newItemsText"; + case "create_user": return "createUser"; + case "create_time": return "createTime"; + case "modify_user": return "modifyUser"; + case "modify_time": return "modifyTime"; + case "stand_his_id": return "standHisId"; + case "similarity_degree": return "similarityDegree"; + case "old_items_num": return "oldItemsNum"; + case "new_items_num": return "newItemsNum"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getOldItemsId() { + return this.oldItemsId; + } + + /** **/ + public void setOldItemsId(String oldItemsId) { + this.oldItemsId = oldItemsId; + } + + /** **/ + public String getOldItemsName() { + return this.oldItemsName; + } + + /** **/ + public void setOldItemsName(String oldItemsName) { + this.oldItemsName = oldItemsName; + } + + /** **/ + public String getOldItemsText() { + return this.oldItemsText; + } + + /** **/ + public void setOldItemsText(String oldItemsText) { + this.oldItemsText = oldItemsText; + } + + /** **/ + public String getNewItemsId() { + return this.newItemsId; + } + + /** **/ + public void setNewItemsId(String newItemsId) { + this.newItemsId = newItemsId; + } + + /** **/ + public String getNewItemsName() { + return this.newItemsName; + } + + /** **/ + public void setNewItemsName(String newItemsName) { + this.newItemsName = newItemsName; + } + + /** **/ + public String getNewItemsText() { + return this.newItemsText; + } + + /** **/ + public void setNewItemsText(String newItemsText) { + this.newItemsText = newItemsText; + } + + /** **/ + public String getCreateUser() { + return this.createUser; + } + + /** **/ + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + /** **/ + public Date getCreateTime() { + return this.createTime; + } + + /** **/ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** **/ + public String getModifyUser() { + return this.modifyUser; + } + + /** **/ + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public String getStandHisId() { + return this.standHisId; + } + + /** **/ + public void setStandHisId(String standHisId) { + this.standHisId = standHisId; + } + + /** **/ + public String getSimilarityDegree() { + return this.similarityDegree; + } + + /** **/ + public void setSimilarityDegree(String similarityDegree) { + this.similarityDegree = similarityDegree; + } + + /** **/ + public String getOldItemsNum() { + return this.oldItemsNum; + } + + /** **/ + public void setOldItemsNum(String oldItemsNum) { + this.oldItemsNum = oldItemsNum; + } + + /** **/ + public String getNewItemsNum() { + return this.newItemsNum; + } + + /** **/ + public void setNewItemsNum(String newItemsNum) { + this.newItemsNum = newItemsNum; + } + + public String getOldRemark() { + return oldRemark; + } + + public void setOldRemark(String oldRemark) { + this.oldRemark = oldRemark; + } + + public String getNewRemark() { + return newRemark; + } + + public void setNewRemark(String newRemark) { + this.newRemark = newRemark; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarLawsInfoEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarLawsInfoEO.java new file mode 100644 index 00000000..b10274af --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarLawsInfoEO.java @@ -0,0 +1,449 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.sys.entity.DicTypeEO; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @Author yangxuenan + * @Description 法规信息 + * Date 2018/9/3 16:37 + * @Param + * @return + **/ +public class SarLawsInfoEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String creationUser; + private String replaceLawsNum; + private String replacedLawsNum; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date putTime; + private String issueTime; + private String lawsState; + private String lawsName; + private String lawsNumber; + private String lawsProperty; + private String country; + private String lawsType; + private String id; + private String menuId; + private String stateName; + private String countryName; + private String propertyName; + //记录收藏id + private String collectId; + //记录是否修改了替代文件号 + private int upReplaceNumFlag; + //记录是否修改了文件号 + private int upNumFlag; + //新增字段 + private String synopsis; + private String lawsEnName; + private String sychronId; + private Map attrInfoMap; //属性表字段与值 + private List dicTypeList; + private String sarLawsAttrEOStr; //新增修改时属性表信息 + private String fileIds; //全部文件ID + private List attrInfoList = new ArrayList<>(); + private String accessCountry;//纳入清单的国家 + private String citeStand;//引用标准 + private String citedStand;//被引用标准 + private String prcNum;//流程编号 + private String textStatus;//文本状态 + private String isRelateAccess; + private String allPutTime; + private List prcNumAndName; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • creationUser -> creation_user
  • + *
  • relevanceFile -> relevance_file
  • + *
  • opinionFile -> opinion_file
  • + *
  • lawsFile -> laws_file
  • + *
  • linkUri -> link_uri
  • + *
  • responsibleUnit -> responsible_unit
  • + *
  • applyAuth -> apply_auth
  • + *
  • energyKind -> energy_kind
  • + *
  • applyArctic -> apply_arctic
  • + *
  • replaceLawsNum -> replace_laws_num
  • + *
  • putTime -> put_time
  • + *
  • issueTime -> issue_time
  • + *
  • lawsState -> laws_state
  • + *
  • issueUnit -> issue_unit
  • + *
  • lawsName -> laws_name
  • + *
  • lawsNumber -> laws_number
  • + *
  • lawsProperty -> laws_property
  • + *
  • country -> country
  • + *
  • lawsType -> laws_type
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "lawsEnName": return "laws_en_name"; + case "synopsis": return "synopsis"; + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "validFlag": return "valid_flag"; + case "creationUser": return "creation_user"; + case "replaceLawsNum": return "replace_laws_num"; + case "replacedLawsNum": return "replaced_laws_num"; + case "putTime": return "put_time"; + case "issueTime": return "issue_time"; + case "lawsState": return "laws_state"; + case "lawsName": return "laws_name"; + case "lawsNumber": return "laws_number"; + case "lawsProperty": return "laws_property"; + case "country": return "country"; + case "lawsType": return "laws_type"; + case "id": return "id"; + case "menuId": return "menu_id"; + case "stateName": return "stateName"; + default: return null; + } + } + + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "laws_en_name": return "lawsEnName"; + case "synopsis": return "synopsis"; + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "valid_flag": return "validFlag"; + case "creation_user": return "creationUser"; + case "replace_laws_num": return "replaceLawsNum"; + case "replaced_laws_num": return "replacedLawsNum"; + case "put_time": return "putTime"; + case "issue_time": return "issueTime"; + case "laws_state": return "lawsState"; + case "laws_name": return "lawsName"; + case "laws_number": return "lawsNumber"; + case "laws_property": return "lawsProperty"; + case "country": return "country"; + case "laws_type": return "lawsType"; + case "id": return "id"; + case "menu_id": return "menuId"; + case "stateName": return "stateName"; + default: return null; + } + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Integer getValidFlag() { + return validFlag; + } + + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + public String getCreationUser() { + return creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getReplaceLawsNum() { + return replaceLawsNum; + } + + public void setReplaceLawsNum(String replaceLawsNum) { + this.replaceLawsNum = replaceLawsNum; + } + + public String getReplacedLawsNum() { + return replacedLawsNum; + } + + public void setReplacedLawsNum(String replacedLawsNum) { + this.replacedLawsNum = replacedLawsNum; + } + + public Date getPutTime() { + return putTime; + } + + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getLawsState() { + return lawsState; + } + + public void setLawsState(String lawsState) { + this.lawsState = lawsState; + } + + public String getLawsName() { + return lawsName; + } + + public void setLawsName(String lawsName) { + this.lawsName = lawsName; + } + + public String getLawsNumber() { + return lawsNumber; + } + + public void setLawsNumber(String lawsNumber) { + this.lawsNumber = lawsNumber; + } + + public String getLawsProperty() { + return lawsProperty; + } + + public void setLawsProperty(String lawsProperty) { + this.lawsProperty = lawsProperty; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getLawsType() { + return lawsType; + } + + public void setLawsType(String lawsType) { + this.lawsType = lawsType; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getStateName() { + return stateName; + } + + public void setStateName(String stateName) { + this.stateName = stateName; + } + + public String getCountryName() { + return countryName; + } + + public void setCountryName(String countryName) { + this.countryName = countryName; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public int getUpReplaceNumFlag() { + return upReplaceNumFlag; + } + + public void setUpReplaceNumFlag(int upReplaceNumFlag) { + this.upReplaceNumFlag = upReplaceNumFlag; + } + + public int getUpNumFlag() { + return upNumFlag; + } + + public void setUpNumFlag(int upNumFlag) { + this.upNumFlag = upNumFlag; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getLawsEnName() { + return lawsEnName; + } + + public void setLawsEnName(String lawsEnName) { + this.lawsEnName = lawsEnName; + } + + public String getSychronId() { + return sychronId; + } + + public void setSychronId(String sychronId) { + this.sychronId = sychronId; + } + + public Map getAttrInfoMap() { + return attrInfoMap; + } + + public void setAttrInfoMap(Map attrInfoMap) { + this.attrInfoMap = attrInfoMap; + } + + public List getDicTypeList() { + return dicTypeList; + } + + public void setDicTypeList(List dicTypeList) { + this.dicTypeList = dicTypeList; + } + + public String getFileIds() { + return fileIds; + } + + public void setFileIds(String fileIds) { + this.fileIds = fileIds; + } + + public List getAttrInfoList() { + return attrInfoList; + } + + public void setAttrInfoList(List attrInfoList) { + this.attrInfoList = attrInfoList; + } + + public String getPropertyName() { + return propertyName; + } + + public void setPropertyName(String propertyName) { + this.propertyName = propertyName; + } + + public String getSarLawsAttrEOStr() { + return sarLawsAttrEOStr; + } + + public void setSarLawsAttrEOStr(String sarLawsAttrEOStr) { + this.sarLawsAttrEOStr = sarLawsAttrEOStr; + } + + public String getCiteStand() { + return citeStand; + } + + public void setCiteStand(String citeStand) { + this.citeStand = citeStand; + } + + public String getCitedStand() { + return citedStand; + } + + public void setCitedStand(String citedStand) { + this.citedStand = citedStand; + } + + public String getPrcNum() { + return prcNum; + } + + public void setPrcNum(String prcNum) { + this.prcNum = prcNum; + } + + public String getTextStatus() { + return textStatus; + } + + public void setTextStatus(String textStatus) { + this.textStatus = textStatus; + } + + public String getIsRelateAccess() { + return isRelateAccess; + } + + public void setIsRelateAccess(String isRelateAccess) { + this.isRelateAccess = isRelateAccess; + } + + public String getAccessCountry() { + return accessCountry; + } + + public void setAccessCountry(String accessCountry) { + this.accessCountry = accessCountry; + } + + public List getPrcNumAndName() { + return prcNumAndName; + } + + public void setPrcNumAndName(List prcNumAndName) { + this.prcNumAndName = prcNumAndName; + } + + public String getAllPutTime() { + return allPutTime; + } + + public void setAllPutTime(String allPutTime) { + this.allPutTime = allPutTime; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarLawsInfoEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarLawsInfoEOPage.java new file mode 100644 index 00000000..b8a42773 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarLawsInfoEOPage.java @@ -0,0 +1,754 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import java.util.List; + +/** + * @Author yangxuenan + * @Description 法规信息 + * Date 2018/9/3 16:37 + * @Param + * @return + **/ +public class SarLawsInfoEOPage extends BasePage { + + private Date modifyTime; + private Date modifyTime1; + private Date modifyTime2; + private String modifyTimeOperator = "="; + private Date creationTime; + private Date creationTime1; + private Date creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String relevanceFile; + private String relevanceFileOperator = "="; + private String opinionFile; + private String opinionFileOperator = "="; + private String lawsFile; + private String lawsFileOperator = "="; + private String linkUri; + private String linkUriOperator = "="; + private String responsibleUnit; + private String responsibleUnitOperator = "="; + private String applyAuth; + private String applyAuthOperator = "like"; + private String energyKind; + private String energyKindOperator = "like"; + private String applyArctic; + private String applyArcticOperator = "like"; + private String replaceLawsNum; + private String replacedLawsNum; + //需求变动,特此修改(byl),原 private String replaceLawsNumOperator = "="; + private String replaceLawsNumOperator = "like"; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime1; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime2; + private String putTimeOperator = "="; + private String issueTime; + private String issueTime1; + private String issueTime2; + private String issueTimeOperator = "="; + private String lawsState; + private String lawsStateOperator = "="; + private String issueUnit; + private String issueUnitOperator = "="; + private String lawsName; + private String lawsNameOperator = "like"; + private String lawsNumber; + private String lawsNumberOperator = "like"; + private String lawsProperty; + private String lawsPropertyOperator = "="; + private String country; + private String countryOperator = "="; + private String lawsType; + private String lawsTypeOperator = "="; + private String id; + private String idOperator = "="; + private String menuId; + private List menuIdList; + //为了在sql中区分修改操作 + private String updateFlag; + //新加字段 + private String synopsis; + private String lawsEnName; + private String category; + private String[] replaceLawsNumList; + private String[] applyArcticList; + private String[] energyKindList; + private String[] applyAuthList; + private List menuRoleList; + private String numberName; + private String synchronId; + private String[] idlist; + // 树结构增加搜索条件 + private String collectMenuId; + private String labelMenuId; + private String advanceSearchVOStr; + private String advanceSearchStr; + private String isRelateAccess; + private String ids; + private String proType; + private String userId; + private Integer nowOrder; + private Integer nowOrderBy; + private String orderBy1 = "SAR_LAWS_INFO.modify_time"; + private String order1 = "desc"; + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Date getModifyTime1() { + return modifyTime1; + } + + public void setModifyTime1(Date modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public Date getModifyTime2() { + return modifyTime2; + } + + public void setModifyTime2(Date modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Date getCreationTime1() { + return creationTime1; + } + + public void setCreationTime1(Date creationTime1) { + this.creationTime1 = creationTime1; + } + + public Date getCreationTime2() { + return creationTime2; + } + + public void setCreationTime2(Date creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getValidFlag() { + return validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationUser() { + return creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getCreationUserOperator() { + return creationUserOperator; + } + + public void setCreationUserOperator(String creationUserOperator) { + this.creationUserOperator = creationUserOperator; + } + + public String getRelevanceFile() { + return relevanceFile; + } + + public void setRelevanceFile(String relevanceFile) { + this.relevanceFile = relevanceFile; + } + + public String getRelevanceFileOperator() { + return relevanceFileOperator; + } + + public void setRelevanceFileOperator(String relevanceFileOperator) { + this.relevanceFileOperator = relevanceFileOperator; + } + + public String getOpinionFile() { + return opinionFile; + } + + public void setOpinionFile(String opinionFile) { + this.opinionFile = opinionFile; + } + + public String getOpinionFileOperator() { + return opinionFileOperator; + } + + public void setOpinionFileOperator(String opinionFileOperator) { + this.opinionFileOperator = opinionFileOperator; + } + + public String getLawsFile() { + return lawsFile; + } + + public void setLawsFile(String lawsFile) { + this.lawsFile = lawsFile; + } + + public String getLawsFileOperator() { + return lawsFileOperator; + } + + public void setLawsFileOperator(String lawsFileOperator) { + this.lawsFileOperator = lawsFileOperator; + } + + public String getLinkUri() { + return linkUri; + } + + public void setLinkUri(String linkUri) { + this.linkUri = linkUri; + } + + public String getLinkUriOperator() { + return linkUriOperator; + } + + public void setLinkUriOperator(String linkUriOperator) { + this.linkUriOperator = linkUriOperator; + } + + public String getResponsibleUnit() { + return responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getResponsibleUnitOperator() { + return responsibleUnitOperator; + } + + public void setResponsibleUnitOperator(String responsibleUnitOperator) { + this.responsibleUnitOperator = responsibleUnitOperator; + } + + public String getApplyAuth() { + return applyAuth; + } + + public void setApplyAuth(String applyAuth) { + this.applyAuth = applyAuth; + } + + public String getApplyAuthOperator() { + return applyAuthOperator; + } + + public void setApplyAuthOperator(String applyAuthOperator) { + this.applyAuthOperator = applyAuthOperator; + } + + public String getEnergyKind() { + return energyKind; + } + + public void setEnergyKind(String energyKind) { + this.energyKind = energyKind; + } + + public String getEnergyKindOperator() { + return energyKindOperator; + } + + public void setEnergyKindOperator(String energyKindOperator) { + this.energyKindOperator = energyKindOperator; + } + + public String getApplyArctic() { + return applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public String getApplyArcticOperator() { + return applyArcticOperator; + } + + public void setApplyArcticOperator(String applyArcticOperator) { + this.applyArcticOperator = applyArcticOperator; + } + + public String getReplaceLawsNum() { + return replaceLawsNum; + } + + public void setReplaceLawsNum(String replaceLawsNum) { + this.replaceLawsNum = replaceLawsNum; + } + + public String getReplaceLawsNumOperator() { + return replaceLawsNumOperator; + } + + public void setReplaceLawsNumOperator(String replaceLawsNumOperator) { + this.replaceLawsNumOperator = replaceLawsNumOperator; + } + + public Date getPutTime() { + return putTime; + } + + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + public Date getPutTime1() { + return putTime1; + } + + public void setPutTime1(Date putTime1) { + this.putTime1 = putTime1; + } + + public Date getPutTime2() { + return putTime2; + } + + public void setPutTime2(Date putTime2) { + this.putTime2 = putTime2; + } + + public String getPutTimeOperator() { + return putTimeOperator; + } + + public void setPutTimeOperator(String putTimeOperator) { + this.putTimeOperator = putTimeOperator; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getIssueTime1() { + return issueTime1; + } + + public void setIssueTime1(String issueTime1) { + this.issueTime1 = issueTime1; + } + + public String getIssueTime2() { + return issueTime2; + } + + public void setIssueTime2(String issueTime2) { + this.issueTime2 = issueTime2; + } + + public String getIssueTimeOperator() { + return issueTimeOperator; + } + + public void setIssueTimeOperator(String issueTimeOperator) { + this.issueTimeOperator = issueTimeOperator; + } + + public String getLawsState() { + return lawsState; + } + + public void setLawsState(String lawsState) { + this.lawsState = lawsState; + } + + public String getLawsStateOperator() { + return lawsStateOperator; + } + + public void setLawsStateOperator(String lawsStateOperator) { + this.lawsStateOperator = lawsStateOperator; + } + + public String getIssueUnit() { + return issueUnit; + } + + public void setIssueUnit(String issueUnit) { + this.issueUnit = issueUnit; + } + + public String getIssueUnitOperator() { + return issueUnitOperator; + } + + public void setIssueUnitOperator(String issueUnitOperator) { + this.issueUnitOperator = issueUnitOperator; + } + + public String getLawsName() { + return lawsName; + } + + public void setLawsName(String lawsName) { + this.lawsName = lawsName; + } + + public String getLawsNameOperator() { + return lawsNameOperator; + } + + public void setLawsNameOperator(String lawsNameOperator) { + this.lawsNameOperator = lawsNameOperator; + } + + public String getLawsNumber() { + return lawsNumber; + } + + public List getMenuIdList() { + return menuIdList; + } + + public void setMenuIdList(List menuIdList) { + this.menuIdList = menuIdList; + } + + public void setLawsNumber(String lawsNumber) { + this.lawsNumber = lawsNumber; + } + + public String getLawsNumberOperator() { + return lawsNumberOperator; + } + + public void setLawsNumberOperator(String lawsNumberOperator) { + this.lawsNumberOperator = lawsNumberOperator; + } + + public String getLawsProperty() { + return lawsProperty; + } + + public void setLawsProperty(String lawsProperty) { + this.lawsProperty = lawsProperty; + } + + public String getLawsPropertyOperator() { + return lawsPropertyOperator; + } + + public void setLawsPropertyOperator(String lawsPropertyOperator) { + this.lawsPropertyOperator = lawsPropertyOperator; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getCountryOperator() { + return countryOperator; + } + + public void setCountryOperator(String countryOperator) { + this.countryOperator = countryOperator; + } + + public String getLawsType() { + return lawsType; + } + + public void setLawsType(String lawsType) { + this.lawsType = lawsType; + } + + public String getLawsTypeOperator() { + return lawsTypeOperator; + } + + public void setLawsTypeOperator(String lawsTypeOperator) { + this.lawsTypeOperator = lawsTypeOperator; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getUpdateFlag() { + return updateFlag; + } + + public void setUpdateFlag(String updateFlag) { + this.updateFlag = updateFlag; + } + + public String[] getApplyArcticList() { + return applyArcticList; + } + + public void setApplyArcticList(String[] applyArcticList) { + this.applyArcticList = applyArcticList; + } + + public String[] getEnergyKindList() { + return energyKindList; + } + + public void setEnergyKindList(String[] energyKindList) { + this.energyKindList = energyKindList; + } + + public String[] getApplyAuthList() { + return applyAuthList; + } + + public void setApplyAuthList(String[] applyAuthList) { + this.applyAuthList = applyAuthList; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getLawsEnName() { + return lawsEnName; + } + + public void setLawsEnName(String lawsEnName) { + this.lawsEnName = lawsEnName; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String[] getReplaceLawsNumList() { + return replaceLawsNumList; + } + + public void setReplaceLawsNumList(String[] replaceLawsNumList) { + this.replaceLawsNumList = replaceLawsNumList; + } + + public String getReplacedLawsNum() { + return replacedLawsNum; + } + + public void setReplacedLawsNum(String replacedLawsNum) { + this.replacedLawsNum = replacedLawsNum; + } + + public List getMenuRoleList() { + return menuRoleList; + } + + public void setMenuRoleList(List menuRoleList) { + this.menuRoleList = menuRoleList; + } + + public String getNumberName() { + return numberName; + } + + public void setNumberName(String numberName) { + this.numberName = numberName; + } + + public String getSynchronId() { + return synchronId; + } + + public void setSynchronId(String synchronId) { + this.synchronId = synchronId; + } + + public String[] getIdlist() { + return idlist; + } + + public void setIdlist(String[] idlist) { + this.idlist = idlist; + } + + public String getCollectMenuId() { + return collectMenuId; + } + + public void setCollectMenuId(String collectMenuId) { + this.collectMenuId = collectMenuId; + } + + public String getLabelMenuId() { + return labelMenuId; + } + + public void setLabelMenuId(String labelMenuId) { + this.labelMenuId = labelMenuId; + } + + public String getAdvanceSearchVOStr() { + return advanceSearchVOStr; + } + + public void setAdvanceSearchVOStr(String advanceSearchVOStr) { + this.advanceSearchVOStr = advanceSearchVOStr; + } + + public String getAdvanceSearchStr() { + return advanceSearchStr; + } + + public void setAdvanceSearchStr(String advanceSearchStr) { + this.advanceSearchStr = advanceSearchStr; + } + + public String getIsRelateAccess() { + return isRelateAccess; + } + + public void setIsRelateAccess(String isRelateAccess) { + this.isRelateAccess = isRelateAccess; + } + + public String getIds() { + return ids; + } + + public void setIds(String ids) { + this.ids = ids; + } + + public String getProType() { + return proType; + } + + public void setProType(String proType) { + this.proType = proType; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + + public String getOrderBy1() { + return orderBy1; + } + + public void setOrderBy1(String orderBy1) { + this.orderBy1 = orderBy1; + } + + public String getOrder1() { + return order1; + } + + public void setOrder1(String order1) { + this.order1 = order1; + } + + public Integer getNowOrder() { + return nowOrder; + } + + public void setNowOrder(Integer nowOrder) { + this.nowOrder = nowOrder; + } + + public Integer getNowOrderBy() { + return nowOrderBy; + } + + public void setNowOrderBy(Integer nowOrderBy) { + this.nowOrderBy = nowOrderBy; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarMenuEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarMenuEO.java new file mode 100644 index 00000000..b17d546d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarMenuEO.java @@ -0,0 +1,228 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.utils.treetool.annotation.TreeNodeId; +import com.adc.da.utils.treetool.annotation.TreeNodeName; +import com.adc.da.utils.treetool.annotation.TreeNodeParentId; +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_MENU SarMenuEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarMenuEO extends BaseEntity { + + @TreeNodeParentId + private String parentId; + @TreeNodeName + private String menuName; + private String sorDivide; + @TreeNodeId + private String id; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private Integer displaySeq; + private String parentIds; + private String remarks; + private List roleIds; + private List childMenuIds; + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • parentId -> parent_id
  • + *
  • menuName -> menu_name
  • + *
  • sorDivide -> sor_divide
  • + *
  • id -> id
  • + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • displaySeq -> display_seq
  • + *
  • parentIds -> parent_ids
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "parentId": + return "parent_id"; + case "menuName": + return "menu_name"; + case "sorDivide": + return "sor_divide"; + case "id": + return "id"; + case "modifyTime": + return "modify_time"; + case "creationTime": + return "creation_time"; + case "validFlag": + return "valid_flag"; + case "displaySeq": + return "display_seq"; + case "parentIds": + return "parent_ids"; + default: + return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • parent_id -> parentId
  • + *
  • menu_name -> menuName
  • + *
  • sor_divide -> sorDivide
  • + *
  • id -> id
  • + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • valid_flag -> validFlag
  • + *
  • display_seq -> displaySeq
  • + *
  • parent_ids -> parentIds
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "parent_id": + return "parentId"; + case "menu_name": + return "menuName"; + case "sor_divide": + return "sorDivide"; + case "id": + return "id"; + case "modify_time": + return "modifyTime"; + case "creation_time": + return "creationTime"; + case "valid_flag": + return "validFlag"; + case "display_seq": + return "displaySeq"; + case "parent_ids": + return "parentIds"; + default: + return null; + } + } + + /** **/ + public String getParentId() { + return this.parentId; + } + + /** **/ + public void setParentId(String parentId) { + this.parentId = parentId; + } + + /** **/ + public String getMenuName() { + return this.menuName; + } + + /** **/ + public void setMenuName(String menuName) { + this.menuName = menuName; + } + + /** **/ + public String getSorDivide() { + return this.sorDivide; + } + + /** **/ + public void setSorDivide(String sorDivide) { + this.sorDivide = sorDivide; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public Integer getDisplaySeq() { + return this.displaySeq; + } + + /** **/ + public void setDisplaySeq(Integer displaySeq) { + this.displaySeq = displaySeq; + } + + /** **/ + public String getParentIds() { + return this.parentIds; + } + + /** **/ + public void setParentIds(String parentIds) { + this.parentIds = parentIds; + } + + public List getRoleIds() { + return roleIds; + } + + public void setRoleIds(List roleIds) { + this.roleIds = roleIds; + } + + public List getChildMenuIds() { + return childMenuIds; + } + + public void setChildMenuIds(List childMenuIds) { + this.childMenuIds = childMenuIds; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandAttrDetailsEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandAttrDetailsEO.java new file mode 100644 index 00000000..731c9435 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandAttrDetailsEO.java @@ -0,0 +1,286 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:SAR_STAND_ATTR_DETAILS SarStandAttrDetailsEOEntity
    + * 作者:code generator
    + * 日期: 2020-08-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarStandAttrDetailsEO extends BaseEntity { + + private String id; + private String attrField; + private String attrName; + private String attrType; + private Long orderNum; + private String isEdit; + private String creationUser; + private String validFlag; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date modifyTime; + private Long attrLen; + private String attrValue; + private String isMust; + private String isShowImp; + private String showRegionId; + private String selVal; + private String sarType; + private String isSearch; + private String isWarn; + private String areaName; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • attrField -> attr_field
  • + *
  • attrName -> attr_name
  • + *
  • attrType -> attr_type
  • + *
  • orderNum -> order_num
  • + *
  • isEdit -> is_edit
  • + *
  • creationUser -> creation_user
  • + *
  • validFlag -> valid_flag
  • + *
  • creationTime -> creation_time
  • + *
  • modifyTime -> modify_time
  • + *
  • attrLen -> attr_len
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "attrField": return "attr_field"; + case "attrName": return "attr_name"; + case "attrType": return "attr_type"; + case "orderNum": return "order_num"; + case "isEdit": return "is_edit"; + case "creationUser": return "creation_user"; + case "validFlag": return "valid_flag"; + case "creationTime": return "creation_time"; + case "modifyTime": return "modify_time"; + case "attrLen": return "attr_len"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • attr_field -> attrField
  • + *
  • attr_name -> attrName
  • + *
  • attr_type -> attrType
  • + *
  • order_num -> orderNum
  • + *
  • is_edit -> isEdit
  • + *
  • creation_user -> creationUser
  • + *
  • valid_flag -> validFlag
  • + *
  • creation_time -> creationTime
  • + *
  • modify_time -> modifyTime
  • + *
  • attr_len -> attrLen
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "attr_field": return "attrField"; + case "attr_name": return "attrName"; + case "attr_type": return "attrType"; + case "order_num": return "orderNum"; + case "is_edit": return "isEdit"; + case "creation_user": return "creationUser"; + case "valid_flag": return "validFlag"; + case "creation_time": return "creationTime"; + case "modify_time": return "modifyTime"; + case "attr_len": return "attrLen"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getAttrField() { + return this.attrField; + } + + /** **/ + public void setAttrField(String attrField) { + this.attrField = attrField; + } + + /** **/ + public String getAttrName() { + return this.attrName; + } + + /** **/ + public void setAttrName(String attrName) { + this.attrName = attrName; + } + + /** **/ + public String getAttrType() { + return this.attrType; + } + + /** **/ + public void setAttrType(String attrType) { + this.attrType = attrType; + } + + /** **/ + public Long getOrderNum() { + return this.orderNum; + } + + /** **/ + public void setOrderNum(Long orderNum) { + this.orderNum = orderNum; + } + + /** **/ + public String getIsEdit() { + return this.isEdit; + } + + /** **/ + public void setIsEdit(String isEdit) { + this.isEdit = isEdit; + } + + /** **/ + public String getCreationUser() { + return this.creationUser; + } + + /** **/ + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + /** **/ + public String getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Long getAttrLen() { + return this.attrLen; + } + + /** **/ + public void setAttrLen(Long attrLen) { + this.attrLen = attrLen; + } + + public String getAttrValue() { + return attrValue; + } + + public void setAttrValue(String attrValue) { + this.attrValue = attrValue; + } + + public String getIsMust() { + return isMust; + } + + public void setIsMust(String isMust) { + this.isMust = isMust; + } + + public String getIsShowImp() { + return isShowImp; + } + + public void setIsShowImp(String isShowImp) { + this.isShowImp = isShowImp; + } + + public String getShowRegionId() { + return showRegionId; + } + + public void setShowRegionId(String showRegionId) { + this.showRegionId = showRegionId; + } + + public String getSelVal() { + return selVal; + } + + public void setSelVal(String selVal) { + this.selVal = selVal; + } + + public String getSarType() { + return sarType; + } + + public void setSarType(String sarType) { + this.sarType = sarType; + } + + public String getIsSearch() { + return isSearch; + } + + public void setIsSearch(String isSearch) { + this.isSearch = isSearch; + } + + public String getIsWarn() { + return isWarn; + } + + public void setIsWarn(String isWarn) { + this.isWarn = isWarn; + } + + public String getAreaName() { + return areaName; + } + + public void setAreaName(String areaName) { + this.areaName = areaName; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandAttrDetailsEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandAttrDetailsEOPage.java new file mode 100644 index 00000000..92e15eb7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandAttrDetailsEOPage.java @@ -0,0 +1,301 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_STAND_ATTR_DETAILS SarStandAttrDetailsEOPage
    + * 作者:code generator
    + * 日期: 2020-08-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarStandAttrDetailsEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String attrField; + private String attrFieldOperator = "="; + private String attrName; + private String attrNameOperator = "="; + private String attrType; + private String attrTypeOperator = "="; + private String orderNum; + private String orderNumOperator = "="; + private String isEdit; + private String isEditOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String attrLen; + private String attrLenOperator = "="; + private String[] idList; + private String notId; + private String sarType; + private String isSearch; + private String isWarn; + private String isShow; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getAttrField() { + return this.attrField; + } + + public void setAttrField(String attrField) { + this.attrField = attrField; + } + + public String getAttrFieldOperator() { + return this.attrFieldOperator; + } + + public void setAttrFieldOperator(String attrFieldOperator) { + this.attrFieldOperator = attrFieldOperator; + } + + public String getAttrName() { + return this.attrName; + } + + public void setAttrName(String attrName) { + this.attrName = attrName; + } + + public String getAttrNameOperator() { + return this.attrNameOperator; + } + + public void setAttrNameOperator(String attrNameOperator) { + this.attrNameOperator = attrNameOperator; + } + + public String getAttrType() { + return this.attrType; + } + + public void setAttrType(String attrType) { + this.attrType = attrType; + } + + public String getAttrTypeOperator() { + return this.attrTypeOperator; + } + + public void setAttrTypeOperator(String attrTypeOperator) { + this.attrTypeOperator = attrTypeOperator; + } + + public String getOrderNum() { + return this.orderNum; + } + + public void setOrderNum(String orderNum) { + this.orderNum = orderNum; + } + + public String getOrderNumOperator() { + return this.orderNumOperator; + } + + public void setOrderNumOperator(String orderNumOperator) { + this.orderNumOperator = orderNumOperator; + } + + public String getIsEdit() { + return this.isEdit; + } + + public void setIsEdit(String isEdit) { + this.isEdit = isEdit; + } + + public String getIsEditOperator() { + return this.isEditOperator; + } + + public void setIsEditOperator(String isEditOperator) { + this.isEditOperator = isEditOperator; + } + + public String getCreationUser() { + return this.creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getCreationUserOperator() { + return this.creationUserOperator; + } + + public void setCreationUserOperator(String creationUserOperator) { + this.creationUserOperator = creationUserOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getAttrLen() { + return this.attrLen; + } + + public void setAttrLen(String attrLen) { + this.attrLen = attrLen; + } + + public String getAttrLenOperator() { + return this.attrLenOperator; + } + + public void setAttrLenOperator(String attrLenOperator) { + this.attrLenOperator = attrLenOperator; + } + + public String[] getIdList() { + return idList; + } + + public void setIdList(String[] idList) { + this.idList = idList; + } + + public String getNotId() { + return notId; + } + + public void setNotId(String notId) { + this.notId = notId; + } + + public String getSarType() { + return sarType; + } + + public void setSarType(String sarType) { + this.sarType = sarType; + } + + public String getIsSearch() { + return isSearch; + } + + public void setIsSearch(String isSearch) { + this.isSearch = isSearch; + } + + public String getIsWarn() { + return isWarn; + } + + public void setIsWarn(String isWarn) { + this.isWarn = isWarn; + } + + public String getIsShow() { + return isShow; + } + + public void setIsShow(String isShow) { + this.isShow = isShow; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandCompareHisEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandCompareHisEO.java new file mode 100644 index 00000000..5b075d27 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandCompareHisEO.java @@ -0,0 +1,332 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_STAND_COMPARE_HIS SarStandCompareHisEOEntity
    + * 作者:code generator
    + * 日期: 2020-02-24
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarStandCompareHisEO extends BaseEntity { + + private String compareType; + private String id; + private String oldStandId; + private String oldStandNum; + private String oldStandName; + private String newStandId; + private String newStandNum; + private String newStandName; + private String oldFileType; + private String oldFileTypeShow; + private String oldSarType; + private String createUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private String modifyUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String newFileType; + private String newFileTypeShow; + private String newSarType; + private String collectId; + private String compareStatus; + + private List resLeftMapList = new ArrayList<>(); + + private List resRightMapList = new ArrayList<>(); + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • compareType -> compare_type
  • + *
  • id -> id
  • + *
  • oldStandId -> old_stand_id
  • + *
  • oldStandNum -> old_stand_num
  • + *
  • oldStandName -> old_stand_name
  • + *
  • newStandId -> new_stand_id
  • + *
  • newStandNum -> new_stand_num
  • + *
  • newStandName -> new_stand_name
  • + *
  • oldFileType -> old_file_type
  • + *
  • oldSarType -> old_sar_type
  • + *
  • createUser -> create_user
  • + *
  • createTime -> create_time
  • + *
  • modifyUser -> modify_user
  • + *
  • modifyTime -> modify_time
  • + *
  • newFileType -> new_file_type
  • + *
  • newSarType -> new_sar_type
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "compareType": return "compare_type"; + case "id": return "id"; + case "oldStandId": return "old_stand_id"; + case "oldStandNum": return "old_stand_num"; + case "oldStandName": return "old_stand_name"; + case "newStandId": return "new_stand_id"; + case "newStandNum": return "new_stand_num"; + case "newStandName": return "new_stand_name"; + case "oldFileType": return "old_file_type"; + case "oldSarType": return "old_sar_type"; + case "createUser": return "create_user"; + case "createTime": return "create_time"; + case "modifyUser": return "modify_user"; + case "modifyTime": return "modify_time"; + case "newFileType": return "new_file_type"; + case "newSarType": return "new_sar_type"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • compare_type -> compareType
  • + *
  • id -> id
  • + *
  • old_stand_id -> oldStandId
  • + *
  • old_stand_num -> oldStandNum
  • + *
  • old_stand_name -> oldStandName
  • + *
  • new_stand_id -> newStandId
  • + *
  • new_stand_num -> newStandNum
  • + *
  • new_stand_name -> newStandName
  • + *
  • old_file_type -> oldFileType
  • + *
  • old_sar_type -> oldSarType
  • + *
  • create_user -> createUser
  • + *
  • create_time -> createTime
  • + *
  • modify_user -> modifyUser
  • + *
  • modify_time -> modifyTime
  • + *
  • new_file_type -> newFileType
  • + *
  • new_sar_type -> newSarType
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "compare_type": return "compareType"; + case "id": return "id"; + case "old_stand_id": return "oldStandId"; + case "old_stand_num": return "oldStandNum"; + case "old_stand_name": return "oldStandName"; + case "new_stand_id": return "newStandId"; + case "new_stand_num": return "newStandNum"; + case "new_stand_name": return "newStandName"; + case "old_file_type": return "oldFileType"; + case "old_sar_type": return "oldSarType"; + case "create_user": return "createUser"; + case "create_time": return "createTime"; + case "modify_user": return "modifyUser"; + case "modify_time": return "modifyTime"; + case "new_file_type": return "newFileType"; + case "new_sar_type": return "newSarType"; + default: return null; + } + } + + /** **/ + public String getCompareType() { + return this.compareType; + } + + /** **/ + public void setCompareType(String compareType) { + this.compareType = compareType; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getOldStandId() { + return this.oldStandId; + } + + /** **/ + public void setOldStandId(String oldStandId) { + this.oldStandId = oldStandId; + } + + /** **/ + public String getOldStandNum() { + return this.oldStandNum; + } + + /** **/ + public void setOldStandNum(String oldStandNum) { + this.oldStandNum = oldStandNum; + } + + /** **/ + public String getOldStandName() { + return this.oldStandName; + } + + /** **/ + public void setOldStandName(String oldStandName) { + this.oldStandName = oldStandName; + } + + /** **/ + public String getNewStandId() { + return this.newStandId; + } + + /** **/ + public void setNewStandId(String newStandId) { + this.newStandId = newStandId; + } + + /** **/ + public String getNewStandNum() { + return this.newStandNum; + } + + /** **/ + public void setNewStandNum(String newStandNum) { + this.newStandNum = newStandNum; + } + + /** **/ + public String getNewStandName() { + return this.newStandName; + } + + /** **/ + public void setNewStandName(String newStandName) { + this.newStandName = newStandName; + } + + /** **/ + public String getOldFileType() { + return this.oldFileType; + } + + /** **/ + public void setOldFileType(String oldFileType) { + this.oldFileType = oldFileType; + } + + /** **/ + public String getOldSarType() { + return this.oldSarType; + } + + /** **/ + public void setOldSarType(String oldSarType) { + this.oldSarType = oldSarType; + } + + /** **/ + public String getCreateUser() { + return this.createUser; + } + + /** **/ + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + /** **/ + public Date getCreateTime() { + return this.createTime; + } + + /** **/ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** **/ + public String getModifyUser() { + return this.modifyUser; + } + + /** **/ + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public String getNewFileType() { + return this.newFileType; + } + + /** **/ + public void setNewFileType(String newFileType) { + this.newFileType = newFileType; + } + + /** **/ + public String getNewSarType() { + return this.newSarType; + } + + /** **/ + public void setNewSarType(String newSarType) { + this.newSarType = newSarType; + } + + public List getResLeftMapList() { + return resLeftMapList; + } + + public void setResLeftMapList(List resLeftMapList) { + this.resLeftMapList = resLeftMapList; + } + + public List getResRightMapList() { + return resRightMapList; + } + + public void setResRightMapList(List resRightMapList) { + this.resRightMapList = resRightMapList; + } + + public String getOldFileTypeShow() { + return oldFileTypeShow; + } + + public void setOldFileTypeShow(String oldFileTypeShow) { + this.oldFileTypeShow = oldFileTypeShow; + } + + public String getNewFileTypeShow() { + return newFileTypeShow; + } + + public void setNewFileTypeShow(String newFileTypeShow) { + this.newFileTypeShow = newFileTypeShow; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandCompareHisEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandCompareHisEOPage.java new file mode 100644 index 00000000..375a13ce --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandCompareHisEOPage.java @@ -0,0 +1,380 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:SAR_STAND_COMPARE_HIS SarStandCompareHisEOPage
    + * 作者:code generator
    + * 日期: 2020-02-24
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarStandCompareHisEOPage extends BasePage { + + private String compareType; + private String compareTypeOperator = "="; + private String id; + private String idOperator = "="; + private String oldStandId; + private String oldStandIdOperator = "="; + private String oldStandNum; + private String oldStandNumOperator = "="; + private String oldStandName; + private String oldStandNameOperator = "="; + private String newStandId; + private String newStandIdOperator = "="; + private String newStandNum; + private String newStandNumOperator = "="; + private String newStandName; + private String newStandNameOperator = "="; + private String oldFileType; + private String oldFileTypeOperator = "="; + private String oldSarType; + private String oldSarTypeOperator = "="; + private String createUser; + private String createUserOperator = "="; + private String createTime; + private String createTime1; + private String createTime2; + private String createTimeOperator = "="; + private String modifyUser; + private String modifyUserOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String newFileType; + private String newFileTypeOperator = "="; + private String newSarType; + private String newSarTypeOperator = "="; + + private String oldNumOrName; + + private String newNumOrName; + private String compareStatus; + + private String shunxu; + + private String sql; + + public String getCompareType() { + return this.compareType; + } + + public void setCompareType(String compareType) { + this.compareType = compareType; + } + + public String getCompareTypeOperator() { + return this.compareTypeOperator; + } + + public void setCompareTypeOperator(String compareTypeOperator) { + this.compareTypeOperator = compareTypeOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getOldStandId() { + return this.oldStandId; + } + + public void setOldStandId(String oldStandId) { + this.oldStandId = oldStandId; + } + + public String getOldStandIdOperator() { + return this.oldStandIdOperator; + } + + public void setOldStandIdOperator(String oldStandIdOperator) { + this.oldStandIdOperator = oldStandIdOperator; + } + + public String getOldStandNum() { + return this.oldStandNum; + } + + public void setOldStandNum(String oldStandNum) { + this.oldStandNum = oldStandNum; + } + + public String getOldStandNumOperator() { + return this.oldStandNumOperator; + } + + public void setOldStandNumOperator(String oldStandNumOperator) { + this.oldStandNumOperator = oldStandNumOperator; + } + + public String getOldStandName() { + return this.oldStandName; + } + + public void setOldStandName(String oldStandName) { + this.oldStandName = oldStandName; + } + + public String getOldStandNameOperator() { + return this.oldStandNameOperator; + } + + public void setOldStandNameOperator(String oldStandNameOperator) { + this.oldStandNameOperator = oldStandNameOperator; + } + + public String getNewStandId() { + return this.newStandId; + } + + public void setNewStandId(String newStandId) { + this.newStandId = newStandId; + } + + public String getNewStandIdOperator() { + return this.newStandIdOperator; + } + + public void setNewStandIdOperator(String newStandIdOperator) { + this.newStandIdOperator = newStandIdOperator; + } + + public String getNewStandNum() { + return this.newStandNum; + } + + public void setNewStandNum(String newStandNum) { + this.newStandNum = newStandNum; + } + + public String getNewStandNumOperator() { + return this.newStandNumOperator; + } + + public void setNewStandNumOperator(String newStandNumOperator) { + this.newStandNumOperator = newStandNumOperator; + } + + public String getNewStandName() { + return this.newStandName; + } + + public void setNewStandName(String newStandName) { + this.newStandName = newStandName; + } + + public String getNewStandNameOperator() { + return this.newStandNameOperator; + } + + public void setNewStandNameOperator(String newStandNameOperator) { + this.newStandNameOperator = newStandNameOperator; + } + + public String getOldFileType() { + return this.oldFileType; + } + + public void setOldFileType(String oldFileType) { + this.oldFileType = oldFileType; + } + + public String getOldFileTypeOperator() { + return this.oldFileTypeOperator; + } + + public void setOldFileTypeOperator(String oldFileTypeOperator) { + this.oldFileTypeOperator = oldFileTypeOperator; + } + + public String getOldSarType() { + return this.oldSarType; + } + + public void setOldSarType(String oldSarType) { + this.oldSarType = oldSarType; + } + + public String getOldSarTypeOperator() { + return this.oldSarTypeOperator; + } + + public void setOldSarTypeOperator(String oldSarTypeOperator) { + this.oldSarTypeOperator = oldSarTypeOperator; + } + + public String getCreateUser() { + return this.createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCreateUserOperator() { + return this.createUserOperator; + } + + public void setCreateUserOperator(String createUserOperator) { + this.createUserOperator = createUserOperator; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateTime1() { + return this.createTime1; + } + + public void setCreateTime1(String createTime1) { + this.createTime1 = createTime1; + } + + public String getCreateTime2() { + return this.createTime2; + } + + public void setCreateTime2(String createTime2) { + this.createTime2 = createTime2; + } + + public String getCreateTimeOperator() { + return this.createTimeOperator; + } + + public void setCreateTimeOperator(String createTimeOperator) { + this.createTimeOperator = createTimeOperator; + } + + public String getModifyUser() { + return this.modifyUser; + } + + public void setModifyUser(String modifyUser) { + this.modifyUser = modifyUser; + } + + public String getModifyUserOperator() { + return this.modifyUserOperator; + } + + public void setModifyUserOperator(String modifyUserOperator) { + this.modifyUserOperator = modifyUserOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getNewFileType() { + return this.newFileType; + } + + public void setNewFileType(String newFileType) { + this.newFileType = newFileType; + } + + public String getNewFileTypeOperator() { + return this.newFileTypeOperator; + } + + public void setNewFileTypeOperator(String newFileTypeOperator) { + this.newFileTypeOperator = newFileTypeOperator; + } + + public String getNewSarType() { + return this.newSarType; + } + + public void setNewSarType(String newSarType) { + this.newSarType = newSarType; + } + + public String getNewSarTypeOperator() { + return this.newSarTypeOperator; + } + + public void setNewSarTypeOperator(String newSarTypeOperator) { + this.newSarTypeOperator = newSarTypeOperator; + } + + public String getOldNumOrName() { + return oldNumOrName; + } + + public void setOldNumOrName(String oldNumOrName) { + this.oldNumOrName = oldNumOrName; + } + + public String getNewNumOrName() { + return newNumOrName; + } + + public void setNewNumOrName(String newNumOrName) { + this.newNumOrName = newNumOrName; + } + + public String getShunxu() { + return shunxu; + } + + public void setShunxu(String shunxu) { + this.shunxu = shunxu; + } + + public String getSql() { + return sql; + } + + public void setSql(String sql) { + this.sql = sql; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandFileEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandFileEO.java new file mode 100644 index 00000000..3cf3ed1d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandFileEO.java @@ -0,0 +1,318 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_STAND_FILE SarStandFileEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +@TableName("sar_stand_file") +public class SarStandFileEO extends BaseEntity { + + @TableField(exist = false) + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @TableField(exist = false) + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + @TableLogic(value = "0",delval = "1") + private String validFlag; + + @TableField("USE_MODEL") + private String useModel; + @TableField("ATT_ID") + private String attId; + + public String getAttId1() { + return attId1; + } + + public void setAttId1(String attId1) { + this.attId1 = attId1; + } + @TableField(exist = false) + private String attId1; + @TableField(exist = false) + private String resId; + @TableField("STAND_ID") + private String standId; + @TableId("id") + private String id; + @TableField(exist = false) + private Integer pageCount; + @TableField(exist = false) + private String fileOldName; + @TableField(exist = false) + private List idlist = new ArrayList<>(); + @TableField("STAND_FILE_CLASSIFY") + private String standFileClassify; + @TableField(exist = false) + private String standFileClassifyShow; + @TableField(exist = false) + private String fileSuffix; + @TableField("FILE_NAME") + private String fileName; + @TableField(exist = false) + private String password; + @TableField(exist = false) + private String creationUser; + @TableField(exist = false) + private String standNumber; + @TableField(exist = false) + private String standName; + @TableField(exist = false) + private String sarType; + @TableField("ORI_ATT_ID") + private String oriAttId; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • useModel -> use_model
  • + *
  • attId -> att_id
  • + *
  • resId -> res_id
  • + *
  • standId -> stand_id
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "pageCount": return "page_count"; + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "validFlag": return "valid_flag"; + case "useModel": return "use_model"; + case "attId": return "att_id"; + case "resId": return "res_id"; + case "standId": return "stand_id"; + case "id": return "id"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • valid_flag -> validFlag
  • + *
  • use_model -> useModel
  • + *
  • att_id -> attId
  • + *
  • res_id -> resId
  • + *
  • stand_id -> standId
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "page_count": return "pageCount"; + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "valid_flag": return "validFlag"; + case "use_model": return "useModel"; + case "att_id": return "attId"; + case "res_id": return "resId"; + case "stand_id": return "standId"; + case "id": return "id"; + default: return null; + } + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public String getValidFlag() { + return validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getUseModel() { + return this.useModel; + } + + /** **/ + public void setUseModel(String useModel) { + this.useModel = useModel; + } + + /** **/ + public String getAttId() { + return this.attId; + } + + /** **/ + public void setAttId(String attId) { + this.attId = attId; + } + + /** **/ + public String getResId() { + return this.resId; + } + + /** **/ + public void setResId(String resId) { + this.resId = resId; + } + + /** **/ + public String getStandId() { + return this.standId; + } + + /** **/ + public void setStandId(String standId) { + this.standId = standId; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public Integer getPageCount() { + return pageCount; + } + + public void setPageCount(Integer pageCount) { + this.pageCount = pageCount; + } + + public List getIdlist() { + return idlist; + } + + public void setIdlist(List idlist) { + this.idlist = idlist; + } + + public String getFileOldName() { + return fileOldName; + } + + public void setFileOldName(String fileOldName) { + this.fileOldName = fileOldName; + } + + public String getStandFileClassify() { + return standFileClassify; + } + + public void setStandFileClassify(String standFileClassify) { + this.standFileClassify = standFileClassify; + } + + public String getFileSuffix() { + return fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getCreationUser() { + return creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getSarType() { + return sarType; + } + + public void setSarType(String sarType) { + this.sarType = sarType; + } + + public String getStandFileClassifyShow() { + return standFileClassifyShow; + } + + public void setStandFileClassifyShow(String standFileClassifyShow) { + this.standFileClassifyShow = standFileClassifyShow; + } + + public String getOriAttId() { + return oriAttId; + } + + public void setOriAttId(String oriAttId) { + this.oriAttId = oriAttId; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandFileEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandFileEOPage.java new file mode 100644 index 00000000..96d10cca --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandFileEOPage.java @@ -0,0 +1,250 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:SAR_STAND_FILE SarStandFileEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class SarStandFileEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String useModel; + private String useModelOperator = "="; + private String attId; + private String attIdOperator = "="; + private String resId; + private String resIdOperator = "="; + private String standId; + private String standIdOperator = "="; + private String id; + private String idOperator = "="; + private String[] fileSuffixList; + private String fileSuffix; + private String standNumber; + private String standName; + private String fileType; + private String standFileClassify; + private int rowCount; + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getUseModel() { + return this.useModel; + } + + public void setUseModel(String useModel) { + this.useModel = useModel; + } + + public String getUseModelOperator() { + return this.useModelOperator; + } + + public void setUseModelOperator(String useModelOperator) { + this.useModelOperator = useModelOperator; + } + + public String getAttId() { + return this.attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + public String getAttIdOperator() { + return this.attIdOperator; + } + + public void setAttIdOperator(String attIdOperator) { + this.attIdOperator = attIdOperator; + } + + public String getResId() { + return this.resId; + } + + public void setResId(String resId) { + this.resId = resId; + } + + public String getResIdOperator() { + return this.resIdOperator; + } + + public void setResIdOperator(String resIdOperator) { + this.resIdOperator = resIdOperator; + } + + public String getStandId() { + return this.standId; + } + + public void setStandId(String standId) { + this.standId = standId; + } + + public String getStandIdOperator() { + return this.standIdOperator; + } + + public void setStandIdOperator(String standIdOperator) { + this.standIdOperator = standIdOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String[] getFileSuffixList() { + return fileSuffixList; + } + + public void setFileSuffixList(String[] fileSuffixList) { + this.fileSuffixList = fileSuffixList; + } + + public String getFileSuffix() { + return fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getStandFileClassify() { + return standFileClassify; + } + + public void setStandFileClassify(String standFileClassify) { + this.standFileClassify = standFileClassify; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsCompareHisEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsCompareHisEO.java new file mode 100644 index 00000000..65dab55a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsCompareHisEO.java @@ -0,0 +1,222 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + * 功能:SAR_STAND_ITEMS_COMPARE_HIS SarStandItemsCompareHisEOEntity
    + * 作者:code generator
    + * 日期: 2020-02-24
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarStandItemsCompareHisEO extends BaseEntity { + + private String id; + private String itemsId; + private String itemsName; + private String itemsNum; + private String itemsText; + private Integer itemsDisplayNum; + private Integer targetStand; + private String leftOrRight; + private String standHisId; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + private String remark; + private String pid; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • itemsId -> items_id
  • + *
  • itemsName -> items_name
  • + *
  • itemsNum -> items_num
  • + *
  • itemsText -> items_text
  • + *
  • itemsDisplayNum -> items_display_num
  • + *
  • targetStand -> target_stand
  • + *
  • leftOrRight -> left_or_right
  • + *
  • standHisId -> stand_his_id
  • + *
  • createTime -> create_time
  • + *
  • modifyTime -> modify_time
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "itemsId": return "items_id"; + case "itemsName": return "items_name"; + case "itemsNum": return "items_num"; + case "itemsText": return "items_text"; + case "itemsDisplayNum": return "items_display_num"; + case "targetStand": return "target_stand"; + case "leftOrRight": return "left_or_right"; + case "standHisId": return "stand_his_id"; + case "createTime": return "create_time"; + case "modifyTime": return "modify_time"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • items_id -> itemsId
  • + *
  • items_name -> itemsName
  • + *
  • items_num -> itemsNum
  • + *
  • items_text -> itemsText
  • + *
  • items_display_num -> itemsDisplayNum
  • + *
  • target_stand -> targetStand
  • + *
  • left_or_right -> leftOrRight
  • + *
  • stand_his_id -> standHisId
  • + *
  • create_time -> createTime
  • + *
  • modify_time -> modifyTime
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "items_id": return "itemsId"; + case "items_name": return "itemsName"; + case "items_num": return "itemsNum"; + case "items_text": return "itemsText"; + case "items_display_num": return "itemsDisplayNum"; + case "target_stand": return "targetStand"; + case "left_or_right": return "leftOrRight"; + case "stand_his_id": return "standHisId"; + case "create_time": return "createTime"; + case "modify_time": return "modifyTime"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getItemsId() { + return this.itemsId; + } + + /** **/ + public void setItemsId(String itemsId) { + this.itemsId = itemsId; + } + + /** **/ + public String getItemsName() { + return this.itemsName; + } + + /** **/ + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + /** **/ + public String getItemsNum() { + return this.itemsNum; + } + + /** **/ + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + /** **/ + public String getItemsText() { + return this.itemsText; + } + + /** **/ + public void setItemsText(String itemsText) { + this.itemsText = itemsText; + } + + /** **/ + public Integer getItemsDisplayNum() { + return this.itemsDisplayNum; + } + + /** **/ + public void setItemsDisplayNum(Integer itemsDisplayNum) { + this.itemsDisplayNum = itemsDisplayNum; + } + + /** **/ + public Integer getTargetStand() { + return this.targetStand; + } + + /** **/ + public void setTargetStand(Integer targetStand) { + this.targetStand = targetStand; + } + + /** **/ + public String getLeftOrRight() { + return this.leftOrRight; + } + + /** **/ + public void setLeftOrRight(String leftOrRight) { + this.leftOrRight = leftOrRight; + } + + /** **/ + public String getStandHisId() { + return this.standHisId; + } + + /** **/ + public void setStandHisId(String standHisId) { + this.standHisId = standHisId; + } + + /** **/ + public Date getCreateTime() { + return this.createTime; + } + + /** **/ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsCompareHisEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsCompareHisEOPage.java new file mode 100644 index 00000000..72740ded --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsCompareHisEOPage.java @@ -0,0 +1,248 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:SAR_STAND_ITEMS_COMPARE_HIS SarStandItemsCompareHisEOPage
    + * 作者:code generator
    + * 日期: 2020-02-24
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarStandItemsCompareHisEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String itemsId; + private String itemsIdOperator = "="; + private String itemsName; + private String itemsNameOperator = "="; + private String itemsNum; + private String itemsNumOperator = "="; + private String itemsText; + private String itemsTextOperator = "="; + private String itemsDisplayNum; + private String itemsDisplayNumOperator = "="; + private String targetStand; + private String targetStandOperator = "="; + private String leftOrRight; + private String leftOrRightOperator = "="; + private String standHisId; + private String standHisIdOperator = "="; + private String createTime; + private String createTime1; + private String createTime2; + private String createTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getItemsId() { + return this.itemsId; + } + + public void setItemsId(String itemsId) { + this.itemsId = itemsId; + } + + public String getItemsIdOperator() { + return this.itemsIdOperator; + } + + public void setItemsIdOperator(String itemsIdOperator) { + this.itemsIdOperator = itemsIdOperator; + } + + public String getItemsName() { + return this.itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItemsNameOperator() { + return this.itemsNameOperator; + } + + public void setItemsNameOperator(String itemsNameOperator) { + this.itemsNameOperator = itemsNameOperator; + } + + public String getItemsNum() { + return this.itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getItemsNumOperator() { + return this.itemsNumOperator; + } + + public void setItemsNumOperator(String itemsNumOperator) { + this.itemsNumOperator = itemsNumOperator; + } + + public String getItemsText() { + return this.itemsText; + } + + public void setItemsText(String itemsText) { + this.itemsText = itemsText; + } + + public String getItemsTextOperator() { + return this.itemsTextOperator; + } + + public void setItemsTextOperator(String itemsTextOperator) { + this.itemsTextOperator = itemsTextOperator; + } + + public String getItemsDisplayNum() { + return this.itemsDisplayNum; + } + + public void setItemsDisplayNum(String itemsDisplayNum) { + this.itemsDisplayNum = itemsDisplayNum; + } + + public String getItemsDisplayNumOperator() { + return this.itemsDisplayNumOperator; + } + + public void setItemsDisplayNumOperator(String itemsDisplayNumOperator) { + this.itemsDisplayNumOperator = itemsDisplayNumOperator; + } + + public String getTargetStand() { + return this.targetStand; + } + + public void setTargetStand(String targetStand) { + this.targetStand = targetStand; + } + + public String getTargetStandOperator() { + return this.targetStandOperator; + } + + public void setTargetStandOperator(String targetStandOperator) { + this.targetStandOperator = targetStandOperator; + } + + public String getLeftOrRight() { + return this.leftOrRight; + } + + public void setLeftOrRight(String leftOrRight) { + this.leftOrRight = leftOrRight; + } + + public String getLeftOrRightOperator() { + return this.leftOrRightOperator; + } + + public void setLeftOrRightOperator(String leftOrRightOperator) { + this.leftOrRightOperator = leftOrRightOperator; + } + + public String getStandHisId() { + return this.standHisId; + } + + public void setStandHisId(String standHisId) { + this.standHisId = standHisId; + } + + public String getStandHisIdOperator() { + return this.standHisIdOperator; + } + + public void setStandHisIdOperator(String standHisIdOperator) { + this.standHisIdOperator = standHisIdOperator; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateTime1() { + return this.createTime1; + } + + public void setCreateTime1(String createTime1) { + this.createTime1 = createTime1; + } + + public String getCreateTime2() { + return this.createTime2; + } + + public void setCreateTime2(String createTime2) { + this.createTime2 = createTime2; + } + + public String getCreateTimeOperator() { + return this.createTimeOperator; + } + + public void setCreateTimeOperator(String createTimeOperator) { + this.createTimeOperator = createTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsEO.java new file mode 100644 index 00000000..2c481568 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandItemsEO.java @@ -0,0 +1,495 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_STAND_ITEMS SarStandItemsEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarStandItemsEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private String creationUser; + private Integer validFlag; + private String remarks; + private String responsibleUnit; + private String energyKind; + private String applyArctic; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date tackTime; + private String parts; + private String itemsName; + private String itemsNum; + private String standId; + private String id; + private String emergyKindShow; + private String applyArcticShow; + private String responsibleUnitShow; + private String termsConditions; //条款要求 + private String mainPointImplementation; //实施要点 + //新加字段 + private String fo;//FO + private String foUser;//FO + private String dutyEngineer;//责任工程师 + private String svpps;//SVPPS + private String claimType;//要求类型 + private String busStandCover;//企标覆盖关系 + private String fileType;//文件类型 + //新加字段带show + private String foShow;//FO + private String dutyEngineerShow;//责任工程师 + private String svppsShow;//SVPPS + private String claimTypeShow;//要求类型 + private String busStandCoverShow;//企标覆盖关系 + private String fileTypeShow;//文件类型 + private String itemState;//条款状态 + private List idList; + private String oldId; + private String jspg; + private SarCompStatusInfoEO pgForm; + + private String menuId; + private String editFlag; + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • creationUser -> creation_user
  • + *
  • validFlag -> valid_flag
  • + *
  • remarks -> remarks
  • + *
  • responsibleUnit -> responsible_unit
  • + *
  • energyKind -> energy_kind
  • + *
  • applyArctic -> apply_arctic
  • + *
  • tackTime -> tack_time
  • + *
  • parts -> parts
  • + *
  • itemsName -> items_name
  • + *
  • itemsNum -> items_num
  • + *
  • standId -> stand_id
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "creationUser": return "creation_user"; + case "validFlag": return "valid_flag"; + case "remarks": return "remarks"; + case "responsibleUnit": return "responsible_unit"; + case "energyKind": return "energy_kind"; + case "applyArctic": return "apply_arctic"; + case "tackTime": return "tack_time"; + case "parts": return "parts"; + case "itemsName": return "items_name"; + case "itemsNum": return "items_num"; + case "standId": return "stand_id"; + case "id": return "id"; + case "termsConditions": return "terms_conditions"; + case "mainPointImplementation": return "MAINPOINTS_IMPEMENTATION"; + case "fo": return "fo"; + case "dutyEngineer": return "duty_engineer"; + case "svpps": return "svpps"; + case "claimType": return "claim_type"; + case "busStandCover": return "bus_stand_cover"; + case "fileType": return "file_type"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • creation_user -> creationUser
  • + *
  • valid_flag -> validFlag
  • + *
  • remarks -> remarks
  • + *
  • responsible_unit -> responsibleUnit
  • + *
  • energy_kind -> energyKind
  • + *
  • apply_arctic -> applyArctic
  • + *
  • tack_time -> tackTime
  • + *
  • parts -> parts
  • + *
  • items_name -> itemsName
  • + *
  • items_num -> itemsNum
  • + *
  • stand_id -> standId
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "creation_user": return "creationUser"; + case "valid_flag": return "validFlag"; + case "remarks": return "remarks"; + case "responsible_unit": return "responsibleUnit"; + case "energy_kind": return "energyKind"; + case "apply_arctic": return "applyArctic"; + case "tack_time": return "tackTime"; + case "parts": return "parts"; + case "items_name": return "itemsName"; + case "items_num": return "itemsNum"; + case "stand_id": return "standId"; + case "id": return "id"; + case "terms_conditions": return "termsConditions"; + case "MAINPOINTS_IMPEMENTATION": return "mainPointImplementation"; + case "fo": return "fo"; + case "duty_engineer": return "dutyEngineer"; + case "svpps": return "svpps"; + case "claim_type": return "claimType"; + case "bus_stand_cover": return "busStandCover"; + case "file_type": return "fileType"; + default: return null; + } + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public String getCreationUser() { + return this.creationUser; + } + + /** **/ + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getRemarks() { + return this.remarks; + } + + /** **/ + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + /** **/ + public String getResponsibleUnit() { + return this.responsibleUnit; + } + + /** **/ + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + /** **/ + public String getEnergyKind() { + return this.energyKind; + } + + /** **/ + public void setEnergyKind(String energyKind) { + this.energyKind = energyKind; + } + + /** **/ + public String getApplyArctic() { + return this.applyArctic; + } + + /** **/ + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + /** **/ + public Date getTackTime() { + return this.tackTime; + } + + /** **/ + public void setTackTime(Date tackTime) { + this.tackTime = tackTime; + } + + /** **/ + public String getParts() { + return this.parts; + } + + /** **/ + public void setParts(String parts) { + this.parts = parts; + } + + /** **/ + public String getItemsName() { + return this.itemsName; + } + + /** **/ + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + /** **/ + public String getItemsNum() { + return this.itemsNum; + } + + /** **/ + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + /** **/ + public String getStandId() { + return this.standId; + } + + /** **/ + public void setStandId(String standId) { + this.standId = standId; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public String getResponsibleUnitShow() { + return responsibleUnitShow; + } + + public void setResponsibleUnitShow(String responsibleUnitShow) { + this.responsibleUnitShow = responsibleUnitShow; + } + + public String getEmergyKindShow() { + return emergyKindShow; + } + + public void setEmergyKindShow(String emergyKindShow) { + this.emergyKindShow = emergyKindShow; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } + + public String getTermsConditions() { + return termsConditions; + } + + public void setTermsConditions(String termsConditions) { + this.termsConditions = termsConditions; + } + + public String getMainPointImplementation() { + return mainPointImplementation; + } + + public void setMainPointImplementation(String mainPointImplementation) { + this.mainPointImplementation = mainPointImplementation; + } + + public String getFo() { + return fo; + } + + public void setFo(String fo) { + this.fo = fo; + } + + public String getDutyEngineer() { + return dutyEngineer; + } + + public void setDutyEngineer(String dutyEngineer) { + this.dutyEngineer = dutyEngineer; + } + + public String getSvpps() { + return svpps; + } + + public void setSvpps(String svpps) { + this.svpps = svpps; + } + + public String getClaimType() { + return claimType; + } + + public void setClaimType(String claimType) { + this.claimType = claimType; + } + + public String getBusStandCover() { + return busStandCover; + } + + public void setBusStandCover(String busStandCover) { + this.busStandCover = busStandCover; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getFoShow() { + return foShow; + } + + public void setFoShow(String foShow) { + this.foShow = foShow; + } + + public String getDutyEngineerShow() { + return dutyEngineerShow; + } + + public void setDutyEngineerShow(String dutyEngineerShow) { + this.dutyEngineerShow = dutyEngineerShow; + } + + public String getSvppsShow() { + return svppsShow; + } + + public void setSvppsShow(String svppsShow) { + this.svppsShow = svppsShow; + } + + public String getClaimTypeShow() { + return claimTypeShow; + } + + public void setClaimTypeShow(String claimTypeShow) { + this.claimTypeShow = claimTypeShow; + } + + public String getBusStandCoverShow() { + return busStandCoverShow; + } + + public void setBusStandCoverShow(String busStandCoverShow) { + this.busStandCoverShow = busStandCoverShow; + } + + public String getFileTypeShow() { + return fileTypeShow; + } + + public void setFileTypeShow(String fileTypeShow) { + this.fileTypeShow = fileTypeShow; + } + + public List getIdList() { + return idList; + } + + public void setIdList(List idList) { + this.idList = idList; + } + + public String getItemState() { + return itemState; + } + + public void setItemState(String itemState) { + this.itemState = itemState; + } + + public String getJspg() { + return jspg; + } + + public void setJspg(String jspg) { + this.jspg = jspg; + } + + public SarCompStatusInfoEO getPgForm() { + return pgForm; + } + + public void setPgForm(SarCompStatusInfoEO pgForm) { + this.pgForm = pgForm; + } + + public String getOldId() { + return oldId; + } + + public void setOldId(String oldId) { + this.oldId = oldId; + } + + public String getFoUser() { + return foUser; + } + + public void setFoUser(String foUser) { + this.foUser = foUser; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getEditFlag() { + return editFlag; + } + + public void setEditFlag(String editFlag) { + this.editFlag = editFlag; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandardsInfoEO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandardsInfoEO.java new file mode 100644 index 00000000..d459967c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandardsInfoEO.java @@ -0,0 +1,588 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.sys.entity.DicTypeEO; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.*; + +/** + * 功能:SAR_STANDARDS_INFO SarStandardsInfoEOEntity
    + * 作者:code generator
    + * 日期: 2020-08-19
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarStandardsInfoEO extends BaseEntity { + + private String id; + private String standType; + private String country; + private String standSort; + private String standNumber; + private String standYear; + private String standName; + private String standEnName; + private String standState; + private String standNature; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private String issueTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date putTime; + private String synopsis; + private String replaceStandNum; + private String replacedStandNum; + private String creationUser; + private String validFlag; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date creationTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date modifyTime; + private String isRelateAccess; + // 以下为非表中字段 + private String collectId; // 收藏表ID + private String countryShow; //国家地区显示名称 + private String standSortShow; // 标准类别显示名称 + private String standStateShow; // 标准状态显示名称 + private String standNatureShow; // 标准性质显示名称 + private String sychronId; // 同步数据ID + private List dicTypeList = new ArrayList(); // 记录标准涉及到的所有数据字典数据 + private Map attrInfoMap = new LinkedHashMap<>(); //属性表字段与值 + private String sarStandAttrEOStr; //新增修改时属性表信息 + private String menuId; //目录ID + private int upReplaceNumFlag; //记录是否修改了替代文件号 + private int upNumFlag; //记录是否修改了文件号 + private List attrInfoList = new ArrayList<>(); + private String fileIds; //全部文件ID + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date newCarPutTime; + private List itemsList = new ArrayList<>(); + private String citeStand;//引用标准 + private String citedStand;//被引用标准 + private String relateStand;//对应其他标准 + private String accessCountry;//纳入清单的国家 + private String processNum;//流程编号 + private String textStatus;//文本状态 +// 在库里的标准节点类型(工作组) + private String menuType; + private String allPutTime; + private String jspg; + private SarCompStatusInfoEO pgForm; + private String CHJL; + private String puttime; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • standType -> stand_type
  • + *
  • country -> country
  • + *
  • standSort -> stand_sort
  • + *
  • standNumber -> stand_number
  • + *
  • standYear -> stand_year
  • + *
  • standName -> stand_name
  • + *
  • standEnName -> stand_en_name
  • + *
  • standState -> stand_state
  • + *
  • standNature -> stand_nature
  • + *
  • issueTime -> issue_time
  • + *
  • putTime -> put_time
  • + *
  • synopsis -> synopsis
  • + *
  • replaceStandNum -> replace_stand_num
  • + *
  • replacedStandNum -> replaced_stand_num
  • + *
  • creationUser -> creation_user
  • + *
  • validFlag -> valid_flag
  • + *
  • creationTime -> creation_time
  • + *
  • modifyTime -> modify_time
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "id": return "id"; + case "standType": return "stand_type"; + case "country": return "country"; + case "standSort": return "stand_sort"; + case "standNumber": return "stand_number"; + case "standYear": return "stand_year"; + case "standName": return "stand_name"; + case "standEnName": return "stand_en_name"; + case "standState": return "stand_state"; + case "standNature": return "stand_nature"; + case "issueTime": return "issue_time"; + case "putTime": return "put_time"; + case "synopsis": return "synopsis"; + case "replaceStandNum": return "replace_stand_num"; + case "replacedStandNum": return "replaced_stand_num"; + case "creationUser": return "creation_user"; + case "validFlag": return "valid_flag"; + case "creationTime": return "creation_time"; + case "modifyTime": return "modify_time"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • id -> id
  • + *
  • stand_type -> standType
  • + *
  • country -> country
  • + *
  • stand_sort -> standSort
  • + *
  • stand_number -> standNumber
  • + *
  • stand_year -> standYear
  • + *
  • stand_name -> standName
  • + *
  • stand_en_name -> standEnName
  • + *
  • stand_state -> standState
  • + *
  • stand_nature -> standNature
  • + *
  • issue_time -> issueTime
  • + *
  • put_time -> putTime
  • + *
  • synopsis -> synopsis
  • + *
  • replace_stand_num -> replaceStandNum
  • + *
  • replaced_stand_num -> replacedStandNum
  • + *
  • creation_user -> creationUser
  • + *
  • valid_flag -> validFlag
  • + *
  • creation_time -> creationTime
  • + *
  • modify_time -> modifyTime
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "id": return "id"; + case "stand_type": return "standType"; + case "country": return "country"; + case "stand_sort": return "standSort"; + case "stand_number": return "standNumber"; + case "stand_year": return "standYear"; + case "stand_name": return "standName"; + case "stand_en_name": return "standEnName"; + case "stand_state": return "standState"; + case "stand_nature": return "standNature"; + case "issue_time": return "issueTime"; + case "put_time": return "putTime"; + case "synopsis": return "synopsis"; + case "replace_stand_num": return "replaceStandNum"; + case "replaced_stand_num": return "replacedStandNum"; + case "creation_user": return "creationUser"; + case "valid_flag": return "validFlag"; + case "creation_time": return "creationTime"; + case "modify_time": return "modifyTime"; + default: return null; + } + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getStandType() { + return this.standType; + } + + /** **/ + public void setStandType(String standType) { + this.standType = standType; + } + + /** **/ + public String getCountry() { + return this.country; + } + + /** **/ + public void setCountry(String country) { + this.country = country; + } + + /** **/ + public String getStandSort() { + return this.standSort; + } + + /** **/ + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + /** **/ + public String getStandNumber() { + return this.standNumber; + } + + /** **/ + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + /** **/ + public String getStandYear() { + return this.standYear; + } + + /** **/ + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + /** **/ + public String getStandName() { + return this.standName; + } + + /** **/ + public void setStandName(String standName) { + this.standName = standName; + } + + /** **/ + public String getStandEnName() { + return this.standEnName; + } + + /** **/ + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + /** **/ + public String getStandState() { + return this.standState; + } + + /** **/ + public void setStandState(String standState) { + this.standState = standState; + } + + /** **/ + public String getStandNature() { + return this.standNature; + } + + /** **/ + public void setStandNature(String standNature) { + this.standNature = standNature; + } + + /** **/ + public String getIssueTime() { + return this.issueTime; + } + + /** **/ + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + /** **/ + public Date getPutTime() { + return this.putTime; + } + + /** **/ + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getReplaceStandNum() { + return replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + /** **/ + public String getReplacedStandNum() { + return this.replacedStandNum; + } + + /** **/ + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + /** **/ + public String getCreationUser() { + return this.creationUser; + } + + /** **/ + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + /** **/ + public String getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public String getCountryShow() { + return countryShow; + } + + public void setCountryShow(String countryShow) { + this.countryShow = countryShow; + } + + public String getStandSortShow() { + return standSortShow; + } + + public void setStandSortShow(String standSortShow) { + this.standSortShow = standSortShow; + } + + public String getStandStateShow() { + return standStateShow; + } + + public void setStandStateShow(String standStateShow) { + this.standStateShow = standStateShow; + } + + public String getStandNatureShow() { + return standNatureShow; + } + + public void setStandNatureShow(String standNatureShow) { + this.standNatureShow = standNatureShow; + } + + public String getSychronId() { + return sychronId; + } + + public void setSychronId(String sychronId) { + this.sychronId = sychronId; + } + + public List getDicTypeList() { + return dicTypeList; + } + + public void setDicTypeList(List dicTypeList) { + this.dicTypeList = dicTypeList; + } + + public Map getAttrInfoMap() { + return attrInfoMap; + } + + public void setAttrInfoMap(Map attrInfoMap) { + this.attrInfoMap = attrInfoMap; + } + + public String getSarStandAttrEOStr() { + return sarStandAttrEOStr; + } + + public void setSarStandAttrEOStr(String sarStandAttrEOStr) { + this.sarStandAttrEOStr = sarStandAttrEOStr; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public int getUpReplaceNumFlag() { + return upReplaceNumFlag; + } + + public void setUpReplaceNumFlag(int upReplaceNumFlag) { + this.upReplaceNumFlag = upReplaceNumFlag; + } + + public int getUpNumFlag() { + return upNumFlag; + } + + public void setUpNumFlag(int upNumFlag) { + this.upNumFlag = upNumFlag; + } + + public List getAttrInfoList() { + return attrInfoList; + } + + public void setAttrInfoList(List attrInfoList) { + this.attrInfoList = attrInfoList; + } + + public String getFileIds() { + return fileIds; + } + + public void setFileIds(String fileIds) { + this.fileIds = fileIds; + } + + public Date getNewCarPutTime() { + return newCarPutTime; + } + + public void setNewCarPutTime(Date newCarPutTime) { + this.newCarPutTime = newCarPutTime; + } + + public String getIsRelateAccess() { + return isRelateAccess; + } + + public void setIsRelateAccess(String isRelateAccess) { + this.isRelateAccess = isRelateAccess; + } + + public List getItemsList() { + return itemsList; + } + + public void setItemsList(List itemsList) { + this.itemsList = itemsList; + } + + public String getCiteStand() { + return citeStand; + } + + public void setCiteStand(String citeStand) { + this.citeStand = citeStand; + } + + public String getCitedStand() { + return citedStand; + } + + public void setCitedStand(String citedStand) { + this.citedStand = citedStand; + } + + public String getAccessCountry() { + return accessCountry; + } + + public void setAccessCountry(String accessCountry) { + this.accessCountry = accessCountry; + } + + public String getProcessNum() { + return processNum; + } + + public void setProcessNum(String processNum) { + this.processNum = processNum; + } + + public String getTextStatus() { + return textStatus; + } + + public void setTextStatus(String textStatus) { + this.textStatus = textStatus; + } + + public String getMenuType() { + return menuType; + } + + public void setMenuType(String menuType) { + this.menuType = menuType; + } + + public String getRelateStand() { + return relateStand; + } + + public void setRelateStand(String relateStand) { + this.relateStand = relateStand; + } + + public String getAllPutTime() { + return allPutTime; + } + + public void setAllPutTime(String allPutTime) { + this.allPutTime = allPutTime; + } + + public String getJspg() { + return jspg; + } + + public void setJspg(String jspg) { + this.jspg = jspg; + } + + public SarCompStatusInfoEO getPgForm() { + return pgForm; + } + + public void setPgForm(SarCompStatusInfoEO pgForm) { + this.pgForm = pgForm; + } + + public String getCHJL() { + return CHJL; + } + + public void setCHJL(String CHJL) { + this.CHJL = CHJL; + } + + public String getPuttime() { + return puttime; + } + + public void setPuttime(String puttime) { + this.puttime = puttime; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandardsInfoEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandardsInfoEOPage.java new file mode 100644 index 00000000..3a5bb959 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SarStandardsInfoEOPage.java @@ -0,0 +1,651 @@ +package com.adc.da.slrs.standardSplit.entity; + +import com.adc.da.base.page.BasePage; +import com.adc.da.slrs.sarStandardsInfo.entity.SarAdvanceSearchVO; + +import java.util.List; +import java.util.Map; + +/** + * 功能:SAR_STANDARDS_INFO SarStandardsInfoEOPage
    + * 作者:code generator
    + * 日期: 2020-08-19
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class SarStandardsInfoEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String standType; + private String standTypeOperator = "="; + private String country; + private String countryOperator = "="; + private String standSort; + private String standSortOperator = "="; + private String standNumber; + private String standNumberOperator = "="; + private String standYear; + private String standYearOperator = "="; + private String standName; + private String standNameOperator = "="; + private String standEnName; + private String standEnNameOperator = "="; + private String standState; + private String standStateOperator = "="; + private String standNature; + private String standNatureOperator = "="; + private String issueTime; + private String issueTime1; + private String issueTime2; + private String issueTimeOperator = "="; + private String putTime; + private String putTime1; + private String putTime2; + private String putTimeOperator = "="; + private String synopsis; + private String synopsisOperator = "="; + private String replaceStandNum; + private String replaceStandNumOperator = "="; + private String replacedStandNum; + private String replacedStandNumOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String isRelateAccess; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private List menuRoleList; //有权限的目录 + private String[] idlist; //多个id + private String menuId; //目录ID + private String rootMenuId; + private String attrSearchStr; + private String advanceSearchStr; + private Map attrSearchMap; //属性表数据条件查询 + // 树结构增加搜索条件 + private String collectMenuId; + private String labelMenuId; + private String applyArctic; + private String ids; + private List replaceStandNumList; + private List menuAllChildrenIdList; + private List advanceSearchVOList; + private String advanceSearchVOStr; + private String proType; // 请求的流程类型 + private String userId; + private String productId; + private Integer nowOrder; + private Integer nowOrderBy; + private String orderBy1 = "SAR_STANDARDS_INFO.issue_time"; + private String order1 = "desc"; + private String isNumYear; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getStandType() { + return this.standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } + + public String getStandTypeOperator() { + return this.standTypeOperator; + } + + public void setStandTypeOperator(String standTypeOperator) { + this.standTypeOperator = standTypeOperator; + } + + public String getCountry() { + return this.country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getCountryOperator() { + return this.countryOperator; + } + + public void setCountryOperator(String countryOperator) { + this.countryOperator = countryOperator; + } + + public String getStandSort() { + return this.standSort; + } + + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + public String getStandSortOperator() { + return this.standSortOperator; + } + + public void setStandSortOperator(String standSortOperator) { + this.standSortOperator = standSortOperator; + } + + public String getStandNumber() { + return this.standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandNumberOperator() { + return this.standNumberOperator; + } + + public void setStandNumberOperator(String standNumberOperator) { + this.standNumberOperator = standNumberOperator; + } + + public String getStandYear() { + return this.standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public String getStandYearOperator() { + return this.standYearOperator; + } + + public void setStandYearOperator(String standYearOperator) { + this.standYearOperator = standYearOperator; + } + + public String getStandName() { + return this.standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getStandNameOperator() { + return this.standNameOperator; + } + + public void setStandNameOperator(String standNameOperator) { + this.standNameOperator = standNameOperator; + } + + public String getStandEnName() { + return this.standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getStandEnNameOperator() { + return this.standEnNameOperator; + } + + public void setStandEnNameOperator(String standEnNameOperator) { + this.standEnNameOperator = standEnNameOperator; + } + + public String getStandState() { + return this.standState; + } + + public void setStandState(String standState) { + this.standState = standState; + } + + public String getStandStateOperator() { + return this.standStateOperator; + } + + public void setStandStateOperator(String standStateOperator) { + this.standStateOperator = standStateOperator; + } + + public String getStandNature() { + return this.standNature; + } + + public void setStandNature(String standNature) { + this.standNature = standNature; + } + + public String getStandNatureOperator() { + return this.standNatureOperator; + } + + public void setStandNatureOperator(String standNatureOperator) { + this.standNatureOperator = standNatureOperator; + } + + public String getIssueTime() { + return this.issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getIssueTime1() { + return this.issueTime1; + } + + public void setIssueTime1(String issueTime1) { + this.issueTime1 = issueTime1; + } + + public String getIssueTime2() { + return this.issueTime2; + } + + public void setIssueTime2(String issueTime2) { + this.issueTime2 = issueTime2; + } + + public String getIssueTimeOperator() { + return this.issueTimeOperator; + } + + public void setIssueTimeOperator(String issueTimeOperator) { + this.issueTimeOperator = issueTimeOperator; + } + + public String getPutTime() { + return this.putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } + + public String getPutTime1() { + return this.putTime1; + } + + public void setPutTime1(String putTime1) { + this.putTime1 = putTime1; + } + + public String getPutTime2() { + return this.putTime2; + } + + public void setPutTime2(String putTime2) { + this.putTime2 = putTime2; + } + + public String getPutTimeOperator() { + return this.putTimeOperator; + } + + public void setPutTimeOperator(String putTimeOperator) { + this.putTimeOperator = putTimeOperator; + } + + public String getSynopsis() { + return this.synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getSynopsisOperator() { + return this.synopsisOperator; + } + + public void setSynopsisOperator(String synopsisOperator) { + this.synopsisOperator = synopsisOperator; + } + + public String getReplaceStandNum() { + return this.replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + public String getReplaceStandNumOperator() { + return this.replaceStandNumOperator; + } + + public void setReplaceStandNumOperator(String replaceStandNumOperator) { + this.replaceStandNumOperator = replaceStandNumOperator; + } + + public String getReplacedStandNum() { + return this.replacedStandNum; + } + + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + public String getReplacedStandNumOperator() { + return this.replacedStandNumOperator; + } + + public void setReplacedStandNumOperator(String replacedStandNumOperator) { + this.replacedStandNumOperator = replacedStandNumOperator; + } + + public String getCreationUser() { + return this.creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getCreationUserOperator() { + return this.creationUserOperator; + } + + public void setCreationUserOperator(String creationUserOperator) { + this.creationUserOperator = creationUserOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public List getMenuRoleList() { + return menuRoleList; + } + + public void setMenuRoleList(List menuRoleList) { + this.menuRoleList = menuRoleList; + } + + public String[] getIdlist() { + return idlist; + } + + public void setIdlist(String[] idlist) { + this.idlist = idlist; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getRootMenuId() { + return rootMenuId; + } + + public void setRootMenuId(String rootMenuId) { + this.rootMenuId = rootMenuId; + } + + public Map getAttrSearchMap() { + return attrSearchMap; + } + + public void setAttrSearchMap(Map attrSearchMap) { + this.attrSearchMap = attrSearchMap; + } + + public String getCollectMenuId() { + return collectMenuId; + } + + public void setCollectMenuId(String collectMenuId) { + this.collectMenuId = collectMenuId; + } + + public String getLabelMenuId() { + return labelMenuId; + } + + public void setLabelMenuId(String labelMenuId) { + this.labelMenuId = labelMenuId; + } + + public String getAttrSearchStr() { + return attrSearchStr; + } + + public void setAttrSearchStr(String attrSearchStr) { + this.attrSearchStr = attrSearchStr; + } + + public String getApplyArctic() { + return applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public List getReplaceStandNumList() { + return replaceStandNumList; + } + + public void setReplaceStandNumList(List replaceStandNumList) { + this.replaceStandNumList = replaceStandNumList; + } + + public String getIsRelateAccess() { + return isRelateAccess; + } + + public void setIsRelateAccess(String isRelateAccess) { + this.isRelateAccess = isRelateAccess; + } + + public String getIds() { + return ids; + } + + public void setIds(String ids) { + this.ids = ids; + } + + public String getAdvanceSearchStr() { + return advanceSearchStr; + } + + public void setAdvanceSearchStr(String advanceSearchStr) { + this.advanceSearchStr = advanceSearchStr; + } + + public List getAdvanceSearchVOList() { + return advanceSearchVOList; + } + + public void setAdvanceSearchVOList(List advanceSearchVOList) { + this.advanceSearchVOList = advanceSearchVOList; + } + + public String getAdvanceSearchVOStr() { + return advanceSearchVOStr; + } + + public void setAdvanceSearchVOStr(String advanceSearchVOStr) { + this.advanceSearchVOStr = advanceSearchVOStr; + } + + public List getMenuAllChildrenIdList() { + return menuAllChildrenIdList; + } + + public void setMenuAllChildrenIdList(List menuAllChildrenIdList) { + this.menuAllChildrenIdList = menuAllChildrenIdList; + } + + public String getProType() { + return proType; + } + + public void setProType(String proType) { + this.proType = proType; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getProductId() { + return productId; + } + + public void setProductId(String productId) { + this.productId = productId; + } + + + public String getOrderBy1() { + return orderBy1; + } + + public void setOrderBy1(String orderBy1) { + this.orderBy1 = orderBy1; + } + + + public String getOrder1() { + return order1; + } + + public void setOrder1(String order1) { + this.order1 = order1; + } + + public Integer getNowOrder() { + return nowOrder; + } + + public void setNowOrder(Integer nowOrder) { + this.nowOrder = nowOrder; + } + + + public void setNowOrderBy(Integer nowOrderBy) { + this.nowOrderBy = nowOrderBy; + } + + public Integer getNowOrderBy() { + return nowOrderBy; + } + + public String getIsNumYear() { + return isNumYear; + } + + public void setIsNumYear(String isNumYear) { + this.isNumYear = isNumYear; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SplitFont.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SplitFont.java new file mode 100644 index 00000000..6d032a21 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/entity/SplitFont.java @@ -0,0 +1,9 @@ +package com.adc.da.slrs.standardSplit.entity; + +import lombok.Data; + +@Data +public class SplitFont { + Integer startIndex; + Integer endIndex; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/MenuService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/MenuService.java new file mode 100644 index 00000000..cd7f453c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/MenuService.java @@ -0,0 +1,4 @@ +package com.adc.da.slrs.standardSplit.service; + +public interface MenuService { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitInfoEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitInfoEOService.java new file mode 100644 index 00000000..e99a16d7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitInfoEOService.java @@ -0,0 +1,36 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.base.page.BasePage; +import com.adc.da.person.entity.PersonMsgEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEOPage; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; + +import java.util.List; + +public interface SarFileSplitInfoEOService { + + List queryByPage(BasePage page) throws Exception; + + List queryByList(BasePage page) throws Exception; + + SarFileSplitInfoEO selectByPrimaryKey(String id) throws Exception; + + int insertSelective(SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception; + + int updateByPrimaryKeySelective(SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception; + + int deleteByPrimaryKey(String id) throws Exception; + + int fileAplit(SarFileSplitInfoEO sarFileSplitInfoEO); + + List queryByPageOwn(SarFileSplitInfoEOPage page); + + int deleteByIds(String ids); + + PersonMsgEO updateNew(PersonMsgEO val) throws Exception; + + String getClauseBySplitId(String standNum, String fileType); + + List querySame (SarFileSplitInfoEO sarFileSplitInfoEO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsEOService.java new file mode 100644 index 00000000..be30efc7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsEOService.java @@ -0,0 +1,51 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.common.SplitTableInfo; +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardsInfoEO; +import com.adc.da.slrs.standardSplit.dto.*; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEOPage; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsValEO; +import com.adc.da.util.http.ResponseMessage; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +public interface SarFileSplitItemsEOService { + + Map getByPage(SarFileSplitItemsEOPage page); + + List queryByList(SarFileSplitItemsEOPage page); + + SarFileSplitItemsEO selectByPrimaryKey(String id); + + int insertSelective(SarFileSplitItemsEO sarFileSplitItemsEO); + + int updateItemContent(SarFileSplitItemsEO sarFileSplitItemsEO); + + int deleteByPrimaryKey(String id); + + int batchDeleteItems(String ids,String editFlag); + + boolean judgeContaintChilds(String ids); + + List queryByOrdersForExport(SarFileSplitItemsEOPage page); + + List combineItemValInfo(List getValList,List + allTableList,List allImgList,SarFileSplitItemsEOPage page); + + void downLoadImgList(List allImgList,String fileNowPath) throws IOException; + + void downLoadFileList(List attfileEo, String fileNowPath) throws IOException ; + + ResponseMessage importSplitItems(List datasUpdate, + String unzipfilepath, SarFileSplitInfoEO sarFileSplitInfoEO, + List getSheetTableList); + + void combineItems(String ids); + + List queryByList2(SarFileSplitItemsEOPage page); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsParamsEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsParamsEOService.java new file mode 100644 index 00000000..414a4daa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsParamsEOService.java @@ -0,0 +1,11 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsParamsEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsParamsEOPage; + +import java.util.List; + +public interface SarFileSplitItemsParamsEOService { + + List queryByList(SarFileSplitItemsParamsEOPage paramPage); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsTableEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsTableEOService.java new file mode 100644 index 00000000..ddb59151 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsTableEOService.java @@ -0,0 +1,4 @@ +package com.adc.da.slrs.standardSplit.service; + +public interface SarFileSplitItemsTableEOService { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsValEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsValEOService.java new file mode 100644 index 00000000..553aac1b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitItemsValEOService.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsValEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsValEOPage; + +import java.util.List; + +public interface SarFileSplitItemsValEOService { + + List queryByList(SarFileSplitItemsValEOPage valEOPage); + + List queryByPage(SarFileSplitItemsValEOPage page); + + SarFileSplitItemsValEO selectByPrimaryKey(String id); + + void insertSelective(SarFileSplitItemsValEO sarFileSplitItemsValEO); + + void updateByPrimaryKeySelective(SarFileSplitItemsValEO sarFileSplitItemsValEO); + + void deleteByPrimaryKey(String id); + + List getSplitItemsByMenu(String menuId,String infoId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitMenuEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitMenuEOService.java new file mode 100644 index 00000000..193d4cbe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarFileSplitMenuEOService.java @@ -0,0 +1,35 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.base.page.BasePage; +import com.adc.da.slrs.standardSplit.entity.DrageMenuEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitMenuEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitMenuEOPage; +import java.util.List; + +public interface SarFileSplitMenuEOService { + + List queryByPage(BasePage page); + + List queryByList(SarFileSplitMenuEOPage page); + + SarFileSplitMenuEO selectByPrimaryKey(String id); + + int addMenu(SarFileSplitMenuEO sarFileSplitMenuEO); + + int updateByPrimaryKeySelective(SarFileSplitMenuEO sarFileSplitMenuEO); + + void deleteMenu(String id); + + int dragMenu(DrageMenuEO drageMenuEO); + + boolean judgequeryMenuByPid(SarFileSplitMenuEO sarMenuEO) throws Exception; + + int copyMenu (SarFileSplitMenuEO sarMenuEO); + + int copyMenuNotChildren(SarFileSplitItemsEO sarFileSplitItemsEO); + + String addMenuForImport(SarFileSplitMenuEO sarFileSplitMenuEO); + + List getChildData(String id); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarItemsCompareHisEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarItemsCompareHisEOService.java new file mode 100644 index 00000000..56a96786 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarItemsCompareHisEOService.java @@ -0,0 +1,10 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.slrs.standardSplit.entity.SarItemsCompareHisEO; + +public interface SarItemsCompareHisEOService { + + int insertSelective(SarItemsCompareHisEO sarItemsCompareHisEO); + + void deleteByStandHisId(String id); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarLawsInfoEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarLawsInfoEOService.java new file mode 100644 index 00000000..5f1618f1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarLawsInfoEOService.java @@ -0,0 +1,10 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.slrs.standardSplit.entity.SarLawsInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarLawsInfoEOPage; +import java.util.List; + +public interface SarLawsInfoEOService { + + List getLawsInfoPage(SarLawsInfoEOPage page) throws Exception; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandAttrDetailsEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandAttrDetailsEOService.java new file mode 100644 index 00000000..fa9d59ed --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandAttrDetailsEOService.java @@ -0,0 +1,10 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.sys.common.SelectionResult; + +import java.util.List; + +public interface SarStandAttrDetailsEOService { + + List selectFileFieldForSel(String attrField); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandCompareHisEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandCompareHisEOService.java new file mode 100644 index 00000000..1b4c8683 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandCompareHisEOService.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.slrs.standardSplit.entity.SarStandCompareHisEO; +import com.adc.da.slrs.standardSplit.entity.SarStandCompareHisEOPage; +import java.util.List; +import java.util.Map; + +public interface SarStandCompareHisEOService { + + List standCompareHisPage(SarStandCompareHisEOPage page); + + List queryByList(SarStandCompareHisEOPage page); + + SarStandCompareHisEO selectByPrimaryKey(String id); + + int insertSelective(SarStandCompareHisEO sarStandCompareHisEO); + + int updateByPrimaryKeySelective(SarStandCompareHisEO sarStandCompareHisEO); + + int deleteByPrimaryKey(String id); + + Map clauseComparison(String oldItemId, String newItemId, String standHisId); + + Map clauseComparisonEvent(String oldItemId, String newItemId, String standHisId,String flag); + + Map fullTextComparison(String leftStandard, String rightStandard,String id) throws Exception; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandFileEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandFileEOService.java new file mode 100644 index 00000000..7c6f42e4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandFileEOService.java @@ -0,0 +1,45 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.base.page.BasePage; +import com.adc.da.slrs.standardSplit.entity.SarStandFileEO; +import com.adc.da.slrs.standardSplit.entity.SarStandFileEOPage; +import java.util.List; + +public interface SarStandFileEOService { + + List getStandFileListByPage(SarStandFileEOPage stand); + + Integer getStandFileListByPageCount(SarStandFileEOPage stand); + + List queryByPage(SarStandFileEOPage page); + + List queryByList(SarStandFileEOPage page); + + SarStandFileEO selectByPrimaryKey(String id) throws Exception; + + int insertSelective(SarStandFileEO sarStandFileEO) throws Exception; + + int updateByPrimaryKeySelective(SarStandFileEO sarStandFileEO) throws Exception; + + int deleteByPrimaryKey(String id) throws Exception; + + List selectFileByAttId(String attId) throws Exception; + + /** + * 查询转换后文件的文本信息 + * @param standId + * @return + */ + List selectFileByStandId(String standId); + + List selectFileByStandIdOCR(String standId,String type) throws Exception; + + /** + * 查询转原始文件的信息 + * @param standId + * @return + */ + List querySourceFileInfo(String standId); + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandItemsCompareHisEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandItemsCompareHisEOService.java new file mode 100644 index 00000000..d49fe7b7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandItemsCompareHisEOService.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.slrs.standardSplit.entity.SarStandItemsCompareHisEO; +import com.adc.da.slrs.standardSplit.entity.SarStandItemsCompareHisEOPage; +import java.util.List; + +public interface SarStandItemsCompareHisEOService { + + int insertSelective(SarStandItemsCompareHisEO var); + + void deleteByStandHisId(String id); + + List queryByPage(SarStandItemsCompareHisEOPage page); + + List queryByList(SarStandItemsCompareHisEOPage page); + + SarStandItemsCompareHisEO selectByPrimaryKey(String id); + + void updateByPrimaryKeySelective(SarStandItemsCompareHisEO page); + + void deleteByPrimaryKey(String id); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandardsInfoEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandardsInfoEOService.java new file mode 100644 index 00000000..3c6bb4b6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/SarStandardsInfoEOService.java @@ -0,0 +1,10 @@ +package com.adc.da.slrs.standardSplit.service; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardsInfoEO; + +import java.util.List; + +public interface SarStandardsInfoEOService { + + List selectStandardsByStandnumber(String standNum, String val); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/MenuServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/MenuServiceImpl.java new file mode 100644 index 00000000..52fea74f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/MenuServiceImpl.java @@ -0,0 +1,15 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.standardSplit.service.MenuService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class MenuServiceImpl implements MenuService { + private static final Logger logger = LoggerFactory.getLogger(MenuServiceImpl.class); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java new file mode 100644 index 00000000..811b2a52 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitInfoEOServiceImpl.java @@ -0,0 +1,783 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.person.entity.PersonMsgEO; +import com.adc.da.slrs.sarStandAttrDetails.service.ISarStandAttrDetailsService; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.standardSplit.dao.*; +import com.adc.da.slrs.standardSplit.service.SarLawsInfoEOService; +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.base.page.BasePage; +import com.adc.da.common.ReadWordTable; +import com.adc.da.slrs.standardSplit.entity.*; +import com.adc.da.slrs.standardSplit.service.SarFileSplitInfoEOService; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.utils.util.InitStandAttrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.poi.xwpf.usermodel.*; +import org.apache.xmlbeans.XmlCursor; +import org.apache.xmlbeans.XmlObject; +import org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObject; +import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture; +import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTAnchor; +import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLevelText; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import com.adc.da.common.SplitFilePragraTypeEnum; + +import java.io.*; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.adc.da.person.dao.PersonShareEODao; +import com.adc.da.person.dao.PersonCollectEODao; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +@Service +public class SarFileSplitInfoEOServiceImpl implements SarFileSplitInfoEOService { + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitInfoEOServiceImpl.class); + + @Autowired + private ISarStandAttrDetailsService sarStandAttrDetailsEOService; + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private IAttFileEOService attFileEOService; + @Value("${file.path}") + private String filePath;//文件存储路径 + @Value("${file.split.path}") + private String splitFilePath;//拆分图片存储路径 + /** + * 文件下载路径 + */ + @Value("${file.downloadUrl}") + private String downloadUrl; + @Autowired + private PersonShareEODao personShareEODao; + @Autowired + private SarFileSplitInfoEODao sarFileSplitInfoEODao; + @Autowired + private SarFileSplitMenuEODao sarFileSplitMenuEODao; + @Autowired + private SarFileSplitItemsEODao sarFileSplitItemsEODao; + @Autowired + private SarFileSplitItemsValEODao sarFileSplitItemsValEODao; + @Autowired + private SarLawsInfoEOService sarLawsInfoEOService; + @Autowired + private SarFileSplitItemsTableEODao sarFileSplitItemsTableEODao; + @Autowired + private PersonCollectEODao personCollectEODao; + @Autowired + private SarFileSplitItemsParamsEODao sarFileSplitItemsParamsEODao; + @Autowired + private SarFileSplitInfoEODao dao; + + @Override + public List queryByPage(BasePage page) throws Exception{ + return sarFileSplitInfoEODao.queryByPage(page); + } + + @Override + public List queryByList(BasePage page) throws Exception{ + return sarFileSplitInfoEODao.queryByList(page); + } + + @Override + public SarFileSplitInfoEO selectByPrimaryKey(String id) throws Exception{ + return sarFileSplitInfoEODao.selectByPrimaryKey(id); + } + + @Override + public int insertSelective(SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception{ + return sarFileSplitInfoEODao.insertSelective(sarFileSplitInfoEO); + } + + @Override + public int updateByPrimaryKeySelective(SarFileSplitInfoEO sarFileSplitInfoEO) throws Exception{ + return sarFileSplitInfoEODao.updateByPrimaryKeySelective(sarFileSplitInfoEO); + } + + @Override + public int deleteByPrimaryKey(String id) throws Exception{ + return sarFileSplitInfoEODao.deleteByPrimaryKey(id); + } + + @Override + @Transactional + public int fileAplit(SarFileSplitInfoEO sarFileSplitInfoEO) { + + //用来往标准分解单里添加数据 + List standList = new ArrayList<>(); + + SarStandardsInfo sarStandardsInfo=sarStandardsInfoService.getById(sarFileSplitInfoEO.getStandId()); + // 拆分文件主表中插入数据 + sarFileSplitInfoEO.setStandName(sarStandardsInfo.getStandName()); + sarFileSplitInfoEO.setStandNameSplit(sarStandardsInfo.getStandName()); + sarFileSplitInfoEO.setStandNumSplit(sarStandardsInfo.getStandSort()+" "+sarStandardsInfo.getStandNumber()+"-"+sarStandardsInfo.getStandYear()); + sarFileSplitInfoEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitInfoEO.setValidFlag(0); + sarFileSplitInfoEO.setCreationTime(new Date()); + sarFileSplitInfoEO.setCreationUser(LoginUserUtil.getUserId()); + sarFileSplitInfoEO.setModifyTime(new Date()); + sarFileSplitInfoEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitInfoEODao.insertSelective(sarFileSplitInfoEO); + + // 拆分文件条款表中最终插入数据 + List messageList = new ArrayList<>(); + int messageNumber = 0; + // 拆分文件目录表中最终插入数据 + List treeList = new ArrayList<>(); + // 拆分文件条款详情表中最终插入数据 + List itemValList = new ArrayList<>(); + Long treeListDisplay = 1L; + + String generalCatalogueId = UUIDUtils.randomUUID20(); + SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"总目录","",sarFileSplitInfoEO.getId(),treeListDisplay++,""); + treeList.add(documentTreeEO); + + List nowStart = new ArrayList<>(); + if (sarFileSplitInfoEO.getStartNumber()<4){ + nowStart.add("4"); + } else { + nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); + } + try { + AttFileEO attFileEO = attFileEOService.getFileInfo(sarFileSplitInfoEO.getAttId()); + //String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); + String readFilePath = filePath + attFileEO.getFilePath() + attFileEO.getFileName(); + + InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 + XWPFDocument doc = new XWPFDocument(is); + + Pattern ptest = Pattern.compile("^1范围"); + Matcher matcher; + + // 记录拆分后的每一段文字 + List elements = doc.getBodyElements(); + // 记录word自动生成的编号数据 + Map numberMap = new HashMap(); + boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 + for (IBodyElement element : elements) { + // 段落 + if (element instanceof XWPFParagraph) { + XWPFParagraph p = (XWPFParagraph)element; + + // 处理段落生成编号不识别问题 + String paragraphString = p.getText(); + if (StringUtils.isNotBlank(paragraphString)) { + paragraphString = paragraphString.replace((char) 12288, ' '); + paragraphString = paragraphString.trim(); + } + if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { + String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); + if (numberMap.containsKey(numberParent)){ + Integer numbernow =(Integer)numberMap.get(numberParent)+1; + if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){ + numberMap.put(numberParent,numbernow+1); + paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText(); + } else { + numberMap.put(numberParent,numbernow); + paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText(); + } + } else { + numberMap.put(numberParent,1); + paragraphString = numberParent+".1"+ p.getText(); + } + } + if (messageNumber == 0) { + ptest= Pattern.compile("^1\\s{0,3}范围"); + matcher=ptest.matcher(paragraphString); + while(matcher.find()){ + List clauseContent = new ArrayList<>(); + SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),"1","范围",clauseContent); + SarFileSplitMenuEO documentTreeEO1 = new SarFileSplitMenuEO(UUIDUtils.randomUUID20(),message.getItemsNum(),generalCatalogueId,sarFileSplitInfoEO.getId(),treeListDisplay++,"范围"); + message.setMenuId(documentTreeEO1.getId()); + if(sarFileSplitInfoEO.getStartNumber()<=1 && sarFileSplitInfoEO.getStopNumber()>=1){ + messageList.add(message); + treeList.add(documentTreeEO1); + menuCanAdd = true; + } else { + menuCanAdd = false; + } + messageNumber++; + } + } + else if (messageNumber == 1){ + ptest= Pattern.compile("^2\\s{0,3}规范性引用文件"); + matcher=ptest.matcher(paragraphString); + if(matcher.find()){ + List clauseContent = new ArrayList<>(); + SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),"2","规范性引用文件",clauseContent); + SarFileSplitMenuEO documentTreeEO1 = new SarFileSplitMenuEO(UUIDUtils.randomUUID20(),message.getItemsNum(),generalCatalogueId,sarFileSplitInfoEO.getId(),treeListDisplay++,"规范性引用文件"); + message.setMenuId(documentTreeEO1.getId()); + if(sarFileSplitInfoEO.getStartNumber()<=2 && sarFileSplitInfoEO.getStopNumber()>=2){ + messageList.add(message); + treeList.add(documentTreeEO1); + menuCanAdd = true; + } else { + menuCanAdd = false; + } + messageNumber++; + } else if(menuCanAdd){ + List imageBundleList = readImageInParagraph((XWPFParagraph)p); + if(CollectionUtils.isNotEmpty(imageBundleList)) { + addItermsConditionsImage(messageList.get(messageList.size()-1),itemValList, p,imageBundleList); + } else { + addItermsConditionsText(messageList.get(messageList.size()-1),itemValList, p,0); + } + } + } + else if (messageNumber == 2){ + ptest= Pattern.compile("^3\\s{0,3}术语(和|与)定义"); + matcher=ptest.matcher(paragraphString); + if(matcher.find()){ + List clauseContent = new ArrayList<>(); + SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),"3","术语与定义",clauseContent); + SarFileSplitMenuEO documentTreeEO1 = new SarFileSplitMenuEO(UUIDUtils.randomUUID20(),message.getItemsNum(),generalCatalogueId,sarFileSplitInfoEO.getId(),treeListDisplay++,"术语与定义"); + message.setMenuId(documentTreeEO1.getId()); + if(sarFileSplitInfoEO.getStartNumber()<=3 && sarFileSplitInfoEO.getStopNumber()>=3){ + messageList.add(message); + treeList.add(documentTreeEO1); + menuCanAdd = true; + } else { + menuCanAdd = false; + } + messageNumber++; + } else if(menuCanAdd){ + List imageBundleList = readImageInParagraph((XWPFParagraph)p); + if(CollectionUtils.isNotEmpty(imageBundleList)) { + addItermsConditionsImage(messageList.get(messageList.size()-1),itemValList, p,imageBundleList); + } else { + addItermsConditionsText(messageList.get(messageList.size()-1),itemValList, p,0); + } + } + } else if (messageNumber >= 3) { + ptest = Pattern.compile("^[\\d.]*$"); + boolean hasGoIf = false; + for (int i=0;i10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); + List clauseContent = new ArrayList<>(); + clauseContent.add(paragraphString); + SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); + + String[] numberStr = nowStart.get(i).split("\\."); + if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()){ + menuCanAdd = false; + } else { + // 增加一条数据,需要在数结构中加一条数据 + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); + treeList.add(sarFileSplitMenuEO) ; + message.setMenuId(sarFileSplitMenuEO.getId()); + addItermsConditionsText(message,itemValList,p,nowStart.get(i).length()); + messageList.add(message); + nowStart = getNewNowStart(nowStart.get(i)); + menuCanAdd = true; + } + hasGoIf = true; + break; + } + } + if(!hasGoIf && menuCanAdd) { + // 判断是否是附录 + ptest= Pattern.compile("^附录\\s{0,3}[A-Z]{1}"); + matcher=ptest.matcher(paragraphString); + // 获取当前最后一项num + String appendixNum = messageList.get(messageList.size()-1).getItemsNum().split("\\.")[0]; + if(matcher.find() && !messageList.get(messageList.size()-1).getItemsNum().equals("附录") ){ + if ( Integer.valueOf(appendixNum)+1 <= sarFileSplitInfoEO.getStopNumber()) { + String itemName = "附录"; + List clauseContent = new ArrayList<>(); + clauseContent.add(paragraphString); + SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),"附录",itemName,clauseContent); + // 增加一条数据,需要在数结构中加一条数据 + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("附录",treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,""); + addItermsConditionsText(message,itemValList,p,0); + treeList.add(sarFileSplitMenuEO) ; + message.setMenuId(sarFileSplitMenuEO.getId()); + messageList.add(message); + nowStart = new ArrayList<>(); + } else { + break; + } + } else { + if (!p.getText().equals("") ){ + addItermsConditionsText(messageList.get(messageList.size()-1),itemValList,p,0); + } + List imageBundleList = readImageInParagraph((XWPFParagraph)p); + if(CollectionUtils.isNotEmpty(imageBundleList)) { + addItermsConditionsImage(messageList.get(messageList.size()-1),itemValList, p,imageBundleList); + } + } + } + // 判断是否直接跳出所有循环 + if (!menuCanAdd && messageList.size()>0) { + break; + } + } + } else if (element instanceof XWPFTable){ + if(messageList != null && !messageList.isEmpty()){ + addItermsConditionsOfTable(messageList.get(messageList.size()-1),itemValList,(XWPFTable)element); + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return -1; + } + if(treeList.size()>0 && messageList.size() > 0){ + //判断流程是否需要显示!! + List middle = new ArrayList<>(); + middle=messageList; + for (SarFileSplitItemsEO mis:messageList) { + mis.setWorkFlowShow("1"); + if (mis.getItemsNum().equals("2") || mis.getItemsNum().startsWith("2.") || mis.getItemsNum().equals("3") || mis.getItemsNum().startsWith("3.")){ + mis.setWorkFlowShow("0"); + } + else { + for (SarFileSplitItemsEO itemsEO : middle) { + if (itemsEO.getItemsNum().length() > mis.getItemsNum().length() && itemsEO.getItemsNum().contains(mis.getItemsNum())) { + if (itemsEO.getItemsNum().startsWith(mis.getItemsNum())) { + mis.setWorkFlowShow("0"); + break; + } + } + } + } + } + messageList.forEach(sarFileSplitItemsEO -> { + if (sarFileSplitItemsEO.getItemsNum().equals("1")){ + sarFileSplitItemsEO.setWorkFlowShow("1"); + } + }); + sarFileSplitMenuEODao.insertForeach(treeList); + sarFileSplitItemsEODao.insertForeach(messageList); + sarFileSplitItemsValEODao.insertForeach(itemValList); + + +// 2021/11/23改用标准详情手动插入 +// //用来往标准分解单插入数据 +// messageList.forEach(item -> { +// //new一个对象 +// SarStandItems standItems1 = new SarStandItems(); +// //standItems1里的这个值为messageList里的ItermsConditions +// standItems1.setId(UUIDUtils.randomUUID20()) +// .setFileType(sarFileSplitInfoEO.getFileType()) +// .setStandId(sarFileSplitInfoEO.getStandId()) +// .setItemsNum(item.getItemsNum()) +// .setItemsName(item.getItemsName()) +// .setTermsConditions(item.getItermsConditions()) +// .setEditFlag(item.getEditFlag()); +// +// standList.add(standItems1); +// }); +// sarFileSplitItemsEODao.insertStandSplitForeach(standList); + + + } else { + return -1; + } + return treeList.size(); + } + + private SarFileSplitItemsEO getSarFileSplitItemsEO(String infoId,String itemsNum,String itemsName,List itemsCondi) { + SarFileSplitItemsEO sarFileSplitItemsEO = new SarFileSplitItemsEO(); + sarFileSplitItemsEO.setInfoId(infoId); + sarFileSplitItemsEO.setItemsNum(itemsNum); + sarFileSplitItemsEO.setItemsName(itemsName); + sarFileSplitItemsEO.setItemsCondi(itemsCondi); + sarFileSplitItemsEO.setItermsConditions(""); + sarFileSplitItemsEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsEO.setValidFlag(0); + sarFileSplitItemsEO.setCreationTime(new Date()); + sarFileSplitItemsEO.setCreationUser(LoginUserUtil.getUserId()); + sarFileSplitItemsEO.setModifyTime(new Date()); + sarFileSplitItemsEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitItemsEO.setEditFlag(UUIDUtils.randomUUID(32)); + return sarFileSplitItemsEO; + } + + //获取某一个段落中的所有图片索引 + private List readImageInParagraph(XWPFParagraph paragraph) { + //图片索引List + List imageBundleList = new ArrayList(); + + //段落中所有XWPFRun + List runList = paragraph.getRuns(); + for (XWPFRun run : runList) { + //XWPFRun是POI对xml元素解析后生成的自己的属性,无法通过xml解析,需要先转化成CTR + CTR ctr = run.getCTR(); + //对子元素进行遍历 + XmlCursor c = ctr.newCursor(); + //这个就是拿到所有的子元素: + c.selectPath("./*"); + while (c.toNextSelection()) { + XmlObject o = c.getObject(); + //如果子元素是这样的形式,使用CTDrawing保存图片 + if (o instanceof CTDrawing) { + CTDrawing drawing = (CTDrawing) o; + CTInline[] ctInlines = drawing.getInlineArray(); + CTAnchor[] ctAnchors = drawing.getAnchorArray(); + for (CTInline ctInline : ctInlines) { + CTGraphicalObject graphic = ctInline.getGraphic(); + // + XmlCursor cursor = graphic.getGraphicData().newCursor(); + cursor.selectPath("./*"); + while (cursor.toNextSelection()) { + XmlObject xmlObject = cursor.getObject(); + // 如果子元素是这样的形式 + if (xmlObject instanceof CTPicture) { + CTPicture picture = (CTPicture) xmlObject; + //拿到元素的属性 + imageBundleList.add(picture.getBlipFill().getBlip().getEmbed()); + } + } + } + for (CTAnchor ctAnchor : ctAnchors) { + CTGraphicalObject graphic = ctAnchor.getGraphic(); + XmlCursor cursor = graphic.getGraphicData().newCursor(); + cursor.selectPath("./*"); + while (cursor.toNextSelection()) { + XmlObject xmlObject = cursor.getObject(); + // 如果子元素是这样的形式 + if (xmlObject instanceof CTPicture) { + CTPicture picture = (CTPicture) xmlObject; + //拿到元素的属性 + imageBundleList.add(picture.getBlipFill().getBlip().getEmbed()); + } + } + } + } else if (o instanceof CTLevelText) { + logger.info(((CTLevelText) o).getVal()); + } + } + } + return imageBundleList; + } + + // 像每个条款中依次插入每一段的内容 + private void addItermsConditionsImage(SarFileSplitItemsEO message, List itemsValList, XWPFParagraph p, List imageBundleList) { + for (String pictureId : imageBundleList) { + XWPFPictureData pictureData = p.getDocument().getPictureDataByID(pictureId); + String imageName = UUIDUtils.randomUUID10() + pictureData.getFileName(); + byte[] bytev = pictureData.getData(); + String outPath = filePath + "/img/"; + File file1 = new File(outPath); + if (!file1.exists()) { + file1.mkdirs(); + } + String filepathandname = splitFilePath +"/" + imageName; + try { + FileOutputStream fos = new FileOutputStream(filepathandname); + fos.write(bytev); + String path = splitFilePath +"/" + imageName; + String imgCon = ""; + message.getItemsCondi().add(imgCon); + message.setItermsConditions(message.getItermsConditions() + imgCon); + itemsValList.add(getSplitItemsValObject(message.getId(), SplitFilePragraTypeEnum.IMG.getValue(), imgCon, message.getItemsCondi().size(), null)); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private SarFileSplitItemsValEO getSplitItemsValObject(String itemId, String type, String itemContent, int disPlaySql, List tableList) { + SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); + sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsValEO.setValidFlag(0); + sarFileSplitItemsValEO.setCreationTime(new Date()); + sarFileSplitItemsValEO.setCreationUser(LoginUserUtil.getUserId()); + sarFileSplitItemsValEO.setModifyTime(new Date()); + sarFileSplitItemsValEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitItemsValEO.setItemId(itemId); + sarFileSplitItemsValEO.setType(type); + sarFileSplitItemsValEO.setDisplaySeq(disPlaySql); + sarFileSplitItemsValEO.setItemContent(itemContent); + return sarFileSplitItemsValEO; + } + + // 像每个条款中依次插入每一段的内容 + private void addItermsConditionsText(SarFileSplitItemsEO message, List itemsValList, XWPFParagraph p,Integer length) { + StringBuffer buffer = new StringBuffer(); + for (XWPFRun xwrun : p.getRuns()) { + VerticalAlign subscript = xwrun.getSubscript(); + String smalltext = xwrun.getText(0); + if (ObjectUtils.isNotEmpty(smalltext)) { + switch (subscript) { + case BASELINE: + buffer.append(smalltext); + break; + case SUBSCRIPT: + buffer.append("" + smalltext + ""); + break; + case SUPERSCRIPT: + buffer.append("" + smalltext + ""); + break; + } + } + } + String text = buffer.toString(); + if (length > 0) { + text = text.substring(length); + } + message.getItemsCondi().add(text); + message.setItermsConditions(message.getItermsConditions() + "

    " + text + "

    "); + // 判断message中是否引用到其他标准 +// String testString = p; +// Pattern ptest = Pattern.compile("[A-Z]{1,}/{0,1}[A-Z]{1,}\\s{0,1}[0-9]\\d*\\.?\\d*"); +// Pattern ptest2 = Pattern.compile("[A-Z]{1,}/{0,1}[A-Z]{1,}\\s{0,1}[0-9]\\d*\\.?\\d*-[0-9]{1,4}"); +// Matcher matcher = ptest2.matcher(testString); +// while (matcher.find()){ +// String standNumber = matcher.group(); +// if (StringUtils.isNotEmpty(message.getReferenceStand()) && message.getReferenceStand()!=""){ +// message.setReferenceStand(message.getReferenceStand() + ","+standNumber); +// } else { +// message.setReferenceStand(standNumber); +// } +// testString = testString.replaceAll(standNumber," "); +// } +// matcher = ptest.matcher(testString); +// while (matcher.find()){ +// if (StringUtils.isNotEmpty(message.getReferenceStand()) && message.getReferenceStand()!=""){ +// message.setReferenceStand(message.getReferenceStand() + ","+matcher.group()); +// } else { +// message.setReferenceStand(matcher.group()); +// } +// } + itemsValList.add(getSplitItemsValObject(message.getId(), SplitFilePragraTypeEnum.TEXT.getValue(), text, message.getItemsCondi().size(), null)); + } + + private SarFileSplitMenuEO getTreeList(String name, List treeList, String generalCatalogueId, SarFileSplitInfoEO sarFileSplitInfoEO, Long treeListDisplay, String itemName) { + SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(UUIDUtils.randomUUID20(), name, sarFileSplitInfoEO.getId(), treeListDisplay, itemName); + // 用现在得name 和之前得name 做比较,确定,parentId + if (name.indexOf(".") >= 0) { + for (SarFileSplitMenuEO forDocumentTree : treeList) { + if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { + documentTreeEO.setPId(forDocumentTree.getId()); + break; + } + } + } else { + documentTreeEO.setPId(generalCatalogueId); + } + return documentTreeEO; + } + + /** + * 通过传递过来的编号,得出下次可能出现的编号 + * + * @param nowStart + * @return + */ + private List getNewNowStart(String nowStart) { + List nowStartList = new ArrayList<>(); + List nowResultStartList = new ArrayList<>(); + String[] numberStr = nowStart.split("\\."); + String startnumber = ""; + for (int i = 0; i < numberStr.length; i++) { + if (i == 0) { + startnumber = ""; + } else if (i == 1) { + startnumber = numberStr[0]; + } else { + startnumber = startnumber + "." + numberStr[i - 1]; + } + Integer lastnumber = Integer.valueOf(numberStr[i]) + 1; + nowResultStartList.add((startnumber.equals("") ? "" : (startnumber + ".")) + lastnumber); + } + nowResultStartList.add(nowStart + ".1"); + return nowResultStartList; + } + + private void addItermsConditionsOfTable(SarFileSplitItemsEO message, List itemsValList, XWPFTable table) throws IOException { + StringBuilder tabaleStringNew = new StringBuilder(""); + //将表格转为html字符串 + ReadWordTable readWordTable = new ReadWordTable(); + String tableStr = readWordTable.readTable(table); + tabaleStringNew.append(tableStr); + message.getItemsCondi().add(table.getText()); + message.setItermsConditions(message.getItermsConditions() + tabaleStringNew); + itemsValList.add(getSplitItemsValObject(message.getId(), SplitFilePragraTypeEnum.TABLE.getValue(), tabaleStringNew.toString(), message.getItemsCondi().size(), null)); + + } + + @Override + public List queryByPageOwn(SarFileSplitInfoEOPage page) { + int rowCount = sarFileSplitInfoEODao.queryByCountOwn(page); + page.getPager().setRowCount(rowCount); + List rows = sarFileSplitInfoEODao.queryByPageOwn(page); + Map map = new HashMap<>(); + + List selectionResults = sarStandAttrDetailsEOService.selectFileFieldForSel(null); + selectionResults.forEach(detailsEO->{ + map.put(detailsEO.getValue(),detailsEO.getLabel()); + }); + + if (rows != null && !rows.isEmpty()) { + for (SarFileSplitInfoEO infoEO : rows) { + infoEO.setFileTypeShow(String.valueOf(map.get(infoEO.getFileType()))); +// if (!infoEO.getSplitStatus().equals("0") && infoEO.getShowNumber() == null){ +// SarLawsInfoEOPage sarLawsInfoEOPage = new SarLawsInfoEOPage(); +// sarLawsInfoEOPage.setId(infoEO.getStandId()); +// sarLawsInfoEOPage.setLawsType("FOREIGN"); +// List sarLawsInfoEOList = sarLawsInfoEOService.getLawsInfoPage(sarLawsInfoEOPage); +// if (sarLawsInfoEOList.size()>0){ +// infoEO.setShowNumber(sarLawsInfoEOList.get(0).getLawsNumber()); +// infoEO.setStandName(sarLawsInfoEOList.get(0).getLawsName()); +// } +// } +// String collectId = personCollectEOService.queryCollectByUserAndId(infoEO.getId()); +// infoEO.setCollectId(collectId); +// if (StringUtils.isNotBlank(infoEO.getFileType())) { +// List getList = +// sarStandAttrDetailsEODao.selectFileFieldForSel1(infoEO.getFileType()); +// if (getList != null && !getList.isEmpty()) { +// infoEO.setFileTypeShow(getList.get(0).getLabel()); +// } else { +// infoEO.setFileTypeShow(null); +// } +// } + } + } + return rows; + } + + @Override + public int deleteByIds(String ids) { + String[] infoIds = ids.split(","); + // 删除info表数据 + SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO(); + sarFileSplitInfoEO.setIdList(infoIds); + int result = sarFileSplitInfoEODao.deleteByIds(sarFileSplitInfoEO); + + //删除menu表数据 + SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); + sarFileSplitMenuEO.setInfoIdList(infoIds); + sarFileSplitMenuEODao.deleteByIds(sarFileSplitMenuEO); + // 删除val表数据 + List idList = Arrays.asList(infoIds); + sarFileSplitItemsValEODao.deleteValByInfoIds(idList); + // 删除table表数据 + sarFileSplitItemsTableEODao.deleteTableByMenuIds(idList); + //删除items表数据 + SarFileSplitItemsEO sarFileSplitItemsEO = new SarFileSplitItemsEO(); + sarFileSplitItemsEO.setInfoIdList(infoIds); + sarFileSplitItemsEODao.deleteByIds(sarFileSplitItemsEO); + //删除params表数据 + sarFileSplitItemsParamsEODao.deleteByInfoIds(idList); + //删除收藏表中数据 + personCollectEODao.deleteByResIdList(idList); + // 删除分享表中数据 + personShareEODao.deleteByResIdList(idList); + return result; + } + + @Override + public PersonMsgEO updateNew(PersonMsgEO val) throws Exception { +// PersonMsgEO personMsgEO = personMsgEOService.selectByPrimaryKey(val.getId()); +// personMsgEO.setMsgResult(val.getMsgResult()); +// personMsgEOService.updateByPrimaryKeySelective(personMsgEO); +// if (personMsgEO.getMsgType().equals("SPLIT")){ +// PersonMsgEOPage page = new PersonMsgEOPage(); +// page.setMsgType("SPLIT"); +// page.setBusiId(personMsgEO.getBusiId()); +// page.setMsgTitle(personMsgEO.getMsgTitle()); +// List list = personMsgEOService.queryByList(page); +// for (PersonMsgEO item:list) { +// item.setMsgResult(personMsgEO.getMsgResult()); +// personMsgEOService.updateByPrimaryKeySelective(item); +// } +// SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO(); +// sarFileSplitInfoEO.setId(personMsgEO.getBusiId()); +// if (personMsgEO.getMsgResult().equals("0")){ +// sarFileSplitInfoEO.setSplitStatus("2"); +// }else { +// sarFileSplitInfoEO.setSplitStatus("0"); +// } +// sarFileSplitInfoEO.setModifyTime(new Date()); +// this.updateByPrimaryKeySelective(sarFileSplitInfoEO); +// if (list.size() > 0 && list.get(0).getSenderId() != null){ +// PersonMsgEO personMsgEO1 = new PersonMsgEO(); +// personMsgEO1.setUserIds(list.get(0).getSenderId()); +// personMsgEO1.setMsgTitle(list.get(0).getMsgTitle().replace("确认","")+"审核结果"); +// personMsgEO1.setMsgContent(list.get(0).getMsgTitle().replace("确认","") + (personMsgEO.getMsgResult().equals("0")?"已审核通过":"未审核通过")); +// personMsgEO1.setMsgType("TEXT"); +// personMsgEOService.saveNew(personMsgEO1); +// List emailList = new ArrayList<>(); +// UserEO userEO = userEOService.selectByPrimaryKey(list.get(0).getSenderId()); +// if(userEO!=null){ +// emailList.add(userEO.getEmail()); +// String[] array=emailList.toArray(new String[0]); +// mailUtil.sendMsg(array,personMsgEO1.getMsgContent()); +// } +// +// } +// SarFileSplitInfoEOPage sarFileSplitInfoEOPage = new SarFileSplitInfoEOPage(); +// sarFileSplitInfoEOPage.setId(personMsgEO.getBusiId()); +// sarFileSplitInfoEOPage.setSplitStatus("2"); +// List list1 =this.queryByPageOwn(sarFileSplitInfoEOPage); +// for (SarFileSplitInfoEO data:list1) { +// //根据标准号查询标准是否存在 +// String standNum=""; +// if (StringUtils.isNotEmpty(data.getStandId())) { +// standNum=data.getShowNumber(); +// } else if(StringUtils.isNotEmpty(data.getStandNumSplit())){ +// standNum=data.getStandNumSplit(); +// } +// List getList = sarStandardsInfoEOService.selectStandardsByStandnumber(standNum,null); +// SarStandardsInfoEO result = new SarStandardsInfoEO(); +// if(getList != null && getList.size()>0){ +// result = getList.get(0); +// SarStandItemsEOPage itemPage = new SarStandItemsEOPage(); +// String standId = data.getStandId(); +// itemPage.setStandId(standId); +// itemPage.setValidFlag("0"); +// itemPage.setFileType(data.getFileType()); +// List getItemsIds = sarStandItemsEODao.queryIdsByList(itemPage); +// if (getItemsIds.size()>0){ +// this.addToStandItems(data,result); +// } +// } +// } +// } +// return personMsgEO; + return null; + } + + @Override + public String getClauseBySplitId(String standNum, String fileType) { + SarFileSplitInfoEOPage sarFileSplitInfoEOPage = new SarFileSplitInfoEOPage(); + sarFileSplitInfoEOPage.setNumOrName(standNum); + sarFileSplitInfoEOPage.setFileType(fileType); + sarFileSplitInfoEOPage.setSplitStatus("2"); + List rows = dao.queryByPageOwn(sarFileSplitInfoEOPage); + return rows.get(0).getId(); + } + + @Override + public List querySame (SarFileSplitInfoEO sarFileSplitInfoEO){ + return dao.querySame(sarFileSplitInfoEO); + }; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java new file mode 100644 index 00000000..725cf34f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsEOServiceImpl.java @@ -0,0 +1,1023 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.common.FileUnZip; +import com.adc.da.common.SplitTableInfo; +import com.adc.da.login.util.UserUtils; +import com.adc.da.slrs.standardSplit.dao.*; +import com.adc.da.slrs.standardSplit.dto.*; +import com.adc.da.slrs.standardSplit.entity.*; +import com.adc.da.slrs.standardSplit.service.SarFileSplitInfoEOService; +import com.adc.da.slrs.standardSplit.service.SarFileSplitItemsEOService; +import com.adc.da.slrs.standardSplit.service.SarFileSplitMenuEOService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.dao.RoleEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.utils.treetool.Tree; +import com.adc.da.utils.treetool.TreeNode; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.*; + +import static com.adc.da.utils.util.ExcelUtil.checkObjAllFieldsIsNull; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarFileSplitItemsEOServiceImpl implements SarFileSplitItemsEOService { + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitItemsEOServiceImpl.class); + + @Autowired + private SarFileSplitMenuEOService sarFileSplitMenuEOService; + @Autowired + private SarFileSplitItemsEODao dao; + @Autowired + private SarFileSplitItemsParamsEODao sarFileSplitItemsParamsEODao; + @Autowired + private SarFileSplitItemsValEODao sarFileSplitItemsValEODao; + @Autowired + private SysInfoEOService sysInfoEOService; + @Autowired + private SarFileSplitMenuEODao sarFileSplitMenuEODao; + @Autowired + private SarFileSplitItemsTableEODao sarFileSplitItemsTableEODao; + @Autowired + private SarFileSplitItemsEODao sarFileSplitItemsEODao; + @Autowired + private DicTypeEODao dicTypeEODao; + @Value("${file.path}") + private String uploadFilePath; + @Autowired + private RoleEODao roleEODao; + @Autowired + private IAttFileEOService attFileEOService; + @Autowired + private SarFileSplitInfoEOService sarFileSplitInfoEOService; + + + @Override + public Map getByPage(SarFileSplitItemsEOPage page) { + //ValidFlag为0的意思是有效,设置这个文件分解清单的有效性为有效 + page.setValidFlag("0"); + //把SAR_FILE_SPLIT_MENU表里的数据按照display_seq的从小到大的正序进行排列 + page.setOrderBy("SAR_FILE_SPLIT_MENU.display_seq asc"); + //如果SAR_FILE_SPLIT_ITEMS表里的拆分目录ID即MenuId不为空 + if (com.adc.da.util.utils.StringUtils.isNotEmpty(page.getMenuId())) { + //把根据条件查询SAR_FILE_SPLIT_MENU表查出来的数据放到sarFileSplitMenuEOList里 + List sarFileSplitMenuEOList = sarFileSplitMenuEOService.queryByList(new SarFileSplitMenuEOPage()); + //把这个sarFileSplitMenuEOList转换成树的形式 + Tree tree = new Tree<>(sarFileSplitMenuEOList); + //treeNode就是树的子节点中的SAR_FILE_SPLIT_ITEMS表中的menuId + TreeNode treeNode = tree.getTreeNode(page.getMenuId()); + + List menuIds = new ArrayList<>(); + //然后把刚刚的treeNode的nodeId放到menuIds数组里 + menuIds.add(treeNode.getNodeId()); + for (TreeNode node : treeNode.getAllChildren()) { + //把所有的treeNode的nodeId放到menuIds数组里 + menuIds.add(node.getNodeId()); + } + //把它放到MenuIdList里 + page.setMenuIdList(menuIds); + } + //数出SAR_FILE_SPLIT_ITEMS这个表里MENU_ID不为空或id不为空的记录一共有几条(基本上就是数出这个表一共有几条数据) + int count = dao.queryByCount(page); + //把page里的值当做条件一顿左联查询了SAR_FILE_SPLIT_ITEMS这个表 + List rows = dao.queryByPage(page); + //如果查询出来的结果不为空 + if (rows != null && !rows.isEmpty()) { + //遍历rows + for (SarFileSplitItemsEO sarFileSplitItemsEO : rows) { + //查询svpps + String svppsShow = sysInfoEOService.getSvppsNamesByIds(sarFileSplitItemsEO.getSvpps()); + sarFileSplitItemsEO.setSvppsShow(svppsShow); + SarFileSplitItemsParamsEOPage paramPage = new SarFileSplitItemsParamsEOPage(); + paramPage.setItemId(sarFileSplitItemsEO.getId()); + List paramList = sarFileSplitItemsParamsEODao.queryByList(paramPage); + sarFileSplitItemsEO.setParamsList(paramList); + String foName = sysInfoEOService.getRoleNamesByIds(sarFileSplitItemsEO.getFo()); + sarFileSplitItemsEO.setFoShow(foName); + //TODO 2021年6月17日 补充责任部门和项目评估角色回显时如果时多个时回显为空的情况 + String dutyEngineerName = sysInfoEOService.getRoleNamesByIds(sarFileSplitItemsEO.getDutyEngineer()); + sarFileSplitItemsEO.setDutyEngineerShow(dutyEngineerName); + //责任部门多个时 + String orgNames = sysInfoEOService.getOrgNamesByIds(sarFileSplitItemsEO.getResponsibleUnit()); + sarFileSplitItemsEO.setResponsibleUnitShow(orgNames); + } + + } + Map map = new HashMap<>(); + map.put("list",rows); + map.put("count",count); + return map; + } + + @Override + public List queryByList(SarFileSplitItemsEOPage page) { + return dao.queryByList(page); + } + + @Override + public SarFileSplitItemsEO selectByPrimaryKey(String id) { + return dao.selectByPrimaryKey(id); + } + + @Override + public int insertSelective(SarFileSplitItemsEO sarFileSplitItemsEO) { + return dao.insertSelective(sarFileSplitItemsEO); + } + + @Override + public int updateItemContent(SarFileSplitItemsEO sarFileSplitItemsEO) { + List getValList = sarFileSplitItemsEO.getItemValEOList(); + String itemConditions = ""; + String userId = UserUtils.getUserId(); + int resultCount = 0; + int resultCount1 = 0; + //修改特殊参数要求信息 + updateParamsContent(sarFileSplitItemsEO); + //修改条款要求内容 + if (getValList != null && !getValList.isEmpty()) { + String delIds = sarFileSplitItemsEO.getDelItemIds(); + List itemValIds = new ArrayList<>(); + //删除VAL表前台删掉的条目信息 + if (StringUtils.isNotEmpty(delIds)) { + String[] delArr = delIds.split(","); + SarFileSplitItemsValEO delEO = new SarFileSplitItemsValEO(); + delEO.setIdList(delArr); + if (delArr != null && delArr.length > 0) { + sarFileSplitItemsValEODao.deleteByIds(delEO); + //删除table表数据 + itemValIds = new ArrayList<>(Arrays.asList(delArr)); + } + } + //向val表更新数据 + int ind = 1; + List addValList = new ArrayList<>(); + List updateValList = new ArrayList<>(); + for (SarFileSplitItemsValEO valEO : getValList) { + // 当前段内容 + String valContent = ""; + if ("TEXT".equals(valEO.getType())) { + valContent = "

    " + valEO.getItemContent() + "

    "; + } else if ("IMG".equals(valEO.getType())) { + valContent = valEO.getItemContent() ; + //\" + } else if ("TABLE".equals(valEO.getType())) { + valContent = valEO.getItemContent(); + } + itemConditions += valContent; + // val表信息 + if (StringUtils.isNotEmpty(valEO.getId())) { + valEO.setDisplaySeq(ind); + valEO.setModifyTime(new Date()); + valEO.setModifyUser(userId); + updateValList.add(valEO); + itemValIds.add(valEO.getId()); +// sarFileSplitItemsValEODao.updateByPrimaryKeySelective(valEO); + } else { + valEO.setId(UUIDUtils.randomUUID20()); + valEO.setDisplaySeq(ind); + valEO.setValidFlag(0); + valEO.setCreationTime(new Date()); + valEO.setModifyTime(new Date()); + valEO.setCreationUser(userId); + valEO.setModifyUser(userId); + addValList.add(valEO); + } + ind++; + } + if (addValList != null && !addValList.isEmpty()) { + sarFileSplitItemsValEODao.insertForeach(addValList); + } + if (updateValList != null && !updateValList.isEmpty()) { + for(SarFileSplitItemsValEO s : updateValList){ + sarFileSplitItemsValEODao.updateForeach(Arrays.asList(s)); + } + } + sarFileSplitItemsEO.setItermsConditions(itemConditions); + resultCount = dao.updateByPrimaryKeySelective(sarFileSplitItemsEO); + resultCount1 = dao.updateByPrimaryKeySelective1(sarFileSplitItemsEO); + } else { + sarFileSplitItemsEO.setItermsConditions(""); + resultCount = dao.updateByPrimaryKeySelective(sarFileSplitItemsEO); + resultCount1 = dao.updateByPrimaryKeySelective1(sarFileSplitItemsEO); + // 删除val表全部信息 + sarFileSplitItemsValEODao.deleteByitemId(sarFileSplitItemsEO.getId()); + } + Map resultCountMap = new HashMap(); + resultCountMap.put("拆分",resultCount); + resultCountMap.put("标准分解单",resultCount1); + return resultCountMap.size(); + } + + /** + * @Author yangxuenan + * @Description 修改特殊参数要求内容 + * Date 2020/2/4 15:56 + * @Param [sarFileSplitItemsEO] + * @return void + **/ + public void updateParamsContent(SarFileSplitItemsEO sarFileSplitItemsEO){ + List itemList = new ArrayList<>(); + itemList.add(sarFileSplitItemsEO.getId()); + sarFileSplitItemsParamsEODao.deleteByItemIds(itemList); + List paramList = sarFileSplitItemsEO.getParamsList(); + if(paramList != null && !paramList.isEmpty()){ + for(SarFileSplitItemsParamsEO paramsEO : paramList){ + paramsEO.setId(UUIDUtils.randomUUID20()); + paramsEO.setItemId(sarFileSplitItemsEO.getId()); + paramsEO.setInfoId(sarFileSplitItemsEO.getInfoId()); + paramsEO.setValidFlag(0); + paramsEO.setCreationTime(new Date()); + paramsEO.setModifyTime(new Date()); + } + sarFileSplitItemsParamsEODao.insertForeach(paramList); + } + } + + @Override + public int deleteByPrimaryKey(String id) { + return dao.deleteByPrimaryKey(id); + } + + @Override + public int batchDeleteItems(String ids,String editFlag) { + String[] itemIds = ids.split(","); + String[] itemIds1 = editFlag.split(","); + List idList = Arrays.asList(itemIds); + List idList1 = Arrays.asList(itemIds1); + // 查到对应menu + List getMenuList = dao.queryByItemsIds(idList); + List getAllItemList = new ArrayList<>(); + List menuIdList = new ArrayList<>(); + List allItemIdList = new ArrayList<>(); + int result = 0; + if (getMenuList != null && !getMenuList.isEmpty()) { + for(SarFileSplitItemsEO splitItemsEO : getMenuList){ + menuIdList.add(splitItemsEO.getMenuId()); + List menuList = sarFileSplitMenuEOService.getChildData(splitItemsEO.getMenuId()); + menuIdList.addAll(menuList); + } + if(!menuIdList.isEmpty()){ + for(String menuId:menuIdList){ + List rows = dao.queryItemsByMenuId(menuId); + getAllItemList.addAll(rows); + } + } + if (!getAllItemList.isEmpty()) { + for (SarFileSplitItemsEO itemsEO : getAllItemList) { + if (!allItemIdList.contains(itemsEO.getId())) { + allItemIdList.add(itemsEO.getId()); + } + } + // 删除menu表数据 + sarFileSplitMenuEODao.deleteByIdList(menuIdList); + // 删除val表数据 + sarFileSplitItemsValEODao.deleteValByitemIds(allItemIdList); + //删除table数据 + sarFileSplitItemsTableEODao.deleteByitemIds(allItemIdList); + //删除特殊参数要求params表数据 + sarFileSplitItemsParamsEODao.deleteByItemIds(allItemIdList); + //删除res表数据 +// sarFileSplitItemsResEODao.deleteByItemIds(allItemIdList); + //删除file表数据 +// sarFileSplitItemsFileEODao.deleteByItemIds(allItemIdList); + result = dao.deleteByItemsIdList(allItemIdList); + dao.deleteByItemsIdList1(idList1); + }else if(!idList.isEmpty()){//菜单被删掉了,数据当时被保留下来的 + allItemIdList.clear(); + allItemIdList.addAll(idList); + // 删除val表数据 + sarFileSplitItemsValEODao.deleteValByitemIds(allItemIdList); + //删除table数据 + sarFileSplitItemsTableEODao.deleteByitemIds(allItemIdList); + //删除特殊参数要求params表数据 + sarFileSplitItemsParamsEODao.deleteByItemIds(allItemIdList); + result = dao.deleteByItemsIdList(allItemIdList); + dao.deleteByItemsIdList1(idList1); + } + } + Map resultMap = new HashMap(); + resultMap.put("拆分单删除",result); + return resultMap.size(); + } + + @Override + public boolean judgeContaintChilds(String ids) { + String[] itemIds = ids.split(","); + List idList = Arrays.asList(itemIds); + // 查到对应menu + List getMenuList = dao.queryByItemsIds(idList); + if (getMenuList != null && !getMenuList.isEmpty()) { + for (SarFileSplitItemsEO splitItemsEO : getMenuList) { + SarFileSplitMenuEO sarMenuEO = new SarFileSplitMenuEO(); + sarMenuEO.setId(splitItemsEO.getMenuId()); + List list = sarFileSplitMenuEODao.queryByPidExcpetSelf(sarMenuEO); + if(list != null && !list.isEmpty()){ + return false; + } + } + } + return true; + } + + @Override + public List queryByOrdersForExport(SarFileSplitItemsEOPage page) { + List list = sarFileSplitItemsEODao.queryByOrdersForExport(page); + + for (FileSplitItemsExportDto data:list) { + //查询svpps + String svppsShow = sysInfoEOService.getSvppsNamesByIds(data.getSvpps()); + data.setSvpps(svppsShow); + List getDicType = dicTypeEODao.getDicTypeByDicCode("ENERGYTYPES"); + List getDicType1 = dicTypeEODao.getDicTypeByDicCode("BZFGGXOUIUJ"); + getDicType.addAll(getDicType1); + for (DicTypeEO dicTypeEO:getDicType) { + if (dicTypeEO.getDicTypeCode().equals(data.getApplyArctic())){ + data.setApplyArctic(dicTypeEO.getDicTypeName()); + } + if (dicTypeEO.getDicTypeCode().equals(data.getBusStandCover())){ + data.setBusStandCover(dicTypeEO.getDicTypeName()); + } + } + } + return list; + } + + @Override + public List combineItemValInfo(List getValList, List allTableList, List allImgList, SarFileSplitItemsEOPage page) { + int tableIndex = page.getTableIndex(); + int imgIndex = page.getImgIndex(); + List valContent = new ArrayList<>(); + if (getValList != null && !getValList.isEmpty()) { + String preType = ""; + for(SarFileSplitItemsValEO itemsValEO : getValList){ + String type = itemsValEO.getType(); + FileSplitValExportDto lastOne = new FileSplitValExportDto(); + lastOne.setValType(type); + if(preType.equals(type) && "TEXT".equals(type)) { + lastOne = valContent.get(valContent.size() - 1); + lastOne.setValContent(lastOne.getValContent()+itemsValEO.getItemContent() + "\n"); + valContent.set(valContent.size() - 1, lastOne); + } else if ("TEXT".equals(type)) { + lastOne.setValContent(lastOne.getValContent()+itemsValEO.getItemContent() + "\n"); + valContent.add(lastOne); + } else if ("TABLE".equals(type)) { + String tableName = String.valueOf(tableIndex); + lastOne.setValContent("tableSheet" + tableName); + //查询table信息 + SarFileSplitItemsTableEOPage tablePage = new SarFileSplitItemsTableEOPage(); + tablePage.setItemsValId(itemsValEO.getId()); + valContent.add(lastOne); +// List> tableList = combineTableList(itemsValEO); + FileSpiltValTableExportDto tableExportDto = new FileSpiltValTableExportDto(); + tableExportDto.setTableName("tableSheet" + tableName); +// tableExportDto.setTableEOList(tableList); + tableExportDto.setTableHtCon(itemsValEO.getItemContent()); + allTableList.add(tableExportDto); + tableIndex++; + page.setTableIndex(tableIndex); + } else if ("IMG".equals(type)) { + String imgContent = itemsValEO.getItemContent(); + String imgUUIndex = "img" + String.valueOf(imgIndex); + if (StringUtils.isNotEmpty(imgContent)){ + int pathIndex = imgContent.indexOf("src='file"); + if (pathIndex==-1){ + String sa = imgContent.replaceAll("\''","\'"); + pathIndex = sa.indexOf("src='file"); + } + if (pathIndex > -1 && imgContent.length()>(pathIndex+16)) { + String imgPath = imgContent.substring(pathIndex+16,imgContent.length()-2); + String imgName = imgUUIndex + "-" +imgPath.substring(imgPath.lastIndexOf("/")+1,imgPath.length()); + lastOne.setValContent(imgUUIndex+".png"); + valContent.add(lastOne); + FileSplitValImgExportDto fileSplitValImgExportDto = new FileSplitValImgExportDto(); + fileSplitValImgExportDto.setImgName(imgUUIndex+".png"); + if (StringUtils.isNotEmpty(itemsValEO.getImgName())) { + fileSplitValImgExportDto.setImgPath(itemsValEO.getImgName()); + } else { + fileSplitValImgExportDto.setImgPath(imgPath); + } + allImgList.add(fileSplitValImgExportDto); + imgIndex++; + page.setImgIndex(imgIndex); + } + } + } + preType = itemsValEO.getType(); + } + } + return valContent; + } + + @Override + public void downLoadImgList(List allImgList, String fileNowPath) throws IOException { + for(FileSplitValImgExportDto imgExportDto : allImgList){ + String oldPath = uploadFilePath+ "/" + imgExportDto.getImgPath(); + String newPath = fileNowPath + "/" + imgExportDto.getImgName(); + File oldFile = new File(oldPath); + if (oldFile.exists()){ + copyFile1(oldPath, newPath); + } + } + } + + @Override + public void downLoadFileList(List attfileEo, String fileNowPath) throws IOException { + for(AttFileEO fileExportDto : attfileEo){ + String oldPath = uploadFilePath+ "/" + fileExportDto.getFilePath() + fileExportDto.getFileName(); + String newPath = fileNowPath + "/" + fileExportDto.getOldFileName(); + File oldFile = new File(oldPath); + if (oldFile.exists()){ + copyFile1(oldPath, newPath); + } + } + } + + @Override + @Transactional + public ResponseMessage importSplitItems(List list, String filepath, + SarFileSplitInfoEO sarFileSplitInfoEO, List getSheetTableList) { + //此处需要做各种验证,数据库操作 + try { + String infoId = null; + if (StringUtils.isNotBlank(sarFileSplitInfoEO.getInfoId())){ + infoId = sarFileSplitInfoEO.getInfoId(); + sarFileSplitInfoEO.setInfoId(null); + }else { + infoId = UUIDUtils.randomUUID20(); + } + //验证导入数据是否符合规则 + Map map = validateImportDatas(list,filepath); + boolean isOk = (boolean) map.get("result"); + if (!isOk) { + //验证没有通过 + String message = (String) map.get("message"); + return Result.error("fail", message); + } + //将导入数据循环合并整理后 新增至相应表 + list = (List) map.get("resultList"); + int countSuccess = 0; + // 最终添加的数据 + List addItemsEOList = new ArrayList<>(); + int itemNum = 0; + String firstId = UUIDUtils.randomUUID20(); + String menuid = sarFileSplitInfoEO.getMenuId(); + if (null == menuid) { + SarFileSplitItemsEO firstItem = new SarFileSplitItemsEO(); + firstItem.setId(firstId); + firstItem.setItemsNum("总目录"); + firstItem.setValidFlag(0); + firstItem.setCreationTime(new Date()); + firstItem.setModifyTime(new Date()); + addItemsEOList.add(firstItem); //新的总目录家在了添加的list中 当前仅一条 + } + + for (SarFileSplitItemsImportDto importDto : list) { //遍历传入的值 + //判断此行数据是否全部为空,是则不读取 + if(checkObjAllFieldsIsNull(importDto)){ + continue; + } + SarFileSplitItemsEO sarFileSplitItemsEO = new SarFileSplitItemsEO(); + BeanUtils.copyProperties(importDto, sarFileSplitItemsEO); + sarFileSplitItemsEO.setInfoId(infoId); + List addItemValList = new ArrayList<>(); + if (addItemsEOList != null && !addItemsEOList.isEmpty()) { + SarFileSplitItemsEO oldItems = addItemsEOList.get(addItemsEOList.size()-1); + if (itemNum > 0 && sarFileSplitItemsEO.getItemsNum().equals(oldItems.getItemsNum()) + && sarFileSplitItemsEO.getItemsName().equals(oldItems.getItemsName())) { + addItemValList = oldItems.getItemValEOList(); + String itemContent = oldItems.getItermsConditions()+sarFileSplitItemsEO.getItermsConditions(); + oldItems.setItermsConditions(itemContent); + if(StringUtils.isBlank(sarFileSplitItemsEO.getItermsConditions())){ + continue; + } + String[] valArr = sarFileSplitItemsEO.getItermsConditions().split("\n"); + if (valArr != null && valArr.length > 0) { + for (int i=0;i nowfilelist = FileUnZip.readFileByFilename(filepath, valArr[i]); + if (nowfilelist != null && !nowfilelist.isEmpty()) { + AttFileVo attFileVo = attFileEOService.saveFileInfo(nowfilelist.get(0)); + if(attFileVo!=null){ + isText = false; + String path = "file" + attFileVo.getFilePath()+attFileVo.getFileName(); + String imgCon = ""; + valEO.setType("IMG"); + valEO.setItemContent(imgCon); + } + } + if (isText) { + valEO.setType("TEXT"); + valEO.setItemContent(valArr[i]); + } + addItemValList.add(valEO); + } + } + oldItems.setItemValEOList(addItemValList); + }else { + String[] valArr = sarFileSplitItemsEO.getItermsConditions().split("\n"); + if (valArr != null && valArr.length > 0) { + for (int i=0;i nowfilelist = FileUnZip.readFileByFilename(filepath, valArr[i]); + if (nowfilelist != null && !nowfilelist.isEmpty()) { + AttFileVo attFileVo = attFileEOService.saveFileInfo(nowfilelist.get(0)); + if(attFileVo!=null){ + isText = false; + String path = "file" + attFileVo.getFilePath()+attFileVo.getFileName(); + String imgCon = ""; + valEO.setType("IMG"); + valEO.setItemContent(imgCon); + } + } + if (isText) { + valEO.setType("TEXT"); + valEO.setItemContent(valArr[i]); + } + addItemValList.add(valEO); + } + } + sarFileSplitItemsEO.setItemValEOList(addItemValList); + addItemsEOList.add(sarFileSplitItemsEO); + } + } else { + String[] valArr = sarFileSplitItemsEO.getItermsConditions().split("\n"); + if (valArr != null && valArr.length > 0) { + for (int i=0;i nowfilelist = FileUnZip.readFileByFilename(filepath, valArr[i]); + if (nowfilelist != null && !nowfilelist.isEmpty()) { + AttFileVo attFileVo = attFileEOService.saveFileInfo(nowfilelist.get(0)); + if(attFileVo!=null){ + isText = false; + String path = "file" + attFileVo.getFilePath()+attFileVo.getFileName(); + String imgCon = ""; + valEO.setType("IMG"); + valEO.setItemContent(imgCon); + } + } + if (isText) { + valEO.setType("TEXT"); + valEO.setItemContent(valArr[i]); + } + addItemValList.add(valEO); + } + } + sarFileSplitItemsEO.setItemValEOList(addItemValList); + addItemsEOList.add(sarFileSplitItemsEO); + } + itemNum++; + } + + //导入拆分结果前首先新增拆分条目 + if (StringUtils.isBlank(menuid)) { + sarFileSplitInfoEO.setCreationTime(new Date()); + sarFileSplitInfoEO.setModifyTime(new Date()); + sarFileSplitInfoEO.setId(infoId); + sarFileSplitInfoEO.setValidFlag(0); + sarFileSplitInfoEO.setResult("1"); + sarFileSplitInfoEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitInfoEOService.insertSelective(sarFileSplitInfoEO); + } + + Map menuPidMap = new HashMap<>(); + //默认为总目录了 + if (StringUtils.isBlank(menuid)) { + menuPidMap.put("总目录", firstId); + }else{ + menuPidMap.put("总目录",menuid ); + } + for (SarFileSplitItemsEO itemsEO : addItemsEOList) { + String menuIdT = createItemsInfo(itemsEO,infoId,countSuccess,menuPidMap); + menuPidMap.put(itemsEO.getItemsNum(),menuIdT); + countSuccess++; + } + //统计成功结果需要去掉总目录这条数据 + String msg = "成功导入" + (countSuccess-1) + "条"; + return Result.success("0", msg, null); + } catch (Exception e) { + logger.error(e.getMessage(),e); + return Result.error("导入失败"); + } + } + + public String createItemsInfo(SarFileSplitItemsEO sarFileSplitItemsEO,String infoId,int countNum,Map menuPMap){ + String userId = LoginUserUtil.getUserId(); + //创建菜单 + SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); + sarFileSplitMenuEO.setInfoId(infoId); + sarFileSplitMenuEO.setName(sarFileSplitItemsEO.getItemsNum()); + sarFileSplitMenuEO.setItemName(sarFileSplitItemsEO.getItemsName()); + //获取父节点id + String menuNm = sarFileSplitItemsEO.getItemsNum(); + if(menuNm.indexOf(".") > 0){ + menuNm = menuNm.substring(0,menuNm.lastIndexOf(".")); + sarFileSplitMenuEO.setpId(menuPMap.get(menuNm)); + }else if("总目录".equalsIgnoreCase(menuNm)){ + sarFileSplitMenuEO.setPId(""); + }else{ + sarFileSplitMenuEO.setpId(menuPMap.get("总目录")); + } + + sarFileSplitMenuEO.setDisplaySeq(countNum+1L); + sarFileSplitMenuEO.setCreationUser(userId); + sarFileSplitMenuEO.setModifyUser(userId); + String menuId = sarFileSplitMenuEOService.addMenuForImport(sarFileSplitMenuEO); + //添加items表数据 + String itemsId = UUIDUtils.randomUUID20(); + sarFileSplitItemsEO.setId(itemsId); + sarFileSplitItemsEO.setMenuId(menuId); + sarFileSplitItemsEO.setValidFlag(0); + sarFileSplitItemsEO.setCreationTime(new Date()); + sarFileSplitItemsEO.setModifyTime(new Date()); + sarFileSplitItemsEO.setCreationUser(userId); + dao.insertSelective(sarFileSplitItemsEO); + //添加val表数据 + List getValList = sarFileSplitItemsEO.getItemValEOList(); + int ind = 1; + if (getValList != null && !getValList.isEmpty()) { + for (SarFileSplitItemsValEO valEO : getValList) { + // 当前段内容 + String valContent = ""; + if ("TEXT".equals(valEO.getType())) { + valContent = "

    " + valEO.getItemContent() + "

    "; + } else if ("IMG".equals(valEO.getType())) { + valContent = ""; + } else if ("TABLE".equals(valEO.getType())) { + valContent = valEO.getItemContent(); + } + // val表信息 + valEO.setId(UUIDUtils.randomUUID20()); + valEO.setItemId(itemsId); + valEO.setDisplaySeq(ind); + valEO.setValidFlag(0); + valEO.setCreationTime(new Date()); + valEO.setModifyTime(new Date()); + valEO.setCreationUser(userId); + valEO.setModifyUser(userId); + ind++; + } + sarFileSplitItemsValEODao.insertForeach(getValList); + } + return menuId; + } + + public Map validateImportDatas(List datas, String filepath) throws Exception { + //存放数据验证结果信息 + List stringMessage = new ArrayList<>(); + List claimStypelist = new ArrayList<>(); + List foList=new ArrayList<>(); + List dutyEngineerList=new ArrayList<>(); + int i = 1; //记录行号 + int num = 0; //记录是第几条数据 + //循环验证数据 + for (SarFileSplitItemsImportDto dto : datas) { + i++; + int countError = 0; //记录失败数据数量 + DicTypeEO dic = new DicTypeEO(); + List getDic = new ArrayList<>(); + String errorMsg = "第" + i + "行:"; + //关联文件已经删除了 +// dto.setRelevanceFileName(dto.getRelevanceFile()); + if (num > 0 && StringUtils.isEmpty(dto.getItemsNum()) && StringUtils.isEmpty(dto.getItemsName())) { + String nowItemContent = dto.getItermsConditions(); + BeanUtils.copyProperties(datas.get(num-1), dto); + dto.setItermsConditions(nowItemContent); + // dto.setRelevanceFile(dto.getRelevanceFileName()); + } + if (StringUtils.isEmpty(dto.getItemsNum())) { + errorMsg += "条款号不能为空;"; + countError++; + } else { + if (dto.getItemsNum().length()>100) { + errorMsg += "条款号不能超过100个字符;"; + countError++; + } + } + if (StringUtils.isEmpty(dto.getItemsName())) { + errorMsg += "条款名称不能为空;"; + countError++; + } else { + if (dto.getItemsName().length()>100) { + errorMsg += "条款名称不能超过100个字符;"; + countError++; + } + } + String saveApplyCode = ""; + if (StringUtils.isNotEmpty(dto.getApplyArctic())) { + dto.setApplyArctic(dto.getApplyArctic().replace(",", ",")); + String applys[] = dto.getApplyArctic().split(","); + if(applys.length>20){ + errorMsg += "适用车型选项不能超过20个;"; + countError++; + } else if (dto.getApplyArctic().length() > 500) { + errorMsg += "适用车型不能超过500个字符;"; + countError++; + } else { + Set set = new HashSet(); + for (int a = 0; a < applys.length; a++) { + dic.setDicTypeName(applys[a]); + dic.setDicTypeCode("ENERGYTYPES"); + getDic = dicTypeEODao.getDicTypeByDicTypeName(dic); + if (getDic.size() == 1) { + saveApplyCode += getDic.get(0).getDicTypeCode() + ","; + } else if (getDic.size() > 0) { + errorMsg += "适用车型" + applys[a] + "不明确;"; + countError++; + break; + } else { + errorMsg += "适用车型" + applys[a] + "不存在;"; + countError++; + break; + } + set.add(applys[a]); + if (a==applys.length-1 && applys.length != set.size()){ + errorMsg += "适用车型存在重复数据;"; + countError++; + } + } + if (!saveApplyCode.equals("")){ + dto.setApplyArctic(saveApplyCode.substring(0,saveApplyCode.length()-1)); + } + } + } + if(!claimStypelist.contains(dto.getClaimType())) { + if (StringUtils.isNotEmpty(dto.getClaimType())) { + dic.setDicTypeName(dto.getClaimType()); + dic.setDicTypeCode("REQUESTTYPE"); + if (dto.getClaimType().length() > 500) { + errorMsg += "要求类型不能超过500个字符;"; + countError++; + } else { + getDic = dicTypeEODao.getDicTypeByDicTypeName(dic); + Set set = new HashSet(); + if (getDic != null) { + if (getDic.size() == 1) { + dto.setClaimType(getDic.get(0).getDicTypeCode()); + claimStypelist.add(getDic.get(0).getDicTypeCode()); + } else if (getDic.size() > 0) { + errorMsg += "要求类型不明确;"; + countError++; + } else { + errorMsg += "要求类型不存在;"; + countError++; + } + } else { + errorMsg += "要求类型不存在;"; + countError++; + } + } + } + } + if(StringUtils.isNotEmpty(dto.getItermsConditions())){ + if(dto.getItermsConditions().length() > 50000){ + errorMsg += "内容简介不能超过50000个字符;"; + countError++; + } + } + if(!foList.contains(dto.getFo())) { + if (StringUtils.isNotEmpty(dto.getFo())) { + if (dto.getFo().length() > 200) { + errorMsg += "FO不能超过200个字符;"; + countError++; + } else { + String uname = roleEODao.getIdsByNames(dto.getFo().split(",")); + if (StringUtils.isNotBlank(uname)) { + dto.setFo(uname); + foList.addAll(Arrays.asList(uname.split(","))); + } else { + errorMsg += "FO不存在;"; + countError++; + } + } + } + } + if(!dutyEngineerList.contains(dto.getDutyEngineer())) { + if (StringUtils.isNotEmpty(dto.getDutyEngineer())) { + if (dto.getDutyEngineer().length() > 100) { + errorMsg += "责任工程师不能超过100个字符;"; + countError++; + } else { + String emList = roleEODao.getIdsByNames(dto.getDutyEngineer().split(",")); + if (StringUtils.isNotBlank(emList)) { + dto.setDutyEngineer(emList); + dutyEngineerList.addAll(Arrays.asList(dto.getDutyEngineer().split(","))); + } else { + errorMsg += "系统中没有用户:" + dto.getDutyEngineer(); + countError++; + } + } + } + } + if(StringUtils.isNotEmpty(dto.getSvpps())){ + if(dto.getSvpps().length() > 200){ + errorMsg += "SVPPS不能超过200个字符;"; + countError++; + }else { + String svppsShow = sysInfoEOService.getSvppsIdByName(dto.getSvpps()); + dto.setSvpps(svppsShow); + } + } + if(StringUtils.isNotEmpty(dto.getBusStandCover())){ + if(dto.getBusStandCover().length() > 200){ + errorMsg += "企标覆盖关系不能超过200个字符;"; + countError++; + }else { + List getDicType = dicTypeEODao.getDicTypeByDicCode("BZFGGXOUIUJ"); + for (DicTypeEO dicTypeEO:getDicType) { + if (dicTypeEO.getDicTypeName().equals(dto.getBusStandCover())){ + dto.setBusStandCover(dicTypeEO.getDicTypeCode()); + } + } + } + } + if(StringUtils.isNotBlank(dto.getResponsibleUnit())){ + if(dto.getResponsibleUnit().length() > 100){ + errorMsg += "责任部门不能超过100个字符;"; + countError++; + }else { + String id = sysInfoEOService.getOrgIdByName(dto.getResponsibleUnit(),"DEPART"); + if(StringUtils.isNotBlank(id)){ + dto.setResponsibleUnit(id); + } else { + errorMsg += "系统中没有部门"+dto.getResponsibleUnit(); + countError++; + } + } + } + if (countError > 0) { + stringMessage.add(errorMsg); + } + num++; + } + Map map = new HashMap(); + if (stringMessage.isEmpty()) { + map.put("result", true); + map.put("resultList", datas); + map.put("message", ""); + } else { + map.put("result", false); + String html = ""; + if (stringMessage.size()>0){ + html = StringUtils.join(stringMessage,"
    "); + } + map.put("message", html); + } + return map; + } + + + @Override + public void combineItems(String ids) { + String userId = UserUtils.getUserId(); + String[] idArr = ids.split(","); + SarFileSplitItemsEOPage page = new SarFileSplitItemsEOPage(); + page.setIdList(Arrays.asList(idArr)); + page.setValidFlag("0"); + page.setPageSize(1000); + page.setOrderBy("SAR_FILE_SPLIT_MENU.display_seq asc"); + List getList = dao.queryByPage(page); + if (getList != null && !getList.isEmpty()) { + // 最终合并后的条款 + SarFileSplitItemsEO resultItem = getList.get(0); + String reaultItemId = resultItem.getId(); + // 合并所有条款内容 + StringBuilder resultContent = new StringBuilder(); + resultContent.append(resultItem.getItermsConditions()); + // 合并所有val表内容 + List resultValList = new ArrayList<>(); + SarFileSplitItemsValEOPage valEOPage = new SarFileSplitItemsValEOPage(); + valEOPage.setItemId(reaultItemId); + List valList = sarFileSplitItemsValEODao.queryByList(valEOPage); + resultValList.addAll(valList); + // 保存所有合并后需要删掉的条款id + List delIds = new ArrayList<>(); + List delMenuIds = new ArrayList<>(); + for (int i = 1; i < getList.size(); i++) { + SarFileSplitItemsEO itemsEO = getList.get(i); + delIds.add(itemsEO.getId()); + delMenuIds.add(itemsEO.getMenuId()); + String itemContent = "

    " + itemsEO.getItemsNum() + "

    " + itemsEO.getItermsConditions(); + resultContent.append(itemContent); + SarFileSplitItemsValEO valEO = new SarFileSplitItemsValEO(); + valEO.setItemId(reaultItemId); + valEO.setType("TEXT"); + valEO.setItemContent(itemsEO.getItemsNum()); + valEO.setId(UUIDUtils.randomUUID20()); + valEO.setValidFlag(0); + valEO.setCreationTime(new Date()); + valEO.setModifyTime(new Date()); + valEO.setCreationUser(userId); + valEO.setModifyUser(userId); + resultValList.add(valEO); + SarFileSplitItemsValEOPage valEOPage1 = new SarFileSplitItemsValEOPage(); + valEOPage1.setItemId(itemsEO.getId()); + List valList1 = sarFileSplitItemsValEODao.queryByList(valEOPage1); + resultValList.addAll(valList1); + } + // 开始进行合并数据处理 + changeInfos(resultContent, reaultItemId, delMenuIds, delIds, resultValList); + } + } + + @Override + public List queryByList2(SarFileSplitItemsEOPage page) { + return sarFileSplitItemsEODao.queryByList2(page); + } + + public void changeInfos (StringBuilder resultContent,String reaultItemId,List delMenuIds,List delIds,List resultValList) { + //1.更新最终合并的条款内容 + if (resultContent != null) { + SarFileSplitItemsEO newItems = new SarFileSplitItemsEO(); + newItems.setId(reaultItemId); + newItems.setItermsConditions(resultContent.toString()); + newItems.setWorkFlowShow("1"); + dao.updateByPrimaryKeySelective(newItems); + } + // 2.删除多余节点数据 + if (delMenuIds != null && !delMenuIds.isEmpty()) { + sarFileSplitMenuEODao.deleteByIdList(delMenuIds); + } + // 3.删除多余条款及val表数据 + if (delIds != null && !delIds.isEmpty()) { + dao.deleteByItemsIdList(delIds); + delIds.add(reaultItemId); + sarFileSplitItemsValEODao.deleteValByitemIds(delIds); + } + // 4.保存新的val表数据 + if (resultValList != null && !resultValList.isEmpty()) { + int ind = 0; + for (SarFileSplitItemsValEO valEO : resultValList) { + ind++; + valEO.setItemId(reaultItemId); + valEO.setDisplaySeq(ind); + } + sarFileSplitItemsValEODao.insertForeach(resultValList); + } + } + + public static void copyFile1(String srcPath, String destPath) throws IOException { + // 打开输入流 + FileInputStream fis = new FileInputStream(srcPath); + // 打开输出流 + FileOutputStream fos = new FileOutputStream(destPath); + // 读取和写入信息 + int len = 0; + while ((len = fis.read()) != -1) { + fos.write(len); + } + // 关闭流 先开后关 后开先关 + fos.close(); // 后开先关 + fis.close(); // 先开后关 + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsParamsEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsParamsEOServiceImpl.java new file mode 100644 index 00000000..fd048cd4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsParamsEOServiceImpl.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.standardSplit.dao.SarFileSplitItemsParamsEODao; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsParamsEO; +import com.adc.da.slrs.standardSplit.entity.SarFileSplitItemsParamsEOPage; +import com.adc.da.slrs.standardSplit.service.SarFileSplitItemsParamsEOService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarFileSplitItemsParamsEOServiceImpl implements SarFileSplitItemsParamsEOService { + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitItemsParamsEOServiceImpl.class); + + @Autowired + private SarFileSplitItemsParamsEODao sarFileSplitItemsParamsEODao; + + @Override + public List queryByList(SarFileSplitItemsParamsEOPage paramPage) { + return sarFileSplitItemsParamsEODao.queryByList(paramPage); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsTableEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsTableEOServiceImpl.java new file mode 100644 index 00000000..63c5a0e8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsTableEOServiceImpl.java @@ -0,0 +1,14 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.standardSplit.service.SarFileSplitItemsTableEOService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarFileSplitItemsTableEOServiceImpl implements SarFileSplitItemsTableEOService { + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitItemsTableEOServiceImpl.class); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsValEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsValEOServiceImpl.java new file mode 100644 index 00000000..72ab7888 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitItemsValEOServiceImpl.java @@ -0,0 +1,104 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.standardSplit.dao.SarFileSplitItemsEODao; +import com.adc.da.slrs.standardSplit.dao.SarFileSplitItemsTableEODao; +import com.adc.da.slrs.standardSplit.dao.SarFileSplitItemsValEODao; +import com.adc.da.slrs.standardSplit.entity.*; +import com.adc.da.slrs.standardSplit.service.SarFileSplitItemsValEOService; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarFileSplitItemsValEOServiceImpl implements SarFileSplitItemsValEOService { + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitItemsValEOServiceImpl.class); + + @Autowired + private SarFileSplitItemsValEODao sarFileSplitItemsValEODao; + @Autowired + private SarFileSplitItemsEODao sarFileSplitItemsEODao; + @Autowired + private SarFileSplitItemsTableEODao sarFileSplitItemsTableEODao; + + @Override + public List queryByList(SarFileSplitItemsValEOPage valEOPage) { + return sarFileSplitItemsValEODao.queryByList(valEOPage); + } + + @Override + public List queryByPage(SarFileSplitItemsValEOPage page) { + return sarFileSplitItemsValEODao.queryByPage(page); + } + + @Override + public SarFileSplitItemsValEO selectByPrimaryKey(String id) { + return sarFileSplitItemsValEODao.selectByPrimaryKey(id); + } + + @Override + public void insertSelective(SarFileSplitItemsValEO sarFileSplitItemsValEO) { + sarFileSplitItemsValEODao.insertSelective(sarFileSplitItemsValEO); + } + + @Override + public void updateByPrimaryKeySelective(SarFileSplitItemsValEO sarFileSplitItemsValEO) { + sarFileSplitItemsValEODao.updateByPrimaryKeySelective(sarFileSplitItemsValEO); + } + + @Override + public void deleteByPrimaryKey(String id) { + sarFileSplitItemsValEODao.deleteByPrimaryKey(id); + } + + @Override + public List getSplitItemsByMenu(String menuId, String infoId) { + List rows = sarFileSplitItemsEODao.queryItemsByMenuId(menuId);; + List getList = new ArrayList<>(); + if (rows != null && !rows.isEmpty()) { + for (SarFileSplitItemsEO sarFileSplitItemsEO : rows) { + SarFileSplitItemsValEOPage valpage = new SarFileSplitItemsValEOPage(); + valpage.setItemId(sarFileSplitItemsEO.getId()); + valpage.setOrderBy("DISPLAY_SEQ,ID"); + List getListVal = sarFileSplitItemsValEODao.queryByList(valpage); + if (getList != null && !getList.isEmpty()) { + for (SarFileSplitItemsValEO sarFileSplitItemsValEO : getList) { + String imgPath = sarFileSplitItemsValEO.getItemContent(); + if ("IMG".equals(sarFileSplitItemsValEO.getType()) && StringUtils.isNotEmpty(imgPath)) { + String imgName = imgPath.substring(imgPath.lastIndexOf("/")+1, imgPath.length()); + sarFileSplitItemsValEO.setImgName(imgName); + } else if ("TABLE".equals(sarFileSplitItemsValEO.getType())) { + SarFileSplitItemsTableEOPage tablePage = new SarFileSplitItemsTableEOPage(); + tablePage.setItemsValId(sarFileSplitItemsValEO.getId()); + List tableList = sarFileSplitItemsTableEODao.queryByList(tablePage); + List tableListRow = sarFileSplitItemsTableEODao.queryByRowNum(tablePage); + sarFileSplitItemsValEO.setTableList(tableList); + if (tableListRow != null && !tableListRow.isEmpty()) { + List> getTableList = new ArrayList<>(); + for (int i=1; i <= tableListRow.size();i++) { + List rowList = new ArrayList<>(); + for (int j=0; j < tableList.size();j++) { + if (tableList.get(j).getRowNum() == i) { + rowList.add(tableList.get(j)); + } + } + getTableList.add(rowList); + } + sarFileSplitItemsValEO.setTableListShow(getTableList); + } + } + } + } + getList.addAll(getListVal); + } + } + return getList; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitMenuEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitMenuEOServiceImpl.java new file mode 100644 index 00000000..4000382a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarFileSplitMenuEOServiceImpl.java @@ -0,0 +1,471 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.base.page.BasePage; +import com.adc.da.slrs.standardSplit.dao.*; +import com.adc.da.slrs.standardSplit.entity.*; +import com.adc.da.slrs.standardSplit.service.SarFileSplitMenuEOService; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.sys.util.UUIDUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.*; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarFileSplitMenuEOServiceImpl implements SarFileSplitMenuEOService { + private static final Logger logger = LoggerFactory.getLogger(SarFileSplitMenuEOServiceImpl.class); + + @Autowired + private SarFileSplitMenuEODao dao; + @Autowired + private SarFileSplitItemsEODao sarFileSplitItemsEODao; + @Autowired + private SarFileSplitItemsValEODao sarFileSplitItemsValEODao; + @Autowired + private SarFileSplitItemsTableEODao sarFileSplitItemsTableEODao; + @Autowired + private SarFileSplitMenuEODao SarFileSplitMenuEODao; + @Autowired + private SarFileSplitItemsParamsEODao sarFileSplitItemsParamsEODao; + + @Override + public List queryByPage(BasePage page){ + return SarFileSplitMenuEODao.queryByPage(page); + } + + @Override + public List queryByList(SarFileSplitMenuEOPage page){ + return SarFileSplitMenuEODao.queryByList(page); + } + + @Override + public SarFileSplitMenuEO selectByPrimaryKey(String id){ + return SarFileSplitMenuEODao.selectByPrimaryKey(id); + } + + @Override + public int addMenu(SarFileSplitMenuEO sarFileSplitMenuEO){ + sarFileSplitMenuEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitMenuEO.setValidFlag(0); + sarFileSplitMenuEO.setCreationTime(new Date()); + sarFileSplitMenuEO.setModifyTime(new Date()); + int count = dao.insertSelective(sarFileSplitMenuEO); + // 之后的所有节点序号增加 + SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage(); + page.setPId(sarFileSplitMenuEO.getPId()); + List getList = dao.queryByList(page); + if (getList != null && !getList.isEmpty()) { + for(SarFileSplitMenuEO menu : getList){ + Long olgSeq = menu.getDisplaySeq(); + if (olgSeq >= sarFileSplitMenuEO.getDisplaySeq()) { + menu.setDisplaySeq(olgSeq + 1); + dao.updateByPrimaryKeySelective(menu); + } + } + } + return count; + } + + @Override + public int updateByPrimaryKeySelective(SarFileSplitMenuEO sarFileSplitMenuEO){ + return dao.updateByPrimaryKeySelective(sarFileSplitMenuEO); + } + + @Override + public void deleteMenu(String id) { + List menuIds = new ArrayList<>(); + menuIds.add(id); + // 删除节点及子节点 + List ids = dao.getChild(id); + if(ids!=null && !ids.isEmpty()){ + dao.deleteByPId(ids); + sarFileSplitItemsValEODao.deleteValByMenuIds(ids); + sarFileSplitItemsTableEODao.deleteTableByMenuIds(ids); + sarFileSplitItemsEODao.deleteByMenuIds(ids); + } + } + + @Override + public int dragMenu(DrageMenuEO drageMenuEO) { + SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); + sarFileSplitMenuEO.setInfoId(drageMenuEO.getInfoId()); + sarFileSplitMenuEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitMenuEO.setModifyTime(new Date()); + sarFileSplitMenuEO.setId(drageMenuEO.getMenuId()); + int result = 0; + if (drageMenuEO.getMoveType().equals("inner")) { + sarFileSplitMenuEO.setPId(drageMenuEO.getTargetMenuId()); + if (drageMenuEO.getMenuDisplay()>drageMenuEO.getTargetMenuDisplay()) { + // 修改被影响的其他节点的排序,修改时间,修改人 + long childrenCount = dao.getChildrenCountByParentId(drageMenuEO.getMenuId()); + sarFileSplitMenuEO.setChildrenCount(childrenCount); + sarFileSplitMenuEO.setDisplaySeqStart(drageMenuEO.getTargetMenuDisplay()+1); + sarFileSplitMenuEO.setDisplaySeqEnd(drageMenuEO.getMenuDisplay()); + result += dao.updateDisplaySeqAdd(sarFileSplitMenuEO); + // 如果子节点个数多,都需修改 + if (childrenCount>1) { + // 计算移动节点前后排序差 + long betwttenNum = drageMenuEO.getMenuDisplay()-drageMenuEO.getTargetMenuDisplay()-1; + SarFileSplitMenuEO childrenUpdateEO = new SarFileSplitMenuEO(); + childrenUpdateEO.setId(drageMenuEO.getMenuId()); + childrenUpdateEO.setChildrenCount(betwttenNum); + childrenUpdateEO.setModifyTime(new Date()); + childrenUpdateEO.setModifyUser(LoginUserUtil.getUserId()); + result += dao.updateChildrenDisplaySeqByIDCut(childrenUpdateEO); + } + sarFileSplitMenuEO.setDisplaySeq(drageMenuEO.getTargetMenuDisplay()+1); + } else { + // 修改被影响的其他节点的排序,修改时间,修改人 + long childrenCount = dao.getChildrenCountByParentId(drageMenuEO.getMenuId()); + sarFileSplitMenuEO.setChildrenCount(childrenCount); + sarFileSplitMenuEO.setDisplaySeqStart(drageMenuEO.getMenuDisplay()+childrenCount-1); + sarFileSplitMenuEO.setDisplaySeqEnd(drageMenuEO.getTargetMenuDisplay()); + result += dao.updateDisplaySeqCut(sarFileSplitMenuEO); + // 如果子节点个数多,都需修改 + if (childrenCount>1) { + // 计算移动节点前后排序差 + long betwttenNum = drageMenuEO.getTargetMenuDisplay()-childrenCount+1- drageMenuEO.getMenuDisplay(); + SarFileSplitMenuEO childrenUpdateEO = new SarFileSplitMenuEO(); + childrenUpdateEO.setId(drageMenuEO.getMenuId()); + childrenUpdateEO.setChildrenCount(betwttenNum); + childrenUpdateEO.setModifyTime(new Date()); + childrenUpdateEO.setModifyUser(LoginUserUtil.getUserId()); + result += dao.updateChildrenDisplaySeqByIDAdd(childrenUpdateEO); + } + sarFileSplitMenuEO.setDisplaySeq(drageMenuEO.getTargetMenuDisplay()-childrenCount+1); + } + } else if (drageMenuEO.getMoveType().equals("prev")) { + sarFileSplitMenuEO.setPId(drageMenuEO.getTargetParentId()); + if (drageMenuEO.getMenuDisplay()>drageMenuEO.getTargetMenuDisplay()) { + // 修改被影响的其他节点的排序,修改时间,修改人 + long childrenCount = dao.getChildrenCountByParentId(drageMenuEO.getMenuId()); + sarFileSplitMenuEO.setChildrenCount(childrenCount); + sarFileSplitMenuEO.setDisplaySeqStart(drageMenuEO.getTargetMenuDisplay()); + sarFileSplitMenuEO.setDisplaySeqEnd(drageMenuEO.getMenuDisplay()); + result += dao.updateDisplaySeqAdd(sarFileSplitMenuEO); + // 如果子节点个数多,都需修改 + if (childrenCount>1) { + // 计算移动节点前后排序差 + long betwttenNum = drageMenuEO.getMenuDisplay()-drageMenuEO.getTargetMenuDisplay(); + SarFileSplitMenuEO childrenUpdateEO = new SarFileSplitMenuEO(); + childrenUpdateEO.setId(drageMenuEO.getMenuId()); + childrenUpdateEO.setChildrenCount(betwttenNum); + childrenUpdateEO.setModifyTime(new Date()); + childrenUpdateEO.setModifyUser(LoginUserUtil.getUserId()); + result += dao.updateChildrenDisplaySeqByIDCut(childrenUpdateEO); + } + sarFileSplitMenuEO.setDisplaySeq(drageMenuEO.getTargetMenuDisplay()); + } else { + // 修改被影响的其他节点的排序,修改时间,修改人 + long childrenCount = dao.getChildrenCountByParentId(drageMenuEO.getMenuId()); + sarFileSplitMenuEO.setDisplaySeqStart(drageMenuEO.getMenuDisplay()+childrenCount-1); + sarFileSplitMenuEO.setDisplaySeqEnd(drageMenuEO.getTargetMenuDisplay()-1); + sarFileSplitMenuEO.setChildrenCount(childrenCount); + result += dao.updateDisplaySeqCut(sarFileSplitMenuEO); + // 如果子节点个数多,都需修改 + if (childrenCount>1) { + // 计算移动节点前后排序差 + long betwttenNum = drageMenuEO.getTargetMenuDisplay()- childrenCount - drageMenuEO.getMenuDisplay(); + SarFileSplitMenuEO childrenUpdateEO = new SarFileSplitMenuEO(); + childrenUpdateEO.setId(drageMenuEO.getMenuId()); + childrenUpdateEO.setChildrenCount(betwttenNum); + childrenUpdateEO.setModifyTime(new Date()); + childrenUpdateEO.setModifyUser(LoginUserUtil.getUserId()); + result += dao.updateChildrenDisplaySeqByIDAdd(childrenUpdateEO); + } + + sarFileSplitMenuEO.setDisplaySeq(drageMenuEO.getTargetMenuDisplay()-childrenCount); + } + + } else { + sarFileSplitMenuEO.setPId(drageMenuEO.getTargetParentId()); + if (drageMenuEO.getMenuDisplay()>drageMenuEO.getTargetMenuDisplay()) { + // 修改被影响的其他节点的排序,修改时间,修改人 往上移动 + // 查询目标最大的排序 + long targetDisplay = getMaxDisplayByid(drageMenuEO.getTargetMenuId()); + // 查询移动节点包括子节点一共有多少个 + long childrenCount = dao.getChildrenCountByParentId(drageMenuEO.getMenuId()); + sarFileSplitMenuEO.setDisplaySeqStart(targetDisplay+1); + sarFileSplitMenuEO.setChildrenCount(childrenCount); + sarFileSplitMenuEO.setDisplaySeqEnd(drageMenuEO.getMenuDisplay()); + result += dao.updateDisplaySeqAdd(sarFileSplitMenuEO); + // 如果子节点个数多,都需修改 + if (childrenCount>1) { + // 计算移动节点前后排序差 + long betwttenNum = drageMenuEO.getMenuDisplay()-targetDisplay-1; + SarFileSplitMenuEO childrenUpdateEO = new SarFileSplitMenuEO(); + childrenUpdateEO.setId(drageMenuEO.getMenuId()); + childrenUpdateEO.setChildrenCount(betwttenNum); + childrenUpdateEO.setModifyTime(new Date()); + childrenUpdateEO.setModifyUser(LoginUserUtil.getUserId()); + result += dao.updateChildrenDisplaySeqByIDCut(childrenUpdateEO); + } + sarFileSplitMenuEO.setDisplaySeq(targetDisplay+1); + } else { + // 修改被影响的其他节点的排序,修改时间,修改人 往下移动 + // 如果该节点下有字节点,寻找该节点包括所有子节点的最大排序 + // 查询目标最大的排序 + long targetDisplay = getMaxDisplayByid(drageMenuEO.getTargetMenuId()); + long menuMaxDisplay = getMaxDisplayByid(drageMenuEO.getMenuId()); + // 查询移动节点包括子节点一共有多少个 + long childrenCount = dao.getChildrenCountByParentId(drageMenuEO.getMenuId()); + sarFileSplitMenuEO.setDisplaySeqStart(menuMaxDisplay); + sarFileSplitMenuEO.setChildrenCount(childrenCount); + sarFileSplitMenuEO.setDisplaySeqEnd(targetDisplay); + result += dao.updateDisplaySeqCut(sarFileSplitMenuEO); + // 如果子节点个数多,都需修改 + if (childrenCount>1) { + // 计算移动节点前后排序差 + long betwttenNum = targetDisplay-childrenCount+1 - drageMenuEO.getMenuDisplay(); + SarFileSplitMenuEO childrenUpdateEO = new SarFileSplitMenuEO(); + childrenUpdateEO.setId(drageMenuEO.getMenuId()); + childrenUpdateEO.setChildrenCount(betwttenNum); + childrenUpdateEO.setModifyTime(new Date()); + childrenUpdateEO.setModifyUser(LoginUserUtil.getUserId()); + result += dao.updateChildrenDisplaySeqByIDAdd(childrenUpdateEO); + } + sarFileSplitMenuEO.setDisplaySeq(targetDisplay-childrenCount+1); + // 修改字节的的排序 + } + } + // 修改当前节点,父亲Id,排序,修改时间,修改人 + result += dao.updateByPrimaryKeySelective(sarFileSplitMenuEO); + return result; + } + + // 通过ID查询该结点及结点下所有的节点排序的最大值 + public int getMaxDisplayByid(String menuID) { + return dao.getMaxDisplayByid(menuID); + } + + @Override + public boolean judgequeryMenuByPid(SarFileSplitMenuEO sarMenuEO) throws Exception { + boolean result = false; //true 表示有记录,false表示无记录 + //先判断目录下是否有子节点 + List list = dao.queryByPidExcpetSelf(sarMenuEO); + if(list.size()<=0){ + //再查节点下是否有标准,法规,企业标准记录 + SarFileSplitItemsEOPage itemEO = new SarFileSplitItemsEOPage(); + itemEO.setMenuId(sarMenuEO.getId()); + itemEO.setValidFlag("0"); + List listresult = sarFileSplitItemsEODao.queryByList(itemEO); + if(listresult !=null && listresult.size()>0){ + result=true; + } + } + else{ + result=true; + } + return result; + } + + @Override + public int copyMenu (SarFileSplitMenuEO sarMenuEO) { + int result = 0; + // 用来存放item的新旧ID,key:旧ID,value:新ID + Map itemIdMap = new HashMap<>(); + List oldItemIdList = new ArrayList<>(); + Map itemValIdMap = new HashMap<>(); + Map menuIdMap = new HashMap<>(); + // 根据目录ID查询相关信息 + sarMenuEO = dao.selectByPrimaryKey(sarMenuEO.getId()); + // 查询该节点下所有的 子节点 并修改排序 + List sarFileSplitMenuEOList = dao.queryAllChildrenByid(sarMenuEO); + int maxDisplay = dao.getMaxDisplayByid(sarMenuEO.getId()); + SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); + sarFileSplitMenuEO.setDisplaySeqStart(Long.valueOf(maxDisplay + 1)); + sarFileSplitMenuEO.setDisplaySeqEnd(10000L); + sarFileSplitMenuEO.setChildrenCount(Long.valueOf(sarFileSplitMenuEOList.size())); + sarFileSplitMenuEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitMenuEO.setModifyTime(new Date()); + sarFileSplitMenuEO.setInfoId(sarMenuEO.getInfoId()); + dao.updateDisplaySeqAdd(sarFileSplitMenuEO); + for (SarFileSplitMenuEO sarFileSplitMenuEOfor : sarFileSplitMenuEOList) { + menuIdMap.put(sarFileSplitMenuEOfor.getId(),UUIDUtils.randomUUID20()); + } + for (SarFileSplitMenuEO sarFileSplitMenuEOfor : sarFileSplitMenuEOList) { + sarFileSplitMenuEOfor.setId(menuIdMap.get(sarFileSplitMenuEOfor.getId()).toString()); + if (menuIdMap.containsKey(sarFileSplitMenuEOfor.getpId())){ + sarFileSplitMenuEOfor.setpId(menuIdMap.get(sarFileSplitMenuEOfor.getpId()).toString()); + } + sarFileSplitMenuEOfor.setDisplaySeq(sarFileSplitMenuEOfor.getDisplaySeq() + sarFileSplitMenuEOList.size()); + sarFileSplitMenuEOfor.setCreationTime(new Date()); + sarFileSplitMenuEOfor.setModifyTime(new Date()); + sarFileSplitMenuEOfor.setCreationUser(LoginUserUtil.getUserId()); + sarFileSplitMenuEOfor.setModifyUser(LoginUserUtil.getUserId()); + } + // SAR_FILE_ITEMS_MENU 添加数据, + result = dao.insertForeach(sarFileSplitMenuEOList); + // SAR_FILE_ITEMS 添加数据, + List sarFileSplitItemsEOList = sarFileSplitItemsEODao.queryItemsByMenuId(sarMenuEO.getId()); + for (SarFileSplitItemsEO sarFileSplitItemsEO : sarFileSplitItemsEOList) { + String newItemId = UUIDUtils.randomUUID20(); + oldItemIdList.add(sarFileSplitItemsEO.getId()); + itemIdMap.put(sarFileSplitItemsEO.getId(), newItemId); + sarFileSplitItemsEO.setId(newItemId); + sarFileSplitItemsEO.setMenuId(menuIdMap.get(sarFileSplitItemsEO.getMenuId()).toString()); + sarFileSplitItemsEO.setCreationTime(new Date()); + sarFileSplitItemsEO.setModifyTime(new Date()); + sarFileSplitItemsEO.setCreationUser(LoginUserUtil.getUserId()); + sarFileSplitItemsEO.setModifyUser(LoginUserUtil.getUserId()); + } + result += sarFileSplitItemsEODao.insertForeach(sarFileSplitItemsEOList); + // SAR_FILE_ITEMS_VAL 添加数据, + List sarFileSplitItemsValEOList = sarFileSplitItemsValEODao.queryItemsValByMenuId(oldItemIdList); + for (SarFileSplitItemsValEO sarFileSplitItemsValEO : sarFileSplitItemsValEOList) { + String newItemValId = UUIDUtils.randomUUID20(); + itemValIdMap.put(sarFileSplitItemsValEO.getId(), newItemValId); + sarFileSplitItemsValEO.setId(newItemValId); + sarFileSplitItemsValEO.setItemId(itemIdMap.get(sarFileSplitItemsValEO.getItemId()).toString()); + sarFileSplitItemsValEO.setCreationTime(new Date()); + sarFileSplitItemsValEO.setModifyTime(new Date()); + sarFileSplitItemsValEO.setCreationUser(LoginUserUtil.getUserId()); + sarFileSplitItemsValEO.setModifyUser(LoginUserUtil.getUserId()); + } + if (sarFileSplitItemsValEOList.size()>0) { + result += sarFileSplitItemsValEODao.insertForeach(sarFileSplitItemsValEOList); + } + // SAR_FILE_ITEMS_PARAMS 添加数据, + List sarFileSplitItemsParamsEOList = sarFileSplitItemsParamsEODao.queryItemsParamsByMenuId(oldItemIdList); + for (SarFileSplitItemsParamsEO sarFileSplitItemsParamsEO : sarFileSplitItemsParamsEOList) { + sarFileSplitItemsParamsEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsParamsEO.setItemId(itemIdMap.get(sarFileSplitItemsParamsEO.getItemId()).toString()); + sarFileSplitItemsParamsEO.setCreationTime(new Date()); + sarFileSplitItemsParamsEO.setModifyTime(new Date()); + } + if (sarFileSplitItemsParamsEOList.size()>0){ + result += sarFileSplitItemsParamsEODao.insertForeach(sarFileSplitItemsParamsEOList); + } + return result; + } + + @Override + public int copyMenuNotChildren(SarFileSplitItemsEO sarFileSplitItemsEO) { + int result =0; + List oldItemIdList = new ArrayList<>(); + Map itemValIdMap = new HashMap<>(); + oldItemIdList.add(sarFileSplitItemsEO.getId()); + + sarFileSplitItemsEO = sarFileSplitItemsEODao.selectByPrimaryKey(sarFileSplitItemsEO.getId()); + + // 查询该节点下所有的 子节点 并修改排序 + SarFileSplitMenuEO sarMenuEO = new SarFileSplitMenuEO(); + sarMenuEO.setId(sarFileSplitItemsEO.getMenuId()); + List sarFileSplitMenuEOList = dao.queryAllChildrenByid(sarMenuEO); + sarMenuEO = dao.selectByPrimaryKey(sarMenuEO.getId()); + int maxDisplay = dao.getMaxDisplayByid(sarMenuEO.getId()); + SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO(); + sarFileSplitMenuEO.setDisplaySeqStart(Long.valueOf(maxDisplay + 1)); + sarFileSplitMenuEO.setDisplaySeqEnd(10000L); + sarFileSplitMenuEO.setChildrenCount(1L); + sarFileSplitMenuEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitMenuEO.setModifyTime(new Date()); + sarFileSplitMenuEO.setInfoId(sarFileSplitItemsEO.getInfoId()); + dao.updateDisplaySeqAdd(sarFileSplitMenuEO); + + // SAR_FILE_ITEMS_MENU 添加数据, + sarMenuEO.setId(UUIDUtils.randomUUID20()); + sarMenuEO.setDisplaySeq(Long.valueOf(maxDisplay + 1)); + sarMenuEO.setCreationTime(new Date()); + sarMenuEO.setModifyTime(new Date()); + sarMenuEO.setCreationUser(LoginUserUtil.getUserId()); + sarMenuEO.setModifyUser(LoginUserUtil.getUserId()); + result = dao.insertSelective(sarMenuEO); + + // SAR_FILE_ITEMS 添加数据, + sarFileSplitItemsEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsEO.setMenuId(sarMenuEO.getId()); + sarFileSplitItemsEO.setCreationTime(new Date()); + sarFileSplitItemsEO.setModifyTime(new Date()); + sarFileSplitItemsEO.setCreationUser(LoginUserUtil.getUserId()); + sarFileSplitItemsEO.setModifyUser(LoginUserUtil.getUserId()); + sarFileSplitItemsEO.setEditFlag(String.valueOf(UUID.randomUUID())); + sarFileSplitItemsEO.setWorkFlowShow(sarFileSplitItemsEO.getWorkFlowShow()); + result += sarFileSplitItemsEODao.insertSelective(sarFileSplitItemsEO); + + // SAR_FILE_ITEMS_VAL 添加数据, + List sarFileSplitItemsValEOList = sarFileSplitItemsValEODao.queryItemsValByMenuId(oldItemIdList); + for (SarFileSplitItemsValEO sarFileSplitItemsValEO : sarFileSplitItemsValEOList) { + String newItemValId = UUIDUtils.randomUUID20(); + itemValIdMap.put(sarFileSplitItemsValEO.getId(), newItemValId); + sarFileSplitItemsValEO.setId(newItemValId); + sarFileSplitItemsValEO.setItemId(sarFileSplitItemsEO.getId()); + sarFileSplitItemsValEO.setCreationTime(new Date()); + sarFileSplitItemsValEO.setModifyTime(new Date()); + sarFileSplitItemsValEO.setCreationUser(LoginUserUtil.getUserId()); + sarFileSplitItemsValEO.setModifyUser(LoginUserUtil.getUserId()); + } + if (sarFileSplitItemsValEOList.size()>0) { + result += sarFileSplitItemsValEODao.insertForeach(sarFileSplitItemsValEOList); + } + // SAR_FILE_ITEMS_PARAMS 添加数据, + List sarFileSplitItemsParamsEOList = sarFileSplitItemsParamsEODao.queryItemsParamsByMenuId(oldItemIdList); + for (SarFileSplitItemsParamsEO sarFileSplitItemsParamsEO : sarFileSplitItemsParamsEOList) { + sarFileSplitItemsParamsEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsParamsEO.setItemId(sarFileSplitItemsEO.getId()); + sarFileSplitItemsParamsEO.setCreationTime(new Date()); + sarFileSplitItemsParamsEO.setModifyTime(new Date()); + } + if (sarFileSplitItemsParamsEOList.size()>0){ + result += sarFileSplitItemsParamsEODao.insertForeach(sarFileSplitItemsParamsEOList); + } + // SAR_FILE_ITEMS_TABLE 添加数据, + List sarFileSplitItemsTableEOList = sarFileSplitItemsTableEODao.queryItemsTableByMenuId(oldItemIdList); + for (SarFileSplitItemsTableEO sarFileSplitItemsTableEO : sarFileSplitItemsTableEOList) { + sarFileSplitItemsTableEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsTableEO.setItemsId(sarFileSplitItemsEO.getId()); + sarFileSplitItemsTableEO.setItemsValId(itemValIdMap.get(sarFileSplitItemsTableEO.getItemsValId()).toString()); + sarFileSplitItemsTableEO.setCreationTime(new Date()); + sarFileSplitItemsTableEO.setModifyTime(new Date()); + sarFileSplitItemsTableEO.setModifyUser(LoginUserUtil.getUserId()); + } + if (sarFileSplitItemsTableEOList.size()>0){ + result += sarFileSplitItemsTableEODao.insertForeach(sarFileSplitItemsTableEOList); + } + return result; + } + + @Override + public String addMenuForImport(SarFileSplitMenuEO sarFileSplitMenuEO) { + sarFileSplitMenuEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitMenuEO.setValidFlag(0); + sarFileSplitMenuEO.setCreationTime(new Date()); + sarFileSplitMenuEO.setModifyTime(new Date()); + int count = dao.insertSelective(sarFileSplitMenuEO); + // 之后的所有节点序号增加 + /*SarFileSplitMenuEOPage page = new SarFileSplitMenuEOPage(); + page.setPId(sarFileSplitMenuEO.getPId()); + List getList = dao.queryByList(page); + if (getList != null && !getList.isEmpty()) { + for(SarFileSplitMenuEO menu : getList){ + Long olgSeq = menu.getDisplaySeq(); + if (olgSeq >= sarFileSplitMenuEO.getDisplaySeq()) { + menu.setDisplaySeq(olgSeq + 1); + dao.updateByPrimaryKeySelective(menu); + } + } + }*/ + return sarFileSplitMenuEO.getId(); + } + + @Override + public List getChildData(String id) { + List res=new ArrayList<>(); + return dealData(id,res); + } + + private List dealData(String id ,List res){ + List strings = SarFileSplitMenuEODao.getChildData(id); + res.addAll(strings); + if (null!=strings && strings.size()>0){ + return this.dealData(StringUtils.join(strings,","),res); + }else { + return res; + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarItemsCompareHisEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarItemsCompareHisEOServiceImpl.java new file mode 100644 index 00000000..64aa7e76 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarItemsCompareHisEOServiceImpl.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.standardSplit.dao.SarItemsCompareHisEODao; +import com.adc.da.slrs.standardSplit.entity.*; +import com.adc.da.slrs.standardSplit.service.SarItemsCompareHisEOService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarItemsCompareHisEOServiceImpl implements SarItemsCompareHisEOService { + private static final Logger logger = LoggerFactory.getLogger(SarItemsCompareHisEOServiceImpl.class); + + @Autowired + private SarItemsCompareHisEODao sarItemsCompareHisEODao; + + @Override + public int insertSelective(SarItemsCompareHisEO sarItemsCompareHisEO) { + return sarItemsCompareHisEODao.insertSelective(sarItemsCompareHisEO); + } + + @Override + public void deleteByStandHisId(String id) { + sarItemsCompareHisEODao.deleteByStandHisId(id); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarLawsInfoEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarLawsInfoEOServiceImpl.java new file mode 100644 index 00000000..cb5de8b1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarLawsInfoEOServiceImpl.java @@ -0,0 +1,47 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.standardSplit.entity.SarLawsInfoEO; +import com.adc.da.slrs.standardSplit.entity.SarLawsInfoEOPage; +import com.adc.da.slrs.standardSplit.service.SarLawsInfoEOService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarLawsInfoEOServiceImpl implements SarLawsInfoEOService { + private static final Logger logger = LoggerFactory.getLogger(SarLawsInfoEOServiceImpl.class); + +// @Autowired +// private SarMenuEOService sarMenuEOService; + + public List getLawsInfoPage(SarLawsInfoEOPage page) throws Exception { + //查询当前登录人角色拥有权限的菜单 +// List getMenuIdList = sarMenuEOService.queryRoleMenuIdList(page.getLawsType()+"_LAWS",null); +// if(getMenuIdList != null && !getMenuIdList.isEmpty()){ +// page.setMenuRoleList(getMenuIdList); +// } else { +// page.setMenuRoleList(null); +// } +// if (page.getMenuId() != null){ +// List sarMenuEOList = sarMenuEODao.queryByList(new SarMenuEOPage()); +// Tree tree = new Tree<>(sarMenuEOList); +// TreeNode treeNode = tree.getTreeNode(page.getMenuId()); +// List menuIds = new ArrayList<>(); +// menuIds.add(treeNode.getNodeId()); +// for (TreeNode node: treeNode.getAllChildren()) { +// menuIds.add(node.getNodeId()); +// } +// page.setMenuIdList(menuIds); +// } +// Integer rowCount = dao.queryByCount(page); +// page.getPager().setRowCount(rowCount); +// List sarlist = dao.queryByPage(page); +// attrInfo(sarlist); +// return sarlist; + return null; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandAttrDetailsEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandAttrDetailsEOServiceImpl.java new file mode 100644 index 00000000..2580a5cb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandAttrDetailsEOServiceImpl.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.standardSplit.dao.SarStandAttrDetailsEODao; +import com.adc.da.slrs.standardSplit.service.SarStandAttrDetailsEOService; +import com.adc.da.sys.common.SelectionResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarStandAttrDetailsEOServiceImpl implements SarStandAttrDetailsEOService { + private static final Logger logger = LoggerFactory.getLogger(SarStandAttrDetailsEOServiceImpl.class); + + @Autowired + private SarStandAttrDetailsEODao sarStandAttrDetailsEODao; + + @Override + public List selectFileFieldForSel(String attrField){ + return sarStandAttrDetailsEODao.selectFileFieldForSel(attrField); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandCompareHisEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandCompareHisEOServiceImpl.java new file mode 100644 index 00000000..825a742e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandCompareHisEOServiceImpl.java @@ -0,0 +1,564 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.slrs.standardSplit.EventUtils.EventEditHistoryHighLightUtil; +import com.adc.da.slrs.standardSplit.dao.SarStandAttrDetailsEODao; +import com.adc.da.slrs.standardSplit.dao.SarStandCompareHisEODao; +import com.adc.da.slrs.standardSplit.entity.*; +import com.adc.da.slrs.standardSplit.service.*; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.constant.ValidFlagEnum; +import com.adc.da.sys.util.LoginUserUtil; +import com.adc.da.sys.util.UUIDUtils; +import com.adc.da.utils.treetool.Tree; +import com.adc.da.utils.treetool.TreeNode; +import com.adc.da.utils.util.CompHanLPUtils; +import com.adc.da.utils.util.DiffUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.text.NumberFormat; +import java.util.*; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarStandCompareHisEOServiceImpl implements SarStandCompareHisEOService { + private static final Logger logger = LoggerFactory.getLogger(SarStandCompareHisEOServiceImpl.class); + + @Autowired + private SarStandCompareHisEODao dao; + @Autowired + private SarStandAttrDetailsEODao sarStandAttrDetailsEODao; + @Autowired + private IPersonCollectEOService personCollectEOService; + @Autowired + private SarStandCompareHisEODao sarStandCompareHisEODao; + @Autowired + private SarFileSplitItemsValEOService sarFileSplitItemsValEOService; + @Autowired + private SarFileSplitItemsEOService sarFileSplitItemsEOService; + @Autowired + private SarItemsCompareHisEOService sarItemsCompareHisEOService; + @Autowired + private SarFileSplitMenuEOService sarFileSplitMenuEOService; + @Autowired + private SarFileSplitInfoEOService sarFileSplitInfoEOService; + @Autowired + private SarStandItemsCompareHisEOService sarStandItemsCompareHisEOService; + + @Override + public List standCompareHisPage(SarStandCompareHisEOPage page) { + if(StringUtils.isNotBlank(page.getShunxu())){ + String sql = "ORDER BY CREATE_TIME "+page.getShunxu(); + page.setSql(sql); + }else{ + String sql = "ORDER BY CREATE_TIME DESC"; + page.setSql(sql); + } + Integer rowCount = dao.queryByCount(page); + page.getPager().setRowCount(rowCount); + List rows = dao.queryByPage(page); + if (rows != null && !rows.isEmpty()) { + for (SarStandCompareHisEO infoEO : rows) { + String collectId = personCollectEOService.queryCollectByUserAndId(infoEO.getId()); + infoEO.setCollectId(collectId); + if (StringUtils.isNotBlank(infoEO.getOldFileType())) { + List getList = sarStandAttrDetailsEODao.selectFileFieldForSel(infoEO.getOldFileType()); + if (getList != null && !getList.isEmpty()) { + infoEO.setOldFileTypeShow(getList.get(0).getLabel()); + } else { + infoEO.setOldFileTypeShow(null); + } + } + if (StringUtils.isNotBlank(infoEO.getNewFileType())) { + List getList = sarStandAttrDetailsEODao.selectFileFieldForSel(infoEO.getNewFileType()); + if (getList != null && !getList.isEmpty()) { + infoEO.setNewFileTypeShow(getList.get(0).getLabel()); + } else { + infoEO.setNewFileTypeShow(null); + } + } + } + } + return rows; + } + + @Override + public List queryByList(SarStandCompareHisEOPage page) { + return sarStandCompareHisEODao.queryByList(page); + } + + @Override + public SarStandCompareHisEO selectByPrimaryKey(String id) { + return sarStandCompareHisEODao.selectByPrimaryKey(id); + } + + @Override + public int insertSelective(SarStandCompareHisEO sarStandCompareHisEO) { + return sarStandCompareHisEODao.insertSelective(sarStandCompareHisEO); + } + + @Override + public int updateByPrimaryKeySelective(SarStandCompareHisEO sarStandCompareHisEO) { + return sarStandCompareHisEODao.updateByPrimaryKeySelective(sarStandCompareHisEO); + } + + @Override + public int deleteByPrimaryKey(String id) { + return sarStandCompareHisEODao.deleteByPrimaryKey(id); + } + + @Override + public Map clauseComparisonEvent(String oldItemId, String newItemId, String standHisId, String flag) { + Map resultMap = new HashMap(); + String oldTxt = ""; + SarFileSplitItemsValEOPage oldPage = new SarFileSplitItemsValEOPage(); + oldPage.setItemId(oldItemId); + oldPage.setType("TEXT"); + oldPage.setOrderBy("DISPLAY_SEQ,ID"); + List oldList = sarFileSplitItemsValEOService.queryByList(oldPage); + if(oldList!=null && !oldList.isEmpty()){ + for(int i = 1;i<=oldList.size();i++){ + if(i==oldList.size()) { + oldTxt += oldList.get(i-1).getItemContent(); + }else{ + oldTxt += oldList.get(i-1).getItemContent() + "i#2\n"; + } + } + } + String newTxt = ""; + SarFileSplitItemsValEOPage newPage = new SarFileSplitItemsValEOPage(); + newPage.setItemId(newItemId); + newPage.setType("TEXT"); + newPage.setOrderBy("DISPLAY_SEQ,ID"); + List newList = sarFileSplitItemsValEOService.queryByList(newPage); + if(newList!=null && !newList.isEmpty()){ + for(int i = 1;i<=newList.size();i++){ + if(i==newList.size()) { + newTxt += newList.get(i-1).getItemContent(); + }else{ + newTxt += newList.get(i-1).getItemContent() + "i#2\n"; + } + } + } + String similarityDegree=""; + double similarity = 100.00; + if(!StringUtils.isNotBlank(oldTxt.trim()) && !StringUtils.isNotBlank(newTxt.trim())){ + similarityDegree = "100.00"; + }else if(StringUtils.isNotBlank(oldTxt.trim()) && StringUtils.isNotBlank(newTxt.trim())){ + similarity = CompHanLPUtils.findSimilarity(oldTxt.trim(), newTxt.trim()); + NumberFormat nf = java.text.NumberFormat.getPercentInstance(); + //nf.setMaximumIntegerDigits(2);//小数点前保留几位 + nf.setMinimumFractionDigits(2);// 小数点后保留几位 + similarityDegree = nf.format(similarity); + }else{ + similarity = 0.00; + similarityDegree = "0.00"; + } + resultMap.put("similarityDegree",similarityDegree); + List leftString = new ArrayList<>(); + List rightString = new ArrayList<>(); + if(similarity >= 0.6){ +// DiffUtils diffUtils = new DiffUtils(); +// List htmlDiffStr = diffUtils.getHtmlDiffStr(oldTxt.trim(), newTxt.trim()); +// List stringList1 = Arrays.asList(htmlDiffStr.get(0).split("
    ")); +// for(String left : stringList1){ +// StringBuilder stringBuilder = new StringBuilder(left); +// stringBuilder.append("
    "); +// leftString.add(stringBuilder.toString()); +// } +// List stringList2 = Arrays.asList(htmlDiffStr.get(1).split("
    ")); +// for(String right : stringList2){ +// StringBuilder stringBuilder = new StringBuilder(right); +// stringBuilder.append("
    "); +// rightString.add(stringBuilder.toString()); +// } + String[] anb = EventEditHistoryHighLightUtil.getHighLightDifferent(oldTxt.trim(), newTxt.trim()); + if(StringUtils.isNotBlank(flag) && flag.equals("2")){ + anb[0] = anb[0].replaceAll("red;", "#ffffff;background-color: red;").replaceAll("i#2\n", "
    "); + anb[1] = anb[1].replaceAll("red;", "#ffffff;background-color: rgb(51, 145, 206);").replaceAll("i#2\n", "
    "); + }else { + anb[0] = anb[0].replaceAll("red;", "#ffffff;background-color: rgb(51, 145, 206);").replaceAll("i#2\n", "
    "); + anb[1] = anb[1].replaceAll("red;", "#ffffff;background-color: red;").replaceAll("i#2\n", "
    "); + } + resultMap.put("leftString",anb[0]); + resultMap.put("rightString",anb[1]); + }else{ + String oldTxtTemp = oldTxt.replace("i#2\n", "
    "); + List stringList1 = Arrays.asList(oldTxtTemp.split("
    ")); + for(String left : stringList1){ + StringBuilder stringBuilder = new StringBuilder(left); + stringBuilder.append(""); + stringBuilder.insert(0,"
    "); + leftString.add(stringBuilder.toString()); + } + resultMap.put("leftString",leftString); + String newTxtTemp = newTxt.replace("i#2\n", "
    "); + List stringList2 = Arrays.asList(newTxtTemp.split("
    ")); + for(String right : stringList2){ + StringBuilder stringBuilder = new StringBuilder(right); + stringBuilder.append("
    "); + stringBuilder.insert(0,"
    "); + rightString.add(stringBuilder.toString()); + } + resultMap.put("rightString",rightString); + } + //往条款比对历史表中添加数据 + if(standHisId != null && !standHisId.isEmpty()){ + SarFileSplitItemsEO leftEo = sarFileSplitItemsEOService.selectByPrimaryKey(oldItemId); + SarFileSplitItemsEO rightEo = sarFileSplitItemsEOService.selectByPrimaryKey(newItemId); + String leftItemsText = ""; + if(leftString != null && !leftString.isEmpty()){ + for(String left : leftString){ + leftItemsText += left; + } + } + String rightItemsText = ""; + if(rightString != null && !rightString.isEmpty()){ + for(String right : rightString){ + rightItemsText += right; + } + } + SarItemsCompareHisEO sarItemsCompareHisEO = new SarItemsCompareHisEO(); + sarItemsCompareHisEO.setId(UUIDUtils.randomUUID20()); + sarItemsCompareHisEO.setOldItemsId(leftEo.getId()); + sarItemsCompareHisEO.setOldItemsName(leftEo.getItemsName()); + sarItemsCompareHisEO.setOldItemsNum(leftEo.getItemsNum()); + sarItemsCompareHisEO.setOldItemsText(leftItemsText); + sarItemsCompareHisEO.setNewItemsId(rightEo.getId()); + sarItemsCompareHisEO.setNewItemsName(rightEo.getItemsName()); + sarItemsCompareHisEO.setNewItemsNum(rightEo.getItemsNum()); + sarItemsCompareHisEO.setNewItemsText(rightItemsText); + sarItemsCompareHisEO.setStandHisId(standHisId); + sarItemsCompareHisEO.setSimilarityDegree(similarityDegree); + sarItemsCompareHisEO.setCreateUser(LoginUserUtil.getUserId()); + sarItemsCompareHisEO.setModifyUser(LoginUserUtil.getUserId()); + sarItemsCompareHisEO.setModifyTime(new Date()); + sarItemsCompareHisEO.setCreateTime(new Date()); + sarItemsCompareHisEOService.insertSelective(sarItemsCompareHisEO); + } + SarStandCompareHisEO sarStandCompareHisEO =new SarStandCompareHisEO(); + sarStandCompareHisEO.setId(standHisId); + sarStandCompareHisEO.setCompareStatus("比对完成"); + sarStandCompareHisEODao.updateByPrimaryKeySelective(sarStandCompareHisEO); + if (oldList.size()==0 || newList.size()==0){ + resultMap.put("error","比对数据已删除"); + } + + return resultMap; + } + + @Override + public Map clauseComparison(String oldItemId, String newItemId, String standHisId) { + Map resultMap = new HashMap(); + String oldTxt = ""; + SarFileSplitItemsValEOPage oldPage = new SarFileSplitItemsValEOPage(); + oldPage.setItemId(oldItemId); + oldPage.setType("TEXT"); + oldPage.setOrderBy("DISPLAY_SEQ,ID"); + List oldList = sarFileSplitItemsValEOService.queryByList(oldPage); + if(oldList!=null && !oldList.isEmpty()){ + for(int i = 1;i<=oldList.size();i++){ + if(i==oldList.size()) { + oldTxt += oldList.get(i-1).getItemContent(); + }else{ + oldTxt += oldList.get(i-1).getItemContent() + "\n"; + } + } + } + String newTxt = ""; + SarFileSplitItemsValEOPage newPage = new SarFileSplitItemsValEOPage(); + newPage.setItemId(newItemId); + newPage.setType("TEXT"); + newPage.setOrderBy("DISPLAY_SEQ,ID"); + List newList = sarFileSplitItemsValEOService.queryByList(newPage); + if(newList!=null && !newList.isEmpty()){ + for(int i = 1;i<=newList.size();i++){ + if(i==newList.size()) { + newTxt += newList.get(i-1).getItemContent(); + }else{ + newTxt += newList.get(i-1).getItemContent() + "\n"; + } + } + } + String similarityDegree=""; + double similarity = 100.00; + if(!StringUtils.isNotBlank(oldTxt.trim()) && !StringUtils.isNotBlank(newTxt.trim())){ + similarityDegree = "100.00"; + }else if(StringUtils.isNotBlank(oldTxt.trim()) && StringUtils.isNotBlank(newTxt.trim())){ + similarity = CompHanLPUtils.findSimilarity(oldTxt.trim(), newTxt.trim()); + NumberFormat nf = java.text.NumberFormat.getPercentInstance(); + //nf.setMaximumIntegerDigits(2);//小数点前保留几位 + nf.setMinimumFractionDigits(2);// 小数点后保留几位 + similarityDegree = nf.format(similarity); + }else{ + similarity = 0.00; + similarityDegree = "0.00"; + } + resultMap.put("similarityDegree",similarityDegree); + List leftString = new ArrayList<>(); + List rightString = new ArrayList<>(); + if(similarity >= 0.6){ + DiffUtils diffUtils = new DiffUtils(); + List htmlDiffStr = diffUtils.getHtmlDiffStr(oldTxt.trim(), newTxt.trim()); + List stringList1 = Arrays.asList(htmlDiffStr.get(0).split("
    ")); + for(String left : stringList1){ + StringBuilder stringBuilder = new StringBuilder(left); + stringBuilder.append("
    "); + if(similarity <0.75 && left.indexOf(""); + }else{ + stringBuilder.insert(0,"
    "); + } + leftString.add(stringBuilder.toString()); + } + List stringList2 = Arrays.asList(htmlDiffStr.get(1).split("
    ")); + for(String right : stringList2){ + StringBuilder stringBuilder = new StringBuilder(right); + stringBuilder.append("
    "); + if(similarity <0.75 && right.indexOf(""); + }else{ + stringBuilder.insert(0,"
    "); + } + rightString.add(stringBuilder.toString()); + } + resultMap.put("leftString",leftString); + resultMap.put("rightString",rightString); + }else{ + String oldTxtTemp = oldTxt.replace("\n", "
    "); + List stringList1 = Arrays.asList(oldTxtTemp.split("
    ")); + for(String left : stringList1){ + StringBuilder stringBuilder = new StringBuilder(left); + stringBuilder.append("
    "); + stringBuilder.insert(0,"
    "); + leftString.add(stringBuilder.toString()); + } + resultMap.put("leftString",leftString); + String newTxtTemp = newTxt.replace("\n", "
    "); + List stringList2 = Arrays.asList(newTxtTemp.split("
    ")); + for(String right : stringList2){ + StringBuilder stringBuilder = new StringBuilder(right); + stringBuilder.append("
    "); + stringBuilder.insert(0,"
    "); + rightString.add(stringBuilder.toString()); + } + resultMap.put("rightString",rightString); + } + //往条款比对历史表中添加数据 + if(standHisId != null && !standHisId.isEmpty()){ + SarFileSplitItemsEO leftEo = sarFileSplitItemsEOService.selectByPrimaryKey(oldItemId); + SarFileSplitItemsEO rightEo = sarFileSplitItemsEOService.selectByPrimaryKey(newItemId); + String leftItemsText = ""; + if(leftString != null && !leftString.isEmpty()){ + for(String left : leftString){ + leftItemsText += left; + } + } + String rightItemsText = ""; + if(rightString != null && !rightString.isEmpty()){ + for(String right : rightString){ + rightItemsText += right; + } + } + SarItemsCompareHisEO sarItemsCompareHisEO = new SarItemsCompareHisEO(); + sarItemsCompareHisEO.setId(UUIDUtils.randomUUID20()); + sarItemsCompareHisEO.setOldItemsId(leftEo.getId()); + sarItemsCompareHisEO.setOldItemsName(leftEo.getItemsName()); + sarItemsCompareHisEO.setOldItemsNum(leftEo.getItemsNum()); + sarItemsCompareHisEO.setOldItemsText(leftItemsText); + sarItemsCompareHisEO.setNewItemsId(rightEo.getId()); + sarItemsCompareHisEO.setNewItemsName(rightEo.getItemsName()); + sarItemsCompareHisEO.setNewItemsNum(rightEo.getItemsNum()); + sarItemsCompareHisEO.setNewItemsText(rightItemsText); + sarItemsCompareHisEO.setStandHisId(standHisId); + sarItemsCompareHisEO.setSimilarityDegree(similarityDegree); + sarItemsCompareHisEO.setCreateUser(LoginUserUtil.getUserId()); + sarItemsCompareHisEO.setModifyUser(LoginUserUtil.getUserId()); + sarItemsCompareHisEO.setModifyTime(new Date()); + sarItemsCompareHisEO.setCreateTime(new Date()); + sarItemsCompareHisEOService.insertSelective(sarItemsCompareHisEO); + } + + return resultMap; + } + @Async + @Override + public Map fullTextComparison(String leftStandard, String rightStandard,String id) throws Exception{ + Map resultMap = new HashMap(); + List> leftMapList = fullTextComparePackageData(leftStandard); + List> rightMapList = fullTextComparePackageData(rightStandard); + List> resLeftMapList = null; + List> resRightMapList = null; + if(leftMapList != null && !leftMapList.isEmpty() && rightMapList != null && !rightMapList.isEmpty()){ + //双重循环找到相似度最高的条款做关联 + for(int i=0;i=0.6 && compareSimilarity> + **/ + public List> writeResultHtml (List> resMapList) { + List> resultMapList = new ArrayList<>(); + for(Map resMap : resMapList){ + Map map = new HashMap<>(); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("
    "+resMap.get("itemsNum").toString()+" "+resMap.get("itemsName").toString() + ); + String itemsTxt = resMap.get("itemsText").toString(); + stringBuilder.append(itemsTxt); + stringBuilder.append("
    "); + map.put("resultHtml",stringBuilder.toString()); + map.put("targetStand",(Integer)resMap.get("targetStand")); + map.put("itemsId",resMap.get("itemsId").toString()); + resultMapList.add(map); + } + return resMapList; + } + + /** + * @Author yuzhong + * @Description 保存比对历史 + * @Date 17:24 2020/2/24 + * @Param [sarStandCompareHisEO] + * @return void + **/ + @Async + public void addStandCompareHis(String leftStandId,String rightStandId,String compareType, + List> resLeftMapList,List> resRightMapList,String id) throws Exception{ + SarFileSplitInfoEO leftInfo = sarFileSplitInfoEOService.selectByPrimaryKey(leftStandId); + SarFileSplitInfoEO rightInfo = sarFileSplitInfoEOService.selectByPrimaryKey(rightStandId); + //保存标准比对历史表数据 + SarStandCompareHisEO sarStandCompareHisEO = new SarStandCompareHisEO(); +// String id = UUIDUtils.randomUUID20(); + sarStandCompareHisEO.setId(id); + sarStandCompareHisEO.setCompareType(compareType); + sarStandCompareHisEO.setCompareStatus("比对完成"); + dao.updateByPrimaryKeySelective(sarStandCompareHisEO); + //保存标准的所有条款比对的历史数据 + if(resLeftMapList!=null && !resLeftMapList.isEmpty()) { + setStandCompareHisEO(resLeftMapList, id, "LEFT"); + } + if(resRightMapList!=null && !resRightMapList.isEmpty()) { + setStandCompareHisEO(resRightMapList, id, "RIGHT"); + } + } + + public void setStandCompareHisEO(List> mapList,String id,String leftOrRight) throws Exception{ + for(int i=0;i> + **/ + public List> fullTextComparePackageData(String standardId) throws Exception{ + List> mapList = new ArrayList>(); + //调用查询条款接口 + SarFileSplitItemsEOPage sarFileSplitItemsEOPage = new SarFileSplitItemsEOPage(); + sarFileSplitItemsEOPage.setInfoId(standardId); + sarFileSplitItemsEOPage.setValidFlag(String.valueOf(ValidFlagEnum.VALID_TRUE.getValue())); + sarFileSplitItemsEOPage.setOrderBy("SAR_FILE_SPLIT_MENU.display_seq asc"); + + if(com.adc.da.util.utils.StringUtils.isNotEmpty(sarFileSplitItemsEOPage.getMenuId())) { + List sarFileSplitMenuEOList = sarFileSplitMenuEOService.queryByList(new SarFileSplitMenuEOPage()); + Tree tree = new Tree<>(sarFileSplitMenuEOList); + TreeNode treeNode = tree.getTreeNode(sarFileSplitItemsEOPage.getMenuId()); + + List menuIds = new ArrayList<>(); + menuIds.add(treeNode.getNodeId()); + for (TreeNode node : treeNode.getAllChildren()) { + menuIds.add(node.getNodeId()); + } + sarFileSplitItemsEOPage.setMenuIdList(menuIds); + } + + + List itemList = sarFileSplitItemsEOService.queryByList2(sarFileSplitItemsEOPage); + if(itemList != null && !itemList.isEmpty()){ + for(SarFileSplitItemsEO sarFileSplitItemsEO : itemList) { + Map map = new HashMap(); + map.put("itemsNum",sarFileSplitItemsEO.getItemsNum()); + map.put("itemsName",sarFileSplitItemsEO.getItemsName()); + map.put("itemsId",sarFileSplitItemsEO.getId()); + //(内容1\n内容2\n格式) + String txt = ""; + //调用条款内容详情表查询条款内容 + SarFileSplitItemsValEOPage sarFileSplitItemsValEOPage = new SarFileSplitItemsValEOPage(); + sarFileSplitItemsValEOPage.setItemId(sarFileSplitItemsEO.getId()); + sarFileSplitItemsValEOPage.setValidFlag(String.valueOf(ValidFlagEnum.VALID_TRUE.getValue())); + sarFileSplitItemsValEOPage.setType("TEXT"); + sarFileSplitItemsValEOPage.setOrderBy("DISPLAY_SEQ"); + List leftValList = sarFileSplitItemsValEOService.queryByList(sarFileSplitItemsValEOPage); + if(leftValList != null && !leftValList.isEmpty()){ + for(SarFileSplitItemsValEO sarFileSplitItemsValEO : leftValList){ + txt += "

    "+sarFileSplitItemsValEO.getItemContent()+"

    "; + } +// txt = txt.substring(0,txt.length() - 1); + } + map.put("itemsText",txt); + map.put("targetStand",null); + map.put("menuId",sarFileSplitItemsEO.getMenuId()); + mapList.add(map); + } + } + return mapList; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandFileEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandFileEOServiceImpl.java new file mode 100644 index 00000000..cac6a18f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandFileEOServiceImpl.java @@ -0,0 +1,164 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.service.ISarBussionessStandService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.standardSplit.dao.SarStandFileEODao; +import com.adc.da.slrs.standardSplit.entity.SarStandFileEO; +import com.adc.da.slrs.standardSplit.entity.SarStandFileEOPage; +import com.adc.da.slrs.standardSplit.service.SarStandFileEOService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarStandFileEOServiceImpl implements SarStandFileEOService { + + @Autowired + private SarStandFileEODao sarStandFileEODao; + @Autowired + private ISarStandardsInfoService sarStandardsInfoEOService; + @Autowired + private ISarBussionessStandService sarBussionessStandEOService; + + + @Override + public List getStandFileListByPage(SarStandFileEOPage stand){ + return sarStandFileEODao.getStandFileListByPage(stand); + } + + @Override + public Integer getStandFileListByPageCount(SarStandFileEOPage stand){ + return sarStandFileEODao.getStandFileListByPageCount(stand); + } + + @Override + public List queryByPage(SarStandFileEOPage page){ + return sarStandFileEODao.queryByPage(page); + } + + @Override + public List queryByList(SarStandFileEOPage page){ + return sarStandFileEODao.queryByList(page); + } + + @Override + public SarStandFileEO selectByPrimaryKey(String id) throws Exception{ + return sarStandFileEODao.selectByPrimaryKey(id); + } + + @Override + public int insertSelective(SarStandFileEO sarStandFileEO) throws Exception { + return sarStandFileEODao.insertSelective(sarStandFileEO); + } + + @Override + public int updateByPrimaryKeySelective(SarStandFileEO sarStandFileEO) throws Exception{ + return sarStandFileEODao.updateByPrimaryKeySelective(sarStandFileEO); + } + + @Override + public int deleteByPrimaryKey(String id) throws Exception{ + return sarStandFileEODao.deleteByPrimaryKey(id); + } + + @Override + public List selectFileByAttId(String attId) throws Exception{ + return sarStandFileEODao.selectFileByAttId(attId); + } + + @Override + public List selectFileByStandId(String standId) { + QueryWrapper queryWrapper= new QueryWrapper<>(); + + queryWrapper.eq("STAND_ID",standId).eq("USE_MODEL","WEB_FILE"); + List sarStandFileEOS = sarStandFileEODao.selectList(queryWrapper); + /** + * 询转换后文件信息 因为文件转换成pdf后会出现文件名位路径的情况,遍历查询文件的原始文件信息从中取出正确的文件名 + */ + //开耀这地方我把selectOne改成了批量因为 查单个数据里面出了问题你看看给改一下 + sarStandFileEOS.forEach(item->{ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("ORI_ATT_ID",item.getOriAttId()) + .eq("USE_MODEL","SOURCE_FILE").orderByDesc("CREATION_TIME"); + List sarStandFileEO = sarStandFileEODao.selectList(wrapper); + item.setFileOldName(sarStandFileEO.get(0).getFileOldName()); + }); + + return sarStandFileEOS; + } + //type == 0 是pdf type==1 是doc + @Override + public List selectFileByStandIdOCR(String standId , String type) throws Exception { + QueryWrapper queryWrapper= new QueryWrapper<>(); + List choose=new ArrayList<>(); + SarStandardsInfo result = sarStandardsInfoEOService.selectStandardsInfoByKey(standId); + SarBussionessStand result2 = sarBussionessStandEOService.selectStandardsInfoUpdateByKey(standId); + if (null!=result.getAttrInfoCaseMap()){ + Map map=result.getAttrInfoCaseMap(); + for (String key:result.getAttrInfoCaseMap().keySet()) { + if (null!=result.getAttrInfoCaseMap().get(key) && !"".equals(result.getAttrInfoCaseMap().get(key))){ + if (result.getAttrInfoCaseMap().get(key).toString().contains(",")){ + choose.addAll(new ArrayList<>(Arrays.asList(result.getAttrInfoCaseMap().get(key).toString().split(",")))); + }else { + choose.add(result.getAttrInfoCaseMap().get(key).toString()); + } + } + } + } + if (null!=result2){ + + } + + queryWrapper.eq("STAND_ID",standId); + if ("0".equals(type)){ + queryWrapper.eq("USE_MODEL", "WEB_FILE"); + }else { + queryWrapper.eq("USE_MODEL", "SOURCE_FILE"); + } + queryWrapper.in("ATT_ID",choose); + List sarStandFileEOS = sarStandFileEODao.selectList(queryWrapper); + + if ("0".equals(type)){ + List remove=new ArrayList<>(); + sarStandFileEOS.forEach(sarStandFileEO -> { + if (!sarStandFileEO.getFileName().contains(".PDF") && !sarStandFileEO.getFileName().contains(".pdf") ){ + remove.add(sarStandFileEO); + } + }); + sarStandFileEOS.removeAll(remove); + }else { + List remove=new ArrayList<>(); + sarStandFileEOS.forEach(sarStandFileEO -> { + if (!sarStandFileEO.getFileName().contains(".DOC") && !sarStandFileEO.getFileName().contains(".doc") && + !sarStandFileEO.getFileName().contains(".DOCX") && !sarStandFileEO.getFileName().contains(".docx")){ + remove.add(sarStandFileEO); + } + }); + sarStandFileEOS.removeAll(remove); + } + return sarStandFileEOS; + } + + + @Override + public List querySourceFileInfo(String standId){ + QueryWrapper queryWrapper= new QueryWrapper<>(); + + queryWrapper.eq("STAND_ID",standId).eq("USE_MODEL","SOURCE_FILE"); + return sarStandFileEODao.selectList(queryWrapper); + + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandItemsCompareHisEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandItemsCompareHisEOServiceImpl.java new file mode 100644 index 00000000..c8fce83f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandItemsCompareHisEOServiceImpl.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.standardSplit.dao.SarStandItemsCompareHisEODao; +import com.adc.da.slrs.standardSplit.entity.SarStandItemsCompareHisEO; +import com.adc.da.slrs.standardSplit.entity.SarStandItemsCompareHisEOPage; +import com.adc.da.slrs.standardSplit.service.SarStandCompareHisEOService; +import com.adc.da.slrs.standardSplit.service.SarStandItemsCompareHisEOService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarStandItemsCompareHisEOServiceImpl implements SarStandItemsCompareHisEOService { + private static final Logger logger = LoggerFactory.getLogger(SarStandItemsCompareHisEOServiceImpl.class); + + @Autowired + private SarStandItemsCompareHisEODao sarStandItemsCompareHisEODao; + + @Override + public int insertSelective(SarStandItemsCompareHisEO var) { + return sarStandItemsCompareHisEODao.insertSelective(var); + } + + @Override + public void deleteByStandHisId(String id) { + sarStandItemsCompareHisEODao.deleteByStandHisId(id); + } + + @Override + public List queryByPage(SarStandItemsCompareHisEOPage page) { + return sarStandItemsCompareHisEODao.queryByPage(page); + } + + @Override + public List queryByList(SarStandItemsCompareHisEOPage page) { + return sarStandItemsCompareHisEODao.queryByList(page); + } + + @Override + public SarStandItemsCompareHisEO selectByPrimaryKey(String id) { + return sarStandItemsCompareHisEODao.selectByPrimaryKey(id); + } + + @Override + public void updateByPrimaryKeySelective(SarStandItemsCompareHisEO page) { + sarStandItemsCompareHisEODao.updateByPrimaryKeySelective(page); + } + + @Override + public void deleteByPrimaryKey(String id) { + sarStandItemsCompareHisEODao.deleteByPrimaryKey(id); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandardsInfoEOServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandardsInfoEOServiceImpl.java new file mode 100644 index 00000000..a3b56ede --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/service/impl/SarStandardsInfoEOServiceImpl.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.standardSplit.service.impl; + +import com.adc.da.slrs.sarStandardComplianceAssessResult.entity.SarStandardsInfoEO; +import com.adc.da.slrs.standardSplit.dao.SarStandardsInfoEODao; +import com.adc.da.slrs.standardSplit.service.SarStandardsInfoEOService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class SarStandardsInfoEOServiceImpl implements SarStandardsInfoEOService { + private static final Logger logger = LoggerFactory.getLogger(SarStandardsInfoEOServiceImpl.class); + + @Autowired + private SarStandardsInfoEODao dao; + + @Override + public List selectStandardsByStandnumber(String standNum, String val) { + SarStandardsInfoEO sarStandardsInfoEO = new SarStandardsInfoEO(); + sarStandardsInfoEO.setStandNumber(standNum); + sarStandardsInfoEO.setStandType(val); + return dao.selectStandardsByStandnumber(sarStandardsInfoEO); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/vo/MarkTextVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/vo/MarkTextVO.java new file mode 100644 index 00000000..14b9bd6e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/vo/MarkTextVO.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.standardSplit.vo; + +/** + * @Description: + * @Author: yangxuenan + * date: 2020/3/24 15:32 + */ +public class MarkTextVO { + + private int startIndex; + + private int endIndex; + + public int getStartIndex() { + return startIndex; + } + + public void setStartIndex(int startIndex) { + this.startIndex = startIndex; + } + + public int getEndIndex() { + return endIndex; + } + + public void setEndIndex(int endIndex) { + this.endIndex = endIndex; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/vo/RecommendVO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/vo/RecommendVO.java new file mode 100644 index 00000000..827f38c0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/standardSplit/vo/RecommendVO.java @@ -0,0 +1,56 @@ +package com.adc.da.slrs.standardSplit.vo; + +import com.adc.da.base.entity.BaseEntity; + +/** + * Created by gaoayn on 2018/9/13 19:29 + * 用于搜索中心的推荐 + */ +public class RecommendVO extends BaseEntity { + + private String nameShow; + private String numberShow; + private String typeShow; + private String id; + private String module; + + public String getNameShow() { + return nameShow; + } + + public void setNameShow(String nameShow) { + this.nameShow = nameShow; + } + + public String getNumberShow() { + return numberShow; + } + + public void setNumberShow(String numberShow) { + this.numberShow = numberShow; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTypeShow() { + return typeShow; + } + + public void setTypeShow(String typeShow) { + this.typeShow = typeShow; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysInfo/service/SysInfoEOService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysInfo/service/SysInfoEOService.java new file mode 100644 index 00000000..025d6a05 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysInfo/service/SysInfoEOService.java @@ -0,0 +1,436 @@ +package com.adc.da.slrs.sysInfo.service; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.common.SarConformStateEnum; +import com.adc.da.common.SelectionTypeEnum; +import com.adc.da.slrs.otSvpps.dao.OtSvppsDao; +import com.adc.da.slrs.sarGroupMenu.dao.SarGroupMenuDao; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.dao.OrgEODao; +import com.adc.da.sys.dao.RoleEODao; +import com.adc.da.sys.dao.UserEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.page.DicTypeEOPage; +import com.adc.da.utils.util.InitStandAttrUtil; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: + * @Author: super_liu + * date: 2020/06/02 9:43 + */ +@Service("sysInfoEOService") +public class SysInfoEOService { + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private OrgEODao orgEODao; + + @Autowired + private UserEODao userEODao; + + @Autowired + private RoleEODao roleEODao; + + @Autowired + private SarGroupMenuDao sarGroupMenuEODao; + + @Autowired + private OtSvppsDao otSvppsEODao; + + @Autowired + private IAttFileEOService attFileEOService; + + /** + * @Description: 根据用户id返回逗号分隔字符串名称 + * @Author: yangxuenan + * @Date: 2020/06/02 9:50 + * @Param: [userIds] + * @Return: java.lang.String + */ + public String getUserNamesByIds(String userIds){ + String userNames = ""; + if (StringUtils.isNotBlank(userIds)) { + String[] idArr = userIds.split(","); + userNames = userEODao.getNamesByIds(idArr); + if (StringUtils.isBlank(userNames) || "null".equals(userNames)) { + userNames = userIds; + } + } + return userNames; + } + + /*** + * @Description: 根据机构id返回逗号分隔字符串名称 + * @Author: yangxuenan + * @Date: 2020/06/02 9:50 + * @Param: [userIds] + * @Return: java.lang.String + */ + public String getOrgNamesByIds(String orgIds){ + String names = ""; + if (StringUtils.isNotBlank(orgIds)) { + String[] idArr = orgIds.split(","); + names = orgEODao.getNamesByIds(idArr); + if (StringUtils.isBlank(names) || "null".equals(names)) { + names = orgIds; + } + } + return names; + } + + /*** + * @Description: 根据标准法规属性code返回逗号分隔字符串名称 + * @Author: yangxuenan + * @Date: 2020/06/02 9:51 + * @Param: [userIds] + * @Return: java.lang.String + */ + public String getDicNamesByCodes(String codes,String dicId){ + String names = ""; + if (StringUtils.isNotBlank(codes)) { + String[] idArr = codes.split(","); + String names1 = dicTypeEODao.getDicNamesByCodes(Arrays.asList(idArr),dicId); + if(StringUtils.isNotBlank(names1)){ + List list1 = Arrays.asList(names1.split(",")); + List list = list1.stream().distinct().collect(Collectors.toList()); + names = String.join(",",list); + } + } + return names; + } + + /*** + * @Description: 根据角色id查询名称 + * @Author: yangxuenan + * @Date: 2020/12/17 11:28 + * @Param: [roleIds] + * @Return: java.lang.String + */ + public String getRoleNamesByIds(String roleIds){ + String names = ""; + if (StringUtils.isNotBlank(roleIds)) { + String[] idArr = roleIds.split(","); + names = roleEODao.getNamesByIds(idArr); + if (StringUtils.isBlank(names) || "null".equals(names)) { + names = ""; + } +// for (String id : idArr) { +// RoleEO roleEO = roleEODao.selectByPrimaryKey(id); +// if (roleEO != null) { +// names += roleEO.getName() + ","; +// } +// } + } +// if (StringUtils.isNotBlank(names)) { +// names = names.substring(0,names.length()-1); +// } + return names; + } + + /*** + * @Description: 根据名称查属性id + * @Author: yangxuenan + * @Date: 2020/11/24 9:40 + * @Param: [str] + * @Return: com.adc.da.sys.entity.DicTypeEO + */ + public DicTypeEO getDicType(String str, String dicId){ + DicTypeEOPage dicTypeEO = new DicTypeEOPage(); + dicTypeEO.setDicTypeName(str); + dicTypeEO.setDicId(dicId); + List resultList = dicTypeEODao.queryByList(dicTypeEO); + if(resultList!= null && !resultList.isEmpty()){ + return resultList.get(0); + }else{ + return null; + } + } + + /*** + * @Description: 仅根据名称查询属性数据 + * @Author: yangxuenan + * @Date: 2020/12/7 9:40 + * @Param: [str] + * @Return: com.adc.da.sys.entity.DicTypeEO + */ + public DicTypeEO getDicTypeByName(String str) throws Exception { + DicTypeEOPage dicTypeEO = new DicTypeEOPage(); + dicTypeEO.setDicTypeName(str); + List resultList = dicTypeEODao.queryByList(dicTypeEO); + if(resultList!= null && !resultList.isEmpty()){ + return resultList.get(0); + }else{ + return null; + } + } + + public Map changeSelectInfo (Map attrInfoMap,String type,String baseSearchContent) { + if (attrInfoMap != null && !attrInfoMap.isEmpty()) { + Map nameMap = new HashMap<>(); + for (Map.Entry entry : attrInfoMap.entrySet()) { + baseSearchContent += String.valueOf(entry.getValue()) + ","; + String field = entry.getKey(); + String value = String.valueOf(entry.getValue()); + List fieldList = new ArrayList<>(); + List multiTimeList = new ArrayList<>(); + if ("stand".equals(type)) { + fieldList = InitStandAttrUtil.selectionFieldList; + multiTimeList = InitStandAttrUtil.multiTimeFieldList; + } else if ("laws".equals(type)) { + fieldList = InitStandAttrUtil.selectionFieldListLaws; + multiTimeList = InitStandAttrUtil.multiTimeFieldListLaws; + } else { + fieldList = InitStandAttrUtil.selectionFieldListBuss; + multiTimeList = InitStandAttrUtil.multiTimeFieldListBuss; + } + if (multiTimeList != null && multiTimeList.contains(field)) { + nameMap.put(field, " " + value); + } + if (fieldList.contains(field)) { + String selVal = ""; + String valueName = ""; + if ("stand".equals(type)) { + selVal = InitStandAttrUtil.selectFieldMap.get(field); + } else if ("laws".equals(type)) { + selVal = InitStandAttrUtil.selectFieldMapLaws.get(field); + } else { + selVal = InitStandAttrUtil.selectFieldMapBuss.get(field); + } + if (StringUtils.isNotBlank(value)) { + if (SelectionTypeEnum.ORGLIST.getValue().equals(selVal)) { + valueName = getOrgNamesByIds(value); + } else if (SelectionTypeEnum.USERLIST.getValue().equals(selVal)) { + valueName = getUserNamesByIds(value); + } else if (SelectionTypeEnum.ROLELIST.getValue().equals(selVal)) { + valueName = getRoleNamesByIds(value); + } else { + List valArr = Arrays.asList(value.split(",")); + valueName = dicTypeEODao.getDicNamesByCodes(valArr,""); + } + } + nameMap.put(field+"Show", valueName); + baseSearchContent += valueName + ","; + } + } + attrInfoMap.putAll(nameMap); + } + return attrInfoMap; + } + + /*** + * @Description: 根据用户名称查询id + * @Author: yangxuenan + * @Date: 2020/12/29 19:01 + * @Param: [names] + * @Return: java.lang.String + */ + public String getUserIdByName (String names,String orgIds) { + String ids = ""; + if (StringUtils.isNotBlank(names)) { + String[] nameArr = names.split(","); + if (StringUtils.isNotBlank(orgIds)) { + String[] orgIdArr = orgIds.split(","); + ids = userEODao.getIdsByNames(nameArr,orgIdArr); + } else { + ids = userEODao.getIdsByNames(nameArr,null); + } +// for (String name : nameArr) { +// if (StringUtils.isNotBlank(name)) { +// UserEOPage page = new UserEOPage(); +// page.setValidFlag("0"); +// page.setUname(name); +// List userList = userEODao.queryUserEoList(page); +// if (userList != null && !userList.isEmpty()) { +// ids += userList.get(0).getUsid() + ","; +// } +// } +// } + } +// if (StringUtils.isNotBlank(ids)) { +// ids = ids.substring(0,ids.length()-1); +// } + return ids; + } + + /*** + * @Description: 根据机构名称查询id + * @Author: yangxuenan + * @Date: 2020/12/29 19:04 + * @Param: [names] + * @Return: java.lang.String + */ + public String getOrgIdByName (String names,String orgType) { + String ids = ""; + if (StringUtils.isNotBlank(names)) { + String[] nameArr = names.split(","); + ids = orgEODao.getIdsByNames(nameArr,orgType); + } + return ids; + } + + /*** + * @Description: 根据角色名称查id + * @Author: yangxuenan + * @Date: 2020/12/29 19:07 + * @Param: [names] + * @Return: java.lang.String + */ + public String getRoleIdByName (String names) { + String ids = ""; + if (StringUtils.isNotBlank(names)) { + String[] nameArr = names.split(","); + ids = roleEODao.getIdsByNames(nameArr); +// for (String name : nameArr) { +// if (StringUtils.isNotBlank(name)) { +// List list = roleEODao.selectByNameAndId(null,name); +// if (list != null && !list.isEmpty()) { +// ids += list.get(0).getId() + ","; +// } +// } +// } + } +// if (StringUtils.isNotBlank(ids)) { +// ids = ids.substring(0,ids.length()-1); +// } + return ids; + } + + /*** + * @Description: 根据id查询工作组信息 + * @Author: yangxuenan + * @Date: 2020/12/30 15:03 + * @Param: [ids] + * @Return: java.lang.String + */ + public String getGroupNamesByIds(String ids){ + String names = ""; + if (StringUtils.isNotBlank(ids)) { + String[] idArr = ids.split(","); + names = sarGroupMenuEODao.getNamesByIds(idArr); + if (StringUtils.isBlank(names) || "null".equals(names)) { + names = ""; + } + } + return names; + } + + public String getGroupIdByNames(String names){ + String ids = ""; + if (StringUtils.isNotBlank(names)) { + String[] nameArr = names.split(","); + ids = sarGroupMenuEODao.getIdsByNames(nameArr); + } + return ids; + } + + /*** + * @Description: 根据id查询svpps名称 + * @Author: yangxuenan + * @Date: 2020/12/31 17:25 + * @Param: [ids] + * @Return: java.lang.String + */ + public String getSvppsNamesByIds(String ids){ + String names = ""; + if (StringUtils.isNotBlank(ids)) { + String[] idArr = ids.split(","); + List getList = otSvppsEODao.getNamesByIds(idArr).parallelStream() .filter(Objects::nonNull) .collect(Collectors.toList()); + if (getList != null && !getList.isEmpty()) { + if (getList.size() == 1) { + names = getList.get(0); + } else { + names = getList.get(0) + "," + getList.get(1); + } + } + } + return names; + } + + public String getSvppsNamesTipByIds(String ids){ + String names = ""; + if (StringUtils.isNotBlank(ids)) { + String[] idArr = ids.split(","); + List getList = otSvppsEODao.getNamesTipByIds(idArr); + if (getList != null && !getList.isEmpty()) { + if (getList.size() == 1) { + names = getList.get(0); + } else { + names = getList.get(0) + "," + getList.get(1); + } + } + } + if (StringUtils.isBlank(names) || "null".equals(names)) { + names = ""; + } + return names; + } + + /*** + * @Description: 根据名称查询id + * @Author: yangxuenan + * @Date: 2021/1/7 17:12 + * @Param: [names] + * @Return: java.lang.String + */ + public String getSvppsIdByName (String names) { + String ids = ""; + if (StringUtils.isNotBlank(names)) { + String[] nameArr = names.split(","); + List getList = otSvppsEODao.getIdsByNames(nameArr); + if (getList != null && !getList.isEmpty()) { + if (getList.size() == 1) { + ids = getList.get(0); + } else { + ids = getList.get(0) + "," + getList.get(1); + } + } + } + return ids; + } + + /*** + * @Description: 根据文件id返回文件名称 + * @Author: yangxuenan + * @Date: 2021/1/15 14:02 + * @Param: [ids] + * @Return: java.lang.String + */ + public String getFileNamesByIds (String ids) { + String names = ""; + if (StringUtils.isNotBlank(ids)) { + List infos = attFileEOService.getMultiFileInfos(ids); + if (infos != null && !infos.isEmpty()) { + for (AttFileEO attFileEO : infos) { + names += attFileEO.getOldFileName() + ","; + } + } + } + if (StringUtils.isNotBlank(names)) { + names = names.substring(0,names.length()-1); + } + return names; + } + + public String changeCompStatus (String prcStatus) { + if (StringUtils.isBlank(prcStatus)) { + return ""; + } + switch (prcStatus) { + case "1": return SarConformStateEnum.FIT.getValue().toString(); + case "2": return SarConformStateEnum.UNFIT.getValue().toString(); + case "3": return SarConformStateEnum.CHECK.getValue().toString(); + case "4": return SarConformStateEnum.NOT_INVOLVE.getValue().toString(); + default: return ""; + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/controller/SysLogController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/controller/SysLogController.java new file mode 100644 index 00000000..a002a229 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/controller/SysLogController.java @@ -0,0 +1,104 @@ +package com.adc.da.slrs.sysLog.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.sysLog.entity.SysLogExcel; +import com.adc.da.slrs.sysLog.service.ISysLogService; +import com.adc.da.slrs.sysLog.vo.SysLogReqDTO; +import com.adc.da.slrs.sysLog.vo.SysLogReqExportDTO; +import com.adc.da.util.UUIDUtils; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sysLog.entity.SysLog; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author yzh +* @since 2022-02-15 +*/ +@RestController +@Api(description = "|SysLog|") +@RequestMapping("/${restPath}/sysLog/sys-log") +public class SysLogController extends BaseController { + + @Autowired + private ISysLogService sysLogService; + + @ApiOperation(value = "|SysCorpEO|导出excel") + @GetMapping(value = "/exportSysLogExcelVOExcelData") + public void exportSysLogExcelVOExcelData(String exportJson, HttpServletResponse response, + HttpServletRequest request) throws Exception { + try { + + SysLogReqExportDTO sysLogExcelVO = JSONObject.parseObject(exportJson,SysLogReqExportDTO.class); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + if(StringUtils.isBlank(sysLogExcelVO.getExportName()) || "null".equals(sysLogExcelVO.getExportName())){ + sysLogExcelVO.setExportName("操作日志"); + } + String fileName = URLEncoder.encode(sysLogExcelVO.getExportName(), "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + List data=sysLogService.getSysLogExcelVOExcelData(sysLogExcelVO); + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream(), SysLogExcel.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .autoCloseStream(Boolean.FALSE).sheet("sheet1") + .doWrite(data); + } catch (Exception e) { + System.out.println(e); + // 重置response + response.reset(); + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().println(JSON.toJSONString(Result.error())); + } + } + + @ApiOperation("获取操作日志") + @GetMapping("/getAllLog") + public ResponseMessage getAllLog(SysLogReqDTO sysLogReqDTO){ + return Result.success(sysLogService.getAllLog(sysLogReqDTO)); + } + + @ApiOperation("存储操作日志") + @GetMapping("/saveLog") + public ResponseMessage getAllLog(SysLog sysLog){ + sysLog.setId(UUIDUtils.randomUUID(64).replace("-","")); + boolean flag = sysLogService.save(sysLog); + if(flag){ + return Result.success(); + } + return Result.error(); + } + + @ApiOperation("获取操作类型") + @GetMapping("/getLogOper") + public ResponseMessage getLogOper(){ + QueryWrapper qw = new QueryWrapper(); + qw.select("DISTINCT oper"); + List list = sysLogService.list(qw); + return Result.success(list); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/dao/SysLogDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/dao/SysLogDao.java new file mode 100644 index 00000000..bc0ac345 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/dao/SysLogDao.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.sysLog.dao; + +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.adc.da.slrs.sysLog.entity.SysLogExcel; +import com.adc.da.slrs.sysLog.vo.SysLogReqDTO; +import com.adc.da.slrs.sysLog.vo.SysLogReqExportDTO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author yzh + * @since 2022-02-15 + */ +public interface SysLogDao extends BaseMapper { + + List getSysLogExcelVOExcelData(@Param("sysLogReqDTO") SysLogReqExportDTO sysLogReqDTO); + + IPage queryAllLog(Page page,@Param("sysLogReqDTO") SysLogReqDTO sysLogReqDTO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLog.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLog.java new file mode 100644 index 00000000..d05c4229 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLog.java @@ -0,0 +1,82 @@ +package com.adc.da.slrs.sysLog.entity; + +import cn.hutool.core.date.DateTime; +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.util.Date; + +/** + *

    + * + *

    + * + * @author yzh + * @since 2022-02-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SysLog对象", description="") +public class SysLog extends BaseEntity { + + private static final long serialVersionUID = 1L; + + private String id; + + @ApiModelProperty(value = "用户id") + private String userId; + + @ApiModelProperty(value = "操作时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date operTime; + + @ApiModelProperty(value = "操作类型") + private String oper; + + @ApiModelProperty(value = "操作ip") + private String operIp; + + @ApiModelProperty(value = "操作系统类型") + private String operSystem; + + @ApiModelProperty(value = "使用的浏览器") + private String operBrowser; + + @ApiModelProperty(value = "日志等级") + private String operLevel; + + @ApiModelProperty(value = "操作模块") + private String operLocation; + + @ApiModelProperty(value = "传参") + private String json; + + @ApiModelProperty(value = "接口耗时") + private int runTime; + + @ApiModelProperty(value = "特殊处理的接口展示内容") + private String special; + + @TableField(exist = false) + private String account; + + @TableField(exist = false) + private String dept; + + @TableField(exist = false) + private String parentIds; + + @TableField(exist = false) + private String accountName; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLogExcel.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLogExcel.java new file mode 100644 index 00000000..4aa000a2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLogExcel.java @@ -0,0 +1,42 @@ +package com.adc.da.slrs.sysLog.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.util.Date; + +/** + *

    + * + *

    + * + * @author yzh + * @since 2022-02-15 + */ +@Data +public class SysLogExcel{ + + @ExcelProperty("操作人") + private String account; + + @ExcelProperty("所属部门") + private String dept; + + @ExcelProperty("操作时间") + private String operTime; + + @ExcelProperty("操作类型") + private String oper; + + @ExcelProperty("操作内容") + private String special; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/ISysLogService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/ISysLogService.java new file mode 100644 index 00000000..9762326c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/ISysLogService.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.sysLog.service; + +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.adc.da.slrs.sysLog.entity.SysLogExcel; +import com.adc.da.slrs.sysLog.vo.SysLogReqDTO; +import com.adc.da.slrs.sysLog.vo.SysLogReqExportDTO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author yzh + * @since 2022-02-15 + */ +public interface ISysLogService extends IService { + + IPage getAllLog(SysLogReqDTO sysLogReqDTO); + + List getSysLogExcelVOExcelData(SysLogReqExportDTO sysLogReqDTO); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/impl/SysLogServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/impl/SysLogServiceImpl.java new file mode 100644 index 00000000..cba83c79 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/impl/SysLogServiceImpl.java @@ -0,0 +1,113 @@ +package com.adc.da.slrs.sysLog.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.adc.da.slrs.sarInstitution.dao.TsInstitutionDao; +import com.adc.da.slrs.sarInstitution.entity.TsInstitution; +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.adc.da.slrs.sysLog.dao.SysLogDao; +import com.adc.da.slrs.sysLog.entity.SysLogExcel; +import com.adc.da.slrs.sysLog.service.ISysLogService; +import com.adc.da.slrs.sysLog.vo.SysLogReqDTO; +import com.adc.da.slrs.sysLog.vo.SysLogReqExportDTO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author yzh + * @since 2022-02-15 + */ +@Service +public class SysLogServiceImpl extends ServiceImpl implements ISysLogService { + + @Autowired + private TsInstitutionDao tsInstitutionDao; + + @Override + public List getSysLogExcelVOExcelData(SysLogReqExportDTO sysLogReqDTO) { + List datas = this.baseMapper.getSysLogExcelVOExcelData(sysLogReqDTO); + QueryWrapper queryWrapper = new QueryWrapper<>(); + List tsInstitutionList = tsInstitutionDao.selectList(queryWrapper); + List tsInstitutions = new ArrayList<>(); + List sysLogExcelList = new ArrayList<>(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 处理部门字段 + for (SysLog sysLog : datas) { + SysLogExcel sysLogExcel = new SysLogExcel(); + sysLogExcel.setAccount(sysLog.getAccount()); + sysLogExcel.setDept(sysLog.getDept()); + sysLogExcel.setOper(sysLog.getOper()); + sysLogExcel.setOperTime(simpleDateFormat.format(sysLog.getOperTime())); + sysLogExcel.setSpecial(sysLog.getSpecial()); + + if (StringUtils.isNotEmpty(sysLog.getParentIds())) { + String[] parentIds = sysLog.getParentIds().split(","); + StringBuilder stringBuilder = new StringBuilder(); + for (int i = parentIds.length - 1; i >= 0; i--) { + String parentId = parentIds[i]; + if ("30000000".equals(parentIds[i])) { + continue; + } + tsInstitutions = tsInstitutionList.stream().filter(e -> parentId.equals(e.getId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(tsInstitutions)) { + stringBuilder.append(tsInstitutions.get(0).getName()).append("-"); + } + } + stringBuilder.append(sysLog.getDept()); + if (StringUtils.isNotEmpty(stringBuilder.toString())) { + sysLogExcel.setDept(stringBuilder.toString()); + } + } + + sysLogExcelList.add(sysLogExcel); + } + return sysLogExcelList; + } + + @Override + public IPage getAllLog(SysLogReqDTO sysLogReqDTO) { + Page page = new Page<>(sysLogReqDTO.getPage(), sysLogReqDTO.getPageSize()); + IPage result = baseMapper.queryAllLog(page,sysLogReqDTO); + List datas = result.getRecords(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + List tsInstitutionList = tsInstitutionDao.selectList(queryWrapper); + List tsInstitutions = new ArrayList<>(); + for (SysLog sysLog : datas) { + if (StringUtils.isNotEmpty(sysLog.getParentIds())) { + String[] parentIds = sysLog.getParentIds().split(","); + StringBuilder stringBuilder = new StringBuilder(); + for (int i = parentIds.length - 1; i >= 0; i--) { + String parentId = parentIds[i]; + if ("30000000".equals(parentIds[i])) { + continue; + } + tsInstitutions = tsInstitutionList.stream().filter(e -> parentId.equals(e.getId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(tsInstitutions)) { + stringBuilder.append(tsInstitutions.get(0).getName()).append("-"); + } + + } + stringBuilder.append(sysLog.getDept()); + if (StringUtils.isNotEmpty(stringBuilder.toString())) { + sysLog.setDept(stringBuilder.toString()); + } + } + } + return result; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/vo/SysLogReqDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/vo/SysLogReqDTO.java new file mode 100644 index 00000000..119de1ce --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/vo/SysLogReqDTO.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.sysLog.vo; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +@Data +public class SysLogReqDTO extends BasePage { + + private String account; + + private String sTime; + + private String eTime; + + private String oper; + + private String content; + + private String exportType; + + private String userId; + + private String exportName; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/vo/SysLogReqExportDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/vo/SysLogReqExportDTO.java new file mode 100644 index 00000000..36db9ae0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/vo/SysLogReqExportDTO.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.sysLog.vo; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +@Data +public class SysLogReqExportDTO { + + private String account; + + private String sTime; + + private String eTime; + + private String oper; + + private String content; + + private String exportType; + + private String userId; + + private String exportName; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/controller/TsDictionaryController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/controller/TsDictionaryController.java new file mode 100644 index 00000000..1a0f7ff1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/controller/TsDictionaryController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.tsDictionaryType.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.tsDictionaryType.entity.TsDictionary; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-28 +*/ +@RestController +@Api(description = "|TsDictionary|") +@RequestMapping("/tsDictionaryType/ts-dictionary") +public class TsDictionaryController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/controller/TsDictypeController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/controller/TsDictypeController.java new file mode 100644 index 00000000..9c582262 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/controller/TsDictypeController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.tsDictionaryType.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.tsDictionaryType.entity.TsDicType; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author zyl +* @since 2021-06-28 +*/ +@RestController +@Api(description = "|TsDictype|") +@RequestMapping("/tsDictionaryType/ts-dictype") +public class TsDictypeController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/dao/TsDicTypeDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/dao/TsDicTypeDao.java new file mode 100644 index 00000000..604050f3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/dao/TsDicTypeDao.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.tsDictionaryType.dao; + +import com.adc.da.slrs.tsDictionaryType.entity.TsDicType; +import com.adc.da.slrs.tsDictionaryType.entity.TsSearchMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-28 + */ +public interface TsDicTypeDao extends BaseMapper { + public List getSearchMenu(); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/dao/TsDictionaryDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/dao/TsDictionaryDao.java new file mode 100644 index 00000000..01c0d2e8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/dao/TsDictionaryDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.tsDictionaryType.dao; + +import com.adc.da.slrs.tsDictionaryType.entity.TsDictionary; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zyl + * @since 2021-06-28 + */ +public interface TsDictionaryDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/MenuType.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/MenuType.java new file mode 100644 index 00000000..c43b0985 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/MenuType.java @@ -0,0 +1,17 @@ +package com.adc.da.slrs.tsDictionaryType.entity; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.RequiredArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +class MenuType{ + private String id; + private String dicId; + private String dicTypeName; + private String dicTypeCode; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsDicType.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsDicType.java new file mode 100644 index 00000000..9c5d8c4f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsDicType.java @@ -0,0 +1,84 @@ +package com.adc.da.slrs.tsDictionaryType.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TsDicType对象", description="") +@TableName("ts_dictype") +public class TsDicType extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "数据字典ID") + @TableField("DIC_ID") + private String dicId; + + @ApiModelProperty(value = "数据内容") + @TableField("DIC_TYPE_NAME") + private String dicTypeName; + + @ApiModelProperty(value = "数据编码") + @TableField("DIC_TYPE_CODE") + private String dicTypeCode; + + @ApiModelProperty(value = "描述") + @TableField("DESCRIBES") + private String describes; + + @ApiModelProperty(value = "展示排序") + @TableField("SHOW_INDEX") + private BigDecimal showIndex; + + @ApiModelProperty(value = "关联的父级ID") + @TableField("PARENT_ID") + private String parentId; + + @ApiModelProperty(value = "树结构父级ID") + @TableField("TREE_PID") + private String treePid; + + @ApiModelProperty(value = "冗余字段") + @TableField("OTHERS") + private String others; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private LocalDateTime creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private LocalDateTime modifyTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsDictionary.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsDictionary.java new file mode 100644 index 00000000..662fa8bd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsDictionary.java @@ -0,0 +1,82 @@ +package com.adc.da.slrs.tsDictionaryType.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author zyl + * @since 2021-06-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TsDictionary对象", description="") +public class TsDictionary extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "数据字典编码") + @TableField("DICTIONARY_CODE") + private String dictionaryCode; + + @ApiModelProperty(value = "数据字典名称") + @TableField("DICTIONARY_NAME") + private String dictionaryName; + + @ApiModelProperty(value = "数据字典排序序号") + @TableField("ORDER_NUM") + private BigDecimal orderNum; + + @ApiModelProperty(value = "是否启用(0是,1否)") + @TableField("ENABLE") + private String enable; + + @ApiModelProperty(value = "类型(SEL_OPTION下拉选项,TREE树形结构)") + @TableField("DICTION_TYPE") + private String dictionType; + + @ApiModelProperty(value = "是否有关联类别(0是,1否)") + @TableField("IS_RELATE") + private String isRelate; + + @ApiModelProperty(value = "关联类别ID") + @TableField("RELATE_DIC_ID") + private String relateDicId; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private String validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + private LocalDateTime creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + private LocalDateTime modifyTime; + + @ApiModelProperty(value = "是否可编辑数据") + @TableField("IS_EDIT_DATA") + private String isEditData; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsSearchMenu.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsSearchMenu.java new file mode 100644 index 00000000..de5b50fa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/entity/TsSearchMenu.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.tsDictionaryType.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class TsSearchMenu { + + private String dicId; + + private String dictionaryName; + + private String dictionaryCode; + + public List menuTypes; + +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/ITsDicTypeService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/ITsDicTypeService.java new file mode 100644 index 00000000..31e5f3d3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/ITsDicTypeService.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.tsDictionaryType.service; + +import com.adc.da.slrs.tsDictionaryType.entity.TsDicType; +import com.adc.da.slrs.tsDictionaryType.entity.TsSearchMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-28 + */ +public interface ITsDicTypeService extends IService { + + public List getSearchMenu(); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/ITsDictionaryService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/ITsDictionaryService.java new file mode 100644 index 00000000..399eeefa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/ITsDictionaryService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.tsDictionaryType.service; + +import com.adc.da.slrs.tsDictionaryType.entity.TsDictionary; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author zyl + * @since 2021-06-28 + */ +public interface ITsDictionaryService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/impl/TsDicTypeServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/impl/TsDicTypeServiceImpl.java new file mode 100644 index 00000000..7870f248 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/impl/TsDicTypeServiceImpl.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.tsDictionaryType.service.impl; + +import com.adc.da.slrs.tsDictionaryType.entity.TsDicType; +import com.adc.da.slrs.tsDictionaryType.dao.TsDicTypeDao; +import com.adc.da.slrs.tsDictionaryType.entity.TsSearchMenu; +import com.adc.da.slrs.tsDictionaryType.service.ITsDicTypeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-28 + */ +@Service +public class TsDicTypeServiceImpl extends ServiceImpl implements ITsDicTypeService { + + @Override + public List getSearchMenu() { + return getBaseMapper().getSearchMenu(); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/impl/TsDictionaryServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/impl/TsDictionaryServiceImpl.java new file mode 100644 index 00000000..099b50a9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsDictionaryType/service/impl/TsDictionaryServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.tsDictionaryType.service.impl; + +import com.adc.da.slrs.tsDictionaryType.entity.TsDictionary; +import com.adc.da.slrs.tsDictionaryType.dao.TsDictionaryDao; +import com.adc.da.slrs.tsDictionaryType.service.ITsDictionaryService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author zyl + * @since 2021-06-28 + */ +@Service +public class TsDictionaryServiceImpl extends ServiceImpl implements ITsDictionaryService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/controller/TsRoleMenuDataController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/controller/TsRoleMenuDataController.java new file mode 100644 index 00000000..ae589666 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/controller/TsRoleMenuDataController.java @@ -0,0 +1,84 @@ +package com.adc.da.slrs.tsRoleMeunData.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.tsRoleMeunData.service.ITsRoleMenuDataService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.tsRoleMeunData.entity.TsRoleMenuData; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** +*

    + * 前端控制器 + *

    +* +* @author yzh +* @since 2022-03-16 +*/ +@RestController +@Api(description = "|TsRoleMenuData|") +@RequestMapping("/${restPath}/tsRoleMeunData/ts-role-menu-data") +public class TsRoleMenuDataController extends BaseController { + + @Autowired + private ITsRoleMenuDataService iTsRoleMenuDataService; + + + @ApiOperation("角色与菜单关联控制右侧数据列表") + @PostMapping("/saveBatch") + public ResponseMessage disable(@RequestBody TsRoleMenuData tsRoleMenuData){ + //上来就给他 清了 能满足清空 修改 新增 + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.eq("ROLE_ID",tsRoleMenuData.getRoleId()); + iTsRoleMenuDataService.remove(wrapper); + + if (StringUtils.isNotBlank(tsRoleMenuData.getMenuIds())){ + List menus=new ArrayList<>(); + if (tsRoleMenuData.getMenuIds().contains(",")){ + menus.addAll(new ArrayList<>(Arrays.asList(tsRoleMenuData.getMenuIds().split(",")))); + }else { + menus.add(tsRoleMenuData.getMenuIds()); + } + List res=new ArrayList<>(); + menus.forEach(s -> { + TsRoleMenuData tsRoleMenuData1=new TsRoleMenuData(); + tsRoleMenuData1.setRoleId(tsRoleMenuData.getRoleId()); + tsRoleMenuData1.setMenuId(s); + res.add(tsRoleMenuData1); + }); + iTsRoleMenuDataService.saveBatch(res); + return Result.success(); + }else { + return Result.error("请选择菜单"); + } + } + + + @ApiOperation("查询与角色绑定的菜单--支持多个角色查询") + @GetMapping("/list") + public ResponseMessage list(String ids){ + //判断disableFlag是否填入正确 + List list=new ArrayList<>(); + if (ids.contains(",")){ + list.addAll(new ArrayList<>(Arrays.asList(ids.split(",")))); + }else { + list.add(ids); + } + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("ROLE_ID",list); + List tsRoleMenuData=iTsRoleMenuDataService.list(wrapper); + return Result.success(tsRoleMenuData.stream().map(TsRoleMenuData::getMenuId).distinct().collect(Collectors.toList())); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/dao/TsRoleMenuDataDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/dao/TsRoleMenuDataDao.java new file mode 100644 index 00000000..c1331443 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/dao/TsRoleMenuDataDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.tsRoleMeunData.dao; + +import com.adc.da.slrs.tsRoleMeunData.entity.TsRoleMenuData; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * Mapper 接口 + *

    + * + * @author yzh + * @since 2022-03-16 + */ +public interface TsRoleMenuDataDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/entity/TsRoleMenuData.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/entity/TsRoleMenuData.java new file mode 100644 index 00000000..2c76e17a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/entity/TsRoleMenuData.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.tsRoleMeunData.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author yzh + * @since 2022-03-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TsRoleMenuData对象", description="") +public class TsRoleMenuData extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "角色id") + @TableField("ROLE_ID") + private String roleId; + + @ApiModelProperty(value = "菜单id") + @TableField("MENU_ID") + private String menuId; + + @ApiModelProperty(value = "菜单id") + @TableField(exist = false) + private String menuIds; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/service/ITsRoleMenuDataService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/service/ITsRoleMenuDataService.java new file mode 100644 index 00000000..150ef21a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/service/ITsRoleMenuDataService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.tsRoleMeunData.service; + +import com.adc.da.slrs.tsRoleMeunData.entity.TsRoleMenuData; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author yzh + * @since 2022-03-16 + */ +public interface ITsRoleMenuDataService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/service/impl/TsRoleMenuDataServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/service/impl/TsRoleMenuDataServiceImpl.java new file mode 100644 index 00000000..2e212561 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsRoleMeunData/service/impl/TsRoleMenuDataServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.tsRoleMeunData.service.impl; + +import com.adc.da.slrs.tsRoleMeunData.entity.TsRoleMenuData; +import com.adc.da.slrs.tsRoleMeunData.dao.TsRoleMenuDataDao; +import com.adc.da.slrs.tsRoleMeunData.service.ITsRoleMenuDataService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author yzh + * @since 2022-03-16 + */ +@Service +public class TsRoleMenuDataServiceImpl extends ServiceImpl implements ITsRoleMenuDataService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/controller/TbTaskController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/controller/TbTaskController.java new file mode 100644 index 00000000..62f7ce02 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/controller/TbTaskController.java @@ -0,0 +1,124 @@ +package com.adc.da.slrs.tsTask.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.search.conf.SchedulerConf; +import com.adc.da.slrs.tsTask.service.ITbTaskService; +import io.swagger.annotations.ApiOperation; +import oracle.ucp.proxy.annotation.Post; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.tsTask.entity.TbTask; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.lang.reflect.Field; +import java.net.InetAddress; +import java.util.ArrayList; +import java.util.List; + +/** +*

    + * 动态定时任务表 前端控制器 + *

    +* +* @author super_liu +* @since 2022-05-27 +*/ +@RestController +@Api(tags = "动态定时任务表") +@RequestMapping("/tsTask/tb-task") +public class TbTaskController extends BaseController { + + @Autowired + private SchedulerConf schedulerConf; + + @Autowired + private ITbTaskService iTbTaskService; + + /** + * 启动一个动态定时任务 + * http://localhost:10085/tbTask/start/2 + */ + @GetMapping("start/{taskId}") + public String start(@PathVariable("taskId") String taskId){ + schedulerConf.start(taskId); + return "操作成功"; + } + + /** + * 停止一个动态定时任务 + * http://localhost:10085/tbTask/stop/2 + */ + @GetMapping("stop/{taskId}") + public String stop(@PathVariable("taskId") String taskId){ + schedulerConf.stop(taskId); + return "操作成功"; + } + + + @ApiOperation(value = "手动启动定时任务") + @GetMapping("/manualRunTask/{taskId}") + public ResponseMessage manualRunTask(@PathVariable("taskId") String taskId) { + TbTask tbTask = schedulerConf.manualRunTask(taskId); + if(tbTask!=null){ + return Result.success("开始启动定时任务:《"+tbTask.getTaskDesc()+"》"); + }else{ + return Result.error("定时任务未找到:"+taskId); + } + + } + + + /** + * 根据ip开启定时任务 + * http://localhost:10085/tbTask + */ + @GetMapping("startByIp/{taskId}") + public String startByIp() throws Exception{ + schedulerConf.startByIp(); + return "操作成功"; + } + + /** + * 更新一个动态定时任务 + * http://localhost:10085/tbTask/save?taskId=2&taskExp=0/2 * * * * ?&taskClass=cn.huanzi.qch.springboottimer.task.MyRunnable3 + */ + @PostMapping("save") + public String save(TbTask task) throws IllegalAccessException { + //先更新表数据 + TbTask tbTask = iTbTaskService.getById(task.getId()); + + //null值忽略 + List ignoreProperties = new ArrayList<>(7); + + //反射获取Class的属性(Field表示类中的成员变量) + for (Field field : task.getClass().getDeclaredFields()) { + //获取授权 + field.setAccessible(true); + //属性名称 + String fieldName = field.getName(); + //属性的值 + Object fieldValue = field.get(task); + + //找出值为空的属性,我们复制的时候不进行赋值 + if(null == fieldValue){ + ignoreProperties.add(fieldName); + } + } + + //org.springframework.beans BeanUtils.copyProperties(A,B):A中的值付给B + BeanUtils.copyProperties(task, tbTask,ignoreProperties.toArray(new String[0])); + iTbTaskService.updateById(tbTask); + schedulerConf.tasks.clear(); + + //停止旧任务 + schedulerConf.stop(tbTask.getId()); + + //重新启动 + schedulerConf.start(tbTask.getId()); + return "操作成功"; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/dao/TbTaskDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/dao/TbTaskDao.java new file mode 100644 index 00000000..96d5f348 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/dao/TbTaskDao.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.tsTask.dao; + +import com.adc.da.slrs.tsTask.entity.TbTask; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

    + * 动态定时任务表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2022-05-27 + */ +@Repository +public interface TbTaskDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/entity/TbTask.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/entity/TbTask.java new file mode 100644 index 00000000..5da780f7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/entity/TbTask.java @@ -0,0 +1,63 @@ +package com.adc.da.slrs.tsTask.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableId; +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.data.annotation.Id; + +/** + *

    + * 动态定时任务表 + *

    + * + * @author super_liu + * @since 2022-05-27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="TbTask对象", description="动态定时任务表") +public class TbTask extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "定时任务id") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "定时任务名称") + private String taskName; + + @ApiModelProperty(value = "定时任务描述") + private String taskDesc; + + @ApiModelProperty(value = "定时任务Cron表达式") + private String taskExp; + + @ApiModelProperty(value = "定时任务状态,0停用 1启用") + private Integer taskStatus; + + @ApiModelProperty(value = "ip地址") + private String ip; + + @ApiModelProperty(value = "定时任务的Runnable任务类完整路径") + private String taskClass; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date createTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/service/ITbTaskService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/service/ITbTaskService.java new file mode 100644 index 00000000..da6d40d0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/service/ITbTaskService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.tsTask.service; + +import com.adc.da.slrs.tsTask.entity.TbTask; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 动态定时任务表 服务类 + *

    + * + * @author super_liu + * @since 2022-05-27 + */ +public interface ITbTaskService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/service/impl/TbTaskServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/service/impl/TbTaskServiceImpl.java new file mode 100644 index 00000000..4babdcf9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/tsTask/service/impl/TbTaskServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.tsTask.service.impl; + +import com.adc.da.slrs.tsTask.entity.TbTask; +import com.adc.da.slrs.tsTask.dao.TbTaskDao; +import com.adc.da.slrs.tsTask.service.ITbTaskService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 动态定时任务表 服务实现类 + *

    + * + * @author super_liu + * @since 2022-05-27 + */ +@Service +public class TbTaskServiceImpl extends ServiceImpl implements ITbTaskService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/controller/UtAreaController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/controller/UtAreaController.java new file mode 100644 index 00000000..6ae9b575 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/controller/UtAreaController.java @@ -0,0 +1,101 @@ +package com.adc.da.slrs.utArea.controller; + + +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.utArea.page.UtAreaEOPage; +import com.adc.da.slrs.utArea.service.IUtAreaService; +import com.adc.da.sys.common.SelectionResult; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.utArea.entity.UtArea; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-06-04 +*/ +@RestController +@RequestMapping("/${restPath}/lawssBase/utArea") +@Api(tags = "福田标准法规--标准法规库--区域") +public class UtAreaController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(UtAreaController.class); + + @Autowired + private IUtAreaService utAreaEOService; + + @ApiOperation(value = "|UtAreaEO|下拉框选项格式查询") + @GetMapping("/getAreaList") +// @RequiresPermissions("lawssBase:utArea:list") + public ResponseMessage> getAreaList(UtArea utAreaEO) throws Exception { + return Result.success(utAreaEOService.getAreaSelList(utAreaEO)); + } + + @ApiOperation(value = "|UtAreaEO|分页查询") + @GetMapping("/page") +// @RequiresPermissions("lawssBase:utArea:page") + public ResponseMessage> page(UtAreaEOPage page) throws Exception { + List rows = utAreaEOService.queryByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|UtAreaEO|查询") + @GetMapping("/list") +// @RequiresPermissions("lawssBase:utArea:list") + public ResponseMessage> list(UtAreaEOPage page) throws Exception { + return Result.success(utAreaEOService.queryByList(page)); + } + + @ApiOperation(value = "|UtAreaEO|详情") + @GetMapping("/getById") +// @RequiresPermissions("lawssBase:utArea:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(utAreaEOService.getById(id)); + } + + @ApiOperation(value = "|UtAreaEO|新增") + @PostMapping("/createUtArea") +// @RequiresPermissions("lawssBase:utArea:save") + public ResponseMessage create(@RequestBody UtArea utAreaEO) throws Exception { + String result = utAreaEOService.createUtArea(utAreaEO); + if ("success".equals(result)) { + return Result.success("0","新增成功",utAreaEO); + } else { + return Result.error("0",result,utAreaEO); + } + } + + @ApiOperation(value = "|UtAreaEO|修改") + @PutMapping("/updateUtArea") +// @RequiresPermissions("lawssBase:utArea:update") + public ResponseMessage update(@RequestBody UtArea utAreaEO) throws Exception { + String result = utAreaEOService.updateUtArea(utAreaEO); + if ("success".equals(result)) { + return Result.success("0","修改成功",utAreaEO); + } else { + return Result.error("0",result,utAreaEO); + } + } + + @ApiOperation(value = "|UtAreaEO|删除") + @DeleteMapping("/deleteById") +// @RequiresPermissions("lawssBase:utArea:delete") + public ResponseMessage delete(String id) throws Exception { + utAreaEOService.removeById(id); + logger.info("delete from UT_AREA where id = {}", id); + return Result.success(); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/dao/UtAreaDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/dao/UtAreaDao.java new file mode 100644 index 00000000..a7a19747 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/dao/UtAreaDao.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.utArea.dao; + +import com.adc.da.slrs.utArea.entity.UtArea; +import com.adc.da.slrs.utArea.page.UtAreaEOPage; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-06-04 + */ +public interface UtAreaDao extends BaseMapper { + + Integer queryByCount(UtAreaEOPage page); + + List queryByPage(UtAreaEOPage page); + + List queryByList(UtAreaEOPage page); + + + + + List getAreaSelList(UtArea utAreaEO); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/entity/UtArea.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/entity/UtArea.java new file mode 100644 index 00000000..7edf6204 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/entity/UtArea.java @@ -0,0 +1,69 @@ +package com.adc.da.slrs.utArea.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-06-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="UtArea对象", description="") +public class UtArea extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId("ID") + private String id; + + @ApiModelProperty(value = "展示区域名称") + @TableField("AREA_NAME") + private String areaName; + + @ApiModelProperty(value = "展示顺序") + @TableField("SHOW_INDEX") + private Integer showIndex; + + @ApiModelProperty(value = "资源类型") + @TableField("SAR_TYPE") + private String sarType; + + @TableField("CREATION_USER") + private String creationUser; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @TableField(exist = false) + private List sarTypeList; +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/page/UtAreaEOPage.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/page/UtAreaEOPage.java new file mode 100644 index 00000000..a22dc705 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/page/UtAreaEOPage.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.utArea.page; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:UT_AREA UtAreaEOPage
    + * 作者:code generator
    + * 日期: 2020-10-16
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ + +@Data +public class UtAreaEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String areaName; + private String areaNameOperator = "="; + private String showIndex; + private String showIndexOperator = "="; + private String sarType; + private String sarTypeOperator = "="; + private String creationUser; + private String creationUserOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String notId; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/service/IUtAreaService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/service/IUtAreaService.java new file mode 100644 index 00000000..64267ff5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/service/IUtAreaService.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.utArea.service; + +import com.adc.da.slrs.utArea.entity.UtArea; +import com.adc.da.slrs.utArea.page.UtAreaEOPage; +import com.adc.da.sys.common.SelectionResult; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-06-04 + */ +public interface IUtAreaService extends IService { + + List getAreaSelList(UtArea utAreaEO); + + List queryByPage(UtAreaEOPage page); + + List queryByList(UtAreaEOPage page); + + String createUtArea(UtArea utAreaEO); + + String updateUtArea(UtArea utAreaEO); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/service/impl/UtAreaServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/service/impl/UtAreaServiceImpl.java new file mode 100644 index 00000000..b4c9e9b2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/utArea/service/impl/UtAreaServiceImpl.java @@ -0,0 +1,109 @@ +package com.adc.da.slrs.utArea.service.impl; + +import com.adc.da.slrs.utArea.entity.UtArea; +import com.adc.da.slrs.utArea.dao.UtAreaDao; +import com.adc.da.slrs.utArea.page.UtAreaEOPage; +import com.adc.da.slrs.utArea.service.IUtAreaService; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-06-04 + */ +@Service +public class UtAreaServiceImpl extends ServiceImpl implements IUtAreaService { + + private static final Logger logger = LoggerFactory.getLogger(UtAreaServiceImpl.class); + + @Autowired + private UtAreaDao dao; + + public UtAreaDao getDao() { + return dao; + } + + public List getAreaSelList(UtArea utAreaEO){ + List list = new ArrayList<>(); + if(utAreaEO.getSarType().equals("INLAND_STAND")){ + utAreaEO.setSarType(null); + list.add("INLAND_STAND"); + list.add("STAND"); + utAreaEO.setSarTypeList(list); + }else if(utAreaEO.getSarType().equals("FOREIGN_STAND")){ + utAreaEO.setSarType(null); + list.add("FOREIGN_STAND"); + list.add("STAND"); + utAreaEO.setSarTypeList(list); + } + return dao.getAreaSelList(utAreaEO); + } + + @Override + public List queryByPage(UtAreaEOPage page){ + Integer rowCount = dao.queryByCount(page); + page.getPager().setRowCount(rowCount); + return dao.queryByPage(page); + } + + @Override + public List queryByList(UtAreaEOPage page){ + return dao.queryByList(page); + } + + public String createUtArea (UtArea utAreaEO) { + // 判断名称是否已存在 + UtAreaEOPage page = new UtAreaEOPage(); + page.setAreaName(utAreaEO.getAreaName()); + page.setSarType(utAreaEO.getSarType()); + List getList = dao.queryByList(page); + if (getList != null && !getList.isEmpty()) { + return "新增失败,展示区域名称已存在"; + } + utAreaEO.setId(UUIDUtils.randomUUID20()); + utAreaEO.setCreationUser(LoginUserUtil.getUserId()); + utAreaEO.setCreationTime(new Date()); + utAreaEO.setModifyTime(new Date()); + utAreaEO.setValidFlag(0); + int result = dao.insert(utAreaEO); + if (result > 0) { + return "success"; + } else { + return "新增失败"; + } + } + + public String updateUtArea (UtArea utAreaEO) { + // 判断名称是否已存在 + UtAreaEOPage page = new UtAreaEOPage(); + page.setAreaName(utAreaEO.getAreaName()); + page.setSarType(utAreaEO.getSarType()); + page.setNotId(utAreaEO.getId()); + List getList = dao.queryByList(page); + if (getList != null && !getList.isEmpty()) { + return "修改失败,展示区域名称已存在"; + } + utAreaEO.setModifyTime(new Date()); + int result = dao.updateById(utAreaEO); + if (result > 0) { + return "success"; + } else { + return "修改失败"; + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/controller/WgCommitteeController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/controller/WgCommitteeController.java new file mode 100644 index 00000000..a08878b4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/controller/WgCommitteeController.java @@ -0,0 +1,145 @@ +package com.adc.da.slrs.wgCommittee.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.wgCommittee.entity.WgCommitteeDTO; +import com.adc.da.slrs.wgCommittee.service.IWgCommitteeService; +import com.adc.da.slrs.wgCommitteeUser.service.IWgCommitteeUserService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiModelProperty; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.wgCommittee.entity.WgCommittee; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** +*

    + * 标准委员会 前端控制器 + *

    +* +* @author yzh +* @since 2022-03-10 +*/ +@RestController +@Api(description = "|WgCommittee|") +@RequestMapping("/${restPath}/wgCommittee/wg-committee") +public class WgCommitteeController extends BaseController { + + @Autowired + IWgCommitteeService iWgCommitteeService; + + @Autowired + IWgCommitteeUserService iWgCommitteeUserService; + + @ApiModelProperty("新增工作组") + @PostMapping("/insert") + public ResponseMessage addWorkCommitter(WgCommittee wgCommittee) { + + wgCommittee.setCreateTime(new Date()); + if (isDistinct(wgCommittee.getCommitteeName(),null)){ + if (iWgCommitteeService.add(wgCommittee)){ + return Result.success("200","新增成功"); + }else { + return Result.error("201","新增失败"); + } + }else { + return Result.error("202","组名已存在"); + } + } + + + + @ApiModelProperty("批量删除工作组") + @DeleteMapping("/deleteBatch") + public ResponseMessage deleteWorkGroup(String id){ + List ids=new ArrayList<>(); + if (id.contains(",")){ + ids.addAll(new ArrayList<>(Arrays.asList(id.split(",")))); + }else { + ids.add(id); + } + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.select("committeer"); + wrapper.in("id",ids); + wrapper.isNotNull("committeer"); + List removes = iWgCommitteeService.list(wrapper); + if (!removes.isEmpty()) { + List reids = removes.stream().distinct().map(WgCommittee::getCommitteer).collect(Collectors.toList()); + iWgCommitteeUserService.removeByIds(reids); + } + if (iWgCommitteeService.removeByIds(ids)) { + return Result.success(); + }else { + return Result.error(""); + } + } + + @ApiModelProperty("根据组长民或者组名查询工作组,参数为空时查询全部") + @GetMapping("/page") + public ResponseMessage> getWgCommitteeLists(WgCommittee wgCommittee){ + IPage workGroup = iWgCommitteeService.getWgCommittee(wgCommittee); + return Result.success(workGroup); + } + + @ApiModelProperty("根据组长民或者组名查询工作组,参数为空时查询全部") + @GetMapping("/pageWk") + public ResponseMessage> getWgCommitteeList(WgCommittee wgCommittee){ + IPage workGroup = iWgCommitteeService.getWgCommittee(wgCommittee); + return Result.success(workGroup); + } + + + @ApiModelProperty("修改标准委员会") + @PutMapping("/update") + public ResponseMessage updateWgCommittee(WgCommittee wgCommittee){ + + ResponseMessage result = Result.success(); + + if (isDistinct(wgCommittee.getCommitteeName(),wgCommittee.getId())){ + if (iWgCommitteeService.update(wgCommittee)){ + result=Result.success("修改成功"); + }else { + result=Result.error("201", "修改失败"); + } + + }else { + result=Result.error("202", "组名已存在"); + } + + return result; + } + + /** + * 判断提交的工作组名称是否重复 + * @param groupName 条件 + * @param id 排除id + * @returntrue 没有重复 false 有重复 + */ + private boolean isDistinct(String groupName,String id){ + + QueryWrapper ew = new QueryWrapper<>(); + + ew.eq("committee_name",groupName); + + if (id!=null){ + ew.ne("id",id); + } + + List list = iWgCommitteeService.list(ew); + return list.isEmpty(); + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/dao/WgCommitteeDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/dao/WgCommitteeDao.java new file mode 100644 index 00000000..3777ca7e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/dao/WgCommitteeDao.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.wgCommittee.dao; + + +import com.adc.da.slrs.wgCommittee.entity.WgCommittee; +import com.adc.da.slrs.wgCommittee.entity.WgCommitteeDTO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 标准委员会 Mapper 接口 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +public interface WgCommitteeDao extends BaseMapper { + + List getData(WgCommittee wgCommittee); + Integer getDataCount(WgCommittee wgCommittee); + + List getDataWk(WgCommittee wgCommittee); + Integer getDataCountWk(WgCommittee wgCommittee); + + String selectCommittor(@Param("str") List str); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/entity/WgCommittee.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/entity/WgCommittee.java new file mode 100644 index 00000000..5dff6902 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/entity/WgCommittee.java @@ -0,0 +1,58 @@ +package com.adc.da.slrs.wgCommittee.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.base.page.BasePage; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; +import java.util.List; + +/** + *

    + * 标准委员会 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgCommittee对象", description="标准委员会") +public class WgCommittee extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "委员会名称") + private String committeeName; + + @ApiModelProperty(value = "委员会主任") + private String committeeDirector; + + @ApiModelProperty(value = "委员会副主任") + private String committeeDeputy; + + @ApiModelProperty(value = "委员会秘书长") + private String committeeSecretary; + + @ApiModelProperty(value = "委员关联表") + private String committeer; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "委员") + @TableField(exist = false) + private String committeeIds; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/entity/WgCommitteeDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/entity/WgCommitteeDTO.java new file mode 100644 index 00000000..5db232fe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/entity/WgCommitteeDTO.java @@ -0,0 +1,55 @@ +package com.adc.da.slrs.wgCommittee.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.List; + +/** + *

    + * 标准委员会 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +@Data +public class WgCommitteeDTO { + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "委员会名称") + private String committeeName; + + @ApiModelProperty(value = "委员会主任") + private String committeeDirector; + + @ApiModelProperty(value = "委员会主任") + private String committeeDeputy; + + @ApiModelProperty(value = "委员会主任名称") + private String committeeDeputyName; + + @ApiModelProperty(value = "委员会主任") + private String committeeDirectorName; + + @ApiModelProperty(value = "委员会秘书长") + private String committeeSecretary; + + @ApiModelProperty(value = "委员会秘书长") + private String committeeSecretaryName; + + @ApiModelProperty(value = "委员关联表") + private String committeer; + + @ApiModelProperty(value = "委员") + private String committor; + + @ApiModelProperty(value = "委员") + private String committorId; + +// @ApiModelProperty(value = "委员") +// private List committeeIds; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/service/IWgCommitteeService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/service/IWgCommitteeService.java new file mode 100644 index 00000000..066a9421 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/service/IWgCommitteeService.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.wgCommittee.service; + +import com.adc.da.slrs.wgCommittee.entity.WgCommittee; +import com.adc.da.slrs.wgCommittee.entity.WgCommitteeDTO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 标准委员会 服务类 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +public interface IWgCommitteeService extends IService { + boolean add (WgCommittee wgCommittee); + boolean update (WgCommittee wgCommittee); + + IPage getWgCommittee(WgCommittee wgCommittee); + + IPage getWgCommitteeWk(WgCommittee wgCommittee); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/service/impl/WgCommitteeServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/service/impl/WgCommitteeServiceImpl.java new file mode 100644 index 00000000..9a829cc1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommittee/service/impl/WgCommitteeServiceImpl.java @@ -0,0 +1,97 @@ +package com.adc.da.slrs.wgCommittee.service.impl; + +import com.adc.da.slrs.wgCommittee.entity.WgCommittee; +import com.adc.da.slrs.wgCommittee.dao.WgCommitteeDao; +import com.adc.da.slrs.wgCommittee.entity.WgCommitteeDTO; +import com.adc.da.slrs.wgCommittee.service.IWgCommitteeService; +import com.adc.da.slrs.wgCommitteeUser.entity.WgCommitteeUser; +import com.adc.da.slrs.wgCommitteeUser.service.IWgCommitteeUserService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + *

    + * 标准委员会 服务实现类 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +@Service +public class WgCommitteeServiceImpl extends ServiceImpl implements IWgCommitteeService { + + @Autowired + IWgCommitteeUserService iWgCommitteeUserService; + @Autowired + IWgCommitteeService iWgCommitteeService; + @Autowired + WgCommitteeDao wgCommitteeDao; + + @Transactional + @Override + public boolean add(WgCommittee wgCommittee) { + wgCommittee.setId(String.valueOf(UUID.randomUUID())); + String id=String.valueOf(UUID.randomUUID()); + wgCommittee.setCommitteer(id); + List list=new ArrayList<>(); + if (null!=wgCommittee.getCommitteeIds() && !wgCommittee.getCommitteeIds().isEmpty()) { + List res=new ArrayList<>(Collections.singletonList(wgCommittee.getCommitteeIds())); + res.stream().forEach(s -> list.add(new WgCommitteeUser().setCommitterId(s).setId(wgCommittee.getCommitteer()))); + iWgCommitteeUserService.saveOrUpdateBatch(list); + } + if (iWgCommitteeService.saveOrUpdate(wgCommittee)) { + return true; + }else { + return false; + } + } + + @Transactional + @Override + public boolean update(WgCommittee wgCommittee) { + iWgCommitteeService.updateById(wgCommittee); + List save=new ArrayList<>(); + if (null!=wgCommittee.getCommitteeIds() && !wgCommittee.getCommitteeIds().isEmpty()){ + List res=new ArrayList<>(Collections.singletonList(wgCommittee.getCommitteeIds())); + res.forEach(s -> + save.add(new WgCommitteeUser().setId(wgCommittee.getCommitteer()).setCommitterId(s)) + ); + } + if (iWgCommitteeUserService.updateBatchById(save)) { + return true; + }else { + return false; + } + } + + @Override + public IPage getWgCommittee(WgCommittee wgCommittee) { + Page page=new Page(); + List list = wgCommitteeDao.getData(wgCommittee); + for (WgCommitteeDTO wgCommitteeDTO : list){ + List str = Arrays.asList(wgCommitteeDTO.getCommittorId().split(",")); + wgCommitteeDTO.setCommittor(wgCommitteeDao.selectCommittor(str)); + } + page.setRecords(list); + page.setCurrent(wgCommittee.getPage()); + page.setSize(wgCommittee.getPageSize()); + page.setTotal(wgCommitteeDao.getDataCount(wgCommittee)); + return page; + } + + @Override + public IPage getWgCommitteeWk(WgCommittee wgCommittee) { + Page page=new Page(); + page.setRecords(wgCommitteeDao.getDataWk(wgCommittee)); + page.setCurrent(wgCommittee.getPage()); + page.setSize(wgCommittee.getPageSize()); + page.setTotal(wgCommitteeDao.getDataCountWk(wgCommittee)); + return page; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/controller/WgCommitteeUserController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/controller/WgCommitteeUserController.java new file mode 100644 index 00000000..38bc9fb7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/controller/WgCommitteeUserController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.wgCommitteeUser.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.wgCommitteeUser.entity.WgCommitteeUser; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 标准委员会委员 前端控制器 + *

    +* +* @author yzh +* @since 2022-03-10 +*/ +@RestController +@Api(description = "|WgCommitteeUser|") +@RequestMapping("/${restPath}/wgCommitteeUser/wg-committee-user") +public class WgCommitteeUserController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/dao/WgCommitteeUserDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/dao/WgCommitteeUserDao.java new file mode 100644 index 00000000..a9c3d315 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/dao/WgCommitteeUserDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.wgCommitteeUser.dao; + +import com.adc.da.slrs.wgCommitteeUser.entity.WgCommitteeUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

    + * 标准委员会委员 Mapper 接口 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +public interface WgCommitteeUserDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/entity/WgCommitteeUser.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/entity/WgCommitteeUser.java new file mode 100644 index 00000000..a61e3e8c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/entity/WgCommitteeUser.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.wgCommitteeUser.entity; + +import com.adc.da.base.entity.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 标准委员会委员 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgCommitteeUser对象", description="标准委员会委员") +public class WgCommitteeUser extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "委员id") + private String committerId; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/service/IWgCommitteeUserService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/service/IWgCommitteeUserService.java new file mode 100644 index 00000000..e06d68fc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/service/IWgCommitteeUserService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.wgCommitteeUser.service; + +import com.adc.da.slrs.wgCommitteeUser.entity.WgCommitteeUser; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 标准委员会委员 服务类 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +public interface IWgCommitteeUserService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/service/impl/WgCommitteeUserServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/service/impl/WgCommitteeUserServiceImpl.java new file mode 100644 index 00000000..3ddc07bd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgCommitteeUser/service/impl/WgCommitteeUserServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.wgCommitteeUser.service.impl; + +import com.adc.da.slrs.wgCommitteeUser.entity.WgCommitteeUser; +import com.adc.da.slrs.wgCommitteeUser.dao.WgCommitteeUserDao; +import com.adc.da.slrs.wgCommitteeUser.service.IWgCommitteeUserService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 标准委员会委员 服务实现类 + *

    + * + * @author yzh + * @since 2022-03-10 + */ +@Service +public class WgCommitteeUserServiceImpl extends ServiceImpl implements IWgCommitteeUserService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/controller/WgDeptController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/controller/WgDeptController.java new file mode 100644 index 00000000..b02ce635 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/controller/WgDeptController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.wgDept.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.wgDept.entity.WgDept; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 集团参与情况 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-04 +*/ +@RestController +@Api(description = "|WgDept|") +@RequestMapping("/${restPath}/wgDept") +public class WgDeptController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/dao/WgDeptDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/dao/WgDeptDao.java new file mode 100644 index 00000000..6216f5d8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/dao/WgDeptDao.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.wgDept.dao; + +import com.adc.da.slrs.wgDept.entity.WgDept; +import com.adc.da.slrs.wgDept.entity.WgDeptShow; +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 集团参与情况 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface WgDeptDao extends BaseMapper { + List researchDatas(@Param(value = "data") String data); + + List researchAllDatas(@Param(value = "type") String type); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/entity/WgDept.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/entity/WgDept.java new file mode 100644 index 00000000..60644bd3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/entity/WgDept.java @@ -0,0 +1,69 @@ +package com.adc.da.slrs.wgDept.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + *

    + * 集团参与情况 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgDept对象", description="集团参与情况") +@TableName("wg_dept") +public class WgDept extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "工作组id") + @TableField("wg_id") + private String wgId; + + @ApiModelProperty(value = "我司在工作组排名顺序") + @TableField("dept_order") + private String deptOrder; + + @ApiModelProperty(value = "我司人员") + @TableField("dept_people_id") + private String deptPeopleId; + + @ApiModelProperty(value = "身份") + @TableField("identity") + private String identity; + + @ApiModelProperty(value = "资料") + @TableField("joinfile") + private String joinfile; + + @ApiModelProperty(value = "前端id") + @TableField("join_id") + private String joinId; + + @ApiModelProperty(value = "手机号") + @TableField("phone") + private String phone; + + @ApiModelProperty(value = "邮箱") + @TableField("email") + private String email; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/entity/WgDeptShow.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/entity/WgDeptShow.java new file mode 100644 index 00000000..5711d5a0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/entity/WgDeptShow.java @@ -0,0 +1,75 @@ +package com.adc.da.slrs.wgDept.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 集团参与情况 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgDept对象", description="集团参与情况") +public class WgDeptShow extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "工作组id") + @TableField("wg_id") + private String wgId; + + @ApiModelProperty(value = "我司在工作组排名顺序") + @TableField("dept_order") + private String deptOrder; + + @ApiModelProperty(value = "我司人员") + @TableField("dept_people_id") + private String deptPeopleId; + + @ApiModelProperty(value = "身份") + @TableField("identity") + private String identity; + + @ApiModelProperty(value = "资料") + @TableField("joinfile") + private String joinfile; + + @ApiModelProperty(value = "中文名") + private String name; + + @ApiModelProperty(value = "单位名称") + private String unit; + + @ApiModelProperty(value = "单位") + private String unitId; + + @ApiModelProperty(value = "电话") + private String phone; + + @ApiModelProperty(value = "邮箱") + private String email; + + @ApiModelProperty(value = "部门Id") + private String deptId; + + @ApiModelProperty(value = "部门名称") + private String deptName; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/service/IWgDeptService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/service/IWgDeptService.java new file mode 100644 index 00000000..63ca9aed --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/service/IWgDeptService.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.wgDept.service; + +import com.adc.da.slrs.wgDept.entity.WgDept; +import com.adc.da.slrs.wgDept.entity.WgDeptShow; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 集团参与情况 服务类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface IWgDeptService extends IService { + List getAllDatas(String type); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/service/impl/WgDeptServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/service/impl/WgDeptServiceImpl.java new file mode 100644 index 00000000..93c7f802 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgDept/service/impl/WgDeptServiceImpl.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.wgDept.service.impl; + +import com.adc.da.slrs.wgDept.entity.WgDept; +import com.adc.da.slrs.wgDept.dao.WgDeptDao; +import com.adc.da.slrs.wgDept.entity.WgDeptShow; +import com.adc.da.slrs.wgDept.service.IWgDeptService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 集团参与情况 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Service +public class WgDeptServiceImpl extends ServiceImpl implements IWgDeptService { + + @Autowired + private WgDeptDao wgDeptDao; + + @Override + public List getAllDatas(String type) { + return wgDeptDao.researchAllDatas(type); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/controller/WgMeetingInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/controller/WgMeetingInfoController.java new file mode 100644 index 00000000..89f7579e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/controller/WgMeetingInfoController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.wgMeetingInfo.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 参会记录及资料 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-04 +*/ +@RestController +@Api(description = "|WgMeetingInfo|") +@RequestMapping("/${restPath}/wgMeetingInfo") +public class WgMeetingInfoController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/dao/WgMeetingInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/dao/WgMeetingInfoDao.java new file mode 100644 index 00000000..23d41074 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/dao/WgMeetingInfoDao.java @@ -0,0 +1,24 @@ +package com.adc.da.slrs.wgMeetingInfo.dao; + +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import com.adc.da.slrs.wgStandorpolicyInfo.entity.WgStandorpolicyInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 参会记录及资料 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface WgMeetingInfoDao extends BaseMapper { + + List researchDatas(@Param(value = "data") String data); + + List researchAllDatas(@Param(value = "type") String type); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/entity/WgMeetingInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/entity/WgMeetingInfo.java new file mode 100644 index 00000000..5c6d33cd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/entity/WgMeetingInfo.java @@ -0,0 +1,77 @@ +package com.adc.da.slrs.wgMeetingInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelationShow; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +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; + +/** + *

    + * 参会记录及资料 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgMeetingInfo对象", description="参会记录及资料") +@TableName("wg_meeting_info") +public class WgMeetingInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "工作组id") + @TableField("wg_id") + private String wgId; + + @ApiModelProperty(value = "参会时间") + @TableField("meeting_time") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date meetingTime; + + @ApiModelProperty(value = "会议名称") + @TableField("meeting_name") + private String meetingName; + + + @ApiModelProperty(value = "会议报告") + @TableField("meeting_report") + private String meetingReport; + + @ApiModelProperty(value = "会议资料") + @TableField("joinfile") + private String joinfile; + + @ApiModelProperty(value = "前端id") + @TableField("join_id") + private String joinId; + + @ApiModelProperty(value = "人员信息") + @TableField(exist = false) + private List meetingPeople; + + @TableField(exist = false) + private List joinMeetingPeopleInfo; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/service/IWgMeetingInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/service/IWgMeetingInfoService.java new file mode 100644 index 00000000..a4949c95 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/service/IWgMeetingInfoService.java @@ -0,0 +1,18 @@ +package com.adc.da.slrs.wgMeetingInfo.service; + +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 参会记录及资料 服务类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface IWgMeetingInfoService extends IService { + List getAllDatas(String type); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/service/impl/WgMeetingInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/service/impl/WgMeetingInfoServiceImpl.java new file mode 100644 index 00000000..fcaa210e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingInfo/service/impl/WgMeetingInfoServiceImpl.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgMeetingInfo.service.impl; + +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import com.adc.da.slrs.wgMeetingInfo.dao.WgMeetingInfoDao; +import com.adc.da.slrs.wgMeetingInfo.service.IWgMeetingInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 参会记录及资料 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Service +public class WgMeetingInfoServiceImpl extends ServiceImpl implements IWgMeetingInfoService { + @Autowired + WgMeetingInfoDao wgMeetingInfoDao; + @Override + public List getAllDatas(String type) { + return wgMeetingInfoDao.researchAllDatas(type); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/controller/WgMeetingUserRelationController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/controller/WgMeetingUserRelationController.java new file mode 100644 index 00000000..933b7dc8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/controller/WgMeetingUserRelationController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.wgMeetingUserRelation.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelation; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-09 +*/ +@RestController +@Api(description = "|WgMeetingUserRelation|") +@RequestMapping("/wgMeetingUserRelation") +public class WgMeetingUserRelationController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/dao/WgMeetingUserRelationDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/dao/WgMeetingUserRelationDao.java new file mode 100644 index 00000000..1558d6e8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/dao/WgMeetingUserRelationDao.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.wgMeetingUserRelation.dao; + +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelation; +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelationShow; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +public interface WgMeetingUserRelationDao extends BaseMapper { + List getMeetingPeoples(@Param("meetId") String meetingId); + + List getMeetingAllPeoples(@Param(value = "type") String type); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/entity/WgMeetingUserRelation.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/entity/WgMeetingUserRelation.java new file mode 100644 index 00000000..b892dd04 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/entity/WgMeetingUserRelation.java @@ -0,0 +1,40 @@ +package com.adc.da.slrs.wgMeetingUserRelation.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgMeetingUserRelation对象", description="") +@TableName("wg_meeting_user_relation") +public class WgMeetingUserRelation extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "会议id") + @TableId("meeting_id") + private String meetingId; + + @ApiModelProperty(value = "人员id") + @TableField("user_id") + private String userId; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/entity/WgMeetingUserRelationShow.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/entity/WgMeetingUserRelationShow.java new file mode 100644 index 00000000..d30cf59a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/entity/WgMeetingUserRelationShow.java @@ -0,0 +1,45 @@ +package com.adc.da.slrs.wgMeetingUserRelation.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.sarInstitution.entity.TsUserVO; +import com.adc.da.slrs.sarPosition.entity.TsPosition; +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import javax.validation.constraints.NotNull; +import java.sql.Timestamp; +import java.util.List; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgMeetingUserRelation对象", description="") +public class WgMeetingUserRelationShow extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "会议id") + private String meetingId; + + @ApiModelProperty(value = "人员id") + private String userId; + + @ApiModelProperty(value = "人员名称") + private String name; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/service/IWgMeetingUserRelationService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/service/IWgMeetingUserRelationService.java new file mode 100644 index 00000000..67461b6f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/service/IWgMeetingUserRelationService.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.wgMeetingUserRelation.service; + +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelation; +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelationShow; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +public interface IWgMeetingUserRelationService extends IService { + List getMeetingAllPeoples(String type); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/service/impl/WgMeetingUserRelationServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/service/impl/WgMeetingUserRelationServiceImpl.java new file mode 100644 index 00000000..3ff8eaf5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgMeetingUserRelation/service/impl/WgMeetingUserRelationServiceImpl.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.wgMeetingUserRelation.service.impl; + +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelation; +import com.adc.da.slrs.wgMeetingUserRelation.dao.WgMeetingUserRelationDao; +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelationShow; +import com.adc.da.slrs.wgMeetingUserRelation.service.IWgMeetingUserRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-09 + */ +@Service +public class WgMeetingUserRelationServiceImpl extends ServiceImpl implements IWgMeetingUserRelationService { + + @Autowired + private WgMeetingUserRelationDao wgMeetingUserRelationDao; + + @Override + public List getMeetingAllPeoples(String type) { + return wgMeetingUserRelationDao.getMeetingAllPeoples(type); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/controller/WgNetInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/controller/WgNetInfoController.java new file mode 100644 index 00000000..ee80b7b9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/controller/WgNetInfoController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.wgNetInfo.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfo; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 工作组秘书联系方式 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-04 +*/ +@RestController +@Api(description = "|WgNetInfo|") +@RequestMapping("/${restPath}/wgNetInfo") +public class WgNetInfoController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/dao/WgNetInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/dao/WgNetInfoDao.java new file mode 100644 index 00000000..e460dc46 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/dao/WgNetInfoDao.java @@ -0,0 +1,25 @@ +package com.adc.da.slrs.wgNetInfo.dao; + +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfo; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfoDTO; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupShowDTO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 工作组秘书联系方式 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface WgNetInfoDao extends BaseMapper { + + List researchDatas(@Param(value = "data") String data); + + List researchAllDatas(@Param(value = "type") String type); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/entity/WgNetInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/entity/WgNetInfo.java new file mode 100644 index 00000000..f671536f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/entity/WgNetInfo.java @@ -0,0 +1,65 @@ +package com.adc.da.slrs.wgNetInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 工作组秘书联系方式 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgNetInfo对象", description="工作组秘书联系方式") +@TableName("wg_net_info") +public class WgNetInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "工作组id") + @TableField("wg_id") + private String wgId; + + @ApiModelProperty(value = "人员id") + @TableField("net_id") + private String netId; + + @ApiModelProperty(value = "前端id") + @TableField("join_id") + private String joinId; + + @ApiModelProperty(value = "手机号") + @TableField("phone") + private String phone; + + @ApiModelProperty(value = "邮箱") + @TableField("email") + private String email; + + @ApiModelProperty(value = "联络人") + @TableField("name") + private String name; + + @ApiModelProperty(value = "单位") + @TableField("unit") + private String unit; + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/entity/WgNetInfoDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/entity/WgNetInfoDTO.java new file mode 100644 index 00000000..2b2e48a8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/entity/WgNetInfoDTO.java @@ -0,0 +1,64 @@ +package com.adc.da.slrs.wgNetInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 工作组秘书联系方式 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgNetInfo对象", description="工作组秘书联系方式") +@TableName("wg_net_info") +public class WgNetInfoDTO extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "工作组id") + @TableField("wg_id") + private String wgId; + + @ApiModelProperty(value = "人员id") + @TableField("net_id") + private String netId; + + + @ApiModelProperty(value = "前端id") + @TableField("join_id") + private String joinId; + + @ApiModelProperty(value = "中文名") + private String name; + + @ApiModelProperty(value = "单位名称") + private String unit; + + @ApiModelProperty(value = "单位") + private String unitId; + + @ApiModelProperty(value = "电话") + private String phone; + + @ApiModelProperty(value = "邮箱") + private String email; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/service/IWgNetInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/service/IWgNetInfoService.java new file mode 100644 index 00000000..03ed7b5f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/service/IWgNetInfoService.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.wgNetInfo.service; + +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfo; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfoDTO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 工作组秘书联系方式 服务类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface IWgNetInfoService extends IService { + List getAllDatas(String type); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/service/impl/WgNetInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/service/impl/WgNetInfoServiceImpl.java new file mode 100644 index 00000000..9ebbbdbc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgNetInfo/service/impl/WgNetInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.wgNetInfo.service.impl; + +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfo; +import com.adc.da.slrs.wgNetInfo.dao.WgNetInfoDao; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfoDTO; +import com.adc.da.slrs.wgNetInfo.service.IWgNetInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 工作组秘书联系方式 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Service +public class WgNetInfoServiceImpl extends ServiceImpl implements IWgNetInfoService { + @Autowired + private WgNetInfoDao wgNetInfoDao; + + @Override + public List getAllDatas(String type) { + return wgNetInfoDao.researchAllDatas(type); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/controller/WgPayInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/controller/WgPayInfoController.java new file mode 100644 index 00000000..67f75b81 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/controller/WgPayInfoController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.wgPayInfo.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.wgPayInfo.entity.WgPayInfo; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 支付信息 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-04 +*/ +@RestController +@Api(description = "|WgPayInfo|") +@RequestMapping("/${restPath}/wgPayInfo") +public class WgPayInfoController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/dao/WgPayInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/dao/WgPayInfoDao.java new file mode 100644 index 00000000..90ffa2ad --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/dao/WgPayInfoDao.java @@ -0,0 +1,22 @@ +package com.adc.da.slrs.wgPayInfo.dao; + +import com.adc.da.slrs.wgPayInfo.entity.WgPayInfo; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupShowDTO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 支付信息 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface WgPayInfoDao extends BaseMapper { + List researchDatas(@Param(value = "data") String data); + + List researchAllDatas(@Param(value = "type") String type); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/entity/WgPayInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/entity/WgPayInfo.java new file mode 100644 index 00000000..4deca5fe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/entity/WgPayInfo.java @@ -0,0 +1,73 @@ +package com.adc.da.slrs.wgPayInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 支付信息 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgPayInfo对象", description="支付信息") +@TableName("wg_pay_info") +public class WgPayInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "工作组id") + @TableField("wg_id") + private String wgId; + + @ApiModelProperty(value = "价格") + @TableField("price") + private String price; + + @ApiModelProperty(value = "年份") + @TableField("year") + private String year; + + @ApiModelProperty(value = "支付状态(0:未支付,1:已支付)") + @TableField("status") + private String status; + + @ApiModelProperty(value = "是否计划内(0:计划内,1:计划外)") + @TableField("inplan") + private String inplan; + + @ApiModelProperty(value = "支付方式") + @TableField("pay_way") + private String payWay; + + @ApiModelProperty(value = "支付资料") + @TableField("joinfile") + private String joinfile; + + @ApiModelProperty(value = "费用列支") + @TableField("pay_info") + private String payInfo; + + @ApiModelProperty(value = "前端id") + @TableField("join_id") + private String joinId; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/service/IWgPayInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/service/IWgPayInfoService.java new file mode 100644 index 00000000..1e7458d6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/service/IWgPayInfoService.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.wgPayInfo.service; + +import com.adc.da.slrs.wgPayInfo.entity.WgPayInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 支付信息 服务类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface IWgPayInfoService extends IService { + + List getAllDatas(String type); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/service/impl/WgPayInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/service/impl/WgPayInfoServiceImpl.java new file mode 100644 index 00000000..98ae8d74 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgPayInfo/service/impl/WgPayInfoServiceImpl.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.wgPayInfo.service.impl; + +import com.adc.da.slrs.wgPayInfo.entity.WgPayInfo; +import com.adc.da.slrs.wgPayInfo.dao.WgPayInfoDao; +import com.adc.da.slrs.wgPayInfo.service.IWgPayInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 支付信息 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Service +public class WgPayInfoServiceImpl extends ServiceImpl implements IWgPayInfoService { + + @Autowired + private WgPayInfoDao wgPayInfoDao; + + @Override + public List getAllDatas(String type) { + return wgPayInfoDao.researchAllDatas(type); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/controller/WgStandorpolicyInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/controller/WgStandorpolicyInfoController.java new file mode 100644 index 00000000..582a41a7 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/controller/WgStandorpolicyInfoController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.wgStandorpolicyInfo.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.wgStandorpolicyInfo.entity.WgStandorpolicyInfo; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

    + * 标准/政策 -信息 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-04 +*/ +@RestController +@Api(description = "|WgStandorpolicyInfo|") +@RequestMapping("/${restPath}/wgStandorpolicyInfo") +public class WgStandorpolicyInfoController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/dao/WgStandorpolicyInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/dao/WgStandorpolicyInfoDao.java new file mode 100644 index 00000000..5dc28245 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/dao/WgStandorpolicyInfoDao.java @@ -0,0 +1,27 @@ +package com.adc.da.slrs.wgStandorpolicyInfo.dao; + +import com.adc.da.slrs.wgStandorpolicyInfo.entity.WgStandorpolicyInfo; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupShowDTO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 标准/政策 -信息 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface WgStandorpolicyInfoDao extends BaseMapper { + + //仅用来政策或者标准新增验重不是查全部的接口 + List researchDatas(); + + List researchAllDatas(@Param(value = "type")String type); + + List researchAllDatasPartTwo(@Param(value = "type")String type); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/entity/WgStandorpolicyInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/entity/WgStandorpolicyInfo.java new file mode 100644 index 00000000..1190b830 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/entity/WgStandorpolicyInfo.java @@ -0,0 +1,82 @@ +package com.adc.da.slrs.wgStandorpolicyInfo.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 标准/政策 -信息 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgStandorpolicyInfo对象", description="标准/政策 -信息") +@TableName("wg_standorpolicy_info") +public class WgStandorpolicyInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "工作组id") + @TableField("wg_id") + private String wgId; + + @ApiModelProperty(value = "关联标准政策id") + @TableField("stand_id") + private String standId; + + @ApiModelProperty(value = "政策/标准 类别") + @TableField(exist = false) + private String categary; + + @ApiModelProperty(value = "政策/标准 编号") + @TableField(exist = false) + private String number; + + @ApiModelProperty(value = "政策/标准 年份") + @TableField(exist = false) + private String year; + + @ApiModelProperty(value = "政策标准 名称") + @TableField(exist = false) + private String name; + + @ApiModelProperty(value = "政策/标准 英文名称") + @TableField(exist = false) + private String usname; + + @ApiModelProperty(value = "文本状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty(value = "参与制定情况") + @TableField(exist = false) + private String joinDevelop; + + @ApiModelProperty(value = "相关材料") + @TableField(exist = false) + private String netDatum; + + @ApiModelProperty(value = "相关材料") + @TableField(exist = false) + private String dataType; + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/service/IWgStandorpolicyInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/service/IWgStandorpolicyInfoService.java new file mode 100644 index 00000000..3d029fb9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/service/IWgStandorpolicyInfoService.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.wgStandorpolicyInfo.service; + +import com.adc.da.slrs.wgStandorpolicyInfo.entity.WgStandorpolicyInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 标准/政策 -信息 服务类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface IWgStandorpolicyInfoService extends IService { + + List getAllDatas(String type); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/service/impl/WgStandorpolicyInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/service/impl/WgStandorpolicyInfoServiceImpl.java new file mode 100644 index 00000000..26c12980 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgStandorpolicyInfo/service/impl/WgStandorpolicyInfoServiceImpl.java @@ -0,0 +1,37 @@ +package com.adc.da.slrs.wgStandorpolicyInfo.service.impl; + +import com.adc.da.slrs.wgStandorpolicyInfo.entity.WgStandorpolicyInfo; +import com.adc.da.slrs.wgStandorpolicyInfo.dao.WgStandorpolicyInfoDao; +import com.adc.da.slrs.wgStandorpolicyInfo.service.IWgStandorpolicyInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

    + * 标准/政策 -信息 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Service +public class WgStandorpolicyInfoServiceImpl extends ServiceImpl implements IWgStandorpolicyInfoService { + + @Autowired + private WgStandorpolicyInfoDao wgStandorpolicyInfoDao; + + @Override + public List getAllDatas(String type) { + List wgStandorpolicyInfos=wgStandorpolicyInfoDao.researchAllDatas(type); + if ("0".equals(type)) { + List wgStandorpolicyInfos1 = wgStandorpolicyInfoDao.researchAllDatasPartTwo(type); + wgStandorpolicyInfos1.forEach(wgStandorpolicyInfo -> wgStandorpolicyInfo.setDataType("3")); + wgStandorpolicyInfos.addAll(wgStandorpolicyInfos1); + } + wgStandorpolicyInfos.removeIf(wgStandorpolicyInfo -> null==wgStandorpolicyInfo.getName()); + return wgStandorpolicyInfos; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/controller/WgWorkGroupController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/controller/WgWorkGroupController.java new file mode 100644 index 00000000..05bee0a3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/controller/WgWorkGroupController.java @@ -0,0 +1,80 @@ +package com.adc.da.slrs.wgWorkGroup.controller; + + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupDTO; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupShowDTO; +import com.adc.da.slrs.wgWorkGroup.service.IWgWorkGroupService; +import io.swagger.annotations.ApiOperation; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroup; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; + +import java.util.List; + +/** +*

    + * 工作组主表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-04 +*/ +@RestController +@Api(description = "|WgWorkGroup|") +@RequestMapping("/${restPath}/wg_work_group") +public class WgWorkGroupController extends BaseController { + + @Autowired + private IWgWorkGroupService wgWorkGroupService; + + @ApiOperation("添加工作组节点数据") + @PostMapping("/add") + public ResponseMessage addResource(@RequestBody WgWorkGroupDTO wgWorkGroup){ + return Result.success(wgWorkGroupService.saveDatas(wgWorkGroup)); + } + + @ApiOperation("添加标准/政策节点数据") + @PostMapping("/addStand") + public ResponseMessage addResourceData(@RequestBody WgWorkGroupDTO wgWorkGroup){ + return Result.success(wgWorkGroupService.saveStandDatas(wgWorkGroup)); + } + + + @ApiOperation("搜索工作组节点数据") + @GetMapping("/researchData") + public ResponseMessage researchData(@RequestParam(value = "type") String type){ + return Result.success(wgWorkGroupService.researchDataUp(type)); + } + + @ApiOperation("删除工作组节点数据") + @PostMapping("/deleteData") + public ResponseMessage deleteData(@RequestParam(value = "id") String id, @RequestParam(value = "meetingId",required=false)List meetingId){ + return wgWorkGroupService.deleteData(id,meetingId); + } + + @ApiOperation("修改工作组节点数据") + @PostMapping("/updateData") + public ResponseMessage updateData(@RequestBody WgWorkGroupShowDTO wgWorkGroupShowDTO){ + return wgWorkGroupService.updateData(wgWorkGroupShowDTO); + } + + @ApiOperation("修改工作组节点数据") + @PostMapping("/updateDataByWk") + public ResponseMessage updateDataByWk(@RequestBody WgWorkGroupShowDTO wgWorkGroupShowDTO){ + return wgWorkGroupService.updateDataByWk(wgWorkGroupShowDTO); + } + + + + + + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/dao/WgWorkGroupDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/dao/WgWorkGroupDao.java new file mode 100644 index 00000000..f15f4d5a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/dao/WgWorkGroupDao.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.wgWorkGroup.dao; + +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroup; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupShowDTO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

    + * 工作组主表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface WgWorkGroupDao extends BaseMapper { + + WgWorkGroupShowDTO researchDatas(@Param(value = "data") List wgWorkGroupShowDTOS,@Param(value = "type")String type); + + List researchDownLevel(@Param(value = "data") String data); + + List researchAllData(@Param(value = "type")String type); + + List researchDownCheck(@Param(value = "data") String data,@Param(value = "status")String status); + + List researchDatasCheck(@Param(value = "data") String data,@Param(value = "status")String status); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroup.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroup.java new file mode 100644 index 00000000..b5f28511 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroup.java @@ -0,0 +1,83 @@ +package com.adc.da.slrs.wgWorkGroup.entity; + +import com.adc.da.base.entity.BaseEntity; +import java.time.LocalDateTime; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +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; + +/** + *

    + * 工作组主表 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgWorkGroup对象", description="工作组主表") +@TableName("wg_work_group") +public class WgWorkGroup extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "父级id") + @TableField("pid") + private String pid; + + @ApiModelProperty(value = "编号") + @TableField("number") + private String number; + + @ApiModelProperty(value = "名称") + @TableField("name") + private String name; + + @ApiModelProperty(value = "性质(0:标委会,1:分标委,2:工作组,3:政策)") + @TableField("nature") + private String nature; + + @ApiModelProperty(value = "状态(0:流程中,1:流程已通过)") + @TableField("status") + private String status; + + @ApiModelProperty(value = "换届时间") + @TableField("change_time") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date changeTime; + + @ApiModelProperty(value = "标准化工作领域") + @TableField("stander_area") + private String standerArea; + + @ApiModelProperty(value = "备注") + @TableField("mark") + private String mark; + + @ApiModelProperty(value = "0:标准化流程 1:政策课题组") + @TableField("type") + private String types; + + @ApiModelProperty(value = "层级") + @TableField("level") + private String level; + + //可能缺少性质,状态两个字段 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroupDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroupDTO.java new file mode 100644 index 00000000..7fbf30bd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroupDTO.java @@ -0,0 +1,92 @@ +package com.adc.da.slrs.wgWorkGroup.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.wgDept.entity.WgDept; +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfo; +import com.adc.da.slrs.wgPayInfo.entity.WgPayInfo; +import com.adc.da.slrs.wgStandorpolicyInfo.entity.WgStandorpolicyInfo; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +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; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

    + * 工作组主表 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgWorkGroup对象", description="工作组主表") +public class WgWorkGroupDTO extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "工作组id") + private String id; + + @ApiModelProperty(value = "父级id") + private String pid; + + @ApiModelProperty(value = "编号") + private String number; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "性质(0:标委会,1:分标委,2:工作组,3:政策)") + private String nature; + + @ApiModelProperty(value = "状态(0:流程中,1:流程已通过)") + private String status; + + @ApiModelProperty(value = "换届时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date changeTime; + + @ApiModelProperty(value = "标准化工作领域") + private String standerArea; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "0:标准化流程 1:政策课题组") + private String types; + + @ApiModelProperty(value = "层级") + private String level; + + //支付信息 + List wgPayInfos; + + //标准政策 + List wgStandorpolicyInfos; + + //集团参与情况 + List wgDepts; + + //秘书联系方式 + List wgNetInfos; + + //参会记录及资料 + List wgMeetingInfos; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroupShowDTO.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroupShowDTO.java new file mode 100644 index 00000000..7dd662bd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/entity/WgWorkGroupShowDTO.java @@ -0,0 +1,100 @@ +package com.adc.da.slrs.wgWorkGroup.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.slrs.wgDept.entity.WgDept; +import com.adc.da.slrs.wgDept.entity.WgDeptShow; +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfo; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfoDTO; +import com.adc.da.slrs.wgPayInfo.entity.WgPayInfo; +import com.adc.da.slrs.wgStandorpolicyInfo.entity.WgStandorpolicyInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jdk.nashorn.internal.objects.annotations.Constructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + *

    + * 工作组主表 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="WgWorkGroup对象", description="工作组主表") +public class WgWorkGroupShowDTO extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "工作组id") + private String id; + + @ApiModelProperty(value = "父级id") + private String pid; + + @ApiModelProperty(value = "编号") + private String number; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "性质(0:标委会,1:分标委,2:工作组,3:政策)") + private String nature; + + @ApiModelProperty(value = "状态(0:流程中,1:流程已通过)") + private String status; + + @ApiModelProperty(value = "换届时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date changeTime; + + @ApiModelProperty(value = "标准化工作领域") + private String standerArea; + + @ApiModelProperty(value = "备注") + private String mark; + + @ApiModelProperty(value = "0:标准化流程 1:政策课题组") + private String types; + + private String level; + + //支付信息 + List wgPayInfos; + + private String wgPayInfosDel; + + //标准政策 + List wgStandorpolicyInfos; + + //集团参与情况 + List wgDepts; + + private String wgDeptsDel; + + //秘书联系方式 + List wgNetInfos; + + private String wgNetInfosDel; + + //参会记录及资料 + List wgMeetingInfos; + + private String wgMeetingInfosDel; + + List children; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/service/IWgWorkGroupService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/service/IWgWorkGroupService.java new file mode 100644 index 00000000..e6f56e74 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/service/IWgWorkGroupService.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.wgWorkGroup.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroup; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupDTO; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupShowDTO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 工作组主表 服务类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +public interface IWgWorkGroupService extends IService { + + String saveDatas(WgWorkGroupDTO wgWorkGroupDTO); + + String saveStandDatas(WgWorkGroupDTO wgWorkGroupDTO); + + WgWorkGroupShowDTO researchData(String type); + + //优化查询接口 速度 + WgWorkGroupShowDTO researchDataUp(String type); + + ResponseMessage deleteData(String id,List meetingId); + + ResponseMessage updateData(WgWorkGroupShowDTO wgWorkGroupShowDTO); + + ResponseMessage updateDataByWk(WgWorkGroupShowDTO wgWorkGroupShowDTO); + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/service/impl/WgWorkGroupServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/service/impl/WgWorkGroupServiceImpl.java new file mode 100644 index 00000000..aeee43bc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgWorkGroup/service/impl/WgWorkGroupServiceImpl.java @@ -0,0 +1,489 @@ +package com.adc.da.slrs.wgWorkGroup.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.wgDept.entity.WgDept; +import com.adc.da.slrs.wgDept.entity.WgDeptShow; +import com.adc.da.slrs.wgDept.service.IWgDeptService; +import com.adc.da.slrs.wgMeetingInfo.entity.WgMeetingInfo; +import com.adc.da.slrs.wgMeetingInfo.service.IWgMeetingInfoService; +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelation; +import com.adc.da.slrs.wgMeetingUserRelation.entity.WgMeetingUserRelationShow; +import com.adc.da.slrs.wgMeetingUserRelation.service.IWgMeetingUserRelationService; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfo; +import com.adc.da.slrs.wgNetInfo.entity.WgNetInfoDTO; +import com.adc.da.slrs.wgNetInfo.service.IWgNetInfoService; +import com.adc.da.slrs.wgPayInfo.entity.WgPayInfo; +import com.adc.da.slrs.wgPayInfo.service.IWgPayInfoService; +import com.adc.da.slrs.wgStandorpolicyInfo.dao.WgStandorpolicyInfoDao; +import com.adc.da.slrs.wgStandorpolicyInfo.entity.WgStandorpolicyInfo; +import com.adc.da.slrs.wgStandorpolicyInfo.service.IWgStandorpolicyInfoService; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroup; +import com.adc.da.slrs.wgWorkGroup.dao.WgWorkGroupDao; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupDTO; +import com.adc.da.slrs.wgWorkGroup.entity.WgWorkGroupShowDTO; +import com.adc.da.slrs.wgWorkGroup.service.IWgWorkGroupService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + *

    + * 工作组主表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-04 + */ +@Service +public class WgWorkGroupServiceImpl extends ServiceImpl implements IWgWorkGroupService { + + @Autowired + private IWgWorkGroupService wgWorkGroupService; + @Autowired + private IWgDeptService wgDeptService; + @Autowired + private IWgMeetingInfoService wgMeetingInfoService; + @Autowired + private IWgNetInfoService wgNetInfoService; + @Autowired + private IWgPayInfoService wgPayInfoService; + @Autowired + private IWgStandorpolicyInfoService wgStandorpolicyInfoService; + @Autowired + private WgWorkGroupDao wgWorkGroupDao; + @Autowired + private WgStandorpolicyInfoDao wgStandorpolicyInfoDao; + @Autowired + private IWgMeetingUserRelationService wgMeetingUserRelationService; + + + @Transactional + @Override + public String saveDatas(WgWorkGroupDTO wgWorkGroupDTO) { + WgWorkGroup wgWorkGroup = new WgWorkGroup(); + BeanUtils.copyProperties(wgWorkGroupDTO, wgWorkGroup); + //存储集团参与情况 + boolean flag = true; + wgWorkGroup.setId(String.valueOf(UUID.randomUUID())); + flag = wgWorkGroupService.save(wgWorkGroup); + if (null != wgWorkGroupDTO.getWgDepts()) { + wgWorkGroupDTO.getWgDepts().forEach(wgDept -> { + wgDept.setWgId(wgWorkGroup.getId()); + }); + flag = wgDeptService.saveBatch(wgWorkGroupDTO.getWgDepts()); + } + //存储会议信息 + if (null != wgWorkGroupDTO.getWgMeetingInfos()) { + List wgMeetingUserRelations = new ArrayList<>(); + wgWorkGroupDTO.getWgMeetingInfos().forEach(wgMeetingInfo -> { + wgMeetingInfo.setId(String.valueOf(UUID.randomUUID())); + wgMeetingInfo.setWgId(wgWorkGroup.getId()); + wgMeetingInfo.getMeetingPeople().forEach(s -> { + WgMeetingUserRelation wgMeetingUserRelation = new WgMeetingUserRelation(); + wgMeetingUserRelation.setMeetingId(wgMeetingInfo.getId()); + wgMeetingUserRelation.setUserId(s); + wgMeetingUserRelations.add(wgMeetingUserRelation); + }); + }); + wgMeetingUserRelationService.saveBatch(wgMeetingUserRelations); + flag = wgMeetingInfoService.saveBatch(wgWorkGroupDTO.getWgMeetingInfos()); + } + //存储秘书联系方式信息 + if (null != wgWorkGroupDTO.getWgNetInfos()) { + wgWorkGroupDTO.getWgNetInfos().forEach(wgNetInfo -> { + wgNetInfo.setWgId(wgWorkGroup.getId()); + }); + flag = wgNetInfoService.saveBatch(wgWorkGroupDTO.getWgNetInfos()); + } + //支付信息 + if (null != wgWorkGroupDTO.getWgPayInfos()) { + wgWorkGroupDTO.getWgPayInfos().forEach(wgPayInfo -> { + wgPayInfo.setWgId(wgWorkGroup.getId()); + }); + flag = wgPayInfoService.saveBatch(wgWorkGroupDTO.getWgPayInfos()); + } + //标准政策信息 + if (null != wgWorkGroupDTO.getWgStandorpolicyInfos()) { + wgWorkGroupDTO.getWgStandorpolicyInfos().forEach(wgStandorpolicyInfo -> { + wgStandorpolicyInfo.setWgId(wgWorkGroup.getId()); + }); + flag = wgStandorpolicyInfoService.saveBatch(wgWorkGroupDTO.getWgStandorpolicyInfos()); + } + //先存储主数据 + if (flag) { + return "添加成功"; + } else { + return "数据错误,添加失败"; + } + } + + @Override + public String saveStandDatas(WgWorkGroupDTO wgWorkGroupDTO) { + List wgStandorpolicyInfos = wgStandorpolicyInfoDao.researchDatas(); + Map map = new HashMap<>(); + wgStandorpolicyInfos.forEach(wgStandorpolicyInfo -> { + map.put(wgStandorpolicyInfo.getStandId() + "-" + wgStandorpolicyInfo.getWgId(), wgStandorpolicyInfo); + }); + if (null != wgWorkGroupDTO.getWgStandorpolicyInfos() && wgWorkGroupDTO.getWgStandorpolicyInfos().size() > 0) { + List wgWorkGroups = new ArrayList<>(); + wgWorkGroupDTO.getWgStandorpolicyInfos().forEach(wgStandorpolicyInfo -> { + WgWorkGroup wgWorkGroup = new WgWorkGroup(); + BeanUtils.copyProperties(wgWorkGroupDTO, wgWorkGroup); + wgWorkGroup.setId(String.valueOf(UUID.randomUUID())); + wgStandorpolicyInfo.setWgId(wgWorkGroup.getId()); + if (null == map.get(wgStandorpolicyInfo.getStandId() + "-" + wgWorkGroup.getPid())) { + wgWorkGroups.add(wgWorkGroup); + } + }); + if (wgWorkGroups.size() == 0) { + return "政策已存在,请勿重复添加"; + } + boolean flag = wgWorkGroupService.saveOrUpdateBatch(wgWorkGroups); + boolean flag1 = wgStandorpolicyInfoService.saveOrUpdateBatch(wgWorkGroupDTO.getWgStandorpolicyInfos()); + if (flag && flag1) { + return "添加成功"; + } else { + return "添加失败"; + } + } else { + return "数据有误,请检查数据"; + } + } + + @Override + public WgWorkGroupShowDTO researchData(String type) { + //构建最初的节点 用来向下搜索 + WgWorkGroupShowDTO wgWorkGroupShowDTO = new WgWorkGroupShowDTO(); + wgWorkGroupShowDTO.setId("root"); + wgWorkGroupShowDTO.setTypes(type); + List wgWorkGroupShowDTOS = new ArrayList<>(); + wgWorkGroupShowDTOS.add(wgWorkGroupShowDTO); + return wgWorkGroupDao.researchDatas(wgWorkGroupShowDTOS, type); + } + + @Override + public WgWorkGroupShowDTO researchDataUp(String type) { + List wgWorkGroupShowDTOS = wgWorkGroupDao.researchAllData(type); + List wgPayInfos = wgPayInfoService.getAllDatas(type); + List wgStandorpolicyInfos = wgStandorpolicyInfoService.getAllDatas(type); + List wgDeptShows = wgDeptService.getAllDatas(type); + List wgNetInfoDTOS = wgNetInfoService.getAllDatas(type); + List wgMeetingInfos = wgMeetingInfoService.getAllDatas(type); + List wgMeetingUserRelations = wgMeetingUserRelationService.getMeetingAllPeoples(type); + //处理数据 + //part1 会议数据组装 提速第一步建造数据的map集合 + Map wgWorkGroupMap = new HashMap<>(); + wgWorkGroupShowDTOS.forEach(wgWorkGroupShowDTO -> { + wgWorkGroupMap.put(wgWorkGroupShowDTO.getId(), wgWorkGroupShowDTO); + }); + + Map meetMap = new HashMap<>(); + if (null != wgMeetingInfos && wgMeetingInfos.size() > 0) { + wgMeetingInfos.forEach(wgMeetingInfo -> { + meetMap.put(wgMeetingInfo.getId(), wgMeetingInfo); + }); + } + //组装会议数据 + if (null != wgMeetingUserRelations && wgMeetingUserRelations.size() > 0) { + wgMeetingUserRelations.forEach(wgMeetingUserRelationShow -> { + if (null != meetMap.get(wgMeetingUserRelationShow.getMeetingId()).getJoinMeetingPeopleInfo()) { + meetMap.get(wgMeetingUserRelationShow.getMeetingId()).getJoinMeetingPeopleInfo().add(wgMeetingUserRelationShow); + } else { + List wgMeetingUserRelationShows = new ArrayList<>(); + wgMeetingUserRelationShows.add(wgMeetingUserRelationShow); + meetMap.get(wgMeetingUserRelationShow.getMeetingId()).setJoinMeetingPeopleInfo(wgMeetingUserRelationShows); + } + }); + } + //组装总数据 + if (null != wgDeptShows && wgDeptShows.size() > 0) { + wgDeptShows.forEach(wgDeptShow -> { + if (null != wgWorkGroupMap.get(wgDeptShow.getWgId()).getWgDepts()) { + wgWorkGroupMap.get(wgDeptShow.getWgId()).getWgDepts().add(wgDeptShow); + } else { + List wgDepts = new ArrayList<>(); + wgDepts.add(wgDeptShow); + wgWorkGroupMap.get(wgDeptShow.getWgId()).setWgDepts(wgDepts); + } + }); + } + if (null != wgMeetingInfos && wgMeetingInfos.size() > 0) { + wgMeetingInfos.forEach(wgMeetingInfo -> { + if (null != wgWorkGroupMap.get(wgMeetingInfo.getWgId()).getWgMeetingInfos()) { + wgWorkGroupMap.get(wgMeetingInfo.getWgId()).getWgMeetingInfos().add(meetMap.get(wgMeetingInfo.getId())); + } else { + List wgMeetingInfos1 = new ArrayList<>(); + wgMeetingInfos1.add(wgMeetingInfo); + wgWorkGroupMap.get(wgMeetingInfo.getWgId()).setWgMeetingInfos(wgMeetingInfos1); + } + }); + } + if (null != wgNetInfoDTOS && wgNetInfoDTOS.size() > 0) { + wgNetInfoDTOS.forEach(wgNetInfoDTO -> { + if (null != wgWorkGroupMap.get(wgNetInfoDTO.getWgId()).getWgNetInfos()) { + wgWorkGroupMap.get(wgNetInfoDTO.getWgId()).getWgNetInfos().add(wgNetInfoDTO); + } else { + List wgNetInfos = new ArrayList<>(); + wgNetInfos.add(wgNetInfoDTO); + wgWorkGroupMap.get(wgNetInfoDTO.getWgId()).setWgNetInfos(wgNetInfos); + } + }); + } + if (null != wgPayInfos && wgPayInfos.size() > 0) { + wgPayInfos.forEach(wgPayInfo -> { + if (null != wgWorkGroupMap.get(wgPayInfo.getWgId()).getWgPayInfos()) { + wgWorkGroupMap.get(wgPayInfo.getWgId()).getWgPayInfos().add(wgPayInfo); + } else { + List wgPayInfos1 = new ArrayList<>(); + wgPayInfos1.add(wgPayInfo); + wgWorkGroupMap.get(wgPayInfo.getWgId()).setWgPayInfos(wgPayInfos1); + } + }); + } + //处理标准政策数据 + if (null != wgStandorpolicyInfos && wgStandorpolicyInfos.size() > 0) { + wgStandorpolicyInfos.forEach(wgStandorpolicyInfo -> { + if (null != wgWorkGroupMap.get(wgStandorpolicyInfo.getWgId()).getWgStandorpolicyInfos()) { + wgWorkGroupMap.get(wgStandorpolicyInfo.getWgId()).setName(wgStandorpolicyInfo.getName()); + wgWorkGroupMap.get(wgStandorpolicyInfo.getWgId()).getWgStandorpolicyInfos().add(wgStandorpolicyInfo); + } else { + List wgStandorpolicyInfos1 = new ArrayList<>(); + wgStandorpolicyInfos1.add(wgStandorpolicyInfo); + wgWorkGroupMap.get(wgStandorpolicyInfo.getWgId()).setName(wgStandorpolicyInfo.getName()); + wgWorkGroupMap.get(wgStandorpolicyInfo.getWgId()).setWgStandorpolicyInfos(wgStandorpolicyInfos1); + } + }); + } + //数据初步组装完成 开始进行树结构排序 + List nums = new ArrayList<>(); + Map> map = new HashMap<>(); + wgWorkGroupShowDTOS.forEach(wgWorkGroupShowDTO -> { + if (null != map.get(Integer.valueOf(wgWorkGroupShowDTO.getLevel()))) { + map.get(Integer.valueOf(wgWorkGroupShowDTO.getLevel())).add(wgWorkGroupShowDTO); + } else { + List middle = new ArrayList<>(); + middle.add(wgWorkGroupShowDTO); + nums.add(Integer.valueOf(wgWorkGroupShowDTO.getLevel())); + map.put(Integer.valueOf(wgWorkGroupShowDTO.getLevel()), middle); + } + }); + //组装数据 + for (int i = nums.size() - 1; i > 0; i--) { + int finalI = i; + map.get(i - 1).forEach(wgWorkGroupShowDTO -> { + map.get(finalI).forEach(wgWorkGroupShowDTO1 -> { + if (wgWorkGroupShowDTO.getId().equals(wgWorkGroupShowDTO1.getPid())) { + if (null != wgWorkGroupShowDTO.getChildren()) { + wgWorkGroupShowDTO.getChildren().add(wgWorkGroupShowDTO1); + } else { + List children = new ArrayList<>(); + children.add(wgWorkGroupShowDTO1); + wgWorkGroupShowDTO.setChildren(children); + } + } + }); + }); + } + return map.get(0).get(0); + } + + @Override + public ResponseMessage deleteData(String id, List ids) { + List wgWorkGroupShowDTOS = wgWorkGroupDao.researchDownCheck(id, "1"); + List wgWorkGroups = wgWorkGroupDao.researchDownLevel(id); + if (null != wgWorkGroupShowDTOS && wgWorkGroupShowDTOS.size() > 0 && null != wgWorkGroups && wgWorkGroups.size() > 0) { + return Result.error("该工作组下存在工作组且处在流程中,无法删除"); + } else if (null != wgWorkGroups && wgWorkGroups.size() > 0) { + return Result.error("该工作组下存在工作组,无法删除"); + } else if (null != wgWorkGroupShowDTOS && wgWorkGroupShowDTOS.size() > 0) { + return Result.error("该工作组处在流程中,无法删除"); + } else { + wgWorkGroupService.removeById(id); + Map columnMap = new HashMap<>(); + columnMap.put("wg_id", id); + wgStandorpolicyInfoService.removeByMap(columnMap); + wgPayInfoService.removeByMap(columnMap); + wgNetInfoService.removeByMap(columnMap); + wgMeetingInfoService.removeByMap(columnMap); + wgDeptService.removeByMap(columnMap); + if (null != ids && ids.size() > 0) { + wgMeetingUserRelationService.removeByIds(ids); + } + return Result.success("删除成功"); + } + } + + @Override + public ResponseMessage updateData(WgWorkGroupShowDTO wgWorkGroupShowDTO) { + List wgWorkGroupShowDTOS = wgWorkGroupDao.researchDatasCheck(wgWorkGroupShowDTO.getId(), "0"); + if (null != wgWorkGroupShowDTOS && wgWorkGroupShowDTOS.size() > 0) { + return Result.error("工作组处在流程中,无法修改"); + } else { + return dealAllDatas(wgWorkGroupShowDTO,"sys"); + } + } + + @Override + public ResponseMessage updateDataByWk(WgWorkGroupShowDTO wgWorkGroupShowDTO) { + return dealAllDatas(wgWorkGroupShowDTO,"wk"); + } + + private ResponseMessage dealAllDatas(WgWorkGroupShowDTO wgWorkGroupShowDTO,String part) { + WgWorkGroup wgWorkGroup = new WgWorkGroup(); + BeanUtils.copyProperties(wgWorkGroupShowDTO, wgWorkGroup); + boolean flag = false; + flag = wgWorkGroupService.saveOrUpdate(wgWorkGroup); + saveBathDept(wgWorkGroupShowDTO, flag,part); + saveBathMeetingUserRelations(wgWorkGroupShowDTO, flag,part); + saveBathNetInfo(wgWorkGroupShowDTO, flag,part); + saveBathPayInfo(wgWorkGroupShowDTO, flag,part); + saveBathStandardPolicyInfo(wgWorkGroupShowDTO, flag,part); + + if (flag) { + return Result.success("更新成功"); + } else { + return Result.error("无法更新"); + } + } + + private boolean saveBathPayInfo(WgWorkGroupShowDTO wgWorkGroupShowDTO, boolean flag,String part) { + if (null != wgWorkGroupShowDTO.getWgPayInfos() && wgWorkGroupShowDTO.getWgPayInfos().size() > 0) { + if (StringUtils.isNotEmpty(wgWorkGroupShowDTO.getWgPayInfosDel())) { + List strings = new ArrayList<>(Arrays.asList(wgWorkGroupShowDTO.getWgPayInfosDel().split(","))); + wgPayInfoService.removeByIds(strings); + } + if (!wgWorkGroupShowDTO.getWgPayInfos().isEmpty()) { + wgWorkGroupShowDTO.getWgPayInfos().forEach(wgPayInfo -> { + if (null == wgPayInfo.getWgId()) { + wgPayInfo.setWgId(wgWorkGroupShowDTO.getId()); + } + }); + } + flag = wgPayInfoService.saveOrUpdateBatch(wgWorkGroupShowDTO.getWgPayInfos()); + }else if ("sys".equals(part)){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("wg_id",wgWorkGroupShowDTO.getId()); + wgPayInfoService.remove(queryWrapper); + } + return flag; + } + + private boolean saveBathNetInfo(WgWorkGroupShowDTO wgWorkGroupShowDTO, boolean flag,String part) { + if (null != wgWorkGroupShowDTO.getWgNetInfos() && wgWorkGroupShowDTO.getWgNetInfos().size() > 0) { + if (StringUtils.isNotEmpty(wgWorkGroupShowDTO.getWgNetInfosDel())) { + List strings = new ArrayList<>(Arrays.asList(wgWorkGroupShowDTO.getWgNetInfosDel().split(","))); + wgNetInfoService.removeByIds(strings); + } + List wgNetInfos = new ArrayList<>(); + wgWorkGroupShowDTO.getWgNetInfos().forEach(wgNetInfoDTO -> { + WgNetInfo wgNetInfo = new WgNetInfo(); + BeanUtils.copyProperties(wgNetInfoDTO, wgNetInfo); + if (null == wgNetInfo.getWgId()) { + wgNetInfo.setWgId(wgWorkGroupShowDTO.getId()); + } + wgNetInfos.add(wgNetInfo); + }); + flag = wgNetInfoService.saveOrUpdateBatch(wgNetInfos); + }else if ("sys".equals(part)) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("wg_id",wgWorkGroupShowDTO.getId()); + wgNetInfoService.remove(queryWrapper); + } + return flag; + } + + private boolean saveBathMeetingUserRelations(WgWorkGroupShowDTO wgWorkGroupShowDTO, boolean flag,String part) { + if (null != wgWorkGroupShowDTO.getWgMeetingInfos() && wgWorkGroupShowDTO.getWgMeetingInfos().size() > 0) { + if (StringUtils.isNotEmpty(wgWorkGroupShowDTO.getWgMeetingInfosDel())) { + List strings = new ArrayList<>(Arrays.asList(wgWorkGroupShowDTO.getWgMeetingInfosDel().split(","))); + wgDeptService.removeByIds(strings); + wgMeetingUserRelationService.removeByIds(strings); + } + List removeMeet = new ArrayList<>(); + List wgMeetingUserRelations = new ArrayList<>(); + wgWorkGroupShowDTO.getWgMeetingInfos().forEach(wgMeetingInfo -> { + if (null == wgMeetingInfo.getId()) { + wgMeetingInfo.setId(String.valueOf(UUID.randomUUID())); + wgMeetingInfo.setWgId(wgWorkGroupShowDTO.getId()); + } + wgMeetingInfo.getMeetingPeople().forEach(s -> { + WgMeetingUserRelation wgMeetingUserRelation = new WgMeetingUserRelation(); + wgMeetingUserRelation.setUserId(s); + wgMeetingUserRelation.setMeetingId(wgMeetingInfo.getId()); + wgMeetingUserRelations.add(wgMeetingUserRelation); + }); + removeMeet.add(wgMeetingInfo.getId()); + }); + flag = wgMeetingInfoService.saveOrUpdateBatch(wgWorkGroupShowDTO.getWgMeetingInfos()); + if (!removeMeet.isEmpty()) { + wgMeetingUserRelationService.removeByIds(removeMeet); + wgMeetingUserRelationService.saveBatch(wgMeetingUserRelations); + } + }else if ("sys".equals(part)) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("wg_id",wgWorkGroupShowDTO.getId()); + wgMeetingInfoService.remove(queryWrapper); + List wgMeetingInfos=wgMeetingInfoService.list(queryWrapper); + List removeIds=new ArrayList<>(); + wgMeetingInfos.forEach(wgMeetingInfo -> { + removeIds.add(wgMeetingInfo.getId()); + }); + if (removeIds.size()>0) { + wgMeetingUserRelationService.removeByIds(removeIds); + } + } + return flag; + } + + private boolean saveBathDept(WgWorkGroupShowDTO wgWorkGroupShowDTO, boolean flag,String part) { + if (null != wgWorkGroupShowDTO.getWgDepts() && wgWorkGroupShowDTO.getWgDepts().size() > 0) { + if (StringUtils.isNotEmpty(wgWorkGroupShowDTO.getWgDeptsDel())) { + List strings = new ArrayList<>(Arrays.asList(wgWorkGroupShowDTO.getWgDeptsDel().split(","))); + wgDeptService.removeByIds(strings); + } + List wgDepts = new ArrayList<>(); + wgWorkGroupShowDTO.getWgDepts().forEach(wgDeptShow -> { + WgDept wgDept = new WgDept(); + BeanUtils.copyProperties(wgDeptShow, wgDept); + if (null == wgDept.getWgId()) { + wgDept.setWgId(wgWorkGroupShowDTO.getId()); + } + wgDepts.add(wgDept); + }); + flag = wgDeptService.saveOrUpdateBatch(wgDepts); + }else if ("sys".equals(part)) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("wg_id",wgWorkGroupShowDTO.getId()); + wgDeptService.remove(queryWrapper); + } + return flag; + } + + + private boolean saveBathStandardPolicyInfo(WgWorkGroupShowDTO wgWorkGroupShowDTO, boolean flag,String part) { + if (null != wgWorkGroupShowDTO.getWgStandorpolicyInfos() && wgWorkGroupShowDTO.getWgStandorpolicyInfos().size() > 0) { + if (!wgWorkGroupShowDTO.getWgStandorpolicyInfos().isEmpty()) { + wgWorkGroupShowDTO.getWgStandorpolicyInfos().forEach(wgStandorpolicyInfo -> { + if (null == wgStandorpolicyInfo.getWgId()) { + wgStandorpolicyInfo.setWgId(wgWorkGroupShowDTO.getId()); + } + }); + } + flag = wgStandorpolicyInfoService.saveOrUpdateBatch(wgWorkGroupShowDTO.getWgStandorpolicyInfos()); + }else if ("sys".equals(part)) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("wg_id",wgWorkGroupShowDTO.getId()); + wgStandorpolicyInfoService.remove(queryWrapper); + } + return flag; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdCgfyController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdCgfyController.java new file mode 100644 index 00000000..bf35eddd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdCgfyController.java @@ -0,0 +1,140 @@ +package com.adc.da.slrs.wgdCensusLeo.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdCgfy; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdCgfyService; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 委员信息数据统计 前端控制器 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@RestController +@Api(description = "|WgdCgfy|") +@RequestMapping("api/wgdCensusLeo/wgd-cgfy") +public class WgdCgfyController extends BaseController { + @Autowired + IWgdCgfyService iWgdCgfyService; + + @GetMapping("/getAllCgfys") + public ResponseMessage getAllWgdCgfys(){//查询所有 + return Result.success(iWgdCgfyService.getAllWgdCgfys()); + } + + @ApiOperation("查询") + @GetMapping("/queryAllCgfys") + public ResponseMessage queryAllWgdCgfys(WgdCgfy wgdCgfy){//多条件查询 + List wgdCgfys = iWgdCgfyService.queryAllWgdCgfys(wgdCgfy); + PageInfo pageInfo = getPageInfo(wgdCgfy.getPager(),wgdCgfys); + return Result.success(pageInfo); + } + + @ApiOperation("导出采购费用信息统计") + @GetMapping("/exportAllCgfys") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="采购费用信息统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdCgfyService.list(wrapper); + } else { + datas = iWgdCgfyService.getAllWgdCgfys(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams,WgdCgfy.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAllCgfys") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdCgfyService.importCgfy(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + } + + @GetMapping("/getCgfyById") + public ResponseMessage getWgdCgfyById(String id) {//查询详情 + return Result.success(iWgdCgfyService.getWgdCgfyById(id)); + } + + @ApiOperation("更新") + @PostMapping("/modCgfy") + ResponseMessage updateWgdCgfy(WgdCgfy WgdCgfy) {//编辑 + return Result.success(iWgdCgfyService.updateWgdCgfy(WgdCgfy)); + } + + @ApiOperation("添加") + @PostMapping("/addCgfy") + ResponseMessage insertWgdCgfy(WgdCgfy WgdCgfy) {//插入 + return Result.success(iWgdCgfyService.insertWgdCgfy(WgdCgfy)); + } + + @PostMapping("/delCgfy") + ResponseMessage deleteWgdCgfy(String id){//删除 + return Result.success(iWgdCgfyService.deleteWgdCgfy(id)); + } + + @ApiOperation("删除") + @PostMapping("/delCgfys") + ResponseMessage deleteWgdCgfys(String ids){//批量删除 + return Result.success(iWgdCgfyService.deleteWgdCgfys(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdFyfyController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdFyfyController.java new file mode 100644 index 00000000..b8810733 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdFyfyController.java @@ -0,0 +1,140 @@ +package com.adc.da.slrs.wgdCensusLeo.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdCgfy; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdFyfy; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdFyfyService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 翻译费用信息统计 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdFyfy|") +@RequestMapping("api/wgdCensusLeo/wgd-fyfy") +public class WgdFyfyController extends BaseController { + @Autowired + IWgdFyfyService iWgdFyfyService; + + @GetMapping("/getAllFyfys") + public ResponseMessage getAllWgdFyfys(){//查询所有 + return Result.success(iWgdFyfyService.getAllWgdFyfys()); + } + + @ApiOperation("查询") + @GetMapping("/queryAllFyfys") + public ResponseMessage queryAllWgdFyfys(WgdFyfy wgdFyfy){//多条件查询 + List wgdFyfys = iWgdFyfyService.queryAllWgdFyfys(wgdFyfy); + PageInfo pageInfo = getPageInfo(wgdFyfy.getPager(),wgdFyfys); + return Result.success(pageInfo); + } + + @ApiOperation("导出翻译费用信息统计") + @GetMapping("/exportAllFyfys") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="翻译费用信息统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdFyfyService.list(wrapper); + } else { + datas = iWgdFyfyService.getAllWgdFyfys(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams, WgdFyfy.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAllFyfys") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdFyfyService.importFyfy(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + } + + @GetMapping("/getFyfyById") + public ResponseMessage getWgdFyfyById(String id) {//查询详情 + return Result.success(iWgdFyfyService.getWgdFyfyById(id)); + } + + @ApiOperation("更新") + @PostMapping("/modFyfy") + ResponseMessage updateWgdFyfy(WgdFyfy WgdFyfy) {//编辑 + return Result.success(iWgdFyfyService.updateWgdFyfy(WgdFyfy)); + } + + @ApiOperation("添加") + @PostMapping("/addFyfy") + ResponseMessage insertWgdFyfy(WgdFyfy WgdFyfy) {//插入 + return Result.success(iWgdFyfyService.insertWgdFyfy(WgdFyfy)); + } + + @PostMapping("/delFyfy") + ResponseMessage deleteWgdFyfy(String id){//删除 + return Result.success(iWgdFyfyService.deleteWgdFyfy(id)); + } + + @ApiOperation("删除") + @PostMapping("/delFyfys") + ResponseMessage deleteWgdFyfys(String ids){//批量删除 + return Result.success(iWgdFyfyService.deleteWgdFyfys(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdSrbController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdSrbController.java new file mode 100644 index 00000000..c8cdc0a9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdSrbController.java @@ -0,0 +1,140 @@ +package com.adc.da.slrs.wgdCensusLeo.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdFyfy; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdSrb; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdSrbService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 标准制修订补助资金收支统计收入表 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdSrb|") +@RequestMapping("api/wgdCensusLeo/wgd-srb") +public class WgdSrbController extends BaseController { + @Autowired + IWgdSrbService iWgdSrbService; + + @GetMapping("/getAllSrbs") + public ResponseMessage getAllWgdSrbs(){//查询所有 + return Result.success(iWgdSrbService.getAllWgdSrbs()); + } + + @ApiOperation("查询") + @GetMapping("/queryAllSrbs") + public ResponseMessage queryAllWgdSrbs(WgdSrb wgdSrb){//多条件查询 + List wgdSrbs = iWgdSrbService.queryAllWgdSrbs(wgdSrb); + PageInfo pageInfo = getPageInfo(wgdSrb.getPager(),wgdSrbs); + return Result.success(pageInfo); + } + + @ApiOperation("导出标准制修订补助资金收支统计收入") + @GetMapping("/exportAllSrbs") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="标准制修订补助资金收支统计收入表"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdSrbService.list(wrapper); + } else { + datas = iWgdSrbService.getAllWgdSrbs(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams, WgdSrb.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAllSrbs") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdSrbService.importSrb(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + } + + @GetMapping("/getSrbById") + public ResponseMessage getWgdSrbById(String id) {//查询详情 + return Result.success(iWgdSrbService.getWgdSrbById(id)); + } + + @ApiOperation("更新") + @PostMapping("/modSrb") + ResponseMessage updateWgdSrb(WgdSrb WgdSrb) {//编辑 + return Result.success(iWgdSrbService.updateWgdSrb(WgdSrb)); + } + + @ApiOperation("添加") + @PostMapping("/addSrb") + ResponseMessage insertWgdSrb(WgdSrb WgdSrb) {//插入 + return Result.success(iWgdSrbService.insertWgdSrb(WgdSrb)); + } + + @PostMapping("/delSrb") + ResponseMessage deleteWgdSrb(String id){//删除 + return Result.success(iWgdSrbService.deleteWgdSrb(id)); + } + + @ApiOperation("删除") + @PostMapping("/delSrbs") + ResponseMessage deleteWgdSrbs(String ids){//批量删除 + return Result.success(iWgdSrbService.deleteWgdSrbs(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdWbtjController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdWbtjController.java new file mode 100644 index 00000000..16b3cc16 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdWbtjController.java @@ -0,0 +1,138 @@ +package com.adc.da.slrs.wgdCensusLeo.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.common.ReadExcel; +import com.adc.da.exception.AdcDaBaseException; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdSrb; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdWbtjService; +import com.adc.da.util.IOUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 参与外部协会会议统计 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdWbtj|") +@RequestMapping("api/wgdCensusLeo/wgd-wbtj") +public class WgdWbtjController extends BaseController { + @Autowired + IWgdWbtjService iWgdWbtjService; + + @GetMapping("/getAllWbtjs") + public ResponseMessage getAllWgdWbtjs(){//查询所有 + return Result.success(iWgdWbtjService.getAllWgdWbtjs()); + } + + @ApiOperation("查询") + @GetMapping("/queryAllWbtjs") + public ResponseMessage queryAllWgdWbtjs(WgdWbtj wgdWbtj){//多条件查询 + List wgdWbtjs = iWgdWbtjService.queryAllWgdWbtjs(wgdWbtj); + PageInfo pageInfo = getPageInfo(wgdWbtj.getPager(),wgdWbtjs); + return Result.success(pageInfo); + } + @ApiOperation("导出参与外部协会会议统计") + @GetMapping("/exportAllWbtjs") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="参与外部协会会议统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdWbtjService.list(wrapper); + } else { + datas = iWgdWbtjService.getAllWgdWbtjs(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams,WgdWbtj.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAllAllWbtjs") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdWbtjService.importWbtj(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + } + + + @GetMapping("/getWbtjById") + public ResponseMessage getWgdWbtjById(String id) {//查询详情 + return Result.success(iWgdWbtjService.getWgdWbtjById(id)); + } + + @ApiOperation("更新") + @PostMapping("/modWbtj") + ResponseMessage updateWgdWbtj(WgdWbtj WgdWbtj) {//编辑 + return Result.success(iWgdWbtjService.updateWgdWbtj(WgdWbtj)); + } + + @ApiOperation("添加") + @PostMapping("/addWbtj") + ResponseMessage insertWgdWbtj(WgdWbtj WgdWbtj) {//插入 + return Result.success(iWgdWbtjService.insertWgdWbtj(WgdWbtj)); + } + + @PostMapping("/delWbtj") + ResponseMessage deleteWgdWbtj(String id){//删除 + return Result.success(iWgdWbtjService.deleteWgdWbtj(id)); + } + + @ApiOperation("删除") + @PostMapping("/delWbtjs") + ResponseMessage deleteWgdWbtjs(String ids){//批量删除 + return Result.success(iWgdWbtjService.deleteWgdWbtjs(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdWbxdController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdWbxdController.java new file mode 100644 index 00000000..6f388429 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdWbxdController.java @@ -0,0 +1,139 @@ +package com.adc.da.slrs.wgdCensusLeo.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdSrb; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbxd; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdWbxdService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 参与外部标准制修订信息统计 前端控制器 + *

    +* +* @author super_liu +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdWbxd|") +@RequestMapping("api/wgdCensusLeo/wgd-wbxd") +public class WgdWbxdController extends BaseController { + @Autowired + IWgdWbxdService iWgdWbxdService; + + @GetMapping("/getAllWbxds") + public ResponseMessage getAllWgdWbxds(){//查询所有 + return Result.success(iWgdWbxdService.getAllWgdWbxds()); + } + + @ApiOperation("查询") + @GetMapping("/queryAllWbxds") + public ResponseMessage queryAllWgdWbxds(WgdWbxd wgdWbxd){//多条件查询 + List wgdWbxds = iWgdWbxdService.queryAllWgdWbxds(wgdWbxd); + PageInfo pageInfo = getPageInfo(wgdWbxd.getPager(),wgdWbxds); + return Result.success(pageInfo); + } + @ApiOperation("导出参与外部标准制修订信息统计") + @GetMapping("/exportAllWbxds") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="参与外部标准制修订信息统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdWbxdService.list(wrapper); + } else { + datas = iWgdWbxdService.getAllWgdWbxds(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams,WgdWbxd.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAllWbxds") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdWbxdService.importWbxd(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + } + + @GetMapping("/getWbxdById") + public ResponseMessage getWgdWbxdById(String id) {//查询详情 + return Result.success(iWgdWbxdService.getWgdWbxdById(id)); + } + + @ApiOperation("更新") + @PostMapping("/modWbxd") + ResponseMessage updateWgdWbxd(WgdWbxd WgdWbxd) {//编辑 + return Result.success(iWgdWbxdService.updateWgdWbxd(WgdWbxd)); + } + + @ApiOperation("添加") + @PostMapping("/addWbxd") + ResponseMessage insertWgdWbxd(WgdWbxd WgdWbxd) {//插入 + return Result.success(iWgdWbxdService.insertWgdWbxd(WgdWbxd)); + } + + @PostMapping("/delWbxd") + ResponseMessage deleteWgdWbxd(String id){//删除 + return Result.success(iWgdWbxdService.deleteWgdWbxd(id)); + } + + @ApiOperation("删除") + @PostMapping("/delWbxds") + ResponseMessage deleteWgdWbxds(String ids){//批量删除 + return Result.success(iWgdWbxdService.deleteWgdWbxds(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdZcbController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdZcbController.java new file mode 100644 index 00000000..bf779049 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/controller/WgdZcbController.java @@ -0,0 +1,142 @@ +package com.adc.da.slrs.wgdCensusLeo.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdSrb; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdZcb; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdZcbService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 标准制修订补助资金收支统计支出表 前端控制器 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@RestController +@Api(description = "|WgdZcb|") +@RequestMapping("api/wgdCensusLeo/wgd-zcb") +public class WgdZcbController extends BaseController { + @Autowired + IWgdZcbService iWgdZcbService; + + @GetMapping("/getAllZcbs") + public ResponseMessage getAllWgdZcbs() {//查询所有 + return Result.success(iWgdZcbService.getAllWgdZcbs()); + } + + + @ApiOperation("查询") + @GetMapping("/queryAllZcbs") + public ResponseMessage queryAllWgdZcbs(WgdZcb wgdZcb) {//多条件查询 + List wgdZcbs = iWgdZcbService.queryAllWgdZcbs(wgdZcb); + PageInfo pageInfo = getPageInfo(wgdZcb.getPager(),wgdZcbs); + return Result.success(pageInfo); + } + + @ApiOperation("导出标准制修订补助资金收支统计支出表") + @GetMapping("/exportAllZcbs") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="标准制修订补助资金收支统计支出表"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdZcbService.list(wrapper); + } else { + datas = iWgdZcbService.getAllWgdZcbs(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams, WgdZcb.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAllZcbs") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdZcbService.importZcb(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + + } + + @GetMapping("/getZcbById") + public ResponseMessage getWgdZcbById(String id) {//查询详情 + return Result.success(iWgdZcbService.getWgdZcbById(id)); + } + + @ApiOperation("更新") + @PostMapping("/modZcb") + ResponseMessage updateWgdZcb(WgdZcb WgdZcb) {//编辑 + return Result.success(iWgdZcbService.updateWgdZcb(WgdZcb)); + } + + @ApiOperation("添加") + @PostMapping("/addZcb") + ResponseMessage insertWgdZcb(WgdZcb WgdZcb) {//插入 + return Result.success(iWgdZcbService.insertWgdZcb(WgdZcb)); + } + + @PostMapping("/delZcb") + ResponseMessage deleteWgdZcb(String id) {//删除 + return Result.success(iWgdZcbService.deleteWgdZcb(id)); + } + + @ApiOperation("删除") + @PostMapping("/delZcbs") + ResponseMessage deleteWgdZcbs(String ids) {//批量删除 + return Result.success(iWgdZcbService.deleteWgdZcbs(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdCgfyDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdCgfyDao.java new file mode 100644 index 00000000..ea2981fd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdCgfyDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.wgdCensusLeo.dao; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdCgfy; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 采购费用信息统计 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface WgdCgfyDao extends BaseMapper { + Integer getQueryTotal(WgdCgfy WgdCgfy);//总数 + List selectAll();//查询所有 + List queryAll(WgdCgfy wgdCgfy);//多条件查询 + WgdCgfy selectOne(String id);//查询详情 + + int updateOne(WgdCgfy wgdCgfy);//编辑 + int insertOne(WgdCgfy wgdCgfy);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdFyfyDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdFyfyDao.java new file mode 100644 index 00000000..ca20525c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdFyfyDao.java @@ -0,0 +1,32 @@ +package com.adc.da.slrs.wgdCensusLeo.dao; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdFyfy; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 翻译费用信息统计 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface WgdFyfyDao extends BaseMapper { + Integer getQueryTotal(WgdFyfy WgdFyfy);//总数 + + List selectAll();//查询所有 + + List queryAll(WgdFyfy wgdFyfy);//多条件查询 + + WgdFyfy selectOne(String id);//查询详情 + + int updateOne(WgdFyfy wgdFyfy);//编辑 + + int insertOne(WgdFyfy wgdFyfy);//插入 + + int deleteOne(String id);//删除 + + int deleteBatch(String[] ids);//批量删除 +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdSrbDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdSrbDao.java new file mode 100644 index 00000000..d3989678 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdSrbDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.wgdCensusLeo.dao; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdSrb; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 标准制修订补助资金收支统计收入表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface WgdSrbDao extends BaseMapper { + Integer getQueryTotal(WgdSrb WgdSrb);//总数 + List selectAll();//查询所有 + List queryAll(WgdSrb wgdSrb);//多条件查询 + WgdSrb selectOne(String id);//查询详情 + + int updateOne(WgdSrb wgdSrb);//编辑 + int insertOne(WgdSrb wgdSrb);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdWbtjDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdWbtjDao.java new file mode 100644 index 00000000..14577768 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdWbtjDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.wgdCensusLeo.dao; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 参与外部协会会议统计 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface WgdWbtjDao extends BaseMapper { + Integer getQueryTotal(WgdWbtj WgdWbtj);//总数 + List selectAll();//查询所有 + List queryAll(WgdWbtj wgdWbtj);//多条件查询 + WgdWbtj selectOne(String id);//查询详情 + + int updateOne(WgdWbtj wgdWbtj);//编辑 + int insertOne(WgdWbtj wgdWbtj);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdWbxdDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdWbxdDao.java new file mode 100644 index 00000000..50b4917d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdWbxdDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.wgdCensusLeo.dao; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbxd; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 参与外部标准制修订信息统计 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface WgdWbxdDao extends BaseMapper { + Integer getQueryTotal(WgdWbxd WgdWbxd);//总数 + List selectAll();//查询所有 + List queryAll(WgdWbxd wgdWbxd);//多条件查询 + WgdWbxd selectOne(String id);//查询详情 + + int updateOne(WgdWbxd wgdWbxd);//编辑 + int insertOne(WgdWbxd wgdWbxd);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdZcbDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdZcbDao.java new file mode 100644 index 00000000..2af97d73 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/dao/WgdZcbDao.java @@ -0,0 +1,26 @@ +package com.adc.da.slrs.wgdCensusLeo.dao; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdZcb; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + *

    + * 标准制修订补助资金收支统计支出表 Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface WgdZcbDao extends BaseMapper { + Integer getQueryTotal(WgdZcb WgdZcb);//总数 + List selectAll();//查询所有 + List queryAll(WgdZcb wgdZcb);//多条件查询 + WgdZcb selectOne(String id);//查询详情 + + int updateOne(WgdZcb wgdZcb);//编辑 + int insertOne(WgdZcb wgdZcb);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdCgfy.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdCgfy.java new file mode 100644 index 00000000..1d6722e5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdCgfy.java @@ -0,0 +1,53 @@ +package com.adc.da.slrs.wgdCensusLeo.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.adc.da.base.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 采购费用信息统计 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdCgfy对象", description="采购费用信息统计") +public class WgdCgfy extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "标准类型") + @Excel(name = "标准类型", orderNum = "0",width = 20.0) + private String type; + + @ApiModelProperty(value = "标准代号") + @Excel(name = "标准代号", orderNum = "1",width = 20.0) + private String number; + + @ApiModelProperty(value = "标准名称") + @Excel(name = "标准名称", orderNum = "2",width = 20.0) + private String name; + + @ApiModelProperty(value = "页数") + @Excel(name = "页数", orderNum = "3",width = 20.0) + private String pages; + + @ApiModelProperty(value = "费用") + @Excel(name = "费用", orderNum = "4",width = 20.0) + private String cost; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdFyfy.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdFyfy.java new file mode 100644 index 00000000..15ab39fe --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdFyfy.java @@ -0,0 +1,66 @@ +package com.adc.da.slrs.wgdCensusLeo.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import java.util.Date; + +import com.adc.da.base.page.BasePage; +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; + +/** + *

    + * 翻译费用信息统计 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdFyfy对象", description="翻译费用信息统计") +public class WgdFyfy extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "标准类型") + @Excel(name = "标准类型", orderNum = "0",width = 20.0) + private String type; + + @ApiModelProperty(value = "标准代号") + @Excel(name = "标准代号", orderNum = "1",width = 20.0) + private String number; + + @ApiModelProperty(value = "标准名称") + @Excel(name = "标准名称", orderNum = "2",width = 20.0) + private String name; + + @ApiModelProperty(value = "翻译类型") + @Excel(name = "翻译类型", orderNum = "3",width = 20.0) + private String translation; + + @ApiModelProperty(value = "页数") + @Excel(name = "页数", orderNum = "4",width = 20.0) + private String pages; + + @ApiModelProperty(value = "费用") + @Excel(name = "费用", orderNum = "5",width = 20.0) + private String cost; + + @ApiModelProperty(value = "翻译完成时间") + @Excel(name = "翻译完成时间", orderNum = "6",width = 20.0, exportFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date time; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdSrb.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdSrb.java new file mode 100644 index 00000000..cd4397f4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdSrb.java @@ -0,0 +1,57 @@ +package com.adc.da.slrs.wgdCensusLeo.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import java.util.Date; + +import com.adc.da.base.page.BasePage; +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; + +/** + *

    + * 标准制修订补助资金收支统计收入表 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdSrb对象", description="标准制修订补助资金收支统计收入表") +public class WgdSrb extends BasePage { + + private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "标准名称") + @Excel(name = "标准名称", orderNum = "0",width = 20.0) + private String name; + + @ApiModelProperty(value = "标准编号") + @Excel(name = "标准编号", orderNum = "1",width = 20.0) + private String number; + + @ApiModelProperty(value = "补助来源") + @Excel(name = "补助来源", orderNum = "2",width = 20.0) + private String source; + + @ApiModelProperty(value = "补助金额") + @Excel(name = "补助金额", orderNum = "3",width = 20.0) + private String cost; + + @ApiModelProperty(value = "入账时间") + @Excel(name = "入账时间", orderNum = "4",width = 20.0, exportFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date time; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdWbtj.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdWbtj.java new file mode 100644 index 00000000..db801ae0 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdWbtj.java @@ -0,0 +1,90 @@ +package com.adc.da.slrs.wgdCensusLeo.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.base.page.BasePage; +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.util.Date; + +/** + *

    + * 参与外部协会会议统计 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdWbtj对象", description="参与外部协会会议统计") +public class WgdWbtj extends BasePage { + + private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "主办单位") + @Excel(name = "主办单位", orderNum = "0",width = 20.0) + private String host; + + @ApiModelProperty(value = "会议名称") + @Excel(name = "会议名称", orderNum = "1",width = 20.0) + private String meeting; + + @ApiModelProperty(value = "会议时间") + @Excel(name = "会议时间", orderNum = "2",width = 20.0, exportFormat = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + private Date time; + + @ApiModelProperty(value = "会议地点") + @Excel(name = "会议地点", orderNum = "3",width = 20.0) + private String place; + + @ApiModelProperty(value = "会费标准") + @Excel(name = "会费标准", orderNum = "4",width = 20.0) + private String contributions; + + @ApiModelProperty(value = "会费实际发生") + @Excel(name = "会费实际发生", orderNum = "5",width = 20.0) + private String occurs; + + @ApiModelProperty(value = "费用列支") + @Excel(name = "费用列支", orderNum = "6",width = 20.0) + private String expenses; + + @ApiModelProperty(value = "参会人员") + @Excel(name = "参会人员", orderNum = "7",width = 20.0) + private String user; + + @ApiModelProperty(value = "主管领导") + @Excel(name = "主管领导", orderNum = "8",width = 20.0) + private String leadership; + + @ApiModelProperty(value = "参会单位") + @Excel(name = "参会单位", orderNum = "9",width = 20.0) + private String participants; + + @ApiModelProperty(value = "会议资料") + @Excel(name = "会议资料", orderNum = "10",width = 20.0) + private String information; + + @ApiModelProperty(value = "会议录音") + @Excel(name = "会议录音", orderNum = "11",width = 20.0) + private String recording; + + @ApiModelProperty(value = "主要议题") + @Excel(name = "主要议题", orderNum = "12",width = 20.0) + @TableField("Issues") + private String Issues; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdWbxd.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdWbxd.java new file mode 100644 index 00000000..d9898f76 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdWbxd.java @@ -0,0 +1,125 @@ +package com.adc.da.slrs.wgdCensusLeo.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; +import java.util.Date; + +import com.adc.da.base.page.BasePage; +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; + +/** + *

    + * 参与外部标准制修订信息统计 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdWbxd对象", description="参与外部标准制修订信息统计") +public class WgdWbxd extends BasePage { + + private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "所处阶段") + @Excel(name = "所处阶段", orderNum = "0",width = 20.0) + private String stage; + + @ApiModelProperty(value = "标准号") + @Excel(name = "标准号", orderNum = "1",width = 20.0) + private String number; + + @ApiModelProperty(value = "标准名称") + @Excel(name = "标准名称", orderNum = "2",width = 20.0) + private String name; + + @ApiModelProperty(value = "项目代号") + @Excel(name = "项目代号", orderNum = "3",width = 20.0) + private String projectId; + + @ApiModelProperty(value = "项目名称") + @Excel(name = "项目名称", orderNum = "4",width = 20.0) + private String projectName; + + @ApiModelProperty(value = "标准类型") + @Excel(name = "标准类型", orderNum = "5",width = 20.0) + private String type; + + @ApiModelProperty(value = "主持或参与") + @Excel(name = "主持或参与", orderNum = "6",width = 20.0) + private String preside; + + @ApiModelProperty(value = "发布日期") + @Excel(name = "发布日期", orderNum = "7",width = 20.0, exportFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dataStart; + + @ApiModelProperty(value = "实施日期") + @Excel(name = "实施日期", orderNum = "8",width = 20.0, exportFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dataImplement; + + @ApiModelProperty(value = "颁布机构") + @Excel(name = "颁布机构", orderNum = "9",width = 20.0) + private String body; + + @ApiModelProperty(value = "牵头起草单位") + @Excel(name = "牵头起草单位", orderNum = "10",width = 20.0) + private String drafting; + + @ApiModelProperty(value = "备案时间") + @Excel(name = "备案时间", orderNum = "11",width = 20.0, exportFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dataRecord; + + @ApiModelProperty(value = "提报单位名称") + @Excel(name = "提报单位名称", orderNum = "12",width = 20.0) + private String report; + + @ApiModelProperty(value = "参与人") + @Excel(name = "参与人", orderNum = "13",width = 20.0) + private String participants; + + @ApiModelProperty(value = "署名人") + @Excel(name = "署名人", orderNum = "14",width = 20.0) + private String celebrity; + + @ApiModelProperty(value = "制标费用") + @Excel(name = "制标费用", orderNum = "15",width = 20.0) + private String costMarking; + + @ApiModelProperty(value = "其他费用") + @Excel(name = "其他费用", orderNum = "16",width = 20.0) + private String costOther; + + @ApiModelProperty(value = "标准制/修订") + @Excel(name = "标准制/修订", orderNum = "17",width = 20.0) + private String revised; + + @ApiModelProperty(value = "获奖情况") + @Excel(name = "获奖情况", orderNum = "18",width = 20.0) + private String status; + + @ApiModelProperty(value = "署名排序") + @Excel(name = "署名排序", orderNum = "19",width = 20.0) + private String signature; + + @ApiModelProperty(value = "备注") + @Excel(name = "备注", orderNum = "20",width = 20.0) + private String remark; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdZcb.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdZcb.java new file mode 100644 index 00000000..027d3468 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/entity/WgdZcb.java @@ -0,0 +1,47 @@ +package com.adc.da.slrs.wgdCensusLeo.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.entity.BaseEntity; +import java.math.BigDecimal; + +import com.adc.da.base.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * 标准制修订补助资金收支统计支出表 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdZcb对象", description="标准制修订补助资金收支统计支出表") +public class WgdZcb extends BasePage { + + private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "项目名称") + @Excel(name = "项目名称", orderNum = "0",width = 20.0) + private String name; + + @ApiModelProperty(value = "支出金额") + @Excel(name = "支出金额", orderNum = "1",width = 20.0) + private String cost; + + @ApiModelProperty(value = "用途") + @Excel(name = "用途", orderNum = "2",width = 20.0) + private String purposes; + + @ApiModelProperty(value = "详细附件") +// @Excel(name = "详细附件", orderNum = "3",width = 20.0) + private String annexs; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdCgfyService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdCgfyService.java new file mode 100644 index 00000000..e18c2888 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdCgfyService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgdCensusLeo.service; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdCgfy; +import com.adc.da.slrs.wgdCensusZ.entity.WgdMeetCost; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 采购费用信息统计 服务类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface IWgdCgfyService extends IService { + List getAllWgdCgfys();//查询所有 + List queryAllWgdCgfys(WgdCgfy wgdCgfy);//多条件查询 + WgdCgfy getWgdCgfyById(String id);//查询详情 + + int updateWgdCgfy(WgdCgfy wgdCgfy);//编辑 + int insertWgdCgfy(WgdCgfy wgdCgfy);//插入 + int deleteWgdCgfy(String id);//删除 + int deleteWgdCgfys(String ids);//批量删除 + List importCgfy(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdFyfyService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdFyfyService.java new file mode 100644 index 00000000..2fe56687 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdFyfyService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgdCensusLeo.service; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdCgfy; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdFyfy; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 翻译费用信息统计 服务类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface IWgdFyfyService extends IService { + List getAllWgdFyfys();//查询所有 + List queryAllWgdFyfys(WgdFyfy wgdFyfy);//多条件查询 + WgdFyfy getWgdFyfyById(String id);//查询详情 + + int updateWgdFyfy(WgdFyfy wgdFyfy);//编辑 + int insertWgdFyfy(WgdFyfy wgdFyfy);//插入 + int deleteWgdFyfy(String id);//删除 + int deleteWgdFyfys(String ids);//批量删除 + List importFyfy(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdSrbService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdSrbService.java new file mode 100644 index 00000000..cd20e698 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdSrbService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgdCensusLeo.service; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdCgfy; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdSrb; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 标准制修订补助资金收支统计收入表 服务类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface IWgdSrbService extends IService { + List getAllWgdSrbs();//查询所有 + List queryAllWgdSrbs(WgdSrb wgdSrb);//多条件查询 + WgdSrb getWgdSrbById(String id);//查询详情 + + int updateWgdSrb(WgdSrb wgdSrb);//编辑 + int insertWgdSrb(WgdSrb wgdSrb);//插入 + int deleteWgdSrb(String id);//删除 + int deleteWgdSrbs(String ids);//批量删除 + List importSrb(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdWbtjService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdWbtjService.java new file mode 100644 index 00000000..f8896d43 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdWbtjService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgdCensusLeo.service; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdSrb; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 参与外部协会会议统计 服务类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface IWgdWbtjService extends IService { + List getAllWgdWbtjs();//查询所有 + List queryAllWgdWbtjs(WgdWbtj wgdWbtj);//多条件查询 + WgdWbtj getWgdWbtjById(String id);//查询详情 + + int updateWgdWbtj(WgdWbtj wgdWbtj);//编辑 + int insertWgdWbtj(WgdWbtj wgdWbtj);//插入 + int deleteWgdWbtj(String id);//删除 + int deleteWgdWbtjs(String ids);//批量删除 + List importWbtj(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdWbxdService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdWbxdService.java new file mode 100644 index 00000000..10f9b73a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdWbxdService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgdCensusLeo.service; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbxd; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 参与外部标准制修订信息统计 服务类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface IWgdWbxdService extends IService { + List getAllWgdWbxds();//查询所有 + List queryAllWgdWbxds(WgdWbxd wgdWbxd);//多条件查询 + WgdWbxd getWgdWbxdById(String id);//查询详情 + + int updateWgdWbxd(WgdWbxd wgdWbxd);//编辑 + int insertWgdWbxd(WgdWbxd wgdWbxd);//插入 + int deleteWgdWbxd(String id);//删除 + int deleteWgdWbxds(String ids);//批量删除 + List importWbxd(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdZcbService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdZcbService.java new file mode 100644 index 00000000..b7d7e1da --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/IWgdZcbService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgdCensusLeo.service; + +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbxd; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdZcb; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 标准制修订补助资金收支统计支出表 服务类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +public interface IWgdZcbService extends IService { + List getAllWgdZcbs();//查询所有 + List queryAllWgdZcbs(WgdZcb wgdZcb);//多条件查询 + WgdZcb getWgdZcbById(String id);//查询详情 + + int updateWgdZcb(WgdZcb wgdZcb);//编辑 + int insertWgdZcb(WgdZcb wgdZcb);//插入 + int deleteWgdZcb(String id);//删除 + int deleteWgdZcbs(String ids);//批量删除 + List importZcb(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdCgfyServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdCgfyServiceImpl.java new file mode 100644 index 00000000..ccc103b8 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdCgfyServiceImpl.java @@ -0,0 +1,106 @@ +package com.adc.da.slrs.wgdCensusLeo.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdCgfy; +import com.adc.da.slrs.wgdCensusLeo.dao.WgdCgfyDao; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdCgfyService; +import com.adc.da.util.MD5Util; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 采购费用信息统计 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Service +public class WgdCgfyServiceImpl extends ServiceImpl implements IWgdCgfyService { + + @Autowired + WgdCgfyDao wgdCgfyDao; + + @Autowired + IWgdCgfyService iWgdCgfyService; + @Override + public List getAllWgdCgfys() { + return wgdCgfyDao.selectAll(); + } + + @Override + public List queryAllWgdCgfys(WgdCgfy wgdCgfy) { + Integer count = wgdCgfyDao.getQueryTotal(wgdCgfy); + wgdCgfy.getPager().setRowCount(count); + return wgdCgfyDao.queryAll(wgdCgfy); + } + + @Override + public WgdCgfy getWgdCgfyById(String id) { + return wgdCgfyDao.selectById(id); + } + + @Override + public int updateWgdCgfy(WgdCgfy wgdCgfy) { + return wgdCgfyDao.updateOne(wgdCgfy); + } + + @Override + public int insertWgdCgfy(WgdCgfy wgdCgfy) { + wgdCgfy.setId(UUIDUtils.randomUUID(32)); + return wgdCgfyDao.insertOne(wgdCgfy); + } + + @Override + public int deleteWgdCgfy(String id) { + return wgdCgfyDao.deleteOne(id); + } + + @Override + public int deleteWgdCgfys(String ids) { + String[] str = ids.split(","); + return wgdCgfyDao.deleteBatch(str); + } + + @Override + public List importCgfy(MultipartFile file, StringBuilder stringBuilder) { + + List res= ExcelImportUtilByWk.readExcelpublic(WgdCgfy.class,file,stringBuilder); + if (res != null){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdCgfy.class, info -> !info.getColumn().equals("id")); + List wgdCgfy=iWgdCgfyService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdCgfy.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdCgfyService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdFyfyServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdFyfyServiceImpl.java new file mode 100644 index 00000000..036c2dbf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdFyfyServiceImpl.java @@ -0,0 +1,105 @@ +package com.adc.da.slrs.wgdCensusLeo.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.dao.WgdFyfyDao; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdFyfy; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdFyfyService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 翻译费用信息统计 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Service +public class WgdFyfyServiceImpl extends ServiceImpl implements IWgdFyfyService { + + @Autowired + WgdFyfyDao wgdFyfyDao; + + @Autowired + IWgdFyfyService iWgdFyfyService; + + @Override + public List getAllWgdFyfys() { + return wgdFyfyDao.selectAll(); + } + + @Override + public List queryAllWgdFyfys(WgdFyfy wgdFyfy) { + Integer count = wgdFyfyDao.getQueryTotal(wgdFyfy); + wgdFyfy.getPager().setRowCount(count); + return wgdFyfyDao.queryAll(wgdFyfy); + } + + @Override + public WgdFyfy getWgdFyfyById(String id) { + return wgdFyfyDao.selectOne(id); + } + + @Override + public int updateWgdFyfy(WgdFyfy wgdFyfy) { + return wgdFyfyDao.updateOne(wgdFyfy); + } + + @Override + public int insertWgdFyfy(WgdFyfy wgdFyfy) { + wgdFyfy.setId(UUIDUtils.randomUUID(32)); + return wgdFyfyDao.insertOne(wgdFyfy); + } + + @Override + public int deleteWgdFyfy(String id) { + return wgdFyfyDao.deleteOne(id); + } + + @Override + public int deleteWgdFyfys(String ids) { + String[] str = ids.split(","); + return wgdFyfyDao.deleteBatch(str); + } + + @Override + public List importFyfy(MultipartFile file, StringBuilder stringBuilder) { + List res= ExcelImportUtilByWk.readExcelpublic(WgdFyfy.class,file,stringBuilder); + if (res != null && "".equals(stringBuilder.toString())){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdFyfy.class, info -> !info.getColumn().equals("id")); + List wgdFyfy=iWgdFyfyService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdFyfy.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdFyfyService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdSrbServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdSrbServiceImpl.java new file mode 100644 index 00000000..57f167c4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdSrbServiceImpl.java @@ -0,0 +1,122 @@ +package com.adc.da.slrs.wgdCensusLeo.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.dao.WgdSrbDao; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdSrb; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdSrbService; +import com.adc.da.slrs.wgdCensusZ.entity.WgdMeetCost; +import com.adc.da.util.UUIDUtils; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 标准制修订补助资金收支统计收入表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Service +public class WgdSrbServiceImpl extends ServiceImpl implements IWgdSrbService { + + @Autowired + WgdSrbDao wgdSrbDao; + + @Autowired + IWgdSrbService iWgdSrbService; + + @Override + public List getAllWgdSrbs() { + return wgdSrbDao.selectAll(); + } + + @Override + public List queryAllWgdSrbs(WgdSrb wgdSrb) { + Integer count = wgdSrbDao.getQueryTotal(wgdSrb); + wgdSrb.getPager().setRowCount(count); + return wgdSrbDao.queryAll(wgdSrb); + } + + @Override + public WgdSrb getWgdSrbById(String id) { + return wgdSrbDao.selectOne(id); + } + + @Override + public int updateWgdSrb(WgdSrb wgdSrb) { + return wgdSrbDao.updateOne(wgdSrb); + } + + @Override + public int insertWgdSrb(WgdSrb wgdSrb) { + wgdSrb.setId(UUIDUtils.randomUUID(32)); + return wgdSrbDao.insertOne(wgdSrb); + } + + @Override + public int deleteWgdSrb(String id) { + return wgdSrbDao.deleteOne(id); + } + + @Override + public int deleteWgdSrbs(String ids) { + String[] str = ids.split(","); + return wgdSrbDao.deleteBatch(str); + } + + @Override + public List importSrb(MultipartFile file, StringBuilder stringBuilder) { + + List res= ExcelImportUtilByWk.readExcelpublic(WgdSrb.class,file,stringBuilder); + if (res != null && "".equals(stringBuilder.toString())){ + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i=1; + for (WgdSrb wgdSrb: res) { + try { + if (null!=wgdSrb.getTime() && !"".equals(wgdSrb.getTime())) { + wgdSrb.setTime(wgdSrb.getTime()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第5列入账时间填写不符合格式要求请检查;"); + } + i++; + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdSrb.class, info -> !info.getColumn().equals("id")); + List wgdSrb=iWgdSrbService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdSrb.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdSrbService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdWbtjServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdWbtjServiceImpl.java new file mode 100644 index 00000000..233f82cf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdWbtjServiceImpl.java @@ -0,0 +1,175 @@ +package com.adc.da.slrs.wgdCensusLeo.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.dao.WgdWbtjDao; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbtj; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdWbtjService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 参与外部协会会议统计 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Service +public class WgdWbtjServiceImpl extends ServiceImpl implements IWgdWbtjService { + + @Autowired + WgdWbtjDao wgdWbtjDao; + + @Autowired + IWgdWbtjService iWgdWbtjService; + + @Override + public List getAllWgdWbtjs() { + return wgdWbtjDao.selectAll(); + } + + @Override + public List queryAllWgdWbtjs(WgdWbtj wgdWbtj) { + Integer count = wgdWbtjDao.getQueryTotal(wgdWbtj); + wgdWbtj.getPager().setRowCount(count); + return wgdWbtjDao.queryAll(wgdWbtj); + } + + @Override + public WgdWbtj getWgdWbtjById(String id) { + return wgdWbtjDao.selectOne(id); + } + + @Override + public int updateWgdWbtj(WgdWbtj wgdWbtj) { + return wgdWbtjDao.updateOne(wgdWbtj); + } + + @Override + public int insertWgdWbtj(WgdWbtj wgdWbtj) { + wgdWbtj.setId(UUIDUtils.randomUUID(32)); + return wgdWbtjDao.insertOne(wgdWbtj); + } + + @Override + public int deleteWgdWbtj(String id) { + return wgdWbtjDao.deleteOne(id); + } + + @Override + public int deleteWgdWbtjs(String ids) { + String[] str = ids.split(","); + return wgdWbtjDao.deleteBatch(str); + } + + @Override + public List importWbtj(MultipartFile file, StringBuilder stringBuilder) { + List res= ExcelImportUtilByWk.readExcelpublic(WgdWbtj.class,file,stringBuilder); + if (res != null && "".equals(stringBuilder.toString())){ + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i=1; + for (WgdWbtj wgdWbtj: res) { + if (null == wgdWbtj.getHost() || "".equals(wgdWbtj.getHost())){ + stringBuilder.append("第" + i + "行第1列主办单位填写不符合格式要求请检查;"); + } + if (null == wgdWbtj.getMeeting() || "".equals(wgdWbtj.getMeeting())){ + stringBuilder.append("第" + i + "行第2列会议名称填写不符合格式要求请检查;"); + } + if (null == wgdWbtj.getPlace() || "".equals(wgdWbtj.getPlace())){ + stringBuilder.append("第" + i + "行第4列会议地点填写不符合格式要求请检查;"); + } + if (null == wgdWbtj.getContributions() || "".equals(wgdWbtj.getContributions())){ + stringBuilder.append("第" + i + "行第5列会费标准填写不符合格式要求请检查;"); + } + if (null == wgdWbtj.getExpenses() || "".equals(wgdWbtj.getExpenses())){ + stringBuilder.append("第" + i + "行第7列费用列支填写不符合格式要求请检查;"); + } + if (null == wgdWbtj.getUser() || "".equals(wgdWbtj.getUser())){ + stringBuilder.append("第" + i + "行第8列参会人员填写不符合格式要求请检查;"); + } + if (null == wgdWbtj.getLeadership() || "".equals(wgdWbtj.getLeadership())){ + stringBuilder.append("第" + i + "行第9列主管领导填写不符合格式要求请检查;"); + } + if (null == wgdWbtj.getParticipants() || "".equals(wgdWbtj.getParticipants())){ + stringBuilder.append("第" + i + "行第10列参会单位填写不符合格式要求请检查;"); + } + if (null == wgdWbtj.getIssues() || "".equals(wgdWbtj.getIssues())){ + stringBuilder.append("第" + i + "行第13列主要议题填写不符合格式要求请检查;"); + } + try { + if (null!=wgdWbtj.getTime() && !"".equals(wgdWbtj.getTime())) { + wgdWbtj.setTime(wgdWbtj.getTime()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第3列会议时间填写不符合格式要求请检查;"); + } + i++; + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdWbtj.class,tableFieldInfo -> !tableFieldInfo.getColumn().equals("id")); + List WgdWbtjs=iWgdWbtjService.list(queryWrapper); + List remove=new ArrayList<>(); + WgdWbtjs.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + res.forEach(resWbtj->{ + if (null == resWbtj.getHost() || "".equals(resWbtj.getHost())){ + remove.add(resWbtj); + } + if (null == resWbtj.getMeeting() || "".equals(resWbtj.getMeeting())){ + remove.add(resWbtj); + } + if (null == resWbtj.getPlace() || "".equals(resWbtj.getPlace())){ + remove.add(resWbtj); + } + if (null == resWbtj.getContributions() || "".equals(resWbtj.getContributions())){ + remove.add(resWbtj); + } + if (null == resWbtj.getExpenses() || "".equals(resWbtj.getExpenses())){ + remove.add(resWbtj); + } + if (null == resWbtj.getUser() || "".equals(resWbtj.getUser())){ + remove.add(resWbtj); + } + if (null == resWbtj.getLeadership() || "".equals(resWbtj.getLeadership())){ + remove.add(resWbtj); + } + if (null == resWbtj.getParticipants() || "".equals(resWbtj.getParticipants())){ + remove.add(resWbtj); + } + if (null == resWbtj.getIssues() || "".equals(resWbtj.getIssues())){ + remove.add(resWbtj); + } + }); + + }); + res.removeAll(remove); + res.forEach(WgbWbtj -> { + WgbWbtj.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdWbtjService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdWbxdServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdWbxdServiceImpl.java new file mode 100644 index 00000000..0ce11f1a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdWbxdServiceImpl.java @@ -0,0 +1,161 @@ +package com.adc.da.slrs.wgdCensusLeo.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.dao.WgdWbxdDao; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdWbxd; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdWbxdService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 参与外部标准制修订信息统计 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Service +public class WgdWbxdServiceImpl extends ServiceImpl implements IWgdWbxdService { + + @Autowired + WgdWbxdDao wgdWbxdDao; + + @Autowired + IWgdWbxdService iWgdWbxdService; + + @Override + public List getAllWgdWbxds() { + return wgdWbxdDao.selectAll(); + } + + @Override + public List queryAllWgdWbxds(WgdWbxd wgdWbxd) { + Integer count = wgdWbxdDao.getQueryTotal(wgdWbxd); + wgdWbxd.getPager().setRowCount(count); + return wgdWbxdDao.queryAll(wgdWbxd); + } + + @Override + public WgdWbxd getWgdWbxdById(String id) { + return wgdWbxdDao.selectOne(id); + } + + @Override + public int updateWgdWbxd(WgdWbxd wgdWbxd) { + return wgdWbxdDao.updateOne(wgdWbxd); + } + + @Override + public int insertWgdWbxd(WgdWbxd wgdWbxd) { + wgdWbxd.setId(UUIDUtils.randomUUID(32)); + return wgdWbxdDao.insertOne(wgdWbxd); + } + + @Override + public int deleteWgdWbxd(String id) { + return wgdWbxdDao.deleteOne(id); + } + + @Override + public int deleteWgdWbxds(String ids) { + String[] str = ids.split(","); + return wgdWbxdDao.deleteBatch(str); + } + + @Override + public List importWbxd(MultipartFile file, StringBuilder stringBuilder) { + + + List res= ExcelImportUtilByWk.readExcelpublic(WgdWbxd.class,file,stringBuilder); + if (res != null && "".equals(stringBuilder.toString())){ + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i=1; + for (WgdWbxd wgdWbxd: res) { + if (null == wgdWbxd.getName() || "".equals(wgdWbxd.getName())){ + stringBuilder.append("第" + i + "行第3列标准名称填写不符合格式要求请检查;"); + } + if (null == wgdWbxd.getType() || "".equals(wgdWbxd.getType())){ + stringBuilder.append("第" + i + "行第6列标类型填写不符合格式要求请检查;"); + } + if (null == wgdWbxd.getPreside() || "".equals(wgdWbxd.getPreside())){ + stringBuilder.append("第" + i + "行第7列主持或参与填写不符合格式要求请检查;"); + } + if (null == wgdWbxd.getParticipants() || "".equals(wgdWbxd.getParticipants())){ + stringBuilder.append("第" + i + "行第14列参与人填写不符合格式要求请检查;"); + } + try { + if (null!=wgdWbxd.getDataStart() && !"".equals(wgdWbxd.getDataStart())) { + wgdWbxd.setDataStart(wgdWbxd.getDataStart()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第8列发布日期填写不符合格式要求请检查;"); + } + try { + if (null!=wgdWbxd.getDataImplement() && !"".equals(wgdWbxd.getDataImplement())) { + wgdWbxd.setDataImplement(wgdWbxd.getDataImplement()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第9列实施日期填写不符合格式要求请检查;"); + } + try { + if (null!=wgdWbxd.getDataRecord() && !"".equals(wgdWbxd.getDataRecord())) { + wgdWbxd.setDataRecord(wgdWbxd.getDataRecord()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第12列备案时间填写不符合格式要求请检查;"); + } + i++; + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdWbxd.class, info -> !info.getColumn().equals("id")); + List wgdAssocInfos=iWgdWbxdService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdAssocInfos.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + res.forEach(resWBxd->{ + if (null == resWBxd.getName() || "".equals(resWBxd.getName())){ + remove.add(resWBxd); + } + if (null == resWBxd.getType() || "".equals(resWBxd.getType())){ + remove.add(resWBxd); + } + if (null == resWBxd.getPreside() || "".equals(resWBxd.getPreside())){ + remove.add(resWBxd); + } + if (null == resWBxd.getParticipants() || "".equals(resWBxd.getParticipants())){ + remove.add(resWBxd); + } + }); + + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdWbxdService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdZcbServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdZcbServiceImpl.java new file mode 100644 index 00000000..324ee63c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusLeo/service/impl/WgdZcbServiceImpl.java @@ -0,0 +1,110 @@ +package com.adc.da.slrs.wgdCensusLeo.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusLeo.dao.WgdZcbDao; +import com.adc.da.slrs.wgdCensusLeo.entity.WgdZcb; +import com.adc.da.slrs.wgdCensusLeo.service.IWgdZcbService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 标准制修订补助资金收支统计支出表 服务实现类 + *

    + * + * @author super_liu + * @since 2021-11-12 + */ +@Service +public class WgdZcbServiceImpl extends ServiceImpl implements IWgdZcbService { + + @Autowired + WgdZcbDao wgdZcbDao; + + @Autowired + IWgdZcbService iWgdZcbService; + @Override + public List getAllWgdZcbs() { + return wgdZcbDao.selectAll(); + } + + @Override + public List queryAllWgdZcbs(WgdZcb wgdZcb) { + Integer count = wgdZcbDao.getQueryTotal(wgdZcb); + wgdZcb.getPager().setRowCount(count); + return wgdZcbDao.queryAll(wgdZcb); + } + + @Override + public WgdZcb getWgdZcbById(String id) { + return wgdZcbDao.selectOne(id); + } + + @Override + public int updateWgdZcb(WgdZcb wgdZcb) { + return wgdZcbDao.updateOne(wgdZcb); + } + + @Override + public int insertWgdZcb(WgdZcb wgdZcb) { + wgdZcb.setId(UUIDUtils.randomUUID(32)); + return wgdZcbDao.insertOne(wgdZcb); + } + + @Override + public int deleteWgdZcb(String id) { + return wgdZcbDao.deleteOne(id); + } + + @Override + public int deleteWgdZcbs(String ids) { + String[] str = ids.split(","); + return wgdZcbDao.deleteBatch(str); + } + + @Override + public List importZcb(MultipartFile file, StringBuilder stringBuilder) { + + List res= ExcelImportUtilByWk.readExcelpublic(WgdZcb.class,file,stringBuilder); + if (res != null ){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdZcb.class, info -> !info.getColumn().equals("id")); + List wgdZcb=iWgdZcbService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdZcb.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + res.forEach(resZcb->{ + if (null!=resZcb.getAnnexs() && !"".equals(resZcb.getAnnexs())) { + resZcb.setAnnexs(null); + } + }); + + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdZcbService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdAssocCostController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdAssocCostController.java new file mode 100644 index 00000000..d4296aad --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdAssocCostController.java @@ -0,0 +1,154 @@ +package com.adc.da.slrs.wgdCensusZ.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.sarStandItems.entity.SarStandItems; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.service.IWgdAssocCostService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 协会费用信息统计 前端控制器 + *

    +* +* @author zcr +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdAssocCost|") +@RequestMapping("api/wgdCensusZ/wgd-assoc-cost") +public class WgdAssocCostController extends BaseController { + + @Autowired + IWgdAssocCostService iWgdAssocCostService; + + @GetMapping("selectAllAssocCosts") + public ResponseMessage selectAllAssocCosts(){//查询所有 + return Result.success(iWgdAssocCostService.selectAllAssocCosts()); + } + + @ApiOperation("查询所有信息") + @GetMapping("getAllAssocCosts") + public ResponseMessage getAllWgdAssocCosts(WgdAssocCost page){//查询所有 + List wgdAssocCosts = iWgdAssocCostService.getAllWgdAssocCosts(page); + PageInfo pageInfo = getPageInfo(page.getPager(), wgdAssocCosts); + return Result.success(pageInfo); + } + + @ApiOperation("多条件查询") + @GetMapping("queryAllAssocCosts") + public ResponseMessage queryAllWgdAssocCosts(WgdAssocCost wgdAssocCost){//多条件查询 + List wgdAssocCosts = iWgdAssocCostService.queryAllWgdAssocCosts(wgdAssocCost); + PageInfo pageInfo = getPageInfo(wgdAssocCost.getPager(), wgdAssocCosts); + return Result.success(pageInfo); + } + + @ApiOperation("导出协会费用信息统计") + @GetMapping("/exportAllAssocCosts") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="协会费用信息统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdAssocCostService.list(wrapper); + } else { + datas = iWgdAssocCostService.selectAllAssocCosts(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams,WgdAssocCost.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAssocCosts") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdAssocCostService.importAssocCosts(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + } + @ApiOperation("查询详情") + @GetMapping("getAssocCostById") + public ResponseMessage getWgdAssocCostById(String id) {//查询详情 + return Result.success(iWgdAssocCostService.getWgdAssocCostById(id)); + } + + @ApiOperation("编辑") + @PutMapping("modAssocCost") + ResponseMessage updateWgdAssocCost(WgdAssocCost wgdAssocCost) {//编辑 + return Result.success(iWgdAssocCostService.updateWgdAssocCost(wgdAssocCost)); + } + + @ApiOperation("插入") + @PostMapping("addAssocCost") + ResponseMessage insertWgdAssocCost(WgdAssocCost wgdAssocCost) {//插入 + return Result.success(iWgdAssocCostService.insertWgdAssocCost(wgdAssocCost)); + } + + @ApiOperation("删除") + @GetMapping("delAssocCost") + ResponseMessage deleteWgdAssocCost(String id){//删除 + return Result.success(iWgdAssocCostService.deleteWgdAssocCost(id)); + } + + @ApiOperation("批量删除") + @DeleteMapping("delAssocCosts") + ResponseMessage deleteWgdAssocCosts(String ids){//批量删除 + return Result.success(iWgdAssocCostService.deleteWgdAssocCosts(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdAssocInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdAssocInfoController.java new file mode 100644 index 00000000..768c5aa1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdAssocInfoController.java @@ -0,0 +1,138 @@ +package com.adc.da.slrs.wgdCensusZ.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.entity.importExcelDTO; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.service.IWgdAssocInfoService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 协会信息数据统计 前端控制器 + *

    +* +* @author zcr +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdAssocInfo|") +@RequestMapping("api/wgdCensusZ/wgd-assoc-info") +public class WgdAssocInfoController extends BaseController { + @Autowired + IWgdAssocInfoService iWgdAssocInfoService; + + @GetMapping("getAllAssocInfos") + public ResponseMessage getAllWgdAssocInfos(){//查询所有 + return Result.success(iWgdAssocInfoService.getAllWgdAssocInfos()); + } + + @GetMapping("/exportAllAssocInfos") + public void exportAllAssocInfos( String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="协会信息数据统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdAssocInfoService.list(wrapper); + } else { + datas = iWgdAssocInfoService.getAllWgdAssocInfos(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams,WgdAssocInfo.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAllAssocInfos") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdAssocInfoService.delWithWkData(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + } + + @ApiOperation("查询") + @GetMapping("queryAllAssocInfos") + public ResponseMessage queryAllWgdAssocInfos(WgdAssocInfo wgdAssocInfo){//多条件查询 + List wgdAssocInfos = iWgdAssocInfoService.queryAllWgdAssocInfos(wgdAssocInfo); + PageInfo pageInfo = getPageInfo(wgdAssocInfo.getPager(), wgdAssocInfos); + return Result.success(pageInfo); + } + + @GetMapping("getAssocInfoById") + public ResponseMessage getWgdAssocInfoById(String id) {//查询详情 + return Result.success(iWgdAssocInfoService.getWgdAssocInfoById(id)); + } + + @ApiOperation("更改") + @PostMapping("modAssocInfo") + ResponseMessage updateWgdAssocInfo(WgdAssocInfo WgdAssocInfo) {//编辑 + return Result.success(iWgdAssocInfoService.updateWgdAssocInfo(WgdAssocInfo)); + } + + @ApiOperation("添加") + @PostMapping("addAssocInfo") + ResponseMessage insertWgdAssocInfo(WgdAssocInfo WgdAssocInfo) {//插入 + return Result.success(iWgdAssocInfoService.insertWgdAssocInfo(WgdAssocInfo)); + } + + @GetMapping("delAssocInfo") + ResponseMessage deleteWgdAssocInfo(String id){//删除 + return Result.success(iWgdAssocInfoService.deleteWgdAssocInfo(id)); + } + + @ApiOperation("删除") + @PostMapping("delAssocInfos") + ResponseMessage deleteWgdAssocInfos(String ids){//批量删除 + return Result.success(iWgdAssocInfoService.deleteWgdAssocInfos(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdCommiInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdCommiInfoController.java new file mode 100644 index 00000000..9b54c7a6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdCommiInfoController.java @@ -0,0 +1,142 @@ +package com.adc.da.slrs.wgdCensusZ.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.service.IWgdCommiInfoService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 委员信息数据统计 前端控制器 + *

    +* +* @author zcr +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdCommiInfo|") +@RequestMapping("api/wgdCensusZ/wgd-commi-info") +public class WgdCommiInfoController extends BaseController { + @Autowired + IWgdCommiInfoService iWgdCommiInfoService; + + @GetMapping("getAllCommiInfos") + public ResponseMessage getAllWgdCommiInfos(){//查询所有 + return Result.success(iWgdCommiInfoService.getAllWgdCommiInfos()); + } + + @ApiOperation("查询") + @GetMapping("queryAllCommiInfos") + public ResponseMessage queryAllWgdCommiInfos(WgdCommiInfo wgdCommiInfo){//多条件查询 + List wgdCommiInfos = iWgdCommiInfoService.queryAllWgdCommiInfos(wgdCommiInfo); + PageInfo pageInfo = getPageInfo(wgdCommiInfo.getPager(),wgdCommiInfos); + return Result.success(pageInfo); + } + + @ApiOperation(value = "导出委员信息数据统计") + @GetMapping("/exportAllCommiInfos") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="委员信息数据统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdCommiInfoService.list(wrapper); + } else { + datas = iWgdCommiInfoService.getAllWgdCommiInfos(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams,WgdCommiInfo.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importAllCommiInfos") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdCommiInfoService.importCommiInfo(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + } + + + + @GetMapping("getCommiInfoById") + public ResponseMessage getWgdCommiInfoById(String id) {//查询详情 + return Result.success(iWgdCommiInfoService.getWgdCommiInfoById(id)); + } + + @ApiOperation("更新") + @PostMapping("modCommiInfo") + ResponseMessage updateWgdCommiInfo(WgdCommiInfo WgdCommiInfo) {//编辑 + return Result.success(iWgdCommiInfoService.updateWgdCommiInfo(WgdCommiInfo)); + } + + @ApiOperation("添加") + @PostMapping("addCommiInfo") + ResponseMessage insertWgdCommiInfo(WgdCommiInfo WgdCommiInfo) {//插入 + return Result.success(iWgdCommiInfoService.insertWgdCommiInfo(WgdCommiInfo)); + } + + @GetMapping("delCommiInfo") + ResponseMessage deleteWgdCommiInfo(String id){//删除 + return Result.success(iWgdCommiInfoService.deleteWgdCommiInfo(id)); + } + + @ApiOperation("删除") + @PostMapping("delCommiInfos") + ResponseMessage deleteWgdCommiInfos(String ids){//批量删除 + return Result.success(iWgdCommiInfoService.deleteWgdCommiInfos(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdExReviseCostController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdExReviseCostController.java new file mode 100644 index 00000000..25ec8a59 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdExReviseCostController.java @@ -0,0 +1,139 @@ +package com.adc.da.slrs.wgdCensusZ.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdExReviseCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdMeetCost; +import com.adc.da.slrs.wgdCensusZ.service.IWgdExReviseCostService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 参与外部标准制修订费用统计 前端控制器 + *

    +* +* @author zcr +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdExReviseCost|") +@RequestMapping("api/wgdCensusZ/wgd-ex-revise-cost") +public class WgdExReviseCostController extends BaseController { + @Autowired + IWgdExReviseCostService iWgdExReviseCostService; + + @GetMapping("getAllExReviseCosts") + public ResponseMessage getAllWgdExReviseCosts(){//查询所有 + return Result.success(iWgdExReviseCostService.getAllWgdExReviseCosts()); + } + + @ApiOperation("查询") + @GetMapping("queryAllExReviseCosts") + public ResponseMessage queryAllWgdExReviseCosts(WgdExReviseCost wgdExReviseCost){//多条件查询 + List wgdExReviseCosts = iWgdExReviseCostService.queryAllWgdExReviseCosts(wgdExReviseCost); + PageInfo pageInfo = getPageInfo(wgdExReviseCost.getPager(),wgdExReviseCosts); + return Result.success(pageInfo); + } + + @ApiOperation("导出参与外部标准制修订费用统计") + @GetMapping("/exportAllExReviseCost") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="参与外部标准制修订费用统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdExReviseCostService.list(wrapper); + } else { + datas = iWgdExReviseCostService.getAllWgdExReviseCosts(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams,WgdExReviseCost.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importExReviseCost") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdExReviseCostService.importExReviseCost(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + } + + @GetMapping("getExReviseCostById") + public ResponseMessage getWgdExReviseCostById(String id) {//查询详情 + return Result.success(iWgdExReviseCostService.getWgdExReviseCostById(id)); + } + + @ApiOperation("更改") + @PutMapping("modExReviseCost") + ResponseMessage updateWgdExReviseCost(WgdExReviseCost WgdExReviseCost) {//编辑 + return Result.success(iWgdExReviseCostService.updateWgdExReviseCost(WgdExReviseCost)); + } + + @ApiOperation("插入") + @PostMapping("addExReviseCost") + ResponseMessage insertWgdExReviseCost(WgdExReviseCost WgdExReviseCost) {//插入 + return Result.success(iWgdExReviseCostService.insertWgdExReviseCost(WgdExReviseCost)); + } + + @GetMapping("delExReviseCost") + ResponseMessage deleteWgdExReviseCost(String id){//删除 + return Result.success(iWgdExReviseCostService.deleteWgdExReviseCost(id)); + } + + @ApiOperation("删除") + @DeleteMapping("delExReviseCosts") + ResponseMessage deleteWgdExReviseCosts(String ids){//批量删除 + return Result.success(iWgdExReviseCostService.deleteWgdExReviseCosts(ids)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdMeetCostController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdMeetCostController.java new file mode 100644 index 00000000..dccd09ea --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/controller/WgdMeetCostController.java @@ -0,0 +1,141 @@ +package com.adc.da.slrs.wgdCensusZ.controller; + + +import com.adc.da.excel.poi.excel.entity.ExportParams; +import com.adc.da.excel.poi.excel.entity.enums.ExcelType; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.msgDynamicInfo.common.ReadExcel; +import com.adc.da.slrs.processModel.utils.ExcelExportUtilByWk; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdExReviseCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdMeetCost; +import com.adc.da.slrs.wgdCensusZ.service.IWgdMeetCostService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.utils.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import com.adc.da.base.web.BaseController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + + +/** +*

    + * 参会费用信息统计 前端控制器 + *

    +* +* @author zcr +* @since 2021-11-12 +*/ +@RestController +@Api(description = "|WgdMeetCost|") +@RequestMapping("api/wgdCensusZ/wgd-meet-cost") +public class WgdMeetCostController extends BaseController { + @Autowired + IWgdMeetCostService iWgdMeetCostService; + + @ApiOperation("查询") + @GetMapping("queryAllMeetCosts") + public ResponseMessage queryAllWgdMeetCosts(WgdMeetCost wgdMeetCost){//多条件查询 + PageInfo pageInfo = getPageInfo(wgdMeetCost.getPager(),iWgdMeetCostService.queryAllWgdMeetCosts(wgdMeetCost)); + return Result.success(pageInfo); + } + + @ApiOperation("更新") + @PutMapping("modMeetCost") + ResponseMessage updateWgdMeetCost(WgdMeetCost WgdMeetCost) {//编辑 + return Result.success(iWgdMeetCostService.updateWgdMeetCost(WgdMeetCost)); + } + + @ApiOperation("添加") + @PostMapping("addMeetCost") + ResponseMessage insertWgdMeetCost(WgdMeetCost WgdMeetCost) {//插入 + return Result.success(iWgdMeetCostService.insertWgdMeetCost(WgdMeetCost)); + } + + @ApiOperation("删除") + @DeleteMapping("delMeetCosts") + ResponseMessage deleteWgdMeetCosts(String ids){//批量删除 + return Result.success(iWgdMeetCostService.deleteWgdMeetCosts(ids)); + } + + @GetMapping("getAllMeetCosts") + public ResponseMessage getAllWgdMeetCosts(){//查询所有 + return Result.success(iWgdMeetCostService.getAllWgdMeetCosts()); + } + + @ApiOperation("导出参会费用信息统计") + @GetMapping("/exportAllMeetCosts") + public void exportAllAssocInfos(String idList, String exportName, HttpServletResponse response, HttpServletRequest request){//查询所有 + OutputStream os = null; + Workbook workbook = null; + try { + if(StringUtils.isEmpty(exportName) ||exportName.equals("null")){ + exportName="参会费用信息统计"; + } + response.setHeader("Content-Disposition", + "attachment; filename=" + ReadExcel.encodeFileName(exportName+".xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + exportParams.setSheetName(exportName); + List datas=new ArrayList<>(); + if (null!=idList) { + List ids = new ArrayList<>(Arrays.asList(idList.split(","))); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",ids); + datas = iWgdMeetCostService.list(wrapper); + } else { + datas = iWgdMeetCostService.getAllWgdMeetCosts(); + } + workbook = ExcelExportUtilByWk.exportWithData(exportParams,WgdMeetCost.class,datas); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|SarFileSplitItemsEO|导入") + @PostMapping(value = "/importMeetCost") + public ResponseMessage importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception { + StringBuilder stringBuilder=new StringBuilder(); + List res=iWgdMeetCostService.importMeetCost(file,stringBuilder); + if (stringBuilder.toString().length()>0){ + return Result.error("-1","",stringBuilder.toString()); + }else { + return Result.success(res); + } + + + } + + @GetMapping("getMeetCostById") + public ResponseMessage getWgdMeetCostById(String id) {//查询详情 + return Result.success(iWgdMeetCostService.getWgdMeetCostById(id)); + } + @GetMapping("delMeetCost") + ResponseMessage deleteWgdMeetCost(String id){//删除 + return Result.success(iWgdMeetCostService.deleteWgdMeetCost(id)); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdAssocCostDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdAssocCostDao.java new file mode 100644 index 00000000..4833e95f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdAssocCostDao.java @@ -0,0 +1,33 @@ +package com.adc.da.slrs.wgdCensusZ.dao; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 协会费用信息统计 Mapper 接口 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface WgdAssocCostDao extends BaseMapper { + Integer getTotal();//总数 + Integer getQueryTotal(WgdAssocCost wgdAssocCost);//总数 + List selectAll(WgdAssocCost page);//查询所有 + List selectAllAssocCosts();//查询所有selectAllAssocCosts + List queryAll(WgdAssocCost wgdAssocCost);//多条件查询 + WgdAssocCost selectOne(String id);//查询详情 + + int updateOne(WgdAssocCost wgdAssocCost);//编辑 + int insertOne(WgdAssocCost wgdAssocCost);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdAssocInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdAssocInfoDao.java new file mode 100644 index 00000000..3491ed99 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdAssocInfoDao.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgdCensusZ.dao; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 协会信息数据统计 Mapper 接口 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface WgdAssocInfoDao extends BaseMapper { + Integer getQueryTotal(WgdAssocInfo WgdAssocInfo);//总数 + List selectAll();//查询所有 + List queryAll(WgdAssocInfo wgdAssocInfo);//多条件查询 + WgdAssocInfo selectOne(String id);//查询详情 + + int updateOne(WgdAssocInfo wgdAssocInfo);//编辑 + int insertOne(WgdAssocInfo wgdAssocInfo);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdCommiInfoDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdCommiInfoDao.java new file mode 100644 index 00000000..08aa17eb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdCommiInfoDao.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.wgdCensusZ.dao; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 委员信息数据统计 Mapper 接口 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface WgdCommiInfoDao extends BaseMapper { + Integer getQueryTotal(WgdCommiInfo WgdCommiInfo);//总数 + List selectAll();//查询所有 + List queryAll(WgdCommiInfo wgdCommiInfo);//多条件查询 + WgdCommiInfo selectOne(String id);//查询详情 + + int updateOne(WgdCommiInfo wgdCommiInfo);//编辑 + int insertOne(WgdCommiInfo wgdCommiInfo);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdExReviseCostDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdExReviseCostDao.java new file mode 100644 index 00000000..2fa84fb6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdExReviseCostDao.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.wgdCensusZ.dao; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdExReviseCost; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 参与外部标准制修订费用统计 Mapper 接口 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface WgdExReviseCostDao extends BaseMapper { + Integer getQueryTotal(WgdExReviseCost WgdExReviseCost);//总数 + List selectAll();//查询所有 + List queryAll(WgdExReviseCost wgdExReviseCost);//多条件查询 + WgdExReviseCost selectOne(String id);//查询详情 + + int updateOne(WgdExReviseCost wgdExReviseCost);//编辑 + int insertOne(WgdExReviseCost wgdExReviseCost);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdMeetCostDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdMeetCostDao.java new file mode 100644 index 00000000..d5139ab3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/dao/WgdMeetCostDao.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.wgdCensusZ.dao; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdMeetCost; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; +import java.util.Map; + +/** + *

    + * 参会费用信息统计 Mapper 接口 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface WgdMeetCostDao extends BaseMapper { + Integer getQueryTotal(WgdMeetCost WgdMeetCost);//总数 + List selectAll();//查询所有 + List queryAll(WgdMeetCost wgdMeetCost);//多条件查询 + WgdMeetCost selectOne(String id);//查询详情 + + int updateOne(WgdMeetCost wgdMeetCost);//编辑 + int insertOne(WgdMeetCost wgdMeetCost);//插入 + int deleteOne(String id);//删除 + int deleteBatch(String[] ids);//批量删除 +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdAssocCost.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdAssocCost.java new file mode 100644 index 00000000..74635c4c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdAssocCost.java @@ -0,0 +1,57 @@ +package com.adc.da.slrs.wgdCensusZ.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + *

    + * 协会费用信息统计 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdAssocCost对象", description="协会费用信息统计") +public class WgdAssocCost extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "协会名称-标委会") + @Excel(name = "协会名称-标委会", orderNum = "0",width = 20.0) + private String scName; + + @ApiModelProperty(value = "协会名称-分标委") + @Excel(name = "协会名称-分标委", orderNum = "1",width = 20.0) + private String sscName; + + @ApiModelProperty(value = "协会名称-工作组") + @Excel(name = "协会名称-工作组", orderNum = "2",width = 20.0) + private String wgName; + + @ApiModelProperty(value = "会费标准") + @Excel(name = "会费标准", orderNum = "3",width = 20.0) + private String payStandard; + + @ApiModelProperty(value = "实际发生") + @Excel(name = "实际发生", orderNum = "4",width = 20.0) + private String payReality; + + @ApiModelProperty(value = "费用列支") + @Excel(name = "费用列支", orderNum = "5",width = 20.0) + private String costOutlay; + + @ApiModelProperty(value = "每年缴费情况") + @Excel(name = "每年缴费情况", orderNum = "6",width = 20.0) + private String annualPayment; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdAssocInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdAssocInfo.java new file mode 100644 index 00000000..072abb09 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdAssocInfo.java @@ -0,0 +1,187 @@ +package com.adc.da.slrs.wgdCensusZ.entity; + +import java.util.Date; + +import com.adc.da.base.page.BasePage; +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

    + * 协会信息数据统计 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdAssocInfo对象", description="协会信息数据统计") +public class WgdAssocInfo extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "协会名称-标委会") + @Excel(name = "协会名称-标委会", orderNum = "0",width = 20.0) + private String scName; + + @ApiModelProperty(value = "协会名称-分标委") + @Excel(name = "协会名称-分标委", orderNum = "1",width = 20.0) + private String sscName; + + @ApiModelProperty(value = "协会名称-工作组") + @Excel(name = "协会名称-分标委", orderNum = "2",width = 20.0) + private String wgName; + + @ApiModelProperty(value = "会员角色") + @Excel(name = "会员角色", orderNum = "3",width = 20.0) + private String role; + + @ApiModelProperty(value = "参与人") + @Excel(name = "参与人", orderNum = "4",width = 20.0) + private String attend; + + @ApiModelProperty(value = "标准") + @Excel(name = "标准", orderNum = "5",width = 20.0) + private String standard; + + @ApiModelProperty(value = "标准负责人") + @Excel(name = "标准负责人", orderNum = "6",width = 20.0) + private String charge; + + @ApiModelProperty(value = "责任领导") + @Excel(name = "责任领导", orderNum = "7",width = 20.0) + private String leader; + + @ApiModelProperty(value = "初始入会时间") + @Excel(name = "初始入会时间", orderNum = "8",width = 20.0 , exportFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date iniTime; + + @ApiModelProperty(value = "本届入会时间") + @Excel(name = "本届入会时间", orderNum = "9",width = 20.0 , exportFormat = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date curTime; + + @ApiModelProperty(value = "费用标准") + @Excel(name = "费用标准", orderNum = "10",width = 20.0) + private String costStandard; + + @ApiModelProperty(value = "费用列支") + @Excel(name = "费用列支", orderNum = "11",width = 20.0) + private String costOutlay; + + @ApiModelProperty(value = "上次缴纳时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "上次缴纳时间", orderNum = "12",width = 20.0 , exportFormat = "yyyy-MM-dd HH:mm:ss") + private Date lastPayTime; + + @ApiModelProperty(value = "缴费年限") + @Excel(name = "缴费年限", orderNum = "13",width = 20.0) + private String payPeriod; + + @ApiModelProperty(value = "经办人") + @Excel(name = "经办人", orderNum = "14",width = 20.0) + private String handler; + + @ApiModelProperty(value = "部门") + @Excel(name = "部门", orderNum = "15",width = 20.0) + private String department; + + @ApiModelProperty(value = "协会性质") + @Excel(name = "协会性质", orderNum = "16",width = 20.0) + private String asProper; + + @ApiModelProperty(value = "协会状态") + @Excel(name = "协会状态", orderNum = "17",width = 20.0) + private String asStatus; + + @ApiModelProperty(value = "协会联络人") + @Excel(name = "协会联络人", orderNum = "18",width = 20.0) + private String asContact; + + @ApiModelProperty(value = "协会联络人电话") + @Excel(name = "协会联络人电话", orderNum = "19",width = 20.0) + private String tel; + + @ApiModelProperty(value = "协会联络人邮箱") + @Excel(name = "协会联络人邮箱", orderNum = "20",width = 20.0) + private String mail; + + @ApiModelProperty(value = "2017缴费") + @Excel(name = "2017缴费", orderNum = "21",width = 20.0) + private String p17; + + @ApiModelProperty(value = "2018缴费") + @Excel(name = "2018缴费", orderNum = "22",width = 20.0) + private String p18; + + @ApiModelProperty(value = "2019缴费") + @Excel(name = "2019缴费", orderNum = "23",width = 20.0) + private String p19; + + @ApiModelProperty(value = "2020缴费") + @Excel(name = "2020缴费", orderNum = "24",width = 20.0) + private String p20; + + @ApiModelProperty(value = "2021缴费") + @Excel(name = "2021缴费", orderNum = "25",width = 20.0) + private String p21; + + @ApiModelProperty(value = "2022缴费") + @Excel(name = "2022缴费", orderNum = "26",width = 20.0) + private String p22; + + @ApiModelProperty(value = "2023缴费") + @Excel(name = "2023缴费", orderNum = "27",width = 20.0) + private String p23; + + @ApiModelProperty(value = "2024缴费") + @Excel(name = "2024缴费", orderNum = "28",width = 20.0) + private String p24; + + @ApiModelProperty(value = "2025缴费") + @Excel(name = "2025缴费", orderNum = "29",width = 20.0) + private String p25; + + @ApiModelProperty(value = "2026缴费") + @Excel(name = "2026缴费", orderNum = "30",width = 20.0) + private String p26; + + @ApiModelProperty(value = "2027缴费") + @Excel(name = "2027缴费", orderNum = "31",width = 20.0) + private String p27; + + @ApiModelProperty(value = "2028缴费") + @Excel(name = "2028缴费", orderNum = "32",width = 20.0) + private String p28; + + @ApiModelProperty(value = "2029缴费") + @Excel(name = "2029缴费", orderNum = "33",width = 20.0) + private String p29; + + @ApiModelProperty(value = "2030缴费") + @Excel(name = "2030缴费", orderNum = "34",width = 20.0) + private String p30; + + @ApiModelProperty(value = "2031缴费") + @Excel(name = "2031缴费", orderNum = "35",width = 20.0) + private String p31; + + @ApiModelProperty(value = "2032缴费") + @Excel(name = "2032缴费", orderNum = "36",width = 20.0) + private String p32; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdCommiInfo.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdCommiInfo.java new file mode 100644 index 00000000..35b0b281 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdCommiInfo.java @@ -0,0 +1,95 @@ +package com.adc.da.slrs.wgdCensusZ.entity; + +import java.util.Date; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.page.BasePage; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

    + * 委员信息数据统计 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdCommiInfo对象", description="委员信息数据统计") +public class WgdCommiInfo extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "提报单位名称") + @Excel(name = "提报单位名称", orderNum = "0",width = 20.0) + private String unit; + + @ApiModelProperty(value = "协会名称-标委会") + @Excel(name = "协会名称-标委会", orderNum = "1",width = 20.0) + private String scName; + + @ApiModelProperty(value = "协会名称-分标委") + @Excel(name = "协会名称-分标委", orderNum = "2",width = 20.0) + private String sscName; + + @ApiModelProperty(value = "协会名称-工作组") + @Excel(name = "协会名称-工作组", orderNum = "3",width = 20.0) + private String wgName; + + @ApiModelProperty(value = "会员角色") + @Excel(name = "会员角色", orderNum = "4",width = 20.0) + private String role; + + @ApiModelProperty(value = "参与人") + @Excel(name = "参与人", orderNum = "5",width = 20.0) + private String attend; + + @ApiModelProperty(value = "本届入会时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "本届入会时间", orderNum = "6",width = 20.0 , exportFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + private Date curTime; + + @ApiModelProperty(value = "职务") + @Excel(name = "职务", orderNum = "7",width = 20.0) + private String job; + + @ApiModelProperty(value = "所在部门") + @Excel(name = "所在部门", orderNum = "8",width = 20.0) + private String department; + + @ApiModelProperty(value = "联系方式") + @Excel(name = "联系方式", orderNum = "9",width = 20.0) + private String tel; + + @ApiModelProperty(value = "任期") + @Excel(name = "任期", orderNum = "10",width = 20.0) + private String term; + + @ApiModelProperty(value = "证书") + @Excel(name = "证书", orderNum = "11",width = 20.0) + private String certificate; + + @ApiModelProperty(value = "账号") + @Excel(name = "账号", orderNum = "12",width = 20.0) + private String account; + + @ApiModelProperty(value = "密码") + @Excel(name = "密码", orderNum = "13",width = 20.0) + private String password; + + @ApiModelProperty(value = "备注") + @Excel(name = "备注", orderNum = "14",width = 20.0) + private String remark; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdExReviseCost.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdExReviseCost.java new file mode 100644 index 00000000..99a77a83 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdExReviseCost.java @@ -0,0 +1,49 @@ +package com.adc.da.slrs.wgdCensusZ.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + *

    + * 参与外部标准制修订费用统计 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdExReviseCost对象", description="参与外部标准制修订费用统计") +public class WgdExReviseCost extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "类型") + @Excel(name = "类型", orderNum = "0",width = 20.0) + private String type; + + @ApiModelProperty(value = "项目编号") + @Excel(name = "项目编号", orderNum = "1",width = 20.0) + private String proId; + + @ApiModelProperty(value = "项目名称") + @Excel(name = "项目名称", orderNum = "2",width = 20.0) + private String proName; + + @ApiModelProperty(value = "费用列支项") + @Excel(name = "费用列支项", orderNum = "3",width = 20.0) + private String costOutlay; + + @ApiModelProperty(value = "费用支出") + @Excel(name = "费用支出", orderNum = "4",width = 20.0) + private String cost; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdMeetCost.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdMeetCost.java new file mode 100644 index 00000000..229f0892 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/entity/WgdMeetCost.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.wgdCensusZ.entity; + +import java.util.Date; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.adc.da.base.page.BasePage; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +/** + *

    + * 参会费用信息统计 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="WgdMeetCost对象", description="参会费用信息统计") +public class WgdMeetCost extends BasePage { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "主办单位") + @Excel(name = "主办单位", orderNum = "0",width = 20.0) + private String unit; + + @ApiModelProperty(value = "会议名称") + @Excel(name = "会议名称", orderNum = "1",width = 20.0) + private String meetName; + + @ApiModelProperty(value = "会议时间") + @Excel(name = "会议时间", orderNum = "2",width = 20.0, exportFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date meetTime; + + @ApiModelProperty(value = "会费标准") + @Excel(name = "会费标准", orderNum = "3",width = 20.0) + private String payStandard; + + @ApiModelProperty(value = "实际发生") + @Excel(name = "实际发生", orderNum = "4",width = 20.0) + private String payReality; + + @ApiModelProperty(value = "费用列支") + @Excel(name = "费用列支", orderNum = "5",width = 20.0) + private String costOutlay; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdAssocCostService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdAssocCostService.java new file mode 100644 index 00000000..59eadc1a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdAssocCostService.java @@ -0,0 +1,31 @@ +package com.adc.da.slrs.wgdCensusZ.service; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 协会费用信息统计 服务类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface IWgdAssocCostService extends IService { + List selectAllAssocCosts();//查询所有 + List getAllWgdAssocCosts(WgdAssocCost page);//查询所有 + List queryAllWgdAssocCosts(WgdAssocCost wgdAssocCost);//多条件查询 + WgdAssocCost getWgdAssocCostById(String id);//查询详情 + + int updateWgdAssocCost(WgdAssocCost wgdAssocCost);//编辑 + int insertWgdAssocCost(WgdAssocCost wgdAssocCost);//插入 + int deleteWgdAssocCost(String id);//删除 + int deleteWgdAssocCosts(String ids);//批量删除 + List importAssocCosts(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdAssocInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdAssocInfoService.java new file mode 100644 index 00000000..9792674a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdAssocInfoService.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.wgdCensusZ.service; + +import com.adc.da.slrs.processModel.entity.importExcelDTO; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 协会信息数据统计 服务类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface IWgdAssocInfoService extends IService { + List getAllWgdAssocInfos();//查询所有 + List queryAllWgdAssocInfos(WgdAssocInfo wgdAssocInfo);//多条件查询 + WgdAssocInfo getWgdAssocInfoById(String id);//查询详情 + + int updateWgdAssocInfo(WgdAssocInfo wgdAssocInfo);//编辑 + int insertWgdAssocInfo(WgdAssocInfo wgdAssocInfo);//插入 + int deleteWgdAssocInfo(String id);//删除 + int deleteWgdAssocInfos(String ids);//批量删除 + + List delWithWkData(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdCommiInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdCommiInfoService.java new file mode 100644 index 00000000..2fc0163e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdCommiInfoService.java @@ -0,0 +1,29 @@ +package com.adc.da.slrs.wgdCensusZ.service; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 委员信息数据统计 服务类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface IWgdCommiInfoService extends IService { + List getAllWgdCommiInfos();//查询所有 + List queryAllWgdCommiInfos(WgdCommiInfo wgdCommiInfo);//多条件查询 + WgdCommiInfo getWgdCommiInfoById(String id);//查询详情 + + int updateWgdCommiInfo(WgdCommiInfo wgdCommiInfo);//编辑 + int insertWgdCommiInfo(WgdCommiInfo wgdCommiInfo);//插入 + int deleteWgdCommiInfo(String id);//删除 + int deleteWgdCommiInfos(String ids);//批量删除 + List importCommiInfo(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdExReviseCostService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdExReviseCostService.java new file mode 100644 index 00000000..c79ab4d9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdExReviseCostService.java @@ -0,0 +1,28 @@ +package com.adc.da.slrs.wgdCensusZ.service; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdExReviseCost; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 参与外部标准制修订费用统计 服务类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface IWgdExReviseCostService extends IService { + List getAllWgdExReviseCosts();//查询所有 + List queryAllWgdExReviseCosts(WgdExReviseCost wgdExReviseCost);//多条件查询 + WgdExReviseCost getWgdExReviseCostById(String id);//查询详情 + + int updateWgdExReviseCost(WgdExReviseCost wgdExReviseCost);//编辑 + int insertWgdExReviseCost(WgdExReviseCost wgdExReviseCost);//插入 + int deleteWgdExReviseCost(String id);//删除 + int deleteWgdExReviseCosts(String ids);//批量删除 + List importExReviseCost(MultipartFile file , StringBuilder stringBuilder); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdMeetCostService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdMeetCostService.java new file mode 100644 index 00000000..1adf92db --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/IWgdMeetCostService.java @@ -0,0 +1,30 @@ +package com.adc.da.slrs.wgdCensusZ.service; + +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdExReviseCost; +import com.adc.da.slrs.wgdCensusZ.entity.WgdMeetCost; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + *

    + * 参会费用信息统计 服务类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +public interface IWgdMeetCostService extends IService { + List getAllWgdMeetCosts();//查询所有 + List queryAllWgdMeetCosts(WgdMeetCost wgdMeetCost);//多条件查询 + WgdMeetCost getWgdMeetCostById(String id);//查询详情 + + int updateWgdMeetCost(WgdMeetCost wgdMeetCost);//编辑 + int insertWgdMeetCost(WgdMeetCost wgdMeetCost);//插入 + int deleteWgdMeetCost(String id);//删除 + int deleteWgdMeetCosts(String ids);//批量删除 + List importMeetCost(MultipartFile file , StringBuilder stringBuilder); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdAssocCostServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdAssocCostServiceImpl.java new file mode 100644 index 00000000..1b985e15 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdAssocCostServiceImpl.java @@ -0,0 +1,151 @@ +package com.adc.da.slrs.wgdCensusZ.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocCost; +import com.adc.da.slrs.wgdCensusZ.dao.WgdAssocCostDao; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.service.IWgdAssocCostService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 协会费用信息统计 服务实现类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Service +public class WgdAssocCostServiceImpl extends ServiceImpl implements IWgdAssocCostService { + + @Autowired + WgdAssocCostDao wgdAssocCostDao; + + @Autowired + IWgdAssocCostService iWgdAssocCostService; + + @Override + public List selectAllAssocCosts() { + return wgdAssocCostDao.selectAllAssocCosts(); + } + + @Override + public List getAllWgdAssocCosts(WgdAssocCost page) { + Integer count = wgdAssocCostDao.getTotal(); + page.getPager().setRowCount(count); + List wgdAssocCosts = wgdAssocCostDao.selectAll(page); + return wgdAssocCosts; + } + + @Override + public List queryAllWgdAssocCosts(WgdAssocCost wgdAssocCost) { + Integer count = wgdAssocCostDao.getQueryTotal(wgdAssocCost); + wgdAssocCost.getPager().setRowCount(count); + List wgdAssocCosts = wgdAssocCostDao.queryAll(wgdAssocCost); + return wgdAssocCosts; + } + + @Override + public WgdAssocCost getWgdAssocCostById(String id) { + return wgdAssocCostDao.selectOne(id); + } + + @Override + public int updateWgdAssocCost(WgdAssocCost wgdAssocCost) { + return wgdAssocCostDao.updateOne(wgdAssocCost); + } + + @Override + public int insertWgdAssocCost(WgdAssocCost wgdAssocCost) { + wgdAssocCost.setId(UUIDUtils.randomUUID(32)); + return wgdAssocCostDao.insertOne(wgdAssocCost); + } + + @Override + public int deleteWgdAssocCost(String id) { + return wgdAssocCostDao.deleteOne(id); + } + + @Override + public int deleteWgdAssocCosts(String ids) { + String[] str = ids.split(","); + return wgdAssocCostDao.deleteBatch(str); + } + + @Override + public List importAssocCosts(MultipartFile file, StringBuilder stringBuilder) { + List res= ExcelImportUtilByWk.readExcelpublic(WgdAssocCost.class,file,stringBuilder); + if (res != null){ + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i=1; + for (WgdAssocCost wgdAssocCost: res) { + if (null == wgdAssocCost.getScName() || "".equals(wgdAssocCost.getScName())){ + stringBuilder.append("第" + i + "行第1列协会名称-标委会填写不符合格式要求请检查;"); + } + if (null == wgdAssocCost.getWgName() || "".equals(wgdAssocCost.getWgName())){ + stringBuilder.append("第" + i + "行第3列协会名称-工作组填写不符合格式要求请检查;"); + } + if (null == wgdAssocCost.getCostOutlay() || "".equals(wgdAssocCost.getCostOutlay())){ + stringBuilder.append("第" + i + "行第6列费用列支填写不符合格式要求请检查;"); + } + if (null == wgdAssocCost.getAnnualPayment() || "".equals(wgdAssocCost.getAnnualPayment())){ + stringBuilder.append("第" + i + "行第7列每年缴费情况填写不符合格式要求请检查;"); + } + i++; + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdAssocCost.class, info -> !info.getColumn().equals("id")); + List wgdAssocCost=iWgdAssocCostService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdAssocCost.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + res.forEach(resAssoc->{ + if (null == resAssoc.getScName() || "".equals(resAssoc.getScName())){ + remove.add(resAssoc); + } + if (null == resAssoc.getWgName() || "".equals(resAssoc.getWgName())){ + remove.add(resAssoc); + } + if (null == resAssoc.getCostOutlay() || "".equals(resAssoc.getCostOutlay())){ + remove.add(resAssoc); + } + if (null == resAssoc.getAnnualPayment() || "".equals(resAssoc.getAnnualPayment())){ + remove.add(resAssoc); + } + }); + + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdAssocCostService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdAssocInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdAssocInfoServiceImpl.java new file mode 100644 index 00000000..fe4b2ddd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdAssocInfoServiceImpl.java @@ -0,0 +1,167 @@ +package com.adc.da.slrs.wgdCensusZ.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.entity.importExcelDTO; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.adc.da.slrs.wgdCensusZ.dao.WgdAssocInfoDao; +import com.adc.da.slrs.wgdCensusZ.service.IWgdAssocInfoService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 协会信息数据统计 服务实现类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Service +public class WgdAssocInfoServiceImpl extends ServiceImpl implements IWgdAssocInfoService { + + @Autowired + WgdAssocInfoDao wgdAssocInfoDao; + @Autowired + IWgdAssocInfoService iWgdAssocInfoService; + + @Override + public List getAllWgdAssocInfos() { + return wgdAssocInfoDao.selectAll(); + } + + @Override + public List queryAllWgdAssocInfos(WgdAssocInfo wgdAssocInfo) { + Integer count = wgdAssocInfoDao.getQueryTotal(wgdAssocInfo); + wgdAssocInfo.getPager().setRowCount(count); + return wgdAssocInfoDao.queryAll(wgdAssocInfo); + } + + @Override + public WgdAssocInfo getWgdAssocInfoById(String id) { + return wgdAssocInfoDao.selectById(id); + } + + @Override + public int updateWgdAssocInfo(WgdAssocInfo wgdAssocInfo) { + return wgdAssocInfoDao.updateOne(wgdAssocInfo); + } + + @Override + public int insertWgdAssocInfo(WgdAssocInfo wgdAssocInfo) { + wgdAssocInfo.setId(UUIDUtils.randomUUID(32)); + return wgdAssocInfoDao.insertOne(wgdAssocInfo); + } + + @Override + public int deleteWgdAssocInfo(String id) { + return wgdAssocInfoDao.deleteOne(id); + } + + @Override + public int deleteWgdAssocInfos(String ids) { + String[] str = ids.split(","); + return wgdAssocInfoDao.deleteBatch(str); + } + + @Override + public List delWithWkData(MultipartFile file, StringBuilder stringBuilder) { + List res= ExcelImportUtilByWk.readExcelpublic(WgdAssocInfo.class,file,stringBuilder); + if (res != null && "".equals(stringBuilder.toString())){ + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i=1; + for (WgdAssocInfo importExcelDTO: res) { + if (null == importExcelDTO.getScName() || "".equals(importExcelDTO.getScName())){ + stringBuilder.append("第" + i + "行第1列协会名称-标委会填写不符合格式要求请检查;"); + } + if (null == importExcelDTO.getSscName() || "".equals(importExcelDTO.getSscName())){ + stringBuilder.append("第" + i + "行第2列协会名称-分标委填写不符合格式要求请检查;"); + } + if (null == importExcelDTO.getWgName() || "".equals(importExcelDTO.getWgName())){ + stringBuilder.append("第" + i + "行第3列协会名称-工作组填写不符合格式要求请检查;"); + } + if (null == importExcelDTO.getRole() || "".equals(importExcelDTO.getRole())){ + stringBuilder.append("第" + i + "行第4列会员角色填写不符合格式要求请检查;"); + } + if (null == importExcelDTO.getAttend() || "".equals(importExcelDTO.getAttend())){ + stringBuilder.append("第" + i + "行第5列参与人填写不符合格式要求请检查;"); + } + try { + if (null!=importExcelDTO.getIniTime() && !"".equals(importExcelDTO.getIniTime())) { + importExcelDTO.setIniTime(importExcelDTO.getIniTime()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第9列初始入会时间填写不符合格式要求请检查;"); + } + try { + if (null!=importExcelDTO.getCurTime() && !"".equals(importExcelDTO.getCurTime())) { + + importExcelDTO.setCurTime(importExcelDTO.getCurTime()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第10列本届入会时间填写不符合格式要求请检查;"); + } + try { + if (null!=importExcelDTO.getLastPayTime() && !"".equals(importExcelDTO.getLastPayTime())) { + importExcelDTO.setLastPayTime(importExcelDTO.getLastPayTime()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第13列上次缴纳时间填写不符合格式要求请检查;"); + } + i++; + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdAssocInfo.class, info -> !info.getColumn().equals("id")); + List wgdAssocInfos=iWgdAssocInfoService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdAssocInfos.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + res.forEach(resOne->{ + if (null == resOne.getScName() || "".equals(resOne.getScName())){ + remove.add(resOne); + } + if (null == resOne.getSscName() || "".equals(resOne.getSscName())){ + remove.add(resOne); + } + if (null == resOne.getWgName() || "".equals(resOne.getWgName())){ + remove.add(resOne); + } + if (null == resOne.getRole() || "".equals(resOne.getRole())){ + remove.add(resOne); + } + if (null == resOne.getAttend() || "".equals(resOne.getAttend())){ + remove.add(resOne); + } + }); + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdAssocInfoService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdCommiInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdCommiInfoServiceImpl.java new file mode 100644 index 00000000..f81074fa --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdCommiInfoServiceImpl.java @@ -0,0 +1,160 @@ +package com.adc.da.slrs.wgdCensusZ.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.entity.WgdAssocInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.dao.WgdCommiInfoDao; +import com.adc.da.slrs.wgdCensusZ.service.IWgdCommiInfoService; +import com.adc.da.util.MD5Util; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 委员信息数据统计 服务实现类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Service +public class WgdCommiInfoServiceImpl extends ServiceImpl implements IWgdCommiInfoService { + + @Autowired + WgdCommiInfoDao wgdCommiInfoDao; + + @Autowired + IWgdCommiInfoService iWgdCommiInfoService; + + @Override + public List getAllWgdCommiInfos() { + return wgdCommiInfoDao.selectAll(); + } + + @Override + public List queryAllWgdCommiInfos(WgdCommiInfo wgdCommiInfo) { + Integer count = wgdCommiInfoDao.getQueryTotal(wgdCommiInfo); + wgdCommiInfo.getPager().setRowCount(count); + return wgdCommiInfoDao.queryAll(wgdCommiInfo); + } + + @Override + public WgdCommiInfo getWgdCommiInfoById(String id) { + return wgdCommiInfoDao.selectById(id); + } + + @Override + public int updateWgdCommiInfo(WgdCommiInfo wgdCommiInfo) { + wgdCommiInfo.setPassword(MD5Util.convertMD5(wgdCommiInfo.getPassword())); + return wgdCommiInfoDao.updateOne(wgdCommiInfo); + } + + @Override + public int insertWgdCommiInfo(WgdCommiInfo wgdCommiInfo) { + wgdCommiInfo.setId(UUIDUtils.randomUUID(32)); + wgdCommiInfo.setPassword(MD5Util.convertMD5(wgdCommiInfo.getPassword())); + return wgdCommiInfoDao.insertOne(wgdCommiInfo); + } + + @Override + public int deleteWgdCommiInfo(String id) { + return wgdCommiInfoDao.deleteOne(id); + } + + @Override + public int deleteWgdCommiInfos(String ids) { + String[] str = ids.split(","); + return wgdCommiInfoDao.deleteBatch(str); + } + + @Override + public List importCommiInfo(MultipartFile file, StringBuilder stringBuilder) { + List res= ExcelImportUtilByWk.readExcelpublic(WgdCommiInfo.class,file,stringBuilder); + if (res != null && "".equals(stringBuilder.toString())){ + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i=1; + for (WgdCommiInfo wgdCommiInfo: res) { + if (null == wgdCommiInfo.getScName() || "".equals(wgdCommiInfo.getScName())){ + stringBuilder.append("第" + i + "行第2列协会名称-标委会填写不符合格式要求请检查;"); + } + if (null == wgdCommiInfo.getSscName() || "".equals(wgdCommiInfo.getSscName())){ + stringBuilder.append("第" + i + "行第3列协会名称-分标委填写不符合格式要求请检查;"); + } + if (null == wgdCommiInfo.getWgName() || "".equals(wgdCommiInfo.getWgName())){ + stringBuilder.append("第" + i + "行第4列协会名称-工作组填写不符合格式要求请检查;"); + } + if (null == wgdCommiInfo.getRole() || "".equals(wgdCommiInfo.getRole())){ + stringBuilder.append("第" + i + "行第6列会员角色填写不符合格式要求请检查;"); + } + if (null == wgdCommiInfo.getAttend() || "".equals(wgdCommiInfo.getAttend())){ + stringBuilder.append("第" + i + "行第7列参与人填写不符合格式要求请检查;"); + } + if (null == wgdCommiInfo.getTel() || "".equals(wgdCommiInfo.getTel())){ + stringBuilder.append("第" + i + "行第10列参与人填写不符合格式要求请检查;"); + } + try { + if (null!=wgdCommiInfo.getCurTime() && !"".equals(wgdCommiInfo.getCurTime())) { + wgdCommiInfo.setCurTime(wgdCommiInfo.getCurTime()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第5列本届入会时间填写不符合格式要求请检查;"); + } + i++; + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdCommiInfo.class, info -> !info.getColumn().equals("id")); + List wgdCommiInfo=iWgdCommiInfoService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdCommiInfo.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + res.forEach(resCommiInfo->{ + if (null == resCommiInfo.getScName() || "".equals(resCommiInfo.getScName())){ + remove.add(resCommiInfo); + } + if (null == resCommiInfo.getSscName() || "".equals(resCommiInfo.getSscName())){ + remove.add(resCommiInfo); + } + if (null == resCommiInfo.getWgName() || "".equals(resCommiInfo.getWgName())){ + remove.add(resCommiInfo); + } + if (null == resCommiInfo.getRole() || "".equals(resCommiInfo.getRole())){ + remove.add(resCommiInfo); + } + if (null == resCommiInfo.getAttend() || "".equals(resCommiInfo.getAttend())){ + remove.add(resCommiInfo); + } + if (null == resCommiInfo.getTel() || "".equals(resCommiInfo.getTel())){ + remove.add(resCommiInfo); + } + }); + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdCommiInfoService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdExReviseCostServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdExReviseCostServiceImpl.java new file mode 100644 index 00000000..e3f11aa3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdExReviseCostServiceImpl.java @@ -0,0 +1,106 @@ +package com.adc.da.slrs.wgdCensusZ.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdExReviseCost; +import com.adc.da.slrs.wgdCensusZ.dao.WgdExReviseCostDao; +import com.adc.da.slrs.wgdCensusZ.service.IWgdExReviseCostService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 参与外部标准制修订费用统计 服务实现类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Service +public class WgdExReviseCostServiceImpl extends ServiceImpl implements IWgdExReviseCostService { + + @Autowired + WgdExReviseCostDao wgdExReviseCostDao; + + @Autowired + IWgdExReviseCostService iWgdExReviseCostService; + + @Override + public List getAllWgdExReviseCosts() { + return wgdExReviseCostDao.selectAll(); + } + + @Override + public List queryAllWgdExReviseCosts(WgdExReviseCost wgdExReviseCost) { + Integer count = wgdExReviseCostDao.getQueryTotal(wgdExReviseCost); + wgdExReviseCost.getPager().setRowCount(count); + return wgdExReviseCostDao.queryAll(wgdExReviseCost); + } + + @Override + public WgdExReviseCost getWgdExReviseCostById(String id) { + return wgdExReviseCostDao.selectById(id); + } + + @Override + public int updateWgdExReviseCost(WgdExReviseCost wgdExReviseCost) { + return wgdExReviseCostDao.updateOne(wgdExReviseCost); + } + + @Override + public int insertWgdExReviseCost(WgdExReviseCost wgdExReviseCost) { + wgdExReviseCost.setId(UUIDUtils.randomUUID(32)); + return wgdExReviseCostDao.insertOne(wgdExReviseCost); + } + + @Override + public int deleteWgdExReviseCost(String id) { + return wgdExReviseCostDao.deleteOne(id); + } + + @Override + public int deleteWgdExReviseCosts(String ids) { + String[] str = ids.split(","); + return wgdExReviseCostDao.deleteBatch(str); + } + + @Override + public List importExReviseCost(MultipartFile file, StringBuilder stringBuilder) { + List res= ExcelImportUtilByWk.readExcelpublic(WgdExReviseCost.class,file,stringBuilder); + if (res != null){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdExReviseCost.class, info -> !info.getColumn().equals("id")); + List wgdExReviseCost=iWgdExReviseCostService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdExReviseCost.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdExReviseCostService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdMeetCostServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdMeetCostServiceImpl.java new file mode 100644 index 00000000..22bd6f71 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/wgdCensusZ/service/impl/WgdMeetCostServiceImpl.java @@ -0,0 +1,120 @@ +package com.adc.da.slrs.wgdCensusZ.service.impl; + +import com.adc.da.http.Result; +import com.adc.da.slrs.processModel.utils.ExcelImportUtilByWk; +import com.adc.da.slrs.wgdCensusZ.entity.WgdCommiInfo; +import com.adc.da.slrs.wgdCensusZ.entity.WgdMeetCost; +import com.adc.da.slrs.wgdCensusZ.dao.WgdMeetCostDao; +import com.adc.da.slrs.wgdCensusZ.service.IWgdMeetCostService; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

    + * 参会费用信息统计 服务实现类 + *

    + * + * @author zcr + * @since 2021-11-12 + */ +@Service +public class WgdMeetCostServiceImpl extends ServiceImpl implements IWgdMeetCostService { + + @Autowired + WgdMeetCostDao wgdMeetCostDao; + + @Autowired + IWgdMeetCostService iWgdMeetCostService; + + @Override + public List getAllWgdMeetCosts() { + return wgdMeetCostDao.selectAll(); + } + + @Override + public List queryAllWgdMeetCosts(WgdMeetCost wgdMeetCost) { + Integer count = wgdMeetCostDao.getQueryTotal(wgdMeetCost); + wgdMeetCost.getPager().setRowCount(count); + return wgdMeetCostDao.queryAll(wgdMeetCost); + } + + @Override + public WgdMeetCost getWgdMeetCostById(String id) { + return wgdMeetCostDao.selectById(id); + } + + @Override + public int updateWgdMeetCost(WgdMeetCost wgdMeetCost) { + return wgdMeetCostDao.updateOne(wgdMeetCost); + } + + @Override + public int insertWgdMeetCost(WgdMeetCost wgdMeetCost) { + wgdMeetCost.setId(UUIDUtils.randomUUID(32)); + return wgdMeetCostDao.insertOne(wgdMeetCost); + } + + @Override + public int deleteWgdMeetCost(String id) { + return wgdMeetCostDao.deleteOne(id); + } + + @Override + public int deleteWgdMeetCosts(String ids) { + String[] str = ids.split(","); + return wgdMeetCostDao.deleteBatch(str); + } + + @Override + public List importMeetCost(MultipartFile file, StringBuilder stringBuilder) { + List res= ExcelImportUtilByWk.readExcelpublic(WgdMeetCost.class,file,stringBuilder); + if (res != null && "".equals(stringBuilder.toString())){ + DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + int i=1; + for (WgdMeetCost wgdCommiInfo: res) { + try { + if (null!=wgdCommiInfo.getMeetTime() && !"".equals(wgdCommiInfo.getMeetTime())) { + wgdCommiInfo.setMeetTime(wgdCommiInfo.getMeetTime()); + } + }catch (Exception e){ + stringBuilder.append("第"+i+"行第3列本届会议时间填写不符合格式要求请检查;"); + } + i++; + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select(WgdMeetCost.class, info -> !info.getColumn().equals("id")); + List wgdMeetCost=iWgdMeetCostService.list(queryWrapper); + List remove=new ArrayList<>(); + wgdMeetCost.forEach(WgbWbtj -> { + WgbWbtj.setId(null); + if (res.contains(WgbWbtj)){ + remove.add(WgbWbtj); + } + + }); + res.removeAll(remove); + res.forEach(wgdAssocInfo -> { + wgdAssocInfo.setId(String.valueOf(UUID.randomUUID())); + }); + if (res.size()>0 && iWgdMeetCostService.saveOrUpdateBatch(res)) { + return res; + }else { + stringBuilder.append("表格数据全部重复"); + } + return res; + }else { + return null; + } + + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/controller/ZlTreeController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/controller/ZlTreeController.java new file mode 100644 index 00000000..b5eca3ec --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/controller/ZlTreeController.java @@ -0,0 +1,101 @@ +package com.adc.da.slrs.zlTree.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.zlTree.entity.TreeData; +import com.adc.da.slrs.zlTree.entity.ZlTree; +import com.adc.da.slrs.zlTree.entity.ZlTreeData; +import com.adc.da.slrs.zlTree.service.IZlTreeDataService; +import com.adc.da.slrs.zlTree.service.IZlTreeService; +import com.adc.da.util.LoginUserUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import org.apache.ibatis.annotations.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** +*

    + * 前端控制器 + *

    +* +* @author zhaokaiyao +* @since 2021-12-14 +*/ +@RestController +@Api(description = "资料中心") +@RequestMapping("/${restPath}/fileMaterialCenter/zlTree") +public class ZlTreeController extends BaseController { + + @Autowired + IZlTreeService iZlTreeService; + + @Autowired + IZlTreeDataService iZlTreeDataService; + + @PostMapping + @ApiOperation("新增资料中心左侧树节点") + public ResponseMessage addFileMaterial(@RequestBody ZlTree material){ + material.setId(String.valueOf(UUID.randomUUID())); + boolean save = iZlTreeService.save(material); + return Result.success(save); + } + + + @DeleteMapping + @ApiOperation("删除树节点") + public ResponseMessage deleteMaterial(String id){ + List idList = Arrays.asList(id.split(",")); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.in("id",idList); + List data=iZlTreeDataService.list(wrapper); + if (null!=data && data.size()>0) { + return Result.error("节点下存在数据无法删除。"); + }else { + boolean b = iZlTreeService.removeByIds(idList); + return Result.success(b); + } + + } + + @GetMapping + @ApiOperation("查询树结构") + public ResponseMessage> getFileMaterial(){ + List fileMaterial = iZlTreeService.getLeftTree(); + return Result.success(fileMaterial); + } + + @GetMapping("/permissConfig") + @ApiOperation("查询树结构-角色管理") + public ResponseMessage> getFileMaterialM(){ + List fileMaterial = iZlTreeService.getLeftTreeM(); + return Result.success(fileMaterial); + } + + + @PutMapping + @ApiOperation("修改树节点") + public ResponseMessage updateFileMaterial(@RequestBody ZlTree zlTree){ + boolean b = iZlTreeService.updateById(zlTree); + + return Result.success(b); + } + + + @GetMapping("/queryTree") + @ApiOperation("根据树id判断树层级并查询对应的节点") + public ResponseMessage queryTree(@Param("treeId") String treeId){ + ZlTree zlTree = iZlTreeService.queryTree(treeId); + return Result.success(zlTree); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/controller/ZlTreeDataController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/controller/ZlTreeDataController.java new file mode 100644 index 00000000..628404f2 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/controller/ZlTreeDataController.java @@ -0,0 +1,54 @@ +package com.adc.da.slrs.zlTree.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.slrs.zlTree.entity.ZlTree; +import com.adc.da.slrs.zlTree.entity.ZlTreeData; +import com.adc.da.slrs.zlTree.service.IZlTreeDataService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** +*

    + * 前端控制器 + *

    +* +* @author zhaokaiyao +* @since 2021-12-14 +*/ +@RestController +@Api(description = "资料中心") +@RequestMapping("/${restPath}/fileMaterialCenter/zlTreeData") +public class ZlTreeDataController extends BaseController { + + @Autowired + IZlTreeDataService iZlTreeService; + + @PostMapping(value = "/add") + @ApiOperation("树与数据关联") + public ResponseMessage addFileMaterial(@RequestBody ZlTreeData zlTreeData){ + + boolean save = iZlTreeService.save(zlTreeData); + return Result.success(save); + } + + + @PostMapping(value = "/remove") + @ApiOperation("树与数据关联移除") + public ResponseMessage deleteMaterial(@RequestBody ZlTreeData zlTreeData){ + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.eq("id",zlTreeData.getId()); + wrapper.eq("data_id",zlTreeData.getDataId()); + boolean b = iZlTreeService.remove(wrapper); + return Result.success(b); + + } + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/dao/ZlTreeDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/dao/ZlTreeDao.java new file mode 100644 index 00000000..e7527d15 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/dao/ZlTreeDao.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.zlTree.dao; + +import com.adc.da.slrs.zlTree.entity.ZlTree; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +public interface ZlTreeDao extends BaseMapper { + + + int topping(@Param("id") String id); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/dao/ZlTreeDataDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/dao/ZlTreeDataDao.java new file mode 100644 index 00000000..b8930ef3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/dao/ZlTreeDataDao.java @@ -0,0 +1,21 @@ +package com.adc.da.slrs.zlTree.dao; + +import com.adc.da.slrs.zlTree.entity.ZlTreeData; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + +/** + *

    + * Mapper 接口 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +public interface ZlTreeDataDao extends BaseMapper { + + @Update("update zl_data SET id = #{treeId}, data_id = #{dataId} WHERE data_id = #{dataId}") + boolean updateZT(@Param("treeId")String treeId,@Param("dataId")String dataId); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/TreeData.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/TreeData.java new file mode 100644 index 00000000..3df80d20 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/TreeData.java @@ -0,0 +1,43 @@ +package com.adc.da.slrs.zlTree.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + *

    + * + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +public class TreeData extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId + private String id; + + @ApiModelProperty(value = "父节点") + private String parentId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "排序") + private String sort; + + List children; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/ZlTree.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/ZlTree.java new file mode 100644 index 00000000..b31579dc --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/ZlTree.java @@ -0,0 +1,48 @@ +package com.adc.da.slrs.zlTree.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + *

    + * + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("zl_tree") +public class ZlTree extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableField("id") + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "父节点") + @TableField("p_id") + private String parentId; + + @ApiModelProperty(value = "名称") + @TableField("name") + private String name; + + @ApiModelProperty(value = "排序") + @TableField("sort") + private String sort; + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/ZlTreeData.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/ZlTreeData.java new file mode 100644 index 00000000..88823170 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/entity/ZlTreeData.java @@ -0,0 +1,38 @@ +package com.adc.da.slrs.zlTree.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

    + * + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("zl_data") +public class ZlTreeData extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "父节点") + @TableField("data_id") + private String dataId; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/IZlTreeDataService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/IZlTreeDataService.java new file mode 100644 index 00000000..5a9505e9 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/IZlTreeDataService.java @@ -0,0 +1,19 @@ +package com.adc.da.slrs.zlTree.service; + +import com.adc.da.slrs.zlTree.entity.ZlTreeData; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

    + * 服务类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +public interface IZlTreeDataService extends IService { + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/IZlTreeService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/IZlTreeService.java new file mode 100644 index 00000000..e37b374c --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/IZlTreeService.java @@ -0,0 +1,57 @@ +package com.adc.da.slrs.zlTree.service; + +import com.adc.da.slrs.zlTree.entity.TreeData; +import com.adc.da.slrs.zlTree.entity.ZlTree; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Arrays; +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +public interface IZlTreeService extends IService { + + + /** + * 查询树结构 + * @param + * @return + */ + List getLeftTree(); + + /** + * 角色管理-查询树结构 + * @return + */ + List getLeftTreeM(); + + + /** + * 获取类型 + * @return + */ + List getFileMaterialType(); + + /** + * 置顶 + * @param id + * @return + */ + int topping(String id); + + /** + * 根据树id判断树层级并查询对应的节点 + * @param treeId + * @return + */ + ZlTree queryTree(String treeId); + + void subordinateTreeNodes(List treeIds,String parentTreeId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/impl/ZlTreeDataServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/impl/ZlTreeDataServiceImpl.java new file mode 100644 index 00000000..5e7eedfd --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/impl/ZlTreeDataServiceImpl.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.zlTree.service.impl; + +import com.adc.da.slrs.zlTree.dao.ZlTreeDataDao; +import com.adc.da.slrs.zlTree.entity.ZlTreeData; +import com.adc.da.slrs.zlTree.service.IZlTreeDataService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

    + * 服务实现类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +@Service +public class ZlTreeDataServiceImpl extends ServiceImpl implements IZlTreeDataService { + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/impl/ZlTreeServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/impl/ZlTreeServiceImpl.java new file mode 100644 index 00000000..4d9a6e88 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/zlTree/service/impl/ZlTreeServiceImpl.java @@ -0,0 +1,176 @@ +package com.adc.da.slrs.zlTree.service.impl; + +import com.adc.da.slrs.sarPosition.service.ITsPositionService; +import com.adc.da.slrs.sarRole.service.ITsRoleService; +import com.adc.da.slrs.sarUser.dao.TsUserDao; +import com.adc.da.slrs.sarUser.service.ITsUserService; +import com.adc.da.slrs.zlTree.dao.ZlTreeDao; +import com.adc.da.slrs.zlTree.entity.TreeData; +import com.adc.da.slrs.zlTree.entity.ZlTree; +import com.adc.da.slrs.zlTree.entity.ZlTreeData; +import com.adc.da.slrs.zlTree.service.IZlTreeService; +import com.adc.da.util.LoginUserUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + *

    + * 服务实现类 + *

    + * + * @author zhaokaiyao + * @since 2021-12-14 + */ +@Service +public class ZlTreeServiceImpl extends ServiceImpl implements IZlTreeService { + + @Autowired + ZlTreeDao zlTreeDao; + @Autowired + private ITsUserService tsUserService; + + @Override + public List getLeftTree() { + // 获取当前登录人 + String loginUserId = LoginUserUtil.getUserId(); + // 查询当前登录人的权限菜单 + List recourceIdList = tsUserService.getResourceUserId(loginUserId); + + TreeData res=new TreeData(); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.lambda().in(ZlTree::getId, recourceIdList); + wrapper.orderByAsc("length(sort),sort"); + List list=this.list(wrapper); + List treeData=new ArrayList<>(); + //代码遍历生成树 + for (ZlTree zlTree:list) { + if (StringUtils.isNotBlank(zlTree.getParentId())){ + TreeData zlTreeData=new TreeData(); + BeanUtils.copyProperties(zlTree,zlTreeData); + treeData.add(zlTreeData); + }else { + BeanUtils.copyProperties(zlTree,res); + } + } + //递归生成树 + digui(res,treeData); + List treeData1=new ArrayList<>(); + treeData1.add(res); + return treeData1; + } + + @Override + public List getLeftTreeM() { + TreeData res=new TreeData(); + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.orderByAsc("length(sort),sort"); + List list=this.list(wrapper); + List treeData=new ArrayList<>(); + //代码遍历生成树 + for (ZlTree zlTree:list) { + if (StringUtils.isNotBlank(zlTree.getParentId())){ + TreeData zlTreeData=new TreeData(); + BeanUtils.copyProperties(zlTree,zlTreeData); + treeData.add(zlTreeData); + }else { + BeanUtils.copyProperties(zlTree,res); + } + } + //递归生成树 + digui(res,treeData); + List treeData1=new ArrayList<>(); + treeData1.add(res); + return treeData1; + } + + private void digui(TreeData res,List treeData){ + for (TreeData data:treeData) { + if (null==res.getChildren()){ + List data1=new ArrayList<>(); + res.setChildren(data1); + } + if (res.getId().equals(data.getParentId())){ + if (null!=res.getChildren()){ + res.getChildren().add(data); + }else { + List data1=new ArrayList<>(); + data1.add(data); + res.setChildren(data1); + } + } + } + if (null!=res.getChildren()){ + for (TreeData treeData1:res.getChildren()) { + digui(treeData1,treeData); + } + } + } + + + + @Override + public List getFileMaterialType() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + queryWrapper.select("DISTINCT data_type"); + return this.listObjs(queryWrapper, item -> item.toString()); + } + + @Override + public int topping(String id) { + return zlTreeDao.topping(id); + } + + /** + * 根据树id判断树层级并查询对应的节点 + * @param treeId + * @return + */ + @Override + public ZlTree queryTree(String treeId) { + ZlTree zlTree = zlTreeDao.selectById(treeId); + if (ObjectUtils.isNotEmpty(zlTree)) { + if (ObjectUtils.isNotEmpty(zlTree.getParentId())) { + ZlTree zlTreeParents = zlTreeDao.selectById(zlTree.getParentId()); + if (ObjectUtils.isEmpty(zlTreeParents.getParentId())) { + return zlTree; + } else { + return zlTreeParents; + } + } else { + return zlTree; + } + } + return null; + } + + /** + * 根据树的父节点查询所有子节点id + * + * @param parentTreeId + * @return + */ + @Override + public void subordinateTreeNodes(List treeIds, String parentTreeId) { + treeIds.add(parentTreeId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("p_id", parentTreeId); + List list = list(queryWrapper); + if (ObjectUtils.isNotEmpty(list)) { + for (ZlTree zlTree : list) { + subordinateTreeNodes(treeIds,zlTree.getId()); + } + } + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/removeHtml/RemoveHtml.java b/adc-da-slrs/src/main/java/com/adc/da/utils/removeHtml/RemoveHtml.java new file mode 100644 index 00000000..8165d3ff --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/removeHtml/RemoveHtml.java @@ -0,0 +1,100 @@ +package com.adc.da.utils.removeHtml; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class RemoveHtml { + + + /** + * 匹配html标签,例如"

    xxx

    "这种格式 + */ + private static Pattern HTML_TAG_PATTERN = Pattern.compile("<[a-zA-Z]+.*?>([\\s\\S]*?)"); + + /** + * 替换掉html标签里面的style内容 + * + * @param content + * @return + */ + public static String replaceStyle(String content) { + if (content == null || content.length() == 0) { + return content; + } + String regEx = " style=\"(.*?)\""; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(content); + if (m.find()) { + content = m.replaceAll(""); + } + return content; + } + + + /** + * 移除掉
    标签 + * + * @param src + * @return + */ + public static String removeBrTag(String src) { + if (src != null && !src.isEmpty()) { + src = src.replaceAll("
    ", ""); + } + return src; + } + + + /** + * 针对多个标签嵌套的情况进行处理 + * 比如

    王者荣耀

    + * 预处理并且正则匹配完之后结果是 王者荣耀 + * 需要手工移除掉前面的起始标签 + * @param content + * @return + */ + public static String replaceStartTag(String content) { + if (content == null || content.length() == 0) { + return content; + } + String regEx = "<[a-zA-Z]*?>([\\s\\S]*?)"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(content); + if (m.find()) { + content = m.replaceAll(""); + } + return content; + } + + + + /** + * 获取html中的数据 + * @param htmlStr + * @return + */ + public static String getResultsFromHtml(String htmlStr) { + //定义script的正则表达式,去除js可以防止注入 + String scriptRegex="]*?>[\\s\\S]*?<\\/script>"; + //定义style的正则表达式,去除style样式,防止css代码过多时只截取到css样式代码 + String styleRegex="]*?>[\\s\\S]*?<\\/style>"; + //定义HTML标签的正则表达式,去除标签,只提取文字内容 + String htmlRegex="<[^>]+>"; + //定义空格,回车,换行符,制表符 + String spaceRegex = "\\s*|\t|\r|\n"; + + // 过滤script标签 + htmlStr = htmlStr.replaceAll(scriptRegex, ""); + // 过滤style标签 + htmlStr = htmlStr.replaceAll(styleRegex, ""); + // 过滤html标签 + htmlStr = htmlStr.replaceAll(htmlRegex, ""); + // 过滤空格等 + htmlStr = htmlStr.replaceAll(spaceRegex, ""); + return htmlStr.trim(); // 返回文本字符串 + } + + + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/tree/ITree.java b/adc-da-slrs/src/main/java/com/adc/da/utils/tree/ITree.java new file mode 100644 index 00000000..9938d387 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/tree/ITree.java @@ -0,0 +1,32 @@ +package com.adc.da.utils.tree; + +import java.util.List; + +/** + * 操作树的接口类 + * + */ +public interface ITree { + /** + * 获取构建数的list,因为根节点可能不止一个,所有返回List + * 获取的结构与getRoot基本一致,但是后边增加了另外的数据,不建议调用 + * + * @return + */ + List getTree(); + + /** + * 获取根节点树结构,因为根节点可能不止一个,所有返回List + * + * @return + */ + List getRoot(); + + /** + * 获取指定节点数据 + * + * @param nodeId + * @return + */ + TreeNode getTreeNode(String nodeId); +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/tree/ITreeNode.java b/adc-da-slrs/src/main/java/com/adc/da/utils/tree/ITreeNode.java new file mode 100644 index 00000000..a58c48de --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/tree/ITreeNode.java @@ -0,0 +1,43 @@ +package com.adc.da.utils.tree; + +/** + * 需要实现树的实体类需要实现的接口,获取关键数据 + * + */ +public interface ITreeNode { + /** + * TreeNode获取nodeId + * + * @return + */ + String getNodeId(); + + /** + * TreeNode获取nodeName + * + * @return + */ + String getNodeName(); + + /** + * TreeNode获取nodeParentId(父id) + * + * @return + */ + String getNodeParentId(); + + /** + * TreeNode获取orderNum(排序字段用于排序) + * + * @return + */ + Integer getOrderNum(); + + /** + * TreeNode获取nodeLevel(当前属于第几层级) + * + * @return + */ + Integer getNodeLevel(); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/tree/Tree.java b/adc-da-slrs/src/main/java/com/adc/da/utils/tree/Tree.java new file mode 100644 index 00000000..23332c20 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/tree/Tree.java @@ -0,0 +1,132 @@ +package com.adc.da.utils.tree; + +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * 构建树形建构 + */ +public class Tree implements ITree { + /** + * 用于存放treeNode的Map + */ + private LinkedHashMap treeNodesMap = new LinkedHashMap<>(); + /** + * 用于存放treeNode的list + */ + private List treeNodesList = new ArrayList<>(); + + /** + * 构造方法 + * + * @param list + */ + public Tree(List list) { + initTreeNodeMap(list); + initTreeNodeList(); + } + + /** + * 将List对象数据转为TreeNodeMap + * + * @param list + */ + private void initTreeNodeMap(List list) { + TreeNode treeNode; + for (ITreeNode item : list) { + treeNode = new TreeNode(item); + treeNode.setLastNodeNum(1); + treeNodesMap.put(treeNode.getNodeId(), treeNode); + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode parentTreeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (StringUtils.isEmpty(treeNode.getParentNodeId())) { + continue; + } + parentTreeNode = treeNodesMap.get(treeNode.getParentNodeId()); + if (parentTreeNode != null) { + treeNode.setParent(parentTreeNode); + parentTreeNode.addChild(treeNode); + // 按照orderNum排序 + Collections.sort(parentTreeNode.getChildren(), new OrdNamComparator()); + // 判断这个节点是否是最子节点 + if (treeNode.getChildren().size() == 0) { + treeNode.setLastNode(true); + } + // 计算每一个节点的最子节点的数量 + List children = parentTreeNode.getChildren(); + if (children.size() > 0) { + int sum = 0; + for (TreeNode treeNode2 : children) { + sum += treeNode2.getLastNodeNum(); + } + parentTreeNode.setLastNodeNum(sum); + } + } + } + } + + /** + * 根据treeNodesMap转为treeNodesList + */ + private void initTreeNodeList() { + if (treeNodesList.size() > 0) { + return; + } + if (treeNodesMap.size() == 0) { + return; + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode treeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (treeNode.getParent() == null) { + this.treeNodesList.add(treeNode); + this.treeNodesList.addAll(treeNode.getAllChildren()); + } + } + } + + @Override + public List getTree() { + return this.treeNodesList; + } + + @Override + public List getRoot() { + List rootList = new ArrayList<>(); + if (this.treeNodesList.size() > 0) { + for (TreeNode node : treeNodesList) { + if (node.getParent() == null) { + rootList.add(node); + Collections.sort(rootList, new OrdNamComparator()); + } + } + } + return rootList; + } + + @Override + public TreeNode getTreeNode(String nodeId) { + return this.treeNodesMap.get(nodeId); + } +} + +/** + * 自定义排序,按照orderNum排序 + */ +class OrdNamComparator implements Comparator { + @Override + public int compare(TreeNode t1, TreeNode t2) { + if (t1.getOrderNum() > t2.getOrderNum()) { + return 1; + } + if (t1.getOrderNum() < t2.getOrderNum()) { + return -1; + } + return t1.getNodeName().compareTo(t2.getNodeName()); + } +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/tree/TreeNode.java b/adc-da-slrs/src/main/java/com/adc/da/utils/tree/TreeNode.java new file mode 100644 index 00000000..6276f0ba --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/tree/TreeNode.java @@ -0,0 +1,187 @@ +package com.adc.da.utils.tree; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.ArrayList; +import java.util.List; + +public class TreeNode { + + /** + * 树节点ID + */ + @JSONField(ordinal = 1) + private String nodeId; + /** + * 树节点名称 + */ + @JSONField(ordinal = 2) + private String nodeName; + /** + * 父节点ID + */ + @JSONField(ordinal = 3) + private String parentNodeId; + /** + * 节点在树中的排序号 + */ + @JSONField(ordinal = 4) + private int orderNum; + /** + * 节点所在的层级 + */ + @JSONField(ordinal = 5) + private int level; + /** + * 最子节点的数量 + */ + @JSONField(ordinal = 6) + private int lastNodeNum; + + /** + * 是否是最子节点 + */ + @JSONField(ordinal = 7) + private boolean lastNode; + + /** + * 当前节点的儿子节点 + */ + @JSONField(ordinal = 8) + private List children = new ArrayList<>(); + + /** + * 当前节点的完整路径 + */ + @JSONField(ordinal = 9) + private String completeName; + + /** + * 当前节点的父级节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private TreeNode parent; + + /** + * 当前节点的子孙节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private List allChildren = new ArrayList<>(); + + public TreeNode(ITreeNode obj) { + this.nodeId = obj.getNodeId(); + this.nodeName = obj.getNodeName(); + this.parentNodeId = obj.getNodeParentId(); + this.orderNum = obj.getOrderNum(); + this.level = obj.getNodeLevel(); + } + + public TreeNode(TreeNode obj) { + this.orderNum = obj.getOrderNum(); + this.level = obj.getLevel(); + this.lastNodeNum = obj.getLastNodeNum(); + } + + public TreeNode() { + } + + public void addChild(TreeNode treeNode) { + this.children.add(treeNode); + } + + public void removeChild(TreeNode treeNode) { + this.children.remove(treeNode); + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getParentNodeId() { + return parentNodeId; + } + + public void setParentNodeId(String parentNodeId) { + this.parentNodeId = parentNodeId; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public TreeNode getParent() { + return parent; + } + + public void setParent(TreeNode parent) { + this.parent = parent; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public int getOrderNum() { + return orderNum; + } + + public void setOrderNum(int orderNum) { + this.orderNum = orderNum; + } + + public int getLastNodeNum() { + return lastNodeNum; + } + + public void setLastNodeNum(int lastNodeNum) { + this.lastNodeNum = lastNodeNum; + } + + public boolean isLastNode() { + return lastNode; + } + + public void setLastNode(boolean lastNode) { + this.lastNode = lastNode; + } + + public List getAllChildren() { + if (this.allChildren.isEmpty()) { + for (TreeNode treeNode : this.children) { + this.allChildren.add(treeNode); + this.allChildren.addAll(treeNode.getAllChildren()); + } + } + return this.allChildren; + } + + public String getCompleteName() { + return completeName; + } + + public void setCompleteName(String completeName) { + this.completeName = completeName; + } +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/OrdNamComparator.java b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/OrdNamComparator.java new file mode 100644 index 00000000..84416535 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/OrdNamComparator.java @@ -0,0 +1,21 @@ +package com.adc.da.utils.treetool; + +import java.util.Comparator; + +/** + * List 排序 Comparator + * @author david + */ +public class OrdNamComparator implements Comparator { + + @Override + public int compare(TreeNode t1, TreeNode t2) { + if (t1.getOrderNum() > t2.getOrderNum()) { + return 1; + } + if (t1.getOrderNum() < t2.getOrderNum()) { + return -1; + } + return t1.getNodeName().compareTo(t2.getNodeName()); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/Tree.java b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/Tree.java new file mode 100644 index 00000000..708f5a3b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/Tree.java @@ -0,0 +1,179 @@ +package com.adc.da.utils.treetool; + +import com.adc.da.utils.treetool.annotation.*; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; + +//import group.ipp.tree.util.annotation.TreeNodeLevel; +//import group.ipp.tree.util.annotation.TreeNodeName; +//import group.ipp.tree.util.annotation.TreeNodeOrder; +//import group.ipp.tree.util.annotation.TreeNodeParentId; + +/** + * 构建树形建构 + * + * @author David + */ +public class Tree { + /** + * 用于存放treeNode的Map + */ + private LinkedHashMap treeNodesMap = new LinkedHashMap<>(); + /** + * 用于存放treeNode的list + */ + private List treeNodesList = new ArrayList<>(); + + /** + * 构造方法 + * + * @param list + */ + public Tree(List list) { + initTreeNodeMap(list); + initTreeNodeList(); + } + + /** + * 将List对象数据转为TreeNodeMap + * + * @param list + */ + private void initTreeNodeMap(List list) { + TreeNode treeNode; + for (Object item : list) { + treeNode = new TreeNode(); + treeNode.setNodeId(getFieldValue(item, "TreeNodeId")); + treeNode.setNodeName(getFieldValue(item, "TreeNodeName")); + treeNode.setParentNodeId(getFieldValue(item, "TreeNodeParentId")); + if(StringUtils.isEmpty(getFieldValue(item, "TreeNodeLevel"))) { + treeNode.setLevel(0); + } else { + treeNode.setLevel(Integer.parseInt(getFieldValue(item, "TreeNodeLevel"))); + } + if(StringUtils.isEmpty(getFieldValue(item, "TreeNodeOrder"))) { + treeNode.setOrderNum(0); + } else { + treeNode.setOrderNum(Integer.parseInt(getFieldValue(item, "TreeNodeOrder"))); + } + treeNode.setLastNodeNum(1); + treeNode.setData(item); + treeNodesMap.put(treeNode.getNodeId(), treeNode); + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode parentTreeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (StringUtils.isEmpty(treeNode.getParentNodeId())) { + continue; + } + parentTreeNode = treeNodesMap.get(treeNode.getParentNodeId()); + if (parentTreeNode != null) { + treeNode.setParent(parentTreeNode); + parentTreeNode.addChild(treeNode); + // 按照orderNum排序 + Collections.sort(parentTreeNode.getChildren(), new OrdNamComparator()); + // 判断这个节点是否是最子节点 + if (treeNode.getChildren().size() == 0) { + treeNode.setLastNode(true); + } + // 计算每一个节点的最子节点的数量 + List children = parentTreeNode.getChildren(); + if (children.size() > 0) { + int sum = 0; + for (TreeNode treeNode2 : children) { + sum += treeNode2.getLastNodeNum(); + } + parentTreeNode.setLastNodeNum(sum); + } + } + } + } + + private String getFieldValue(Object obj, String type) { + Class clz = obj.getClass(); + Field[] fields = clz.getDeclaredFields(); + String value = null; + try { + for(Field field : fields){ + field.setAccessible(true); + switch (type){ + case "TreeNodeId": + if(field.isAnnotationPresent(TreeNodeId.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeParentId": + if(field.isAnnotationPresent(TreeNodeParentId.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeName": + if(field.isAnnotationPresent(TreeNodeName.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeOrder": + if(field.isAnnotationPresent(TreeNodeOrder.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeLevel": + if(field.isAnnotationPresent(TreeNodeLevel.class)) { + value = String.valueOf(field.get(obj)); + } + break; + default: + break; + } + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return value; + } + + /** + * 根据treeNodesMap转为treeNodesList + */ + private void initTreeNodeList() { + if (treeNodesList.size() > 0) { + return; + } + if (treeNodesMap.size() == 0) { + return; + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode treeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (treeNode.getParent() == null) { + this.treeNodesList.add(treeNode); + this.treeNodesList.addAll(treeNode.getAllChildren()); + } + } + } + + public List getTree() { + return this.treeNodesList; + } + + public List getRoot() { + List rootList = new ArrayList<>(); + if (this.treeNodesList.size() > 0) { + for (TreeNode node : treeNodesList) { + if (node.getParent() == null) { + rootList.add(node); + Collections.sort(rootList, new OrdNamComparator()); + } + } + } + return rootList; + } + + public TreeNode getTreeNode(String nodeId) { + return this.treeNodesMap.get(nodeId); + } +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/TreeNode.java b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/TreeNode.java new file mode 100644 index 00000000..dec442ad --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/TreeNode.java @@ -0,0 +1,202 @@ +package com.adc.da.utils.treetool; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author David + */ +public class TreeNode { + + /** + * 树节点ID + */ + @JSONField(ordinal = 1) + private String nodeId; + /** + * 树节点名称 + */ + @JSONField(ordinal = 2) + private String nodeName; + /** + * 父节点ID + */ + @JSONField(ordinal = 3) + private String parentNodeId; + /** + * 节点在树中的排序号 + */ + @JSONField(ordinal = 4) + private int orderNum; + /** + * 节点所在的层级 + */ + @JSONField(ordinal = 5) + private int level; + /** + * 最子节点的数量 + */ + @JSONField(ordinal = 6) + private int lastNodeNum; + + /** + * 是否是最子节点 + */ + @JSONField(ordinal = 7) + private boolean lastNode; + + private Object data; + + /** + * 当前节点的儿子节点 + */ + @JSONField(ordinal = 8) + private List children = new ArrayList<>(); + + /** + * 当前节点的完整路径 + */ + @JSONField(ordinal = 9) + private String completeName; + + /** + * 当前节点的父级节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private TreeNode parent; + + /** + * 当前节点的子孙节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private List allChildren = new ArrayList<>(); + + private int standFlag; + + public TreeNode(TreeNode obj) { + this.orderNum = obj.getOrderNum(); + this.level = obj.getLevel(); + this.lastNodeNum = obj.getLastNodeNum(); + } + + public TreeNode() { + } + + public void addChild(TreeNode treeNode) { + this.children.add(treeNode); + } + + public void removeChild(TreeNode treeNode) { + this.children.remove(treeNode); + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getParentNodeId() { + return parentNodeId; + } + + public void setParentNodeId(String parentNodeId) { + this.parentNodeId = parentNodeId; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public TreeNode getParent() { + return parent; + } + + public void setParent(TreeNode parent) { + this.parent = parent; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public int getOrderNum() { + return orderNum; + } + + public void setOrderNum(int orderNum) { + this.orderNum = orderNum; + } + + public int getLastNodeNum() { + return lastNodeNum; + } + + public void setLastNodeNum(int lastNodeNum) { + this.lastNodeNum = lastNodeNum; + } + + public boolean isLastNode() { + return lastNode; + } + + public void setLastNode(boolean lastNode) { + this.lastNode = lastNode; + } + + public List getAllChildren() { + if (this.allChildren.isEmpty()) { + for (TreeNode treeNode : this.children) { + this.allChildren.add(treeNode); + this.allChildren.addAll(treeNode.getAllChildren()); + } + } + return this.allChildren; + } + + public String getCompleteName() { + return completeName; + } + + public void setCompleteName(String completeName) { + this.completeName = completeName; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + + public int getStandFlag() { + return standFlag; + } + + public void setStandFlag(int standFlag) { + this.standFlag = standFlag; + } +} \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeId.java b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeId.java new file mode 100644 index 00000000..3395f5b3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeId.java @@ -0,0 +1,12 @@ +package com.adc.da.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeId { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeLevel.java b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeLevel.java new file mode 100644 index 00000000..38cfcb84 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeLevel.java @@ -0,0 +1,12 @@ +package com.adc.da.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeLevel { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeName.java b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeName.java new file mode 100644 index 00000000..b184b9e6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeName.java @@ -0,0 +1,12 @@ +package com.adc.da.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeName { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeOrder.java b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeOrder.java new file mode 100644 index 00000000..0f4299cf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeOrder.java @@ -0,0 +1,12 @@ +package com.adc.da.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeOrder { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeParentId.java b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeParentId.java new file mode 100644 index 00000000..e4864369 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/treetool/annotation/TreeNodeParentId.java @@ -0,0 +1,12 @@ +package com.adc.da.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeParentId { +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/AESUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/AESUtil.java new file mode 100644 index 00000000..181cd902 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/AESUtil.java @@ -0,0 +1,109 @@ +package com.adc.da.utils.util; + +import org.apache.commons.codec.binary.Base64; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class AESUtil { + private static final String KEY_ALGORITHM = "AES"; + private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算法 + + /** + * AES 加密操作 + * + * @param content 待加密内容 + * @param password 加密密码 + * @return 返回Base64转码后的加密数据 + */ + public static String encrypt(String content, String password) { + try { + Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器 + + byte[] byteContent = content.getBytes("utf-8"); + + cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password));// 初始化为加密模式的密码器 + + byte[] result = cipher.doFinal(byteContent);// 加密 + + return Base64.encodeBase64String(result);//通过Base64转码返回 + } catch (Exception ex) { + Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex); + } + + return null; + } + + /** + * AES 解密操作 + * + * @param content + * @param password + * @return + */ + public static String decrypt(String content, String password) { + + try { + //实例化 + Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); + + //使用密钥初始化,设置为解密模式 + cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password)); + + //执行操作 + byte[] result = cipher.doFinal(Base64.decodeBase64(content)); + + return new String(result, "utf-8"); + } catch (Exception ex) { + Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex); + } + + return null; + } + + /** + * 生成加密秘钥 + * + * @return + */ + private static SecretKeySpec getSecretKey(final String password) { + //返回生成指定算法密钥生成器的 KeyGenerator 对象 + KeyGenerator kg = null; + + try { + kg = KeyGenerator.getInstance(KEY_ALGORITHM); + + //AES 要求密钥长度为 128 + kg.init(128, new SecureRandom(password.getBytes())); + + //生成一个密钥 + SecretKey secretKey = kg.generateKey(); + + return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);// 转换为AES专用密钥 + } catch (NoSuchAlgorithmException ex) { + Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex); + } + + return null; + } + + public static void main(String[] args) { + String s = "hello,您好"; + + System.out.println("s:" + s); + + String s1 = AESUtil.encrypt(s, "1234"); + System.out.println("s1:" + s1); + + System.out.println("s2:"+AESUtil.decrypt(s1, "1234")); + + + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/BussStandExportUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/BussStandExportUtil.java new file mode 100644 index 00000000..ab1c43e1 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/BussStandExportUtil.java @@ -0,0 +1,203 @@ +package com.adc.da.utils.util; + +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStandExport; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 标准导出工具 + * @Author: yangxuenan + * date: 2020/9/16 14:09 + */ +public class BussStandExportUtil { + + private static final Logger logger = LoggerFactory.getLogger(BussStandExportUtil.class); + + + public static Workbook exportDatas (List datas) { + Workbook workbook = new XSSFWorkbook(); + try { + StringBuilder attrBud = new StringBuilder(); + List detailsEOList = InitStandAttrUtil.bussAttrFieldList; + Map attrInfoMap = new HashMap<>(); + for (SarStandAttrDetails detailsEO : detailsEOList) { + if (!InitStandAttrUtil.fileFieldListBuss.contains(detailsEO.getAttrField())) { + attrBud.append(detailsEO.getAttrName() + ","); + attrInfoMap.put(detailsEO.getAttrName(),detailsEO.getAttrField()); + } + } + String header = FieldConvertUtil.exportBaseFieldNamesBuss + "," + attrBud.toString(); + //创建工作表对象 + Sheet sheet = workbook.createSheet(); + // 创建头部 + createHeader(workbook,sheet,header); + // 创建数据 + createDatas(workbook,sheet,datas,header,attrInfoMap); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return workbook; + } + + public static void createHeader(Workbook workbook,Sheet sheet,String header){ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + Row rowHeader = sheet.createRow(0);//开始创建标题行 + if (StringUtils.isNotBlank(header)) { + String[] headerArr = header.split(","); + for (int i=0;i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); +// rowHeader.createCell(i).setCellStyle(cellStyle); + } + } + } + + public static void createDatas(Workbook workbook,Sheet sheet,List datas, + String header,Map attrInfoMap) throws Exception{ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + if (datas != null && !datas.isEmpty()) { + for (int i=0;i < datas.size(); i++) { + SarBussionessStandExport sarStandardsInfoEO = datas.get(i); + Row row = sheet.createRow(i+1); + String[] headerArr = header.split(","); + int sheetNum = 0; + for (String headerName : headerArr) { + String value = getValueByName(headerName,sarStandardsInfoEO,attrInfoMap); + if (StringUtils.isBlank(value) || "null".equals(value)) { + value = ""; + } + row.createCell(sheetNum).setCellValue(value); + sheetNum++; + } + } + } + } + + // 根据表头返回相应值 + public static String getValueByName (String name,SarBussionessStandExport sarStandardsInfoEO,Map attrInfoMap) throws Exception{ + String value = ""; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Map attrValueMap = sarStandardsInfoEO.getAttrInfoMap(); + switch (name) { + case "企标类别": + value = verifyBean(sarStandardsInfoEO.getStandSortShow()); + break; + case "企标编号": + value = verifyBean(sarStandardsInfoEO.getStandCode()); + break; + case "中文名称": + value = verifyBean(sarStandardsInfoEO.getStandName()); + break; + case "英文名称": + value = verifyBean(sarStandardsInfoEO.getStandEnName()); + break; + case "文本状态": + value = verifyBean(sarStandardsInfoEO.getStandStatusShow()); + break; + case "企标制修订状态": + value = verifyBean(sarStandardsInfoEO.getRevisionStatus()); + break; + case "企标实施日期": + String putTime=""; + if(sarStandardsInfoEO.getPutTime() != null){ + if (Date.class.equals(sarStandardsInfoEO.getPutTime())) { + putTime = sdf.format(sarStandardsInfoEO.getPutTime()); + + }else { + putTime=sarStandardsInfoEO.getPutTime(); + } + } + value = putTime; + break; + case "发布日期": + String issueTime=""; + if(sarStandardsInfoEO.getIssueTime() != null){ + if (Date.class.equals(sarStandardsInfoEO.getIssueTime().getClass())){ + issueTime = sdf.format(sarStandardsInfoEO.getIssueTime()); + }else { + issueTime=sarStandardsInfoEO.getIssueTime(); + } + } + value = issueTime; + break; + case "复审日期": + String field1 = attrInfoMap.get(name); + if (attrValueMap != null) { + value = String.valueOf(attrValueMap.get(field1)); + if (value.length()>10){ + value = value.substring(0,10); + } + } + break; + case "备案日期": + String field2 = attrInfoMap.get(name); + if (attrValueMap != null) { + value = String.valueOf(attrValueMap.get(field2)); + if (value.length()>10){ + value = value.substring(0,10); + } + } + break; + default: + String field = attrInfoMap.get(name); + if (attrValueMap != null) { + value = String.valueOf(attrValueMap.get(field)); + } + break; + } + return value; + } + + private static String verifyBean(String value){ + String val = ""; + if(StringUtils.isNotBlank(value)){ + if(value.contains("buss1_")){ + if("buss1_1".equals(value)){ + val = "技术标准-制定中"; + }else if("buss1_2".equals(value)){ + val = "技术标准-修订中"; + }else if("buss1_4".equals(value)){ + val = "技术标准-已完成"; + }else { + val = ""; + } + }else if(value.contains("buss2_")){ + switch (value) { + case "buss2_1": + val = "产品标准-制定中"; + break; + case "buss2_2": + val = "产品标准-修订中"; + break; + case "buss2_3": + val = "产品标准-修改中"; + break; + case "buss2_4": + val = "产品标准-已完成"; + break; + default: + val = ""; + break; + } + }else { + val =value; + } + }else { + val = ""; + } + return val; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompHanLPUtils.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompHanLPUtils.java new file mode 100644 index 00000000..6e5dae4a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompHanLPUtils.java @@ -0,0 +1,265 @@ +package com.adc.da.utils.util; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.extra.tokenizer.Result; +import cn.hutool.extra.tokenizer.TokenizerEngine; +import cn.hutool.extra.tokenizer.TokenizerUtil; +import cn.hutool.extra.tokenizer.Word; +import cn.hutool.extra.tokenizer.engine.hanlp.HanLPEngine; +import cn.hutool.extra.tokenizer.engine.jieba.JiebaEngine; +import com.hankcs.hanlp.HanLP; +import lombok.extern.slf4j.Slf4j; +import java.io.IOException; +import java.io.StringReader; +import java.text.NumberFormat; +import java.util.*; +import java.util.stream.Collectors; + +import org.jsoup.Jsoup; +import org.wltea.analyzer.core.IKSegmenter; +import org.wltea.analyzer.core.Lexeme; + + +@Slf4j +public class CompHanLPUtils { + + + /** + * 通过Ik 进行将句子分词 + * @param text + * @return + */ + public static Vector participleIk(String text) { + //对输入进行分词 + Vector str = new Vector<>(); + try { + StringReader reader = new StringReader(text); + //当为true时,分词器进行最大词长切分 + IKSegmenter ik = new IKSegmenter(reader, true); + Lexeme lexeme = null; + while ((lexeme = ik.next()) != null) { + str.add(lexeme.getLexemeText()); + } + if (str.size() == 0) { + return null; + } + //分词后 + log.info("str分词后:" + str); + } catch (IOException e) { + log.error(e.getMessage()); + } + return str; + } + + + /** + * 结巴分词 + * @param text + * @return + */ + public static Vector participleJieBa(String text) { + JiebaEngine engine = new JiebaEngine(); + Result results = engine.parse(text); + //输出:这 两个 方法 的 区别 在于 返回 值 + String result = CollUtil.join((Iterator) results, ","); + return new Vector<>(Arrays.asList(result.split(","))); + } + + + /** + * 中文分词 + * @param text + * @return + */ + public static Vector participleChinese(String text){ + //自动根据用户引入的分词库的jar来自动选择使用的引擎 + TokenizerEngine engine = TokenizerUtil.createEngine(); + //解析文本 + //String text = "这两个方法的区别在于返回值"; + Result results = engine.parse(text); + //输出:这 两个 方法 的 区别 在于 返回 值 + String result = CollUtil.join((Iterator)results, ","); + return new Vector<>(Arrays.asList(result.split(","))); + } + + /** + * 采用 HanLP 进行自定义分词 + */ + public static Vector participleHanLP(String text){ + TokenizerEngine engine = new HanLPEngine(); + //解析文本 + //String text = "这两个方法的区别在于返回值"; + Result results = engine.parse(text); + //输出:这 两个 方法 的 区别 在于 返回 值 + String result = CollUtil.join((Iterator)results, ","); + return new Vector<>(Arrays.asList(result.split(","))); + } + + + + /** + * Java利用hanlp完成语句相似度分析 + * @param sentenceOne + * @param sentenceTwo + * @return + */ + public static double findSimilarity(String sentenceOne, String sentenceTwo) { + List sentOneWords = getSplitWords(sentenceOne); + List sentTwoWords = getSplitWords(sentenceTwo); + List allWords = mergeList(sentOneWords, sentTwoWords); + int[] statisticOne = statistic(allWords, sentOneWords); + int[] statisticTwo = statistic(allWords, sentTwoWords); + double dividend = 0; + double divisor1 = 0; + double divisor2 = 0; + int length = statisticOne.length; + for (int i = 0; i < length; i++) { + dividend += statisticOne[i] * statisticTwo[i]; + divisor1 += Math.pow(statisticOne[i], 2); + divisor2 += Math.pow(statisticTwo[i], 2); + } + return dividend / (Math.sqrt(divisor1) * Math.sqrt(divisor2)); + } + + + private static int[] statistic(List allWords, List sentWords) { + int[] result = new int[allWords.size()]; + int size = allWords.size(); + for (int i = 0; i < size; i++) { + result[i] = Collections.frequency(sentWords, allWords.get(i)); + } + return result; + } + + + /** + * 去重 + * @param listOne + * @param listTwo + * @return + */ + private static List mergeList(List listOne, List listTwo) { + List result = new ArrayList<>(); + result.addAll(listOne); + result.addAll(listTwo); + return result.stream().distinct().collect(Collectors.toList()); + } + + + /** + * 过滤标签 + * @param sentence + * @return + */ + private static List getSplitWords(String sentence) { + // 去除掉html标签 + sentence = Jsoup.parse(sentence.replace(" ","")).body().text(); + // 标点符号会被单独分为一个Term,去除之 + return HanLP.segment(sentence).stream().map(a -> a.word).filter(s -> !"`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、? ".contains(s)).collect(Collectors.toList()); + } + + + + + public static void main(String[] args) { + String str1="6转向系\n" + + "6.1汽车(三轮汽车除外)的方向盘应设置于左侧,其他机动车的方向盘不得设置于右侧;专项作业车、教练车按需要可设置左右两个方向盘。有驾驶室的正三轮摩托车如使用方向盘转向,则方向盘中心立柱距车辆纵向中心平面的水平距离应小于等于200 mm;其他摩托车不得使用方向盘转向。\n" + + "6.2机动车的方向盘(或方向把)应转动灵活,操纵方便,无卡滞现象。机动车应设置转向限位装置。转向系统在任何操作位置上,不得与其他部件有干涉现象。\n" + + "6.3机动车(摩托车、三轮汽车、手扶拖拉机运输机组除外)正常行驶时,转向轮转向后应有一定的回正能力(允许有残余角),以使机动车具有稳定的直线行驶能力。\n" + + "6.4机动车方向盘的最大自由转动量应小于或等于:\n" + + "a) 最大设计车速大于或等于100 km/h 的机动车:15°\n" + + "b) 三轮汽车:35°;\n" + + "c) 其他机动车:25° 。\n" + + "6.5汽车(三轮汽车除外)应具有适度的不足转向特性。\n" + + "6.6三轮汽车、摩托车的转向轮向左或向右转角应小于等于:\n" + + "a)\t三轮汽车、三轮摩托车、正三轮轻便摩托车:45°;\n" + + "6)\t\t两轮普通摩托车、两轮轻便摩托车:48°。\n" + + "6.6机动车在平坦、硬实、干燥和清洁的道路上行驶不应跑偏,其方向盘(或方向把)不应有摆振、路感不灵或其他异常现象。\n" + + "6.8机动车在平坦、硬实、干燥和清洁的水泥或沥青道路上行驶,以10 km/h的速度在5 s之内沿螺旋线从直线行驶过渡到外圆直径为25 m的车辆通道圆行驶,施加于方向盘外缘的最大切向力应小于等于245 N。\n" + + "6.9专用校车应采用转向助力装置;其他机动车转向轴最大设计轴荷大于4 000 kg时,也应采用转向助力装置。装有转向助力装置的机动车,转向时其转向助力功能不得出现时有时无的现象,且转向助力装置失效时仍应具有用方向盘控制机动车的能力。装有电动转向助力装置的汽车,在产品使用说明书规定的正常使用状态下,应保证转向助力装置的电能供应。\n" + + "6.10汽车和汽车列车(不计具有作业功能的专用装置的突出部分)、轮式拖拉机运输机组应能在同一个车辆通道圆内通过,车辆通道圆的外圆直径认为25.00 m,车辆通道圆的内圆直径D2为10.60 m。 汽车和汽车列车、轮式拖拉机运输机组由直线行驶过渡到上述圆周运动时,任何部分超出直线行驶时的 车辆外侧面垂直面的值(外摆值)应小于等于0.80 m(对铰接客车和铰接式无轨电车外摆值应小于等于 1.20 m),其试验方法见GB 1589。\n" + + "6.11汽车(三轮汽车除外)的车轮定位应与该车型的技术要求一致。对前轴采用非独立悬架的汽车(前轴采用双转向轴时除外),其转向轮的横向侧滑量,用侧滑台检验时侧滑量值应在±5 m/km之间。\n" + + "6.12转向节及臂,转向横、直拉杆及球销不得有裂纹和损伤,并且转向球销不应松旷。对机动车进行改装或修理时横、直拉杆不得拼焊。\n" + + "6.13三轮汽车、摩托车的前减振器、上下联板和方向把不应有变形和裂损。\n"; + String str2="6转向系\n" + + "6.1汽车(三轮汽车除外)的方向盘应设置于左侧,其他机动车的方向盘不应设置于右侧;专项作业车、教练车按需要可设置左右两个方向盘。装有两个后轮、有驾驶室的正三轮摩托车如使用方向盘转向,则方向盘中心立柱距车辆纵向中心平面的水平距离应小于或等于200 mm ;其他摩托车不应使用方向盘转向。\n" + + "6.2机动车的方向盘(或方向把)应转动灵活,无卡滞现象。机动车应设置转向限位装置。转向系统在任何操作位置上,不应与其他部件有干涉现象。\n" + + "6.3机动车(摩托车、三轮汽车、手扶拖拉机运输机组除外〉正常行驶时,转向轮转向后应有一定的回正能力(允许有残余角),以使机动车具有稳定的直线行驶能力0\n" + + "6.4机动车方向盘的最大自由转动量应小于或等于:\n" + + "a) 最大设计车速大于或等于100 km/h 的机动车:15°\n" + + "b) 三轮汽车:35°;\n" + + "c) 其他机动车:25° 。\n" + + "6.5汽车(三轮汽车除外)应具有适度的不足转向特性。\n" + + "6.6三轮汽车、摩托车的转向轮向左或向右转角应小于或等于:\n" + + "a) 三轮汽车、三轮摩托车、正三轮轻便摩托车:45°;\n" + + "b)两轮普通摩托车、两轮轻便摩托车:48°0\n" + + "6.7机动车在平坦、硬实、干燥和清洁的道路上行驶不应跑偏,其方向盘(或方向把)不应有摆振等异常现象。\n" + + "6.8机动车在平坦、硬实、干燥和清洁的水泥或沥青道路上行驶,以10 km/h 的速度在5 s 之内沿螺旋线从直线行驶过渡到外圆直径为25m 的车辆通道圆行驶,施加于方向盘外缘的最大切向力应小于或等于245 N。\n" + + "6.9汽车(三轮汽车除外)的车轮定位应与该车型的技术要求一致。对前轴采用非独立悬架的汽车(前轴采用双转向轴时除外),其转向轮的横向侧滑量,用侧滑台检验时侧滑量值应小于或等于5 m/km。\n" + + "6.10 专用校车应采用转向助力装置;其他机动车转向轴最大设计轴荷大于4 000 kg 时,也应采用转向助力装置。装有转向助力装置的机动车,转向时其转向助力功能不应出现时有时无的现象,且转向助力装置失效时仍应具有用方向盘控制机动车的能力。\n" + + "6.11转向节及臂,转向横、直拉杆及球销应连接可靠,且不应有裂纹和损伤,并且转向球销不应松旷。对机动车进行改装或修理时横、直拉杆不应拼焊。\n" + + "6.12三轮汽车、摩托车的前减振器、上下联板和方向把不应有变形和裂损。"; + String str3="\n" + + "5车辆识别代号的标示位置\n" + + "5.1每辆车辆都应具有唯一的车辆识别代号,并永久保持地标示在车辆上,同一车辆上标示的所有的 车辆识别代号的字码构成与排列顺序应相同。除第9章规定的情况外,不得对已标示的车辆识别代号 进行变更。\n" + + "5.2车辆应在产品标牌上标示车辆识别代号(L1、L3类车辆可除外),产品标牌的型式、标示位置、标示要求应符合GB/T 18411的规定。\n" + + "5.3车辆应至少有一个车辆识别代号直接打刻在车架(无车架的车辆为车身主要承载且不能拆卸的部件)能防止锈烛、磨损的部位上。其中:\n" + + "a)\tM1类车辆的车辆识别代号应打刻在发动机舱内能防止替换的车辆结构件上,或打刻在车门 立柱上,如受结构限制没有打刻空间时也可打刻在右侧除行李舱外的车辆其他结构件上;\n" + + "b)\t最大设计总质量大于或等于12000 kg的货车及所有牵引杆挂车,车辆识别代号应打刻在右前轮纵向中心线前端纵梁外侧,如受结构限制也可打刻在右前轮纵向中心线附近纵梁外侧;\n" + + "c)\t半挂车和中置轴挂车的车辆识别代号应打刻在右前支腿前端纵梁外侧(无纵梁车辆除外);\n" + + "d)\t其他汽车和无纵梁挂车的车辆识别代号应打刻在车辆右侧前部的车辆结构件上,如受结构限 制也可打刻在右侧其他车辆结构件上。\n" + + "打刻车辆识别代号的部件不应采用打磨、挖补、垫片、凿改、重新涂漆(设计和制造上为保护打刻的 车辆识别代号而采取涂漆工艺的情形除外)等方式处理,从上(前)方观察时,打刻区域周边足够大面积 的表面不应有任何覆盖物,如有覆盖物,该覆盖物的表面应明确标示“车辆识别代号”或“VIN”字样,且覆盖物在不使用任何专用工具的情况下能直接取下(或揭开)及复原,以方便地观察到足够大的包括打刻区域的表面。\n" + + "注1:打刻区域周边足够大面积的表面(足够大的包括打刻区域的表面)是指打刻车辆识别代号的部件的全部表面,但所暴露表面能满足查看打刻车辆识别代号的部件有无挖补、重新焊接、粘贴等痕迹的需要时,也应视为满足要求。\n" + + "注2:对摩托车,打刻的车辆识别代号在不举升车辆的情形下可观察、拓印的,视为满足要求。\n" + + "打刻的车辆识别代号从上(前)方应易于观察、拓印,对于汽车和挂车还应能拍照。\n" + + "5.4具有电子控制单元的汽车,其至少有一个电子控制单元应不可篡改地存储车辆识别代号。\n" + + "5.5 M1、N1类车辆应在靠近风窗立柱的位置标示车辆识别代号,该车辆识别代号在白天不需移动任何部件从车外即能清晰识读。\n" + + "5.6除按照5.2、5.3、5.4、5.5规定标示车辆识别代号之外,类车辆还应在行李舱的易见部位标示车辆识别代号;且若车辆制造厂选取车辆识别代号作为车辆及部件识别标记的标识信息,还应按照GB 30509的规定,标示车辆识别代号。\n" + + "5.7除按照5.2、5.3、5.4规定标示车辆识别代号之外,最大设计总质量大于或等于12000 kg的栏板式、仓栅式、自卸式、罐式货车及最大设计总质量大于或等于10000 kg的栏板式、仓栅式、自卸式、罐式挂车还应在其货箱或常压罐体(或设计和制造上固定在货箱或常压罐体上且用于与车架连接的结构件)上打刻至少两个车辆识别代号。打刻的车辆识别代号应位于货箱(常压罐体)左、右两侧或前端面且易于拍照;且若打刻在货箱(常压罐体)左、右两侧时,打刻的车辆识别代号距货箱(常压罐体)前端面的距离应小于或等于1 000 mm,若打刻在左、右两侧连接结构件时应尽量靠近货箱(常压罐体)前端面。\n" + + "5.8车辆制造厂应至少在一种随车文件中标示车辆识别代号。"; + + String str4 = "\n" + + "5.3车辆的驱动\n" + + "5.3.1车辆不应靠自身动力驱动。\n" + + "5.3.2在碰撞瞬间,车辆应不冉承受任何附加转向或驱动装置的作用。\n" + + "5.3.3车辆到达壁障的路线在横向任一方向偏离理论轨迹均不应超过150 mm。\n" + + "5.4 试验速度\n" + + "在碰撞瞬间,车辆速度应为504 km/h。如果试验在更高的碰撞速度下进行并且车辆符合要求,也认为试验合格。\n" + + "5.5对前排座椅假人的测量\n" + + "5.5.1为确定性能指标必需的所有测量,均应采用符合附录D要求的测量系统。\n" + + "5.5.2不同的参数应通过具备下列CFC(通道的频率等级)的独立数据通道来记录。\n" + + "5.5.2.1对假人头部的测量\n" + + "重心处的加速度(a)由加速度的二维分量计算得出。加速度分量测量时,CFC为1000。\n" + + "5.5.2.2对假人颈部的测量\n" + + "5.5.2.2.1在头颈连接处测量的轴向张力和前后剪切力,CFC为1000。\n" + + "5.5.2.2.2在头颈连接处测量的对Y轴的弯矩,CFC为600。\n" + + "5.5.2.3对假人胸部的测量\n" + + "胸部变形测量时,CFC为180。\n" + + "5.5.2.4对假人大腿的测量\n" + + "轴向压缩力测量时,CFC为600。"; + + + double similarity = CompHanLPUtils.findSimilarity(str1, str2); + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMaximumIntegerDigits(2);//小数点前保留几位 + nf.setMinimumFractionDigits(2);// 小数点后保留几位 + String similarityDegree = nf.format(similarity); + System.out.println(similarityDegree); + System.out.println("======================================================"); + double similarity1 = CompHanLPUtils.findSimilarity(str1, str3); + System.out.println(similarity1); + + System.out.println("======================================================"); + double similarity2 = CompHanLPUtils.findSimilarity(str1, str4); + System.out.println(similarity2); + + + + System.out.println("======================================================"); + double similarity3 = CompHanLPUtils.findSimilarity(str3, str4); + System.out.println(similarity3); + + } + +} + diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompLDUtils.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompLDUtils.java new file mode 100644 index 00000000..defc314e --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompLDUtils.java @@ -0,0 +1,156 @@ +package com.adc.da.utils.util; + +public class CompLDUtils { + + private static int min(int one, int two, int three) { + int min = one; + if (two < min) { + min = two; + } + if (three < min) { + min = three; + } + return min; + } + + public static int ld(String str1, String str2) { + int d[][]; // 矩阵 + int n = str1.length(); + int m = str2.length(); + int i; // 遍历str1的 + int j; // 遍历str2的 + char ch1; // str1的 + char ch2; // str2的 + int temp; // 记录相同字符,在某个矩阵位置值的增量,不是0就是1 + if (n == 0) { + return m; + } + if (m == 0) { + return n; + } + d = new int[n + 1][m + 1]; + for (i = 0; i <= n; i++) { // 初始化第一列 + d[i][0] = i; + } + for (j = 0; j <= m; j++) { // 初始化第一行 + d[0][j] = j; + } + for (i = 1; i <= n; i++) { // 遍历str1 + ch1 = str1.charAt(i - 1); + // 去匹配str2 + for (j = 1; j <= m; j++) { + ch2 = str2.charAt(j - 1); + if (ch1 == ch2) { + temp = 0; + } else { + temp = 1; + } + // 左边+1,上边+1, 左上角+temp取最小 + d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1]+ temp); + } + } + return d[n][m]; + } + public static double sim(String str1, String str2) { + try { + double ld = (double)ld(str1, str2); + return (1-ld/(double)Math.max(str1.length(), str2.length())); + } catch (Exception e) { + return 0.1; + } + } + + public static void main(String[] args) { + String str1="6转向系\n" + + "6.1汽车(三轮汽车除外)的方向盘应设置于左侧,其他机动车的方向盘不得设置于右侧;专项作业车、教练车按需要可设置左右两个方向盘。有驾驶室的正三轮摩托车如使用方向盘转向,则方向盘中心立柱距车辆纵向中心平面的水平距离应小于等于200 mm;其他摩托车不得使用方向盘转向。\n" + + "6.2机动车的方向盘(或方向把)应转动灵活,操纵方便,无卡滞现象。机动车应设置转向限位装置。转向系统在任何操作位置上,不得与其他部件有干涉现象。\n" + + "6.3机动车(摩托车、三轮汽车、手扶拖拉机运输机组除外)正常行驶时,转向轮转向后应有一定的回正能力(允许有残余角),以使机动车具有稳定的直线行驶能力。\n" + + "6.4机动车方向盘的最大自由转动量应小于或等于:\n" + + "a) 最大设计车速大于或等于100 km/h 的机动车:15°\n" + + "b) 三轮汽车:35°;\n" + + "c) 其他机动车:25° 。\n" + + "6.5汽车(三轮汽车除外)应具有适度的不足转向特性。\n" + + "6.6三轮汽车、摩托车的转向轮向左或向右转角应小于等于:\n" + + "a)\t三轮汽车、三轮摩托车、正三轮轻便摩托车:45°;\n" + + "6)\t\t两轮普通摩托车、两轮轻便摩托车:48°。\n" + + "6.6机动车在平坦、硬实、干燥和清洁的道路上行驶不应跑偏,其方向盘(或方向把)不应有摆振、路感不灵或其他异常现象。\n" + + "6.8机动车在平坦、硬实、干燥和清洁的水泥或沥青道路上行驶,以10 km/h的速度在5 s之内沿螺旋线从直线行驶过渡到外圆直径为25 m的车辆通道圆行驶,施加于方向盘外缘的最大切向力应小于等于245 N。\n" + + "6.9专用校车应采用转向助力装置;其他机动车转向轴最大设计轴荷大于4 000 kg时,也应采用转向助力装置。装有转向助力装置的机动车,转向时其转向助力功能不得出现时有时无的现象,且转向助力装置失效时仍应具有用方向盘控制机动车的能力。装有电动转向助力装置的汽车,在产品使用说明书规定的正常使用状态下,应保证转向助力装置的电能供应。\n" + + "6.10汽车和汽车列车(不计具有作业功能的专用装置的突出部分)、轮式拖拉机运输机组应能在同一个车辆通道圆内通过,车辆通道圆的外圆直径认为25.00 m,车辆通道圆的内圆直径D2为10.60 m。 汽车和汽车列车、轮式拖拉机运输机组由直线行驶过渡到上述圆周运动时,任何部分超出直线行驶时的 车辆外侧面垂直面的值(外摆值)应小于等于0.80 m(对铰接客车和铰接式无轨电车外摆值应小于等于 1.20 m),其试验方法见GB 1589。\n" + + "6.11汽车(三轮汽车除外)的车轮定位应与该车型的技术要求一致。对前轴采用非独立悬架的汽车(前轴采用双转向轴时除外),其转向轮的横向侧滑量,用侧滑台检验时侧滑量值应在±5 m/km之间。\n" + + "6.12转向节及臂,转向横、直拉杆及球销不得有裂纹和损伤,并且转向球销不应松旷。对机动车进行改装或修理时横、直拉杆不得拼焊。\n" + + "6.13三轮汽车、摩托车的前减振器、上下联板和方向把不应有变形和裂损。\n"; + String str2="6转向系\n" + + "6.1汽车(三轮汽车除外)的方向盘应设置于左侧,其他机动车的方向盘不应设置于右侧;专项作业车、教练车按需要可设置左右两个方向盘。装有两个后轮、有驾驶室的正三轮摩托车如使用方向盘转向,则方向盘中心立柱距车辆纵向中心平面的水平距离应小于或等于200 mm ;其他摩托车不应使用方向盘转向。\n" + + "6.2机动车的方向盘(或方向把)应转动灵活,无卡滞现象。机动车应设置转向限位装置。转向系统在任何操作位置上,不应与其他部件有干涉现象。\n" + + "6.3机动车(摩托车、三轮汽车、手扶拖拉机运输机组除外〉正常行驶时,转向轮转向后应有一定的回正能力(允许有残余角),以使机动车具有稳定的直线行驶能力0\n" + + "6.4机动车方向盘的最大自由转动量应小于或等于:\n" + + "a) 最大设计车速大于或等于100 km/h 的机动车:15°\n" + + "b) 三轮汽车:35°;\n" + + "c) 其他机动车:25° 。\n" + + "6.5汽车(三轮汽车除外)应具有适度的不足转向特性。\n" + + "6.6三轮汽车、摩托车的转向轮向左或向右转角应小于或等于:\n" + + "a) 三轮汽车、三轮摩托车、正三轮轻便摩托车:45°;\n" + + "b)两轮普通摩托车、两轮轻便摩托车:48°0\n" + + "6.7机动车在平坦、硬实、干燥和清洁的道路上行驶不应跑偏,其方向盘(或方向把)不应有摆振等异常现象。\n" + + "6.8机动车在平坦、硬实、干燥和清洁的水泥或沥青道路上行驶,以10 km/h 的速度在5 s 之内沿螺旋线从直线行驶过渡到外圆直径为25m 的车辆通道圆行驶,施加于方向盘外缘的最大切向力应小于或等于245 N。\n" + + "6.9汽车(三轮汽车除外)的车轮定位应与该车型的技术要求一致。对前轴采用非独立悬架的汽车(前轴采用双转向轴时除外),其转向轮的横向侧滑量,用侧滑台检验时侧滑量值应小于或等于5 m/km。\n" + + "6.10 专用校车应采用转向助力装置;其他机动车转向轴最大设计轴荷大于4 000 kg 时,也应采用转向助力装置。装有转向助力装置的机动车,转向时其转向助力功能不应出现时有时无的现象,且转向助力装置失效时仍应具有用方向盘控制机动车的能力。\n" + + "6.11转向节及臂,转向横、直拉杆及球销应连接可靠,且不应有裂纹和损伤,并且转向球销不应松旷。对机动车进行改装或修理时横、直拉杆不应拼焊。\n" + + "6.12三轮汽车、摩托车的前减振器、上下联板和方向把不应有变形和裂损。"; + String str3="\n" + + "5车辆识别代号的标示位置\n" + + "5.1每辆车辆都应具有唯一的车辆识别代号,并永久保持地标示在车辆上,同一车辆上标示的所有的 车辆识别代号的字码构成与排列顺序应相同。除第9章规定的情况外,不得对已标示的车辆识别代号 进行变更。\n" + + "5.2车辆应在产品标牌上标示车辆识别代号(L1、L3类车辆可除外),产品标牌的型式、标示位置、标示要求应符合GB/T 18411的规定。\n" + + "5.3车辆应至少有一个车辆识别代号直接打刻在车架(无车架的车辆为车身主要承载且不能拆卸的部件)能防止锈烛、磨损的部位上。其中:\n" + + "a)\tM1类车辆的车辆识别代号应打刻在发动机舱内能防止替换的车辆结构件上,或打刻在车门 立柱上,如受结构限制没有打刻空间时也可打刻在右侧除行李舱外的车辆其他结构件上;\n" + + "b)\t最大设计总质量大于或等于12000 kg的货车及所有牵引杆挂车,车辆识别代号应打刻在右前轮纵向中心线前端纵梁外侧,如受结构限制也可打刻在右前轮纵向中心线附近纵梁外侧;\n" + + "c)\t半挂车和中置轴挂车的车辆识别代号应打刻在右前支腿前端纵梁外侧(无纵梁车辆除外);\n" + + "d)\t其他汽车和无纵梁挂车的车辆识别代号应打刻在车辆右侧前部的车辆结构件上,如受结构限 制也可打刻在右侧其他车辆结构件上。\n" + + "打刻车辆识别代号的部件不应采用打磨、挖补、垫片、凿改、重新涂漆(设计和制造上为保护打刻的 车辆识别代号而采取涂漆工艺的情形除外)等方式处理,从上(前)方观察时,打刻区域周边足够大面积 的表面不应有任何覆盖物,如有覆盖物,该覆盖物的表面应明确标示“车辆识别代号”或“VIN”字样,且覆盖物在不使用任何专用工具的情况下能直接取下(或揭开)及复原,以方便地观察到足够大的包括打刻区域的表面。\n" + + "注1:打刻区域周边足够大面积的表面(足够大的包括打刻区域的表面)是指打刻车辆识别代号的部件的全部表面,但所暴露表面能满足查看打刻车辆识别代号的部件有无挖补、重新焊接、粘贴等痕迹的需要时,也应视为满足要求。\n" + + "注2:对摩托车,打刻的车辆识别代号在不举升车辆的情形下可观察、拓印的,视为满足要求。\n" + + "打刻的车辆识别代号从上(前)方应易于观察、拓印,对于汽车和挂车还应能拍照。\n" + + "5.4具有电子控制单元的汽车,其至少有一个电子控制单元应不可篡改地存储车辆识别代号。\n" + + "5.5 M1、N1类车辆应在靠近风窗立柱的位置标示车辆识别代号,该车辆识别代号在白天不需移动任何部件从车外即能清晰识读。\n" + + "5.6除按照5.2、5.3、5.4、5.5规定标示车辆识别代号之外,类车辆还应在行李舱的易见部位标示车辆识别代号;且若车辆制造厂选取车辆识别代号作为车辆及部件识别标记的标识信息,还应按照GB 30509的规定,标示车辆识别代号。\n" + + "5.7除按照5.2、5.3、5.4规定标示车辆识别代号之外,最大设计总质量大于或等于12000 kg的栏板式、仓栅式、自卸式、罐式货车及最大设计总质量大于或等于10000 kg的栏板式、仓栅式、自卸式、罐式挂车还应在其货箱或常压罐体(或设计和制造上固定在货箱或常压罐体上且用于与车架连接的结构件)上打刻至少两个车辆识别代号。打刻的车辆识别代号应位于货箱(常压罐体)左、右两侧或前端面且易于拍照;且若打刻在货箱(常压罐体)左、右两侧时,打刻的车辆识别代号距货箱(常压罐体)前端面的距离应小于或等于1 000 mm,若打刻在左、右两侧连接结构件时应尽量靠近货箱(常压罐体)前端面。\n" + + "5.8车辆制造厂应至少在一种随车文件中标示车辆识别代号。"; + + String str4 = "\n" + + "5.3车辆的驱动\n" + + "5.3.1车辆不应靠自身动力驱动。\n" + + "5.3.2在碰撞瞬间,车辆应不冉承受任何附加转向或驱动装置的作用。\n" + + "5.3.3车辆到达壁障的路线在横向任一方向偏离理论轨迹均不应超过150 mm。\n" + + "5.4 试验速度\n" + + "在碰撞瞬间,车辆速度应为504 km/h。如果试验在更高的碰撞速度下进行并且车辆符合要求,也认为试验合格。\n" + + "5.5对前排座椅假人的测量\n" + + "5.5.1为确定性能指标必需的所有测量,均应采用符合附录D要求的测量系统。\n" + + "5.5.2不同的参数应通过具备下列CFC(通道的频率等级)的独立数据通道来记录。\n" + + "5.5.2.1对假人头部的测量\n" + + "重心处的加速度(a)由加速度的二维分量计算得出。加速度分量测量时,CFC为1000。\n" + + "5.5.2.2对假人颈部的测量\n" + + "5.5.2.2.1在头颈连接处测量的轴向张力和前后剪切力,CFC为1000。\n" + + "5.5.2.2.2在头颈连接处测量的对Y轴的弯矩,CFC为600。\n" + + "5.5.2.3对假人胸部的测量\n" + + "胸部变形测量时,CFC为180。\n" + + "5.5.2.4对假人大腿的测量\n" + + "轴向压缩力测量时,CFC为600。"; + + System.out.println("ld=" + ld(str1, str2)); + System.out.println("sim=" + sim(str1, str2)); + System.out.println("===================================================="); + System.out.println("ld=" + ld(str1, str3)); + System.out.println("sim=" + sim(str1, str3)); + + System.out.println("===================================================="); + System.out.println("ld=" + ld(str1, str4)); + System.out.println("sim=" + sim(str1, str4)); + + System.out.println("===================================================="); + System.out.println("ld=" + ld(str3, str4)); + System.out.println("sim=" + sim(str3, str4)); + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompareListUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompareListUtil.java new file mode 100644 index 00000000..e5b47a32 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/CompareListUtil.java @@ -0,0 +1,78 @@ +package com.adc.da.utils.util; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +/** + * @Description: + * @Author: super_liu + * date: 2020/12/9 10:00 + */ +public class CompareListUtil { + /** + * @param aList 本列表 + * @param bList 对照列表 + * @return 返回增加的元素组成的列表 + * @Description: 计算列表aList相对于bList的增加的情况,兼容任何类型元素的列表数据结构 + */ + public static List getAddaListThanbList(List aList, List bList) { + List addList = new ArrayList(); + for (int i = 0; i < aList.size(); i++) { + if (!myListContains(bList, aList.get(i))) { + addList.add(aList.get(i)); + } + } + return addList; + } + + /** + * @param aList 本列表 + * @param bList 对照列表 + * @return 返回减少的元素组成的列表 + * @Description: 计算列表aList相对于bList的减少的情况,兼容任何类型元素的列表数据结构 + */ + public static List getReduceaListThanbList(List aList, List bList) { + List reduceaList = new ArrayList(); + for (int i = 0; i < bList.size(); i++) { + if (!myListContains(aList, bList.get(i))) { + reduceaList.add(bList.get(i)); + } + } + return reduceaList; + } + + + /** + * @param sourceList 源列表 + * @param element 待判断的包含元素 + * @return 包含返回 true,不包含返回 false + * @Description: 判断元素element是否是sourceList列表中的一个子元素 + */ + private static boolean myListContains(List sourceList, E element) { + if (sourceList == null || element == null) { + return false; + } + if (sourceList.isEmpty()) { + return false; + } + for (E tip : sourceList) { + if (element.equals(tip)) { + return true; + } + } + return false; + } + + /** + * @param list + * @return list + * @Description: 去除list重复数据 + */ + public static List cleanDisRepet(List list) { + HashSet h = new HashSet(list); + list.clear(); + list.addAll(h); + return list; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/ConcatStringUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ConcatStringUtil.java new file mode 100644 index 00000000..25041407 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ConcatStringUtil.java @@ -0,0 +1,28 @@ +package com.adc.da.utils.util; + +import org.apache.commons.lang.StringUtils; + +import java.util.Set; + +/** + * @Description: 各种类型数据,拼接成逗号分隔字符串 + * @Author: super_liu + * date: 2020/11/23 14:30 + */ +public class ConcatStringUtil { + + public static String concatSet (Set setVal) { + String resultStr = ""; + if (setVal != null && !setVal.isEmpty()) { + for (String val : setVal) { + if (StringUtils.isNotBlank(val) && !"null".equals(val)) { + resultStr += val + ","; + } + } + if (StringUtils.isNotBlank(resultStr)) { + resultStr = resultStr.substring(0,resultStr.length()-1); + } + } + return resultStr; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/DateUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/DateUtil.java new file mode 100644 index 00000000..75cfcef4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/DateUtil.java @@ -0,0 +1,217 @@ +package com.adc.da.utils.util; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @Description: 判断是否为日期格式 + * @Author: super_liu + * date: 2020/12/31 11:25 + */ +public class DateUtil { + + public static String addDay(String date, Integer dayInt) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + try { + today = sdf.parse(date); + } catch (ParseException e) { + } + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(theCa.DATE, +dayInt);//最后一个数字30可改,30天的意思 + Date start = theCa.getTime(); + String startDate = sdf.format(start);//三十天之前日期 + + return startDate; + } + + public static Date nextMonthFirstDate() { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.add(Calendar.MONTH, 1); + return calendar.getTime(); + } + + public static Date printToDate(String date) { + Date date1 = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + try { + date1 = sdf.parse(date); + }catch (Exception e){ + e.getMessage(); + } + return date1; + } + + public static String printDateAll(Date date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return sdf.format(date); + } + + public static String printDate(Date date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + return sdf.format(date); + } + + public static String firstOneDay(String date) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + String startDate = ""; + try { + today = sdf.parse(date); + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(Calendar.MONTH, 0); + theCa.set(Calendar.DAY_OF_MONTH, 1); + Date start = theCa.getTime(); + startDate = sdf.format(start); + } catch (ParseException e) { + } + + + return startDate; + } + + public static String finOneDay(String date) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + String startDate = ""; + try { + today = sdf.parse(date); + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.set(Calendar.DAY_OF_MONTH, 1); + theCa.set(Calendar.DATE, theCa.getActualMaximum(Calendar.DATE)); + Date start = theCa.getTime(); + startDate = sdf.format(start); + } catch (ParseException e) { + } + + + return startDate; + } + + /** + * 取起始时间到结束时间 所有的时间 + * @param startTime + * @param endTime + * @return + */ + + public static List getAllDate(String startTime, String endTime) { + List list = new ArrayList(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar cal = Calendar.getInstance(); + + try { + cal.setTime(sdf.parse(startTime)); + for (long d = cal.getTimeInMillis(); d <= sdf.parse(endTime).getTime(); d = get_D_Plaus_1(cal)) { + list.add(sdf.format(d)); + } + } catch (ParseException e) { + System.out.println("date change err"); + } + + return list; + } + + public static long get_D_Plaus_1(Calendar c) { + c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1); + return c.getTimeInMillis(); + } + + /*** + * @Description: 判断多个日期是否都符合日期格式 + * @Author: super_liu + * @Date: 2020/12/31 11:31 + * @Param: [str] + * @Return: boolean + */ + public static boolean isValidDate(String str) throws Exception{ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String[] strArr = str.split(","); + for (String dateStr : strArr) { + try { + simpleDateFormat.setLenient(false); + simpleDateFormat.parse(dateStr); + } catch (Exception e){ + return false; + } + } + return true; + } + + /** + * utc 时间格式转换正常格式 2018-08-07T03:41:59Z + * @param utcTime 时间 + * @return + */ + public static String formatStrUTCToDateStr(String utcTime) { + SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.SIMPLIFIED_CHINESE); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + TimeZone utcZone = TimeZone.getTimeZone("UTC"); + sf.setTimeZone(utcZone); + Date date = null; + String dateTime = ""; + try { + date = sf.parse(utcTime); + dateTime = sdf.format(date); + } catch (ParseException e) { + e.printStackTrace(); + } + return dateTime; + } + + /** + * 将日期对象转换为指定的日期字符串 + * + * @param date 传入的日期对象 + * @param format 格式 + * @return 日期字符串 + * @author 赵肖云 + */ + public static String dateToString(Date date, String format) { + String string = ""; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); + if (date != null) { + string = simpleDateFormat.format(date); + } + return string; + } + + /** + * 将日期字符串转换为一个日期对象 + * + * @param datestr 日期字符串 + * @param format 格式 + * @return Date + * @author 赵肖云 + */ + public static Date stingToDate(String datestr, String format) throws ParseException { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); + return simpleDateFormat.parse(datestr); + } + + + public static void main(String[] args) { + System.out.println(printDate(new Date())); + System.out.println(firstOneDay(printDate(new Date()))); + System.out.println(finOneDay(printDate(new Date()))); + System.out.println(addDay(finOneDay(printDate(new Date())),2)); + System.out.println(printDate(nextMonthFirstDate())); + System.out.println(finOneDay(printDate(nextMonthFirstDate()))); + String utcTime = "2021-04-15T01:43:54.296Z"; + String time = formatStrUTCToDateStr("2021-04-15T01:43:54.296Z"); + System.out.println("utcTime 转换前:" + utcTime); + System.out.println("utcTime 转换后 time :" + time); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/DiffUtils.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/DiffUtils.java new file mode 100644 index 00000000..21c81917 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/DiffUtils.java @@ -0,0 +1,2311 @@ +package com.adc.da.utils.util; + + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class DiffUtils { + // Defaults. + // Set these on your diff_match_patch instance to override the defaults. + + /** + * Number of seconds to map a diff before giving up (0 for infinity). + */ + public float Diff_Timeout = 1.0f; + /** + * Cost of an empty edit operation in terms of edit characters. + */ + public short Diff_EditCost = 4; + /** + * The size beyond which the double-ended diff activates. + * Double-ending is twice as fast, but less accurate. + */ + public short Diff_DualThreshold = 32; + /** + * At what point is no match declared (0.0 = perfection, 1.0 = very loose). + */ + public float Match_Threshold = 0.5f; + /** + * How far to search for a match (0 = exact location, 1000+ = broad match). + * A match this many characters away from the expected location will add + * 1.0 to the score (0.0 is a perfect match). + */ + public int Match_Distance = 1000; + /** + * When deleting a large block of text (over ~64 characters), how close does + * the contents have to match the expected contents. (0.0 = perfection, + * 1.0 = very loose). Note that Match_Threshold controls how closely the + * end points of a delete need to match. + */ + public float Patch_DeleteThreshold = 0.5f; + /** + * Chunk size for context length. + */ + public short Patch_Margin = 4; + /** + * The number of bits in an int. + */ + private int Match_MaxBits = 32; + + /** + * Internal class for returning results from diff_linesToChars(). + * Other less paranoid languages just use a three-element array. + */ + protected static class LinesToCharsResult { + protected String chars1; + protected String chars2; + protected List lineArray; + + protected LinesToCharsResult(String chars1, String chars2, + List lineArray) { + this.chars1 = chars1; + this.chars2 = chars2; + this.lineArray = lineArray; + } + } + // DIFF FUNCTIONS + /** + * The data structure representing a diff is a Linked list of Diff objects: + * {Diff(Operation.DELETE, "Hello"), Diff(Operation.INSERT, "Goodbye"), + * Diff(Operation.EQUAL, " world.")} + * which means: delete "Hello", add "Goodbye" and keep " world." + */ + public enum Operation { + DELETE, INSERT, EQUAL + } + /** + * Find the differences between two texts. + * Run a faster slightly less optimal diff + * This method allows the 'checklines' of diff_main() to be optional. + * Most of the time checklines is wanted, so default to true. + * @param text1 Old string to be diffed. + * @param text2 New string to be diffed. + * @return Linked List of Diff objects. + */ + public LinkedList diff_main(String text1, String text2) { + return diff_main(text1, text2, true); + } + /** + * Find the differences between two texts. Simplifies the problem by + * stripping any common prefix or suffix off the texts before diffing. + * @param text1 Old string to be diffed. + * @param text2 New string to be diffed. + * @param checklines Speedup flag. If false, then don't run a + * line-level diff first to identify the changed areas. + * If true, then run a faster slightly less optimal diff + * @return Linked List of Diff objects. + */ + public LinkedList diff_main(String text1, String text2, boolean checklines) { + // Check for equality (speedup) + LinkedList diffs; + if (text1.equals(text2)) { + diffs = new LinkedList(); + diffs.add(new Diff(Operation.EQUAL, text1)); + return diffs; + } + // Trim off common prefix (speedup) + int commonlength = diff_commonPrefix(text1, text2); + String commonprefix = text1.substring(0, commonlength); + text1 = text1.substring(commonlength); + text2 = text2.substring(commonlength); + // Trim off common suffix (speedup) + commonlength = diff_commonSuffix(text1, text2); + String commonsuffix = text1.substring(text1.length() - commonlength); + text1 = text1.substring(0, text1.length() - commonlength); + text2 = text2.substring(0, text2.length() - commonlength); + // Compute the diff on the middle block + diffs = diff_compute(text1, text2, checklines); + + // Restore the prefix and suffix + if (commonprefix.length() != 0) { + diffs.addFirst(new Diff(Operation.EQUAL, commonprefix)); + } + if (commonsuffix.length() != 0) { + diffs.addLast(new Diff(Operation.EQUAL, commonsuffix)); + } + diff_cleanupMerge(diffs); + return diffs; + } + /** + * Find the differences between two texts. Assumes that the texts do not + * have any common prefix or suffix. + * @param text1 Old string to be diffed. + * @param text2 New string to be diffed. + * @param checklines Speedup flag. If false, then don't run a + * line-level diff first to identify the changed areas. + * If true, then run a faster slightly less optimal diff + * @return Linked List of Diff objects. + */ + protected LinkedList diff_compute(String text1, String text2,boolean checklines) { + LinkedList diffs = new LinkedList(); + if (text1.length() == 0) { + // Just add some text (speedup) + diffs.add(new Diff(Operation.INSERT, text2)); + return diffs; + } + if (text2.length() == 0) { + // Just delete some text (speedup) + diffs.add(new Diff(Operation.DELETE, text1)); + return diffs; + } + String longtext = text1.length() > text2.length() ? text1 : text2; + String shorttext = text1.length() > text2.length() ? text2 : text1; + int i = longtext.indexOf(shorttext); + if (i != -1) { + // Shorter text is inside the longer text (speedup) + Operation op = (text1.length() > text2.length()) ? + Operation.DELETE : Operation.INSERT; + diffs.add(new Diff(op, longtext.substring(0, i))); + diffs.add(new Diff(Operation.EQUAL, shorttext)); + diffs.add(new Diff(op, longtext.substring(i + shorttext.length()))); + return diffs; + } + longtext = shorttext = null; // Garbage collect. + // Check to see if the problem can be split in two. + String[] hm = diff_halfMatch(text1, text2); + if (hm != null) { + // A half-match was found, sort out the return data. + String text1_a = hm[0]; + String text1_b = hm[1]; + String text2_a = hm[2]; + String text2_b = hm[3]; + String mid_common = hm[4]; + // Send both pairs off for separate processing. + LinkedList diffs_a = diff_main(text1_a, text2_a, checklines); + LinkedList diffs_b = diff_main(text1_b, text2_b, checklines); + // Merge the results. + diffs = diffs_a; + diffs.add(new Diff(Operation.EQUAL, mid_common)); + diffs.addAll(diffs_b); + return diffs; + } + // Perform a real diff. + if (checklines && (text1.length() < 100 || text2.length() < 100)) { + checklines = false; // Too trivial for the overhead. + } + List linearray = null; + if (checklines) { + // Scan the text on a line-by-line basis first. + LinesToCharsResult b = diff_linesToChars(text1, text2); + text1 = b.chars1; + text2 = b.chars2; + linearray = b.lineArray; + } + diffs = diff_map(text1, text2); + if (diffs == null) { + // No acceptable result. + diffs = new LinkedList(); + diffs.add(new Diff(Operation.DELETE, text1)); + diffs.add(new Diff(Operation.INSERT, text2)); + } + if (checklines) { + // Convert the diff back to original text. + diff_charsToLines(diffs, linearray); + // Eliminate freak matches (e.g. blank lines) + diff_cleanupSemantic(diffs); + // Rediff any replacement blocks, this time character-by-character. + // Add a dummy entry at the end. + diffs.add(new Diff(Operation.EQUAL, "")); + int count_delete = 0; + int count_insert = 0; + String text_delete = ""; + String text_insert = ""; + ListIterator pointer = diffs.listIterator(); + Diff thisDiff = pointer.next(); + while (thisDiff != null) { + switch (thisDiff.operation) { + case INSERT: + count_insert++; + text_insert += thisDiff.text; + break; + case DELETE: + count_delete++; + text_delete += thisDiff.text; + break; + case EQUAL: + // Upon reaching an equality, check for prior redundancies. + if (count_delete >= 1 && count_insert >= 1) { + // Delete the offending records and add the merged ones. + pointer.previous(); + for (int j = 0; j < count_delete + count_insert; j++) { + pointer.previous(); + pointer.remove(); + } + for (Diff newDiff : diff_main(text_delete, text_insert, false)) { + pointer.add(newDiff); + } + } + count_insert = 0; + count_delete = 0; + text_delete = ""; + text_insert = ""; + break; + } + thisDiff = pointer.hasNext() ? pointer.next() : null; + } + diffs.removeLast(); // Remove the dummy entry at the end. + } + return diffs; + } + /** + * Split two texts into a list of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * @param text1 First string. + * @param text2 Second string. + * @return An object containing the encoded text1, the encoded text2 and + * the List of unique strings. The zeroth element of the List of + * unique strings is intentionally blank. + */ + protected LinesToCharsResult diff_linesToChars(String text1, String text2) { + List lineArray = new ArrayList(); + Map lineHash = new HashMap(); + // e.g. linearray[4] == "Hello\n" + // e.g. linehash.get("Hello\n") == 4 + // "\x00" is a valid character, but various debuggers don't like it. + // So we'll insert a junk entry to avoid generating a null character. + lineArray.add(""); + String chars1 = diff_linesToCharsMunge(text1, lineArray, lineHash); + String chars2 = diff_linesToCharsMunge(text2, lineArray, lineHash); + return new LinesToCharsResult(chars1, chars2, lineArray); + } + /** + * Split a text into a list of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * @param text String to encode. + * @param lineArray List of unique strings. + * @param lineHash Map of strings to indices. + * @return Encoded string. + */ + private String diff_linesToCharsMunge(String text, List lineArray, + Map lineHash) { + int lineStart = 0; + int lineEnd = -1; + String line; + StringBuilder chars = new StringBuilder(); + // Walk the text, pulling out a substring for each line. + // text.split('\n') would would temporarily double our memory footprint. + // Modifying text would create many large strings to garbage collect. + while (lineEnd < text.length() - 1) { + lineEnd = text.indexOf('\n', lineStart); + if (lineEnd == -1) { + lineEnd = text.length() - 1; + } + line = text.substring(lineStart, lineEnd + 1); + lineStart = lineEnd + 1; + + if (lineHash.containsKey(line)) { + chars.append(String.valueOf((char) (int) lineHash.get(line))); + } else { + lineArray.add(line); + lineHash.put(line, lineArray.size() - 1); + chars.append(String.valueOf((char) (lineArray.size() - 1))); + } + } + return chars.toString(); + } + /** + * Rehydrate the text in a diff from a string of line hashes to real lines of + * text. + * @param diffs LinkedList of Diff objects. + * @param lineArray List of unique strings. + */ + protected void diff_charsToLines(LinkedList diffs, + List lineArray) { + StringBuilder text; + for (Diff diff : diffs) { + text = new StringBuilder(); + for (int y = 0; y < diff.text.length(); y++) { + text.append(lineArray.get(diff.text.charAt(y))); + } + diff.text = text.toString(); + } + } + /** + * Explore the intersection points between the two texts. + * @param text1 Old string to be diffed. + * @param text2 New string to be diffed. + * @return LinkedList of Diff objects or null if no diff available. + */ + protected LinkedList diff_map(String text1, String text2) { + long ms_end = System.currentTimeMillis() + (long) (Diff_Timeout * 1000); + // Cache the text lengths to prevent multiple calls. + int text1_length = text1.length(); + int text2_length = text2.length(); + int max_d = text1_length + text2_length - 1; + boolean doubleEnd = Diff_DualThreshold * 2 < max_d; + List> v_map1 = new ArrayList>(); + List> v_map2 = new ArrayList>(); + Map v1 = new HashMap(); + Map v2 = new HashMap(); + v1.put(1, 0); + v2.put(1, 0); + int x, y; + Long footstep = 0L; // Used to track overlapping paths. + Map footsteps = new HashMap(); + boolean done = false; + // If the total number of characters is odd, then the front path will + // collide with the reverse path. + boolean front = ((text1_length + text2_length) % 2 == 1); + for (int d = 0; d < max_d; d++) { + // Bail out if timeout reached. + if (Diff_Timeout > 0 && System.currentTimeMillis() > ms_end) { + return null; + } + + // Walk the front path one step. + v_map1.add(new HashSet()); // Adds at index 'd'. + for (int k = -d; k <= d; k += 2) { + if (k == -d || k != d && v1.get(k - 1) < v1.get(k + 1)) { + x = v1.get(k + 1); + } else { + x = v1.get(k - 1) + 1; + } + y = x - k; + if (doubleEnd) { + footstep = diff_footprint(x, y); + if (front && (footsteps.containsKey(footstep))) { + done = true; + } + if (!front) { + footsteps.put(footstep, d); + } + } + while (!done && x < text1_length && y < text2_length + && text1.charAt(x) == text2.charAt(y)) { + x++; + y++; + if (doubleEnd) { + footstep = diff_footprint(x, y); + if (front && (footsteps.containsKey(footstep))) { + done = true; + } + if (!front) { + footsteps.put(footstep, d); + } + } + } + v1.put(k, x); + v_map1.get(d).add(diff_footprint(x, y)); + if (x == text1_length && y == text2_length) { + // Reached the end in single-path mode. + return diff_path1(v_map1, text1, text2); + } else if (done) { + // Front path ran over reverse path. + v_map2 = v_map2.subList(0, footsteps.get(footstep) + 1); + LinkedList a = diff_path1(v_map1, text1.substring(0, x), + text2.substring(0, y)); + a.addAll(diff_path2(v_map2, text1.substring(x), text2.substring(y))); + return a; + } + } + if (doubleEnd) { + // Walk the reverse path one step. + v_map2.add(new HashSet()); // Adds at index 'd'. + for (int k = -d; k <= d; k += 2) { + if (k == -d || k != d && v2.get(k - 1) < v2.get(k + 1)) { + x = v2.get(k + 1); + } else { + x = v2.get(k - 1) + 1; + } + y = x - k; + footstep = diff_footprint(text1_length - x, text2_length - y); + if (!front && (footsteps.containsKey(footstep))) { + done = true; + } + if (front) { + footsteps.put(footstep, d); + } + while (!done && x < text1_length && y < text2_length + && text1.charAt(text1_length - x - 1) + == text2.charAt(text2_length - y - 1)) { + x++; + y++; + footstep = diff_footprint(text1_length - x, text2_length - y); + if (!front && (footsteps.containsKey(footstep))) { + done = true; + } + if (front) { + footsteps.put(footstep, d); + } + } + v2.put(k, x); + v_map2.get(d).add(diff_footprint(x, y)); + if (done) { + // Reverse path ran over front path. + v_map1 = v_map1.subList(0, footsteps.get(footstep) + 1); + LinkedList a + = diff_path1(v_map1, text1.substring(0, text1_length - x), + text2.substring(0, text2_length - y)); + a.addAll(diff_path2(v_map2, text1.substring(text1_length - x), + text2.substring(text2_length - y))); + return a; + } + } + } + } + // Number of diffs equals number of characters, no commonality at all. + return null; + } + /** + * Work from the middle back to the start to determine the path. + * @param v_map List of path sets. + * @param text1 Old string fragment to be diffed. + * @param text2 New string fragment to be diffed. + * @return LinkedList of Diff objects. + */ + protected LinkedList diff_path1(List> v_map, + String text1, String text2) { + LinkedList path = new LinkedList(); + int x = text1.length(); + int y = text2.length(); + Operation last_op = null; + for (int d = v_map.size() - 2; d >= 0; d--) { + while (true) { + if (v_map.get(d).contains(diff_footprint(x - 1, y))) { + x--; + if (last_op == Operation.DELETE) { + path.getFirst().text = text1.charAt(x) + path.getFirst().text; + } else { + path.addFirst(new Diff(Operation.DELETE, + text1.substring(x, x + 1))); + } + last_op = Operation.DELETE; + break; + } else if (v_map.get(d).contains(diff_footprint(x, y - 1))) { + y--; + if (last_op == Operation.INSERT) { + path.getFirst().text = text2.charAt(y) + path.getFirst().text; + } else { + path.addFirst(new Diff(Operation.INSERT, + text2.substring(y, y + 1))); + } + last_op = Operation.INSERT; + break; + } else { + x--; + y--; + assert (text1.charAt(x) == text2.charAt(y)) + : "No diagonal. Can't happen. (diff_path1)"; + if (last_op == Operation.EQUAL) { + path.getFirst().text = text1.charAt(x) + path.getFirst().text; + } else { + path.addFirst(new Diff(Operation.EQUAL, text1.substring(x, x + 1))); + } + last_op = Operation.EQUAL; + } + } + } + return path; + } + /** + * Work from the middle back to the end to determine the path. + * @param v_map List of path sets. + * @param text1 Old string fragment to be diffed. + * @param text2 New string fragment to be diffed. + * @return LinkedList of Diff objects. + */ + protected LinkedList diff_path2(List> v_map, + String text1, String text2) { + LinkedList path = new LinkedList(); + int x = text1.length(); + int y = text2.length(); + Operation last_op = null; + for (int d = v_map.size() - 2; d >= 0; d--) { + while (true) { + if (v_map.get(d).contains(diff_footprint(x - 1, y))) { + x--; + if (last_op == Operation.DELETE) { + path.getLast().text += text1.charAt(text1.length() - x - 1); + } else { + path.addLast(new Diff(Operation.DELETE, + text1.substring(text1.length() - x - 1, text1.length() - x))); + } + last_op = Operation.DELETE; + break; + } else if (v_map.get(d).contains(diff_footprint(x, y - 1))) { + y--; + if (last_op == Operation.INSERT) { + path.getLast().text += text2.charAt(text2.length() - y - 1); + } else { + path.addLast(new Diff(Operation.INSERT, + text2.substring(text2.length() - y - 1, text2.length() - y))); + } + last_op = Operation.INSERT; + break; + } else { + x--; + y--; + assert (text1.charAt(text1.length() - x - 1) + == text2.charAt(text2.length() - y - 1)) + : "No diagonal. Can't happen. (diff_path2)"; + if (last_op == Operation.EQUAL) { + path.getLast().text += text1.charAt(text1.length() - x - 1); + } else { + path.addLast(new Diff(Operation.EQUAL, + text1.substring(text1.length() - x - 1, text1.length() - x))); + } + last_op = Operation.EQUAL; + } + } + } + return path; + } + /** + * Compute a good hash of two integers. + * @param x First int. + * @param y Second int. + * @return A long made up of both ints. + */ + protected long diff_footprint(int x, int y) { + // The maximum size for a long is 9,223,372,036,854,775,807 + // The maximum size for an int is 2,147,483,647 + // Two ints fit nicely in one long. + long result = x; + result = result << 32; + result += y; + return result; + } + /** + * Determine the common prefix of two strings + * @param text1 First string. + * @param text2 Second string. + * @return The number of characters common to the start of each string. + */ + public int diff_commonPrefix(String text1, String text2) { + // Performance analysis: http://neil.fraser.name/news/2007/10/09/ + int n = Math.min(text1.length(), text2.length()); + for (int i = 0; i < n; i++) { + if (text1.charAt(i) != text2.charAt(i)) { + return i; + } + } + return n; + } + /** + * Determine the common suffix of two strings + * @param text1 First string. + * @param text2 Second string. + * @return The number of characters common to the end of each string. + */ + public int diff_commonSuffix(String text1, String text2) { + // Performance analysis: http://neil.fraser.name/news/2007/10/09/ + int text1_length = text1.length(); + int text2_length = text2.length(); + int n = Math.min(text1_length, text2_length); + for (int i = 1; i <= n; i++) { + if (text1.charAt(text1_length - i) != text2.charAt(text2_length - i)) { + return i - 1; + } + } + return n; + } + /** + * Do the two texts share a substring which is at least half the length of + * the longer text? + * @param text1 First string. + * @param text2 Second string. + * @return Five element String array, containing the prefix of text1, the + * suffix of text1, the prefix of text2, the suffix of text2 and the + * common middle. Or null if there was no match. + */ + protected String[] diff_halfMatch(String text1, String text2) { + String longtext = text1.length() > text2.length() ? text1 : text2; + String shorttext = text1.length() > text2.length() ? text2 : text1; + if (longtext.length() < 10 || shorttext.length() < 1) { + return null; // Pointless. + } + + // First check if the second quarter is the seed for a half-match. + String[] hm1 = diff_halfMatchI(longtext, shorttext, + (longtext.length() + 3) / 4); + // Check again based on the third quarter. + String[] hm2 = diff_halfMatchI(longtext, shorttext, + (longtext.length() + 1) / 2); + String[] hm; + if (hm1 == null && hm2 == null) { + return null; + } else if (hm2 == null) { + hm = hm1; + } else if (hm1 == null) { + hm = hm2; + } else { + // Both matched. Select the longest. + hm = hm1[4].length() > hm2[4].length() ? hm1 : hm2; + } + // A half-match was found, sort out the return data. + if (text1.length() > text2.length()) { + return hm; + //return new String[]{hm[0], hm[1], hm[2], hm[3], hm[4]}; + } else { + return new String[]{hm[2], hm[3], hm[0], hm[1], hm[4]}; + } + } + /** + * Does a substring of shorttext exist within longtext such that the + * substring is at least half the length of longtext? + * @param longtext Longer string. + * @param shorttext Shorter string. + * @param i Start index of quarter length substring within longtext. + * @return Five element String array, containing the prefix of longtext, the + * suffix of longtext, the prefix of shorttext, the suffix of shorttext + * and the common middle. Or null if there was no match. + */ + private String[] diff_halfMatchI(String longtext, String shorttext, int i) { + // Start with a 1/4 length substring at position i as a seed. + String seed = longtext.substring(i, i + longtext.length() / 4); + int j = -1; + String best_common = ""; + String best_longtext_a = "", best_longtext_b = ""; + String best_shorttext_a = "", best_shorttext_b = ""; + while ((j = shorttext.indexOf(seed, j + 1)) != -1) { + int prefixLength = diff_commonPrefix(longtext.substring(i), shorttext.substring(j)); + int suffixLength = diff_commonSuffix(longtext.substring(0, i), + shorttext.substring(0, j)); + if (best_common.length() < suffixLength + prefixLength) { + best_common = shorttext.substring(j - suffixLength, j) + + shorttext.substring(j, j + prefixLength); + best_longtext_a = longtext.substring(0, i - suffixLength); + best_longtext_b = longtext.substring(i + prefixLength); + best_shorttext_a = shorttext.substring(0, j - suffixLength); + best_shorttext_b = shorttext.substring(j + prefixLength); + } + } + if (best_common.length() >= longtext.length() / 2) { + return new String[]{best_longtext_a, best_longtext_b, + best_shorttext_a, best_shorttext_b, best_common}; + } else { + return null; + } + } + /** + * Reduce the number of edits by eliminating semantically trivial equalities. + * @param diffs LinkedList of Diff objects. + */ + public void diff_cleanupSemantic(LinkedList diffs) { + if (diffs.isEmpty()) { + return; + } + boolean changes = false; + Stack equalities = new Stack(); // Stack of qualities. + String lastequality = null; // Always equal to equalities.lastElement().text + ListIterator pointer = diffs.listIterator(); + // Number of characters that changed prior to the equality. + int length_changes1 = 0; + // Number of characters that changed after the equality. + int length_changes2 = 0; + Diff thisDiff = pointer.next(); + while (thisDiff != null) { + if (thisDiff.operation == Operation.EQUAL) { + // equality found + equalities.push(thisDiff); + length_changes1 = length_changes2; + length_changes2 = 0; + lastequality = thisDiff.text; + } else { + // an insertion or deletion + length_changes2 += thisDiff.text.length(); + if (lastequality != null && (lastequality.length() <= length_changes1) + && (lastequality.length() <= length_changes2)) { + //System.out.println("Splitting: '" + lastequality + "'"); + // Walk back to offending equality. + while (thisDiff != equalities.lastElement()) { + thisDiff = pointer.previous(); + } + pointer.next(); + // Replace equality with a delete. + pointer.set(new Diff(Operation.DELETE, lastequality)); + // Insert a corresponding an insert. + pointer.add(new Diff(Operation.INSERT, lastequality)); + + equalities.pop(); // Throw away the equality we just deleted. + if (!equalities.empty()) { + // Throw away the previous equality (it needs to be reevaluated). + equalities.pop(); + } + if (equalities.empty()) { + // There are no previous equalities, walk back to the start. + while (pointer.hasPrevious()) { + pointer.previous(); + } + } else { + // There is a safe equality we can fall back to. + thisDiff = equalities.lastElement(); + while (thisDiff != pointer.previous()) { + // Intentionally empty loop. + } + } + length_changes1 = 0; // Reset the counters. + length_changes2 = 0; + lastequality = null; + changes = true; + } + } + thisDiff = pointer.hasNext() ? pointer.next() : null; + } + if (changes) { + diff_cleanupMerge(diffs); + } + diff_cleanupSemanticLossless(diffs); + } + /** + * Look for single edits surrounded on both sides by equalities + * which can be shifted sideways to align the edit to a word boundary. + * e.g: The cat came. -> The cat came. + * @param diffs LinkedList of Diff objects. + */ + public void diff_cleanupSemanticLossless(LinkedList diffs) { + String equality1, edit, equality2; + String commonString; + int commonOffset; + int score, bestScore; + String bestEquality1, bestEdit, bestEquality2; + // Create a new iterator at the start. + ListIterator pointer = diffs.listIterator(); + Diff prevDiff = pointer.hasNext() ? pointer.next() : null; + Diff thisDiff = pointer.hasNext() ? pointer.next() : null; + Diff nextDiff = pointer.hasNext() ? pointer.next() : null; + // Intentionally ignore the first and last element (don't need checking). + while (nextDiff != null) { + if (prevDiff.operation == Operation.EQUAL && + nextDiff.operation == Operation.EQUAL) { + // This is a single edit surrounded by equalities. + equality1 = prevDiff.text; + edit = thisDiff.text; + equality2 = nextDiff.text; + + // First, shift the edit as far left as possible. + commonOffset = diff_commonSuffix(equality1, edit); + if (commonOffset != 0) { + commonString = edit.substring(edit.length() - commonOffset); + equality1 = equality1.substring(0, equality1.length() - commonOffset); + edit = commonString + edit.substring(0, edit.length() - commonOffset); + equality2 = commonString + equality2; + } + // Second, step character by character right, looking for the best fit. + bestEquality1 = equality1; + bestEdit = edit; + bestEquality2 = equality2; + bestScore = diff_cleanupSemanticScore(equality1, edit) + + diff_cleanupSemanticScore(edit, equality2); + while (edit.length() != 0 && equality2.length() != 0 + && edit.charAt(0) == equality2.charAt(0)) { + equality1 += edit.charAt(0); + edit = edit.substring(1) + equality2.charAt(0); + equality2 = equality2.substring(1); + score = diff_cleanupSemanticScore(equality1, edit) + + diff_cleanupSemanticScore(edit, equality2); + // The >= encourages trailing rather than leading whitespace on edits. + if (score >= bestScore) { + bestScore = score; + bestEquality1 = equality1; + bestEdit = edit; + bestEquality2 = equality2; + } + } + + if (!prevDiff.text.equals(bestEquality1)) { + // We have an improvement, save it back to the diff. + if (bestEquality1.length() != 0) { + prevDiff.text = bestEquality1; + } else { + pointer.previous(); // Walk past nextDiff. + pointer.previous(); // Walk past thisDiff. + pointer.previous(); // Walk past prevDiff. + pointer.remove(); // Delete prevDiff. + pointer.next(); // Walk past thisDiff. + pointer.next(); // Walk past nextDiff. + } + thisDiff.text = bestEdit; + if (bestEquality2.length() != 0) { + nextDiff.text = bestEquality2; + } else { + pointer.remove(); // Delete nextDiff. + nextDiff = thisDiff; + thisDiff = prevDiff; + } + } + } + prevDiff = thisDiff; + thisDiff = nextDiff; + nextDiff = pointer.hasNext() ? pointer.next() : null; + } + } + /** + * Given two strings, compute a score representing whether the internal + * boundary falls on logical boundaries. + * Scores range from 5 (best) to 0 (worst). + * @param one First string. + * @param two Second string. + * @return The score. + */ + private int diff_cleanupSemanticScore(String one, String two) { + if (one.length() == 0 || two.length() == 0) { + // Edges are the best. + return 5; + } + // Each port of this function behaves slightly differently due to + // subtle differences in each language's definition of things like + // 'whitespace'. Since this function's purpose is largely cosmetic, + // the choice has been made to use each language's native features + // rather than force total conformity. + int score = 0; + // One point for non-alphanumeric. + if (!Character.isLetterOrDigit(one.charAt(one.length() - 1)) + || !Character.isLetterOrDigit(two.charAt(0))) { + score++; + // Two points for whitespace. + if (Character.isWhitespace(one.charAt(one.length() - 1)) + || Character.isWhitespace(two.charAt(0))) { + score++; + // Three points for line breaks. + if (Character.getType(one.charAt(one.length() - 1)) == Character.CONTROL + || Character.getType(two.charAt(0)) == Character.CONTROL) { + score++; + // Four points for blank lines. + if (BLANKLINEEND.matcher(one).find() + || BLANKLINESTART.matcher(two).find()) { + score++; + } + } + } + } + return score; + } + private Pattern BLANKLINEEND + = Pattern.compile("\\n\\r?\\n\\Z", Pattern.DOTALL); + private Pattern BLANKLINESTART + = Pattern.compile("\\A\\r?\\n\\r?\\n", Pattern.DOTALL); + /** + * Reduce the number of edits by eliminating operationally trivial equalities. + * @param diffs LinkedList of Diff objects. + */ + public void diff_cleanupEfficiency(LinkedList diffs) { + if (diffs.isEmpty()) { + return; + } + boolean changes = false; + Stack equalities = new Stack(); // Stack of equalities. + String lastequality = null; // Always equal to equalities.lastElement().text + ListIterator pointer = diffs.listIterator(); + // Is there an insertion operation before the last equality. + boolean pre_ins = false; + // Is there a deletion operation before the last equality. + boolean pre_del = false; + // Is there an insertion operation after the last equality. + boolean post_ins = false; + // Is there a deletion operation after the last equality. + boolean post_del = false; + Diff thisDiff = pointer.next(); + Diff safeDiff = thisDiff; // The last Diff that is known to be unsplitable. + while (thisDiff != null) { + if (thisDiff.operation == Operation.EQUAL) { + // equality found + if (thisDiff.text.length() < Diff_EditCost && (post_ins || post_del)) { + // Candidate found. + equalities.push(thisDiff); + pre_ins = post_ins; + pre_del = post_del; + lastequality = thisDiff.text; + } else { + // Not a candidate, and can never become one. + equalities.clear(); + lastequality = null; + safeDiff = thisDiff; + } + post_ins = post_del = false; + } else { + // an insertion or deletion + if (thisDiff.operation == Operation.DELETE) { + post_del = true; + } else { + post_ins = true; + } + /* + * Five types to be split: + * ABXYCD + * AXCD + * ABXC + * AXCD + * ABXC + */ + if (lastequality != null + && ((pre_ins && pre_del && post_ins && post_del) + || ((lastequality.length() < Diff_EditCost / 2) + && ((pre_ins ? 1 : 0) + (pre_del ? 1 : 0) + + (post_ins ? 1 : 0) + (post_del ? 1 : 0)) == 3))) { + //System.out.println("Splitting: '" + lastequality + "'"); + // Walk back to offending equality. + while (thisDiff != equalities.lastElement()) { + thisDiff = pointer.previous(); + } + pointer.next(); + + // Replace equality with a delete. + pointer.set(new Diff(Operation.DELETE, lastequality)); + // Insert a corresponding an insert. + pointer.add(thisDiff = new Diff(Operation.INSERT, lastequality)); + + equalities.pop(); // Throw away the equality we just deleted. + lastequality = null; + if (pre_ins && pre_del) { + // No changes made which could affect previous entry, keep going. + post_ins = post_del = true; + equalities.clear(); + safeDiff = thisDiff; + } else { + if (!equalities.empty()) { + // Throw away the previous equality (it needs to be reevaluated). + equalities.pop(); + } + if (equalities.empty()) { + // There are no previous questionable equalities, + // walk back to the last known safe diff. + thisDiff = safeDiff; + } else { + // There is an equality we can fall back to. + thisDiff = equalities.lastElement(); + } + while (thisDiff != pointer.previous()) { + // Intentionally empty loop. + } + post_ins = post_del = false; + } + changes = true; + } + } + thisDiff = pointer.hasNext() ? pointer.next() : null; + } + if (changes) { + diff_cleanupMerge(diffs); + } + } + /** + * Reorder and merge like edit sections. Merge equalities. + * Any edit section can move as long as it doesn't cross an equality. + * @param diffs LinkedList of Diff objects. + */ + public void diff_cleanupMerge(LinkedList diffs) { + diffs.add(new Diff(Operation.EQUAL, "")); // Add a dummy entry at the end. + ListIterator pointer = diffs.listIterator(); + int count_delete = 0; + int count_insert = 0; + String text_delete = ""; + String text_insert = ""; + Diff thisDiff = pointer.next(); + Diff prevEqual = null; + int commonlength; + while (thisDiff != null) { + switch (thisDiff.operation) { + case INSERT: + count_insert++; + text_insert += thisDiff.text; + prevEqual = null; + break; + case DELETE: + count_delete++; + text_delete += thisDiff.text; + prevEqual = null; + break; + case EQUAL: + if (count_delete != 0 || count_insert != 0) { + // Delete the offending records. + pointer.previous(); // Reverse direction. + while (count_delete-- > 0) { + pointer.previous(); + pointer.remove(); + } + while (count_insert-- > 0) { + pointer.previous(); + pointer.remove(); + } + if (count_delete != 0 && count_insert != 0) { + // Factor out any common prefixies. + commonlength = diff_commonPrefix(text_insert, text_delete); + if (commonlength != 0) { + if (pointer.hasPrevious()) { + thisDiff = pointer.previous(); + assert thisDiff.operation == Operation.EQUAL + : "Previous diff should have been an equality."; + thisDiff.text += text_insert.substring(0, commonlength); + pointer.next(); + } else { + pointer.add(new Diff(Operation.EQUAL, + text_insert.substring(0, commonlength))); + } + text_insert = text_insert.substring(commonlength); + text_delete = text_delete.substring(commonlength); + } + // Factor out any common suffixies. + commonlength = diff_commonSuffix(text_insert, text_delete); + if (commonlength != 0) { + thisDiff = pointer.next(); + thisDiff.text = text_insert.substring(text_insert.length() + - commonlength) + thisDiff.text; + text_insert = text_insert.substring(0, text_insert.length() + - commonlength); + text_delete = text_delete.substring(0, text_delete.length() + - commonlength); + pointer.previous(); + } + } + // Insert the merged records. + if (text_delete.length() != 0) { + pointer.add(new Diff(Operation.DELETE, text_delete)); + } + if (text_insert.length() != 0) { + pointer.add(new Diff(Operation.INSERT, text_insert)); + } + // Step forward to the equality. + thisDiff = pointer.hasNext() ? pointer.next() : null; + } else if (prevEqual != null) { + // Merge this equality with the previous one. + prevEqual.text += thisDiff.text; + pointer.remove(); + thisDiff = pointer.previous(); + pointer.next(); // Forward direction + } + count_insert = 0; + count_delete = 0; + text_delete = ""; + text_insert = ""; + prevEqual = thisDiff; + break; + } + thisDiff = pointer.hasNext() ? pointer.next() : null; + } + // System.out.println(diff); + if (diffs.getLast().text.length() == 0) { + diffs.removeLast(); // Remove the dummy entry at the end. + } + /* + * Second pass: look for single edits surrounded on both sides by equalities + * which can be shifted sideways to eliminate an equality. + * e.g: ABAC -> ABAC + */ + boolean changes = false; + // Create a new iterator at the start. + // (As opposed to walking the current one back.) + pointer = diffs.listIterator(); + Diff prevDiff = pointer.hasNext() ? pointer.next() : null; + thisDiff = pointer.hasNext() ? pointer.next() : null; + Diff nextDiff = pointer.hasNext() ? pointer.next() : null; + // Intentionally ignore the first and last element (don't need checking). + while (nextDiff != null) { + if (prevDiff.operation == Operation.EQUAL && + nextDiff.operation == Operation.EQUAL) { + // This is a single edit surrounded by equalities. + if (thisDiff.text.endsWith(prevDiff.text)) { + // Shift the edit over the previous equality. + thisDiff.text = prevDiff.text + thisDiff.text.substring(0, thisDiff.text.length() - prevDiff.text.length()); + nextDiff.text = prevDiff.text + nextDiff.text; + pointer.previous(); // Walk past nextDiff. + pointer.previous(); // Walk past thisDiff. + pointer.previous(); // Walk past prevDiff. + pointer.remove(); // Delete prevDiff. + pointer.next(); // Walk past thisDiff. + thisDiff = pointer.next(); // Walk past nextDiff. + nextDiff = pointer.hasNext() ? pointer.next() : null; + changes = true; + } else if (thisDiff.text.startsWith(nextDiff.text)) { + // Shift the edit over the next equality. + prevDiff.text += nextDiff.text; + thisDiff.text = thisDiff.text.substring(nextDiff.text.length()) + + nextDiff.text; + pointer.remove(); // Delete nextDiff. + nextDiff = pointer.hasNext() ? pointer.next() : null; + changes = true; + } + } + prevDiff = thisDiff; + thisDiff = nextDiff; + nextDiff = pointer.hasNext() ? pointer.next() : null; + } + // If shifts were made, the diff needs reordering and another shift sweep. + if (changes) { + diff_cleanupMerge(diffs); + } + } + /** + * loc is a location in text1, compute and return the equivalent location in + * text2. + * e.g. "The cat" vs "The big cat", 1->1, 5->8 + * @param diffs LinkedList of Diff objects. + * @param loc Location within text1. + * @return Location within text2. + */ + public int diff_xIndex(LinkedList diffs, int loc) { + int chars1 = 0; + int chars2 = 0; + int last_chars1 = 0; + int last_chars2 = 0; + Diff lastDiff = null; + for (Diff aDiff : diffs) { + if (aDiff.operation != Operation.INSERT) { + // Equality or deletion. + chars1 += aDiff.text.length(); + } + if (aDiff.operation != Operation.DELETE) { + // Equality or insertion. + chars2 += aDiff.text.length(); + } + if (chars1 > loc) { + // Overshot the location. + lastDiff = aDiff; + break; + } + last_chars1 = chars1; + last_chars2 = chars2; + } + if (lastDiff != null && lastDiff.operation == Operation.DELETE) { + // The location was deleted. + return last_chars2; + } + // Add the remaining character length. + return last_chars2 + (loc - last_chars1); + } + /** + * Convert a Diff list into a pretty HTML report. + * @param diffs LinkedList of Diff objects. + * @return HTML representation. + */ + public String diff_prettyHtml(LinkedList diffs) { + StringBuilder html = new StringBuilder(); + int i = 0; + for (Diff aDiff : diffs) { + String text = aDiff.text.replace("&", "&").replace("<", "<") + .replace(">", ">").replace("\n", "¶
    "); + switch (aDiff.operation) { + case INSERT: + html.append("").append(text).append(""); + break; + case DELETE: + html.append("").append(text).append(""); + break; + case EQUAL: + html.append("").append(text) + .append(""); + break; + } + if (aDiff.operation != Operation.DELETE) { + i += aDiff.text.length(); + } + } + return html.toString(); + } + /** + * Compute and return the source text (all equalities and deletions). + * @param diffs LinkedList of Diff objects. + * @return Source text. + */ + public String diff_text1(LinkedList diffs) { + StringBuilder text = new StringBuilder(); + for (Diff aDiff : diffs) { + if (aDiff.operation != Operation.INSERT) { + text.append(aDiff.text); + } + } + return text.toString(); + } + /** + * Compute and return the destination text (all equalities and insertions). + * @param diffs LinkedList of Diff objects. + * @return Destination text. + */ + public String diff_text2(LinkedList diffs) { + StringBuilder text = new StringBuilder(); + for (Diff aDiff : diffs) { + if (aDiff.operation != Operation.DELETE) { + text.append(aDiff.text); + } + } + return text.toString(); + } + /** + * Compute the Levenshtein distance; the number of inserted, deleted or + * substituted characters. + * @param diffs LinkedList of Diff objects. + * @return Number of changes. + */ + public int diff_levenshtein(LinkedList diffs) { + int levenshtein = 0; + int insertions = 0; + int deletions = 0; + for (Diff aDiff : diffs) { + switch (aDiff.operation) { + case INSERT: + insertions += aDiff.text.length(); + break; + case DELETE: + deletions += aDiff.text.length(); + break; + case EQUAL: + // A deletion and an insertion is one substitution. + levenshtein += Math.max(insertions, deletions); + insertions = 0; + deletions = 0; + break; + } + } + levenshtein += Math.max(insertions, deletions); + return levenshtein; + } + /** + * Crush the diff into an encoded string which describes the operations + * required to transform text1 into text2. + * E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. + * Operations are tab-separated. Inserted text is escaped using %xx notation. + * @param diffs Array of diff tuples. + * @return Delta text. + */ + public String diff_toDelta(LinkedList diffs) { + StringBuilder text = new StringBuilder(); + for (Diff aDiff : diffs) { + switch (aDiff.operation) { + case INSERT: + try { + text.append("+").append(URLEncoder.encode(aDiff.text, "UTF-8") + .replace('+', ' ')).append("\t"); + } catch (UnsupportedEncodingException e) { + // Not likely on modern system. + throw new Error("This system does not support UTF-8.", e); + } + break; + case DELETE: + text.append("-").append(aDiff.text.length()).append("\t"); + break; + case EQUAL: + text.append("=").append(aDiff.text.length()).append("\t"); + break; + } + } + String delta = text.toString(); + if (delta.length() != 0) { + // Strip off trailing tab character. + delta = delta.substring(0, delta.length() - 1); + delta = unescapeForEncodeUriCompatability(delta); + } + return delta; + } + /** + * Given the original text1, and an encoded string which describes the + * operations required to transform text1 into text2, compute the full diff. + * @param text1 Source string for the diff. + * @param delta Delta text. + * @return Array of diff tuples or null if invalid. + * @throws IllegalArgumentException If invalid input. + */ + public LinkedList diff_fromDelta(String text1, String delta) + throws IllegalArgumentException { + LinkedList diffs = new LinkedList(); + int pointer = 0; // Cursor in text1 + String[] tokens = delta.split("\t"); + for (String token : tokens) { + if (token.length() == 0) { + // Blank tokens are ok (from a trailing \t). + continue; + } + // Each token begins with a one character parameter which specifies the + // operation of this token (delete, insert, equality). + String param = token.substring(1); + switch (token.charAt(0)) { + case '+': + // decode would change all "+" to " " + param = param.replace("+", "%2B"); + try { + param = URLDecoder.decode(param, "UTF-8"); + } catch (UnsupportedEncodingException e) { + // Not likely on modern system. + throw new Error("This system does not support UTF-8.", e); + } catch (IllegalArgumentException e) { + // Malformed URI sequence. + throw new IllegalArgumentException( + "Illegal escape in diff_fromDelta: " + param, e); + } + diffs.add(new Diff(Operation.INSERT, param)); + break; + case '-': + // Fall through. + case '=': + int n; + try { + n = Integer.parseInt(param); + } catch (NumberFormatException e) { + throw new IllegalArgumentException( + "Invalid number in diff_fromDelta: " + param, e); + } + if (n < 0) { + throw new IllegalArgumentException( + "Negative number in diff_fromDelta: " + param); + } + String text; + try { + text = text1.substring(pointer, pointer += n); + } catch (StringIndexOutOfBoundsException e) { + throw new IllegalArgumentException("Delta length (" + pointer + + ") larger than source text length (" + text1.length() + + ").", e); + } + if (token.charAt(0) == '=') { + diffs.add(new Diff(Operation.EQUAL, text)); + } else { + diffs.add(new Diff(Operation.DELETE, text)); + } + break; + default: + // Anything else is an error. + throw new IllegalArgumentException( + "Invalid diff operation in diff_fromDelta: " + token.charAt(0)); + } + } + if (pointer != text1.length()) { + throw new IllegalArgumentException("Delta length (" + pointer + + ") smaller than source text length (" + text1.length() + ")."); + } + return diffs; + } + // MATCH FUNCTIONS + /** + * Locate the best instance of 'pattern' in 'text' near 'loc'. + * Returns -1 if no match found. + * @param text The text to search. + * @param pattern The pattern to search for. + * @param loc The location to search around. + * @return Best match index or -1. + */ + public int match_main(String text, String pattern, int loc) { + loc = Math.max(0, Math.min(loc, text.length())); + if (text.equals(pattern)) { + // Shortcut (potentially not guaranteed by the algorithm) + return 0; + } else if (text.length() == 0) { + // Nothing to match. + return -1; + } else if (loc + pattern.length() <= text.length() + && text.substring(loc, loc + pattern.length()).equals(pattern)) { + // Perfect match at the perfect spot! (Includes case of null pattern) + return loc; + } else { + // Do a fuzzy compare. + return match_bitap(text, pattern, loc); + } + } + /** + * Locate the best instance of 'pattern' in 'text' near 'loc' using the + * Bitap algorithm. Returns -1 if no match found. + * @param text The text to search. + * @param pattern The pattern to search for. + * @param loc The location to search around. + * @return Best match index or -1. + */ + protected int match_bitap(String text, String pattern, int loc) { + assert (Match_MaxBits == 0 || pattern.length() <= Match_MaxBits) + : "Pattern too long for this application."; + // Initialise the alphabet. + Map s = match_alphabet(pattern); + // Highest score beyond which we give up. + double score_threshold = Match_Threshold; + // Is there a nearby exact match? (speedup) + int best_loc = text.indexOf(pattern, loc); + if (best_loc != -1) { + score_threshold = Math.min(match_bitapScore(0, best_loc, loc, pattern), + score_threshold); + // What about in the other direction? (speedup) + best_loc = text.lastIndexOf(pattern, loc + pattern.length()); + if (best_loc != -1) { + score_threshold = Math.min(match_bitapScore(0, best_loc, loc, pattern), + score_threshold); + } + } + // Initialise the bit arrays. + int matchmask = 1 << (pattern.length() - 1); + best_loc = -1; + int bin_min, bin_mid; + int bin_max = pattern.length() + text.length(); + // Empty initialization added to appease Java compiler. + int[] last_rd = new int[0]; + for (int d = 0; d < pattern.length(); d++) { + // Scan for the best match; each iteration allows for one more error. + // Run a binary search to determine how far from 'loc' we can stray at + // this error level. + bin_min = 0; + bin_mid = bin_max; + while (bin_min < bin_mid) { + if (match_bitapScore(d, loc + bin_mid, loc, pattern) + <= score_threshold) { + bin_min = bin_mid; + } else { + bin_max = bin_mid; + } + bin_mid = (bin_max - bin_min) / 2 + bin_min; + } + // Use the result from this iteration as the maximum for the next. + bin_max = bin_mid; + int start = Math.max(1, loc - bin_mid + 1); + int finish = Math.min(loc + bin_mid, text.length()) + pattern.length(); + int[] rd = new int[finish + 2]; + rd[finish + 1] = (1 << d) - 1; + for (int j = finish; j >= start; j--) { + int charMatch; + if (text.length() <= j - 1 || !s.containsKey(text.charAt(j - 1))) { + // Out of range. + charMatch = 0; + } else { + charMatch = s.get(text.charAt(j - 1)); + } + if (d == 0) { + // First pass: exact match. + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; + } else { + // Subsequent passes: fuzzy match. + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch + | (((last_rd[j + 1] | last_rd[j]) << 1) | 1) | last_rd[j + 1]; + } + if ((rd[j] & matchmask) != 0) { + double score = match_bitapScore(d, j - 1, loc, pattern); + // This match will almost certainly be better than any existing + // match. But check anyway. + if (score <= score_threshold) { + // Told you so. + score_threshold = score; + best_loc = j - 1; + if (best_loc > loc) { + // When passing loc, don't exceed our current distance from loc. + start = Math.max(1, 2 * loc - best_loc); + } else { + // Already passed loc, downhill from here on in. + break; + } + } + } + } + if (match_bitapScore(d + 1, loc, loc, pattern) > score_threshold) { + // No hope for a (better) match at greater error levels. + break; + } + last_rd = rd; + } + return best_loc; + } + /** + * Compute and return the score for a match with e errors and x location. + * @param e Number of errors in match. + * @param x Location of match. + * @param loc Expected location of match. + * @param pattern Pattern being sought. + * @return Overall score for match (0.0 = good, 1.0 = bad). + */ + private double match_bitapScore(int e, int x, int loc, String pattern) { + float accuracy = (float) e / pattern.length(); + int proximity = Math.abs(loc - x); + if (Match_Distance == 0) { + // Dodge divide by zero error. + return proximity == 0 ? accuracy : 1.0; + } + return accuracy + (proximity / (float) Match_Distance); + } + /** + * Initialise the alphabet for the Bitap algorithm. + * @param pattern The text to encode. + * @return Hash of character locations. + */ + protected Map match_alphabet(String pattern) { + Map s = new HashMap(); + char[] char_pattern = pattern.toCharArray(); + for (char c : char_pattern) { + s.put(c, 0); + } + int i = 0; + for (char c : char_pattern) { + s.put(c, s.get(c) | (1 << (pattern.length() - i - 1))); + i++; + } + return s; + } + // PATCH FUNCTIONS + /** + * Increase the context until it is unique, + * but don't let the pattern expand beyond Match_MaxBits. + * @param patch The patch to grow. + * @param text Source text. + */ + protected void patch_addContext(Patch patch, String text) { + if (text.length() == 0) { + return; + } + String pattern = text.substring(patch.start2, patch.start2 + patch.length1); + int padding = 0; + // Look for the first and last matches of pattern in text. If two different + // matches are found, increase the pattern length. + while (text.indexOf(pattern) != text.lastIndexOf(pattern) + && pattern.length() < Match_MaxBits - Patch_Margin - Patch_Margin) { + padding += Patch_Margin; + pattern = text.substring(Math.max(0, patch.start2 - padding), + Math.min(text.length(), patch.start2 + patch.length1 + padding)); + } + // Add one chunk for good luck. + padding += Patch_Margin; + // Add the prefix. + String prefix = text.substring(Math.max(0, patch.start2 - padding), + patch.start2); + if (prefix.length() != 0) { + patch.diffs.addFirst(new Diff(Operation.EQUAL, prefix)); + } + // Add the suffix. + String suffix = text.substring(patch.start2 + patch.length1, + Math.min(text.length(), patch.start2 + patch.length1 + padding)); + if (suffix.length() != 0) { + patch.diffs.addLast(new Diff(Operation.EQUAL, suffix)); + } + // Roll back the start points. + patch.start1 -= prefix.length(); + patch.start2 -= prefix.length(); + // Extend the lengths. + patch.length1 += prefix.length() + suffix.length(); + patch.length2 += prefix.length() + suffix.length(); + } + /** + * Compute a list of patches to turn text1 into text2. + * A set of diffs will be computed. + * @param text1 Old text. + * @param text2 New text. + * @return LinkedList of Patch objects. + */ + public LinkedList patch_make(String text1, String text2) { + // No diffs provided, compute our own. + LinkedList diffs = diff_main(text1, text2, true); + if (diffs.size() > 2) { + diff_cleanupSemantic(diffs); + diff_cleanupEfficiency(diffs); + } + return patch_make(text1, diffs); + } + /** + * Compute a list of patches to turn text1 into text2. + * text1 will be derived from the provided diffs. + * @param diffs Array of diff tuples for text1 to text2. + * @return LinkedList of Patch objects. + */ + public LinkedList patch_make(LinkedList diffs) { + // No origin string provided, compute our own. + String text1 = diff_text1(diffs); + return patch_make(text1, diffs); + } + /** + * Compute a list of patches to turn text1 into text2. + * text2 is ignored, diffs are the delta between text1 and text2. + * @param text1 Old text + * @param text2 Ignored. + * @param diffs Array of diff tuples for text1 to text2. + * @return LinkedList of Patch objects. + * @deprecated Prefer patch_make(String text1, LinkedList diffs). + */ + public LinkedList patch_make(String text1, String text2, + LinkedList diffs) { + return patch_make(text1, diffs); + } + /** + * Compute a list of patches to turn text1 into text2. + * text2 is not provided, diffs are the delta between text1 and text2. + * @param text1 Old text. + * @param diffs Array of diff tuples for text1 to text2. + * @return LinkedList of Patch objects. + */ + public LinkedList patch_make(String text1, LinkedList diffs) { + LinkedList patches = new LinkedList(); + if (diffs.isEmpty()) { + return patches; // Get rid of the null case. + } + Patch patch = new Patch(); + int char_count1 = 0; // Number of characters into the text1 string. + int char_count2 = 0; // Number of characters into the text2 string. + // Start with text1 (prepatch_text) and apply the diffs until we arrive at + // text2 (postpatch_text). We recreate the patches one by one to determine + // context info. + String prepatch_text = text1; + String postpatch_text = text1; + for (Diff aDiff : diffs) { + if (patch.diffs.isEmpty() && aDiff.operation != Operation.EQUAL) { + // A new patch starts here. + patch.start1 = char_count1; + patch.start2 = char_count2; + } + switch (aDiff.operation) { + case INSERT: + patch.diffs.add(aDiff); + patch.length2 += aDiff.text.length(); + postpatch_text = postpatch_text.substring(0, char_count2) + + aDiff.text + postpatch_text.substring(char_count2); + break; + case DELETE: + patch.length1 += aDiff.text.length(); + patch.diffs.add(aDiff); + postpatch_text = postpatch_text.substring(0, char_count2) + + postpatch_text.substring(char_count2 + aDiff.text.length()); + break; + case EQUAL: + if (aDiff.text.length() <= 2 * Patch_Margin + && !patch.diffs.isEmpty() && aDiff != diffs.getLast()) { + // Small equality inside a patch. + patch.diffs.add(aDiff); + patch.length1 += aDiff.text.length(); + patch.length2 += aDiff.text.length(); + } + if (aDiff.text.length() >= 2 * Patch_Margin) { + // Time for a new patch. + if (!patch.diffs.isEmpty()) { + patch_addContext(patch, prepatch_text); + patches.add(patch); + patch = new Patch(); + // Unlike Unidiff, our patch lists have a rolling context. + // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff + // Update prepatch text & pos to reflect the application of the + // just completed patch. + prepatch_text = postpatch_text; + char_count1 = char_count2; + } + } + break; + } + // Update the current character count. + if (aDiff.operation != Operation.INSERT) { + char_count1 += aDiff.text.length(); + } + if (aDiff.operation != Operation.DELETE) { + char_count2 += aDiff.text.length(); + } + } + // Pick up the leftover patch if not empty. + if (!patch.diffs.isEmpty()) { + patch_addContext(patch, prepatch_text); + patches.add(patch); + } + return patches; + } + /** + * Given an array of patches, return another array that is identical. + * @param patches Array of patch objects. + * @return Array of patch objects. + */ + public LinkedList patch_deepCopy(LinkedList patches) { + LinkedList patchesCopy = new LinkedList(); + for (Patch aPatch : patches) { + Patch patchCopy = new Patch(); + for (Diff aDiff : aPatch.diffs) { + Diff diffCopy = new Diff(aDiff.operation, aDiff.text); + patchCopy.diffs.add(diffCopy); + } + patchCopy.start1 = aPatch.start1; + patchCopy.start2 = aPatch.start2; + patchCopy.length1 = aPatch.length1; + patchCopy.length2 = aPatch.length2; + patchesCopy.add(patchCopy); + } + return patchesCopy; + } + /** + * Merge a set of patches onto the text. Return a patched text, as well + * as an array of true/false values indicating which patches were applied. + * @param patches Array of patch objects + * @param text Old text. + * @return Two element Object array, containing the new text and an array of + * boolean values. + */ + public Object[] patch_apply(LinkedList patches, String text) { + if (patches.isEmpty()) { + return new Object[]{text, new boolean[0]}; + } + // Deep copy the patches so that no changes are made to originals. + patches = patch_deepCopy(patches); + String nullPadding = patch_addPadding(patches); + text = nullPadding + text + nullPadding; + patch_splitMax(patches); + int x = 0; + // delta keeps track of the offset between the expected and actual location + // of the previous patch. If there are patches expected at positions 10 and + // 20, but the first patch was found at 12, delta is 2 and the second patch + // has an effective expected position of 22. + int delta = 0; + boolean[] results = new boolean[patches.size()]; + for (Patch aPatch : patches) { + int expected_loc = aPatch.start2 + delta; + String text1 = diff_text1(aPatch.diffs); + int start_loc; + int end_loc = -1; + if (text1.length() > this.Match_MaxBits) { + // patch_splitMax will only provide an oversized pattern in the case of + // a monster delete. + start_loc = match_main(text, + text1.substring(0, this.Match_MaxBits), expected_loc); + if (start_loc != -1) { + end_loc = match_main(text, + text1.substring(text1.length() - this.Match_MaxBits), + expected_loc + text1.length() - this.Match_MaxBits); + if (end_loc == -1 || start_loc >= end_loc) { + // Can't find valid trailing context. Drop this patch. + start_loc = -1; + } + } + } else { + start_loc = match_main(text, text1, expected_loc); + } + if (start_loc == -1) { + // No match found. :( + results[x] = false; + // Subtract the delta for this failed patch from subsequent patches. + delta -= aPatch.length2 - aPatch.length1; + } else { + // Found a match. :) + results[x] = true; + delta = start_loc - expected_loc; + String text2; + if (end_loc == -1) { + text2 = text.substring(start_loc, + Math.min(start_loc + text1.length(), text.length())); + } else { + text2 = text.substring(start_loc, + Math.min(end_loc + this.Match_MaxBits, text.length())); + } + if (text1.equals(text2)) { + // Perfect match, just shove the replacement text in. + text = text.substring(0, start_loc) + diff_text2(aPatch.diffs) + + text.substring(start_loc + text1.length()); + } else { + // Imperfect match. Run a diff to get a framework of equivalent + // indices. + LinkedList diffs = diff_main(text1, text2, false); + if (text1.length() > this.Match_MaxBits + && diff_levenshtein(diffs) / (float) text1.length() + > this.Patch_DeleteThreshold) { + // The end points match, but the content is unacceptably bad. + results[x] = false; + } else { + diff_cleanupSemanticLossless(diffs); + int index1 = 0; + for (Diff aDiff : aPatch.diffs) { + if (aDiff.operation != Operation.EQUAL) { + int index2 = diff_xIndex(diffs, index1); + if (aDiff.operation == Operation.INSERT) { + // Insertion + text = text.substring(0, start_loc + index2) + aDiff.text + + text.substring(start_loc + index2); + } else if (aDiff.operation == Operation.DELETE) { + // Deletion + text = text.substring(0, start_loc + index2) + + text.substring(start_loc + diff_xIndex(diffs, + index1 + aDiff.text.length())); + } + } + if (aDiff.operation != Operation.DELETE) { + index1 += aDiff.text.length(); + } + } + } + } + } + x++; + } + // Strip the padding off. + text = text.substring(nullPadding.length(), text.length() + - nullPadding.length()); + return new Object[]{text, results}; + } + /** + * Add some padding on text start and end so that edges can match something. + * Intended to be called only from within patch_apply. + * @param patches Array of patch objects. + * @return The padding string added to each side. + */ + public String patch_addPadding(LinkedList patches) { + int paddingLength = this.Patch_Margin; + String nullPadding = ""; + for (int x = 1; x <= paddingLength; x++) { + nullPadding += String.valueOf((char) x); + } + // Bump all the patches forward. + for (Patch aPatch : patches) { + aPatch.start1 += paddingLength; + aPatch.start2 += paddingLength; + } + // Add some padding on start of first diff. + Patch patch = patches.getFirst(); + LinkedList diffs = patch.diffs; + if (diffs.isEmpty() || diffs.getFirst().operation != Operation.EQUAL) { + // Add nullPadding equality. + diffs.addFirst(new Diff(Operation.EQUAL, nullPadding)); + patch.start1 -= paddingLength; // Should be 0. + patch.start2 -= paddingLength; // Should be 0. + patch.length1 += paddingLength; + patch.length2 += paddingLength; + } else if (paddingLength > diffs.getFirst().text.length()) { + // Grow first equality. + Diff firstDiff = diffs.getFirst(); + int extraLength = paddingLength - firstDiff.text.length(); + firstDiff.text = nullPadding.substring(firstDiff.text.length()) + + firstDiff.text; + patch.start1 -= extraLength; + patch.start2 -= extraLength; + patch.length1 += extraLength; + patch.length2 += extraLength; + } + // Add some padding on end of last diff. + patch = patches.getLast(); + diffs = patch.diffs; + if (diffs.isEmpty() || diffs.getLast().operation != Operation.EQUAL) { + // Add nullPadding equality. + diffs.addLast(new Diff(Operation.EQUAL, nullPadding)); + patch.length1 += paddingLength; + patch.length2 += paddingLength; + } else if (paddingLength > diffs.getLast().text.length()) { + // Grow last equality. + Diff lastDiff = diffs.getLast(); + int extraLength = paddingLength - lastDiff.text.length(); + lastDiff.text += nullPadding.substring(0, extraLength); + patch.length1 += extraLength; + patch.length2 += extraLength; + } + return nullPadding; + } + /** + * Look through the patches and break up any which are longer than the + * maximum limit of the match algorithm. + * @param patches LinkedList of Patch objects. + */ + public void patch_splitMax(LinkedList patches) { + int patch_size; + String precontext, postcontext; + Patch patch; + int start1, start2; + boolean empty; + Operation diff_type; + String diff_text; + ListIterator pointer = patches.listIterator(); + Patch bigpatch = pointer.hasNext() ? pointer.next() : null; + while (bigpatch != null) { + if (bigpatch.length1 <= Match_MaxBits) { + bigpatch = pointer.hasNext() ? pointer.next() : null; + continue; + } + // Remove the big old patch. + pointer.remove(); + patch_size = Match_MaxBits; + start1 = bigpatch.start1; + start2 = bigpatch.start2; + precontext = ""; + while (!bigpatch.diffs.isEmpty()) { + // Create one of several smaller patches. + patch = new Patch(); + empty = true; + patch.start1 = start1 - precontext.length(); + patch.start2 = start2 - precontext.length(); + if (precontext.length() != 0) { + patch.length1 = patch.length2 = precontext.length(); + patch.diffs.add(new Diff(Operation.EQUAL, precontext)); + } + while (!bigpatch.diffs.isEmpty() + && patch.length1 < patch_size - Patch_Margin) { + diff_type = bigpatch.diffs.getFirst().operation; + diff_text = bigpatch.diffs.getFirst().text; + if (diff_type == Operation.INSERT) { + // Insertions are harmless. + patch.length2 += diff_text.length(); + start2 += diff_text.length(); + patch.diffs.addLast(bigpatch.diffs.removeFirst()); + empty = false; + } else if (diff_type == Operation.DELETE && patch.diffs.size() == 1 + && patch.diffs.getFirst().operation == Operation.EQUAL + && diff_text.length() > 2 * patch_size) { + // This is a large deletion. Let it pass in one chunk. + patch.length1 += diff_text.length(); + start1 += diff_text.length(); + empty = false; + patch.diffs.add(new Diff(diff_type, diff_text)); + bigpatch.diffs.removeFirst(); + } else { + // Deletion or equality. Only take as much as we can stomach. + diff_text = diff_text.substring(0, Math.min(diff_text.length(), + patch_size - patch.length1 - Patch_Margin)); + patch.length1 += diff_text.length(); + start1 += diff_text.length(); + if (diff_type == Operation.EQUAL) { + patch.length2 += diff_text.length(); + start2 += diff_text.length(); + } else { + empty = false; + } + patch.diffs.add(new Diff(diff_type, diff_text)); + if (diff_text.equals(bigpatch.diffs.getFirst().text)) { + bigpatch.diffs.removeFirst(); + } else { + bigpatch.diffs.getFirst().text = bigpatch.diffs.getFirst().text + .substring(diff_text.length()); + } + } + } + // Compute the head context for the next patch. + precontext = diff_text2(patch.diffs); + precontext = precontext.substring(Math.max(0, precontext.length() + - Patch_Margin)); + // Append the end context for this patch. + if (diff_text1(bigpatch.diffs).length() > Patch_Margin) { + postcontext = diff_text1(bigpatch.diffs).substring(0, Patch_Margin); + } else { + postcontext = diff_text1(bigpatch.diffs); + } + if (postcontext.length() != 0) { + patch.length1 += postcontext.length(); + patch.length2 += postcontext.length(); + if (!patch.diffs.isEmpty() + && patch.diffs.getLast().operation == Operation.EQUAL) { + patch.diffs.getLast().text += postcontext; + } else { + patch.diffs.add(new Diff(Operation.EQUAL, postcontext)); + } + } + if (!empty) { + pointer.add(patch); + } + } + bigpatch = pointer.hasNext() ? pointer.next() : null; + } + } + /** + * Take a list of patches and return a textual representation. + * @param patches List of Patch objects. + * @return Text representation of patches. + */ + public String patch_toText(List patches) { + StringBuilder text = new StringBuilder(); + for (Patch aPatch : patches) { + text.append(aPatch); + } + return text.toString(); + } + /** + * Parse a textual representation of patches and return a List of Patch + * objects. + * @param textline Text representation of patches. + * @return List of Patch objects. + * @throws IllegalArgumentException If invalid input. + */ + public List patch_fromText(String textline) + throws IllegalArgumentException { + List patches = new LinkedList(); + if (textline.length() == 0) { + return patches; + } + List textList = Arrays.asList(textline.split("\n")); + LinkedList text = new LinkedList(textList); + Patch patch; + Pattern patchHeader + = Pattern.compile("^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$"); + Matcher m; + char sign; + String line; + while (!text.isEmpty()) { + m = patchHeader.matcher(text.getFirst()); + if (!m.matches()) { + throw new IllegalArgumentException( + "Invalid patch string: " + text.getFirst()); + } + patch = new Patch(); + patches.add(patch); + patch.start1 = Integer.parseInt(m.group(1)); + if (m.group(2).length() == 0) { + patch.start1--; + patch.length1 = 1; + } else if (m.group(2).equals("0")) { + patch.length1 = 0; + } else { + patch.start1--; + patch.length1 = Integer.parseInt(m.group(2)); + } + patch.start2 = Integer.parseInt(m.group(3)); + if (m.group(4).length() == 0) { + patch.start2--; + patch.length2 = 1; + } else if (m.group(4).equals("0")) { + patch.length2 = 0; + } else { + patch.start2--; + patch.length2 = Integer.parseInt(m.group(4)); + } + text.removeFirst(); + + while (!text.isEmpty()) { + try { + sign = text.getFirst().charAt(0); + } catch (IndexOutOfBoundsException e) { + // Blank line? Whatever. + text.removeFirst(); + continue; + } + line = text.getFirst().substring(1); + line = line.replace("+", "%2B"); // decode would change all "+" to " " + try { + line = URLDecoder.decode(line, "UTF-8"); + } catch (UnsupportedEncodingException e) { + // Not likely on modern system. + throw new Error("This system does not support UTF-8.", e); + } catch (IllegalArgumentException e) { + // Malformed URI sequence. + throw new IllegalArgumentException( + "Illegal escape in patch_fromText: " + line, e); + } + if (sign == '-') { + // Deletion. + patch.diffs.add(new Diff(Operation.DELETE, line)); + } else if (sign == '+') { + // Insertion. + patch.diffs.add(new Diff(Operation.INSERT, line)); + } else if (sign == ' ') { + // Minor equality. + patch.diffs.add(new Diff(Operation.EQUAL, line)); + } else if (sign == '@') { + // Start of next patch. + break; + } else { + // WTF? + throw new IllegalArgumentException( + "Invalid patch mode '" + sign + "' in: " + line); + } + text.removeFirst(); + } + } + return patches; + } + + + /** + * Class representing one diff operation. + */ + public static class Diff { + /** + * One of: INSERT, DELETE or EQUAL. + */ + public Operation operation; + /** + * The text associated with this diff operation. + */ + public String text; + + /** + * Constructor. Initializes the diff with the provided values. + * @param operation One of INSERT, DELETE or EQUAL. + * @param text The text being applied. + */ + public Diff(Operation operation, String text) { + // Construct a diff with the specified operation and text. + this.operation = operation; + this.text = text; + } + + + /** + * Display a human-readable version of this Diff. + * @return text version. + */ + public String toString() { + String prettyText = this.text.replace('\n', '\u00b6'); + return "Diff(" + this.operation + ",\"" + prettyText + "\")"; + } + + + /** + * Is this Diff equivalent to another Diff? + * @param d Another Diff to compare against. + * @return true or false. + */ + public boolean equals(Object d) { + try { + return (((Diff) d).operation == this.operation) + && (((Diff) d).text.equals(this.text)); + } catch (ClassCastException e) { + return false; + } + } + } + + + /** + * Class representing one patch operation. + */ + public static class Patch { + public LinkedList diffs; + public int start1; + public int start2; + public int length1; + public int length2; + + + /** + * Constructor. Initializes with an empty list of diffs. + */ + public Patch() { + this.diffs = new LinkedList(); + } + + + /** + * Emmulate GNU diff's format. + * Header: @@ -382,8 +481,9 @@ + * Indicies are printed as 1-based, not 0-based. + * @return The GNU diff string. + */ + public String toString() { + String coords1, coords2; + if (this.length1 == 0) { + coords1 = this.start1 + ",0"; + } else if (this.length1 == 1) { + coords1 = Integer.toString(this.start1 + 1); + } else { + coords1 = (this.start1 + 1) + "," + this.length1; + } + if (this.length2 == 0) { + coords2 = this.start2 + ",0"; + } else if (this.length2 == 1) { + coords2 = Integer.toString(this.start2 + 1); + } else { + coords2 = (this.start2 + 1) + "," + this.length2; + } + StringBuilder text = new StringBuilder(); + text.append("@@ -").append(coords1).append(" +").append(coords2) + .append(" @@\n"); + // Escape the body of the patch with %xx notation. + for (Diff aDiff : this.diffs) { + switch (aDiff.operation) { + case INSERT: + text.append('+'); + break; + case DELETE: + text.append('-'); + break; + case EQUAL: + text.append(' '); + break; + } + try { + text.append(URLEncoder.encode(aDiff.text, "UTF-8").replace('+', ' ')) + .append("\n"); + } catch (UnsupportedEncodingException e) { + // Not likely on modern system. + throw new Error("This system does not support UTF-8.", e); + } + } + return unescapeForEncodeUriCompatability(text.toString()); + } + } + + + /** + * Unescape selected chars for compatability with JavaScript's encodeURI. + * In speed critical applications this could be dropped since the + * receiving application will certainly decode these fine. + * Note that this function is case-sensitive. Thus "%3f" would not be + * unescaped. But this is ok because it is only called with the output of + * URLEncoder.encode which returns uppercase hex. + * + * Example: "%3F" -> "?", "%24" -> "$", etc. + * + * @param str The string to escape. + * @return The escaped string. + */ + private static String unescapeForEncodeUriCompatability(String str) { + return str.replace("%21", "!").replace("%7E", "~") + .replace("%27", "'").replace("%28", "(").replace("%29", ")") + .replace("%3B", ";").replace("%2F", "/").replace("%3F", "?") + .replace("%3A", ":").replace("%40", "@").replace("%26", "&") + .replace("%3D", "=").replace("%2B", "+").replace("%24", "$") + .replace("%2C", ",").replace("%23", "#"); + } + + public String getHtmlDiffString(String text1,String text2){ + return diff_prettyHtml(diff_main(text1,text2)); + } + + public List getHtmlDiffStr(String text1,String text2){ + LinkedList diffs = diff_main(text1, text2); + //定义输出结果 + String LResultStr=""; + String RResultStr=""; + for(Diff deff:diffs){ + String text = deff.text.replace("&", "&").replace("<", "<") + .replace(">", ">").replace("\n", "
    "); + switch (deff.operation) { + case INSERT: + RResultStr+=""+text+""; + break; + case DELETE://删除 说明是左边有变化 右边没有变化 + LResultStr+=""+text+""; + break; + case EQUAL: + LResultStr+=text; + RResultStr+=text; + break; + } + } + List result =new ArrayList<>(); + result.add(LResultStr); + result.add(RResultStr); + return result; + } + + + public static void main(String[] args){ + DiffUtils dmp = new DiffUtils(); +// String text1 = "我方在“福市财政资金补助项目管理系统”的项目实施过程,为保证该项目的工程进度、zhiliang,符合数办项目的实施管理规范与要求。"; +// String text2 = "我方在“福州市财政资金补助项目管理系统”的项目实施过程,为保证该项目的工程进度、质量,符合目的实施管理规范与要求。"; + String str1="6转向系\n" + + "6.1汽车(三轮汽车除外)的方向盘应设置于左侧,其他机动车的方向盘不得设置于右侧;专项作业车、教练车按需要可设置左右两个方向盘。有驾驶室的正三轮摩托车如使用方向盘转向,则方向盘中心立柱距车辆纵向中心平面的水平距离应小于等于200 mm;其他摩托车不得使用方向盘转向。\n" + + "6.2机动车的方向盘(或方向把)应转动灵活,操纵方便,无卡滞现象。机动车应设置转向限位装置。转向系统在任何操作位置上,不得与其他部件有干涉现象。\n" + + "6.3机动车(摩托车、三轮汽车、手扶拖拉机运输机组除外)正常行驶时,转向轮转向后应有一定的回正能力(允许有残余角),以使机动车具有稳定的直线行驶能力。\n" + + "6.4机动车方向盘的最大自由转动量应小于或等于:\n" + + "a) 最大设计车速大于或等于100 km/h 的机动车:15°\n" + + "b) 三轮汽车:35°;\n" + + "c) 其他机动车:25° 。\n" + + "6.5汽车(三轮汽车除外)应具有适度的不足转向特性。\n" + + "6.6三轮汽车、摩托车的转向轮向左或向右转角应小于等于:\n" + + "a)\t三轮汽车、三轮摩托车、正三轮轻便摩托车:45°;\n" + + "6)\t\t两轮普通摩托车、两轮轻便摩托车:48°。\n" + + "6.6机动车在平坦、硬实、干燥和清洁的道路上行驶不应跑偏,其方向盘(或方向把)不应有摆振、路感不灵或其他异常现象。\n" + + "6.8机动车在平坦、硬实、干燥和清洁的水泥或沥青道路上行驶,以10 km/h的速度在5 s之内沿螺旋线从直线行驶过渡到外圆直径为25 m的车辆通道圆行驶,施加于方向盘外缘的最大切向力应小于等于245 N。\n" + + "6.9专用校车应采用转向助力装置;其他机动车转向轴最大设计轴荷大于4 000 kg时,也应采用转向助力装置。装有转向助力装置的机动车,转向时其转向助力功能不得出现时有时无的现象,且转向助力装置失效时仍应具有用方向盘控制机动车的能力。装有电动转向助力装置的汽车,在产品使用说明书规定的正常使用状态下,应保证转向助力装置的电能供应。\n" + + "6.10汽车和汽车列车(不计具有作业功能的专用装置的突出部分)、轮式拖拉机运输机组应能在同一个车辆通道圆内通过,车辆通道圆的外圆直径认为25.00 m,车辆通道圆的内圆直径D2为10.60 m。 汽车和汽车列车、轮式拖拉机运输机组由直线行驶过渡到上述圆周运动时,任何部分超出直线行驶时的 车辆外侧面垂直面的值(外摆值)应小于等于0.80 m(对铰接客车和铰接式无轨电车外摆值应小于等于 1.20 m),其试验方法见GB 1589。\n" + + "6.11汽车(三轮汽车除外)的车轮定位应与该车型的技术要求一致。对前轴采用非独立悬架的汽车(前轴采用双转向轴时除外),其转向轮的横向侧滑量,用侧滑台检验时侧滑量值应在±5 m/km之间。\n" + + "6.12转向节及臂,转向横、直拉杆及球销不得有裂纹和损伤,并且转向球销不应松旷。对机动车进行改装或修理时横、直拉杆不得拼焊。\n" + + "6.13三轮汽车、摩托车的前减振器、上下联板和方向把不应有变形和裂损。\n"; + String str2="6转向系\n" + + "6.1汽车(三轮汽车除外)的方向盘应设置于左侧,其他机动车的方向盘不应设置于右侧;专项作业车、教练车按需要可设置左右两个方向盘。装有两个后轮、有驾驶室的正三轮摩托车如使用方向盘转向,则方向盘中心立柱距车辆纵向中心平面的水平距离应小于或等于200 mm ;其他摩托车不应使用方向盘转向。\n" + + "6.2机动车的方向盘(或方向把)应转动灵活,无卡滞现象。机动车应设置转向限位装置。转向系统在任何操作位置上,不应与其他部件有干涉现象。\n" + + "6.3机动车(摩托车、三轮汽车、手扶拖拉机运输机组除外〉正常行驶时,转向轮转向后应有一定的回正能力(允许有残余角),以使机动车具有稳定的直线行驶能力0\n" + + "6.4机动车方向盘的最大自由转动量应小于或等于:\n" + + "a) 最大设计车速大于或等于100 km/h 的机动车:15°\n" + + "b) 三轮汽车:35°;\n" + + "c) 其他机动车:25° 。\n" + + "6.5汽车(三轮汽车除外)应具有适度的不足转向特性。\n" + + "6.6三轮汽车、摩托车的转向轮向左或向右转角应小于或等于:\n" + + "a) 三轮汽车、三轮摩托车、正三轮轻便摩托车:45°;\n" + + "b)两轮普通摩托车、两轮轻便摩托车:48°0\n" + + "6.7机动车在平坦、硬实、干燥和清洁的道路上行驶不应跑偏,其方向盘(或方向把)不应有摆振等异常现象。\n" + + "6.8机动车在平坦、硬实、干燥和清洁的水泥或沥青道路上行驶,以10 km/h 的速度在5 s 之内沿螺旋线从直线行驶过渡到外圆直径为25m 的车辆通道圆行驶,施加于方向盘外缘的最大切向力应小于或等于245 N。\n" + + "6.9汽车(三轮汽车除外)的车轮定位应与该车型的技术要求一致。对前轴采用非独立悬架的汽车(前轴采用双转向轴时除外),其转向轮的横向侧滑量,用侧滑台检验时侧滑量值应小于或等于5 m/km。\n" + + "6.10 专用校车应采用转向助力装置;其他机动车转向轴最大设计轴荷大于4 000 kg 时,也应采用转向助力装置。装有转向助力装置的机动车,转向时其转向助力功能不应出现时有时无的现象,且转向助力装置失效时仍应具有用方向盘控制机动车的能力。\n" + + "6.11转向节及臂,转向横、直拉杆及球销应连接可靠,且不应有裂纹和损伤,并且转向球销不应松旷。对机动车进行改装或修理时横、直拉杆不应拼焊。\n" + + "6.12三轮汽车、摩托车的前减振器、上下联板和方向把不应有变形和裂损。"; + String line1="6.1汽车(三轮汽车除外)的方向盘应设置于左侧,其他机动车的方向盘不得设置于右侧;专项作业车、教练车按需要可设置左右两个方向盘。有驾驶室的正三轮摩托车如使用方向盘转向,则方向盘中心立柱距车辆纵向中心平面的水平距离应小于等于200 mm;其他摩托车不得使用方向盘转向。"; + String line2="6.1汽车(三轮汽车除外)的方向盘应设置于左侧,其他机动车的方向盘不应设置于右侧;专项作业车、教练车按需要可设置左右两个方向盘。装有两个后轮、有驾驶室的正三轮摩托车如使用方向盘转向,则方向盘中心立柱距车辆纵向中心平面的水平距离应小于或等于200 mm ;其他摩托车不应使用方向盘转向。"; + String compareStr = dmp.getHtmlDiffString(str1,str2); + //String compareStr = dmp.getHtmlDiffString(line1,line2); + System.out.println(compareStr); + System.out.println("---------------------------------------------------"); + List htmlDiffStr = dmp.getHtmlDiffStr(str1, str2); + System.out.println(htmlDiffStr.get(0)); + System.out.println("=============================================="); + System.out.println(htmlDiffStr.get(1)); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/EncryptFileUtils.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/EncryptFileUtils.java new file mode 100644 index 00000000..cc99a709 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/EncryptFileUtils.java @@ -0,0 +1,170 @@ +package com.adc.da.utils.util; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.util.UUIDUtils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.*; +import java.util.List; + +/** + * 加密文件判断工具类 + */ +@Component +public class EncryptFileUtils { + + private static final Logger logger = LoggerFactory.getLogger(EncryptFileUtils.class); + + @Value("${file.path}") + private String filePath;//文件存储路径 + + public static final String ENCRYPT_FILE_HEX ="18 1B 03 1A 15 10 19 7C 0A 19 0E 7C 6F 72 6C 5F 5C 5C 5C 5C 5C 5C 5C C3 AD E5 AF 5C 5C 5C 5C 5C 8F EF EF 80 B5 AE 85 B3 94 86 A7 8C 86 E3 A2 FC B5 B4 83 8A B7 8B A9 87 F2 F1 BC F5 8E BF 90 E3 A4 86 8F 8B 94 FC A7 90 A4 EF 87 BC B6 8F 89 B1 F4 8E F7 8D 8A B5 8B 9D F3 89 AA 80 B1 90 82 8C 9F B7 85 A9 B0 89 B2 96 B3 B0 A6 B7 B5 8F 93 E1 AD BD E6 AE 8F 95 92 97 8D F0 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 C5 "; + + + + public String checkFileIsEncryFile(AttFileEO fileEO){ + if(fileEO!=null){ + String readFilePath = filePath+fileEO.getFilePath()+fileEO.getFileName(); + boolean readFlag = true; + byte[] b = new byte[160]; + InputStream inputStream = null; + try { + inputStream = new FileInputStream(readFilePath); + inputStream.read(b, 0, 160); + } catch (IOException e) { + logger.error(e.getMessage(),e); + readFlag = false; + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + } + } + String hexString = bytesToHexString(b); + logger.debug(hexString); + if(readFlag){ + if(StringUtils.isNotBlank(hexString)){ + if(StringUtils.equals(hexString,ENCRYPT_FILE_HEX)){ + return "ENCRYPT"; + }else{ + return "UNENCRYPT"; + } + }else{ + return "READNO"; + } + }else{ + return "READERR"; + } + }else{ + return "NOFILE"; + } + } + + public static String checkFileIsEncrypt(String readFilePath){ + boolean readFlag = true; + byte[] b = new byte[160]; + InputStream inputStream = null; + try { + inputStream = new FileInputStream(readFilePath); + inputStream.read(b, 0, 160); + } catch (IOException e) { + logger.error(e.getMessage(),e); + readFlag = false; + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + } + } + String hexString = bytesToHexString(b); + logger.debug(hexString); + if(readFlag){ + if(StringUtils.isNotBlank(hexString)){ + if(StringUtils.equals(hexString,ENCRYPT_FILE_HEX)){ + return "ENCRYPT"; + }else{ + return "UNENCRYPT"; + } + }else{ + return "READNO"; + } + }else{ + return "READERR"; + } + } + + /** + * 将文件头转换成16进制字符串 + * + * @param 原生byte + * @return 16进制字符串 + */ + private static String bytesToHexString(byte[] src) { + StringBuilder stringBuilder = new StringBuilder(); + if (src == null || src.length <= 0) { + return null; + } + for (int i = 0; i < src.length; i++) { + int v = src[i] & 0xFF; + String hv = Integer.toHexString(v); + if (hv.length() < 2) { + stringBuilder.append(0); + } + stringBuilder.append(hv.toUpperCase()).append(" "); + } + return stringBuilder.toString(); + } + + public static void main(String[] args) { + String filePath ="E:\\FOTONFILE\\sypv9xbkukd6g5fey8w1.DOC"; + String s = EncryptFileUtils.checkFileIsEncrypt(filePath); + System.out.println(s); + } + + + /** + * 本地写TXT文件 + * @param path + * @param list + */ + public void writeTxt(List list) { + String savePath = filePath+"/TEMPPATH/"+ UUIDUtils.randomUUID20()+".txt"; + BufferedWriter bw = null; + FileWriter fr = null; + try { + //将写入转化为流的形式 + fr = new FileWriter(savePath); + bw = new BufferedWriter(fr); + //一次写一行 + for (String s : list) { + bw.write(s); + bw.newLine(); //换行用 + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (bw != null) { + bw.close(); + } + if (fr != null) { + fr.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/ExcelUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ExcelUtil.java new file mode 100644 index 00000000..9c653f09 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ExcelUtil.java @@ -0,0 +1,271 @@ +package com.adc.da.utils.util;/** + * Created by Administrator on 2018/12/20 16:42 + */ + +import org.apache.commons.lang.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author Administrator + * @Description TODO + * Date 2018/12/20 16:42 + * @Param + * @return + **/ +public class ExcelUtil { + + private static final Logger logger = LoggerFactory.getLogger(ExcelUtil.class); + + + private static String EDGE = "Edge"; + private static String CHROME = "Chrome"; + private static String FIREFOX = "Firefox"; + private static String USERAGENT = "USER-AGENT"; + private static String UTF8 = "UTF8"; + private static String ISO88591 = "ISO8859-1"; + + /** + * @param filePath 需要读取的文件路径 + * @param column 指定需要获取的列数,例如第一列 1 + * @param startRow 指定从第几行开始读取数据 + * @param endRow 指定结束行 + * @return 返回读取列数据的set + */ + public static List getColumnSet(String fileOrginName, MultipartFile file, int column, int startRow, int endRow) throws IOException { + Workbook wb = readExcel(fileOrginName, file.getInputStream()); //文件 + Sheet sheet = wb.getSheetAt(0); //sheet + int rownum = sheet.getPhysicalNumberOfRows(); //行数 + Row row = null; + List result = new ArrayList<>(); + String cellData = null; + if (wb != null) { + for (int i = startRow - 1; i <= endRow; i++) { + System.out.println(i); + row = sheet.getRow(i); + if (row != null) { + if (row.getCell(column - 1) != null) {//单元格为空,不进入 + row.getCell(column - 1).setCellType(CellType.STRING);//设置单元格类型 + cellData = row.getCell(column - 1).getStringCellValue(); + result.add(cellData); + } else { + result.add(""); + } + } else { + + break; + } + System.out.println(cellData); + } + } + return result; + } + + /** + * @param column 指定需要获取的列数,例如第一列 1 + * @param startRow 指定从第几行开始读取数据 + * @return 返回读取列数据的set + */ + public static List getColumnSet(String fileOrginName, MultipartFile file, int column, int startRow) throws IOException { + Workbook wb = readExcel(fileOrginName, file.getInputStream()); //文件 + Sheet sheet = wb.getSheetAt(0); //sheet + int rownum = sheet.getPhysicalNumberOfRows(); //行数 + System.out.println("sumrows " + rownum); + + return getColumnSet(fileOrginName, file, column, startRow, rownum - 1); + } + + + //读取excel + public static Workbook readExcel(String fileOrginName, InputStream is) { + Workbook wb = null; + String extString = fileOrginName.substring(fileOrginName.lastIndexOf(".")); + try { + if (".xls".equals(extString)) { + return wb = new HSSFWorkbook(is); + } else if (".xlsx".equals(extString)) { + return wb = new XSSFWorkbook(is); + } else { + return wb = null; + } + } catch (FileNotFoundException e) { + logger.error("异常:", e); + } catch (IOException e) { + logger.error("异常:", e); + } + return wb; + } + + /*public static Object getCellFormatValue(Cell cell){ + Object cellValue = null; + if(cell!=null){ + //判断cell类型 + switch(cell.getCellType()){ + case NUMERIC:{ + cell.setCellType(CellType.STRING); //将数值型cell设置为string型 + cellValue = cell.getStringCellValue(); + break; + } + case FORMULA:{ + //判断cell是否为日期格式 + if(DateUtil.isCellDateFormatted(cell)){ + //转换为日期格式YYYY-mm-dd + cellValue = cell.getDateCellValue(); + }else{ + //数字 + cellValue = String.valueOf(cell.getNumericCellValue()); + } + break; + } + case STRING:{ + cellValue = cell.getRichStringCellValue().getString(); + break; + } + default: + cellValue = ""; + } + }else{ + cellValue = ""; + } + return cellValue; + }*/ + + public static String validatePattern(String fileName) { + if (StringUtils.isNotEmpty(fileName)) { + Boolean isOk = false; + if (fileName.lastIndexOf(".docx") != -1) { + isOk = true; + } + if (fileName.lastIndexOf(".pdf") != -1) { + isOk = true; + } + if (fileName.lastIndexOf(".doc") != -1) { + isOk = true; + } + if (fileName.lastIndexOf(".PDF") != -1) { + isOk = true; + } + if(fileName.lastIndexOf(".ppt") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".pptx") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".xls") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".xlsx") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".jpg") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".JPG") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".png") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".PNG") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".PPT") != -1){ + isOk = true; + } + if(fileName.lastIndexOf(".PPTX") != -1){ + isOk = true; + } + if (isOk) { + //其格式满足条件,无需提示 + return null; + } else { + return "请上传PDF、pdf、doc、docx、ppt、pptx、xls、xlsx、jpg、JPG、png、PNG、PPT、PPTX文件;"; + } + } + return null; + } + + /** + * 判断对象中属性值是否全为空 + * + * @param object + * @return + */ + public static boolean checkObjAllFieldsIsNull(Object object) { + if (null == object) { + return true; + } + + try { + for (Field f : object.getClass().getDeclaredFields()) { + f.setAccessible(true); + + if (f.get(object) != null && StringUtils.isNotBlank(f.get(object).toString())) { + return false; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return true; + } + + + public static String isUserAgent(String fileName, HttpServletRequest request) throws UnsupportedEncodingException { + String userAgent = request.getHeader(USERAGENT); + if (userAgent.contains(EDGE)) { + //其他浏览器 + fileName = URLEncoder.encode(fileName, UTF8); + //google,火狐浏览器 + } else if (userAgent.contains(CHROME) || userAgent.contains(FIREFOX)) { + fileName = new String((fileName).getBytes(UTF8), ISO88591); + } else { + //其他浏览器 + fileName = URLEncoder.encode(fileName, UTF8); + } + return fileName; + } + + public static boolean checkHeader(Sheet sheet, String names) throws IOException { + Row row = sheet.getRow(0); + List modelNamesList = new ArrayList<>(); + for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) { + if (org.apache.commons.lang.StringUtils.isNotBlank(row.getCell(i).getStringCellValue())) { + modelNamesList.add(row.getCell(i).getStringCellValue()); + } + } + if (org.apache.commons.lang.StringUtils.join(modelNamesList, ',').equals(names)) { + return true; + } + return false; + } + + public static String getCellString(Cell cell) { + if (cell == null){ + return ""; + } + if (String.valueOf(cell).endsWith(".0")) { + return StringUtils.removeEnd(String.valueOf(cell.getNumericCellValue()), ".0"); + } + if (String.valueOf(cell).contains(".")) { + cell.setCellType(CellType.NUMERIC); + return String.valueOf(cell.getNumericCellValue()); + } + return cell.getStringCellValue(); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/ExportTempUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ExportTempUtil.java new file mode 100644 index 00000000..7777fbf6 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ExportTempUtil.java @@ -0,0 +1,86 @@ +package com.adc.da.utils.util; + +import cn.hutool.core.util.ZipUtil; +import com.adc.da.common.ReadExcel; +import com.adc.da.exception.AdcDaBaseException; +import com.adc.da.util.UUIDUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.util.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.OutputStream; + +/** + * @Description: + * @Author: super_liu + * date: 2021/3/4 13:32 + */ +public class ExportTempUtil { + + private static final Logger logger = LoggerFactory.getLogger(ExportTempUtil.class); + + public static void exportZipTemp (String filePath, String exportName, String header, HttpServletResponse response, HttpServletRequest request) { + OutputStream os = null; + OutputStream excelOS = null; + HSSFWorkbook workbook = new HSSFWorkbook(); + try{ + //创建临时文件夹 + String fileNowPath = filePath + "/tempZip/" + UUIDUtils.randomUUID20() + "/" + exportName; + File nowFile = new File(fileNowPath); + if (nowFile.exists()){ + nowFile.delete(); + } + nowFile.mkdirs(); + String fileName = "导入模板.xls"; + HSSFSheet sheetItems = workbook.createSheet("模板"); + sheetItems.setDefaultColumnWidth(16); + HSSFCellStyle cellStyle =workbook.createCellStyle(); + cellStyle.setWrapText(true); + cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + Row rowHeader = sheetItems.createRow(0);//开始创建标题行 + if (StringUtils.isNotBlank(header)) { + String[] headerArr = header.split(","); + for (int i=0;i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); + } + } + String repFileName = fileName.replaceAll("/","_"); + excelOS = new FileOutputStream(fileNowPath + "/" + repFileName); + response.setHeader("Content-Disposition", + "attachment; filename=\""+ ReadExcel.encodeFileName(exportName+".zip", request) +"\""); + response.setContentType("application/force-download"); + response.flushBuffer(); + os = response.getOutputStream(); + workbook.write(excelOS); + excelOS.flush(); + excelOS.close(); + ZipUtil.zip(fileNowPath,fileNowPath+".zip"); + FileInputStream fis = new FileInputStream(fileNowPath+".zip"); + int len = 0; + while ((len = fis.read()) != -1) { + os.write(len); + } + os.flush(); + os.close(); // 后开先关 + fis.close(); // 先开后关 + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new AdcDaBaseException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + IOUtils.closeQuietly(excelOS); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java new file mode 100644 index 00000000..1e8f3a1b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/FieldConvertUtil.java @@ -0,0 +1,156 @@ +package com.adc.da.utils.util; + +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.StringUtils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.Reader; +import java.sql.Clob; +import java.sql.SQLException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Description: 处理各类型字段 + * @Author: super_liu + * date: 2021/6/1 9:37 + */ +public class FieldConvertUtil { + + public static void main(String[] args) { + } + + public static String mustFields = "id,stand_id,valid_flag,creation_user,creation_time,modify_time"; // 自定义属性表中必须字段 + + public static String mustFieldsLaws = "id,laws_id,valid_flag,creation_user,creation_time,modify_time"; // 自定义属性表中必须字段 + + public static String exportBaseFieldNames = "标准体系,是否纳入认证清单,标准性质,标准类别,标准编号,标准年份,中文名称,英文名称," + + "文本状态,发布日期"; // 导出基础表字段 //删除 实施日期 2021-05-28 + + public static String exportBaseFieldNamesForeign = "标准类别,标准编号,标准年份,中文名称,英文名称," + + "文本状态,发布日期,是否纳入认证清单,标准体系,适用认证,能源类型";// 导出基础表字段 + + public static String exportAttrFieldNamesInland = "归口管理部门,发布机构,工作组信息,我司参与深度,适用车辆类型,要求类型," + + "标签,发布稿(必读),增补件(必读),报批稿,送审稿,征求意见稿,草案,相关资料,新车型实施日期(文本),在产车实施日期(文本)," + + "EOP实施日期(文本),责任部门,相关部门,SVPPS,FO,项目评估角色,法规维护人,代替标准编号," + + "对应其他标准,文字描述,引用标准,被引用标准,覆盖关系"; + + public static String exportAttrFieldNamesForeign = "适用车辆类型,要求类型," + + "标签,发布稿(必读),增补件(必读),报批稿,送审稿,征求意见稿,草案,相关资料,新车型实施日期(文本),在产车实施日期(文本)," + + "EOP实施日期(文本),责任部门,相关部门,SVPPS,FO,项目评估角色,法规维护人,代替标准编号," + + "对应其他标准,文字描述,等效标准,引用标准,被引用标准,覆盖关系"; + + public static String exportBaseFieldNamesLaws = "政策分类,政策编号,政策名称,英文名称,政策文号,发文日期,发文单位,征集意见周期-起始时间,征集意见周期-结束时间,文本状态," + + "适用区域,适用车型,是否纳入认证清单,年度,福田转发通知文号,信息简报,标签,备注(最终政策发布)"; + + public static String exportAttrFieldNamesLaws = "适用车辆类型,要求类型," + + "个性化标签,政策文本,过程稿件,新车型实施日期(文本),在产车实施日期(文本),EOP实施日期(文本),SVPPS," + + "相关部门,责任部门,FO,维护工程师,归口管理部门,发布机构,我司是否参与,相关资料"; + + public static String exportBaseFieldNamesBuss = "企标编号,中文名称,英文名称,文本状态,发布日期,企标实施日期,企标制修订状态"; + + public static String exportAttrFieldNamesBuss = "SVPPS,规范性引用文件,废止日期,复审日期,密级,授权,相关部门," + + "需会签部门,起草部门,主要起草人,起草分标委,企标文本,过程文本"; + + public static String exportBaseFieldNamesBussRecords = "标准编号,标准名称,发布日期,实施日期,标准状态,项目名称," + + "代替标准编号,公开状态,产品类型,能源类型,企标备案文件,发布版文件,其他备案文件"; + + public static String exportBaseFieldNamesSarSarAccess = "标准号,中文名称,英文名称,新车型实施日期(项目)," + + "在产车实施日期(项目),EOP实施日期(项目),实施说明,认证交付物,认证对象,监管类型,适用车辆类型,责任部门,相关部门,FO,项目评估角色," + + "文本说明,标签,要求类型,清单类型,入库模块"; + + /*** + * @Description: Clob类型 转String + * @Author: super_liu + * @Date: 2021/6/1 13:49 + * @Param: [clob] + * @Return: java.lang.String + */ + public static String ClobToString(Clob clob) throws SQLException, IOException { + String ret = ""; + Reader read= clob.getCharacterStream(); + BufferedReader br = new BufferedReader(read); + String s = br.readLine(); + StringBuffer sb = new StringBuffer(); + while (s != null) { + sb.append(s); + s = br.readLine(); + } + ret = sb.toString(); + if(br != null){ + br.close(); + } + if(read != null){ + read.close(); + } + return ret; + } + + /*** + * @Description: 向数据库存储时,处理时间类型数据 + * @Author: super_liu + * @Date: 2021/6/1 13:51 + * @Param: [time] + * @Return: java.lang.String + */ + public static String changeTimeValue (String timeStr) { + + if (StringUtils.isNotBlank(timeStr)) { + List timeList = Arrays.asList(timeStr.split(",")); + List collect; + if (timeStr.length()<=10) { + collect = timeList.stream() + .map(item -> "str_to_date('" + item + "','%Y-%m-%d')") + .collect(Collectors.toList()); + }else { + collect = timeList.stream() + .map(item -> "str_to_date('" + item.substring(0,10) + "','%Y-%m-%d ')") + .collect(Collectors.toList()); + } + timeStr ="concat(" + String.join(", \',\' ,", collect) + ")"; + } else { + timeStr = "null"; + } + return timeStr; + } + + /** + * 数据库中的时间格式转换成字符串格式 + * @param time + * @param strFormat + * @return + */ + public static String dateToStr(java.sql.Timestamp time, String strFormat) { + DateFormat df = new SimpleDateFormat(strFormat); + String str = ""; + if (time != null) { + str = df.format(time); + } + return str; + } + + /*** + * @Description: 自定义属性表中必须字段值 + * @Author: super_liu + * @Date: 2021/6/1 14:14 + * @Param: [id] + * @Return: java.lang.String + */ + public static String mustValues (String id) { + String mustValue = "'"+ UUIDUtils.randomUUID20() + "','" + id + "','0','" + + LoginUserUtil.getUserId() + "'"; + Date date = new Date(); + SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); + String nowTime = sf.format(date); + String timeValue = "," + changeTimeValue(nowTime); + mustValue += timeValue + timeValue; + return mustValue; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/InitStandAttrUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/InitStandAttrUtil.java new file mode 100644 index 00000000..f85f9961 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/InitStandAttrUtil.java @@ -0,0 +1,227 @@ +package com.adc.da.utils.util; + +import com.adc.da.common.SarTypeEnum; +import com.adc.da.common.StandAttrTypeEnum; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandAttrDetails.page.SarStandAttrDetailsEOPage; +import com.adc.da.slrs.sarStandAttrDetails.service.ISarStandAttrDetailsService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 启动项目时加载标准属性信息 + * @Author: super_liu + * date: 2020/9/7 10:54 + */ + +@Component +public class InitStandAttrUtil implements ApplicationRunner { + + private static final Logger logger = LoggerFactory.getLogger(InitStandAttrUtil.class); + + @Autowired + private ISarStandAttrDetailsService sarStandAttrDetailsEOService; + + private final static List standTypeList = new ArrayList<>(); + private final static List lawsTypeList = new ArrayList<>(); + public final static List standStateList = new ArrayList<>(); + static { + standTypeList.add(SarTypeEnum.STAND.getValue()); + standTypeList.add(SarTypeEnum.INLAND_STAND.getValue()); + standTypeList.add(SarTypeEnum.FOREIGN_STAND.getValue()); + lawsTypeList.add(SarTypeEnum.LAWS_STAND.getValue()); + lawsTypeList.add(SarTypeEnum.FOREIGN_LAWS.getValue()); + standStateList.add("DRAFT"); + standStateList.add("ADVICE"); + standStateList.add("RADYSUBMIT"); + standStateList.add("SUBMIT"); + standStateList.add("FJNVYX9Q7J"); + standStateList.add("ZTJJSS"); + standStateList.add("TOVOID"); + standStateList.add("ZTXXYX"); + standStateList.add("5E5Z3CELX6"); + standStateList.add("N5KLTFLNRC"); + } + + // 标准属性字段信息 + public static String queryField = ""; //所有属性表需要查询的字段以逗号分隔 + public static String queryFieldNames = ""; //所有属性表需要查询的字段名以逗号分隔 + public static List queryFieldList = new ArrayList<>(); //所有属性表需要查询的字段 + public static List selectionFieldList = new ArrayList<>(); // 属性表下拉选项类型字段 + public static List fileFieldList = new ArrayList<>(); // 属性表文件类型字段 + public static List clobFieldList = new ArrayList<>(); // 属性表clob类型字段 + public static List timeFieldList = new ArrayList<>(); // 属性表日期类型字段 + public static List multiTimeFieldList = new ArrayList<>(); // 属性表多个日期类型字段 + public static List numFieldList = new ArrayList<>(); // 属性表数字类型字段 + public static List standInlandAttrFieldList = new ArrayList<>(); // 全部国内标准字段属性 + public static List standForeignAttrFieldList = new ArrayList<>(); // 全部海外标准字段属性 + public static Map selectFieldMap = new HashMap<>(); // 下拉属性字段及选项值 + + // 政策属性字段信息 + public static String queryFieldLaws = ""; //所有属性表需要查询的字段以逗号分隔 + public static String queryFieldNamesLaws = ""; //所有属性表需要查询的字段名以逗号分隔 + public static List queryFieldListLaws = new ArrayList<>(); //所有属性表需要查询的字段 + public static List selectionFieldListLaws = new ArrayList<>(); // 属性表下拉选项类型字段 + public static List fileFieldListLaws = new ArrayList<>(); // 属性表文件类型字段 + public static List clobFieldListLaws = new ArrayList<>(); // 属性表clob类型字段 + public static List timeFieldListLaws = new ArrayList<>(); // 属性表日期类型字段 + public static List multiTimeFieldListLaws = new ArrayList<>(); // 属性表多个日期类型字段 + public static List numFieldListLaws = new ArrayList<>(); // 属性表数字类型字段 + public static List lawsInlandAttrFieldList = new ArrayList<>(); // 属性表数字类型字段 + public static List lawsForeignAttrFieldList = new ArrayList<>(); // 全部政策字段属性 + public static List lawsStandAttrFieldList = new ArrayList<>(); // 全部政策字段属性 + public static Map selectFieldMapLaws = new HashMap<>(); // 下拉属性字段及选项值 + + // 企标属性字段信息 + public static String queryFieldBuss = ""; //所有属性表需要查询的字段以逗号分隔 + public static String queryFieldNamesBuss = ""; //所有属性表需要查询的字段名以逗号分隔 + public static List queryFieldListBuss = new ArrayList<>(); //所有属性表需要查询的字段 + public static List selectionFieldListBuss = new ArrayList<>(); // 属性表下拉选项类型字段 + public static List fileFieldListBuss = new ArrayList<>(); // 属性表文件类型字段 + public static List clobFieldListBuss = new ArrayList<>(); // 属性表clob类型字段 + public static List timeFieldListBuss = new ArrayList<>(); // 属性表日期类型字段 + public static List multiTimeFieldListBuss = new ArrayList<>(); // 属性表多个日期类型字段 + public static List numFieldListBuss = new ArrayList<>(); // 属性表数字类型字段 + public static List bussAttrFieldList = new ArrayList<>(); // 全部企标字段属性 + public static Map selectFieldMapBuss = new HashMap<>(); // 下拉属性字段及选项值 + + @Override + public void run(ApplicationArguments args) throws Exception { + logger.info("项目启动时加载--查询标准属性类!"); + // 属性表需要查询的字段 + StringBuilder fieldInfoBuilder = new StringBuilder(); + StringBuilder fieldInfoBuilderLaws = new StringBuilder(); + StringBuilder fieldInfoBuilderBuss = new StringBuilder(); + StringBuilder fieldInfoNameBuilder = new StringBuilder(); + StringBuilder fieldInfoNameBuilderLaws = new StringBuilder(); + StringBuilder fieldInfoNameBuilderBuss = new StringBuilder(); + QueryWrapper qw = new QueryWrapper(); + qw.eq("VALID_FLAG","0"); + qw.orderByAsc("ORDER_NUM"); + List getDetailsList = sarStandAttrDetailsEOService.list(qw); + if (getDetailsList != null && !getDetailsList.isEmpty()) { + logger.info("项目启动时加载--查询标准属性类--查询到" + getDetailsList.size() + "条属性字段数据!"); + for (SarStandAttrDetails detailsEO : getDetailsList) { + String sarType = detailsEO.getSarType(); + String attrType = detailsEO.getAttrType(); + if (standTypeList.contains(sarType)) { + if (!SarTypeEnum.FOREIGN_STAND.getValue().equals(sarType)) { + standInlandAttrFieldList.add(detailsEO); + } + if (!SarTypeEnum.INLAND_STAND.getValue().equals(sarType)) { + standForeignAttrFieldList.add(detailsEO); + } + fieldInfoBuilder.append(detailsEO.getAttrField() + ","); + fieldInfoNameBuilder.append(detailsEO.getAttrName() + ","); + queryFieldList.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldList.add(detailsEO.getAttrField()); + selectFieldMap.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldList.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldList.add(detailsEO.getAttrField()); + } + } else if (lawsTypeList.contains(sarType)) { + if (SarTypeEnum.FOREIGN_LAWS.getValue().equals(sarType)) { + lawsForeignAttrFieldList.add(detailsEO); + fieldInfoBuilderLaws.append(detailsEO.getAttrField() + ","); + } + if (SarTypeEnum.LAWS_STAND.getValue().equals(sarType)) { + lawsStandAttrFieldList.add(detailsEO); + } + + if (SarTypeEnum.INLAND_LAWS.getValue().equals(sarType)) { + lawsInlandAttrFieldList.add(detailsEO); + } + fieldInfoNameBuilderLaws.append(detailsEO.getAttrName() + ","); + queryFieldListLaws.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldListLaws.add(detailsEO.getAttrField()); + selectFieldMapLaws.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldListLaws.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldListLaws.add(detailsEO.getAttrField()); + } + } else if (SarTypeEnum.BUSS.getValue().equals(sarType)) { + bussAttrFieldList.add(detailsEO); + fieldInfoBuilderBuss.append(detailsEO.getAttrField() + ","); + fieldInfoNameBuilderBuss.append(detailsEO.getAttrName() + ","); + queryFieldListBuss.add(detailsEO.getAttrField()); + if (StandAttrTypeEnum.SELECT_OPTION.getValue().equals(attrType) || StandAttrTypeEnum.SEL_OPTS.getValue().equals(attrType)) { + selectionFieldListBuss.add(detailsEO.getAttrField()); + selectFieldMapBuss.put(detailsEO.getAttrField(),detailsEO.getSelVal()); + } else if (StandAttrTypeEnum.FILE.getValue().equals(attrType)) { + fileFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.TEXTAREA.getValue().equals(attrType) && detailsEO.getAttrLen() >= 4000) { + clobFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PICKER.getValue().equals(attrType)) { + timeFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.DATE_PIC_OPTS.getValue().equals(attrType)) { + multiTimeFieldListBuss.add(detailsEO.getAttrField()); + } else if (StandAttrTypeEnum.INPUT_NUM.getValue().equals(attrType)) { + numFieldListBuss.add(detailsEO.getAttrField()); + } + } + } + queryField = fieldInfoBuilder.toString(); + queryFieldLaws = fieldInfoBuilderLaws.toString(); + queryFieldBuss = fieldInfoBuilderBuss.toString(); + if (StringUtils.isNotBlank(queryField)) { + queryField = queryField.substring(0,queryField.length()-1); + } + if (StringUtils.isNotBlank(queryFieldLaws)) { + queryFieldLaws = queryFieldLaws.substring(0,queryFieldLaws.length()-1); + } + if (StringUtils.isNotBlank(queryFieldBuss)) { + queryFieldBuss = queryFieldBuss.substring(0,queryFieldBuss.length()-1); + } + logger.info("项目启动时加载--查询标准属性类--查询到属性字段为:" + queryField); + logger.info("项目启动时加载--查询政策属性类--查询到属性字段为:" + queryFieldLaws); + logger.info("项目启动时加载--查询企标属性类--查询到属性字段为:" + queryFieldBuss); + queryFieldNames = fieldInfoNameBuilder.toString(); + queryFieldNamesLaws = fieldInfoNameBuilderLaws.toString(); + queryFieldNamesBuss = fieldInfoNameBuilderBuss.toString(); + if (StringUtils.isNotBlank(queryFieldNames)) { + queryFieldNames = queryFieldNames.substring(0,queryFieldNames.length()-1); + } + if (StringUtils.isNotBlank(queryFieldNamesLaws)) { + queryFieldNamesLaws = queryFieldNamesLaws.substring(0,queryFieldNamesLaws.length()-1); + } + if (StringUtils.isNotBlank(queryFieldNamesBuss)) { + queryFieldNamesBuss = queryFieldNamesBuss.substring(0,queryFieldNamesBuss.length()-1); + } + logger.info("项目启动时加载--查询标准属性类--查询到属性字段名称为:" + queryFieldNames); + logger.info("项目启动时加载--查询政策属性类--查询到属性字段名称为:" + queryFieldNamesLaws); + logger.info("项目启动时加载--查询企标属性类--查询到属性字段名称为:" + queryFieldNamesBuss); + } else { + logger.error("项目启动时加载--查询标准属性类--未查询到属性字段数据!"); + } + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/LawsStandExportUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/LawsStandExportUtil.java new file mode 100644 index 00000000..bd2845cf --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/LawsStandExportUtil.java @@ -0,0 +1,211 @@ +package com.adc.da.utils.util; + +import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfo; +import com.adc.da.slrs.sarLawsStandInfo.entity.SarLawsStandInfoExport; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: 标准导出工具 + * date: 2020/9/16 14:09 + */ +public class LawsStandExportUtil { + + private static final Logger logger = LoggerFactory.getLogger(LawsStandExportUtil.class); + + + public static Workbook exportDatas (List datas) { + Workbook workbook = new XSSFWorkbook(); + try { + StringBuilder attrBud = new StringBuilder(); + List detailsEOList = InitStandAttrUtil.lawsForeignAttrFieldList; + Map attrInfoMap = new HashMap<>(); + for (SarStandAttrDetails detailsEO : detailsEOList) { + if (!InitStandAttrUtil.fileFieldListLaws.contains(detailsEO.getAttrField())) { + attrBud.append(detailsEO.getAttrName() + ","); + attrInfoMap.put(detailsEO.getAttrName(),detailsEO.getAttrField()); + } + } + String header = FieldConvertUtil.exportBaseFieldNamesLaws + "," + attrBud.toString(); + //创建工作表对象 + Sheet sheet = workbook.createSheet(); + // 创建头部 + createHeader(workbook,sheet,header); + // 创建数据 + createDatas(workbook,sheet,datas,header,attrInfoMap); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return workbook; + } + + public static void createHeader(Workbook workbook,Sheet sheet,String header){ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + Row rowHeader = sheet.createRow(0);//开始创建标题行 + if (StringUtils.isNotBlank(header)) { + String[] headerArr = header.split(","); + for (int i=0;i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); +// rowHeader.createCell(i).setCellStyle(cellStyle); + } + } + } + + public static void createDatas(Workbook workbook,Sheet sheet,List datas, + String header,Map attrInfoMap) throws Exception{ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + if (datas != null && !datas.isEmpty()) { + for (int i=0;i < datas.size(); i++) { + SarLawsStandInfoExport sarStandardsInfoEO = datas.get(i); + Row row = sheet.createRow(i+1); + String[] headerArr = header.split(","); + int sheetNum = 0; + for (String headerName : headerArr) { + String value = getValueByName(headerName,sarStandardsInfoEO,attrInfoMap); + if (StringUtils.isBlank(value) || "null".equals(value)) { + value = ""; + } + row.createCell(sheetNum).setCellValue(value); + sheetNum++; + } + } + } + } + + // 根据表头返回相应值 + public static String getValueByName (String name,SarLawsStandInfoExport sarStandardsInfoEO,Map attrInfoMap) throws Exception{ + String value = ""; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Map attrValueMap = sarStandardsInfoEO.getAttrInfoMap(); + switch (name) { + case "政策分类": + value = verifyBean(sarStandardsInfoEO.getLawsType()); + break; + case "政策编号": + value = verifyBean(sarStandardsInfoEO.getLawsNumber()); + break; + case "政策名称": + value = verifyBean(sarStandardsInfoEO.getLawsName()); + break; + case "英文名称": + value = verifyBean(sarStandardsInfoEO.getLawsEnName()); + break; + case "政策文号": + value = verifyBean(sarStandardsInfoEO.getLawsNo()); + break; + case "发文日期": + String issueTime=""; + if (Date.class.equals(sarStandardsInfoEO.getIssueTime())) { + issueTime = sdf.format(sarStandardsInfoEO.getIssueTime()); + + }else { + issueTime=sarStandardsInfoEO.getIssueTime(); + } + value = issueTime; + if(StringUtils.isNotBlank(value)){ + if (value.length()>10){ + value = value.substring(0,10); + } + } + break; + case "发文单位": + value = verifyBean(sarStandardsInfoEO.getIssueCompany()); + break; + case "征集意见周期-起始时间": + String commentCycleStart=""; + if (Date.class.equals(sarStandardsInfoEO.getCommentCycleStart())){ + commentCycleStart = sdf.format(sarStandardsInfoEO.getCommentCycleStart()); + }else { + commentCycleStart=sarStandardsInfoEO.getCommentCycleStart(); + } + value = commentCycleStart; + if(StringUtils.isNotBlank(value)){ + if (value.length()>10){ + value = value.substring(0,10); + } + } + break; + case "征集意见周期-结束时间": + String commentCycleEnd=""; + if (Date.class.equals(sarStandardsInfoEO.getCommentCycleEnd())){ + commentCycleEnd = sdf.format(sarStandardsInfoEO.getCommentCycleEnd()); + }else { + commentCycleEnd=sarStandardsInfoEO.getCommentCycleEnd(); + } + value = commentCycleEnd; + if(StringUtils.isNotBlank(value)){ + if (value.length()>10){ + value = value.substring(0,10); + } + } + break; + case "文本状态": + value = verifyBean(sarStandardsInfoEO.getStandStatusShow()); + break; + case "适用区域": + value = verifyBean(sarStandardsInfoEO.getLawsSyqy()); + break; + case "适用车型": + value = verifyBean(sarStandardsInfoEO.getLawsSycx()); + break; + case "是否纳入认证清单": + value = sarStandardsInfoEO.getIsRelateAccess() != null ? (sarStandardsInfoEO.getIsRelateAccess().equals("1")?"是":"否"): ""; + break; + case "年度": + value = verifyBean(sarStandardsInfoEO.getLawsYear()); + break; + case "福田转发通知文号": + value = verifyBean(sarStandardsInfoEO.getLawsNotisyncNum()); + break; + case "信息简报": + value = verifyBean(sarStandardsInfoEO.getLawsBulletin()); + break; + case "标签": + value = verifyBean(sarStandardsInfoEO.getLawsLabel()); + break; + case "备注(最终政策发布)": + value = verifyBean(sarStandardsInfoEO.getLawsRemark()); + break; + default: + List list = new ArrayList<>(); + List dateList = InitStandAttrUtil.timeFieldListLaws; + List dateList2 = InitStandAttrUtil.multiTimeFieldListLaws; + list.addAll(dateList); + list.addAll(dateList2); + String field = attrInfoMap.get(name); + if (attrValueMap != null) { + List finalData = list.stream().filter(field::contains).collect(Collectors.toList()); + value = String.valueOf(attrValueMap.get(field)); + if (!finalData.isEmpty()) { + if (value.length()>10){ + value = value.substring(0,10); + } + } + } + break; + } + return value; + } + + private static String verifyBean(String value){ + String val = ""; + if(StringUtils.isNotBlank(value)){ + val =value; + }else { + val = ""; + } + return val; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/ListUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ListUtil.java new file mode 100644 index 00000000..c60e1130 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ListUtil.java @@ -0,0 +1,72 @@ +package com.adc.da.utils.util; + +import java.util.*; + +/** + * List操作 + * @author zxy + */ +public class ListUtil { + + /** + * 获得targetList和referList中不同的元素 + * @param targetList:目标List + * @param referList:参照List + */ + public static Map> difList(List targetList, List referList){ + targetList.sort(String::compareTo); + referList.sort(String::compareTo); + //targetList多的节点 + List insertList=new ArrayList<>(); + //referList多的节点 + List deleteList=new ArrayList<>(); + //最后一个相等的节点 + int endEqual=-1; + //referList第一个与当前targetList节点不相等的节点坐标 + int index=0; + for(String node:targetList){ + //判断referList是否已遍历完成 + if(index> result=new HashMap<>(); + result.put("insert",insertList); + result.put("delete",deleteList); + System.out.println(insertList); + System.out.println(deleteList); + return result; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/NullToEmptyUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/NullToEmptyUtil.java new file mode 100644 index 00000000..4b5b7e6a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/NullToEmptyUtil.java @@ -0,0 +1,34 @@ +package com.adc.da.utils.util; + +import java.lang.reflect.Field; + +public class NullToEmptyUtil { + + /** + * 把对象中的 String 类型的null字段,转换为空字符串 + * + * @param 待转化对象类型 + * @param cls 待转化对象 + * @return 转化好的对象 + */ + public static T noNullStringAttr(T cls) { + Field[] fields = cls.getClass().getDeclaredFields(); + if (fields == null || fields.length == 0) { + return cls; + } + for (Field field : fields) { + if ("String".equals(field.getType().getSimpleName())) { + field.setAccessible(true); + try { + Object value = field.get(cls); + if (value == null) { + field.set(cls, ""); + } + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + } + } + return cls; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/ObjectToMapUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ObjectToMapUtil.java new file mode 100644 index 00000000..d50ec5a5 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/ObjectToMapUtil.java @@ -0,0 +1,32 @@ +package com.adc.da.utils.util; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +import static cn.hutool.core.map.MapUtil.removeNullValue; + +public class ObjectToMapUtil { + + public static Map objectToMap(Object object){ + Map dataMap = new HashMap<>(); + Class clazz = object.getClass(); + for (Field field : clazz.getDeclaredFields()) { + try { + field.setAccessible(true); + dataMap.put(field.getName(),field.get(object)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + return dataMap; + } + + /** + * 移除map中空key或者value空值 + * @param map + */ + public static void removeNullEntry(Map map){ + removeNullValue(map); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/POIReadExcelToHtml.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/POIReadExcelToHtml.java new file mode 100644 index 00000000..22c9f68b --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/POIReadExcelToHtml.java @@ -0,0 +1,651 @@ +package com.adc.da.utils.util; + + +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ooxml.POIXMLDocumentPart; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.*; +import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; + +import java.io.*; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: + * @Author: super_liu + * date: 2020/5/11 10:39 + */ +public class POIReadExcelToHtml { + private static Map map[]; + + /** + * 程序入口方法(将excel文件读取成字符串) + * @param isWithStyle 是否需要表格样式 包含 字体 颜色 边框 对齐方式 + * @return ...
    字符串 + */ + public static String readExcelToHtml(Workbook xWb, int sheetNum, boolean isWithStyle){ + String htmlExcel = null; + htmlExcel = readWorkbook(xWb,sheetNum,isWithStyle); + /*try { +// Workbook wb = WorkbookFactory.create(is); + + } catch (Exception e) { + e.printStackTrace(); + }finally{ + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + }*/ + return htmlExcel; + } + + /** + * 根据excel的版本分配不同的读取方法进行处理 + * @param wb + * @param isWithStyle + * @return + */ + private static String readWorkbook(Workbook wb, int sheetNum, boolean isWithStyle){ + String htmlExcel = ""; + if (wb instanceof XSSFWorkbook) { + XSSFWorkbook xWb = (XSSFWorkbook) wb; + htmlExcel = getExcelInfo(xWb,sheetNum, isWithStyle); + }else if(wb instanceof HSSFWorkbook){ + HSSFWorkbook hWb = (HSSFWorkbook) wb; + htmlExcel = getExcelInfo(hWb,sheetNum, isWithStyle); + } + return htmlExcel; + } + + /** + * 读取excel成string + * @param wb + * @param isWithStyle + * @return + */ + public static String getExcelInfo(Workbook wb, int sheetNum, boolean isWithStyle){ + + StringBuffer sb = new StringBuffer(); + Sheet sheet = wb.getSheetAt(sheetNum);//获取第一个Sheet的内容 + // map等待存储excel图片 +// Map sheetIndexPicMap = getSheetPictrues(0, sheet, wb); + //临时保存位置,正式环境根据部署环境存放其他位置 +// try { +// if(sheetIndexPicMap != null) +// printImg(sheetIndexPicMap); +// } catch (IOException e) { +// e.printStackTrace(); +// } + + //读取excel拼装html + int lastRowNum = sheet.getLastRowNum(); + map = getRowSpanColSpanMap(sheet); + sb.append(""); + Row row = null; //兼容 + Cell cell = null; //兼容 + + for (int rowNum = sheet.getFirstRowNum(); rowNum <= lastRowNum; rowNum ++) { + if(rowNum > 1000) break; + row = sheet.getRow(rowNum); + + int lastColNum = POIReadExcelToHtml.getColsOfTable(sheet)[0]; + int rowHeight = POIReadExcelToHtml.getColsOfTable(sheet)[1]; + + if(null != row) { + lastColNum = row.getLastCellNum(); + rowHeight = row.getHeight(); + } + + if (null == row) { + sb.append(""); + continue; + }else if(row.getZeroHeight()){ + continue; + }else if(0 == rowHeight){ + continue; //针对jxl的隐藏行(此类隐藏行只是把高度设置为0,单getZeroHeight无法识别) + } + sb.append(""); + + for (int colNum = 0; colNum < lastColNum; colNum ++) { + if(sheet.isColumnHidden(colNum)) continue; + String imageRowNum = "0_" + rowNum + "_" + colNum; + String imageHtml = ""; + cell = row.getCell(colNum); + /*if ((sheetIndexPicMap != null && !sheetIndexPicMap.containsKey(imageRowNum) || sheetIndexPicMap == null) && cell == null) { //特殊情况 空白的单元格会返回null+//判断该单元格是否包含图片,为空时也可能包含图片 + sb.append(""); + continue; + } + if(sheetIndexPicMap!=null && sheetIndexPicMap.containsKey(imageRowNum)){ + //待修改路径 + String imagePath = "D:\\pic" + imageRowNum + ".jpeg"; + + imageHtml = ""; + }*/ + String stringValue = getCellValue(cell); + if (map[0].containsKey(rowNum + "," + colNum)) { + String pointString = (String)map[0].get(rowNum + "," + colNum); + int bottomeRow = Integer.valueOf(pointString.split(",")[0]); + int bottomeCol = Integer.valueOf(pointString.split(",")[1]); + int rowSpan = bottomeRow - rowNum + 1; + int colSpan = bottomeCol - colNum + 1; + if(map[2].containsKey(rowNum + "," + colNum)){ + rowSpan = rowSpan - (Integer)map[2].get(rowNum + "," + colNum); + } + sb.append(""); + } + sb.append(""); + continue; + } + sb.append("
    3 && map[3].containsKey(rowNum + "," + colNum)){ + //此类数据首行被隐藏,value为空,需使用其他方式获取值 + stringValue = getMergedRegionValue(sheet, rowNum, colNum); + } + } else if (map[1].containsKey(rowNum + "," + colNum)) { + map[1].remove(rowNum + "," + colNum); + continue; + } else { + sb.append(""); +// if(sheetIndexPicMap!=null && sheetIndexPicMap.containsKey(imageRowNum)) sb.append(imageHtml); + if (stringValue == null || "".equals(stringValue.trim())) { + sb.append(" "); + } else { + // 将ascii码为160的空格转换为html下的空格( ) + sb.append(stringValue.replace(String.valueOf((char) 160)," ")); + } + sb.append("
    "); + return sb.toString(); + } + + /** + * 分析excel表格,记录合并单元格相关的参数,用于之后html页面元素的合并操作 + * @param sheet + * @return + */ + private static Map[] getRowSpanColSpanMap(Sheet sheet) { + Map map0 = new HashMap(); //保存合并单元格的对应起始和截止单元格 + Map map1 = new HashMap(); //保存被合并的那些单元格 + Map map2 = new HashMap(); //记录被隐藏的单元格个数 + Map map3 = new HashMap(); //记录合并了单元格,但是合并的首行被隐藏的情况 + int mergedNum = sheet.getNumMergedRegions(); + CellRangeAddress range = null; + Row row = null; + for (int i = 0; i < mergedNum; i++) { + range = sheet.getMergedRegion(i); + int topRow = range.getFirstRow(); + int topCol = range.getFirstColumn(); + int bottomRow = range.getLastRow(); + int bottomCol = range.getLastColumn(); + /** + * 此类数据为合并了单元格的数据 + * 1.处理隐藏(只处理行隐藏,列隐藏poi已经处理) + */ + if(topRow != bottomRow){ + int zeroRoleNum = 0; + int tempRow = topRow; + for(int j = topRow; j <= bottomRow; j ++){ + row = sheet.getRow(j); + if(row.getZeroHeight() || row.getHeight() == 0){ + if(j == tempRow){ + //首行就进行隐藏,将rowTop向后移 + tempRow ++; + continue;//由于top下移,后面计算rowSpan时会扣除移走的列,所以不必增加zeroRoleNum; + } + zeroRoleNum ++; + } + } + if(tempRow != topRow){ + map3.put(tempRow + "," + topCol,topRow + "," + topCol); + topRow = tempRow; + } + if(zeroRoleNum!=0) map2.put(topRow + "," + topCol, zeroRoleNum); + } + map0.put(topRow + "," + topCol, bottomRow + "," + bottomCol); + int tempRow = topRow; + while (tempRow <= bottomRow) { + int tempCol = topCol; + while (tempCol <= bottomCol) { + map1.put(tempRow + "," + tempCol, topRow + "," + topCol); + tempCol++; + } + tempRow++; + } + map1.remove(topRow + "," + topCol); + } + Map[] map = { map0, map1 ,map2,map3}; + System.err.println(map0); + return map; + } + + + /** + * 获取合并单元格的值 + * @param sheet + * @param row + * @param column + * @return + */ + public static String getMergedRegionValue(Sheet sheet, int row, int column){ + int sheetMergeCount = sheet.getNumMergedRegions(); + for(int i = 0 ; i < sheetMergeCount ; i++){ + CellRangeAddress ca = sheet.getMergedRegion(i); + int firstColumn = ca.getFirstColumn(); + int lastColumn = ca.getLastColumn(); + int firstRow = ca.getFirstRow(); + int lastRow = ca.getLastRow(); + + if(row >= firstRow && row <= lastRow){ + + if(column >= firstColumn && column <= lastColumn){ + Row fRow = sheet.getRow(firstRow); + Cell fCell = fRow.getCell(firstColumn); + + return getCellValue(fCell) ; + } + } + } + return null ; + } + /** + * 获取表格单元格Cell内容 + * @param cell + * @return + */ + private static String getCellValue(Cell cell) { + String result = new String(); + switch (cell.getCellType()) { + case NUMERIC:// 数字类型 + if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式 + SimpleDateFormat sdf = null; + if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) { + sdf = new SimpleDateFormat("HH:mm"); + } else {// 日期 + sdf = new SimpleDateFormat("yyyy-MM-dd"); + } + Date date = cell.getDateCellValue(); + result = sdf.format(date); + } else if (cell.getCellStyle().getDataFormat() == 58) { + // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58) + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + double value = cell.getNumericCellValue(); + Date date = org.apache.poi.ss.usermodel.DateUtil + .getJavaDate(value); + result = sdf.format(date); + } else { + double value = cell.getNumericCellValue(); + CellStyle style = cell.getCellStyle(); + DecimalFormat format = new DecimalFormat(); + String temp = style.getDataFormatString(); + // 单元格设置成常规 + if (temp.equals("General")) { + format.applyPattern("#"); + } + result = format.format(value); + } + break; + case STRING:// String类型 + result = cell.getRichStringCellValue().toString(); + break; + case BLANK: + result = ""; + break; + default: + result = ""; + break; + } + return result; + } + + /** + * 处理表格样式 + * @param wb + * @param sheet + * @param cell + * @param sb + */ + private static void dealExcelStyle(Workbook wb, Sheet sheet, Cell cell, StringBuffer sb){ + CellStyle cellStyle = cell.getCellStyle(); + if (cellStyle != null) { + + HorizontalAlignment alignment = cellStyle.getAlignment(); + sb.append("align='" + convertAlignToHtml(alignment) + "' ");//单元格内容的水平对齐方式 + VerticalAlignment verticalAlignment = cellStyle.getVerticalAlignment(); + sb.append("valign='"+ convertVerticalAlignToHtml(verticalAlignment)+ "' ");//单元格中内容的垂直排列方式 + + if (wb instanceof XSSFWorkbook) { + + XSSFFont xf = ((XSSFCellStyle) cellStyle).getFont(); + //short boldWeight = Font.BOLDWEIGHT_BOLD; + sb.append("style='"); + //sb.append("font-weight:" + boldWeight + ";"); // 字体加粗 + sb.append("font-size: " + xf.getFontHeight() / 2 + "%;"); // 字体大小 + + int topRow = cell.getRowIndex(),topColumn = cell.getColumnIndex(); + if(map[0].containsKey(topRow+","+topColumn)){//该单元格为合并单元格,宽度需要获取所有单元格宽度后合并 + String value = (String)map[0].get(topRow+","+topColumn); + String[] ary = value.split(","); + int bottomColumn = Integer.parseInt(ary[1]); + if(topColumn!=bottomColumn){//合并列,需要计算相应宽度 + int columnWidth = 0; + for(int i=topColumn;i<=bottomColumn;i++){ + columnWidth += sheet.getColumnWidth(i); + } + sb.append("width:" + columnWidth/256*xf.getFontHeight()/20 + "pt;"); + }else{ + int columnWidth = sheet.getColumnWidth(cell.getColumnIndex()) ; + sb.append("width:" + columnWidth/256*xf.getFontHeight()/20 + "pt;"); + } + }else{ + int columnWidth = sheet.getColumnWidth(cell.getColumnIndex()) ; + sb.append("width:" + columnWidth/256*xf.getFontHeight()/20 + "pt;"); + } + + XSSFColor xc = xf.getXSSFColor(); + if (xc != null && !"".equals(xc.toString())) { + sb.append("color:#" + xc.getARGBHex().substring(2) + ";"); // 字体颜色 + } + + XSSFColor bgColor = (XSSFColor) cellStyle.getFillForegroundColorColor(); + if (bgColor != null && !"".equals(bgColor.toString())) { + sb.append("background-color:#" + bgColor.getARGBHex().substring(2) + ";"); // 背景颜色 + } + sb.append("border:solid #000000 1px;"); + // sb.append(getBorderStyle(0,cellStyle.getBorderTop(), ((XSSFCellStyle) cellStyle).getTopBorderXSSFColor())); + // sb.append(getBorderStyle(1,cellStyle.getBorderRight(), ((XSSFCellStyle) cellStyle).getRightBorderXSSFColor())); + // sb.append(getBorderStyle(2,cellStyle.getBorderBottom(), ((XSSFCellStyle) cellStyle).getBottomBorderXSSFColor())); + // sb.append(getBorderStyle(3,cellStyle.getBorderLeft(), ((XSSFCellStyle) cellStyle).getLeftBorderXSSFColor())); + }else if(wb instanceof HSSFWorkbook){ + HSSFFont hf = ((HSSFCellStyle) cellStyle).getFont(wb); + //short boldWeight = hf.getBoldweight(); + short fontColor = hf.getColor(); + sb.append("style='"); + + HSSFPalette palette = ((HSSFWorkbook) wb).getCustomPalette(); // 类HSSFPalette用于求的颜色的国际标准形式 + HSSFColor hc = palette.getColor(fontColor); + //sb.append("font-weight:" + boldWeight + ";"); // 字体加粗 + sb.append("font-size: " + hf.getFontHeight() / 2 + "%;"); // 字体大小 + String fontColorStr = convertToStardColor(hc); + if (fontColorStr != null && !"".equals(fontColorStr.trim())) { + sb.append("color:" + fontColorStr + ";"); // 字体颜色 + } + + int topRow = cell.getRowIndex(),topColumn = cell.getColumnIndex(); + if(map[0].containsKey(topRow + "," + topColumn)){//该单元格为合并单元格,宽度需要获取所有单元格宽度后合并 + String value = (String)map[0].get(topRow + "," + topColumn); + String[] ary = value.split(","); + int bottomColumn = Integer.parseInt(ary[1]); + if(topColumn != bottomColumn){//合并列,需要计算相应宽度 + int columnWidth = 0; + for(int i = topColumn; i <= bottomColumn; i++){ + columnWidth += sheet.getColumnWidth(i); + } + sb.append("width:" + columnWidth / 256 * hf.getFontHeight() / 20 + "pt;"); + }else{ + int columnWidth = sheet.getColumnWidth(cell.getColumnIndex()) ; + sb.append("width:" + columnWidth / 256 * hf.getFontHeight() / 20 + "pt;"); + } + }else{ + int columnWidth = sheet.getColumnWidth(cell.getColumnIndex()) ; + sb.append("width:" + columnWidth / 256 * hf.getFontHeight() / 20 + "pt;"); + } + + short bgColor = cellStyle.getFillForegroundColor(); + hc = palette.getColor(bgColor); + String bgColorStr = convertToStardColor(hc); + if (bgColorStr != null && !"".equals(bgColorStr.trim())) { + sb.append("background-color:" + bgColorStr + ";"); // 背景颜色 + } + sb.append("border:solid #000000 1px;"); + } + sb.append("' "); + } + } + + /** + * 单元格内容的水平对齐方式 + * @param alignment + * @return + */ + private static String convertAlignToHtml(HorizontalAlignment alignment) { + String align = "left"; + switch (alignment) { + case LEFT: + align = "left"; + break; + case CENTER: + align = "center"; + break; + case RIGHT: + align = "right"; + break; + default: + break; + } + return align; + } + + /** + * 单元格中内容的垂直排列方式 + * @param verticalAlignment + * @return + */ + private static String convertVerticalAlignToHtml(VerticalAlignment verticalAlignment) { + String valign = "middle"; + switch (verticalAlignment) { + case BOTTOM: + valign = "bottom"; + break; + case CENTER: + valign = "center"; + break; + case TOP: + valign = "top"; + break; + default: + break; + } + return valign; + } + + private static String convertToStardColor(HSSFColor hc) { + StringBuffer sb = new StringBuffer(""); + if (hc != null) { + if (IndexedColors.AUTOMATIC.index == hc.getIndex()) { + return null; + } + sb.append("#"); + for (int i = 0; i < hc.getTriplet().length; i ++) { + sb.append(fillWithZero(Integer.toHexString(hc.getTriplet()[i]))); + } + } + return sb.toString(); + } + + private static String fillWithZero(String str) { + if (str != null && str.length() < 2) { + return "0" + str; + } + return str; + } + + static String[] bordesr = {"border-top:", "border-right:", "border-bottom:", "border-left:"}; + static String[] borderStyles = {"solid ", "solid ", "solid ", "solid ", "solid ", "solid ", "solid ", "solid ", "solid ", "solid", "solid", "solid", "solid", "solid"}; + + @SuppressWarnings("unused") + private static String getBorderStyle(HSSFPalette palette , int b, short s, short t){ + if(s == 0) return bordesr[b] + borderStyles[s] + "#d0d7e5 1px;"; + String borderColorStr = convertToStardColor( palette.getColor(t)); + borderColorStr = borderColorStr == null || borderColorStr.length() < 1 ? "#000000" : borderColorStr; + return bordesr[b] + borderStyles[s] + borderColorStr + " 1px;"; + } + + @SuppressWarnings("unused") + private static String getBorderStyle(int b, short s, XSSFColor xc){ + if(s == 0)return bordesr[b] + borderStyles[s] + "#d0d7e5 1px;"; + if (xc != null && ! "".equals(xc)) { + String borderColorStr = xc.getARGBHex();//t.getARGBHex(); + borderColorStr=borderColorStr == null || borderColorStr.length() < 1 ? "#000000" : borderColorStr.substring(2); + return bordesr[b] + borderStyles[s]+borderColorStr+" 1px;"; + } + return ""; + } + + @SuppressWarnings("unused") + private static void writeFile(String content, String path) { + OutputStream os = null; + BufferedWriter bw = null; + try { + File file = new File(path); + os = new FileOutputStream(file); + bw = new BufferedWriter(new OutputStreamWriter(os,"GBK")); + bw.write(content); + } catch (FileNotFoundException fnfe) { + fnfe.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } finally { + try { + if (null != bw) + bw.close(); + if (null != os) + os.close(); + } catch (IOException ie) { + ie.printStackTrace(); + } + } + } + + + /** + * 获取Excel图片公共方法 + * @param sheetNum 当前sheet编号 + * @param sheet 当前sheet对象 + * @param workbook 工作簿对象 + * @return Map key:图片单元格索引(0_1_1)String,value:图片流PictureData + */ + public static Map getSheetPictrues(int sheetNum, Sheet sheet, Workbook workbook) { + if(workbook instanceof HSSFWorkbook){ + return getSheetPictrues03(sheetNum, (HSSFSheet) sheet, (HSSFWorkbook) workbook); + }else if(workbook instanceof XSSFWorkbook){ + return getSheetPictrues07(sheetNum, (XSSFSheet) sheet, (XSSFWorkbook) workbook); + }else{ + return null; + } + } + + /** + * 获取Excel2003图片 + * @param sheetNum 当前sheet编号 + * @param sheet 当前sheet对象 + * @param workbook 工作簿对象 + * @return Map key:图片单元格索引(0_1_1)String,value:图片流PictureData + * @throws IOException + */ + private static Map getSheetPictrues03(int sheetNum, + HSSFSheet sheet, HSSFWorkbook workbook) { + + Map sheetIndexPicMap = new HashMap(); + List pictures = workbook.getAllPictures(); + if (pictures.size() != 0) { + for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) { + HSSFClientAnchor anchor = (HSSFClientAnchor) shape.getAnchor(); + shape.getLineWidth(); + if (shape instanceof HSSFPicture) { + HSSFPicture pic = (HSSFPicture) shape; + int pictureIndex = pic.getPictureIndex() - 1; + HSSFPictureData picData = pictures.get(pictureIndex); + String picIndex = String.valueOf(sheetNum) + "_" + + String.valueOf(anchor.getRow1()) + "_" + + String.valueOf(anchor.getCol1()); + sheetIndexPicMap.put(picIndex, picData); + } + } + return sheetIndexPicMap; + } else { + return null; + } + } + + /** + * 获取Excel2007图片 + * @param sheetNum 当前sheet编号 + * @param sheet 当前sheet对象 + * @param workbook 工作簿对象 + * @return Map key:图片单元格索引(0_1_1)String,value:图片流PictureData + */ + private static Map getSheetPictrues07(int sheetNum, + XSSFSheet sheet, XSSFWorkbook workbook) { + Map sheetIndexPicMap = new HashMap(); + + for (POIXMLDocumentPart dr : sheet.getRelations()) { + if (dr instanceof XSSFDrawing) { + XSSFDrawing drawing = (XSSFDrawing) dr; + List shapes = drawing.getShapes(); + for (XSSFShape shape : shapes) { + XSSFPicture pic = (XSSFPicture) shape; + XSSFClientAnchor anchor = pic.getPreferredSize(); + CTMarker ctMarker = anchor.getFrom(); + String picIndex = String.valueOf(sheetNum) + "_" + + ctMarker.getRow() + "_" + ctMarker.getCol(); + sheetIndexPicMap.put(picIndex, pic.getPictureData()); + } + } + } + + return sheetIndexPicMap; + } + + public static void printImg(List> sheetList) throws IOException { + for (Map map : sheetList) { + printImg(map); + } + } + + public static void printImg(Map map) throws IOException { + Object key[] = map.keySet().toArray(); + for (int i = 0; i < map.size(); i++) { + // 获取图片流 + PictureData pic = map.get(key[i]); + // 获取图片索引 + String picName = key[i].toString(); + // 获取图片格式 + String ext = pic.suggestFileExtension(); + + byte[] data = pic.getData(); + + FileOutputStream out = new FileOutputStream("D:\\pic" + picName + "." + ext); + out.write(data); + out.flush(); + out.close(); + } + } + + private static int[] getColsOfTable(Sheet sheet) { + int[] data = {0, 0}; + for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum(); i++) { + if (null != sheet.getRow(i)) { + data[0] = sheet.getRow(i).getLastCellNum(); + data[1] = sheet.getRow(i).getHeight(); + } else + continue; + } + return data; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/SarAdvanceSearchUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/SarAdvanceSearchUtil.java new file mode 100644 index 00000000..fcfd9c1f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/SarAdvanceSearchUtil.java @@ -0,0 +1,148 @@ +package com.adc.da.utils.util; + +import com.adc.da.slrs.sarStandardsInfo.entity.SarAdvanceSearchVO; +import org.apache.commons.lang3.StringUtils; + +import java.util.Arrays; +import java.util.List; + +/** + * @Description: 根据前台传值,生成对应sql + * @Author: super_liu + * date: 2020/12/11 9:27 + */ +public class SarAdvanceSearchUtil { + + // 拼接sql语句 + public static String createSql(List searchVOList,String tableName) { + String sqlInfo = ""; + StringBuilder sqlBuilder = new StringBuilder(); + if (searchVOList != null && !searchVOList.isEmpty()) { + for (SarAdvanceSearchVO searchVO : searchVOList) { + String sql = ""; + if (StringUtils.isNotBlank(searchVO.getValue())) { + if (searchVO.getValue().contains(",")) { + sql += searchVO.getConnect() + "("; + List list = Arrays.asList(searchVO.getValue().split(",")); + for (int i = 0; i < list.size(); i++) { + if (i == list.size() - 1) { + sql += tableName+"."+searchVO.getField() + " " + searchVO.getType() + " " + "concat(concat('%','" + list.get(i) + "'),'%') "; + } else { + sql += tableName+"."+searchVO.getField() + " " + searchVO.getType() + " " + "concat(concat('%','" + list.get(i) + "'),'%') and "; + } + } + sql += " )"; + } else { + sql += searchVO.getConnect() + " " + tableName+"."+searchVO.getField() + " "; + if (!"like".equals(searchVO.getType())) { + sql += searchVO.getType() + "'" + searchVO.getValue() + "'"; + } else { + sql += searchVO.getType() + " " + "concat(concat('%','" + searchVO.getValue() + "'),'%')"; + } + } + sqlBuilder.append(sql); + } else if (StringUtils.isNotBlank(searchVO.getTimeSt()) || StringUtils.isNotBlank(searchVO.getTimeEd())) { + sql += searchVO.getConnect() + " "; + if (StringUtils.isNotBlank(searchVO.getTimeSt()) && StringUtils.isBlank(searchVO.getTimeEd())) { + sql += "(" + tableName+"."+searchVO.getField(); + sql += (searchVO.getType().equals("!=") ? " not " : "") + " between " + "'" + searchVO.getTimeSt() + "' and '2099-12-31'"; + sql += " or " + tableName+"."+searchVO.getField(); + sql += (searchVO.getType().equals("!=") ? " not " : "") + " between " + "'" + searchVO.getTimeSt() + " 00:00:00" + "' and '2099-12-31 23:59:59'"; + sql += " or " + tableName+"."+searchVO.getField(); + sql += " = 'TBD'"; + sql += ")"; + } else if (StringUtils.isBlank(searchVO.getTimeSt()) && StringUtils.isNotBlank(searchVO.getTimeEd())) { + sql += "(" + tableName+"."+searchVO.getField(); + sql += (searchVO.getType().equals("!=") ? " not " : "") + " between '1970-01-01' and " + "'" + searchVO.getTimeEd() + "'"; + sql += " or " + tableName+"."+searchVO.getField(); + sql += (searchVO.getType().equals("!=") ? " not " : "") + " between '1970-01-01 00:00:00' and " + + "'" + searchVO.getTimeEd() + " 23:59:59'"; + sql += " or " + tableName+"."+searchVO.getField(); + sql += " = 'TBD'"; + sql += ")"; + } else if (StringUtils.isNotBlank(searchVO.getTimeSt()) && StringUtils.isNotBlank(searchVO.getTimeEd())) { + sql += "(" + tableName+"."+searchVO.getField(); + sql += (searchVO.getType().equals("!=") ? " not " : "") + " between '" + searchVO.getTimeSt() + "' and '" + + searchVO.getTimeEd() + "'"; + sql += " or " + tableName+"."+searchVO.getField(); + sql += (searchVO.getType().equals("!=") ? " not " : "") + " between '" + searchVO.getTimeSt() + " 00:00:00" + "' and '" + + searchVO.getTimeEd() + " 23:59:59'"; + sql += " or " + tableName+"."+searchVO.getField(); + sql += " = 'TBD'"; + sql += ")"; + } + sqlBuilder.append(sql); + } + } + sqlInfo = sqlBuilder.toString(); + } + return sqlInfo; + } + + + /** + * 国内外标准高级查询 对tableName表自定义字段生成条件语句 + * @param searchVOList + * @return + */ + public static String createStandSql(List searchVOList,String tableName) { + tableName=tableName+"."; + String sqlInfo = ""; + StringBuilder sqlBuilder = new StringBuilder(); + if (searchVOList != null && !searchVOList.isEmpty()) { + + for (int i = 0; i < searchVOList.size(); i++) { + String sql = ""; + SarAdvanceSearchVO searchVO=searchVOList.get(i); + if (StringUtils.isNotBlank(searchVO.getValue())) { + + + switch (searchVO.getType()) { + //多个正则查询 + case "regexp": + case "REGEXP": + if (i == 0) { + sql += tableName + searchVO.getField() + " " + "REGEXP" + " " + "\'" + searchVO.getValue().replaceAll(",", "|").replaceAll("\\s*", "") + "\'"; + } else { + sql += " AND " + " " + tableName + searchVO.getField() + " " + "REGEXP" + " " + "\'" + searchVO.getValue().replaceAll(",", "|").replaceAll("\\s*", "") + "\'"; + } + break; + //模糊查询 + case "LIKE": + case "like": + if (i == 0) { + sql += tableName + searchVO.getField() + " " + "LIKE" + " " + "concat(concat('%','" + searchVO.getValue() + "'),'%') "; + } else { + sql += " AND " + " " + tableName + searchVO.getField() + " " + "LIKE" + " " + "concat(concat('%','" + searchVO.getValue() + "'),'%') "; + } + break; + //日期范围查询 + case "between": + case "BETWEEN": + String[] boundaryArray = searchVO.getValue().split(","); + if (i == 0) { + sql += "DATE_FORMAT(left(" + tableName + searchVO.getField() + ",10),'%Y-%m-%d')" + " " + "BETWEEN" + " " + "DATE_FORMAT(" + "\'" + boundaryArray[0].replaceAll("\\s*", "") + "\'" + ",'%Y-%m-%d')" + " AND " + "DATE_FORMAT(" + "\'" + boundaryArray[1].replaceAll("\\s*", "") + "\'" + ",'%Y-%m-%d')"; + } else { + sql += " AND " + " " + "DATE_FORMAT(left(" + tableName + searchVO.getField() + ",10),'%Y-%m-%d')" + " " + "BETWEEN" + " " + "DATE_FORMAT(" + "\'" + boundaryArray[0].replaceAll("\\s*", "") + "\'" + ",'%Y-%m-%d')" + " AND " + "DATE_FORMAT(" + "\'" + boundaryArray[1].replaceAll("\\s*", "") + "\'" + ",'%Y-%m-%d')"; + } + break; + case "equals": + case "EQUALS": + if (i == 0) { + sql += "DATE_FORMAT(" + tableName + searchVO.getField() + ",'%Y-%m-%d')" + " " + "=" + " " + "DATE_FORMAT(" + "\'" + searchVO.getValue() + "\'" + ",'%Y-%m-%d')"; + } else { + sql += " AND " + " " + "DATE_FORMAT(" + tableName + searchVO.getField() + ",'%Y-%m-%d')" + " " + "=" + " " + "DATE_FORMAT(" + "\'" + searchVO.getValue() + "\'" + ",'%Y-%m-%d')"; + } + break; + default: + } + + sqlBuilder.append(sql); + } + } + sqlInfo = sqlBuilder.toString(); + } + + return sqlInfo; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/StandExportUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/StandExportUtil.java new file mode 100644 index 00000000..3a9ae643 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/StandExportUtil.java @@ -0,0 +1,188 @@ +package com.adc.da.utils.util; + +import com.adc.da.common.SarTypeEnum; +import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 标准导出工具 + * @Author: super_liu + * date: 2020/9/16 14:09 + */ +public class StandExportUtil { + + private static final Logger logger = LoggerFactory.getLogger(StandExportUtil.class); + + + public static Workbook exportDatas (List datas, String standType) { + Workbook workbook = new XSSFWorkbook(); + try { + standType += "_STAND"; + StringBuilder attrBud = new StringBuilder(); + List detailsEOList = new ArrayList<>(); + Map attrInfoMap = new HashMap<>(); + if (SarTypeEnum.INLAND_STAND.getValue().equals(standType)) { + detailsEOList = InitStandAttrUtil.standInlandAttrFieldList; + } else { + detailsEOList = InitStandAttrUtil.standForeignAttrFieldList; + } + for (SarStandAttrDetails detailsEO : detailsEOList) { + if (!InitStandAttrUtil.fileFieldList.contains(detailsEO.getAttrField())) { + attrBud.append(detailsEO.getAttrName() + ","); + attrInfoMap.put(detailsEO.getAttrName(),detailsEO.getAttrField()); + } + } + String header = FieldConvertUtil.exportBaseFieldNames + "," + attrBud.toString(); + //国内导出去掉体系类别 + if (SarTypeEnum.INLAND_STAND.getValue().equals(standType)) { + header = header.replace(",体系类别",""); + } + if (SarTypeEnum.FOREIGN_STAND.getValue().equals(standType)) { + header = FieldConvertUtil.exportBaseFieldNamesForeign + "," + attrBud.toString(); + } + //创建工作表对象 + Sheet sheet = workbook.createSheet(); + // 创建头部 + createHeader(workbook,sheet,header); + // 创建数据 + createDatas(workbook,sheet,datas,header,attrInfoMap); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return workbook; + } + + public static void createHeader(Workbook workbook, Sheet sheet, String header){ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + Row rowHeader = sheet.createRow(0);//开始创建标题行 + if (StringUtils.isNotBlank(header)) { + String[] headerArr = header.split(","); + for (int i=0;i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); +// rowHeader.createCell(i).setCellStyle(cellStyle); + } + } + } + + public static void createDatas(Workbook workbook, Sheet sheet, List datas, + String header, Map attrInfoMap) throws Exception{ + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + if (datas != null && !datas.isEmpty()) { + for (int i=0;i < datas.size(); i++) { + SarStandardsInfo sarStandardsInfoEO = datas.get(i); + Row row = sheet.createRow(i+1); + String[] headerArr = header.split(","); + int sheetNum = 0; + for (String headerName : headerArr) { + String value = getValueByName(headerName,sarStandardsInfoEO,attrInfoMap); + if (StringUtils.isBlank(value) || "null".equals(value)) { + value = ""; + } + row.createCell(sheetNum).setCellValue(value); + sheetNum++; + } + } + } + } + + // 根据表头返回相应值 + public static String getValueByName (String name,SarStandardsInfo sarStandardsInfoEO,Map attrInfoMap) throws Exception{ + String value = ""; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH"); + Map attrValueMap = sarStandardsInfoEO.getAttrInfoMap(); + switch (name) { + case "标准性质": + value = verifyBean(sarStandardsInfoEO.getStandNatureShow()); + break; + case "是否纳入认证清单": + boolean notBlank = StringUtils.isNotBlank(sarStandardsInfoEO.getIsRelateAccess()); + if (notBlank) { + switch (sarStandardsInfoEO.getIsRelateAccess()){ + case "2": value="否"; break; + case "1": value="是"; break; + default:value=""; + } + }else { + value = "否"; + } + break; + case "标准体系": + value = verifyBean(sarStandardsInfoEO.getStandSystem()); + break; + case "适用区域": + value = verifyBean(sarStandardsInfoEO.getCountryShow()); + break; + case "标准类别": + value = verifyBean(sarStandardsInfoEO.getStandSortShow()); + break; + case "重要度": + if (StringUtils.isNotBlank(sarStandardsInfoEO.getIsRelateAccess())) { + if ("1".equals(sarStandardsInfoEO.getIsRelateAccess())) { + sarStandardsInfoEO.setIsRelateAccess("A"); + } else { + sarStandardsInfoEO.setIsRelateAccess("B"); + } + } + value = sarStandardsInfoEO.getIsRelateAccess(); + break; + case "标准编号": + value = verifyBean(sarStandardsInfoEO.getStandNumber()); + break; + case "标准年份": + value = verifyBean(sarStandardsInfoEO.getStandYear()); + break; + case "中文名称": + value = verifyBean(sarStandardsInfoEO.getStandName()); + break; + case "英文名称": + value = verifyBean(sarStandardsInfoEO.getStandEnName()); + break; + case "文本状态": + value = verifyBean(sarStandardsInfoEO.getStandTextStatusShow()); + break; + case "发布日期": + if (sarStandardsInfoEO.getIssueTime() != null) { + String issueTime = sarStandardsInfoEO.getIssueTime(); + if (issueTime.length() > 10) { + issueTime = issueTime.substring(0,10); + } + value = issueTime; + } + break; + case "文本说明": + value = verifyBean(sarStandardsInfoEO.getSynopsis()); + break; + default: + String field = attrInfoMap.get(name); + if (attrValueMap != null) { + value = String.valueOf(attrValueMap.get(field)); + } + break; + } + return value; + } + + private static String verifyBean(String value){ + String val = ""; + if(StringUtils.isNotBlank(value)){ + val =value; + }else { + val = ""; + } + return val; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/UserUtils.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/UserUtils.java new file mode 100644 index 00000000..0e0f99eb --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/UserUtils.java @@ -0,0 +1,225 @@ +//package com.adc.da.utils.util; +// +//import com.adc.da.slrs.standardSplit.service.UserEOService; +//import com.adc.da.sys.entity.MenuEO; +//import com.adc.da.sys.entity.RoleEO; +//import com.adc.da.sys.entity.UserEO; +//import com.adc.da.util.utils.CollectionUtils; +//import com.adc.da.util.utils.SpringContextHolder; +//import com.google.common.collect.Maps; +//import org.apache.commons.lang3.SerializationUtils; +//import org.apache.commons.lang3.StringUtils; +//import org.apache.shiro.SecurityUtils; +//import org.apache.shiro.UnavailableSecurityManagerException; +//import org.apache.shiro.authz.SimpleAuthorizationInfo; +//import org.apache.shiro.session.InvalidSessionException; +//import org.apache.shiro.subject.Subject; +//import java.util.List; +//import java.util.Map; +// +//public class UserUtils { +// +// public static final String CURRENT_USER = "currentUser"; +// public static final String CACHE_ROLE_LIST = "roleList"; +// public static final String CACHE_MENU_LIST = "menuList"; +// public static final String CACHE_MENU_TREE = "menuTree"; +// public static final String CACHE_AREA_LIST = "areaList"; +// public static final String CACHE_OFFICE_LIST = "officeList"; +// +// private static UserEOService userService = SpringContextHolder.getBean(UserEOService.class); +//// private static MenuEOService menuService = SpringContextHolder.getBean(MenuEOService.class); +//// private static RoleEOService roleEOService = SpringContextHolder.getBean(RoleEOService.class); +//// +//// /** +//// * 退出 +//// */ +//// public static void logout() { +//// try { +//// SecurityUtils.getSubject().logout(); +//// } catch (UnavailableSecurityManagerException e) { +//// e.printStackTrace(); +//// } catch (InvalidSessionException e) { +//// e.printStackTrace(); +//// } +//// } +//// +//// /** +//// * 获取当前登录用户ID +//// * +//// */ +//// public static String getUserId() { +//// String userId = null; +//// try { +//// Subject subject = SecurityUtils.getSubject(); +//// SystemAuthorizingRealm.Principal principal = (SystemAuthorizingRealm.Principal) subject.getPrincipal(); +//// if (principal != null) { +//// userId = principal.getId(); +//// } +//// } catch (UnavailableSecurityManagerException e) { +//// } catch (InvalidSessionException e) { +//// } +//// return userId; +//// } +//// +//// /** +//// * 获取当前登录用户信息 +//// */ +//// public static UserEO getUser() throws NumberFormatException, Exception { +//// UserEO user = (UserEO) CacheUtils.getCache(CURRENT_USER); +//// if (user == null) { +//// String userId = getUserId(); +//// +//// if(StringUtils.isNotEmpty(userId)) { +////// UserEO userInDb = userService.selectByPrimaryKey(userId); +////// liwenxuan:上面的方法不能查出组织机构 +//// UserEO userInDb = userService.getUserWithRoles(userId); +//// user= SerializationUtils.clone(userInDb); +////// user = ObjectUtils.clone(userInDb); +//// user.setPassword(null); +//// CacheUtils.putCache(CURRENT_USER, user); +//// } +//// } +//// return user; +//// } +//// +//// public static void updateUserInfo(UserEO userVo) throws NumberFormatException, Exception { +//// UserEO user = (UserEO) CacheUtils.getCache(CURRENT_USER); +//// if (user != null) { +//// String userId = getUserId(); +//// +//// if (StringUtils.isNotEmpty(userId)) { +//// UserEO userInDb = userService.selectByPrimaryKey(userId); +//// userInDb.setUname(userVo.getUname()); +//// userService.save(userInDb); +//// +//// CacheUtils.removeCache(CURRENT_USER); +//// } +//// } +//// } +//// +// /** +// * 获取当前登录用户角色列表 +// */ +// public static List getRoleList() throws NumberFormatException, Exception { +// List roleList = (List) CacheUtils.getCache(CACHE_ROLE_LIST); +// if (roleList == null) { +// UserEO user = getUser(); +// if(user != null) { +// roleList = roleEOService.getSysRoleListByUserId(user.getUsid()); +// } +// CacheUtils.putCache(CACHE_ROLE_LIST, roleList); +// } +// return roleList; +// } +// +// public static String getRoleIds() throws NumberFormatException, Exception { +// List roleList = getRoleList(); +// if (CollectionUtils.isEmpty(roleList)) { +// return ""; +// } +// StringBuilder roleIds = new StringBuilder(); +// for (RoleEO sysRoleEO : roleList) { +// roleIds.append(sysRoleEO.getId()).append(","); +// } +// return roleIds.substring(0, roleIds.length() - 1); +// } +// +// +//// /** +//// * 获取当前登录用户菜单列表 +//// */ +//// public static List getMenuList() throws Exception { +//// List menuList = (List) CacheUtils.getCache(CACHE_MENU_LIST); +//// if (menuList == null) { +//// UserEO user = getUser(); +//// if (isAdmin(user)) { +//// menuList = menuService.findAll(); +//// } else { +//// menuList = menuService.listMenuEOByUserId(String.valueOf(user.getUsid())); +//// } +//// CacheUtils.putCache(CACHE_MENU_LIST, menuList); +//// } +//// return menuList; +//// } +//// +//// /** +//// * 获取当前登录用户菜单树 +//// * +//// */ +//// public static MenuEO getMenuTree() { +//// MenuEO menu = (MenuEO) CacheUtils.getCache(CACHE_MENU_TREE); +//// if (menu == null) { +////// menu = menuService.organizeListAsTree(menuService.selectByPrimaryKey(1), getMenuList()); +//// CacheUtils.putCache(CACHE_MENU_TREE, menu); +//// } +//// return menu; +//// } +//// +//// /** +//// * 判断用户是否是超级管理员 +//// * @param userVo +//// * @return +//// */ +//// public static boolean isAdmin(UserEO userVo) { +//// //todo +//// return userVo != null && userVo.getUsid().equals("1"); +//// } +//// +//// /** +//// * 获取用户菜单权限信息 +//// */ +//// public static SimpleAuthorizationInfo getAuthInfo() throws NumberFormatException, Exception { +//// SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); +//// List list = com.adc.da.login.util.UserUtils.getMenuList(); +//// for (MenuEO menu : list) { +//// if (StringUtils.isNotBlank(menu.getPermission())) { +//// // 添加基于Permission的权限信息 +//// for (String permission : StringUtils.split(menu.getPermission(), ",")) { +//// info.addStringPermission(permission); +//// } +//// } +//// } +//// return info; +//// } +//// +//// public static void flush() { +//// CacheUtils.removeCache(CURRENT_USER); +//// CacheUtils.removeCache(CACHE_MENU_LIST); +//// CacheUtils.removeCache(CACHE_MENU_TREE); +//// } +//// +//// +// private static final class CacheUtils { +// public static Object getCache(String key) { +// return getCache(key, null); +// } +// +// public static Object getCache(String key, Object defaultValue) { +// Object obj = getCacheMap().get(key); +// return obj == null ? defaultValue : obj; +// } +// +// public static void putCache(String key, Object value) { +// getCacheMap().put(key, value); +// } +// +// public static void removeCache(String key) { +// getCacheMap().remove(key); +// } +// +// public static Map getCacheMap() { +// Map map = Maps.newHashMap(); +// try { +// Subject subject = SecurityUtils.getSubject(); +// SystemAuthorizingRealm.Principal principal = (SystemAuthorizingRealm.Principal) subject.getPrincipal(); +// return principal != null ? principal.getCacheMap() : map; +// } catch (UnavailableSecurityManagerException e) { +// +// } catch (InvalidSessionException e) { +// +// } +// return map; +// } +// }; +// +//} diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/Utils.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/Utils.java new file mode 100644 index 00000000..7ec77930 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/Utils.java @@ -0,0 +1,74 @@ +package com.adc.da.utils.util; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; + +import java.text.MessageFormat; + +/** + * @Description: TODO + * @author: super_liu + * @date: 2021年06月01日 13:37 + */ +public class Utils { + + public static String format(String value, Object... paras) { + return MessageFormat.format(value, paras); + } + + + public static boolean isJson(String string) { + try { + JSONObject.parseObject(string); + return true; + } catch (Exception e) { + return false; + } + } + + //判断row是否为空 空返回true + public static boolean isRowEmpty(Row row) { + if (null == row) { + return true; + } + int firstCellNum = row.getFirstCellNum(); //第一个列位置 + int lastCellNum = row.getLastCellNum(); //最后一列位置 + int nullCellNum = 0; //空列数量 + for (int c = firstCellNum; c < lastCellNum; c++) { + Cell cell = row.getCell(c); + if (null == cell || CellType.BLANK == cell.getCellType()) { + nullCellNum ++; + continue; + } + String value = ""; + switch (cell.getCellType()) { + case NUMERIC: // 数字 + //如果为时间格式的内容 + value = String.valueOf(cell.getNumericCellValue()); + break; + case STRING: // 字符串 + value = cell.getStringCellValue(); + break; + case BOOLEAN: // Boolean + value = cell.getBooleanCellValue() + ""; + break; + case FORMULA: // 公式 + value = cell.getCellFormula() + ""; + break; + default: + break; + } + if (StringUtils.isEmpty(value)) { + nullCellNum ++; + } + } + //所有列都为空 + if (nullCellNum == (lastCellNum - firstCellNum)) { + return true; + } + return false; + } +} diff --git a/adc-da-slrs/src/main/lib/pageoffice4.5.0.9.jar b/adc-da-slrs/src/main/lib/pageoffice4.5.0.9.jar new file mode 100644 index 00000000..a308eed2 Binary files /dev/null and b/adc-da-slrs/src/main/lib/pageoffice4.5.0.9.jar differ diff --git a/adc-da-slrs/src/main/lib/poi-tl-1.5.1-SNAPSHOT.jar b/adc-da-slrs/src/main/lib/poi-tl-1.5.1-SNAPSHOT.jar new file mode 100644 index 00000000..f7f6ad3a Binary files /dev/null and b/adc-da-slrs/src/main/lib/poi-tl-1.5.1-SNAPSHOT.jar differ diff --git a/adc-da-slrs/src/main/lib/poseal.db b/adc-da-slrs/src/main/lib/poseal.db new file mode 100644 index 00000000..d215a9c0 Binary files /dev/null and b/adc-da-slrs/src/main/lib/poseal.db differ diff --git a/adc-da-slrs/src/main/lib/sqlite-jdbc-3.7.2.jar b/adc-da-slrs/src/main/lib/sqlite-jdbc-3.7.2.jar new file mode 100644 index 00000000..b0bec7b0 Binary files /dev/null and b/adc-da-slrs/src/main/lib/sqlite-jdbc-3.7.2.jar differ diff --git a/adc-da-slrs/src/main/lib/zip4j-1.3.1.jar b/adc-da-slrs/src/main/lib/zip4j-1.3.1.jar new file mode 100644 index 00000000..c0b03953 Binary files /dev/null and b/adc-da-slrs/src/main/lib/zip4j-1.3.1.jar differ diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/IssueTrackMapper/IssueTrackMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/IssueTrackMapper/IssueTrackMapper.xml new file mode 100644 index 00000000..bd2f2eed --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/IssueTrackMapper/IssueTrackMapper.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + issue.id,data_source,law_id,product_type,impl_time,impl_require + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarBussStandItemVal/SarBussStandItemValMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarBussStandItemVal/SarBussStandItemValMapper.xml new file mode 100644 index 00000000..656de901 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarBussStandItemVal/SarBussStandItemValMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarCompResAssess/SarCompResAssessMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarCompResAssess/SarCompResAssessMapper.xml new file mode 100644 index 00000000..78774059 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarCompResAssess/SarCompResAssessMapper.xml @@ -0,0 +1,344 @@ + + + + + + + + + + + + + + + + + + + + + + + id, res_type, res_id, assess_result, assess_color, assess_time, process_num, process_state, created_time, modify_time + + + + id, res_type, res_id, assess_result, assess_color, assess_time, process_num, process_state, created_time, modify_time,standCode,standName + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and res_type ${resTypeOperator} #{resType} + + + and res_id ${resIdOperator} #{resId} + + + and assess_result ${assessResultOperator} #{assessResult} + + + and assess_color ${assessColorOperator} #{assessColor} + + + and assess_time ${assessTimeOperator} #{assessTime} + + + and assess_time >= #{assessTime1} + + + and assess_time <= #{assessTime2} + + + and process_num ${processNumOperator} #{processNum} + + + and process_state ${processStateOperator} #{processState} + + + and created_time ${createdTimeOperator} #{createdTime} + + + and created_time >= #{createdTime1} + + + and created_time <= #{createdTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + AND standCode Like concat(concat('%',#{standCode}),'%') + + + AND standName Like concat(concat('%',#{standName}),'%') + + + and res_type = #{standType} + + + + + + + + insert into SAR_COMP_RES_ASSESS() + values (#{id}, #{resType}, #{resId}, #{assessResult}, #{assessColor}, #{assessTime}, #{processNum}, #{processState}, #{createdTime}, #{modifyTime}) + + + + + + insert into SAR_COMP_RES_ASSESS + + id, + res_type, + res_id, + assess_result, + assess_color, + assess_time, + process_num, + process_state, + created_time, + modify_time, + + + #{id}, + #{resType}, + #{resId}, + #{assessResult}, + #{assessColor}, + #{assessTime}, + #{processNum}, + #{processState}, + #{createdTime}, + #{modifyTime}, + + + + + + update SAR_COMP_RES_ASSESS + set res_type = #{resType}, + res_id = #{resId}, + assess_result = #{assessResult}, + assess_color = #{assessColor}, + assess_time = #{assessTime}, + process_num = #{processNum}, + process_state = #{processState}, + created_time = #{createdTime}, + modify_time = #{modifyTime} + where id = #{id} + + + + + update SAR_COMP_RES_ASSESS + + + res_type = #{resType}, + + + res_id = #{resId}, + + + assess_result = #{assessResult}, + + + assess_color = #{assessColor}, + + + assess_time = #{assessTime}, + + + process_num = #{processNum}, + + + process_state = #{processState}, + + + created_time = #{createdTime}, + + + modify_time = #{modifyTime}, + + + where id = #{id} + + + + + + + + delete from SAR_COMP_RES_ASSESS + where id = #{value} + + + + + + + + + + + + + + + + + + + + + + + update SAR_COMP_RES_ASSESS + + PROCESS_STATE = '1', + + where id = #{id} + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarCompStatusInfo/SarCompStatusInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarCompStatusInfo/SarCompStatusInfoMapper.xml new file mode 100644 index 00000000..94485b74 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarCompStatusInfo/SarCompStatusInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarFileSplitItems/SarFileSplitItemsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarFileSplitItems/SarFileSplitItemsMapper.xml new file mode 100644 index 00000000..a49e4d9f --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarFileSplitItems/SarFileSplitItemsMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandAttrInfo/SarStandAttrInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandAttrInfo/SarStandAttrInfoMapper.xml new file mode 100644 index 00000000..17105f6a --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandAttrInfo/SarStandAttrInfoMapper.xml @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + id, stand_id, creation_user, valid_flag, creation_time, modify_time + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and stand_id ${standIdOperator} #{standId} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and GZZXX ${GZZXXOperator} #{GZZXX} + + + + + + + + insert into SAR_STAND_ATTR_INFO() + values (#{id, jdbcType=VARCHAR}, #{standId, jdbcType=VARCHAR}, #{creationUser, jdbcType=VARCHAR}, #{validFlag, jdbcType=VARCHAR}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}) + + + + + + insert into SAR_STAND_ATTR_INFO + + id, + stand_id, + creation_user, + valid_flag, + creation_time, + modify_time, + + + #{id, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{validFlag, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + + + + + + update SAR_STAND_ATTR_INFO + set stand_id = #{standId}, + creation_user = #{creationUser}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime} + where id = #{id} + + + + + update SAR_STAND_ATTR_INFO + + + stand_id = #{standId}, + + + creation_user = #{creationUser}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + where id = #{id} + + + + + + + + delete from SAR_STAND_ATTR_INFO + where id = #{value} + + + + + + + + + + + + + + alter table SAR_STAND_ATTR_INFO + add ${fieldInfo} + + + + + alter table SAR_STAND_ATTR_INFO + drop COLUMN ${fieldInfo} + + + + + + + + ALTER table SAR_STAND_ATTR_INFO + MODIFY ${fieldInfo} + + + + + + + + + + insert into SAR_STAND_ATTR_INFO(${fieldInfo}) + values (${fieldValue}) + + + + delete from SAR_STAND_ATTR_INFO + where stand_id = #{standId} + + + + update SAR_STAND_ATTR_INFO set ${field}=#{value} + where stand_id = #{standId} + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItemVal/SarStandItemValMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItemVal/SarStandItemValMapper.xml new file mode 100644 index 00000000..7537fd0c --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItemVal/SarStandItemValMapper.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + property_type, item_id, id, modify_time, creation_time, valid_flag, property_val + + + + + where 1=1 + + + and property_type ${propertyTypeOperator} #{propertyType} + + + and item_id ${itemIdOperator} #{itemId} + + + and id ${idOperator} #{id} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and property_val ${propertyValOperator} #{propertyVal} + + + + + + + + insert into SAR_STAND_ITEM_VAL() + values (#{propertyType, jdbcType=VARCHAR}, #{itemId, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}, #{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{propertyVal, jdbcType=VARCHAR}) + + + + + + insert into SAR_STAND_ITEM_VAL + + property_type, + item_id, + id, + modify_time, + creation_time, + valid_flag, + property_val, + + + #{propertyType, jdbcType=VARCHAR}, + #{itemId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{propertyVal, jdbcType=VARCHAR}, + + + + + + update SAR_STAND_ITEM_VAL + set property_type = #{propertyType}, + item_id = #{itemId}, + modify_time = #{modifyTime}, + creation_time = #{creationTime}, + valid_flag = #{validFlag}, + property_val = #{propertyVal} + where id = #{id} + + + + + update SAR_STAND_ITEM_VAL + + + property_type = #{propertyType}, + + + item_id = #{itemId}, + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + property_val = #{propertyVal}, + + + where id = #{id} + + + + + + + + delete from SAR_STAND_ITEM_VAL + where id = #{value} + + + + + + + + + + + + + + delete from SAR_STAND_ITEM_VAL + where ITEM_ID = #{itemid} + + + + UPDATE SAR_STAND_ITEM_VAL SET VALID_FLAG = 1 + where ITEM_ID = #{itemid} + + + + delete from SAR_STAND_ITEM_VAL + where item_id in + + #{item} + + + + + + insert into SAR_STAND_ITEM_VAL + + property_type, + item_id, + id, + modify_time, + creation_time, + valid_flag, + property_val, + + + #{item.propertyType, jdbcType=VARCHAR}, + #{item.itemId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}, + #{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.propertyVal, jdbcType=VARCHAR}, + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItems/SarStandItemsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItems/SarStandItemsMapper.xml new file mode 100644 index 00000000..ae17f0f1 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandItems/SarStandItemsMapper.xml @@ -0,0 +1,821 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SAR_STAND_ITEMS.modify_time, SAR_STAND_ITEMS.creation_time, SAR_STAND_ITEMS.creation_user, SAR_STAND_ITEMS.valid_flag, SAR_STAND_ITEMS.remarks, SAR_STAND_ITEMS.responsible_unit, SAR_STAND_ITEMS.energy_kind, SAR_STAND_ITEMS.apply_arctic, tack_time, parts, SAR_STAND_ITEMS.items_name, SAR_STAND_ITEMS.items_num, SAR_STAND_ITEMS.stand_id, SAR_STAND_ITEMS.id + ,TS_ORG.org_name as responsibleUnitShow,SAR_STAND_ITEMS.MAINPOINTS_IMPEMENTATION,SAR_STAND_ITEMS.TERMS_CONDITIONS,tsFo.UNAME as foShow,SAR_STAND_ITEMS.duty_engineer,SAR_STAND_ITEMS.svpps, + SAR_STAND_ITEMS.claim_type,SAR_STAND_ITEMS.bus_stand_cover,SAR_STAND_ITEMS.file_type,dicClaimType.DIC_TYPE_NAME as claimTypeShow,tsdutyEngineer.UNAME as dutyEngineerShow,SAR_STAND_ITEMS.fo + + + + SAR_STAND_ITEMS.modify_time, SAR_STAND_ITEMS.creation_time, SAR_STAND_ITEMS.creation_user, SAR_STAND_ITEMS.valid_flag, SAR_STAND_ITEMS.remarks, SAR_STAND_ITEMS.responsible_unit, + SAR_STAND_ITEMS.energy_kind, SAR_STAND_ITEMS.apply_arctic, tack_time, parts, SAR_STAND_ITEMS.items_name, SAR_STAND_ITEMS.items_num, SAR_STAND_ITEMS.stand_id, SAR_STAND_ITEMS.id + ,SAR_STAND_ITEMS.MAINPOINTS_IMPEMENTATION,SAR_STAND_ITEMS.TERMS_CONDITIONS,SAR_STAND_ITEMS.duty_engineer,SAR_STAND_ITEMS.svpps, + SAR_STAND_ITEMS.claim_type,SAR_STAND_ITEMS.bus_stand_cover,SAR_STAND_ITEMS.file_type,SAR_STAND_ITEMS.fo + + + + + left join SAR_STANDARDS_INFO on (SAR_STANDARDS_INFO.id = SAR_STAND_ITEMS.stand_id and + SAR_STANDARDS_INFO.valid_flag=0) + left join TS_DICTYPE dicClaimType on (dicClaimType.dic_type_code = SAR_STAND_ITEMS.claim_type and + dicClaimType.dic_id is + not null and dicClaimType.valid_flag = 0) + left join TS_USER tsdutyEngineer on (tsdutyEngineer.USID = SAR_STAND_ITEMS.duty_engineer and + tsdutyEngineer.valid_flag=0 + and tsdutyEngineer.DISABLE_FLAG=0) + left join TS_USER tsFo on (tsFo.USID = SAR_STAND_ITEMS.fo and tsFo.valid_flag=0 + and tsFo.DISABLE_FLAG=0) + where 1=1 + + + and SAR_STAND_ITEMS.file_type = #{fileType} + + + and SAR_STAND_ITEMS.modify_time ${modifyTimeOperator} #{modifyTime} + + + and SAR_STAND_ITEMS.modify_time >= #{modifyTime1} + + + and SAR_STAND_ITEMS.modify_time <= #{modifyTime2} + + + and SAR_STAND_ITEMS.creation_time ${creationTimeOperator} #{creationTime} + + + and SAR_STAND_ITEMS.creation_time >= #{creationTime1} + + + and SAR_STAND_ITEMS.creation_time <= #{creationTime2} + + + and SAR_STAND_ITEMS.creation_user ${creationUserOperator} #{creationUser} + + + and SAR_STAND_ITEMS.valid_flag ${validFlagOperator} #{validFlag} + + + and SAR_STAND_ITEMS.remarks ${remarksOperator} #{remarks} + + + and SAR_STAND_ITEMS.responsible_unit = #{responsibleUnit} + + + and SAR_STAND_ITEMS.energy_kind ${energyKindOperator} #{energyKind} + + + and SAR_STAND_ITEMS.apply_arctic ${applyArcticOperator} #{applyArctic} + + + and SAR_STAND_ITEMS.tack_time ${tackTimeOperator} #{tackTime} + + + and SAR_STAND_ITEMS.tack_time >= #{tackTime1} + + + and SAR_STAND_ITEMS.tack_time <= #{tackTime2} + + + and SAR_STAND_ITEMS.parts like concat(concat('%', #{parts}),'%') + + + and (SAR_STAND_ITEMS.items_name like concat(concat('%', #{nameOrRequest}),'%') or + SAR_STAND_ITEMS.TERMS_CONDITIONS like concat(concat('%', #{nameOrRequest}),'%')) + + + and SAR_STAND_ITEMS.items_name ${itemsNameOperator} #{itemsName} + + + and SAR_STAND_ITEMS.items_num ${itemsNumOperator} #{itemsNum} + + + and SAR_STAND_ITEMS.stand_id ${standIdOperator} #{standId} + + + and ((SAR_STANDARDS_INFO.STAND_SORT || ' ' || SAR_STANDARDS_INFO.STAND_NUMBER || '-' || + SAR_STANDARDS_INFO.STAND_YEAR like concat(concat('%',#{standNum}),'%') and SAR_STANDARDS_INFO.STAND_YEAR + is not null) + or (SAR_STANDARDS_INFO.STAND_SORT || ' ' || SAR_STANDARDS_INFO.STAND_NUMBER like + concat(concat('%',#{standNum}),'%') + and SAR_STANDARDS_INFO.STAND_YEAR is null)) + + + and SAR_STAND_ITEMS.id ${idOperator} #{id} + + + and SAR_STAND_ITEMS.id != #{noId} + + + and SAR_PRODUCT_SAR_STATE.product_id = #{productId} + + + and SAR_STAND_ITEMS.id in + + #{item} + + + + and (SAR_STAND_ITEMS.claim_type='L7N7EEDAPR' or SAR_STAND_ITEMS.claim_type='RENVECPFGT') + + + + + + + + + + + + + + + + + insert into SAR_STAND_ITEMS + + modify_time, + creation_time, + creation_user, + valid_flag, + remarks, + responsible_unit, + energy_kind, + apply_arctic, + tack_time, + parts, + items_name, + items_num, + stand_id, + id, + MAINPOINTS_IMPEMENTATION, + TERMS_CONDITIONS, + + fo, + duty_engineer, + svpps, + claim_type, + bus_stand_cover, + file_type + + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{creationUser, jdbcType=VARCHAR}, + #{validFlag, jdbcType=INTEGER}, + #{remarks, jdbcType=VARCHAR}, + #{responsibleUnit, jdbcType=VARCHAR}, + #{energyKind, jdbcType=VARCHAR}, + #{applyArctic, jdbcType=VARCHAR}, + #{tackTime, jdbcType=TIMESTAMP}, + #{parts, jdbcType=VARCHAR}, + #{itemsName, jdbcType=VARCHAR}, + #{itemsNum, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{mainPointImplementation,jdbcType=VARCHAR}, + #{termsConditions,jdbcType=CLOB}, + + #{fo, jdbcType=VARCHAR}, + #{dutyEngineer, jdbcType=VARCHAR}, + #{svpps, jdbcType=VARCHAR}, + #{claimType, jdbcType=VARCHAR}, + #{busStandCover, jdbcType=VARCHAR}, + #{fileType, jdbcType=VARCHAR} + + + + + + update SAR_STAND_ITEMS + set modify_time = #{modifyTime}, + creation_time = #{creationTime}, + creation_user = #{creationUser}, + valid_flag = #{validFlag}, + remarks = #{remarks}, + responsible_unit = #{responsibleUnit}, + energy_kind = #{energyKind}, + apply_arctic = #{applyArctic}, + tack_time = #{tackTime}, + parts = #{parts}, + items_name = #{itemsName}, + items_num = #{itemsNum}, + stand_id = #{standId} + where id = #{id} + + + + + update SAR_STAND_ITEMS + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + creation_user = #{creationUser}, + + + valid_flag = #{validFlag}, + + + remarks = #{remarks}, + + + responsible_unit = #{responsibleUnit}, + + + energy_kind = #{energyKind}, + + + apply_arctic = #{applyArctic}, + + + tack_time = #{tackTime}, + + + tack_time = null, + + + parts = #{parts}, + + + items_name = #{itemsName}, + + + items_num = #{itemsNum}, + + + stand_id = #{standId}, + + + MAINPOINTS_IMPEMENTATION = #{mainPointImplementation}, + + + TERMS_CONDITIONS = #{termsConditions,jdbcType=CLOB}, + + + + fo = #{fo}, + + + duty_engineer = #{dutyEngineer}, + + + svpps = #{svpps}, + + + claim_type = #{claimType}, + + + bus_stand_cover = #{busStandCover}, + + + where id = #{id} + + + + + + + + delete from SAR_STAND_ITEMS + where id = #{value} + + + + + + + + + + + + + + and stand_id=#{standId} + + + + and file_type=#{fileType} + + + + and ITEMS_NAME like CONCAT('%', #{itemsName},'%') + + + and XCXSSRQ like concat('%', #{XCXSSRQ},'%') + + + and ZCCSSRQ like concat('%',#{ZCCSSRQ},'%') + + + + + + + + + + + + + + + + + + + + + insert into SAR_STAND_ITEMS(svpps,fo,file_type,modify_time,creation_time,creation_user,valid_flag,apply_arctic, + items_name,items_num,stand_id,id,terms_conditions,responsible_unit,duty_engineer) + values + + (#{item.svpps, jdbcType=VARCHAR}, + #{item.fo, jdbcType=VARCHAR}, + #{item.fileType, jdbcType=VARCHAR}, + #{item.modifyTime, jdbcType=DATE}, + #{item.creationTime, jdbcType=DATE}, + #{item.creationUser, jdbcType=VARCHAR}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.applyArctic, jdbcType=VARCHAR}, + #{item.itemsName, jdbcType=VARCHAR}, + #{item.itemsNum, jdbcType=VARCHAR}, + #{item.standId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}, + #{item.termsConditions,jdbcType=VARCHAR}, + #{item.responsibleUnit,jdbcType=VARCHAR}, + #{item.dutyEngineer,jdbcType=VARCHAR} + ) + + + + + + update SAR_STAND_ITEMS + + + svpps = #{item.svpps}, + + + fo = #{item.fo}, + + + file_type = #{item.fileType}, + + + modify_time = #{item.modifyTime}, + + + remarks = #{item.remarks}, + + + apply_arctic = #{item.applyArctic}, + + + items_name = #{item.itemsName}, + + + items_num = #{item.itemsNum}, + + + stand_id = #{item.standId}, + + + TERMS_CONDITIONS = #{item.termsConditions,jdbcType=CLOB}, + + + where id = #{item.id, jdbcType=VARCHAR} + + ; + + + + delete from SAR_STAND_ITEMS + where stand_id = #{standId} + + and file_type = #{fileType} + + + + + delete from SAR_STAND_ITEMS + where stand_id = #{standId} + + and file_type = #{fileType} + + + and items_num in + + #{itemNum} + + + + + + delete from SAR_STAND_ITEMS + where id in + + #{item} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml new file mode 100644 index 00000000..5197d677 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + valid_flag, menu_id, stand_id, id + + + + + where 1=1 + + + and valid_flag = #{validFlag} + + + and menu_id = #{menuId} + + + and stand_id = #{standId} + + + and id = #{id} + + + + + + delete from SAR_STAND_MENU + where stand_id = #{value} + + + + + + + update SAR_STAND_MENU + + + menu_id = #{menuId}, + + + where stand_id = #{standId} + and MENU_ID in + + #{item} + + + + + delete from SAR_STAND_MENU + where stand_id = #{standId, jdbcType=VARCHAR} and MENU_ID = #{menuId, jdbcType=VARCHAR} + + + + delete from SAR_STAND_MENU + where stand_id = #{standId} + and MENU_ID in + + #{item} + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarUpdLog/SarUpdLogMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarUpdLog/SarUpdLogMapper.xml new file mode 100644 index 00000000..7995e6de --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarUpdLog/SarUpdLogMapper.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + SAR_UPD_LOG.id, sar_type, sar_id, content, SAR_UPD_LOG.creation_time,SAR_UPD_LOG.creation_user + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and sar_type ${sarTypeOperator} #{sarType} + + + and sar_id ${sarIdOperator} #{sarId} + + + and content ${contentOperator} #{content} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + + + + + + insert into SAR_UPD_LOG() + values (#{id, jdbcType=VARCHAR}, #{sarType, jdbcType=VARCHAR}, #{sarId, jdbcType=VARCHAR}, #{content, jdbcType=CLOB}, #{creationTime, jdbcType=TIMESTAMP},#{creationUser, jdbcType=VARCHAR}) + + + + + + insert into SAR_UPD_LOG + + id, + sar_type, + sar_id, + content, + creation_time, + creation_user, + + + #{id, jdbcType=VARCHAR}, + #{sarType, jdbcType=VARCHAR}, + #{sarId, jdbcType=VARCHAR}, + #{content, jdbcType=CLOB}, + #{creationTime, jdbcType=TIMESTAMP}, + #{creationUser, jdbcType=VARCHAR}, + + + + + + update SAR_UPD_LOG + set sar_type = #{sarType}, + sar_id = #{sarId}, + content = #{content}, + creation_time = #{creationTime} + where id = #{id} + + + + + update SAR_UPD_LOG + + + sar_type = #{sarType}, + + + sar_id = #{sarId}, + + + content = #{content}, + + + creation_time = #{creationTime}, + + + creation_user = #{creationUser}, + + + where id = #{id} + + + + + + + + delete from SAR_UPD_LOG + where id = #{value} + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/adc-da-slrs/SarStandUnqualifiedMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/adc-da-slrs/SarStandUnqualifiedMapper.xml new file mode 100644 index 00000000..f8a704c8 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/adc-da-slrs/SarStandUnqualifiedMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/askQuestions/AskQuestionsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/askQuestions/AskQuestionsMapper.xml new file mode 100644 index 00000000..3873c0b7 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/askQuestions/AskQuestionsMapper.xml @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/esMatingRelation/EsMatingRelationMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/esMatingRelation/EsMatingRelationMapper.xml new file mode 100644 index 00000000..c86ee615 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/esMatingRelation/EsMatingRelationMapper.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanLogMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanLogMapper.xml new file mode 100644 index 00000000..dbc6fa29 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanLogMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanMapper.xml new file mode 100644 index 00000000..adb470c0 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/esRevisePlan/EsRevisePlanMapper.xml @@ -0,0 +1,554 @@ + + + + + + LIMIT ${(page-1) * pageSize},${pageSize} + + + + + id, + es_name, + plan_status, + revise_status, + drafter, + res_person, + wg_leader, + draft_time, + release_time, + unit, + rqb_json as rqbJson, + ts_json as tsJson, + area, + qblb, + (select sar_bussioness_stand.STAND_NAME from sar_bussioness_stand where sar_bussioness_stand.ID = rqb_json )as rqbName, + (select sar_bussioness_stand.STAND_CODE from sar_bussioness_stand where sar_bussioness_stand.ID = rqb_json )as rqbCode, + (select group_concat(ts_institution.name order by ts_institution.name) from ts_institution where find_in_set(ts_institution.id,unit) ORDER BY find_in_set(ts_institution.id,unit)) as unitName, + (SELECT GROUP_CONCAT(UNAME) from ts_user WHERE find_in_set(USID,drafter) ) as drafterName, + (SELECT GROUP_CONCAT(sar_menu_standard.MENU_NAME) from sar_menu_standard WHERE find_in_set(sar_menu_standard.ID,es_revise_plan.ts_json) ) as tsJsonName, + (SELECT GROUP_CONCAT(UNAME) from ts_user WHERE find_in_set(USID,res_person) ) as res_personName, + (SELECT GROUP_CONCAT(UNAME) from ts_user WHERE find_in_set(USID,wg_leader) ) as wg_leaderName + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and es_name like concat('%',#{esName},'%') + + + and area = #{area} + + + and plan_status in + + #{item} + + + + and revise_status = #{reviseStatus} + + + and drafter = #{drafter} + + + and res_person = #{resPerson} + + + and wg_leader = #{wgLeader} + + + and DATE_FORMAT(draft_time,'%Y-%m-%d')=DATE_FORMAT(#{draftTime},'%Y-%m-%d') + + + and DATE_FORMAT(release_time,'%Y-%m-%d')=DATE_FORMAT(#{releaseTime},'%Y-%m-%d') + + + and (select group_concat(ts_institution.name) from ts_institution where find_in_set(ts_institution.id,unit)) like concat('%',#{unit},'%') + + + + + + + + + + + + + + update es_revise_plan + + + id = #{id}, + + + es_name = #{esName}, + + + plan_status = #{planStatus}, + + + revise_status = #{reviseStatus}, + + + drafter = #{drafter}, + + + res_person = #{resPerson}, + + + wg_leader = #{wgLeader}, + + + draft_time = #{draftTime}, + + + release_time = #{releaseTime}, + + + unit = #{unit}, + + + rqb_json=#{rqbJson}, + + + ts_json=#{tsJson}, + + + area=#{area}, + + + es_mating_relations=#{esMatingRelations}, + + + es_stand_relations=#{esStandRelations}, + + + is_relate=#{isRelate}, + + + use_level=#{useLevel}, + + + technologic=#{technologic}, + + + buss_sort=#{bussSort}, + + + LXD=#{lxd}, + + + where id = #{id} + + + + insert into es_revise_plan + + + id, + + + es_name, + + + plan_status, + + + revise_status, + + + drafter, + + + res_person, + + + wg_leader, + + + draft_time, + + + release_time, + + + unit, + + + rqb_json, + + + ts_json, + + + area, + + + es_mating_relations, + + + es_stand_relations, + + + is_relate, + + + use_level, + + + technologic, + + + buss_sort, + + + LXD, + + + values + + + #{id}, + + + #{esName}, + + + #{planStatus}, + + + #{reviseStatus}, + + + #{drafter}, + + + #{resPerson}, + + + #{wgLeader}, + + + #{draftTime}, + + + #{releaseTime}, + + + #{unit}, + + + #{rqbJson}, + + + #{tsJson}, + + + #{area}, + + + #{esMatingRelations}, + + + #{esStandRelations}, + + + #{isRelate}, + + + #{useLevel}, + + + #{technologic}, + + + #{bussSort}, + + + #{lxd}, + + + + + + delete from es_revise_plan where id = #{id} + + + + delete from es_revise_plan where id in + + #{id} + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/esStandRelation/EsStandRelationMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/esStandRelation/EsStandRelationMapper.xml new file mode 100644 index 00000000..d56fdac9 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/esStandRelation/EsStandRelationMapper.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/evaluationIndex/EvaluationIndexMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/evaluationIndex/EvaluationIndexMapper.xml new file mode 100644 index 00000000..bfd205dd --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/evaluationIndex/EvaluationIndexMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/fileMaterialCenter/FileMaterialMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/fileMaterialCenter/FileMaterialMapper.xml new file mode 100644 index 00000000..886a9f25 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/fileMaterialCenter/FileMaterialMapper.xml @@ -0,0 +1,74 @@ + + + + + + UPDATE file_material + SET is_top = ( + ( + SELECT + Max(is_top) + FROM + (SELECT * FROM file_material) AS x + ) + 1 + ) + WHERE + id = #{id} + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/materialCerter/MaterialMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/materialCerter/MaterialMapper.xml new file mode 100644 index 00000000..523a9b7f --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/materialCerter/MaterialMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/MsgDynamicInfoEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/MsgDynamicInfoEOMapper.xml new file mode 100644 index 00000000..46fd4679 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/MsgDynamicInfoEOMapper.xml @@ -0,0 +1,564 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + is_pic_msg,modify_time, creation_time, valid_flag, pub_org, pub_user, pub_time, link_uri, title, msg_mode, + msg_type, id, content,content_text,save_status,save_level,relevent_stand,relevent_laws,data_text, + relevent_group,source + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and pub_org ${pubOrgOperator} #{pubOrg} + + + and pub_user ${pubUserOperator} #{pubUser} + + + and pub_time ${pubTimeOperator} #{pubTime} + + + and pub_time >= #{pubTime1} + + + and pub_time <= #{pubTime2} + + + and link_uri ${linkUriOperator} #{linkUri} + + + and content ${contentOperator} #{content} + + + and title ${titleOperator} concat(concat('%',#{title}),'%') + + + and msg_mode ${msgModeOperator} #{msgMode} + + + and msg_type ${msgTypeOperator} #{msgType} + + + and (msg_type = 'INLAND' or msg_type = 'FOREIGN') + + + and id ${idOperator} #{id} + + + and is_pic_msg ${isPicMsgOperator} #{isPicMsg} + + + and save_level ${isPicMsgOperator} #{saveLevel} + + + and relevent_stand ${isPicMsgOperator} #{releventStand} + + + and relevent_laws ${isPicMsgOperator} #{releventLaws} + + + and data_text ${isPicMsgOperator} #{dataText} + + + and source = #{source} + + + + + + + + insert into MSG_DYNAMIC_INFO() + values (#{isPicMsg},#{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{pubOrg, jdbcType=VARCHAR}, #{pubUser, jdbcType=VARCHAR}, #{pubTime, jdbcType=TIMESTAMP}, #{linkUri, jdbcType=VARCHAR},#{title, jdbcType=VARCHAR}, #{msgMode, jdbcType=VARCHAR}, #{msgType, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR},#{content, jdbcType=VARCHAR},#{contentText,jdbcType=CLOB}) + + + + + insert into MSG_DYNAMIC_INFO + + is_pic_msg, + modify_time, + creation_time, + valid_flag, + pub_org, + pub_user, + pub_time, + link_uri, + content, + title, + msg_mode, + msg_type, + id, + content_text, + save_status, + save_level, + relevent_stand + relevent_laws, + relevent_group, + data_text, + source, + + + #{isPicMsg, jdbcType=INTEGER}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{pubOrg, jdbcType=VARCHAR}, + #{pubUser, jdbcType=VARCHAR}, + #{pubTime, jdbcType=TIMESTAMP}, + #{linkUri, jdbcType=VARCHAR}, + #{content, jdbcType=VARCHAR}, + #{title, jdbcType=VARCHAR}, + #{msgMode, jdbcType=VARCHAR}, + #{msgType, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{contentText,jdbcType=CLOB}, + #{saveStatus,jdbcType=VARCHAR}, + #{saveLevel,jdbcType=VARCHAR}, + #{releventStand,jdbcType=VARCHAR}, + #{releventLaws,jdbcType=VARCHAR}, + #{releventGroup,jdbcType=VARCHAR}, + #{dataText,jdbcType=VARCHAR}, + #{source,jdbcType=VARCHAR}, + + + + + + update MSG_DYNAMIC_INFO + set modify_time = #{modifyTime}, + is_pic_msg = #{isPicMsg}, + creation_time = #{creationTime}, + valid_flag = #{validFlag}, + pub_org = #{pubOrg}, + pub_user = #{pubUser}, + pub_time = #{pubTime}, + link_uri = #{linkUri}, + content = #{content}, + content_text = #{contentText,jdbcType=CLOB}, + title = #{title}, + msg_mode = #{msgMode}, + msg_type = #{msgType} + where id = #{id} + + + + + update MSG_DYNAMIC_INFO + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + pub_org = #{pubOrg}, + + + pub_user = #{pubUser}, + + + pub_time = #{pubTime}, + + + link_uri = #{linkUri}, + + + content = #{content}, + + + title = #{title}, + + + msg_mode = #{msgMode}, + + + msg_type = #{msgType}, + + + is_pic_msg = #{isPicMsg}, + + + content_text = #{contentText,jdbcType=CLOB}, + + + save_status = #{saveStatus}, + + + save_level = #{saveLevel}, + + + relevent_stand = #{releventStand}, + + + relevent_laws = #{releventLaws}, + + + relevent_group = #{releventGroup}, + + + data_text = #{dataText}, + + + where id = #{id} + + + + + + + + + + UPDATE MSG_DYNAMIC_INFO + set valid_Flag = 1 + WHERE id = #{id} + + + + + + update MSG_DYNAMIC_INFO + set valid_flag = 1,save_status='delete' + where id in + + #{msgId} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/MsgFileEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/MsgFileEOMapper.xml new file mode 100644 index 00000000..97c099d2 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/MsgFileEOMapper.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, att_id, file_suffix, file_name, msg_id, id,file_type + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and att_id ${attIdOperator} #{attId} + + + and file_suffix ${fileSuffixOperator} #{fileSuffix} + + + and file_name ${fileNameOperator} #{fileName} + + + and msg_id ${msgIdOperator} #{msgId} + + + and id ${idOperator} #{id} + + + and file_type ${fileTypeOperator} #{fileType} + + + + + + + + insert into MSG_FILE() + values (#{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{attId, jdbcType=VARCHAR}, #{fileSuffix, jdbcType=VARCHAR}, #{fileName, jdbcType=VARCHAR}, #{msgId, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR},#{fileType, jdbcType=VARCHAR}) + + + + + + insert into MSG_FILE + + modify_time, + creation_time, + valid_flag, + att_id, + file_suffix, + file_name, + msg_id, + id, + file_type, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{attId, jdbcType=VARCHAR}, + #{fileSuffix, jdbcType=VARCHAR}, + #{fileName, jdbcType=VARCHAR}, + #{msgId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{fileType, jdbcType=VARCHAR}, + + + + + + update MSG_FILE + set modify_time = #{modifyTime}, + creation_time = #{creationTime}, + valid_flag = #{validFlag}, + att_id = #{attId}, + file_suffix = #{fileSuffix}, + file_name = #{fileName}, + msg_id = #{msgId}, + file_type = #{fileType} + where id = #{id} + + + + + update MSG_FILE + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + att_id = #{attId}, + + + file_suffix = #{fileSuffix}, + + + file_name = #{fileName}, + + + msg_id = #{msgId}, + + + file_type = #{fileType}, + + + + where msg_file.id in + + #{id} + + + + + + update MSG_FILE + set valid_flag = 1 + where msg_id in + + #{msgId} + + + + + + + + delete from MSG_FILE + where id = #{value} + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/SarStandAndLawsEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/SarStandAndLawsEOMapper.xml new file mode 100644 index 00000000..f4ffcda1 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/msgDynamicInfo/SarStandAndLawsEOMapper.xml @@ -0,0 +1,532 @@ + + + + + + id,showNumber,country,showName,typeShow,standYear,issueTime,putTime,productPutTime,newproductPutTime,standStateShow,responsibleUnitId + ,responsibleUnitName,categoryShow,applyArcticShow,natureShow + + + + where 1=1 + + + and typeShow like concat(concat('%',#{typeShow}),'%') + + + and showNumber like concat(concat('%',#{showNumber}),'%') + + + and showName like concat(concat('%',#{showName}),'%') + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/otConvertMq/OtConvertMqMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/otConvertMq/OtConvertMqMapper.xml new file mode 100644 index 00000000..687401d3 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/otConvertMq/OtConvertMqMapper.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, att_id, file_path, user_id, mq_state, mq_code, id + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and att_id ${attIdOperator} #{attId} + + + and file_path ${filePathOperator} #{filePath} + + + and user_id ${userIdOperator} #{userId} + + + and mq_state ${mqStateOperator} #{mqState} + + + and mq_code ${mqCodeOperator} #{mqCode} + + + and id ${idOperator} #{id} + + + + + + + + insert into OT_CONVERT_MQ() + values (#{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{attId, jdbcType=VARCHAR}, #{filePath, jdbcType=VARCHAR}, #{userId, jdbcType=VARCHAR}, #{mqState, jdbcType=INTEGER}, #{mqCode, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}) + + + + + + insert into OT_CONVERT_MQ + + modify_time, + creation_time, + valid_flag, + att_id, + file_path, + user_id, + mq_state, + mq_code, + id, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{attId, jdbcType=VARCHAR}, + #{filePath, jdbcType=VARCHAR}, + #{userId, jdbcType=VARCHAR}, + #{mqState, jdbcType=INTEGER}, + #{mqCode, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + + + + + + update OT_CONVERT_MQ + set modify_time = #{modifyTime}, + creation_time = #{creationTime}, + valid_flag = #{validFlag}, + att_id = #{attId}, + file_path = #{filePath}, + user_id = #{userId}, + mq_state = #{mqState}, + mq_code = #{mqCode} + where id = #{id} + + + + + update OT_CONVERT_MQ + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + att_id = #{attId}, + + + file_path = #{filePath}, + + + user_id = #{userId}, + + + mq_state = #{mqState}, + + + mq_code = #{mqCode}, + + + where id = #{id} + + + + + + + delete from OT_CONVERT_MQ + where att_id = #{value} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/otSvpps/OtSvppsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/otSvpps/OtSvppsMapper.xml new file mode 100644 index 00000000..e9fe2700 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/otSvpps/OtSvppsMapper.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + id, p_id, f_num, s_num, t_num, svpps_code, svpps_en_name, svpps_cn_name, sync_id, valid_flag, created_time, modify_time + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and p_id ${pIdOperator} #{pId} + + + and f_num ${fNumOperator} #{fNum} + + + and s_num ${sNumOperator} #{sNum} + + + and t_num ${tNumOperator} #{tNum} + + + and svpps_code ${svppsCodeOperator} #{svppsCode} + + + and svpps_en_name ${svppsEnNameOperator} #{svppsEnName} + + + and svpps_cn_name ${svppsCnNameOperator} #{svppsCnName} + + + and sync_id ${syncIdOperator} #{syncId} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and created_time ${createdTimeOperator} #{createdTime} + + + and created_time >= #{createdTime1} + + + and created_time <= #{createdTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/regulations/RegulationsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/regulations/RegulationsMapper.xml new file mode 100644 index 00000000..4ac3d17e --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/regulations/RegulationsMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/regulationsTDM/RegulationsTDMMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/regulationsTDM/RegulationsTDMMapper.xml new file mode 100644 index 00000000..7603b46d --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/regulationsTDM/RegulationsTDMMapper.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sapMeetInfo/SapMeetingMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sapMeetInfo/SapMeetingMapper.xml new file mode 100644 index 00000000..eb04e434 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sapMeetInfo/SapMeetingMapper.xml @@ -0,0 +1,79 @@ + + + + + + id,title,date,content,type,attend,files,place + + + type = #{type} + + + + insert into sap_meeting + + id, + title, + date, + content, + type, + attend, + files, + place, + + values + + #{id}, + #{title}, + #{date}, + #{content}, + #{type}, + #{attend}, + #{files}, + #{place}, + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandAttrInfo/SarBussStandAttrInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandAttrInfo/SarBussStandAttrInfoMapper.xml new file mode 100644 index 00000000..a7b74a5c --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandAttrInfo/SarBussStandAttrInfoMapper.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + id, stand_id, creation_user, valid_flag, creation_time, modify_time + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and stand_id ${standIdOperator} #{standId} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + + + + + insert into SAR_BUSS_STAND_ATTR_INFO() + values (#{id, jdbcType=VARCHAR}, #{standId, jdbcType=VARCHAR}, #{creationUser, jdbcType=VARCHAR}, #{validFlag, jdbcType=VARCHAR}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}) + + + + + insert into SAR_BUSS_STAND_ATTR_INFO + + id, + stand_id, + creation_user, + valid_flag, + creation_time, + modify_time, + + + #{id, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{validFlag, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + + + + + + + + + + + + + + alter table SAR_BUSS_STAND_ATTR_INFO + add ${fieldInfo} + + + + + alter table SAR_BUSS_STAND_ATTR_INFO + drop COLUMN ${fieldInfo} + + + + + + + + ALTER table SAR_BUSS_STAND_ATTR_INFO + MODIFY ${fieldInfo} + + + + + + + insert into SAR_BUSS_STAND_ATTR_INFO(${fieldInfo}) + values (${fieldValue}) + + + + delete from SAR_BUSS_STAND_ATTR_INFO + where stand_id = #{standId} + + + + update SAR_BUSS_STAND_ATTR_INFO set ${field}=#{value} + where stand_id = #{standId} + + + + + + update SAR_BUSS_STAND_ATTR_INFO set FSRQBUSS = #{time} + where id = #{id} + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandData/SarBussStandDataMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandData/SarBussStandDataMapper.xml new file mode 100644 index 00000000..60722570 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandData/SarBussStandDataMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandFile/SarBussStandFileMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandFile/SarBussStandFileMapper.xml new file mode 100644 index 00000000..370bd60d --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandFile/SarBussStandFileMapper.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, use_model, att_id, stand_id, id,file_suffix,file_name,stand_file_classify, + password,creation_user,ori_att_id + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and use_model ${useModuleOperator} #{useModule} + + + and att_id ${attIdOperator} #{attId} + + + and res_id ${resIdOperator} #{resId} + + + and stand_id ${standIdOperator} #{standId} + + + and id ${idOperator} #{id} + + + + + + insert into SAR_BUSS_STAND_FILE + + modify_time, + creation_time, + valid_flag, + use_model, + att_id, + stand_id, + id, + file_suffix, + file_name, + stand_file_classify, + password, + creation_user, + ori_att_id, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{useModule, jdbcType=VARCHAR}, + #{attId, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{fileSuffix, jdbcType=VARCHAR}, + #{fileName, jdbcType=VARCHAR}, + #{standFileClassify, jdbcType=VARCHAR}, + #{password, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{oriAttId, jdbcType=VARCHAR}, + + + + + + update SAR_BUSS_STAND_FILE + + + ori_att_id = #{oriAttId}, + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + use_model = #{useModule}, + + + att_id = #{attId}, + + + stand_id = #{standId}, + + + where id = #{id} + + + + + + + + delete from SAR_BUSS_STAND_FILE + where id = #{value} + + + + + + + + + + + + + + + + + + + + + + + + delete from SAR_BUSS_STAND_FILE + where stand_id = #{value} + + + + + insert into SAR_BUSS_STAND_FILE + () + values + + (#{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.useModel, jdbcType=VARCHAR}, + #{item.attId, jdbcType=VARCHAR}, + #{item.standId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}, + #{item.fileSuffix, jdbcType=VARCHAR}, + #{item.fileName, jdbcType=VARCHAR}, + #{item.standFileClassify, jdbcType=VARCHAR}, + #{item.password, jdbcType=VARCHAR}, + #{item.creationUser, jdbcType=VARCHAR}, + #{item.oriAttId, jdbcType=VARCHAR}) + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandItems/SarBussStandItemsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandItems/SarBussStandItemsMapper.xml new file mode 100644 index 00000000..106689f5 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandItems/SarBussStandItemsMapper.xml @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SAR_BUSS_STAND_ITEMS.modify_time, SAR_BUSS_STAND_ITEMS.creation_time, SAR_BUSS_STAND_ITEMS.valid_flag, SAR_BUSS_STAND_ITEMS.remarks, responsible_unit, energy_kind, apply_arctic, tack_time, parts, items_name, items_num, SAR_BUSS_STAND_ITEMS.stand_id, SAR_BUSS_STAND_ITEMS.id,SAR_BUSS_STAND_ITEMS.MAINPOINTS_IMPEMENTATION,SAR_BUSS_STAND_ITEMS.TERMS_CONDITIONS, + tsFo.UNAME as foShow,SAR_BUSS_STAND_ITEMS.duty_engineer,SAR_BUSS_STAND_ITEMS.svpps, + SAR_BUSS_STAND_ITEMS.claim_type,SAR_BUSS_STAND_ITEMS.bus_stand_cover,SAR_BUSS_STAND_ITEMS.file_type,dicClaimType.DIC_TYPE_NAME as claimTypeShow,tsdutyEngineer.UNAME as dutyEngineerShow + + + + + left join TS_DICTYPE dicClaimType on (dicClaimType.dic_type_code = SAR_BUSS_STAND_ITEMS.claim_type and dicClaimType.dic_id is + not null and dicClaimType.valid_flag = 0) + left join TS_USER tsdutyEngineer on (tsdutyEngineer.USID = SAR_BUSS_STAND_ITEMS.duty_engineer and tsdutyEngineer.valid_flag=0 + and tsdutyEngineer.DISABLE_FLAG=0) + left join TS_USER tsFo on (tsFo.USID = SAR_BUSS_STAND_ITEMS.fo and tsFo.valid_flag=0 + and tsFo.DISABLE_FLAG=0) + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and SAR_BUSS_STAND_ITEMS.valid_flag ${validFlagOperator} #{validFlag} + + + and remarks ${remarksOperator} #{remarks} + + + and responsible_unit ${responsibleUnitOperator} #{responsibleUnit} + + + and energy_kind ${energyKindOperator} #{energyKind} + + + and apply_arctic ${applyArcticOperator} #{applyArctic} + + + and tack_time ${tackTimeOperator} #{tackTime} + + + and tack_time >= #{tackTime1} + + + and tack_time <= #{tackTime2} + + + and SAR_BUSS_STAND_ITEMS.parts like concat(concat('%', #{parts}),'%') + + + and (SAR_BUSS_STAND_ITEMS.items_name like concat(concat('%', #{nameOrRequest}),'%') or SAR_BUSS_STAND_ITEMS.TERMS_CONDITIONS like concat(concat('%', #{nameOrRequest}),'%')) + + + and items_name ${itemsNameOperator} #{itemsName} + + + and items_num ${itemsNumOperator} #{itemsNum} + + + and SAR_BUSS_STAND_ITEMS.stand_id ${standIdOperator} #{standId} + + + and SAR_BUSS_STAND_ITEMS.id ${idOperator} #{id} + + + and SAR_BUSS_STAND_ITEMS.id in + + #{item} + + + + and SAR_BUSS_STAND_ITEMS.file_type = #{fileType} + + + + + + + + insert into SAR_BUSS_STAND_ITEMS() + values (#{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{remarks, jdbcType=CLOB}, #{responsibleUnit, jdbcType=VARCHAR}, #{energyKind, jdbcType=VARCHAR}, #{applyArctic, jdbcType=VARCHAR}, #{tackTime, jdbcType=TIMESTAMP}, #{parts, jdbcType=VARCHAR}, #{itemsName, jdbcType=VARCHAR}, #{itemsNum, jdbcType=VARCHAR}, #{standId, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}) + + + + + + insert into SAR_BUSS_STAND_ITEMS + + modify_time, + creation_time, + valid_flag, + remarks, + responsible_unit, + energy_kind, + apply_arctic, + tack_time, + parts, + items_name, + items_num, + stand_id, + id, + MAINPOINTS_IMPEMENTATION, + TERMS_CONDITIONS, + + fo, + duty_engineer, + svpps, + claim_type, + bus_stand_cover, + file_type + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{remarks, jdbcType=CLOB}, + #{responsibleUnit, jdbcType=VARCHAR}, + #{energyKind, jdbcType=VARCHAR}, + #{applyArctic, jdbcType=VARCHAR}, + #{tackTime, jdbcType=TIMESTAMP}, + #{parts, jdbcType=VARCHAR}, + #{itemsName, jdbcType=VARCHAR}, + #{itemsNum, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{mainPointImplementation, jdbcType=VARCHAR}, + #{termsConditions, jdbcType=VARCHAR}, + + #{fo, jdbcType=VARCHAR}, + #{dutyEngineer, jdbcType=VARCHAR}, + #{svpps, jdbcType=VARCHAR}, + #{claimType, jdbcType=VARCHAR}, + #{busStandCover, jdbcType=VARCHAR}, + #{fileType, jdbcType=VARCHAR} + + + + + + update SAR_BUSS_STAND_ITEMS + set modify_time = #{modifyTime}, + creation_time = #{creationTime}, + valid_flag = #{validFlag}, + remarks = #{remarks}, + responsible_unit = #{responsibleUnit}, + energy_kind = #{energyKind}, + apply_arctic = #{applyArctic}, + tack_time = #{tackTime}, + parts = #{parts}, + items_name = #{itemsName}, + items_num = #{itemsNum}, + stand_id = #{standId} + where id = #{id} + + + + + update SAR_BUSS_STAND_ITEMS + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + remarks = #{remarks}, + + + responsible_unit = #{responsibleUnit}, + + + energy_kind = #{energyKind}, + + + apply_arctic = #{applyArctic}, + + + tack_time = #{tackTime}, + + + tack_time = null, + + + parts = #{parts}, + + + items_name = #{itemsName}, + + + items_num = #{itemsNum}, + + + stand_id = #{standId}, + + + MAINPOINTS_IMPEMENTATION = #{mainPointImplementation}, + + + TERMS_CONDITIONS = #{termsConditions}, + + + + fo = #{fo}, + + + duty_engineer = #{dutyEngineer}, + + + svpps = #{svpps}, + + + claim_type = #{claimType}, + + + bus_stand_cover = #{busStandCover}, + + + file_type = #{fileType}, + + + where id = #{id} + + + + + + + + delete from SAR_BUSS_STAND_ITEMS + where id = #{value} + + + + + + + + + + + + + + + + + + delete from SAR_BUSS_STAND_ITEMS + where stand_id = #{standId} + + and file_type = #{fileType} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandMenu/SarBussStandMenuMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandMenu/SarBussStandMenuMapper.xml new file mode 100644 index 00000000..2d1f6a2b --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandMenu/SarBussStandMenuMapper.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + menu_id, buss_stand_id, id, valid_flag + + + + + where 1=1 + + + and menu_id = #{menuId} + + + and buss_stand_id = #{bussStandId} + + + and id = #{id} + + + and valid_flag = #{validFlag} + + + + + + + + insert into SAR_BUSS_STAND_MENU() + values (#{menuId, jdbcType=VARCHAR}, #{bussStandId, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}, #{validFlag, jdbcType=INTEGER}) + + + + + + insert into SAR_BUSS_STAND_MENU + + menu_id, + buss_stand_id, + id, + valid_flag, + tree_type, + + + #{menuId, jdbcType=VARCHAR}, + #{bussStandId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{validFlag, jdbcType=INTEGER}, + #{treeType, jdbcType=INTEGER}, + + + + + + update SAR_BUSS_STAND_MENU + set menu_id = #{menuId}, + buss_stand_id = #{bussStandId}, + valid_flag = #{validFlag} + where id = #{id} + + + + + update SAR_BUSS_STAND_MENU + + + menu_id = #{menuId}, + + + buss_stand_id = #{bussStandId}, + + + valid_flag = #{validFlag}, + + + where id = #{id} + + + + update SAR_BUSS_STAND_MENU + set menu_id = #{newMenuid} + where menu_id = #{oldMenuid} + + + + update SAR_BUSS_STAND_MENU + + + menu_id = #{menuId}, + + + valid_flag = #{validFlag}, + + + where buss_stand_id = #{bussStandId} + + + + + + + delete from SAR_BUSS_STAND_MENU + where id = #{value} + + + + + + + + + + + + + + + delete from SAR_BUSS_STAND_MENU + where buss_stand_id = #{bussStandId} + + + + + + + update SAR_BUSS_STAND_MENU + + + menu_id = #{menuId}, + + + where buss_stand_id = #{bussStandId} + and MENU_ID in + + #{item} + + + + + delete from SAR_BUSS_STAND_MENU + where buss_stand_id = #{bussStandId} + and MENU_ID in + + #{item} + + + + + + + delete from SAR_BUSS_STAND_MENU + where buss_stand_id = #{bussStandId, jdbcType=VARCHAR} and MENU_ID = #{menuId, jdbcType=VARCHAR} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandPlan/SarBussStandPlanMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandPlan/SarBussStandPlanMapper.xml new file mode 100644 index 00000000..0efa8a63 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandPlan/SarBussStandPlanMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandSn/SarBussStandSnMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandSn/SarBussStandSnMapper.xml new file mode 100644 index 00000000..ea4ad1d6 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandSn/SarBussStandSnMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandVal/SarBussStandValMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandVal/SarBussStandValMapper.xml new file mode 100644 index 00000000..904713a3 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussStandVal/SarBussStandValMapper.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, property_value, property_type, stand_id, id + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and property_value ${propertyValueOperator} #{propertyValue} + + + and property_type ${propertyTypeOperator} #{propertyType} + + + and stand_id ${standIdOperator} #{standId} + + + and id ${idOperator} #{id} + + + + + + + insert into SAR_BUSS_STAND_VAL() + values (#{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{propertyValue, jdbcType=VARCHAR}, #{propertyType, jdbcType=VARCHAR}, #{standId, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}) + + + + + insert into SAR_BUSS_STAND_VAL + + modify_time, + creation_time, + valid_flag, + property_value, + property_type, + stand_id, + id, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{propertyValue, jdbcType=VARCHAR}, + #{propertyType, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + + + + + + + + + + + + + delete from SAR_BUSS_STAND_VAL + where stand_id = #{standId} + + + + insert into SAR_BUSS_STAND_VAL + () + values + + (#{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.propertyValue, jdbcType=VARCHAR}, + #{item.propertyType, jdbcType=VARCHAR}, + #{item.standId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}) + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml new file mode 100644 index 00000000..b43f68ff --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml @@ -0,0 +1,1179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, stand_status, replaced_stand_num,replace_stand_num, + put_time, issue_time,stand_en_name,stand_name, stand_code, id,apply_country, stand_nature, stand_sort,text_status_buss,stand_number + + + SAR_BUSSIONESS_STAND.modify_time, + SAR_BUSSIONESS_STAND.creation_time, SAR_BUSSIONESS_STAND.valid_flag, + SAR_BUSSIONESS_STAND.apply_country, SAR_BUSSIONESS_STAND.stand_nature,SAR_BUSSIONESS_STAND.stand_sort,SAR_BUSSIONESS_STAND.stand_year, + stand_status, replaced_stand_num,replace_stand_num,put_time,issue_time,stand_en_name, + stand_name, stand_code,SAR_BUSSIONESS_STAND.id,SAR_BUSSIONESS_STAND.text_status_buss,SAR_BUSSIONESS_STAND.stand_number,SAR_BUSSIONESS_STAND.revise_status, + SAR_BUSSIONESS_STAND.REVISION_STATUS + + + + DISTINCT SAR_BUSSIONESS_STAND.id,SAR_BUSSIONESS_STAND.modify_time, + SAR_BUSSIONESS_STAND.creation_time, SAR_BUSSIONESS_STAND.valid_flag, + SAR_BUSSIONESS_STAND.apply_country, SAR_BUSSIONESS_STAND.stand_nature,SAR_BUSSIONESS_STAND.stand_sort,SAR_BUSSIONESS_STAND.stand_year, + stand_status, replaced_stand_num,replace_stand_num,put_time,issue_time,stand_en_name, + stand_name, stand_code,SAR_BUSSIONESS_STAND.text_status_buss,SAR_BUSSIONESS_STAND.stand_number, + dicstandTextStatus.DIC_TYPE_NAME AS standStatusShow,SAR_BUSSIONESS_STAND.revise_status, + SAR_BUSSIONESS_STAND.REVISION_STATUS + + + + DISTINCT tmp_tb.id,tmp_tb.modify_time, + tmp_tb.creation_time, tmp_tb.valid_flag, + tmp_tb.apply_country, tmp_tb.stand_nature,tmp_tb.stand_sort,tmp_tb.stand_year, + tmp_tb.stand_status, tmp_tb.replaced_stand_num,tmp_tb.replace_stand_num,tmp_tb.put_time,tmp_tb.issue_time,tmp_tb.stand_en_name, + tmp_tb.stand_name, tmp_tb.stand_code,tmp_tb.text_status_buss,tmp_tb.stand_number, + tmp_tb.standStatusShow,tmp_tb.revise_status,tmp_tb.REVISION_STATUS + + + + stand_status, replaced_stand_num, replace_stand_num,put_time, + issue_time, stand_en_name, stand_name, stand_code,stand_status,revise_status,REVISION_STATUS, + SAR_BUSSIONESS_STAND.id, SAR_BUSS_STAND_ATTR_INFO.DTQBBHBUSS + + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and stand_status ${standStatusOperator} #{standStatus} + + + and replaced_stand_num ${replacedStandNumOperator} #{replacedStandNum} + + + and replace_stand_num ${replaceStandNumOperator} #{replaceStandNum} + + + and put_time ${putTimeOperator} #{putTime} + + + and put_time >= #{putTime1} + + + and put_time <= #{putTime2} + + + and issue_time ${issueTimeOperator} #{issueTime} + + + and issue_time >= #{issueTime1} + + + and issue_time <= #{issueTime2} + + + and stand_en_name ${standEnNameOperator} #{standEnName} + + + and stand_name ${standNameOperator} #{standName} + + + and trim(replace(stand_code,' ','')) ${standCodeOperator} trim(replace(#{standCode},' ','')) + + + and id ${idOperator} #{id} + + + + and apply_country ${applyCountryOperator} #{applyCountry} + + + and stand_nature ${standNatureOperator} #{standNature} + + + and stand_sort ${standSortOperator} #{standSort} + + + and opinion_file ${opinionFileOperator} #{opinionFile} + + + and relevance_file ${relevanceFileOperator} #{relevanceFile} + + + and remark ${remarkOperator} #{remark} + + + + + + + insert into SAR_BUSSIONESS_STAND + + modify_time, + creation_time, + valid_flag, + stand_status, + replaced_stand_num, + replace_stand_num, + put_time, + issue_time, + stand_en_name, + stand_name, + stand_code, + id, + + apply_country, + stand_Nature, + stand_sort, + stand_year, + stand_number, + REVISE_STATUS, + REVISION_STATUS, + STAND_SN, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{standStatus, jdbcType=VARCHAR}, + #{replacedStandNum, jdbcType=VARCHAR}, + #{replaceStandNum, jdbcType=VARCHAR}, + #{putTime, jdbcType=TIMESTAMP}, + #{issueTime, jdbcType=TIMESTAMP}, + #{standEnName, jdbcType=VARCHAR}, + #{standName, jdbcType=VARCHAR}, + #{standCode, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + + #{applyCountry, jdbcType=VARCHAR}, + #{standNature, jdbcType=VARCHAR}, + #{standSort, jdbcType=VARCHAR}, + #{standYear, jdbcType=VARCHAR}, + #{standNumber, jdbcType=VARCHAR}, + #{reviseStatus, jdbcType=VARCHAR}, + #{revisionStatus, jdbcType=VARCHAR}, + #{standSn, jdbcType=VARCHAR}, + + + + + + update SAR_BUSSIONESS_STAND + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + stand_status = #{standStatus}, + + + replaced_stand_num = #{replacedStandNum}, + + + replace_stand_num = #{replaceStandNum}, + + + put_time = #{putTime}, + + + put_time = null, + + + issue_time = #{issueTime}, + + + issue_time = null, + + + stand_en_name = #{standEnName}, + + + stand_name = #{standName}, + + + stand_code = #{standCode}, + + + + apply_country = #{applyCountry}, + + + stand_nature = #{standNature}, + + + stand_sort = #{standSort}, + + + stand_year = #{standYear}, + + + stand_number = #{standNumber}, + + + where id = #{id} + + + + + + update SAR_BUSSIONESS_STAND + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + stand_status = #{standStatus}, + + + replaced_stand_num = #{replacedStandNum}, + + + replace_stand_num = #{replaceStandNum}, + + + put_time = #{putTime}, + + + issue_time = #{issueTime}, + + + stand_en_name = #{standEnName}, + + + stand_name = #{standName}, + + + stand_code = #{standCode}, + + + + apply_country = #{applyCountry}, + + + stand_nature = #{standNature}, + + + stand_sort = #{standSort}, + + + stand_year = #{standYear}, + + + stand_number = #{standNumber}, + + + where id = #{id} + + + + + + + + + + delete from SAR_BUSSIONESS_STAND + where id = #{value} + + + + + + + + + + + + + + + + + ORDER BY + + ${orderByA} ${order1}, + + CASE + when tmp_tb.stand_code like concat('%', 'Q/FT A', '%') THEN 0 + when tmp_tb.stand_code like concat('%', 'Q/FT B', '%') THEN 1 + when tmp_tb.stand_code like concat('%', 'Q/FT E', '%') THEN 2 + when tmp_tb.stand_code like concat('%', 'Q/FT F', '%') THEN 3 + when tmp_tb.stand_code like concat('%', 'Q/FT G', '%') THEN 4 + when tmp_tb.stand_code like concat('%', 'Q/FT M', '%') THEN 5 + when tmp_tb.stand_code like concat('%', 'Q/FT Q', '%') THEN 6 + when tmp_tb.stand_code like concat('%', 'Q/FT R', '%') THEN 7 + when tmp_tb.stand_code like concat('%', 'Q/FT S', '%') THEN 8 + when tmp_tb.stand_code like concat('%', 'Q/FT T', '%') THEN 9 + when tmp_tb.stand_code like concat('%', 'Q/FT V', '%') THEN 10 + when tmp_tb.stand_code like concat('%', 'Q/FT X', '%') THEN 11 + when tmp_tb.stand_code like concat('%', 'Q/FT Y', '%') THEN 12 + when tmp_tb.stand_code like concat('%', 'Q/FT Z', '%') THEN 13 + when tmp_tb.stand_code like concat('%', 'Q/QCBFC', '%') THEN 14 + when tmp_tb.stand_code like concat('%', '雷萨企标Q/FL', '%') THEN 15 + when tmp_tb.stand_code like concat('%', 'Q/QCFLC', '%') THEN 16 + ELSE 17 + END, + tmp_tb.stand_sort ASC,CAST(tmp_tb.STAND_NUMBER AS decimal(9,2)) ASC,tmp_tb.STAND_YEAR DESC,tmp_tb.id + + + ORDER BY + CASE + when tmp_tb.stand_code like concat('%', 'Q/FT A', '%') THEN 0 + when tmp_tb.stand_code like concat('%', 'Q/FT B', '%') THEN 1 + when tmp_tb.stand_code like concat('%', 'Q/FT E', '%') THEN 2 + when tmp_tb.stand_code like concat('%', 'Q/FT F', '%') THEN 3 + when tmp_tb.stand_code like concat('%', 'Q/FT G', '%') THEN 4 + when tmp_tb.stand_code like concat('%', 'Q/FT M', '%') THEN 5 + when tmp_tb.stand_code like concat('%', 'Q/FT Q', '%') THEN 6 + when tmp_tb.stand_code like concat('%', 'Q/FT R', '%') THEN 7 + when tmp_tb.stand_code like concat('%', 'Q/FT S', '%') THEN 8 + when tmp_tb.stand_code like concat('%', 'Q/FT T', '%') THEN 9 + when tmp_tb.stand_code like concat('%', 'Q/FT V', '%') THEN 10 + when tmp_tb.stand_code like concat('%', 'Q/FT X', '%') THEN 11 + when tmp_tb.stand_code like concat('%', 'Q/FT Y', '%') THEN 12 + when tmp_tb.stand_code like concat('%', 'Q/FT Z', '%') THEN 13 + when tmp_tb.stand_code like concat('%', 'Q/QCBFC', '%') THEN 14 + when tmp_tb.stand_code like concat('%', '雷萨企标Q/FL', '%') THEN 15 + when tmp_tb.stand_code like concat('%', 'Q/QCFLC', '%') THEN 16 + ELSE 17 + END, + tmp_tb.stand_sort ASC, + tmp_tb.issue_time is null,tmp_tb.issue_time desc,tmp_tb.id + + + left join SAR_BUSS_STAND_MENU ON SAR_BUSSIONESS_STAND.id = SAR_BUSS_STAND_MENU.buss_stand_id + + and SAR_BUSS_STAND_MENU.TREE_TYPE = 'sarMs' + and SAR_BUSS_STAND_MENU.MENU_ID in + + #{item} + + + left join TS_RESOURCE on SAR_BUSS_STAND_MENU.menu_id = TS_RESOURCE.id + left join SAR_BUSS_STAND_ATTR_INFO on (SAR_BUSS_STAND_ATTR_INFO.STAND_ID = SAR_BUSSIONESS_STAND.id and SAR_BUSS_STAND_ATTR_INFO.valid_flag=0) + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_BUSSIONESS_STAND.text_status_buss + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + where 1=1 + + + and SAR_BUSS_STAND_ATTR_INFO.QCDW like concat(concat('%',#{QCDW}),'%') + + + and put_time=#{putTime} + + + and issue_time=#{issueTime} + + + and text_status_buss=#{textStatusBuss} + + + and REVISION_STATUS=#{revisionStatus} + + + + and SAR_BUSSIONESS_STAND.MODIFY_TIME between DATE_SUB(NOW(),INTERVAL 7 day) and DATE_SUB(NOW(),INTERVAL -1 day) + + + + + and (SAR_BUSSIONESS_STAND.STAND_CODE like concat('%', #{standCode}, '%') + or REPLACE( SAR_BUSSIONESS_STAND.STAND_CODE,' ','') like REPLACE( concat('%', #{standCode}, '%'),' ','')) + + + and ( + + SAR_BUSSIONESS_STAND.STAND_CODE like concat(concat('%',#{numberName}),'%') + or stand_name like concat(concat('%',#{numberName}),'%') + ) + + + and stand_name like concat(concat('%',#{standName}),'%') + + + + and DATE_FORMAT(put_time,'%Y-%m-%D') >= #{putTime1} + + + and DATE_FORMAT(put_time,'%Y-%m-%D') <= #{putTime2} + + + and DATE_FORMAT(issue_time,'%Y-%m-%D') >= #{issueTime1} + + + and DATE_FORMAT(issue_time,'%Y-%m-%D') <= #{issueTime2} + + + + + + and DATE_FORMAT(put_time,'%Y-%m-%d') >= #{startPutTime} + + + and DATE_FORMAT(put_time,'%Y-%m-%d') <= #{endPutTime} + + + and DATE_FORMAT(issue_time,'%Y-%m-%d') >= #{startIssueTime} + + + and DATE_FORMAT(issue_time,'%Y-%m-%d') <= #{endIssueTime} + + + + + and SAR_BUSS_STAND_MENU.MENU_ID IS NULL + + + + + and SAR_BUSS_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + + + and SAR_BUSS_STAND_MENU.MENU_ID in + + #{item} + + + + and SAR_BUSSIONESS_STAND.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and collect_type='BUSINESS_STAND' + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + and SAR_BUSSIONESS_STAND.valid_flag = #{validFlag} + + + + and SAR_BUSSIONESS_STAND.id in + + #{item} + + + + and SAR_BUSSIONESS_STAND.id = #{id} + + + and SAR_BUSSIONESS_STAND.stand_sort = #{standSort} + + + and SAR_BUSSIONESS_STAND.stand_year = #{standYear} + + + and replace_stand_num like concat(concat('%',#{replaceStandNum}),'%') + + + and SAR_BUSSIONESS_STAND.STAND_STATUS = #{standStatus} + + + and SAR_BUSSIONESS_STAND.STAND_EN_NAME like concat('%', #{standEnName},'%') + + + and (${advanceSearchStr}) + + + and (SELECT ZYQCR + FROM SAR_BUSS_STAND_ATTR_INFO + WHERE valid_flag = 0 + and stand_id = SAR_BUSSIONESS_STAND.id) = #{zqcrId} + + + + + left join SAR_BUSS_STAND_MENU ON SAR_BUSSIONESS_STAND.id = SAR_BUSS_STAND_MENU.buss_stand_id + + + + + + + + left join TS_RESOURCE on SAR_BUSS_STAND_MENU.menu_id = TS_RESOURCE.id + left join SAR_BUSS_STAND_ATTR_INFO on (SAR_BUSS_STAND_ATTR_INFO.STAND_ID = SAR_BUSSIONESS_STAND.id and SAR_BUSS_STAND_ATTR_INFO.valid_flag=0) + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_BUSSIONESS_STAND.text_status_buss + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + where 1=1 + + + and (SAR_BUSSIONESS_STAND.STAND_CODE = #{standCode} + or REPLACE( SAR_BUSSIONESS_STAND.STAND_CODE,' ','') = REPLACE( #{standCode},' ','')) + + + and SAR_BUSS_STAND_ATTR_INFO.QCDW like concat(concat('%',#{QCDW}),'%') + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and SAR_BUSSIONESS_STAND.id in + + #{item} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left join TS_DICTYPE dicstandStatus ON ( dicstandStatus.dic_type_code = SAR_BUSSIONESS_STAND.TEXT_STATUS_BUSS AND dicstandStatus.dic_id IS NOT NULL and dicstandStatus.valid_flag = 0) + left join TS_DICTYPE dicstandNature ON ( dicstandNature.dic_type_code = SAR_BUSSIONESS_STAND.STAND_NATURE AND dicstandNature.dic_id IS NOT NULL and dicstandNature.valid_flag = 0) + left join TS_DICTYPE dicstandSort ON ( dicstandSort.dic_type_code = SAR_BUSSIONESS_STAND.STAND_SORT AND dicstandSort.dic_id IS NOT NULL AND dicstandSort.dic_id = 'NGETEMDJDI' and dicstandSort.valid_flag = 0) + left join TS_DICTYPE dicapplyCountry ON ( dicapplyCountry.dic_type_code = SAR_BUSSIONESS_STAND.APPLY_COUNTRY AND dicapplyCountry.dic_id IS NOT NULL and dicapplyCountry.valid_flag = 0) + left join SAR_BUSS_STAND_MENU ON SAR_BUSSIONESS_STAND.id = SAR_BUSS_STAND_MENU.buss_stand_id + left join TS_RESOURCE on SAR_BUSS_STAND_MENU.menu_id = TS_RESOURCE.id + where 1=1 + + + + and stand_code like concat(concat('%',#{standCode}),'%') + + + and stand_name like concat(concat('%',#{standName}),'%') + + + + -- and to_char(put_time,'YYYY-MM-DD') >= #{putTime1} + and DATE_FORMAT(put_time,'%Y-%m-%D') >= #{putTime1} + + + -- and to_char(put_time,'YYYY-MM-DD') <= #{putTime2} + and DATE_FORMAT(put_time,'%Y-%m-%D') <= #{putTime2} + + + -- and to_char(issue_time,'YYYY-MM-DD') >= #{issueTime1} + and DATE_FORMAT(issue_time,'%Y-%m-%D') >= #{issueTime1} + + + and DATE_FORMAT(issue_time,'%Y-%m-%D') <= #{issueTime2} + + + + and SAR_BUSS_STAND_MENU.MENU_ID in ( + select a.* from ( + select TS_RESOURCE.id from TS_RESOURCE,TS_ROLE_SAR_MENU start with id=#{menuId} connect by prior id= parent_id + )a,TS_ROLE_SAR_MENU + where a.id = TS_ROLE_SAR_MENU.SAR_MENU_ID and TS_ROLE_SAR_MENU.ROLE_ID in + + #{item} + + GROUP BY ID + ) + + + + and SAR_BUSS_STAND_MENU.MENU_ID = (select TS_RESOURCE.id from TS_RESOURCE WHERE parent_id is null and sor_divide ='BUSINESS_STAND' and valid_flag=0) + + + + and SAR_BUSS_STAND_MENU.MENU_ID in ( + select a.* from ( + SELECT TS_RESOURCE.id FROM TS_RESOURCE START WITH id =( + SELECT TS_RESOURCE.id FROM TS_RESOURCE WHERE parent_id IS NULL AND sor_divide = 'BUSINESS_STAND' and valid_flag=0) connect by prior id= parent_id + )a,TS_ROLE_SAR_MENU + where a.id = TS_ROLE_SAR_MENU.SAR_MENU_ID and TS_ROLE_SAR_MENU.ROLE_ID in + + #{item} + + GROUP BY ID + ) + + + and SAR_BUSSIONESS_STAND.valid_flag = #{validFlag} + + + + and SAR_BUSSIONESS_STAND.id in + + #{item} + + + + and SAR_BUSSIONESS_STAND.stand_sort = #{standSort} + + + and replace_stand_num like concat(concat('%',#{replaceStandNum}),'%') + + + + + + + left join TS_DICTYPE dicstandStatus ON ( dicstandStatus.dic_type_code = SAR_BUSSIONESS_STAND.TEXT_STATUS_BUSS AND dicstandStatus.dic_id IS NOT NULL and dicstandStatus.valid_flag = 0) + left join TS_DICTYPE dicstandNature ON ( dicstandNature.dic_type_code = SAR_BUSSIONESS_STAND.STAND_NATURE AND dicstandNature.dic_id IS NOT NULL and dicstandNature.valid_flag = 0) + left join TS_DICTYPE dicstandSort ON ( dicstandSort.dic_type_code = SAR_BUSSIONESS_STAND.STAND_SORT AND dicstandSort.dic_id IS NOT NULL and dicstandSort.valid_flag = 0 AND dicstandSort.dic_id = 'NGETEMDJDI') + left join TS_DICTYPE dicapplyCountry ON ( dicapplyCountry.dic_type_code = SAR_BUSSIONESS_STAND.APPLY_COUNTRY AND dicapplyCountry.dic_id IS NOT NULL and dicapplyCountry.valid_flag = 0) + left join SAR_BUSS_STAND_MENU ON SAR_BUSSIONESS_STAND.id = SAR_BUSS_STAND_MENU.buss_stand_id + left join TS_RESOURCE on SAR_BUSS_STAND_MENU.menu_id = TS_RESOURCE.id + where 1=1 + + + + and stand_code like concat(concat('%',#{standCode}),'%') + + + and stand_name like concat(concat('%',#{standName}),'%') + + + and SAR_BUSSIONESS_STAND.valid_flag = #{validFlag} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update SAR_BUSSIONESS_STAND + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + replaced_stand_num = #{replacedStandNum}, + + + replace_stand_num = #{replaceStandNum}, + + + put_time = #{putTime}, + + + issue_time = #{issueTime}, + + + stand_en_name = #{standEnName}, + + + stand_name = #{standName}, + + + where STAND_CODE = #{standCode} + + + + update SAR_BUSSIONESS_STAND set REPLACED_STAND_NUM = #{replacedStandNum} where + STAND_CODE in + + #{item} + + + + + update SAR_BUSSIONESS_STAND set REPLACE_STAND_NUM = #{replaceStandNum} where + STAND_CODE in + + #{item} + + + + + + + update SAR_BUSSIONESS_STAND set REPLACED_STAND_NUM = #{replacedStandNum} where id = #{id} + + + + + + + + insert into SAR_BUSSIONESS_PERSON(ID,QBID,USID) VALUE + + (#{Person.id}, #{Person.qbid}, #{Person.usid}) + + + + + DELETE FROM SAR_BUSSIONESS_PERSON + where qbid=#{qbid} + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStandState/SarBussionessStandStateMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStandState/SarBussionessStandStateMapper.xml new file mode 100644 index 00000000..1a7fb075 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStandState/SarBussionessStandStateMapper.xml @@ -0,0 +1,297 @@ + + + + + + + + + + + + sar_bussioness_stand_state.ID, + sar_bussioness_stand_state.STAND_ID, + sar_bussioness_stand_state.STAND_NAME, + sar_bussioness_stand_state.STAND_CODE, + sar_bussioness_stand_state.REVIEW_TIME, + sar_bussioness_stand_state.ISSUE_TIME, + sar_bussioness_stand_state.REVIEW_RESULTS, + sar_bussioness_stand_state.REVIEW_PROCESS_NUM, + sar_bussioness_stand_state.CREATION_TIME, + sar_bussioness_stand_state.MODIFY_TIME, + sar_bussioness_stand_state.VALID_FLAG, + sar_bussioness_stand_state.PARAM1, + sar_bussioness_stand_state.PARAM2 + + + DISTINCT sar_bussioness_stand.ID, + sar_bussioness_stand.ID AS STAND_ID, + sar_bussioness_stand.stand_sort AS standSort, + sar_bussioness_stand.STAND_NAME, + sar_bussioness_stand.STAND_CODE, + sar_bussioness_stand.ISSUE_TIME, + sar_bussioness_stand.PUT_TIME, + sar_bussioness_stand.CREATION_TIME, + sar_bussioness_stand.MODIFY_TIME, + sar_bussioness_stand.VALID_FLAG + + + + where sar_bussioness_stand.stand_sort = 'Q/QCBFC' and sar_bussioness_stand.TEXT_STATUS_BUSS = '9z741h2m3j' AND sar_bussioness_stand.ISSUE_TIME IS NOT NULL and sar_bussioness_stand.VALID_FLAG = '0' + AND DATE_FORMAT(DATE_SUB(DATE_ADD(sar_bussioness_stand.ISSUE_TIME, INTERVAL 5 YEAR),INTERVAL 1 MONTH),'%Y-%m-%d') = DATE_FORMAT(current_timestamp(), '%Y-%m-%d') + + + and STAND_CODE like concat(concat('%',#{standCode}),'%') + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS, '%Y-%m-%d') between DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS,'%Y-%m-%d') >= DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS,'%Y-%m-%d') <= DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME, '%Y-%m-%d') between DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME,'%Y-%m-%d') >= DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME,'%Y-%m-%d') <= DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + + + where sar_bussioness_stand.stand_sort != 'Q/QCBFC' and sar_bussioness_stand.TEXT_STATUS_BUSS = '9z741h2m3j' AND sar_bussioness_stand.ISSUE_TIME IS NOT NULL and sar_bussioness_stand.VALID_FLAG = '0' + AND DATE_FORMAT(DATE_SUB(DATE_ADD(sar_bussioness_stand.ISSUE_TIME, INTERVAL 3 YEAR),INTERVAL 1 MONTH),'%Y-%m-%d') = DATE_FORMAT(current_timestamp(), '%Y-%m-%d') + + + and STAND_CODE like concat(concat('%',#{standCode}),'%') + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS, '%Y-%m-%d') between DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS,'%Y-%m-%d') >= DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS,'%Y-%m-%d') <= DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME, '%Y-%m-%d') between DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME,'%Y-%m-%d') >= DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME,'%Y-%m-%d') <= DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + + + where sar_bussioness_stand.TEXT_STATUS_BUSS = '9z741h2m3j' AND sar_bussioness_stand.ISSUE_TIME IS NOT NULL and sar_bussioness_stand.VALID_FLAG = '0' + + + and (STAND_CODE like concat(concat('%',#{standCode}),'%') or STAND_NAME like concat(concat('%',#{standCode}),'%')) + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS, '%Y-%m-%d') between DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS,'%Y-%m-%d') >= DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_buss_stand_attr_info.FSRQBUSS,'%Y-%m-%d') <= DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME, '%Y-%m-%d') between DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME,'%Y-%m-%d') >= DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(sar_bussioness_stand.ISSUE_TIME,'%Y-%m-%d') <= DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + + + where REVIEW_RESULTS IS NULL + AND DATE_FORMAT(REVIEW_TIME, '%Y-%m-%d') between DATE_FORMAT(current_timestamp(), '%Y-%m-%d') AND DATE_ADD(CURDATE(), INTERVAL 30 DAY) + + + and STAND_CODE like concat(concat('%',#{standCode}),'%') + + + and DATE_FORMAT(REVIEW_TIME, '%Y-%m-%d') between DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(REVIEW_TIME,'%Y-%m-%d') >= DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(REVIEW_TIME,'%Y-%m-%d') <= DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(ISSUE_TIME, '%Y-%m-%d') between DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(ISSUE_TIME,'%Y-%m-%d') >= DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(ISSUE_TIME,'%Y-%m-%d') <= DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + + + where REVIEW_RESULTS IS NOT NULL + + + and STAND_CODE like concat(concat('%',#{standCode}),'%') + + + and DATE_FORMAT(REVIEW_TIME, '%Y-%m-%d') between DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(REVIEW_TIME,'%Y-%m-%d') >= DATE_FORMAT(#{reviewTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(REVIEW_TIME,'%Y-%m-%d') <= DATE_FORMAT(#{reviewTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(ISSUE_TIME, '%Y-%m-%d') between DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + and DATE_FORMAT(ISSUE_TIME,'%Y-%m-%d') >= DATE_FORMAT(#{issueTimeStart}, '%Y-%m-%d') + + + and DATE_FORMAT(ISSUE_TIME,'%Y-%m-%d') <= DATE_FORMAT(#{issueTimeEnd}, '%Y-%m-%d') + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarEnterpriseStandardEvalution/EvaluationIndexMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarEnterpriseStandardEvalution/EvaluationIndexMapper.xml new file mode 100644 index 00000000..05dd5f85 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarEnterpriseStandardEvalution/EvaluationIndexMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarEnterpriseStandardEvalution/QualityEvaluationMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarEnterpriseStandardEvalution/QualityEvaluationMapper.xml new file mode 100644 index 00000000..991027a6 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarEnterpriseStandardEvalution/QualityEvaluationMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarGroupMenu/SarGroupMenuMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarGroupMenu/SarGroupMenuMapper.xml new file mode 100644 index 00000000..7ef56388 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarGroupMenu/SarGroupMenuMapper.xml @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + SAR_GROUP_MENU.id, pid, menu_name, menu_type, menu_level, SAR_GROUP_MENU.create_time, SAR_GROUP_MENU.create_userid, SAR_GROUP_MENU.modify_time, SAR_GROUP_MENU.modify_userid, SAR_GROUP_MENU.vlag_flag, stand_no + + + + + + where 1=1 + + + and SAR_GROUP_MENU.id ${idOperator} #{id} + + + and pid ${pidOperator} #{pid} + + + and menu_name ${menuNameOperator} #{menuName} + + + and menu_type ${menuTypeOperator} #{menuType} + + + and menu_level ${menuLevelOperator} #{menuLevel} + + + and SAR_GROUP_MENU.create_time ${createTimeOperator} #{createTime} + + + and SAR_GROUP_MENU.create_time >= #{createTime1} + + + and SAR_GROUP_MENU.create_time <= #{createTime2} + + + and SAR_GROUP_MENU.create_userid ${createUseridOperator} #{createUserid} + + + and SAR_GROUP_MENU.modify_time ${modifyTimeOperator} #{modifyTime} + + + and SAR_GROUP_MENU.modify_time >= #{modifyTime1} + + + and SAR_GROUP_MENU.modify_time <= #{modifyTime2} + + + and SAR_GROUP_MENU.modify_userid ${modifyUseridOperator} #{modifyUserid} + + + and SAR_GROUP_MENU.vlag_flag ${vlagFlagOperator} #{vlagFlag} + + + and stand_no ${standNoOperator} #{standNo} + + + + + + where 1=1 + + + and id like concat(#{id},'%') + + + and pid ${pidOperator} #{pid} + + + and menu_name ${menuNameOperator} #{menuName} + + + and menu_type ${menuTypeOperator} #{menuType} + + + and menu_level ${menuLevelOperator} #{menuLevel} + + + and create_time ${createTimeOperator} #{createTime} + + + and create_time >= #{createTime1} + + + and create_time <= #{createTime2} + + + and create_userid ${createUseridOperator} #{createUserid} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and modify_userid ${modifyUseridOperator} #{modifyUserid} + + + and vlag_flag ${vlagFlagOperator} #{vlagFlag} + + + and stand_no ${standNoOperator} #{standNo} + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarInstitution/TsInstitutionMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarInstitution/TsInstitutionMapper.xml new file mode 100644 index 00000000..4e26835d --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarInstitution/TsInstitutionMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into ts_institution (id,name,parent_id) values + + ( #{institution.id},#{institution.name},#{institution.parentId} ) + + + + + + delete from ts_institution + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationForeignStandardMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationForeignStandardMapper.xml new file mode 100644 index 00000000..74978de9 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationForeignStandardMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationNationalStandardMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationNationalStandardMapper.xml new file mode 100644 index 00000000..2e56498d --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationNationalStandardMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationStandardMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationStandardMapper.xml new file mode 100644 index 00000000..62001a87 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarInterpretationStandard/SarInterpretationStandardMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarDetailedIdAttFileMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarDetailedIdAttFileMapper.xml new file mode 100644 index 00000000..164b4a78 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarDetailedIdAttFileMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarLawsAttrDetailedListMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarLawsAttrDetailedListMapper.xml new file mode 100644 index 00000000..418bb106 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrDetailedList/SarLawsAttrDetailedListMapper.xml @@ -0,0 +1,458 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO sar_laws_attr_detailed_list ( id, number, detailed_list_id, stand_id ,ssrq,xcxssrq,zccssrq,syrz) VALUES + + (#{list.id,jdbcType=VARCHAR}, #{list.number}, #{list.detailedListId,jdbcType=VARCHAR}, #{list.standId,jdbcType=VARCHAR},#{list.ssrq,jdbcType=VARCHAR},#{list.xcxssrq,jdbcType=VARCHAR},#{list.zccssrq,jdbcType=VARCHAR} + ,#{list.syrz,jdbcType=VARCHAR}) + + + + + delete from sar_laws_attr_detailed_list where detailed_list_id=#{standId,jdbcType=VARCHAR} + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrInfo/SarLawsAttrInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrInfo/SarLawsAttrInfoMapper.xml new file mode 100644 index 00000000..07a34f60 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsAttrInfo/SarLawsAttrInfoMapper.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + id, laws_id, creation_user, valid_flag, creation_time, modify_time + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and laws_id ${lawsIdOperator} #{lawsId} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + + + + + + insert into SAR_LAWS_ATTR_INFO() + values (#{id, jdbcType=VARCHAR}, #{lawsId, jdbcType=VARCHAR}, #{creationUser, jdbcType=VARCHAR}, #{validFlag, jdbcType=VARCHAR}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}) + + + + + + insert into SAR_LAWS_ATTR_INFO + + id, + laws_id, + creation_user, + valid_flag, + creation_time, + modify_time, + + + #{id, jdbcType=VARCHAR}, + #{lawsId, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{validFlag, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + + + + + + update SAR_LAWS_ATTR_INFO + set laws_id = #{lawsId}, + creation_user = #{creationUser}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime} + where id = #{id} + + + + + update SAR_LAWS_ATTR_INFO + + + laws_id = #{lawsId}, + + + creation_user = #{creationUser}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + where id = #{id} + + + + + + + + delete from SAR_LAWS_ATTR_INFO + where id = #{value} + + + + + + + + + + + + + alter table SAR_LAWS_ATTR_INFO + add ${fieldInfo} + + + + + alter table SAR_LAWS_ATTR_INFO + drop COLUMN ${fieldInfo} + + + + + + + + ALTER table SAR_LAWS_ATTR_INFO + MODIFY ${fieldInfo} + + + + + + + insert into SAR_LAWS_ATTR_INFO(${fieldInfo}) + values (${fieldValue}) + + + + delete from SAR_LAWS_ATTR_INFO + where laws_id = #{standId} + + + + update SAR_LAWS_ATTR_INFO set ${field}=#{value} + where laws_id = #{lawsId} + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsDetailedList/SarLawsDetailedListMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsDetailedList/SarLawsDetailedListMapper.xml new file mode 100644 index 00000000..3a72e09a --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsDetailedList/SarLawsDetailedListMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsFile/SarLawsFileMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsFile/SarLawsFileMapper.xml new file mode 100644 index 00000000..4433dc53 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsFile/SarLawsFileMapper.xml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, use_model, att_id, laws_id, id,file_suffix,file_name,laws_file_classify, + password,creation_user,ori_att_id + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and use_model ${useModuleOperator} #{useModel} + + + and att_id ${attIdOperator} #{attId} + + + and res_id ${resIdOperator} #{resId} + + + and laws_id ${lawsIdOperator} #{lawsId} + + + and id ${idOperator} #{id} + + + + + + insert into SAR_LAWS_FILE + + modify_time, + creation_time, + valid_flag, + use_model, + att_id, + laws_id, + id, + file_suffix, + file_name, + laws_file_classify, + password, + creation_user, + ori_att_id, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{useModel, jdbcType=VARCHAR}, + #{attId, jdbcType=VARCHAR}, + #{lawsId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{fileSuffix, jdbcType=VARCHAR}, + #{fileName, jdbcType=VARCHAR}, + #{lawsFileClassify, jdbcType=VARCHAR}, + #{password, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{oriAttId, jdbcType=VARCHAR}, + + + + + + update SAR_LAWS_FILE + + + ori_att_id = #{oriAttId}, + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + use_model = #{useModel}, + + + att_id = #{attId}, + + + laws_id = #{lawsId}, + + + where id = #{id} + + + + + + + + delete from SAR_LAWS_FILE + where id = #{value} + + + + + + + + + + + + + + + + + + + + + + + + delete from SAR_LAWS_FILE + where laws_id = #{value} + + + + + insert into SAR_LAWS_FILE + () + values + + (#{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.useModel, jdbcType=VARCHAR}, + #{item.attId, jdbcType=VARCHAR}, + #{item.lawsId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}, + #{item.fileSuffix, jdbcType=VARCHAR}, + #{item.fileName, jdbcType=VARCHAR}, + #{item.lawsFileClassify, jdbcType=VARCHAR}, + #{item.password, jdbcType=VARCHAR}, + #{item.creationUser, jdbcType=VARCHAR}, + #{item.oriAttId, jdbcType=VARCHAR}) + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsInfo/SarLawsInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsInfo/SarLawsInfoMapper.xml new file mode 100644 index 00000000..a3820e1e --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsInfo/SarLawsInfoMapper.xml @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + concat(synopsis, '') as synopsis,laws_en_name,modify_time, creation_time, valid_flag, creation_user,replace_laws_num,replaced_laws_num, + put_time, issue_time, laws_state, laws_name, laws_number, laws_property, country, laws_type, id,cite_stand,cited_stand,is_relate_access + + + + SAR_LAWS_INFO.laws_en_name,concat(synopsis, '') as synopsis,SAR_LAWS_INFO.modify_time, + SAR_LAWS_INFO.creation_time, SAR_LAWS_INFO.valid_flag, SAR_LAWS_INFO.creation_user, + SAR_LAWS_INFO.replaced_laws_num, SAR_LAWS_INFO.put_time, SAR_LAWS_INFO.issue_time, SAR_LAWS_INFO.laws_state, + SAR_LAWS_INFO.laws_name, SAR_LAWS_INFO.laws_number, SAR_LAWS_INFO.laws_property,SAR_LAWS_INFO.replace_laws_num, + SAR_LAWS_INFO.country, SAR_LAWS_INFO.laws_type, SAR_LAWS_INFO.id,SAR_LAWS_INFO.cite_stand,SAR_LAWS_INFO.cited_stand,SAR_LAWS_INFO.is_relate_access + + + + SAR_LAWS_INFO.laws_en_name,concat(synopsis, ''),SAR_LAWS_INFO.modify_time, + SAR_LAWS_INFO.creation_time, SAR_LAWS_INFO.valid_flag, SAR_LAWS_INFO.creation_user,SAR_LAWS_INFO.replace_laws_num, + SAR_LAWS_INFO.replaced_laws_num, SAR_LAWS_INFO.put_time, SAR_LAWS_INFO.issue_time, SAR_LAWS_INFO.laws_state, + SAR_LAWS_INFO.laws_name, SAR_LAWS_INFO.laws_number, SAR_LAWS_INFO.laws_property, + SAR_LAWS_INFO.country, SAR_LAWS_INFO.laws_type, SAR_LAWS_INFO.id,SAR_LAWS_INFO.cite_stand,SAR_LAWS_INFO.cited_stand,SAR_LAWS_INFO.is_relate_access + + + + + where 1=1 + + + and synopsis like concat(concat('%',#{synopsis}),'%') + + + and laws_en_name like concat(concat('%',#{lawsEnName}),'%') + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_user ${creationUserOperator} #{creationUser} + + + + and replace_laws_num ${replaceLawsNumOperator} concat(concat('%',#{replaceLawsNum}),'%') + + + and replaced_laws_num ${replaceLawsNumOperator} concat(concat('%',#{replacedLawsNum}),'%') + + + and put_time ${putTimeOperator} #{putTime} + + + and put_time >= #{putTime1} + + + and put_time <= #{putTime2} + + + and laws_state ${lawsStateOperator} #{lawsState} + + + and laws_name ${lawsNameOperator} concat(concat('%',#{lawsName}),'%') + + + + and laws_number ${lawsNumberOperator} #{lawsNumber} + + + and laws_number ${lawsNumberOperator} concat(concat('%',#{lawsNumber}),'%') + + + + and laws_property ${lawsPropertyOperator} #{lawsProperty} + + + and country ${countryOperator} #{country} + + + and laws_type ${lawsTypeOperator} #{lawsType} + + + and SAR_LAWS_INFO.id ${idOperator} #{id} + + + and (laws_number ${lawsNumberOperator} concat(concat('%',#{numberName}),'%') + or laws_name ${lawsNameOperator} concat(concat('%',#{numberName}),'%')) + + + and is_relate_access = #{isRelateAccess} + + + + + + where 1=1 + + + and is_relate_access = #{isRelateAccess} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag = #{validFlag} + + + and creation_user = #{creationUser} + + + and replace_laws_num = #{replaceLawsNum} + + + and put_time ${putTimeOperator} #{putTime} + + + and laws_state = #{lawsState} + + + and laws_name = #{lawsName} + + + and laws_number = #{lawsNumber} + + + and laws_property = #{lawsProperty} + + + and country = #{country} + + + and laws_type = #{lawsType} + + + and id = #{id} + + + + + + left join SAR_LAWS_MENU on SAR_LAWS_INFO.id = SAR_LAWS_MENU.LAWS_ID + left join SAR_MENU on SAR_LAWS_MENU.MENU_ID = SAR_MENU.id + left join SAR_LAWS_ATTR_INFO on (SAR_LAWS_ATTR_INFO.LAWS_ID = SAR_LAWS_INFO.id and SAR_LAWS_ATTR_INFO.valid_flag=0) + left join TS_DICTYPE dic1 on (SAR_LAWS_INFO.laws_property = dic1.dic_type_code AND dic1.VALID_FLAG = 0) + left join TS_DICTYPE dic2 on (SAR_LAWS_INFO.laws_state = dic2.dic_type_code AND dic2.VALID_FLAG = 0) + + and SAR_LAWS_INFO.valid_flag = 0 + + and SAR_MENU.id in + + #{item} + + + + + and (SAR_LAWS_MENU.MENU_ID in + + #{item} + + or (SAR_LAWS_INFO.ID not in (select SAR_LAWS_MENU.LAWS_ID from SAR_LAWS_MENU where SAR_LAWS_INFO.ID = SAR_LAWS_MENU.LAWS_ID and SAR_LAWS_MENU.VALID_FLAG = 0)) + ) + + + and SAR_LAWS_INFO.ID not in (select SAR_LAWS_MENU.LAWS_ID from SAR_LAWS_MENU where SAR_LAWS_INFO.ID = SAR_LAWS_MENU.LAWS_ID and SAR_LAWS_MENU.VALID_FLAG = 0) + + + and SAR_LAWS_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and collect_type='FOREIGN_LAWS' + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + and SAR_LAWS_ATTR_INFO.GXHBQ is not null + + + and SAR_LAWS_ATTR_INFO.GXHBQ like concat(concat('%',#{labelMenuId}),'%') + + + and (${advanceSearchStr}) + + + and SAR_LAWS_INFO.id in + + #{item} + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsItemVal/SarLawsItemValMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsItemVal/SarLawsItemValMapper.xml new file mode 100644 index 00000000..dea8be10 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsItemVal/SarLawsItemValMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsItems/SarLawsItemsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsItems/SarLawsItemsMapper.xml new file mode 100644 index 00000000..6579727b --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsItems/SarLawsItemsMapper.xml @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and laws_id=#{standId} + + + + and file_type=#{fileType} + + + + and ITEMS_NAME like CONCAT('%', #{itemsName},'%') + + + + + + + SAR_LAWS_ITEMS.modify_time, SAR_LAWS_ITEMS.creation_time, SAR_LAWS_ITEMS.creation_user, SAR_LAWS_ITEMS.valid_flag, SAR_LAWS_ITEMS.remarks, responsible_unit, energy_kind, apply_arctic, tack_time, parts, items_name, items_num, SAR_LAWS_ITEMS.laws_id,SAR_LAWS_ITEMS.id,SAR_LAWS_ITEMS.MAINPOINTS_IMPEMENTATION,SAR_LAWS_ITEMS.TERMS_CONDITIONS, + tsFo.UNAME as foShow,SAR_LAWS_ITEMS.duty_engineer,SAR_LAWS_ITEMS.svpps,SAR_LAWS_ITEMS.fo, + SAR_LAWS_ITEMS.claim_type,SAR_LAWS_ITEMS.bus_stand_cover,SAR_LAWS_ITEMS.file_type,dicClaimType.DIC_TYPE_NAME as claimTypeShow,tsdutyEngineer.UNAME as dutyEngineerShow + + + + SAR_LAWS_ITEMS.modify_time, SAR_LAWS_ITEMS.creation_time, SAR_LAWS_ITEMS.creation_user, SAR_LAWS_ITEMS.valid_flag, + SAR_LAWS_ITEMS.remarks, responsible_unit, energy_kind, apply_arctic, tack_time, parts, items_name, items_num, + SAR_LAWS_ITEMS.laws_id,SAR_LAWS_ITEMS.id,SAR_LAWS_ITEMS.MAINPOINTS_IMPEMENTATION,SAR_LAWS_ITEMS.TERMS_CONDITIONS, + SAR_LAWS_ITEMS.duty_engineer,SAR_LAWS_ITEMS.svpps,SAR_LAWS_ITEMS.claim_type,SAR_LAWS_ITEMS.bus_stand_cover, + SAR_LAWS_ITEMS.file_type + + + + + left join TS_DICTYPE dicClaimType on (dicClaimType.dic_type_code = SAR_LAWS_ITEMS.claim_type and dicClaimType.dic_id is + not null and dicClaimType.valid_flag = 0) + left join TS_USER tsdutyEngineer on (tsdutyEngineer.USID = SAR_LAWS_ITEMS.duty_engineer and tsdutyEngineer.valid_flag=0 + and tsdutyEngineer.DISABLE_FLAG=0) + left join TS_USER tsFo on (tsFo.USID = SAR_LAWS_ITEMS.fo and tsFo.valid_flag=0 + and tsFo.DISABLE_FLAG=0) + where 1=1 + + + and SAR_LAWS_ITEMS.file_type = #{fileType} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and SAR_LAWS_ITEMS.valid_flag ${validFlagOperator} #{validFlag} + + + and SAR_LAWS_ITEMS.remarks ${remarksOperator} #{remarks} + + + and SAR_LAWS_ITEMS.responsible_unit = #{responsibleUnit} + + + and energy_kind ${energyKindOperator} #{energyKind} + + + and apply_arctic ${applyArcticOperator} #{applyArctic} + + + and tack_time ${tackTimeOperator} #{tackTime} + + + and tack_time >= #{tackTime1} + + + and tack_time <= #{tackTime2} + + + and SAR_LAWS_ITEMS.parts like concat(concat('%', #{parts}),'%') + + + and (SAR_LAWS_ITEMS.items_name like concat(concat('%', #{nameOrRequest}),'%') or SAR_LAWS_ITEMS.TERMS_CONDITIONS like concat(concat('%', #{nameOrRequest}),'%')) + + + and items_name ${itemsNameOperator} #{itemsName} + + + and items_num ${itemsNumOperator} #{itemsNum} + + + and laws_id ${lawsIdOperator} #{lawsId} + + + and SAR_LAWS_ITEMS.id ${idOperator} #{id} + + + and SAR_LAWS_ITEMS.id in + + #{item} + + + + and SAR_LAWS_ITEMS.LAWS_ID = #{lawsId} + + + + + left join TS_DICTYPE dicClaimType on (dicClaimType.dic_type_code = SAR_LAWS_ITEMS.claim_type and dicClaimType.dic_id is + not null and dicClaimType.valid_flag = 0) + left join TS_USER tsdutyEngineer on (tsdutyEngineer.USID = SAR_LAWS_ITEMS.duty_engineer and tsdutyEngineer.valid_flag=0 + and tsdutyEngineer.DISABLE_FLAG=0) + where 1=1 + + + and SAR_LAWS_ITEMS.file_type = #{fileType} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and SAR_LAWS_ITEMS.valid_flag ${validFlagOperator} #{validFlag} + + + and remarks ${remarksOperator} #{remarks} + + + and responsible_unit = #{responsibleUnit} + + + and energy_kind ${energyKindOperator} #{energyKind} + + + and apply_arctic ${applyArcticOperator} #{applyArctic} + + + and tack_time ${tackTimeOperator} #{tackTime} + + + and tack_time >= #{tackTime1} + + + and tack_time <= #{tackTime2} + + + and parts ${partsOperator} #{parts} + + + and items_name ${itemsNameOperator} #{itemsName} + + + and items_num ${itemsNumOperator} #{itemsNum} + + + and laws_id ${lawsIdOperator} #{lawsId} + + + and id ${idOperator} #{id} + + + and (SAR_LAWS_ITEMS.claim_type='L7N7EEDAPR' or SAR_LAWS_ITEMS.claim_type='RENVECPFGT') + + + + + + + + + + delete from SAR_LAWS_ITEMS + where laws_id = #{standId} + + and file_type = #{fileType} + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsMenu/SarLawsMenuMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsMenu/SarLawsMenuMapper.xml new file mode 100644 index 00000000..43ca0a2c --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsMenu/SarLawsMenuMapper.xml @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + valid_flag, menu_id, laws_id, id + + + + + where 1=1 + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and menu_id ${menuIdOperator} #{menuId} + + + and laws_id ${lawsIdOperator} #{lawsId} + + + and id ${idOperator} #{id} + + + + + + + + insert into SAR_LAWS_MENU() + values (#{validFlag, jdbcType=INTEGER}, #{menuId, jdbcType=VARCHAR}, #{lawsId, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}) + + + + + + insert into SAR_LAWS_MENU + + valid_flag, + menu_id, + laws_id, + id, + + + #{validFlag, jdbcType=INTEGER}, + #{menuId, jdbcType=VARCHAR}, + #{lawsId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + + + + + + update SAR_LAWS_MENU + set valid_flag = #{validFlag}, + menu_id = #{menuId}, + laws_id = #{lawsId} + where id = #{id} + + + + + update SAR_LAWS_MENU + + + valid_flag = #{validFlag}, + + + menu_id = #{menuId}, + + + laws_id = #{lawsId}, + + + where id = #{id} + + + + update SAR_LAWS_MENU + set menu_id = #{newMenuid} + where menu_id = #{oldMenuid} + + + + + + + + delete from SAR_LAWS_MENU + where id = #{value} + + + + + + + + + + + + + + + + + + delete from SAR_LAWS_MENU + where laws_id = #{value} + + + + + + + update SAR_LAWS_MENU + + + menu_id = #{menuId}, + + + where laws_id = #{lawsId} + and MENU_ID in + + #{item} + + + + + delete from SAR_LAWS_MENU + where laws_id = #{lawsId} + and MENU_ID in + + #{item} + + + + + delete from SAR_LAWS_MENU + where laws_id = #{lawsId, jdbcType=VARCHAR} and MENU_ID = #{menuId, jdbcType=VARCHAR} + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsStandInfo/SarLawsStandInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsStandInfo/SarLawsStandInfoMapper.xml new file mode 100644 index 00000000..8bd79aca --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsStandInfo/SarLawsStandInfoMapper.xml @@ -0,0 +1,652 @@ + + + + + + + + + + + + + where 1=1 and SAR_LAWS_STAND_INFO.valid_flag=0 + + + and SAR_LAWS_STAND_INFO.id ${idOperator} #{id} + + + + and SAR_LAWS_STAND_INFO.LAWS_TYPE like concat(concat('%',#{lawsType}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NUMBER like concat(concat('%',#{lawsNumber}),'%') + + + and LAWS_NAME like concat(concat('%',#{lawsName}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_EN_NAME like concat(concat('%',#{lawsEnName}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NO like concat(concat('%',#{lawsNo}),'%') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.ISSUE_TIME,'%Y-%m-%d') = #{issueTime} + + + and SAR_LAWS_STAND_INFO.ISSUE_COMPANY like concat(concat('%',#{issueCompany}),'%') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.COMMENT_CYCLE_START ,'%Y-%m-%d') = DATE_FORMAT(#{commentCycleStart},'%Y-%m-%d') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.COMMENT_CYCLE_END ,'%Y-%m-%d') = DATE_FORMAT(#{commentCycleEnd},'%Y-%m-%d') + + + and SAR_LAWS_STAND_INFO.LAWS_TYPE = #{lawsTextState} + + + and FIND_IN_SET(#{lawsSyqy},SAR_LAWS_STAND_INFO.LAWS_SYQY) + + + and FIND_IN_SET(#{lawsSycx},SAR_LAWS_STAND_INFO.LAWS_SYCX) + + + and SAR_LAWS_STAND_INFO.IS_RELATE_ACCESS = #{isRelateAccess} + + + and SAR_LAWS_STAND_INFO.LAWS_YEAR like concat(concat('%',#{lawsYear}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NOTISYNC_NUM like concat(concat('%',#{lawsNotisyncNum}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_BULLETIN like concat(concat('%',#{lawsBulletin}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_LABEL like concat(concat('%',#{lawsLabel}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_REMARK like concat(concat('%',#{lawsRemark}),'%') + + + + and SAR_LAWS_STAND_INFO.country = #{country} + + + + + + left join SAR_LAWS_MENU ON SAR_LAWS_STAND_INFO.id = SAR_LAWS_MENU.laws_id + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_LAWS_STAND_INFO.LAWS_TEXT_STATE + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + left join SAR_LAWS_ATTR_INFO on (SAR_LAWS_ATTR_INFO.LAWS_ID = SAR_LAWS_STAND_INFO.id and SAR_LAWS_ATTR_INFO.valid_flag=0) + where 1=1 and SAR_LAWS_STAND_INFO.valid_flag=0 + + + + and SAR_LAWS_STAND_INFO.MODIFY_TIME between DATE_SUB(NOW(),INTERVAL 7 day) and DATE_SUB(NOW(),INTERVAL -1 day) + + + and SAR_LAWS_STAND_INFO.LAWS_TYPE like concat(concat('%',#{lawsType}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NUMBER like concat(concat('%',#{lawsNumber}),'%') + + + and (SAR_LAWS_STAND_INFO.LAWS_NAME like concat(concat('%',#{numberName}),'%') + or SAR_LAWS_STAND_INFO.LAWS_NUMBER like concat(concat('%',#{numberName}),'%') + or SAR_LAWS_STAND_INFO.LAWS_EN_NAME like concat(concat('%',#{numberName}),'%')) + + + and LAWS_NAME like concat(concat('%',#{lawsName}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_EN_NAME like concat(concat('%',#{lawsEnName}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NO like concat(concat('%',#{lawsNo}),'%') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.ISSUE_TIME,'%Y-%m-%d') = #{issueTime} + + + and SAR_LAWS_STAND_INFO.ISSUE_COMPANY like concat(concat('%',#{issueCompany}),'%') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.COMMENT_CYCLE_START ,'%Y-%m-%d') = DATE_FORMAT(#{commentCycleStart},'%Y-%m-%d') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.COMMENT_CYCLE_END ,'%Y-%m-%d') = DATE_FORMAT(#{commentCycleEnd},'%Y-%m-%d') + + + and SAR_LAWS_STAND_INFO.LAWS_TEXT_STATE = #{lawsTextState} + + + and FIND_IN_SET(#{lawsSyqy},SAR_LAWS_STAND_INFO.LAWS_SYQY) + + + and FIND_IN_SET(#{lawsSycx},SAR_LAWS_STAND_INFO.LAWS_SYCX) + + + and SAR_LAWS_STAND_INFO.IS_RELATE_ACCESS = #{isRelateAccess} + + + and SAR_LAWS_STAND_INFO.LAWS_YEAR like concat(concat('%',#{lawsYear}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NOTISYNC_NUM like concat(concat('%',#{lawsNotisyncNum}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_BULLETIN like concat(concat('%',#{lawsBulletin}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_LABEL like concat(concat('%',#{lawsLabel}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_REMARK like concat(concat('%',#{lawsRemark}),'%') + + + + and SAR_LAWS_STAND_INFO.country = #{country} + + + + and SAR_LAWS_MENU.MENU_ID in + + #{item} + + + + + + and SAR_LAWS_MENU.MENU_ID in + + #{item} + + + + + and SAR_LAWS_STAND_INFO.id in + + #{item} + + + + + + and SAR_LAWS_STAND_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='FOREIGN_LAWS') + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + + and (${advanceSearchStr}) + + + + + left join SAR_LAWS_MENU ON SAR_LAWS_STAND_INFO.id = SAR_LAWS_MENU.laws_id + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_LAWS_STAND_INFO.LAWS_TEXT_STATE + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + left join SAR_LAWS_ATTR_INFO on (SAR_LAWS_ATTR_INFO.LAWS_ID = SAR_LAWS_STAND_INFO.id and SAR_LAWS_ATTR_INFO.valid_flag=0) + where 1=1 and SAR_LAWS_STAND_INFO.valid_flag=0 + + + + and SAR_LAWS_STAND_INFO.LAWS_TYPE like concat(concat('%',#{lawsType}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NUMBER = #{lawsNumber} + + + and (SAR_LAWS_STAND_INFO.LAWS_NAME like concat(concat('%',#{numberName}),'%') + or SAR_LAWS_STAND_INFO.LAWS_NUMBER like concat(concat('%',#{numberName}),'%') + or SAR_LAWS_STAND_INFO.LAWS_EN_NAME like concat(concat('%',#{numberName}),'%')) + + + and LAWS_NAME like concat(concat('%',#{lawsName}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_EN_NAME like concat(concat('%',#{lawsEnName}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NO like concat(concat('%',#{lawsNo}),'%') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.ISSUE_TIME,'%Y-%m-%d') = #{issueTime} + + + and SAR_LAWS_STAND_INFO.ISSUE_COMPANY like concat(concat('%',#{issueCompany}),'%') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.COMMENT_CYCLE_START ,'%Y-%m-%d') = DATE_FORMAT(#{commentCycleStart},'%Y-%m-%d') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.COMMENT_CYCLE_END ,'%Y-%m-%d') = DATE_FORMAT(#{commentCycleEnd},'%Y-%m-%d') + + + and SAR_LAWS_STAND_INFO.LAWS_TEXT_STATE = #{lawsTextState} + + + and FIND_IN_SET(#{lawsSyqy},SAR_LAWS_STAND_INFO.LAWS_SYQY) + + + and FIND_IN_SET(#{lawsSycx},SAR_LAWS_STAND_INFO.LAWS_SYCX) + + + and SAR_LAWS_STAND_INFO.IS_RELATE_ACCESS = #{isRelateAccess} + + + and SAR_LAWS_STAND_INFO.LAWS_YEAR like concat(concat('%',#{lawsYear}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NOTISYNC_NUM like concat(concat('%',#{lawsNotisyncNum}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_BULLETIN like concat(concat('%',#{lawsBulletin}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_LABEL like concat(concat('%',#{lawsLabel}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_REMARK like concat(concat('%',#{lawsRemark}),'%') + + + + and SAR_LAWS_STAND_INFO.country = #{country} + + + + and SAR_LAWS_MENU.MENU_ID in + + #{item} + + + + + + and SAR_LAWS_MENU.MENU_ID in + + #{item} + + + + + and SAR_LAWS_STAND_INFO.id in + + #{item} + + + + + + and SAR_LAWS_STAND_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='FOREIGN_LAWS') + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + + and (${advanceSearchStr}) + + + + + + + + + DISTINCT SAR_LAWS_STAND_INFO.ID, + SAR_LAWS_STAND_INFO.LAWS_TYPE, + SAR_LAWS_STAND_INFO.LAWS_NUMBER, + SAR_LAWS_STAND_INFO.LAWS_NAME, + SAR_LAWS_STAND_INFO.LAWS_EN_NAME, + SAR_LAWS_STAND_INFO.LAWS_NO, + SAR_LAWS_STAND_INFO.ISSUE_TIME, + SAR_LAWS_STAND_INFO.ISSUE_COMPANY, + SAR_LAWS_STAND_INFO.COMMENT_CYCLE_START, + SAR_LAWS_STAND_INFO.COMMENT_CYCLE_END, + SAR_LAWS_STAND_INFO.LAWS_TEXT_STATE, + SAR_LAWS_STAND_INFO.LAWS_SYQY, + SAR_LAWS_STAND_INFO.LAWS_SYCX, + SAR_LAWS_STAND_INFO.IS_RELATE_ACCESS, + SAR_LAWS_STAND_INFO.LAWS_YEAR, + SAR_LAWS_STAND_INFO.LAWS_NOTISYNC_NUM, + SAR_LAWS_STAND_INFO.LAWS_BULLETIN, + SAR_LAWS_STAND_INFO.LAWS_LABEL, + SAR_LAWS_STAND_INFO.LAWS_REMARK, + SAR_LAWS_STAND_INFO.COUNTRY, + SAR_LAWS_STAND_INFO.MODIFY_TIME + + + + + + + + + + + + + + DISTINCT SAR_LAWS_STAND_INFO.ID, + SAR_LAWS_STAND_INFO.LAWS_TYPE, + SAR_LAWS_STAND_INFO.LAWS_NUMBER, + SAR_LAWS_STAND_INFO.LAWS_NAME, + SAR_LAWS_STAND_INFO.LAWS_EN_NAME, + SAR_LAWS_STAND_INFO.LAWS_NO, + SAR_LAWS_STAND_INFO.ISSUE_TIME, + SAR_LAWS_STAND_INFO.ISSUE_COMPANY, + SAR_LAWS_STAND_INFO.COMMENT_CYCLE_START, + SAR_LAWS_STAND_INFO.COMMENT_CYCLE_END, + SAR_LAWS_STAND_INFO.LAWS_TEXT_STATE, + SAR_LAWS_STAND_INFO.LAWS_SYCX, + SAR_LAWS_STAND_INFO.LAWS_SYQY, + SAR_LAWS_STAND_INFO.IS_RELATE_ACCESS, + SAR_LAWS_STAND_INFO.LAWS_YEAR, + SAR_LAWS_STAND_INFO.LAWS_NOTISYNC_NUM, + SAR_LAWS_STAND_INFO.LAWS_BULLETIN, + SAR_LAWS_STAND_INFO.LAWS_LABEL, + SAR_LAWS_STAND_INFO.LAWS_REMARK, + SAR_LAWS_STAND_INFO.COUNTRY, + SAR_LAWS_STAND_INFO.MODIFY_TIME, + dicstandTextStatus.DIC_TYPE_NAME AS standStatusShow + + + + DISTINCT tmp_tb.ID, + tmp_tb.LAWS_TYPE, + tmp_tb.LAWS_NUMBER, + tmp_tb.LAWS_NAME, + tmp_tb.LAWS_EN_NAME, + tmp_tb.LAWS_NO, + tmp_tb.ISSUE_TIME, + tmp_tb.ISSUE_COMPANY, + tmp_tb.COMMENT_CYCLE_START, + tmp_tb.COMMENT_CYCLE_END, + tmp_tb.LAWS_TEXT_STATE, + tmp_tb.LAWS_SYCX, + tmp_tb.LAWS_SYQY, + tmp_tb.IS_RELATE_ACCESS, + tmp_tb.LAWS_YEAR, + tmp_tb.LAWS_NOTISYNC_NUM, + tmp_tb.LAWS_BULLETIN, + tmp_tb.LAWS_LABEL, + tmp_tb.LAWS_REMARK, + tmp_tb.COUNTRY, + tmp_tb.MODIFY_TIME, + tmp_tb.standStatusShow, + tmp_tb.SSRQLAWS, + tmp_tb.XCXSSRQLAWS, + tmp_tb.ZCXSSRQLAWS, + tmp_tb.ZCWBLAWS, + tmp_tb.GCWBLAWS, + tmp_tb.JDWJLAWS, + tmp_tb.CYSDLAWS, + tmp_tb.TGRLAWS, + tmp_tb.TGDWLAWS, + tmp_tb.NYLXLAWS, + tmp_tb.YYRZLAWS, + tmp_tb.ZRBMLAWS, + tmp_tb.ZRGCSLAWS, + tmp_tb.DTWJHLAWS, + tmp_tb.BDTWJHLAWS, + tmp_tb.YYBZZCLAWS, + tmp_tb.XGLC, + tmp_tb.CHJLLAWS, + tmp_tb.GLWJLAWS + + + + + + + left join SAR_LAWS_MENU ON SAR_LAWS_STAND_INFO.id = SAR_LAWS_MENU.laws_id + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_LAWS_STAND_INFO.LAWS_TEXT_STATE + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + + LEFT JOIN TS_DICTYPE laws_year_show ON ( + laws_year_show.dic_type_code = SAR_LAWS_STAND_INFO.LAWS_YEAR + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + + LEFT JOIN TS_DICTYPE laws_type_show ON ( + laws_type_show.dic_type_code = SAR_LAWS_STAND_INFO.LAWS_TYPE + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + left join SAR_LAWS_ATTR_INFO on (SAR_LAWS_ATTR_INFO.LAWS_ID = SAR_LAWS_STAND_INFO.id and SAR_LAWS_ATTR_INFO.valid_flag=0) + where 1=1 and SAR_LAWS_STAND_INFO.valid_flag=0 + + + + and SAR_LAWS_STAND_INFO.LAWS_TYPE like concat(concat('%',#{lawsType}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NUMBER like concat(concat('%',#{lawsNumber}),'%') + + + and (LAWS_NAME like concat(concat('%',#{numberName}),'%') + or SAR_LAWS_STAND_INFO.LAWS_EN_NAME like concat(concat('%',#{numberName}),'%')) + + + and LAWS_NAME like concat(concat('%',#{lawsName}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_EN_NAME like concat(concat('%',#{lawsEnName}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NO like concat(concat('%',#{lawsNo}),'%') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.ISSUE_TIME,'%Y-%m-%d') = #{issueTime} + + + and SAR_LAWS_STAND_INFO.ISSUE_COMPANY like concat(concat('%',#{issueCompany}),'%') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.COMMENT_CYCLE_START ,'%Y-%m-%d') = DATE_FORMAT(#{commentCycleStart},'%Y-%m-%d') + + + and DATE_FORMAT(SAR_LAWS_STAND_INFO.COMMENT_CYCLE_END ,'%Y-%m-%d') = DATE_FORMAT(#{commentCycleEnd},'%Y-%m-%d') + + + and SAR_LAWS_STAND_INFO.LAWS_TEXT_STATE = #{lawsTextState} + + + and FIND_IN_SET(#{lawsSyqy},SAR_LAWS_STAND_INFO.LAWS_SYQY) + + + and FIND_IN_SET(#{lawsSycx},SAR_LAWS_STAND_INFO.LAWS_SYCX) + + + and SAR_LAWS_STAND_INFO.IS_RELATE_ACCESS = #{isRelateAccess} + + + and SAR_LAWS_STAND_INFO.LAWS_YEAR like concat(concat('%',#{lawsYear}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_NOTISYNC_NUM like concat(concat('%',#{lawsNotisyncNum}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_BULLETIN like concat(concat('%',#{lawsBulletin}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_LABEL like concat(concat('%',#{lawsLabel}),'%') + + + and SAR_LAWS_STAND_INFO.LAWS_REMARK like concat(concat('%',#{lawsRemark}),'%') + + + + and SAR_LAWS_STAND_INFO.country = #{country} + + + + and SAR_LAWS_MENU.MENU_ID in + + #{item} + + + + + + and SAR_LAWS_MENU.MENU_ID in + + #{item} + + + + + and SAR_LAWS_STAND_INFO.id in + + #{item} + + + + + + and SAR_LAWS_STAND_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='FOREIGN_LAWS') + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + + and (${advanceSearchStr}) + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsVal/SarLawsValMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsVal/SarLawsValMapper.xml new file mode 100644 index 00000000..ee57f3ee --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarLawsVal/SarLawsValMapper.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, property_val, property_type, laws_id, id + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and property_val ${propertyValOperator} #{propertyVal} + + + and property_type ${propertyTypeOperator} #{propertyType} + + + and laws_id ${lawsIdOperator} #{lawsId} + + + and id ${idOperator} #{id} + + + + + + + insert into SAR_LAWS_VAL() + values (#{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{propertyVal, jdbcType=VARCHAR}, #{propertyType, jdbcType=VARCHAR}, #{lawsId, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}) + + + + + insert into SAR_LAWS_VAL + + modify_time, + creation_time, + valid_flag, + property_val, + property_type, + laws_id, + id, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{propertyVal, jdbcType=VARCHAR}, + #{propertyType, jdbcType=VARCHAR}, + #{lawsId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + + + + + + + + + + + + + delete from SAR_LAWS_VAL + where laws_id = #{lawsId} + + + + insert into SAR_LAWS_VAL + () + values + + (#{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.propertyVal, jdbcType=VARCHAR}, + #{item.propertyType, jdbcType=VARCHAR}, + #{item.lawsId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}) + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarMenu/SarMenuMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarMenu/SarMenuMapper.xml new file mode 100644 index 00000000..02f47b42 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarMenu/SarMenuMapper.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + parent_id, menu_name, sor_divide, id, modify_time, creation_time, valid_flag, display_seq, parent_ids, remarks + + + + + where 1=1 + + + and parent_id ${parentIdOperator} #{parentId} + + + and menu_name ${menuNameOperator} #{menuName} + + + and sor_divide ${sorDivideOperator} #{sorDivide} + + + and id ${idOperator} #{id} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and display_seq ${displaySeqOperator} #{displaySeq} + + + and parent_ids ${parentIdsOperator} #{parentIds} + + + and remarks = #{remarks} + + + + + + + + insert into SAR_MENU() + values (#{parentId, jdbcType=VARCHAR}, #{menuName, jdbcType=VARCHAR}, #{sorDivide, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}, #{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{displaySeq, jdbcType=INTEGER}, #{parentIds, jdbcType=VARCHAR},#{remarks, jdbcType=VARCHAR}) + + + + + + insert into SAR_MENU + + parent_id, + menu_name, + sor_divide, + id, + modify_time, + creation_time, + valid_flag, + display_seq, + parent_ids, + remarks, + + + #{parentId, jdbcType=VARCHAR}, + #{menuName, jdbcType=VARCHAR}, + #{sorDivide, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{displaySeq, jdbcType=INTEGER}, + #{parentIds, jdbcType=VARCHAR}, + #{remarks, jdbcType=VARCHAR}, + + + + + + update SAR_MENU + set parent_id = #{parentId}, + menu_name = #{menuName}, + sor_divide = #{sorDivide}, + modify_time = #{modifyTime}, + creation_time = #{creationTime}, + valid_flag = #{validFlag}, + display_seq = #{displaySeq}, + parent_ids = #{parentIds} + remarks = #{remarks} + where id = #{id} + + + + + update SAR_MENU + + + parent_id = #{parentId}, + + + menu_name = #{menuName}, + + + sor_divide = #{sorDivide}, + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + display_seq = #{displaySeq}, + + + parent_ids = #{parentIds}, + + + remarks = #{remarks}, + + + where id = #{id} + + + + + + + + delete from SAR_MENU + where id = #{value} + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarModelTree/SarModelTreeMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarModelTree/SarModelTreeMapper.xml new file mode 100644 index 00000000..9541c60b --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarModelTree/SarModelTreeMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarPersonalCenter/SarUserPersonalMenuMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarPersonalCenter/SarUserPersonalMenuMapper.xml new file mode 100644 index 00000000..55241f78 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarPersonalCenter/SarUserPersonalMenuMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarPersonalCenter/SarUserStarMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarPersonalCenter/SarUserStarMapper.xml new file mode 100644 index 00000000..e8b388f4 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarPersonalCenter/SarUserStarMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarPosition/TsPositionMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarPosition/TsPositionMapper.xml new file mode 100644 index 00000000..44be1587 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarPosition/TsPositionMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarProductStand/SarProductStandMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarProductStand/SarProductStandMapper.xml new file mode 100644 index 00000000..3479fc18 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarProductStand/SarProductStandMapper.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + access_type,modify_time, creation_time, valid_flag, creation_user, stand_id, stand_type, product_id, id, + sar_state,car_model,relate_access_id,is_develop,act_state,color, + non_confomity, current, change_scheme, estimated_change_cycle, estimated_cost, risk_point, verification_scheme, + justified, comp_person, comp_time,prc_num + + + + + where 1=1 + + + and SAR_PRODUCT_INFO.PRODECT_CODE like concat(concat('%',#{productCode}),'%') + + + and SAR_PRODUCT_INFO.PRODUCT_NAME like concat(concat('%',#{productName}),'%') + + + and SAR_PRODUCT_STAND.modify_time ${modifyTimeOperator} #{modifyTime} + + + and SAR_PRODUCT_STAND.modify_time >= #{modifyTime1} + + + and SAR_PRODUCT_STAND.modify_time <= #{modifyTime2} + + + and SAR_PRODUCT_STAND.creation_time ${creationTimeOperator} #{creationTime} + + + and SAR_PRODUCT_STAND.creation_time >= #{creationTime1} + + + and SAR_PRODUCT_STAND.creation_time <= #{creationTime2} + + + and SAR_PRODUCT_STAND.valid_flag ${validFlagOperator} #{validFlag} + + + and SAR_PRODUCT_STAND.creation_user ${creationUserOperator} #{creationUser} + + + and SAR_PRODUCT_STAND.stand_id ${standIdOperator} #{standId} + + + and SAR_PRODUCT_STAND.stand_type ${standTypeOperator} #{standType} + + + and SAR_PRODUCT_STAND.product_id ${productIdOperator} #{productId} + + + and SAR_PRODUCT_STAND.id ${idOperator} #{id} + + + and SAR_PRODUCT_STAND.sar_state = #{sarState} + + + and SAR_PRODUCT_STAND.car_model = #{carModel} + + + and SAR_PRODUCT_STAND.access_type = #{accessType} + + + and SAR_PRODUCT_STAND.PRODUCT_ID in + + #{item} + + + + and SAR_PRODUCT_STAND.Id in + + #{item} + + + + and SAR_PRODUCT_STAND.stand_Id in + + #{item} + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarResource/TsResourceMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarResource/TsResourceMapper.xml new file mode 100644 index 00000000..09f9859f --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarResource/TsResourceMapper.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + parent_id, menu_name, sor_divide, id, modify_time, creation_time, valid_flag, display_seq, parent_ids, remarks + + + + + where 1=1 + + + and parent_id ${parentIdOperator} #{parentId} + + + and menu_name ${menuNameOperator} #{menuName} + + + and sor_divide ${sorDivideOperator} #{sorDivide} + + + and id ${idOperator} #{id} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and display_seq ${displaySeqOperator} #{displaySeq} + + + and parent_ids ${parentIdsOperator} #{parentIds} + + + and remarks = #{remarks} + + + + + + + INSERT INTO ts_role_resource + VALUES(#{roleId},#{resourceId} ) + + + + + + insert into TS_RESOURCE() + values (#{parentId, jdbcType=VARCHAR}, #{menuName, jdbcType=VARCHAR}, #{sorDivide, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}, #{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, #{displaySeq, jdbcType=INTEGER}, #{parentIds, jdbcType=VARCHAR},#{remarks, jdbcType=VARCHAR}) + + + + + + insert into TS_RESOURCE + + parent_id, + menu_name, + sor_divide, + id, + modify_time, + creation_time, + valid_flag, + display_seq, + parent_ids, + remarks, + + + #{parentId, jdbcType=VARCHAR}, + #{menuName, jdbcType=VARCHAR}, + #{sorDivide, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{displaySeq, jdbcType=INTEGER}, + #{parentIds, jdbcType=VARCHAR}, + #{remarks, jdbcType=VARCHAR}, + + + + + + update TS_RESOURCE + set parent_id = #{parentId}, + menu_name = #{menuName}, + sor_divide = #{sorDivide}, + modify_time = #{modifyTime}, + creation_time = #{creationTime}, + valid_flag = #{validFlag}, + display_seq = #{displaySeq}, + parent_ids = #{parentIds} + remarks = #{remarks} + where id = #{id} + + + + + update TS_RESOURCE + + + parent_id = #{parentId}, + + + menu_name = #{menuName}, + + + sor_divide = #{sorDivide}, + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + display_seq = #{displaySeq}, + + + parent_ids = #{parentIds}, + + + remarks = #{remarks}, + + + where id = #{id} + + + + + + + + delete from TS_RESOURCE + where id = #{value} + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarRole/TsRoleMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarRole/TsRoleMapper.xml new file mode 100644 index 00000000..eba64569 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarRole/TsRoleMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarSarAccess/SarSarAccessMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarSarAccess/SarSarAccessMapper.xml new file mode 100644 index 00000000..1e57c7df --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarSarAccess/SarSarAccessMapper.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, creation_user, + valid_flag, access_content, country, id,apply_arctic,energy_kind,type,remark,relate_file,version,state + + + + SAR_SAR_ACCESS.modify_time, SAR_SAR_ACCESS.creation_time, SAR_SAR_ACCESS.creation_user, + SAR_SAR_ACCESS.valid_flag, SAR_SAR_ACCESS.access_content, SAR_SAR_ACCESS.country, SAR_SAR_ACCESS.id,TS_USER.uname, + dicountry.DIC_TYPE_NAME as countryShow,SAR_SAR_ACCESS.apply_arctic,SAR_SAR_ACCESS.energy_kind, + SAR_SAR_ACCESS.type,SAR_SAR_ACCESS.remark,SAR_SAR_ACCESS.relate_file,SAR_SAR_ACCESS.version,SAR_SAR_ACCESS.state + + + + + where 1=1 + + + and apply_arctic = #{applyArctic} + + + and energy_kind = #{energyKind} + + + and type = #{type} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and SAR_SAR_ACCESS.valid_flag = #{validFlag} + + + and access_content ${accessContentOperator} concat(concat('%',#{accessContent}),'%') + + + and country ${countryOperator} concat(concat('%',#{country}),'%') + + + and id ${idOperator} #{id} + + + and (${advanceSearchStr}) + + + + + + + left join TS_USER on SAR_SAR_ACCESS.creation_user = TS_USER.usid + left join TS_DICTYPE dicountry on (dicountry.dic_type_code = SAR_SAR_ACCESS.country and dicountry.dic_id is not + null and dicountry.valid_flag = 0) + + LEFT JOIN SAR_SAR_ACCESS_INFO ON SAR_SAR_ACCESS.ID = SAR_SAR_ACCESS_INFO.ACCESS_ID + + where 1=1 + + + and SAR_SAR_ACCESS.state = #{state} + + + and SAR_SAR_ACCESS.apply_arctic = #{applyArctic} + + + and SAR_SAR_ACCESS.energy_kind = #{energyKind} + + + and SAR_SAR_ACCESS.type = #{type} + + + and SAR_SAR_ACCESS.valid_flag = #{validFlag} + + + and access_content like concat(concat('%',#{accessContent}),'%') + + + and country like concat('%',#{country},'%') + + + and id ${idOperator} #{id} + + + and access_content like concat('%',#{keywords},'%') + + + and SAR_SAR_ACCESS_INFO.ACCESS_SAR_TYPE = #{accessSarType} + + + and (${advanceSearchStr}) + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarSarAccessInfo/SarSarAccessInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarSarAccessInfo/SarSarAccessInfoMapper.xml new file mode 100644 index 00000000..ba9f6b0b --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarSarAccessInfo/SarSarAccessInfoMapper.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, display_seq, res_id, sar_type, access_id, id,access_sar_type,PERFORM_INFO, + ASK_NATURE,ACCESS_TYPE,AUTH_DELIVE,AUTH_OBJ_ID,AUTH_DEPART_ID,NEW_PUT_TIME,PROD_PUT_TIME,EOP_PUT_TIME,NEW_PUT_TEXT_TIME,PROD_PUT_TEXT_TIME,EOP_PUT_TEXT_TIME + + + + SAR_SAR_ACCESS_INFO.res_id, SAR_SAR_ACCESS_INFO.sar_type, SAR_SAR_ACCESS_INFO.access_sar_type,SAR_SAR_ACCESS_INFO.PERFORM_INFO, + SAR_SAR_ACCESS_INFO.ASK_NATURE,SAR_SAR_ACCESS_INFO.ACCESS_TYPE,SAR_SAR_ACCESS_INFO.AUTH_DELIVE, + SAR_SAR_ACCESS_INFO.AUTH_OBJ_ID,SAR_SAR_ACCESS_INFO.AUTH_DEPART_ID,SAR_SAR_ACCESS_INFO.NEW_PUT_TIME, + SAR_SAR_ACCESS_INFO.PROD_PUT_TIME,SAR_SAR_ACCESS_INFO.EOP_PUT_TIME,SAR_SAR_ACCESS_INFO.NEW_PUT_TEXT_TIME, + SAR_SAR_ACCESS_INFO.PROD_PUT_TEXT_TIME,SAR_SAR_ACCESS_INFO.EOP_PUT_TEXT_TIME + + + + res_id, sar_type, access_sar_type,PERFORM_INFO, + ASK_NATURE,ACCESS_TYPE,AUTH_DELIVE, + AUTH_OBJ_ID,AUTH_DEPART_ID,NEW_PUT_TIME, + PROD_PUT_TIME,EOP_PUT_TIME,NEW_PUT_TEXT_TIME, + PROD_PUT_TEXT_TIME,EOP_PUT_TEXT_TIME + + + + + where 1=1 + + + and ACCESS_TYPE =#{accessType} + + + and ASK_NATURE = #{askNature} + + + and access_sar_type = #{accessSarType} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and display_seq ${displaySeqOperator} #{displaySeq} + + + and res_id ${resIdOperator} #{resId} + + + and sar_type ${sarTypeOperator} #{sarType} + + + and access_id ${accessIdOperator} #{accessId} + + + and id ${idOperator} #{id} + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandAttrDetails/SarStandAttrDetailsMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandAttrDetails/SarStandAttrDetailsMapper.xml new file mode 100644 index 00000000..64224457 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandAttrDetails/SarStandAttrDetailsMapper.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, attr_field, attr_name, attr_type, order_num, is_edit, creation_user, + valid_flag, creation_time, modify_time, + attr_len,is_must,is_show_imp,show_region_id,sel_val,sar_type,is_search,is_warn + + + + SAR_STAND_ATTR_DETAILS.id, attr_field, attr_name, attr_type, SAR_STAND_ATTR_DETAILS.order_num, is_edit, SAR_STAND_ATTR_DETAILS.creation_user, + SAR_STAND_ATTR_DETAILS.valid_flag, SAR_STAND_ATTR_DETAILS.creation_time, SAR_STAND_ATTR_DETAILS.modify_time, + attr_len,is_must,is_show_imp,show_region_id,sel_val,SAR_STAND_ATTR_DETAILS.sar_type,is_search,is_warn + + + + + where 1=1 and SAR_STAND_ATTR_DETAILS.valid_flag=0 + + + and SAR_STAND_ATTR_DETAILS.id ${idOperator} #{id} + + + and attr_field ${attrFieldOperator} #{attrField} + + + and attr_name ${attrNameOperator} #{attrName} + + + and attr_type ${attrTypeOperator} #{attrType} + + + and SAR_STAND_ATTR_DETAILS.order_num ${orderNumOperator} #{orderNum} + + + and is_edit ${isEditOperator} #{isEdit} + + + and SAR_STAND_ATTR_DETAILS.creation_user ${creationUserOperator} #{creationUser} + + + and SAR_STAND_ATTR_DETAILS.valid_flag ${validFlagOperator} #{validFlag} + + + and SAR_STAND_ATTR_DETAILS.creation_time ${creationTimeOperator} #{creationTime} + + + and SAR_STAND_ATTR_DETAILS.creation_time >= #{creationTime1} + + + and SAR_STAND_ATTR_DETAILS.creation_time <= #{creationTime2} + + + and SAR_STAND_ATTR_DETAILS.modify_time ${modifyTimeOperator} #{modifyTime} + + + and SAR_STAND_ATTR_DETAILS.modify_time >= #{modifyTime1} + + + and SAR_STAND_ATTR_DETAILS.modify_time <= #{modifyTime2} + + + and attr_len ${attrLenOperator} #{attrLen} + + + and SAR_STAND_ATTR_DETAILS.sar_type like concat(concat('%',#{sarType}),'%') + + + and is_search = #{isSearch} + + + and is_warn = #{isWarn} + + + and SAR_STAND_ATTR_DETAILS.ID != #{notId} + + + and SAR_STAND_ATTR_DETAILS.ID in + + #{item} + + + + + + + + + + + delete from SAR_STAND_ATTR_DETAILS + where id = #{value} and valid_flag=0 + + + + + + + + + + + + + delete from SAR_STAND_ATTR_DETAILS + where id in + + #{item} + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandFile/SarStandFileMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandFile/SarStandFileMapper.xml new file mode 100644 index 00000000..fe7091e7 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandFile/SarStandFileMapper.xml @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, use_model, att_id, stand_id, id,file_suffix,file_name,stand_file_classify, + password,creation_user,ori_att_id + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and use_model ${useModelOperator} #{useModel} + + + and att_id ${attIdOperator} #{attId} + + + and stand_id ${standIdOperator} #{standId} + + + and id ${idOperator} #{id} + + + + + + + + insert into SAR_STAND_FILE() + values (#{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, + #{useModel, jdbcType=VARCHAR}, #{attId, jdbcType=VARCHAR}, #{standId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR},#{fileSuffix, jdbcType=VARCHAR},#{fileName, jdbcType=VARCHAR},#{standFileClassify, jdbcType=VARCHAR}, + #{password, jdbcType=VARCHAR},#{creationUser, jdbcType=VARCHAR}) + + + + + insert into SAR_STAND_FILE + + modify_time, + creation_time, + valid_flag, + use_model, + att_id, + stand_id, + id, + file_suffix, + file_name, + stand_file_classify, + password, + creation_user, + ori_att_id, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{useModel, jdbcType=VARCHAR}, + #{attId, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{fileSuffix, jdbcType=VARCHAR}, + #{fileName, jdbcType=VARCHAR}, + #{standFileClassify, jdbcType=VARCHAR}, + #{password, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{oriAttId, jdbcType=VARCHAR}, + + + + + + update SAR_STAND_FILE + + + ori_att_id = #{oriAttId}, + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + use_model = #{useModel}, + + + att_id = #{attId}, + + + stand_id = #{standId}, + + + where id = #{id} + + + + + + + + delete from SAR_STAND_FILE + where id = #{value} + + + + + + + + + + + + + + + + + + + + + + + + delete from SAR_STAND_FILE + where stand_id = #{value} + + + + + insert into SAR_STAND_FILE + () + values + + (#{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.useModel, jdbcType=VARCHAR}, + #{item.attId, jdbcType=VARCHAR}, + #{item.standId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}, + #{item.fileSuffix, jdbcType=VARCHAR}, + #{item.fileName, jdbcType=VARCHAR}, + #{item.standFileClassify, jdbcType=VARCHAR}, + #{item.password, jdbcType=VARCHAR}, + #{item.creationUser, jdbcType=VARCHAR}, + #{item.oriAttId, jdbcType=VARCHAR}) + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIdea/SarPublicIdeaAllMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIdea/SarPublicIdeaAllMapper.xml new file mode 100644 index 00000000..bdee27dd --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIdea/SarPublicIdeaAllMapper.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIdea/SarPublicIdeaMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIdea/SarPublicIdeaMapper.xml new file mode 100644 index 00000000..20fd577b --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIdea/SarPublicIdeaMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIssueControlCause/SarStandIssueControlCauseMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIssueControlCause/SarStandIssueControlCauseMapper.xml new file mode 100644 index 00000000..cf0cfb84 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIssueControlCause/SarStandIssueControlCauseMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIssueControlProduct/SarStandIssueControlProductMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIssueControlProduct/SarStandIssueControlProductMapper.xml new file mode 100644 index 00000000..d436e6ae --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandIssueControlProduct/SarStandIssueControlProductMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandProjectLibrary/SarStandProjectLibraryMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandProjectLibrary/SarStandProjectLibraryMapper.xml new file mode 100644 index 00000000..90d86638 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandProjectLibrary/SarStandProjectLibraryMapper.xml @@ -0,0 +1,536 @@ + + + + + insert into sar_stand_project_relation(project_id,stand_id) VALUES + + (#{list.projectId,jdbcType=VARCHAR},#{list.standId,jdbcType=VARCHAR}) + + + + + + + + delete from sar_stand_project_relation where + + ( project_id= #{list.projectId} and stand_id = #{list.standId} ) + + + + + + delete from sar_stand_project_relation where + project_id= #{projectId} + + + + delete from sar_stand_project_relation where + project_id= #{projectId} + and stand_id = #{standId} + + + + update sar_stand_project_library + + set detailed_list_version = #{version} where id = #{id} + + + + + update sar_stand_project_library + + set detailed_list_version = #{version} where id in + + #{item} + + + + + + + + + + + + + + + + + + + + + + + + + + update sar_stand_project_library set flag = '1' where id = #{projectId} + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandPutTime/SarStandPutTimeMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandPutTime/SarStandPutTimeMapper.xml new file mode 100644 index 00000000..f7e0dcfe --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandPutTime/SarStandPutTimeMapper.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + id, stand_id, time_name, put_time, time_type, order_num, creation_time + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and stand_id ${standIdOperator} #{standId} + + + and time_name ${timeNameOperator} #{timeName} + + + and put_time ${putTimeOperator} #{putTime} + + + and put_time >= #{putTime1} + + + and put_time <= #{putTime2} + + + and time_type ${timeTypeOperator} #{timeType} + + + and order_num ${orderNumOperator} #{orderNum} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + + + + delete from SAR_STAND_PUT_TIME + where stand_id = #{value} + + + + insert into SAR_STAND_PUT_TIME + (id, stand_id, time_name, put_time, time_type,creation_time) + values + + (#{item.id, jdbcType=VARCHAR}, + #{item.standId, jdbcType=VARCHAR}, + #{item.timeName, jdbcType=VARCHAR}, + #{item.putTime, jdbcType=VARCHAR}, + #{item.timeType, jdbcType=VARCHAR}, + #{item.creationTime, jdbcType=TIMESTAMP} + ) + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/BusinessDeptIssuempaaer.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/BusinessDeptIssuempaaer.xml new file mode 100644 index 00000000..12aec4cc --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/BusinessDeptIssuempaaer.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/ProductDeptIssuempaaer.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/ProductDeptIssuempaaer.xml new file mode 100644 index 00000000..3ba4f34e --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/ProductDeptIssuempaaer.xml @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/SarStandUnqualifiedMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/SarStandUnqualifiedMapper.xml new file mode 100644 index 00000000..0e6501af --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandUnqualified/SarStandUnqualifiedMapper.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandVal/SarStandValMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandVal/SarStandValMapper.xml new file mode 100644 index 00000000..e03029f4 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandVal/SarStandValMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, property_val, property_type, stand_id, id + + + + delete from SAR_STAND_VAL + where stand_id = #{standId} + + + + insert into SAR_STAND_VAL + () + values + + (#{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.propertyVal, jdbcType=VARCHAR}, + #{item.propertyType, jdbcType=VARCHAR}, + #{item.standId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}) + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/EarlyWraningEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/EarlyWraningEOMapper.xml new file mode 100644 index 00000000..67421bb3 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/EarlyWraningEOMapper.xml @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + warning.id AS ID, + sarInfo.ID AS STAND_ID, + sarInfo.STAND_TYPE, + CONCAT(sarInfo.STAND_SORT,' ',sarInfo.STAND_NUMBER,'-',sarInfo.STAND_YEAR) AS STAND_CODE, + sarInfo.STAND_NAME, + sarInfo.ISSUE_TIME, + attr.SSRQ as SSRQ + + + + + + + AND trim(replace(CONCAT( + sarInfo.STAND_SORT, + ' ', + sarInfo.STAND_NUMBER, + '-', + sarInfo.STAND_YEAR + ),' ','')) LIKE trim(replace(CONCAT('%',#{waringEO.standCode},'%'),' ','')) + + + AND sarInfo.STAND_NAME like concat('%', #{waringEO.standName},'%') + + + AND ( + DATE_FORMAT(sarInfo.ISSUE_TIME, '%Y-%m-%d') >= DATE_FORMAT( + #{waringEO.startIssueTime}, + '%Y-%m-%d' + ) + AND + DATE_FORMAT( sarInfo.ISSUE_TIME, '%Y-%m-%d') <= DATE_FORMAT( + #{waringEO.endIssueTime}, + '%Y-%m-%d' + ) + ) + + + AND ( + sarInfo.ID IN (SELECT DISTINCT law_id FROM warning_date as t WHERE + DATE_FORMAT(t.SSRQ, '%Y-%m-%d') >= DATE_FORMAT(#{waringEO.startSSRQ}, '%Y-%m-%d') + AND + DATE_FORMAT(t.SSRQ, '%Y-%m-%d') <= DATE_FORMAT(#{waringEO.endSSRQ}, '%Y-%m-%d') AND t.time_name = 'SSRQ' ) + ) + + + + + warning.id AS ID, + sarInfo.ID AS STAND_ID, + sarInfo.STAND_TYPE, + CONCAT(sarInfo.STAND_SORT,' ',sarInfo.STAND_NUMBER,'-',sarInfo.STAND_YEAR) AS STAND_CODE, + sarInfo.STAND_NAME, + sarInfo.ISSUE_TIME, + attr.SSRQ as SSRQ, + case stand_type + when 'INLAND' then '国内标准' + when 'FOREIGN' then '国外标准' + ELSE '' + END + as standTypeShow + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardInfo.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardInfo.xml new file mode 100644 index 00000000..44bd0401 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardInfo.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + update sar_standards_info + set TEXT_STATUS=#{textStatus} + where ID=#{id} + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardItem.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardItem.xml new file mode 100644 index 00000000..c2ffba00 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardItem.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardWarningDao.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardWarningDao.xml new file mode 100644 index 00000000..fd9e9371 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandWarning/SarStandardWarningDao.xml @@ -0,0 +1,128 @@ + + + + + + + REPLACE INTO sar_stand_warning (ID,STAND_ID,ITEM_ID,POLICY_ID,MARK,POWER) + VALUES + + + ( + #{item.id} + ,#{item.standId} + ,#{item.itemId} + ,#{item.policyId} + ,#{item.mark} + ,#{item.power} + ) + + + + + UPDATE sar_stand_warning + SET POWER ='0' + WHERE + STAND_ID IN ( SELECT law_id FROM warning_date WHERE DATE_FORMAT(SSRQ, '%Y-%m-%d') < DATE_FORMAT(now(), '%Y-%m-%d')) + OR + ITEM_ID IN ( SELECT ITEM_ID FROM warning_date WHERE DATE_FORMAT(SSRQ, '%Y-%m-%d') < DATE_FORMAT(now(), '%Y-%m-%d') AND ITEM_ID IS NOT NULL ) + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarInterpretationForeignStandardMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarInterpretationForeignStandardMapper.xml new file mode 100644 index 00000000..9a345a83 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarInterpretationForeignStandardMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarInterpretationNationalStandardMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarInterpretationNationalStandardMapper.xml new file mode 100644 index 00000000..130001ef --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarInterpretationNationalStandardMapper.xml @@ -0,0 +1,113 @@ + + + + + + + + update sar_interpretation_national_standard set risk_degree = #{find.riskDegree} + where sar_interpretation_national_standard.STAND_ID = #{find.standId} + and sar_interpretation_national_standard.STAND_NUMBER =#{find.standNumber} + and sar_interpretation_national_standard.STAND_NAME=#{find.standName} + and sar_interpretation_national_standard.INTERPRETATION_TIME = #{find.interpretationTime} + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarStandardComplianceProductAssessMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarStandardComplianceProductAssessMapper.xml new file mode 100644 index 00000000..7a1a7709 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceAssessResult/SarStandardComplianceProductAssessMapper.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceProductAssess/SarStandardComplianceProductAssessMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceProductAssess/SarStandardComplianceProductAssessMapper.xml new file mode 100644 index 00000000..c4ca9d7a --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardComplianceProductAssess/SarStandardComplianceProductAssessMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardsInfo/SarStandardsInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardsInfo/SarStandardsInfoMapper.xml new file mode 100644 index 00000000..620dbeb5 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarStandardsInfo/SarStandardsInfoMapper.xml @@ -0,0 +1,1891 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SAR_STANDARDS_INFO.id, SAR_STANDARDS_INFO.stand_type, SAR_STANDARDS_INFO.country, SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, SAR_STANDARDS_INFO.stand_year, SAR_STANDARDS_INFO.stand_name, SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, SAR_STANDARDS_INFO.stand_nature, SAR_STANDARDS_INFO.issue_time, SAR_STANDARDS_INFO.put_time, + SAR_STANDARDS_INFO.synopsis, SAR_STANDARDS_INFO.creation_user, SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, SAR_STANDARDS_INFO.modify_time,SAR_STANDARDS_INFO.is_relate_access,SAR_STANDARDS_INFO.cite_stand,SAR_STANDARDS_INFO.cited_stand,SAR_STANDARDS_INFO.text_status,SAR_STANDARDS_INFO.STAND_SYSTEM + + + DISTINCT SAR_STANDARDS_INFO.id, + SAR_STANDARDS_INFO.stand_type, + SAR_STANDARDS_INFO.country, + SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, + SAR_STANDARDS_INFO.stand_year, + SAR_STANDARDS_INFO.stand_name, + SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, + SAR_STANDARDS_INFO.stand_nature, + SAR_STANDARDS_INFO.issue_time, + SAR_STANDARDS_INFO.put_time, + SAR_STANDARDS_INFO.text_status, + SAR_STANDARDS_INFO.creation_user, + SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, + SAR_STANDARDS_INFO.modify_time, + SAR_STANDARDS_INFO.STAND_SYSTEM, + SAR_STANDARDS_INFO.IS_RELATE_ACCESS, + SAR_STAND_ATTR_INFO.CHJL AS CHJL, + SAR_STAND_ATTR_INFO.DTBJH AS DTBZH, + dicstandSort.DIC_TYPE_NAME AS standSortShow, + dicstandTextStatus.DIC_TYPE_NAME AS standTextStatusShow, + ( + CASE + WHEN SAR_STAND_ATTR_INFO.SSRQ ='' THEN '' + ELSE SAR_STAND_ATTR_INFO.SSRQ + END + ) AS SSRQ, + ( + CASE + WHEN SAR_STAND_ATTR_INFO.ZCCSSRQ ='' THEN '' + ELSE SAR_STAND_ATTR_INFO.ZCCSSRQ + END + ) AS ZCCSSRQ, + ( + CASE + WHEN SAR_STAND_ATTR_INFO.XCXSSRQ ='' THEN '' + ELSE SAR_STAND_ATTR_INFO.XCXSSRQ + END + ) AS XCXSSRQ + + + + SAR_STANDARDS_INFO.id, SAR_STANDARDS_INFO.stand_type, SAR_STANDARDS_INFO.country, SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, SAR_STANDARDS_INFO.stand_year, SAR_STANDARDS_INFO.stand_name, SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, SAR_STANDARDS_INFO.stand_nature, SAR_STANDARDS_INFO.issue_time, SAR_STANDARDS_INFO.put_time, + concat(SAR_STANDARDS_INFO.synopsis, '') as synopsis, concat(replace_stand_num, '') as replace_stand_num, replaced_stand_num, SAR_STANDARDS_INFO.creation_user, SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, SAR_STANDARDS_INFO.modify_time, dicstandSort.DIC_TYPE_NAME as standSortShow, + dicstandTextStatus.DIC_TYPE_NAME as standTextStatusShow,is_relate_access,cite_stand,cited_stand,SAR_STANDARDS_INFO.text_status,SAR_STANDARDS_INFO.STAND_SYSTEM + + + + SAR_STANDARDS_INFO.id, + SAR_STANDARDS_INFO.stand_type, + SAR_STANDARDS_INFO.country, + SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, + SAR_STANDARDS_INFO.stand_year, + SAR_STANDARDS_INFO.stand_name, + SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, + SAR_STANDARDS_INFO.stand_nature, + SAR_STANDARDS_INFO.issue_time, + SAR_STANDARDS_INFO.put_time, + concat(SAR_STANDARDS_INFO.synopsis, '') as synopsis, + concat(replace_stand_num, '') as replace_stand_num, + replaced_stand_num, + SAR_STANDARDS_INFO.creation_user, + SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, + SAR_STANDARDS_INFO.modify_time, + dicstandSort.DIC_TYPE_NAME as standSortShow, + dicstandNature.DIC_TYPE_NAME as standNatureShow, + dicstandTextStatus.DIC_TYPE_NAME as standTextStatusShow, + is_relate_access, + cite_stand, + cited_stand, + SAR_STANDARDS_INFO.text_status, + SAR_STANDARDS_INFO.STAND_SYSTEM + + + + + SAR_STANDARDS_INFO.id, SAR_STANDARDS_INFO.stand_type, SAR_STANDARDS_INFO.country, SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, SAR_STANDARDS_INFO.stand_year, SAR_STANDARDS_INFO.stand_name, SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, SAR_STANDARDS_INFO.stand_nature, SAR_STANDARDS_INFO.issue_time, SAR_STANDARDS_INFO.put_time, + concat(SAR_STANDARDS_INFO.synopsis, ''), concat(replace_stand_num, ''), replaced_stand_num, SAR_STANDARDS_INFO.creation_user, SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, SAR_STANDARDS_INFO.modify_time, dicstandSort.DIC_TYPE_NAME, + dicstandNature.DIC_TYPE_NAME, + dicstandTextStatus.DIC_TYPE_NAME,is_relate_access,cite_stand,cited_stand,SAR_STANDARDS_INFO.text_status,SAR_STANDARDS_INFO.STAND_SYSTEM + + + + SAR_STANDARDS_INFO.id, SAR_STANDARDS_INFO.stand_type, SAR_STANDARDS_INFO.country, SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, SAR_STANDARDS_INFO.stand_year, SAR_STANDARDS_INFO.stand_name, SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, SAR_STANDARDS_INFO.stand_nature, SAR_STANDARDS_INFO.issue_time, SAR_STANDARDS_INFO.put_time, + concat(SAR_STANDARDS_INFO.synopsis, ''), concat(replace_stand_num, ''), replaced_stand_num, SAR_STANDARDS_INFO.creation_user, SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, SAR_STANDARDS_INFO.modify_time, dicstandSort.DIC_TYPE_NAME, + dicstandTextStatus.DIC_TYPE_NAME,is_relate_access,cite_stand,cited_stand,SAR_STANDARDS_INFO.text_status,SAR_STANDARDS_INFO.STAND_SYSTEM + + + + + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + and id ${idOperator} #{id} + + + and stand_type ${standTypeOperator} #{standType} + + + and country ${countryOperator} #{country} + + + and stand_sort ${standSortOperator} #{standSort} + + + and stand_number ${standNumberOperator} #{standNumber} + + + and stand_year ${standYearOperator} #{standYear} + + + and stand_name ${standNameOperator} #{standName} + + + and stand_en_name ${standEnNameOperator} #{standEnName} + + + and stand_state ${standStateOperator} #{standState} + + + and stand_nature ${standNatureOperator} #{standNature} + + + and issue_time ${issueTimeOperator} #{issueTime} + + + and issue_time >= #{issueTime1} + + + and issue_time <= #{issueTime2} + + + and put_time ${putTimeOperator} #{putTime} + + + and put_time >= #{putTime1} + + + and put_time <= #{putTime2} + + + and synopsis ${synopsisOperator} #{synopsis} + + + and replace_stand_num ${replaceStandNumOperator} #{replaceStandNum} + + + and replaced_stand_num ${replacedStandNumOperator} #{replacedStandNum} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and is_relate_access = #{isRelateAccess} + + + and text_status = #{textStatus} + + + and stand_system = #{standSystem} + + + + + + + insert into SAR_STANDARDS_INFO + + id, + stand_type, + country, + stand_sort, + stand_number, + stand_year, + stand_name, + stand_en_name, + stand_state, + stand_nature, + issue_time, + put_time, + synopsis, + replace_stand_num, + replaced_stand_num, + creation_user, + valid_flag, + creation_time, + modify_time, + is_relate_access, + cite_stand, + cited_stand, + text_status, + stand_system, + + + #{id, jdbcType=VARCHAR}, + #{standType, jdbcType=VARCHAR}, + #{country, jdbcType=VARCHAR}, + #{standSort, jdbcType=VARCHAR}, + #{standNumber, jdbcType=VARCHAR}, + #{standYear, jdbcType=VARCHAR}, + #{standName, jdbcType=VARCHAR}, + #{standEnName, jdbcType=VARCHAR}, + #{standState, jdbcType=VARCHAR}, + #{standNature, jdbcType=VARCHAR}, + #{issueTime, jdbcType=VARCHAR}, + #{putTime, jdbcType=TIMESTAMP}, + #{synopsis, jdbcType=CLOB}, + #{replaceStandNum, jdbcType=CLOB}, + #{replacedStandNum, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{validFlag, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{isRelateAccess, jdbcType=VARCHAR}, + #{citeStand, jdbcType=VARCHAR}, + #{citedStand, jdbcType=VARCHAR}, + #{textStatus, jdbcType=VARCHAR}, + #{standSystem, jdbcType=VARCHAR}, + + + + + + update SAR_STANDARDS_INFO + set stand_type = #{standType}, + country = #{country}, + stand_sort = #{standSort}, + stand_number = #{standNumber}, + stand_year = #{standYear}, + stand_name = #{standName}, + stand_en_name = #{standEnName}, + stand_state = #{standState}, + stand_nature = #{standNature}, + issue_time = #{issueTime}, + put_time = #{putTime}, + synopsis = #{synopsis}, + replace_stand_num = #{replaceStandNum}, + replaced_stand_num = #{replacedStandNum}, + creation_user = #{creationUser}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime}, + text_status = #{textStatus}, + stand_system = #{standSystem} + where id = #{id} + + + + + update SAR_STANDARDS_INFO + + + stand_type = #{standType}, + + + country = #{country}, + + + stand_sort = #{standSort}, + + + stand_number = #{standNumber}, + + + stand_year = #{standYear}, + + + stand_name = #{standName}, + + + stand_en_name = #{standEnName}, + + + stand_state = #{standState}, + + + stand_nature = #{standNature}, + + + issue_time = #{issueTime}, + + + put_time = #{putTime}, + + + synopsis = #{synopsis}, + + + replace_stand_num = #{replaceStandNum}, + + + replaced_stand_num = #{replacedStandNum}, + + + creation_user = #{creationUser}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + is_relate_access = #{isRelateAccess}, + + + cite_stand = #{citeStand}, + + + cited_stand = #{citedStand}, + + + text_status = #{textStatus}, + + + stand_system = #{standSystem}, + + + where id = #{id} + + + + + + + + delete from SAR_STANDARDS_INFO + where id = #{value} + + + + + + + + + + + + + + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and + dicstandSort.dic_id is not null and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null and dicstandSort.dic_id ='JKSADFH564S') + + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_STANDARDS_INFO.text_status + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id + left join TS_RESOURCE on SAR_STAND_MENU.menu_id = TS_RESOURCE.id + left join SAR_STAND_ATTR_INFO on (SAR_STAND_ATTR_INFO.stand_id = SAR_STANDARDS_INFO.id and SAR_STAND_ATTR_INFO.valid_flag=0) + left join TS_PERSON_COLLECT on (TS_PERSON_COLLECT.COLLECT_RES_ID = SAR_STANDARDS_INFO.id and TS_PERSON_COLLECT.VALID_FLAG=0) + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + + and stand_type = #{standType} + + + + + and country = #{country} + + + + and ( + (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-', + SAR_STANDARDS_INFO.STAND_YEAR),' ','')) like trim(replace(concat(concat('%',#{standNumber}),'%'),' ','')) and SAR_STANDARDS_INFO.STAND_YEAR != '') + or (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER),' ','')) like trim(replace(concat(concat('%',#{standNumber}),'%'),' ','')) + ) + + or (stand_name like concat(concat('%',#{standNumber}),'%')) + ) + + + + and stand_name like concat(concat('%',#{standName}),'%') + or STAND_NUMBER like concat(concat('%',#{standName}),'%') + or STAND_YEAR like concat(concat('%',#{standName}),'%') + or STAND_SORT like concat(concat('%',#{standName}),'%') + + + and stand_en_name like concat(concat('%',#{standEnName}),'%') + + + + and stand_state = #{standState} + + + + + and stand_nature = #{standNature} + + + + and replace_stand_num like concat(concat('%',#{replaceStandNum}),'%') + + + + and replaced_stand_num like concat(concat('%',#{replacedStandNum}),'%') + + + and is_relate_access = #{isRelateAccess} + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + and SAR_STANDARDS_INFO.id in + + #{item} + + + + and SAR_STANDARDS_INFO.stand_sort = #{standSort} + + + + and SAR_STANDARDS_INFO.STAND_YEAR = #{standYear} + + + and DATE_FORMAT(SAR_STANDARDS_INFO.ISSUE_TIME ,'%Y-%m-%d') = #{issueTime} + + + + AND dbms_lob.instr(SYNOPSIS, #{synopsis} ,1,1) > 0 + + + + + and SAR_STANDARDS_INFO.TEXT_STATUS = #{textStatus} + + + + and SAR_STANDARDS_INFO.IS_RELATE_ACCESS = #{isRelateAccess} + + + + and SAR_STANDARDS_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='INLAND_STAND' or collect_type='FOREIGN_STAND') + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + + and SAR_STAND_ATTR_INFO.GXHBQ is not null + + + and SAR_STAND_ATTR_INFO.GXHBQ like concat(concat('%',#{labelMenuId}),'%') + + + + and SAR_STAND_ATTR_INFO.CLLX = #{applyArctic} + + + + and (${advanceSearchStr}) + + + + + + + + + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and + dicstandSort.dic_id is not null and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null and dicstandSort.dic_id='JKSADFH564S') + + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_STANDARDS_INFO.text_status + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + + LEFT JOIN TS_DICTYPE dicstandNature ON ( + dicstandNature.dic_type_code = SAR_STANDARDS_INFO.stand_nature + AND dicstandNature.dic_id IS NOT NULL + AND dicstandNature.valid_flag = 0 + ) + + + left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id + left join TS_RESOURCE on SAR_STAND_MENU.menu_id = TS_RESOURCE.id + left join SAR_STAND_ATTR_INFO on (SAR_STAND_ATTR_INFO.stand_id = SAR_STANDARDS_INFO.id and SAR_STAND_ATTR_INFO.valid_flag=0) + left join TS_PERSON_COLLECT on (TS_PERSON_COLLECT.COLLECT_RES_ID = SAR_STANDARDS_INFO.id and TS_PERSON_COLLECT.VALID_FLAG=0) + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + + and stand_type = #{standType} + + + + + and country = #{country} + + + + and ( + (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-', + SAR_STANDARDS_INFO.STAND_YEAR),' ','')) like trim(replace(concat(concat('%',#{standNumber}),'%'),' ','')) and SAR_STANDARDS_INFO.STAND_YEAR != '') + or (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER),' ','')) like trim(replace(concat(concat('%',#{standNumber}),'%'),' ','')) + ) + + or (stand_name like concat(concat('%',#{standNumber}),'%')) + ) + + + + and stand_name like concat(concat('%',#{standName}),'%') + or STAND_NUMBER like concat(concat('%',#{standName}),'%') + or STAND_YEAR like concat(concat('%',#{standName}),'%') + or STAND_SORT like concat(concat('%',#{standName}),'%') + + + and stand_en_name like concat(concat('%',#{standEnName}),'%') + + + + and stand_state = #{standState} + + + + + and stand_nature = #{standNature} + + + + and replace_stand_num like concat(concat('%',#{replaceStandNum}),'%') + + + + and replaced_stand_num like concat(concat('%',#{replacedStandNum}),'%') + + + and is_relate_access = #{isRelateAccess} + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + and SAR_STANDARDS_INFO.id in + + #{item} + + + + and SAR_STANDARDS_INFO.stand_sort = #{standSort} + + + + and SAR_STANDARDS_INFO.STAND_YEAR = #{standYear} + + + and DATE_FORMAT(SAR_STANDARDS_INFO.ISSUE_TIME ,'%Y-%m-%d') = #{issueTime} + + + + AND dbms_lob.instr(SYNOPSIS, #{synopsis} ,1,1) > 0 + + + + + and SAR_STANDARDS_INFO.TEXT_STATUS = #{textStatus} + + + + and SAR_STANDARDS_INFO.IS_RELATE_ACCESS = #{isRelateAccess} + + + + and SAR_STANDARDS_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='INLAND_STAND' or collect_type='FOREIGN_STAND') + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + + and SAR_STAND_ATTR_INFO.GXHBQ is not null + + + and SAR_STAND_ATTR_INFO.GXHBQ like concat(concat('%',#{labelMenuId}),'%') + + + + and SAR_STAND_ATTR_INFO.CLLX = #{applyArctic} + + + + and (${advanceSearchStr}) + + + + + + ORDER BY + + ${page.orderByA} ${page.order1}, + + + CASE sar_standards_info.stand_sort + when 'GB' THEN 0 + when 'GB/T' THEN 1 + when 'QC/T' THEN 2 + when 'JT' THEN 3 + when 'JB' THEN 4 + when 'GA' THEN 5 + when 'GJB' THEN 6 + when 'HJ' THEN 7 + ELSE 8 + END, + sar_standards_info.stand_sort ASC,CAST(sar_standards_info.STAND_NUMBER AS decimal(9,2)) ASC,sar_standards_info.STAND_YEAR DESC,sar_standards_info.id + + + CASE sar_standards_info.stand_sort + when 'ECE' THEN 0 + when 'EU' THEN 1 + when 'EC' THEN 2 + when 'EEC' THEN 3 + when 'ISO' THEN 4 + when 'IEC' THEN 5 + when 'GTR' THEN 6 + when 'CFR' THEN 7 + when 'JASO' THEN 8 + when 'JIS' THEN 9 + when 'GSO' THEN 10 + when 'GOST' THEN 11 + when 'ΓOCT' THEN 12 + when 'TP' THEN 13 + when 'SASO' THEN 14 + when 'UAE' THEN 15 + when 'CONTRAN' THEN 16 + when 'DENATRAN' THEN 17 + when 'ABNT NBR' THEN 18 + when 'NBR' THEN 19 + when 'INMETRO' THEN 20 + when 'CONAMA' THEN 21 + when 'Normative Instruction' THEN 22 + when 'ADR' THEN 23 + ELSE 24 + END, + sar_standards_info.stand_sort ASC,CAST(sar_standards_info.STAND_NUMBER AS decimal(9,2)) ASC,sar_standards_info.STAND_YEAR DESC,sar_standards_info.id + + + sar_standards_info.stand_sort ASC + + + + + CASE a.stand_sort + when 'GB' THEN 0 + when 'GB/T' THEN 1 + when 'QC/T' THEN 2 + when 'JT' THEN 3 + when 'JB' THEN 4 + when 'GA' THEN 5 + when 'GJB' THEN 6 + when 'HJ' THEN 7 + ELSE 8 + END, + a.stand_sort ASC, + + + CASE a.stand_sort + when 'ECE' THEN 0 + when 'EU' THEN 1 + when 'EC' THEN 2 + when 'EEC' THEN 3 + when 'ISO' THEN 4 + when 'IEC' THEN 5 + when 'GTR' THEN 6 + when 'CFR' THEN 7 + when 'JASO' THEN 8 + when 'JIS' THEN 9 + when 'GSO' THEN 10 + when 'GOST' THEN 11 + when 'ΓOCT' THEN 12 + when 'TP' THEN 13 + when 'SASO' THEN 14 + when 'UAE' THEN 15 + when 'CONTRAN' THEN 16 + when 'DENATRAN' THEN 17 + when 'ABNT NBR' THEN 18 + when 'NBR' THEN 19 + when 'INMETRO' THEN 20 + when 'CONAMA' THEN 21 + when 'Normative Instruction' THEN 22 + when 'ADR' THEN 23 + ELSE 24 + END, + a.stand_sort ASC, + + + + + + CASE a.stand_sort + when 'GB' THEN 0 + when 'GB/T' THEN 1 + when 'QC/T' THEN 2 + when 'JT' THEN 3 + when 'JB' THEN 4 + when 'GA' THEN 5 + when 'GJB' THEN 6 + when 'HJ' THEN 7 + ELSE 8 + END, + a.stand_sort ASC, + + + CASE a.stand_sort + when 'ECE' THEN 0 + when 'EU' THEN 1 + when 'EC' THEN 2 + when 'EEC' THEN 3 + when 'ISO' THEN 4 + when 'IEC' THEN 5 + when 'GTR' THEN 6 + when 'CFR' THEN 7 + when 'JASO' THEN 8 + when 'JIS' THEN 9 + when 'GSO' THEN 10 + when 'GOST' THEN 11 + when 'ΓOCT' THEN 12 + when 'TP' THEN 13 + when 'SASO' THEN 14 + when 'UAE' THEN 15 + when 'CONTRAN' THEN 16 + when 'DENATRAN' THEN 17 + when 'ABNT NBR' THEN 18 + when 'NBR' THEN 19 + when 'INMETRO' THEN 20 + when 'CONAMA' THEN 21 + when 'Normative Instruction' THEN 22 + when 'ADR' THEN 23 + ELSE 24 + END, + a.stand_sort ASC, + + + + + left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and + dicstandSort.dic_id is not null and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null and dicstandSort.dic_id='JKSADFH564S') + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_STANDARDS_INFO.text_status + + AND dicstandTextStatus.dic_id = 'JKSADFH564S' + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + left join SAR_STAND_ATTR_INFO on (SAR_STAND_ATTR_INFO.stand_id = SAR_STANDARDS_INFO.id and SAR_STAND_ATTR_INFO.valid_flag=0) + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + + and stand_type = #{page.standType} + + + and SAR_STANDARDS_INFO.MODIFY_TIME between DATE_SUB(NOW(),INTERVAL 7 day) and DATE_SUB(NOW(),INTERVAL -1 day) + + + + + and country = #{page.country} + + + + and ( + (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-', + SAR_STANDARDS_INFO.STAND_YEAR),' ','')) like trim(replace(concat(concat('%',#{page.standNumber}),'%'),' ','')) and SAR_STANDARDS_INFO.STAND_YEAR != '') + or (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER),' ','')) like trim(replace(concat(concat('%',#{page.standNumber}),'%'),' ','')) + + or (trim(replace(stand_name,' ','')) like trim(replace(concat(concat('%',#{page.standNumber}),'%'),' ','')) ) + + ) + + + ) + + + + and stand_name like concat(concat('%',#{page.standName}),'%') + + + + + + and stand_en_name like concat(concat('%',#{page.standEnName}),'%') + + + + and stand_state = #{page.standState} + + + + + and stand_nature = #{page.standNature} + + + + and SAR_STAND_ATTR_INFO.DTBJH like concat(concat('%',#{page.replaceStandNum}),'%') + + + + and replaced_stand_num like concat(concat('%',#{page.replacedStandNum}),'%') + + + and is_relate_access = #{page.isRelateAccess} + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + and SAR_STAND_MENU.MENU_ID not in + + #{item} + + + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + and SAR_STANDARDS_INFO.id in + + #{item} + + + + and SAR_STANDARDS_INFO.stand_sort = #{page.standSort} + + + + and SAR_STANDARDS_INFO.STAND_YEAR = #{page.standYear} + + + + and DATE_FORMAT(SAR_STANDARDS_INFO.ISSUE_TIME ,'%Y-%m-%d') = #{page.issueTime} + + + + and + DATE_FORMAT(SAR_STANDARDS_INFO.ISSUE_TIME ,'%Y-%m-%d') + between + DATE_FORMAT(#{page.startIssueTime} ,'%Y-%m-%d') + and + DATE_FORMAT(#{page.endIssueTime} ,'%Y-%m-%d') + + + + AND dbms_lob.instr(SYNOPSIS, #{page.synopsis} ,1,1) > 0 + + + + + and SAR_STANDARDS_INFO.TEXT_STATUS = #{page.textStatus} + + + + and SAR_STANDARDS_INFO.IS_RELATE_ACCESS = #{page.isRelateAccess} + + + + and SAR_STANDARDS_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='INLAND_STAND' or collect_type='FOREIGN_STAND') + and TS_PERSON_COLLECT.user_id=#{page.userId} + ) + + + + + and SAR_STAND_ATTR_INFO.GXHBQ is not null + + + and SAR_STAND_ATTR_INFO.GXHBQ like concat(concat('%',#{page.labelMenuId}),'%') + + + + and SAR_STAND_ATTR_INFO.CLLX = #{page.applyArctic} + + + and SAR_STAND_ATTR_INFO.SYRZ = #{page.syzd} + + + and (${page.advanceSearchStr}) + + + + + + left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and + dicstandSort.dic_id is not null and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null and dicstandSort.dic_id='JKSADFH564S') + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_STANDARDS_INFO.text_status + + AND dicstandTextStatus.dic_id = 'JKSADFH564S' + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + left join SAR_STAND_ATTR_INFO on (SAR_STAND_ATTR_INFO.stand_id = SAR_STANDARDS_INFO.id and SAR_STAND_ATTR_INFO.valid_flag=0) + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + + and stand_type = #{page.standType} + + + + and ( + (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-', + SAR_STANDARDS_INFO.STAND_YEAR),' ','')) = trim(replace(#{page.standNumber},' ','')) and SAR_STANDARDS_INFO.STAND_YEAR != '') + or (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER),' ','')) = trim(replace(#{page.standNumber},' ','')) + ) + ) + + + + + + left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and + dicstandSort.dic_id is not null and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null and dicstandSort.dic_id='JKSADFH564S') + LEFT JOIN TS_DICTYPE dicstandTextStatus ON ( + dicstandTextStatus.dic_type_code = SAR_STANDARDS_INFO.text_status + AND dicstandTextStatus.dic_id IS NOT NULL + AND dicstandTextStatus.valid_flag = 0 + ) + left join SAR_STAND_ATTR_INFO on (SAR_STAND_ATTR_INFO.stand_id = SAR_STANDARDS_INFO.id and SAR_STAND_ATTR_INFO.valid_flag=0) + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + + and stand_type = #{page.standType} + + + + + and country = #{page.country} + + + + and ( + (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-', + SAR_STANDARDS_INFO.STAND_YEAR),' ','')) like trim(replace(concat(concat('%',#{page.standNumber}),'%'),' ','')) and SAR_STANDARDS_INFO.STAND_YEAR != '') + or trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER),' ','')) like trim(replace(concat(concat('%',#{page.standNumber}),'%'),' ','')) + + + + + ) + + + + and stand_name like concat(concat('%',#{page.standName}),'%') + + + + + + and stand_en_name like concat(concat('%',#{page.standEnName}),'%') + + + + and stand_state = #{page.standState} + + + + + and stand_nature = #{page.standNature} + + + + and SAR_STAND_ATTR_INFO.DTBJH like concat(concat('%',#{page.replaceStandNum}),'%') + + + + and replaced_stand_num like concat(concat('%',#{page.replacedStandNum}),'%') + + + and is_relate_access = #{page.isRelateAccess} + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + and SAR_STANDARDS_INFO.id in + + #{item} + + + + and SAR_STANDARDS_INFO.stand_sort = #{page.standSort} + + + + and SAR_STANDARDS_INFO.STAND_YEAR = #{page.standYear} + + + + and DATE_FORMAT(SAR_STANDARDS_INFO.ISSUE_TIME ,'%Y-%m-%d') = #{page.issueTime} + + + + and + DATE_FORMAT(SAR_STANDARDS_INFO.ISSUE_TIME ,'%Y-%m-%d') + between + DATE_FORMAT(#{page.startIssueTime} ,'%Y-%m-%d') + and + DATE_FORMAT(#{page.endIssueTime} ,'%Y-%m-%d') + + + + AND dbms_lob.instr(SYNOPSIS, #{page.synopsis} ,1,1) > 0 + + + + + and SAR_STANDARDS_INFO.TEXT_STATUS = #{page.textStatus} + + + + and SAR_STANDARDS_INFO.IS_RELATE_ACCESS = #{page.isRelateAccess} + + + + and SAR_STANDARDS_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='INLAND_STAND' or collect_type='FOREIGN_STAND') + and TS_PERSON_COLLECT.user_id=#{page.userId} + ) + + + + + and SAR_STAND_ATTR_INFO.GXHBQ is not null + + + and SAR_STAND_ATTR_INFO.GXHBQ like concat(concat('%',#{page.labelMenuId}),'%') + + + + and SAR_STAND_ATTR_INFO.CLLX = #{page.applyArctic} + + + and (${page.advanceSearchStr}) + + + + + + left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + + and stand_type = #{standType} + + + + + and country = #{country} + + + + and ( + (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-', + SAR_STANDARDS_INFO.STAND_YEAR),' ','')) like trim(replace(concat(concat('%',#{standNumber}),'%'), + ' ','')) and SAR_STANDARDS_INFO.STAND_YEAR != '') + or (trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER),' ','')) like + trim(replace(concat(concat('%',#{standNumber}),'%'),' ','')) + ) + or (trim(replace(stand_name,' ','')) like trim(replace(concat(concat('%',#{standNumber}),'%'),' ','')) ) + ) + + + + and stand_name like concat(concat('%',#{standName}),'%') + + + and stand_en_name like concat(concat('%',#{standEnName}),'%') + + + + and stand_state = #{standState} + + + + + and stand_nature = #{standNature} + + + + and replace_stand_num like concat(concat('%',#{replaceStandNum}),'%') + + + + and replaced_stand_num like concat(concat('%',#{replacedStandNum}),'%') + + + and is_relate_access = #{isRelateAccess} + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + and SAR_STANDARDS_INFO.id in + + #{item} + + + + and SAR_STANDARDS_INFO.stand_sort = #{standSort} + + + + and SAR_STANDARDS_INFO.STAND_YEAR = #{standYear} + + + and DATE_FORMAT(SAR_STANDARDS_INFO.ISSUE_TIME ,'%Y-%m-%d') = #{issueTime} + + + + AND dbms_lob.instr(SYNOPSIS, #{synopsis} ,1,1) > 0 + + + + + and SAR_STANDARDS_INFO.TEXT_STATUS = #{textStatus} + + + + and SAR_STANDARDS_INFO.IS_RELATE_ACCESS = #{isRelateAccess} + + + + and SAR_STANDARDS_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='INLAND_STAND' or collect_type='FOREIGN_STAND') + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update SAR_STANDARDS_INFO set + stand_state=#{standState} where 1=1 and valid_flag=0 + + and stand_sort = #{standSort} + + + and stand_Number = #{standNumber} + + + and stand_year = #{standYear} + + + + + + + delete from SAR_STANDARDS_INFO + where id = #{id} and valid_flag=1 + + + + update SAR_STANDARDS_INFO set REPLACED_STAND_NUM = #{replacedStandNum} where id = #{id} + + + + update SAR_STANDARDS_INFO set CITED_STAND = #{citedStand} where id = #{id} + + + + + + + + + + + + + + + + + + + + + update SAR_STANDARDS_INFO set stand_state = #{state} + where id in + + #{item} + + + + + UPDATE sar_standards_info set IS_RELATE_ACCESS = #{IS_RELATE_ACCESS} WHERE ID IN + + #{id} + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarUrl/TsUrlDao.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarUrl/TsUrlDao.xml new file mode 100644 index 00000000..a6d3c677 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarUrl/TsUrlDao.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml new file mode 100644 index 00000000..bb1bae1c --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarUser/TsUserMapper.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarVppsTree/SarVppsTreeMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarVppsTree/SarVppsTreeMapper.xml new file mode 100644 index 00000000..8e2bb000 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarVppsTree/SarVppsTreeMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/slrs/SarStandProjectTeamMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/slrs/SarStandProjectTeamMapper.xml new file mode 100644 index 00000000..1ccf3f8b --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/slrs/SarStandProjectTeamMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapAttendeeMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapAttendeeMapper.xml new file mode 100644 index 00000000..9ffa4968 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapAttendeeMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapFilesMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapFilesMapper.xml new file mode 100644 index 00000000..e19264db --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapFilesMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapMeetingMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapMeetingMapper.xml new file mode 100644 index 00000000..586270ef --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/spaMeetInfo/SapMeetingMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitInfoEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitInfoEOMapper.xml new file mode 100644 index 00000000..4e35dfba --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitInfoEOMapper.xml @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + sar_type, file_name, id, stand_id, file_type, att_id, valid_flag, creation_time, + creation_user, modify_time, modify_user,stand_num_split,stand_name_split,result + + + + + where 1=1 + + + and sar_type ${sarTypeOperator} #{sarType} + + + and file_name ${fileNameOperator} #{fileName} + + + and id ${idOperator} #{id} + + + and stand_id ${standIdOperator} #{standId} + + + and file_type ${fileTypeOperator} #{fileType} + + + and att_id ${attIdOperator} #{attId} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and modify_user ${modifyUserOperator} #{modifyUser} + + + + + + + + insert into SAR_FILE_SPLIT_INFO() + values (#{sarType, jdbcType=VARCHAR}, #{fileName, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}, #{standId, jdbcType=VARCHAR}, #{fileType, jdbcType=VARCHAR}, #{attId, jdbcType=VARCHAR}, #{validFlag, jdbcType=INTEGER}, #{creationTime, jdbcType=TIMESTAMP}, #{creationUser, jdbcType=VARCHAR}, #{modifyTime, jdbcType=TIMESTAMP}, #{modifyUser, jdbcType=VARCHAR}) + + + + + + insert into SAR_FILE_SPLIT_INFO + + sar_type, + file_name, + id, + stand_id, + file_type, + att_id, + valid_flag, + creation_time, + creation_user, + modify_time, + modify_user, + stand_num_split, + stand_name_split, + result, + + + #{sarType, jdbcType=VARCHAR}, + #{fileName, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{fileType, jdbcType=VARCHAR}, + #{attId, jdbcType=VARCHAR}, + #{validFlag, jdbcType=INTEGER}, + #{creationTime, jdbcType=TIMESTAMP}, + #{creationUser, jdbcType=VARCHAR}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{modifyUser, jdbcType=VARCHAR}, + #{standNumSplit, jdbcType=VARCHAR}, + #{standNameSplit, jdbcType=VARCHAR}, + #{result, jdbcType=VARCHAR}, + + + + + + update SAR_FILE_SPLIT_INFO + set sar_type = #{sarType}, + file_name = #{fileName}, + stand_id = #{standId}, + file_type = #{fileType}, + att_id = #{attId}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + creation_user = #{creationUser}, + modify_time = #{modifyTime}, + modify_user = #{modifyUser} + where id = #{id} + + + + + update SAR_FILE_SPLIT_INFO + + + sar_type = #{sarType}, + + + file_name = #{fileName}, + + + stand_id = #{standId}, + + + file_type = #{fileType}, + + + att_id = #{attId}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + creation_user = #{creationUser}, + + + modify_time = #{modifyTime}, + + + modify_user = #{modifyUser}, + + + result = #{result}, + + + stand_num_split = #{standNumSplit}, + + + stand_name_split = #{standNameSplit}, + + + split_status = #{splitStatus} + + + where id = #{id} + + + + + + + + delete from SAR_FILE_SPLIT_INFO + where id = #{value} + + + + + + + + + + + + + + + + + delete from SAR_FILE_SPLIT_INFO + where id in + + #{item} + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsEOMapper.xml new file mode 100644 index 00000000..a24f29f9 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsEOMapper.xml @@ -0,0 +1,634 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SAR_FILE_SPLIT_ITEMS.id, SAR_FILE_SPLIT_ITEMS.info_id, SAR_FILE_SPLIT_ITEMS.items_num, items_name, iterms_conditions, + newcar_put_time, product_put_time, menu_id, svpps, apply_arctic, reference_stand, special_request, relevance_file, + SAR_FILE_SPLIT_ITEMS.remarks, SAR_FILE_SPLIT_ITEMS.valid_flag, SAR_FILE_SPLIT_ITEMS.creation_user, + SAR_FILE_SPLIT_ITEMS.creation_time, SAR_FILE_SPLIT_ITEMS.modify_time, SAR_FILE_SPLIT_ITEMS.modify_user, + SAR_FILE_SPLIT_ITEMS.fo,SAR_FILE_SPLIT_ITEMS.duty_engineer, SAR_FILE_SPLIT_ITEMS.claim_type, + SAR_FILE_SPLIT_ITEMS.bus_stand_cover,SAR_FILE_SPLIT_ITEMS.file_type,SAR_FILE_SPLIT_ITEMS.responsible_unit, + TS_ORG.org_name as responsibleUnitShow, dicClaimType.DIC_TYPE_NAME as claimTypeShow,tsdutyEngineer.NAME as + dutyEngineerShow,tsFo.NAME as foShow,SAR_FILE_SPLIT_ITEMS.work_flow_show AS workFlowShow + + + + SAR_FILE_SPLIT_ITEMS.id, SAR_FILE_SPLIT_ITEMS.info_id, SAR_FILE_SPLIT_ITEMS.items_num, items_name, iterms_conditions, + newcar_put_time, product_put_time, menu_id, svpps, apply_arctic, reference_stand, special_request, relevance_file, + SAR_FILE_SPLIT_ITEMS.remarks, SAR_FILE_SPLIT_ITEMS.valid_flag, SAR_FILE_SPLIT_ITEMS.creation_user, + SAR_FILE_SPLIT_ITEMS.creation_time, SAR_FILE_SPLIT_ITEMS.modify_time, SAR_FILE_SPLIT_ITEMS.modify_user, + SAR_FILE_SPLIT_ITEMS.fo,SAR_FILE_SPLIT_ITEMS.duty_engineer, SAR_FILE_SPLIT_ITEMS.claim_type, + SAR_FILE_SPLIT_ITEMS.bus_stand_cover,SAR_FILE_SPLIT_ITEMS.file_type,SAR_FILE_SPLIT_ITEMS.responsible_unit, + TS_ORG.org_name as responsibleUnitShow, dicClaimType.DIC_TYPE_NAME as claimTypeShow,tsdutyEngineer.NAME as + dutyEngineerShow,tsFo.NAME as foShow, SAR_FILE_SPLIT_ITEMS.edit_flag ,SAR_FILE_SPLIT_ITEMS.work_flow_show as workFlowShow + + + + + where 1=1 + + + and SAR_FILE_SPLIT_ITEMS.id ${idOperator} #{id} + + + and SAR_FILE_SPLIT_ITEMS.info_id ${infoIdOperator} #{infoId} + + + and SAR_FILE_SPLIT_ITEMS.items_num ${itemsNumOperator} #{itemsNum} + + + and SAR_FILE_SPLIT_ITEMS.items_name ${itemsNameOperator} #{itemsName} + + + and SAR_FILE_SPLIT_ITEMS.iterms_conditions ${itermsConditionsOperator} #{itermsConditions} + + + and SAR_FILE_SPLIT_ITEMS.newcar_put_time ${newcarPutTimeOperator} #{newcarPutTime} + + + and SAR_FILE_SPLIT_ITEMS.newcar_put_time >= #{newcarPutTime1} + + + and SAR_FILE_SPLIT_ITEMS.newcar_put_time <= #{newcarPutTime2} + + + and SAR_FILE_SPLIT_ITEMS.product_put_time ${productPutTimeOperator} #{productPutTime} + + + and SAR_FILE_SPLIT_ITEMS.product_put_time >= #{productPutTime1} + + + and SAR_FILE_SPLIT_ITEMS.product_put_time <= #{productPutTime2} + + + and menu_id = #{sMenuId} + + + and svpps ${svppsOperator} #{svpps} + + + and apply_arctic ${applyArcticOperator} #{applyArctic} + + + and reference_stand ${referenceStandOperator} #{referenceStand} + + + and special_request ${specialRequestOperator} #{specialRequest} + + + and relevance_file ${relevanceFileOperator} #{relevanceFile} + + + and SAR_FILE_SPLIT_ITEMS.remarks ${remarksOperator} #{remarks} + + + and SAR_FILE_SPLIT_ITEMS.valid_flag ${validFlagOperator} #{validFlag} + + + and SAR_FILE_SPLIT_ITEMS.creation_user ${creationUserOperator} #{creationUser} + + + and SAR_FILE_SPLIT_ITEMS.creation_time ${creationTimeOperator} #{creationTime} + + + and SAR_FILE_SPLIT_ITEMS.creation_time >= #{creationTime1} + + + and SAR_FILE_SPLIT_ITEMS.creation_time <= #{creationTime2} + + + and SAR_FILE_SPLIT_ITEMS.modify_time ${modifyTimeOperator} #{modifyTime} + + + and SAR_FILE_SPLIT_ITEMS.modify_time >= #{modifyTime1} + + + and SAR_FILE_SPLIT_ITEMS.modify_time <= #{modifyTime2} + + + and SAR_FILE_SPLIT_ITEMS.modify_user ${modifyUserOperator} #{modifyUser} + + + + + + + + insert into SAR_FILE_SPLIT_ITEMS() + values (#{id, jdbcType=VARCHAR}, #{infoId, jdbcType=VARCHAR}, #{itemsNum, jdbcType=VARCHAR}, #{itemsName, jdbcType=VARCHAR}, #{itermsConditions, jdbcType=CLOB}, #{newcarPutTime, jdbcType=TIMESTAMP}, #{productPutTime, jdbcType=TIMESTAMP}, #{menuId, jdbcType=VARCHAR}, #{svpps, jdbcType=VARCHAR}, #{applyArctic, jdbcType=VARCHAR}, #{referenceStand, jdbcType=VARCHAR}, #{specialRequest, jdbcType=VARCHAR}, #{relevanceFile, jdbcType=VARCHAR}, #{remarks, jdbcType=VARCHAR}, #{validFlag, jdbcType=INTEGER}, #{creationUser, jdbcType=VARCHAR}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}, #{modifyUser, jdbcType=VARCHAR}) + + + + + + insert into SAR_FILE_SPLIT_ITEMS + + id, + info_id, + items_num, + items_name, + iterms_conditions, + newcar_put_time, + product_put_time, + menu_id, + svpps, + apply_arctic, + reference_stand, + special_request, + relevance_file, + remarks, + valid_flag, + creation_user, + creation_time, + modify_time, + modify_user, + edit_flag, + fo, + duty_engineer, + claim_type, + bus_stand_cover, + file_type, + work_flow_show, + responsible_unit + + + #{id, jdbcType=VARCHAR}, + #{infoId, jdbcType=VARCHAR}, + #{itemsNum, jdbcType=VARCHAR}, + #{itemsName, jdbcType=VARCHAR}, + #{itermsConditions, jdbcType=CLOB}, + #{newcarPutTime, jdbcType=TIMESTAMP}, + #{productPutTime, jdbcType=TIMESTAMP}, + #{menuId, jdbcType=VARCHAR}, + #{svpps, jdbcType=VARCHAR}, + #{applyArctic, jdbcType=VARCHAR}, + #{referenceStand, jdbcType=VARCHAR}, + #{specialRequest, jdbcType=VARCHAR}, + #{relevanceFile, jdbcType=VARCHAR}, + #{remarks, jdbcType=VARCHAR}, + #{validFlag, jdbcType=INTEGER}, + #{creationUser, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{modifyUser, jdbcType=VARCHAR}, + #{editFlag,jdbcType=VARCHAR}, + #{fo, jdbcType=VARCHAR}, + #{dutyEngineer, jdbcType=VARCHAR}, + #{claimType, jdbcType=VARCHAR}, + #{busStandCover, jdbcType=VARCHAR}, + #{fileType, jdbcType=VARCHAR}, + #{workFlowShow, jdbcType=VARCHAR}, + #{responsibleUnit, jdbcType=VARCHAR} + + + + + + update SAR_FILE_SPLIT_ITEMS + set info_id = #{infoId}, + items_num = #{itemsNum}, + items_name = #{itemsName}, + iterms_conditions = #{itermsConditions}, + newcar_put_time = #{newcarPutTime}, + product_put_time = #{productPutTime}, + menu_id = #{menuId}, + svpps = #{svpps}, + apply_arctic = #{applyArctic}, + reference_stand = #{referenceStand}, + special_request = #{specialRequest}, + relevance_file = #{relevanceFile}, + remarks = #{remarks}, + valid_flag = #{validFlag}, + creation_user = #{creationUser}, + creation_time = #{creationTime}, + modify_time = #{modifyTime}, + modify_user = #{modifyUser} + where id = #{id} + + + + + update SAR_FILE_SPLIT_ITEMS + + + info_id = #{infoId}, + + + items_num = #{itemsNum}, + + + items_name = #{itemsName}, + + + iterms_conditions = #{itermsConditions}, + + + newcar_put_time = #{newcarPutTime}, + + + newcar_put_time = null, + + + product_put_time = #{productPutTime}, + + + product_put_time = null, + + + menu_id = #{menuId}, + + + svpps = #{svpps}, + + + apply_arctic = #{applyArctic}, + + + reference_stand = #{referenceStand}, + + + special_request = #{specialRequest}, + + + relevance_file = #{relevanceFile}, + + + remarks = #{remarks}, + + + valid_flag = #{validFlag}, + + + creation_user = #{creationUser}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + modify_user = #{modifyUser}, + + + + fo = #{fo}, + + + duty_engineer = #{dutyEngineer}, + + + claim_type = #{claimType}, + + + bus_stand_cover = #{busStandCover}, + + + file_type = #{fileType}, + + + responsible_unit = #{responsibleUnit}, + + + work_flow_show = #{workFlowShow}, + + + where id = #{id} + + + + update SAR_STAND_ITEMS + + + items_num = #{itemsNum}, + + + + items_name = #{itemsName}, + + + + TERMS_CONDITIONS = #{itermsConditions}, + + + + valid_flag = #{validFlag}, + + + where edit_flag = #{editFlag} + + + + + + + + delete from SAR_FILE_SPLIT_ITEMS + where id = #{value} + + + + + + + + + + + + + + + + + insert into SAR_FILE_SPLIT_ITEMS + (id, info_id, items_num, items_name, newcar_put_time, product_put_time, menu_id, svpps, apply_arctic, reference_stand, special_request, relevance_file, remarks, valid_flag, creation_user, creation_time, modify_time, + modify_user, iterms_conditions, edit_flag , work_flow_show) + values + + ( + #{item.id, jdbcType=VARCHAR}, #{item.infoId, jdbcType=VARCHAR}, #{item.itemsNum, jdbcType=VARCHAR}, + #{item.itemsName, jdbcType=VARCHAR}, + #{item.newcarPutTime, jdbcType=TIMESTAMP}, #{item.productPutTime, jdbcType=TIMESTAMP}, + #{item.menuId, jdbcType=VARCHAR}, #{item.svpps, jdbcType=VARCHAR}, #{item.applyArctic, jdbcType=VARCHAR}, + #{item.referenceStand, jdbcType=VARCHAR}, #{item.specialRequest, jdbcType=VARCHAR}, + #{item.relevanceFile, jdbcType=VARCHAR}, #{item.remarks, jdbcType=VARCHAR}, + #{item.validFlag, jdbcType=INTEGER}, #{item.creationUser, jdbcType=VARCHAR}, + #{item.creationTime, jdbcType=TIMESTAMP}, #{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.modifyUser, jdbcType=VARCHAR}, #{item.itermsConditions, jdbcType=CLOB}, + #{item.editFlag, jdbcType=VARCHAR} ,#{item.workFlowShow, jdbcType=VARCHAR} + ) + + + + + + insert into SAR_STAND_ITEMS + (id, STAND_ID, items_num, items_name,TERMS_CONDITIONS,FILE_TYPE,edit_flag) + values + + ( + #{item.id, jdbcType=VARCHAR}, #{item.standId, jdbcType=VARCHAR}, #{item.itemsNum, jdbcType=VARCHAR}, + #{item.itemsName, jdbcType=VARCHAR}, #{item.termsConditions, jdbcType=CLOB}, + #{item.fileType, jdbcType=VARCHAR}, + #{item.editFlag, jdbcType=VARCHAR} + ) + + + + + delete from SAR_FILE_SPLIT_ITEMS + where info_id in + + #{item} + + + + + delete from SAR_FILE_SPLIT_ITEMS + where id in + + #{item} + + + + + delete from SAR_FILE_SPLIT_ITEMS + where menu_id in + + #{item} + + + + + + + + + + delete from SAR_FILE_SPLIT_ITEMS + where id in + + #{item} + + + + + delete from SAR_STAND_ITEMS + where edit_flag in + + #{item} + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsParamsEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsParamsEOMapper.xml new file mode 100644 index 00000000..42248aa7 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsParamsEOMapper.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + id, item_id, description, figure, valid_flag, creation_time, modify_time, info_id + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and item_id ${itemIdOperator} #{itemId} + + + and description ${descriptionOperator} #{description} + + + and figure ${figureOperator} #{figure} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and info_id ${infoIdOperator} #{infoId} + + + + + + + + insert into SAR_FILE_SPLIT_ITEMS_PARAMS() + values (#{id, jdbcType=VARCHAR}, #{itemId, jdbcType=VARCHAR}, #{description, jdbcType=VARCHAR}, #{figure, jdbcType=VARCHAR}, #{validFlag, jdbcType=INTEGER}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}, #{infoId, jdbcType=VARCHAR}) + + + + + + insert into SAR_FILE_SPLIT_ITEMS_PARAMS + + id, + item_id, + description, + figure, + valid_flag, + creation_time, + modify_time, + info_id, + + + #{id, jdbcType=VARCHAR}, + #{itemId, jdbcType=VARCHAR}, + #{description, jdbcType=VARCHAR}, + #{figure, jdbcType=VARCHAR}, + #{validFlag, jdbcType=INTEGER}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{infoId, jdbcType=VARCHAR}, + + + + + + update SAR_FILE_SPLIT_ITEMS_PARAMS + set item_id = #{itemId}, + description = #{description}, + figure = #{figure}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime}, + info_id = #{infoId} + where id = #{id} + + + + + update SAR_FILE_SPLIT_ITEMS_PARAMS + + + item_id = #{itemId}, + + + description = #{description}, + + + figure = #{figure}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + info_id = #{infoId}, + + + where id = #{id} + + + + + + + + delete from SAR_FILE_SPLIT_ITEMS_PARAMS + where id = #{value} + + + + + + + + + + + + + delete from SAR_FILE_SPLIT_ITEMS_PARAMS + where item_id in + + #{item} + + + + + insert into SAR_FILE_SPLIT_ITEMS_PARAMS() + values + + (#{item.id, jdbcType=VARCHAR}, #{item.itemId, jdbcType=VARCHAR}, #{item.description, jdbcType=VARCHAR}, #{item.figure, jdbcType=VARCHAR}, #{item.validFlag, jdbcType=INTEGER}, #{item.creationTime, jdbcType=TIMESTAMP}, #{item.modifyTime, jdbcType=TIMESTAMP}, #{item.infoId, jdbcType=VARCHAR}) + + + + + delete from SAR_FILE_SPLIT_ITEMS_PARAMS + where info_id in + + #{item} + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsTableEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsTableEOMapper.xml new file mode 100644 index 00000000..03604705 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsTableEOMapper.xml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + id, items_val_id, items_id, row_num, col_num, content, valid_flag, creation_time, modify_time, modify_user + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and items_val_id ${itemsValIdOperator} #{itemsValId} + + + and items_id ${itemsIdOperator} #{itemsId} + + + and row_num ${rowNumOperator} #{rowNum} + + + and col_num ${colNumOperator} #{colNum} + + + and content ${contentOperator} #{content} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and modify_user ${modifyUserOperator} #{modifyUser} + + + + + + + + insert into SAR_FILE_SPLIT_ITEMS_TABLE() + values (#{id, jdbcType=VARCHAR}, #{itemsValId, jdbcType=VARCHAR}, #{itemsId, jdbcType=VARCHAR}, #{rowNum, jdbcType=INTEGER}, #{colNum, jdbcType=INTEGER}, #{content, jdbcType=VARCHAR}, #{validFlag, jdbcType=INTEGER}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}, #{modifyUser, jdbcType=VARCHAR}) + + + + + + insert into SAR_FILE_SPLIT_ITEMS_TABLE + + id, + items_val_id, + items_id, + row_num, + col_num, + content, + valid_flag, + creation_time, + modify_time, + modify_user, + + + #{id, jdbcType=VARCHAR}, + #{itemsValId, jdbcType=VARCHAR}, + #{itemsId, jdbcType=VARCHAR}, + #{rowNum, jdbcType=INTEGER}, + #{colNum, jdbcType=INTEGER}, + #{content, jdbcType=VARCHAR}, + #{validFlag, jdbcType=INTEGER}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{modifyUser, jdbcType=VARCHAR}, + + + + + + update SAR_FILE_SPLIT_ITEMS_TABLE + set items_val_id = #{itemsValId}, + items_id = #{itemsId}, + row_num = #{rowNum}, + col_num = #{colNum}, + content = #{content}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime}, + modify_user = #{modifyUser} + where id = #{id} + + + + + update SAR_FILE_SPLIT_ITEMS_TABLE + + + items_val_id = #{itemsValId}, + + + items_id = #{itemsId}, + + + row_num = #{rowNum}, + + + col_num = #{colNum}, + + + content = #{content}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + modify_user = #{modifyUser}, + + + where id = #{id} + + + + + + + + delete from SAR_FILE_SPLIT_ITEMS_TABLE + where id = #{value} + + + + + + + + + + + + + + insert into SAR_FILE_SPLIT_ITEMS_TABLE() + values (#{item.id, jdbcType=VARCHAR}, #{item.itemsValId, jdbcType=VARCHAR}, + #{item.itemsId, jdbcType=VARCHAR}, #{item.rowNum, jdbcType=INTEGER}, #{item.colNum, jdbcType=INTEGER}, + #{item.content, jdbcType=VARCHAR}, #{item.validFlag, jdbcType=INTEGER}, #{item.creationTime, jdbcType=TIMESTAMP}, #{item.modifyTime, jdbcType=TIMESTAMP}, #{item.modifyUser, jdbcType=VARCHAR}) + + + + + + + delete from SAR_FILE_SPLIT_ITEMS_TABLE + where ITEMS_VAL_ID in + + #{item} + + + + + delete from SAR_FILE_SPLIT_ITEMS_TABLE + where EXISTS ( + select 1 from SAR_FILE_SPLIT_ITEMS + where SAR_FILE_SPLIT_ITEMS_TABLE.ITEMS_ID=SAR_FILE_SPLIT_ITEMS.id + and SAR_FILE_SPLIT_ITEMS.MENU_ID in + + #{item} + + ) + + + + delete from SAR_FILE_SPLIT_ITEMS_TABLE + where ITEMS_ID in + + #{item} + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsValEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsValEOMapper.xml new file mode 100644 index 00000000..cf629a82 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitItemsValEOMapper.xml @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + id, type, item_id, item_content, valid_flag, creation_user, creation_time, modify_time, modify_user, display_seq,img_name + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and type ${typeOperator} #{type} + + + and item_id ${itemIdOperator} #{itemId} + + + and item_content ${itemContentOperator} #{itemContent} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and modify_user ${modifyUserOperator} #{modifyUser} + + + and display_seq ${displaySeqOperator} #{displaySeq} + + + + + + + + insert into SAR_FILE_SPLIT_ITEMS_VAL() + values (#{id, jdbcType=VARCHAR}, #{type, jdbcType=VARCHAR}, #{itemId, jdbcType=VARCHAR}, #{itemContent, jdbcType=CLOB}, #{validFlag, jdbcType=INTEGER}, #{creationUser, jdbcType=VARCHAR}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}, #{modifyUser, jdbcType=VARCHAR}, #{displaySeq, jdbcType=INTEGER}) + + + + + + insert into SAR_FILE_SPLIT_ITEMS_VAL + + id, + type, + item_id, + item_content, + valid_flag, + creation_user, + creation_time, + modify_time, + modify_user, + display_seq, + img_name, + + + #{id, jdbcType=VARCHAR}, + #{type, jdbcType=VARCHAR}, + #{itemId, jdbcType=VARCHAR}, + #{itemContent, jdbcType=CLOB}, + #{validFlag, jdbcType=INTEGER}, + #{creationUser, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{modifyUser, jdbcType=VARCHAR}, + #{displaySeq, jdbcType=INTEGER}, + #{imgName, jdbcType=INTEGER}, + + + + + + update SAR_FILE_SPLIT_ITEMS_VAL + set type = #{type}, + item_id = #{itemId}, + item_content = #{itemContent}, + valid_flag = #{validFlag}, + creation_user = #{creationUser}, + creation_time = #{creationTime}, + modify_time = #{modifyTime}, + modify_user = #{modifyUser}, + display_seq = #{displaySeq} + where id = #{id} + + + + + update SAR_FILE_SPLIT_ITEMS_VAL + + + type = #{type}, + + + item_id = #{itemId}, + + + item_content = #{itemContent}, + + + valid_flag = #{validFlag}, + + + creation_user = #{creationUser}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + modify_user = #{modifyUser}, + + + display_seq = #{displaySeq}, + + + where id = #{id} + + + + + + + + delete from SAR_FILE_SPLIT_ITEMS_VAL + where id = #{value} + + + + + + + + + + + + + delete from SAR_FILE_SPLIT_ITEMS_VAL + where id in + + #{item} + + + + + + delete from SAR_FILE_SPLIT_ITEMS_VAL + where item_id = #{value} + + + + + + insert into SAR_FILE_SPLIT_ITEMS_VAL + (id, type, item_id, valid_flag, creation_user, creation_time, modify_time, modify_user, display_seq, img_name, item_content) + values + + ( + #{item.id, jdbcType=VARCHAR}, #{item.type, jdbcType=VARCHAR}, + #{item.itemId, jdbcType=VARCHAR}, + #{item.validFlag, jdbcType=INTEGER}, #{item.creationUser, jdbcType=VARCHAR}, + #{item.creationTime, jdbcType=TIMESTAMP}, #{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.modifyUser, jdbcType=VARCHAR}, #{item.displaySeq, jdbcType=INTEGER}, + #{item.imgName, jdbcType=INTEGER}, + #{item.itemContent, jdbcType=CLOB}) + + + + + delete from SAR_FILE_SPLIT_ITEMS_VAL + where EXISTS ( + select 1 from SAR_FILE_SPLIT_ITEMS + where SAR_FILE_SPLIT_ITEMS_VAL.ITEM_ID=SAR_FILE_SPLIT_ITEMS.id + and SAR_FILE_SPLIT_ITEMS.INFO_ID in + + #{item} + + ) + + + + delete from SAR_FILE_SPLIT_ITEMS_VAL + where ITEM_ID in + + #{item} + + + + + + update SAR_FILE_SPLIT_ITEMS_VAL + + item_content = #{item.itemContent, jdbcType=VARCHAR}, + modify_time = #{item.modifyTime, jdbcType=TIMESTAMP}, + modify_user = #{item.modifyUser, jdbcType=VARCHAR}, + display_seq = #{item.displaySeq, jdbcType=INTEGER}, + + where id = #{item.id, jdbcType=VARCHAR} + + ; + + + + delete from SAR_FILE_SPLIT_ITEMS_VAL + where EXISTS ( + select 1 from SAR_FILE_SPLIT_ITEMS + where SAR_FILE_SPLIT_ITEMS_VAL.ITEM_ID=SAR_FILE_SPLIT_ITEMS.id + and SAR_FILE_SPLIT_ITEMS.MENU_ID in + + #{item} + + ) + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitMenuEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitMenuEOMapper.xml new file mode 100644 index 00000000..19beef94 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarFileSplitMenuEOMapper.xml @@ -0,0 +1,397 @@ + + + + + + + + + + + + + + + + + + + + + + id, info_id, name, p_id, display_seq, valid_flag, creation_time, modify_time, remarks, creation_user, modify_user,item_name + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and info_id ${infoIdOperator} #{infoId} + + + and name ${nameOperator} #{name} + + + and p_id ${pIdOperator} #{pId} + + + and display_seq ${displaySeqOperator} #{displaySeq} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and remarks ${remarksOperator} #{remarks} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and modify_user ${modifyUserOperator} #{modifyUser} + + + + + + + + insert into SAR_FILE_SPLIT_MENU() + values (#{id, jdbcType=VARCHAR}, #{infoId, jdbcType=VARCHAR}, #{name, jdbcType=VARCHAR}, #{pId, jdbcType=VARCHAR}, #{displaySeq, jdbcType=VARCHAR}, #{validFlag, jdbcType=INTEGER}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}, #{remarks, jdbcType=VARCHAR}, #{creationUser, jdbcType=VARCHAR}, #{modifyUser, jdbcType=VARCHAR}) + + + + + + insert into SAR_FILE_SPLIT_MENU + + id, + info_id, + name, + p_id, + display_seq, + valid_flag, + creation_time, + modify_time, + remarks, + creation_user, + modify_user, + item_name, + + + #{id, jdbcType=VARCHAR}, + #{infoId, jdbcType=VARCHAR}, + #{name, jdbcType=VARCHAR}, + #{pId, jdbcType=VARCHAR}, + #{displaySeq, jdbcType=VARCHAR}, + #{validFlag, jdbcType=INTEGER}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{remarks, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{modifyUser, jdbcType=VARCHAR}, + #{itemName, jdbcType=VARCHAR}, + + + + + + update SAR_FILE_SPLIT_MENU + set info_id = #{infoId}, + name = #{name}, + p_id = #{pId}, + display_seq = #{displaySeq}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime}, + remarks = #{remarks}, + creation_user = #{creationUser}, + modify_user = #{modifyUser} + where id = #{id} + + + + + update SAR_FILE_SPLIT_MENU + + + info_id = #{infoId}, + + + name = #{name}, + + + p_id = #{pId}, + + + display_seq = #{displaySeq}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + remarks = #{remarks}, + + + creation_user = #{creationUser}, + + + modify_user = #{modifyUser}, + + + item_name = #{itemName}, + + + where id = #{id} + + + + + + + + delete from SAR_FILE_SPLIT_MENU + where id = #{value} + + + + + + + + + + + + + + + insert into SAR_FILE_SPLIT_MENU() + values + + (#{item.id, jdbcType=VARCHAR}, + #{item.infoId, jdbcType=VARCHAR}, + #{item.name, jdbcType=VARCHAR}, + #{item.pId, jdbcType=VARCHAR}, + #{item.displaySeq, jdbcType=VARCHAR}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.modifyTime, jdbcType=TIMESTAMP}, #{item.remarks, jdbcType=VARCHAR}, + #{item.creationUser, jdbcType=VARCHAR}, #{item.modifyUser, jdbcType=VARCHAR} , #{item.itemName, jdbcType=VARCHAR}) + + + + + delete from SAR_FILE_SPLIT_MENU + where info_id in + + #{item} + + + + + + update SAR_FILE_SPLIT_MENU + set display_seq = display_seq+#{childrenCount}, + modify_time = #{modifyTime}, + modify_user = #{modifyUser} + where display_seq >= #{displaySeqStart} and display_seq < #{displaySeqEnd} and valid_flag = 0 and info_id = #{infoId} + + + + update SAR_FILE_SPLIT_MENU + set display_seq = display_seq-#{childrenCount}, + modify_time = #{modifyTime}, + modify_user = #{modifyUser} + where display_seq <= #{displaySeqEnd} and display_seq > #{displaySeqStart} and valid_flag = 0 and info_id = #{infoId} + + + + + + + + + + + + + delete + from SAR_FILE_SPLIT_MENU + where id in + + #{item} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update SAR_FILE_SPLIT_MENU + set display_seq = display_seq + #{childrenCount}, + modify_time = #{modifyTime}, + modify_user = #{modifyUser} + where id in (SELECT id + FROM SAR_FILE_SPLIT_MENU, + (SELECT getSplitChildList(#{id}) childListStr) t + WHERE FIND_IN_SET(ID, childListStr) + ) + + + + + + + + + + + + + update SAR_FILE_SPLIT_MENU + set display_seq = display_seq - #{childrenCount}, + modify_time = #{modifyTime}, + modify_user = #{modifyUser} + where id in (SELECT id + FROM SAR_FILE_SPLIT_MENU, + (SELECT getSplitChildList(#{id}) childListStr) t + WHERE FIND_IN_SET(ID, childListStr) + ) + + + + + + + + + + + + + + delete from SAR_FILE_SPLIT_MENU + where id in + + #{item} + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarItemsCompareHisEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarItemsCompareHisEOMapper.xml new file mode 100644 index 00000000..72ef7e7a --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarItemsCompareHisEOMapper.xml @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id, old_items_id, old_items_name, old_items_text, new_items_id, new_items_name, new_items_text, + create_user, create_time, modify_user, modify_time, stand_his_id, similarity_degree, + old_items_num, new_items_num,old_remark,new_remark + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and old_items_id ${oldItemsIdOperator} #{oldItemsId} + + + and old_items_name ${oldItemsNameOperator} #{oldItemsName} + + + and old_items_text ${oldItemsTextOperator} #{oldItemsText} + + + and new_items_id ${newItemsIdOperator} #{newItemsId} + + + and new_items_name ${newItemsNameOperator} #{newItemsName} + + + and new_items_text ${newItemsTextOperator} #{newItemsText} + + + and create_user ${createUserOperator} #{createUser} + + + and create_time ${createTimeOperator} #{createTime} + + + and create_time >= #{createTime1} + + + and create_time <= #{createTime2} + + + and modify_user ${modifyUserOperator} #{modifyUser} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and stand_his_id ${standHisIdOperator} #{standHisId} + + + and similarity_degree ${similarityDegreeOperator} #{similarityDegree} + + + and old_items_num ${oldItemsNumOperator} #{oldItemsNum} + + + and new_items_num ${newItemsNumOperator} #{newItemsNum} + + + + + + + + insert into SAR_ITEMS_COMPARE_HIS() + values (#{id, jdbcType=VARCHAR}, #{oldItemsId, jdbcType=VARCHAR}, #{oldItemsName, jdbcType=VARCHAR}, #{oldItemsText, jdbcType=CLOB}, #{newItemsId, jdbcType=VARCHAR}, #{newItemsName, jdbcType=VARCHAR}, #{newItemsText, jdbcType=CLOB}, #{createUser, jdbcType=VARCHAR}, #{createTime, jdbcType=TIMESTAMP}, #{modifyUser, jdbcType=VARCHAR}, #{modifyTime, jdbcType=TIMESTAMP}, #{standHisId, jdbcType=VARCHAR}, #{similarityDegree, jdbcType=VARCHAR}, #{oldItemsNum, jdbcType=VARCHAR}, #{newItemsNum, jdbcType=VARCHAR}) + + + + + + insert into SAR_ITEMS_COMPARE_HIS + + id, + old_items_id, + old_items_name, + old_items_text, + new_items_id, + new_items_name, + new_items_text, + create_user, + create_time, + modify_user, + modify_time, + stand_his_id, + similarity_degree, + old_items_num, + new_items_num, + old_remark, + new_remark, + + + #{id, jdbcType=VARCHAR}, + #{oldItemsId, jdbcType=VARCHAR}, + #{oldItemsName, jdbcType=VARCHAR}, + #{oldItemsText, jdbcType=CLOB}, + #{newItemsId, jdbcType=VARCHAR}, + #{newItemsName, jdbcType=VARCHAR}, + #{newItemsText, jdbcType=CLOB}, + #{createUser, jdbcType=VARCHAR}, + #{createTime, jdbcType=TIMESTAMP}, + #{modifyUser, jdbcType=VARCHAR}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{standHisId, jdbcType=VARCHAR}, + #{similarityDegree, jdbcType=VARCHAR}, + #{oldItemsNum, jdbcType=VARCHAR}, + #{newItemsNum, jdbcType=VARCHAR}, + #{oldRemark, jdbcType=VARCHAR}, + #{newRemark, jdbcType=VARCHAR}, + + + + + + update SAR_ITEMS_COMPARE_HIS + set old_items_id = #{oldItemsId}, + old_items_name = #{oldItemsName}, + old_items_text = #{oldItemsText}, + new_items_id = #{newItemsId}, + new_items_name = #{newItemsName}, + new_items_text = #{newItemsText}, + create_user = #{createUser}, + create_time = #{createTime}, + modify_user = #{modifyUser}, + modify_time = #{modifyTime}, + stand_his_id = #{standHisId}, + similarity_degree = #{similarityDegree}, + old_items_num = #{oldItemsNum}, + new_items_num = #{newItemsNum} + where id = #{id} + + + + + update SAR_ITEMS_COMPARE_HIS + + + old_items_id = #{oldItemsId}, + + + old_items_name = #{oldItemsName}, + + + old_items_text = #{oldItemsText}, + + + new_items_id = #{newItemsId}, + + + new_items_name = #{newItemsName}, + + + new_items_text = #{newItemsText}, + + + create_user = #{createUser}, + + + create_time = #{createTime}, + + + modify_user = #{modifyUser}, + + + modify_time = #{modifyTime}, + + + stand_his_id = #{standHisId}, + + + similarity_degree = #{similarityDegree}, + + + old_items_num = #{oldItemsNum}, + + + new_items_num = #{newItemsNum}, + + + old_remark = #{oldRemark}, + + + new_remark = #{newRemark}, + + + where id = #{id} + + + + + + + + delete from SAR_ITEMS_COMPARE_HIS + where id = #{value} + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandAttrDetailsEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandAttrDetailsEOMapper.xml new file mode 100644 index 00000000..4c160498 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandAttrDetailsEOMapper.xml @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, attr_field, attr_name, attr_type, order_num, is_edit, creation_user, + valid_flag, creation_time, modify_time, + attr_len,is_must,is_show_imp,show_region_id,sel_val,sar_type,is_search,is_warn + + + + SAR_STAND_ATTR_DETAILS.id, attr_field, attr_name, attr_type, SAR_STAND_ATTR_DETAILS.order_num, is_edit, SAR_STAND_ATTR_DETAILS.creation_user, + SAR_STAND_ATTR_DETAILS.valid_flag, SAR_STAND_ATTR_DETAILS.creation_time, SAR_STAND_ATTR_DETAILS.modify_time, + attr_len,is_must,is_show_imp,show_region_id,sel_val,SAR_STAND_ATTR_DETAILS.sar_type,is_search,is_warn + + + + + where 1=1 and SAR_STAND_ATTR_DETAILS.valid_flag=0 + + + and SAR_STAND_ATTR_DETAILS.is_show_imp = 0 + + + and SAR_STAND_ATTR_DETAILS.id ${idOperator} #{id} + + + and attr_field ${attrFieldOperator} #{attrField} + + + and attr_name ${attrNameOperator} #{attrName} + + + and attr_type ${attrTypeOperator} #{attrType} + + + and SAR_STAND_ATTR_DETAILS.order_num ${orderNumOperator} #{orderNum} + + + and is_edit ${isEditOperator} #{isEdit} + + + and SAR_STAND_ATTR_DETAILS.creation_user ${creationUserOperator} #{creationUser} + + + and SAR_STAND_ATTR_DETAILS.valid_flag ${validFlagOperator} #{validFlag} + + + and SAR_STAND_ATTR_DETAILS.creation_time ${creationTimeOperator} #{creationTime} + + + and SAR_STAND_ATTR_DETAILS.creation_time >= #{creationTime1} + + + and SAR_STAND_ATTR_DETAILS.creation_time <= #{creationTime2} + + + and SAR_STAND_ATTR_DETAILS.modify_time ${modifyTimeOperator} #{modifyTime} + + + and SAR_STAND_ATTR_DETAILS.modify_time >= #{modifyTime1} + + + and SAR_STAND_ATTR_DETAILS.modify_time <= #{modifyTime2} + + + and attr_len ${attrLenOperator} #{attrLen} + + + and SAR_STAND_ATTR_DETAILS.sar_type like concat(concat('%',#{sarType}),'%') + + + and is_search = #{isSearch} + + + and is_warn = #{isWarn} + + + and SAR_STAND_ATTR_DETAILS.ID != #{notId} + + + and SAR_STAND_ATTR_DETAILS.ID in + + #{item} + + + + + + + + + insert into SAR_STAND_ATTR_DETAILS() + values (#{id, jdbcType=VARCHAR}, #{attrField, jdbcType=VARCHAR}, #{attrName, jdbcType=VARCHAR}, #{attrType, jdbcType=VARCHAR}, #{orderNum, jdbcType=VARCHAR}, #{isEdit, jdbcType=VARCHAR}, #{creationUser, jdbcType=VARCHAR}, #{validFlag, jdbcType=VARCHAR}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}, #{attrLen, jdbcType=VARCHAR}) + + + + + + insert into SAR_STAND_ATTR_DETAILS + + id, + attr_field, + attr_name, + attr_type, + order_num, + is_edit, + creation_user, + valid_flag, + creation_time, + modify_time, + attr_len, + is_must, + is_show_imp, + show_region_id, + sel_val, + sar_type, + is_search, + is_warn, + + + #{id, jdbcType=VARCHAR}, + #{attrField, jdbcType=VARCHAR}, + #{attrName, jdbcType=VARCHAR}, + #{attrType, jdbcType=VARCHAR}, + #{orderNum, jdbcType=VARCHAR}, + #{isEdit, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{validFlag, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{attrLen, jdbcType=VARCHAR}, + #{isMust, jdbcType=VARCHAR}, + #{isShowImp, jdbcType=VARCHAR}, + #{showRegionId, jdbcType=VARCHAR}, + #{selVal, jdbcType=VARCHAR}, + #{sarType, jdbcType=VARCHAR}, + #{isSearch, jdbcType=VARCHAR}, + #{isWarn, jdbcType=VARCHAR}, + + + + + + update SAR_STAND_ATTR_DETAILS + set attr_field = #{attrField}, + attr_name = #{attrName}, + attr_type = #{attrType}, + order_num = #{orderNum}, + is_edit = #{isEdit}, + creation_user = #{creationUser}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime}, + attr_len = #{attrLen} + where id = #{id} + + + + + update SAR_STAND_ATTR_DETAILS + + + attr_field = #{attrField}, + + + attr_name = #{attrName}, + + + attr_type = #{attrType}, + + + order_num = #{orderNum}, + + + is_edit = #{isEdit}, + + + creation_user = #{creationUser}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + attr_len = #{attrLen}, + + + is_must = #{isMust}, + + + is_show_imp = #{isShowImp}, + + + show_region_id = #{showRegionId}, + + + sel_val = #{selVal}, + + + sar_type = #{sarType}, + + + is_search = #{isSearch}, + + + is_warn = #{isWarn}, + + + where id = #{id} + + + + + + + + delete from SAR_STAND_ATTR_DETAILS + where id = #{value} and valid_flag=0 + + + + + + + + + + + + + delete from SAR_STAND_ATTR_DETAILS + where id in + + #{item} + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandCompareHisEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandCompareHisEOMapper.xml new file mode 100644 index 00000000..ae5b1047 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandCompareHisEOMapper.xml @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + compare_type, id, old_stand_id, old_stand_num, old_stand_name, new_stand_id, new_stand_num, new_stand_name, old_file_type, old_sar_type, create_user, create_time, modify_user, modify_time, new_file_type, new_sar_type ,compare_status + + + + + where 1=1 + + + and compare_type ${compareTypeOperator} #{compareType} + + + and id ${idOperator} #{id} + + + and old_stand_id ${oldStandIdOperator} #{oldStandId} + + + and old_stand_num ${oldStandNumOperator} #{oldStandNum} + + + and old_stand_name ${oldStandNameOperator} #{oldStandName} + + + and new_stand_id ${newStandIdOperator} #{newStandId} + + + and new_stand_num ${newStandNumOperator} #{newStandNum} + + + and new_stand_name ${newStandNameOperator} #{newStandName} + + + and old_file_type ${oldFileTypeOperator} #{oldFileType} + + + and old_sar_type ${oldSarTypeOperator} #{oldSarType} + + + and create_user ${createUserOperator} #{createUser} + + + and create_time ${createTimeOperator} #{createTime} + + + and create_time >= #{createTime1} + + + and create_time <= #{createTime2} + + + and modify_user ${modifyUserOperator} #{modifyUser} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and new_file_type ${newFileTypeOperator} #{newFileType} + + + and new_sar_type ${newSarTypeOperator} #{newSarType} + + + and compare_status = #{compareStatus} + + + and (old_stand_num like concat('%',#{oldNumOrName},'%') OR old_stand_name like concat('%',#{oldNumOrName},'%')) + + + and (new_stand_num like concat('%',#{newNumOrName},'%') OR new_stand_name like concat('%',#{newNumOrName},'%')) + + + + + + + + insert into SAR_STAND_COMPARE_HIS() + values (#{compareType, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}, #{oldStandId, jdbcType=VARCHAR}, #{oldStandNum, jdbcType=VARCHAR}, #{oldStandName, jdbcType=VARCHAR}, #{newStandId, jdbcType=VARCHAR}, #{newStandNum, jdbcType=VARCHAR}, #{newStandName, jdbcType=VARCHAR}, #{oldFileType, jdbcType=VARCHAR}, #{oldSarType, jdbcType=VARCHAR}, #{createUser, jdbcType=VARCHAR}, #{createTime, jdbcType=TIMESTAMP}, #{modifyUser, jdbcType=VARCHAR}, #{modifyTime, jdbcType=TIMESTAMP}, #{newFileType, jdbcType=VARCHAR}, #{newSarType, jdbcType=VARCHAR},#{compareStatus, jdbcType=VARCHAR}) + + + + + + insert into SAR_STAND_COMPARE_HIS + + compare_type, + id, + old_stand_id, + old_stand_num, + old_stand_name, + new_stand_id, + new_stand_num, + new_stand_name, + old_file_type, + old_sar_type, + create_user, + create_time, + modify_user, + modify_time, + new_file_type, + new_sar_type, + compare_status, + + + #{compareType, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{oldStandId, jdbcType=VARCHAR}, + #{oldStandNum, jdbcType=VARCHAR}, + #{oldStandName, jdbcType=VARCHAR}, + #{newStandId, jdbcType=VARCHAR}, + #{newStandNum, jdbcType=VARCHAR}, + #{newStandName, jdbcType=VARCHAR}, + #{oldFileType, jdbcType=VARCHAR}, + #{oldSarType, jdbcType=VARCHAR}, + #{createUser, jdbcType=VARCHAR}, + #{createTime, jdbcType=TIMESTAMP}, + #{modifyUser, jdbcType=VARCHAR}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{newFileType, jdbcType=VARCHAR}, + #{newSarType, jdbcType=VARCHAR}, + #{compareStatus, jdbcType=VARCHAR}, + + + + + + update SAR_STAND_COMPARE_HIS + set compare_type = #{compareType}, + old_stand_id = #{oldStandId}, + old_stand_num = #{oldStandNum}, + old_stand_name = #{oldStandName}, + new_stand_id = #{newStandId}, + new_stand_num = #{newStandNum}, + new_stand_name = #{newStandName}, + old_file_type = #{oldFileType}, + old_sar_type = #{oldSarType}, + create_user = #{createUser}, + create_time = #{createTime}, + modify_user = #{modifyUser}, + modify_time = #{modifyTime}, + new_file_type = #{newFileType}, + new_sar_type = #{newSarType}, + compare_status = #{compareStatus} + where id = #{id} + + + + + update SAR_STAND_COMPARE_HIS + + + compare_type = #{compareType}, + + + old_stand_id = #{oldStandId}, + + + old_stand_num = #{oldStandNum}, + + + old_stand_name = #{oldStandName}, + + + new_stand_id = #{newStandId}, + + + new_stand_num = #{newStandNum}, + + + new_stand_name = #{newStandName}, + + + old_file_type = #{oldFileType}, + + + old_sar_type = #{oldSarType}, + + + create_user = #{createUser}, + + + create_time = #{createTime}, + + + modify_user = #{modifyUser}, + + + modify_time = #{modifyTime}, + + + new_file_type = #{newFileType}, + + + new_sar_type = #{newSarType}, + + + compare_status = #{compareStatus}, + + + where id = #{id} + + + + + + + + delete from SAR_STAND_COMPARE_HIS + where id = #{value} + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandFileEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandFileEOMapper.xml new file mode 100644 index 00000000..2c0bd9f0 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandFileEOMapper.xml @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, use_model, att_id, stand_id, id,file_suffix,file_name,stand_file_classify, + password,creation_user,ori_att_id + + + + + where 1=1 + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and use_model ${useModelOperator} #{useModel} + + + and att_id ${attIdOperator} #{attId} + + + and stand_id ${standIdOperator} #{standId} + + + and id ${idOperator} #{id} + + + + + + + + insert into SAR_STAND_FILE() + values (#{modifyTime, jdbcType=TIMESTAMP}, #{creationTime, jdbcType=TIMESTAMP}, #{validFlag, jdbcType=INTEGER}, + #{useModel, jdbcType=VARCHAR}, #{attId, jdbcType=VARCHAR}, #{standId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR},#{fileSuffix, jdbcType=VARCHAR},#{fileName, jdbcType=VARCHAR},#{standFileClassify, jdbcType=VARCHAR}, + #{password, jdbcType=VARCHAR},#{creationUser, jdbcType=VARCHAR}) + + + + + insert into SAR_STAND_FILE + + modify_time, + creation_time, + valid_flag, + use_model, + att_id, + stand_id, + id, + file_suffix, + file_name, + stand_file_classify, + password, + creation_user, + ori_att_id, + + + #{modifyTime, jdbcType=TIMESTAMP}, + #{creationTime, jdbcType=TIMESTAMP}, + #{validFlag, jdbcType=INTEGER}, + #{useModel, jdbcType=VARCHAR}, + #{attId, jdbcType=VARCHAR}, + #{standId, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{fileSuffix, jdbcType=VARCHAR}, + #{fileName, jdbcType=VARCHAR}, + #{standFileClassify, jdbcType=VARCHAR}, + #{password, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{oriAttId, jdbcType=VARCHAR}, + + + + + + update SAR_STAND_FILE + + + ori_att_id = #{oriAttId}, + + + modify_time = #{modifyTime}, + + + creation_time = #{creationTime}, + + + valid_flag = #{validFlag}, + + + use_model = #{useModel}, + + + att_id = #{attId}, + + + stand_id = #{standId}, + + + where id = #{id} + + + + + + + + delete from SAR_STAND_FILE + where id = #{value} + + + + + + + + + + + + + + + + + + + + + + + + delete from SAR_STAND_FILE + where stand_id = #{value} + + + + + insert into SAR_STAND_FILE + () + values + + (#{item.modifyTime, jdbcType=TIMESTAMP}, + #{item.creationTime, jdbcType=TIMESTAMP}, + #{item.validFlag, jdbcType=INTEGER}, + #{item.useModel, jdbcType=VARCHAR}, + #{item.attId, jdbcType=VARCHAR}, + #{item.standId, jdbcType=VARCHAR}, + #{item.id, jdbcType=VARCHAR}, + #{item.fileSuffix, jdbcType=VARCHAR}, + #{item.fileName, jdbcType=VARCHAR}, + #{item.standFileClassify, jdbcType=VARCHAR}, + #{item.password, jdbcType=VARCHAR}, + #{item.creationUser, jdbcType=VARCHAR}, + #{item.oriAttId, jdbcType=VARCHAR}) + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandItemsCompareHisEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandItemsCompareHisEOMapper.xml new file mode 100644 index 00000000..eeb71c51 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandItemsCompareHisEOMapper.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + id, items_id, items_name, items_num, items_text, items_display_num, target_stand, left_or_right, + stand_his_id, create_time, modify_time,remark + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and items_id ${itemsIdOperator} #{itemsId} + + + and items_name ${itemsNameOperator} #{itemsName} + + + and items_num ${itemsNumOperator} #{itemsNum} + + + and items_text ${itemsTextOperator} #{itemsText} + + + and items_display_num ${itemsDisplayNumOperator} #{itemsDisplayNum} + + + and target_stand ${targetStandOperator} #{targetStand} + + + and left_or_right ${leftOrRightOperator} #{leftOrRight} + + + and stand_his_id ${standHisIdOperator} #{standHisId} + + + and create_time ${createTimeOperator} #{createTime} + + + and create_time >= #{createTime1} + + + and create_time <= #{createTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + + + + + + insert into SAR_STAND_ITEMS_COMPARE_HIS() + values (#{id, jdbcType=VARCHAR}, #{itemsId, jdbcType=VARCHAR}, #{itemsName, jdbcType=VARCHAR}, #{itemsNum, jdbcType=VARCHAR}, #{itemsText, jdbcType=CLOB}, #{itemsDisplayNum, jdbcType=INTEGER}, #{targetStand, jdbcType=INTEGER}, #{leftOrRight, jdbcType=VARCHAR}, #{standHisId, jdbcType=VARCHAR}, #{createTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}) + + + + + + insert into SAR_STAND_ITEMS_COMPARE_HIS + + id, + items_id, + items_name, + items_num, + items_text, + items_display_num, + target_stand, + left_or_right, + stand_his_id, + create_time, + modify_time, + remark, + + + #{id, jdbcType=VARCHAR}, + #{itemsId, jdbcType=VARCHAR}, + #{itemsName, jdbcType=VARCHAR}, + #{itemsNum, jdbcType=VARCHAR}, + #{itemsText, jdbcType=CLOB}, + #{itemsDisplayNum, jdbcType=INTEGER}, + #{targetStand, jdbcType=INTEGER}, + #{leftOrRight, jdbcType=VARCHAR}, + #{standHisId, jdbcType=VARCHAR}, + #{createTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{remark, jdbcType=VARCHAR}, + + + + + + update SAR_STAND_ITEMS_COMPARE_HIS + set items_id = #{itemsId}, + items_name = #{itemsName}, + items_num = #{itemsNum}, + items_text = #{itemsText}, + items_display_num = #{itemsDisplayNum}, + target_stand = #{targetStand}, + left_or_right = #{leftOrRight}, + stand_his_id = #{standHisId}, + create_time = #{createTime}, + modify_time = #{modifyTime} + where id = #{id} + + + + + update SAR_STAND_ITEMS_COMPARE_HIS + + + items_id = #{itemsId}, + + + items_name = #{itemsName}, + + + items_num = #{itemsNum}, + + + items_text = #{itemsText}, + + + items_display_num = #{itemsDisplayNum}, + + + target_stand = #{targetStand}, + + + left_or_right = #{leftOrRight}, + + + stand_his_id = #{standHisId}, + + + create_time = #{createTime}, + + + modify_time = #{modifyTime}, + + + remark = #{remark}, + + + where id = #{id} + + + + + + + + delete from SAR_STAND_ITEMS_COMPARE_HIS + where id = #{value} + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandardsInfoEOMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandardsInfoEOMapper.xml new file mode 100644 index 00000000..add74de3 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/standardSplit/SarStandardsInfoEOMapper.xml @@ -0,0 +1,844 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SAR_STANDARDS_INFO.id, SAR_STANDARDS_INFO.stand_type, SAR_STANDARDS_INFO.country, SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, SAR_STANDARDS_INFO.stand_year, SAR_STANDARDS_INFO.stand_name, SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, SAR_STANDARDS_INFO.stand_nature, SAR_STANDARDS_INFO.issue_time, SAR_STANDARDS_INFO.put_time, + SAR_STANDARDS_INFO.synopsis, SAR_STANDARDS_INFO.creation_user, SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, SAR_STANDARDS_INFO.modify_time,SAR_STANDARDS_INFO.is_relate_access,SAR_STANDARDS_INFO.cite_stand,SAR_STANDARDS_INFO.cited_stand + + + + SAR_STANDARDS_INFO.id, SAR_STANDARDS_INFO.stand_type, SAR_STANDARDS_INFO.country, SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, SAR_STANDARDS_INFO.stand_year, SAR_STANDARDS_INFO.stand_name, SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, SAR_STANDARDS_INFO.stand_nature, SAR_STANDARDS_INFO.issue_time, SAR_STANDARDS_INFO.put_time, + concat(SAR_STANDARDS_INFO.synopsis, '') as synopsis, concat(replace_stand_num, '') as replace_stand_num, replaced_stand_num, SAR_STANDARDS_INFO.creation_user, SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, SAR_STANDARDS_INFO.modify_time,dicountry.DIC_TYPE_NAME as countryShow, dicstandSort.DIC_TYPE_NAME as standSortShow, + dicstandState.DIC_TYPE_NAME as standStateShow,dicstandNature.DIC_TYPE_NAME as standNatureShow,is_relate_access,cite_stand,cited_stand + + + + SAR_STANDARDS_INFO.id, SAR_STANDARDS_INFO.stand_type, SAR_STANDARDS_INFO.country, SAR_STANDARDS_INFO.stand_sort, + SAR_STANDARDS_INFO.stand_number, SAR_STANDARDS_INFO.stand_year, SAR_STANDARDS_INFO.stand_name, SAR_STANDARDS_INFO.stand_en_name, + SAR_STANDARDS_INFO.stand_state, SAR_STANDARDS_INFO.stand_nature, SAR_STANDARDS_INFO.issue_time, SAR_STANDARDS_INFO.put_time, + concat(SAR_STANDARDS_INFO.synopsis, ''), concat(replace_stand_num, ''), replaced_stand_num, SAR_STANDARDS_INFO.creation_user, SAR_STANDARDS_INFO.valid_flag, + SAR_STANDARDS_INFO.creation_time, SAR_STANDARDS_INFO.modify_time,dicountry.DIC_TYPE_NAME, dicstandSort.DIC_TYPE_NAME, + dicstandState.DIC_TYPE_NAME,dicstandNature.DIC_TYPE_NAME,is_relate_access,cite_stand,cited_stand + + + + + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + and id ${idOperator} #{id} + + + and stand_type ${standTypeOperator} #{standType} + + + and country ${countryOperator} #{country} + + + and stand_sort ${standSortOperator} #{standSort} + + + and stand_number ${standNumberOperator} #{standNumber} + + + and stand_year ${standYearOperator} #{standYear} + + + and stand_name ${standNameOperator} #{standName} + + + and stand_en_name ${standEnNameOperator} #{standEnName} + + + and stand_state ${standStateOperator} #{standState} + + + and stand_nature ${standNatureOperator} #{standNature} + + + and issue_time ${issueTimeOperator} #{issueTime} + + + and issue_time >= #{issueTime1} + + + and issue_time <= #{issueTime2} + + + and put_time ${putTimeOperator} #{putTime} + + + and put_time >= #{putTime1} + + + and put_time <= #{putTime2} + + + and synopsis ${synopsisOperator} #{synopsis} + + + and replace_stand_num ${replaceStandNumOperator} #{replaceStandNum} + + + and replaced_stand_num ${replacedStandNumOperator} #{replacedStandNum} + + + and creation_user ${creationUserOperator} #{creationUser} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and is_relate_access = #{isRelateAccess} + + + + + + + insert into SAR_STANDARDS_INFO() + values (#{id, jdbcType=VARCHAR}, #{standType, jdbcType=VARCHAR}, #{country, jdbcType=VARCHAR}, #{standSort, jdbcType=VARCHAR}, #{standNumber, jdbcType=VARCHAR}, #{standYear, jdbcType=VARCHAR}, #{standName, jdbcType=VARCHAR}, #{standEnName, jdbcType=VARCHAR}, #{standState, jdbcType=VARCHAR}, #{standNature, jdbcType=VARCHAR}, #{issueTime, jdbcType=TIMESTAMP}, #{putTime, jdbcType=TIMESTAMP}, #{synopsis, jdbcType=CLOB}, #{replaceStandNum, jdbcType=CLOB}, #{replacedStandNum, jdbcType=VARCHAR}, #{creationUser, jdbcType=VARCHAR}, #{validFlag, jdbcType=VARCHAR}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}) + + + + + insert into SAR_STANDARDS_INFO + + id, + stand_type, + country, + stand_sort, + stand_number, + stand_year, + stand_name, + stand_en_name, + stand_state, + stand_nature, + issue_time, + put_time, + synopsis, + replace_stand_num, + replaced_stand_num, + creation_user, + valid_flag, + creation_time, + modify_time, + is_relate_access, + cite_stand, + cited_stand, + + + #{id, jdbcType=VARCHAR}, + #{standType, jdbcType=VARCHAR}, + #{country, jdbcType=VARCHAR}, + #{standSort, jdbcType=VARCHAR}, + #{standNumber, jdbcType=VARCHAR}, + #{standYear, jdbcType=VARCHAR}, + #{standName, jdbcType=VARCHAR}, + #{standEnName, jdbcType=VARCHAR}, + #{standState, jdbcType=VARCHAR}, + #{standNature, jdbcType=VARCHAR}, + #{issueTime, jdbcType=VARCHAR}, + #{putTime, jdbcType=TIMESTAMP}, + #{synopsis, jdbcType=CLOB}, + #{replaceStandNum, jdbcType=CLOB}, + #{replacedStandNum, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{validFlag, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{isRelateAccess, jdbcType=VARCHAR}, + #{citeStand, jdbcType=VARCHAR}, + #{citedStand, jdbcType=VARCHAR}, + + + + + + update SAR_STANDARDS_INFO + set stand_type = #{standType}, + country = #{country}, + stand_sort = #{standSort}, + stand_number = #{standNumber}, + stand_year = #{standYear}, + stand_name = #{standName}, + stand_en_name = #{standEnName}, + stand_state = #{standState}, + stand_nature = #{standNature}, + issue_time = #{issueTime}, + put_time = #{putTime}, + synopsis = #{synopsis}, + replace_stand_num = #{replaceStandNum}, + replaced_stand_num = #{replacedStandNum}, + creation_user = #{creationUser}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime} + where id = #{id} + + + + + update SAR_STANDARDS_INFO + + + stand_type = #{standType}, + + + country = #{country}, + + + stand_sort = #{standSort}, + + + stand_number = #{standNumber}, + + + stand_year = #{standYear}, + + + stand_name = #{standName}, + + + stand_en_name = #{standEnName}, + + + stand_state = #{standState}, + + + stand_nature = #{standNature}, + + + issue_time = #{issueTime}, + + + put_time = #{putTime}, + + + synopsis = #{synopsis}, + + + replace_stand_num = #{replaceStandNum}, + + + replaced_stand_num = #{replacedStandNum}, + + + creation_user = #{creationUser}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + is_relate_access = #{isRelateAccess}, + + + cite_stand = #{citeStand}, + + + cited_stand = #{citedStand}, + + + where id = #{id} + + + + + + + + delete from SAR_STANDARDS_INFO + where id = #{value} + + + + + + + + + + + + + left join TS_DICTYPE dicountry on (dicountry.dic_type_code = SAR_STANDARDS_INFO.country and dicountry.dic_id is + not null and dicountry.valid_flag = 0) + left join TS_DICTYPE dicstandSort on (dicstandSort.dic_type_code = SAR_STANDARDS_INFO.stand_sort and + dicstandSort.dic_id is not null and dicstandSort.dic_id ='JKSADFH564S' and dicstandSort.valid_flag = 0 and dicstandSort.PARENT_ID is null) + left join TS_DICTYPE dicstandState on (dicstandState.dic_type_code = SAR_STANDARDS_INFO.stand_state and + dicstandState.dic_id is not null and dicstandState.valid_flag = 0 ) + left join TS_DICTYPE dicstandNature on (dicstandNature.dic_type_code = SAR_STANDARDS_INFO.stand_nature and + dicstandNature.dic_id is not null and dicstandNature.valid_flag = 0 ) + left join SAR_STAND_MENU ON SAR_STANDARDS_INFO.id = SAR_STAND_MENU.stand_id + left join SAR_MENU on SAR_STAND_MENU.menu_id = SAR_MENU.id + left join SAR_STAND_ATTR_INFO on (SAR_STAND_ATTR_INFO.stand_id = SAR_STANDARDS_INFO.id and SAR_STAND_ATTR_INFO.valid_flag=0) + left join TS_PERSON_COLLECT on (TS_PERSON_COLLECT.COLLECT_RES_ID = SAR_STANDARDS_INFO.id and TS_PERSON_COLLECT.VALID_FLAG=0) + where 1=1 and SAR_STANDARDS_INFO.valid_flag=0 + + + + and stand_type = #{standType} + + + + + and country = #{country} + + + + and ( + (concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-', + SAR_STANDARDS_INFO.STAND_YEAR) like concat(concat('%',#{standNumber}),'%') and SAR_STANDARDS_INFO.STAND_YEAR != '') + or (concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER) like concat(concat('%',#{standNumber}),'%') + and SAR_STANDARDS_INFO.STAND_YEAR = '') + or (stand_name like concat(concat('%',#{standNumber}),'%')) + ) + +-- 精准查询时使用 + + and ( + (concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-', + SAR_STANDARDS_INFO.STAND_YEAR) = #{standNumber} and SAR_STANDARDS_INFO.STAND_YEAR != '') + or (concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER) = #{standNumber} + and SAR_STANDARDS_INFO.STAND_YEAR = '') + or (stand_name = #{standNumber} + ) + + + + + and stand_name like concat(concat('%',#{standName}),'%') + + + and stand_en_name like concat(concat('%',#{standEnName}),'%') + + + + and stand_state = #{standState} + + + + + and stand_nature = #{standNature} + + + + and replace_stand_num like concat(concat('%',#{replaceStandNum}),'%') + + + + and replaced_stand_num like concat(concat('%',#{replacedStandNum}),'%') + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + + + + + and SAR_STAND_MENU.MENU_ID in + + #{item} + + + + + + + + + + + + and SAR_STANDARDS_INFO.id in + + #{item} + + + + and SAR_STANDARDS_INFO.stand_sort = #{standSort} + + + + AND dbms_lob.instr(SYNOPSIS, #{synopsis} ,1,1) > 0 + + + and SAR_STANDARDS_INFO.id in ( + select COLLECT_RES_ID from TS_PERSON_COLLECT where TS_PERSON_COLLECT.VALID_FLAG=0 + and (collect_type='INLAND_STAND' or collect_type='FOREIGN_STAND') + and TS_PERSON_COLLECT.user_id=#{userId} + ) + + + and SAR_STAND_ATTR_INFO.GXHBQ is not null + + + and SAR_STAND_ATTR_INFO.GXHBQ like concat(concat('%',#{labelMenuId}),'%') + + + and SAR_STAND_ATTR_INFO.SYCLLX = #{applyArctic} + + + and is_relate_access = #{isRelateAccess} + + + and (${advanceSearchStr}) + + + + + + + + + + + + + + + + + + + + + + + + update SAR_STANDARDS_INFO set + stand_state=#{standState} where 1=1 and valid_flag=0 + + and stand_sort = #{standSort} + + + and stand_Number = #{standNumber} + + + and stand_year = #{standYear} + + + + + + + delete from SAR_STANDARDS_INFO + where id = #{id} and valid_flag=1 + + + + update SAR_STANDARDS_INFO set REPLACED_STAND_NUM = #{replacedStandNum} where id = #{id} + + + + update SAR_STANDARDS_INFO set CITED_STAND = #{citedStand} where id = #{id} + + + + + + + + + + + + + + + + + + + + + update SAR_STANDARDS_INFO set stand_state = #{state} + where id in + + #{item} + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sysLog/SysLogMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sysLog/SysLogMapper.xml new file mode 100644 index 00000000..a3ad056d --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sysLog/SysLogMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/tsDictionaryType/TsDicTypeMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/tsDictionaryType/TsDicTypeMapper.xml new file mode 100644 index 00000000..558feffe --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/tsDictionaryType/TsDicTypeMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/tsDictionaryType/TsDictionaryMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/tsDictionaryType/TsDictionaryMapper.xml new file mode 100644 index 00000000..b833a3d4 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/tsDictionaryType/TsDictionaryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/tsRoleMeunData/TsRoleMenuDataMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/tsRoleMeunData/TsRoleMenuDataMapper.xml new file mode 100644 index 00000000..dacec7b5 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/tsRoleMeunData/TsRoleMenuDataMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/tsTask/TbTaskMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/tsTask/TbTaskMapper.xml new file mode 100644 index 00000000..3f754b70 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/tsTask/TbTaskMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/utArea/UtAreaMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/utArea/UtAreaMapper.xml new file mode 100644 index 00000000..91248d67 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/utArea/UtAreaMapper.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + id, area_name, show_index, sar_type, creation_user, valid_flag, creation_time, modify_time + + + + + where 1=1 + + + and id ${idOperator} #{id} + + + and area_name ${areaNameOperator} #{areaName} + + + and show_index ${showIndexOperator} #{showIndex} + + + and sar_type like concat(concat('%',#{sarType}),'%') + + + and creation_user ${creationUserOperator} #{creationUser} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + and id != #{notId} + + + + + + + + insert into UT_AREA() + values (#{id, jdbcType=VARCHAR}, #{areaName, jdbcType=VARCHAR}, #{showIndex, jdbcType=INTEGER}, #{sarType, jdbcType=VARCHAR}, #{creationUser, jdbcType=VARCHAR}, #{validFlag, jdbcType=INTEGER}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}) + + + + + + insert into UT_AREA + + id, + area_name, + show_index, + sar_type, + creation_user, + valid_flag, + creation_time, + modify_time, + + + #{id, jdbcType=VARCHAR}, + #{areaName, jdbcType=VARCHAR}, + #{showIndex, jdbcType=INTEGER}, + #{sarType, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + #{validFlag, jdbcType=INTEGER}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + + + + + + update UT_AREA + set area_name = #{areaName}, + show_index = #{showIndex}, + sar_type = #{sarType}, + creation_user = #{creationUser}, + valid_flag = #{validFlag}, + creation_time = #{creationTime}, + modify_time = #{modifyTime} + where id = #{id} + + + + + update UT_AREA + + + area_name = #{areaName}, + + + show_index = #{showIndex}, + + + sar_type = #{sarType}, + + + creation_user = #{creationUser}, + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + where id = #{id} + + + + + + + + delete from UT_AREA + where id = #{value} + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgCommittee/WgCommitteeMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgCommittee/WgCommitteeMapper.xml new file mode 100644 index 00000000..405fb81e --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgCommittee/WgCommitteeMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgCommitteeUser/WgCommitteeUserMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgCommitteeUser/WgCommitteeUserMapper.xml new file mode 100644 index 00000000..6ec5b4e0 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgCommitteeUser/WgCommitteeUserMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgDept/WgDeptMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgDept/WgDeptMapper.xml new file mode 100644 index 00000000..da4a390a --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgDept/WgDeptMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgMeetingInfo/WgMeetingInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgMeetingInfo/WgMeetingInfoMapper.xml new file mode 100644 index 00000000..bead41d4 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgMeetingInfo/WgMeetingInfoMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgMeetingUserRelation/WgMeetingUserRelationMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgMeetingUserRelation/WgMeetingUserRelationMapper.xml new file mode 100644 index 00000000..0e3da162 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgMeetingUserRelation/WgMeetingUserRelationMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgNetInfo/WgNetInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgNetInfo/WgNetInfoMapper.xml new file mode 100644 index 00000000..f7f5dd81 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgNetInfo/WgNetInfoMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgPayInfo/WgPayInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgPayInfo/WgPayInfoMapper.xml new file mode 100644 index 00000000..7251a1d0 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgPayInfo/WgPayInfoMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgStandorpolicyInfo/WgStandorpolicyInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgStandorpolicyInfo/WgStandorpolicyInfoMapper.xml new file mode 100644 index 00000000..8d5e3ad0 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgStandorpolicyInfo/WgStandorpolicyInfoMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wg_work_group/WgWorkGroupMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wg_work_group/WgWorkGroupMapper.xml new file mode 100644 index 00000000..5c94098d --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wg_work_group/WgWorkGroupMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdCgfyMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdCgfyMapper.xml new file mode 100644 index 00000000..8798b6e3 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdCgfyMapper.xml @@ -0,0 +1,133 @@ + + + + + + LIMIT ${(page-1) * pageSize},${pageSize} + + + + + id,type,number,name,pages,cost + + + + where 1=1 + + and id = #{id} + + + and type like concat('%',#{type},'%') + + + and number like concat('%',#{number},'%') + + + and name like concat('%',#{name},'%') + + + and pages = #{pages} + + + and cost = #{cost} + + + + + + + + + + update wgd_cgfy + + + type = #{type}, + + + number = #{number}, + + + name = #{name}, + + + pages = #{pages}, + + + cost = #{cost}, + + + where id = #{id} + + + + insert into wgd_cgfy + + + id, + + + type, + + + number, + + + name, + + + pages, + + + cost, + + + values + + + #{id}, + + + #{type}, + + + #{number}, + + + #{name}, + + + #{pages}, + + + #{cost}, + + + + + + delete from wgd_cgfy where id = #{id} + + + + delete from wgd_cgfy where id in + + #{id} + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdFyfyMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdFyfyMapper.xml new file mode 100644 index 00000000..c7ec5b23 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdFyfyMapper.xml @@ -0,0 +1,154 @@ + + + + + + id,type,number,name,translation,pages,cost,time + + + + + + and id = #{id} + + + and type like concat('%',#{type},'%') + + + and number like concat('%',#{number},'%') + + + and name like concat('%',#{name},'%') + + + and translation like concat('%',#{translation},'%') + + + and pages = #{pages} + + + and cost = #{cost} + + + and time = #{time} + + + + + + + + + + + + + + update wgd_fyfy + + + type = #{type}, + + + number = #{number}, + + + name = #{name}, + + + translation = #{translation}, + + + pages = #{pages}, + + + cost = #{cost}, + + + time = #{time}, + + + where id = #{id} + + + + insert into wgd_fyfy + + + id, + + + type, + + + number, + + + name, + + + translation, + + + pages, + + + cost, + + + time, + + + values + + + #{id}, + + + #{type}, + + + #{number}, + + + #{name}, + + + #{translation}, + + + #{pages}, + + + #{cost}, + + + #{time}, + + + + + + delete from wgd_fyfy where id = #{id} + + + + delete from wgd_fyfy where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdSrbMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdSrbMapper.xml new file mode 100644 index 00000000..4c7f1d5a --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdSrbMapper.xml @@ -0,0 +1,134 @@ + + + + + + id,name,number,source,cost,time + + + + + + and id = #{id} + + + and name like concat('%',#{name},'%') + + + and number like concat('%',#{number},'%') + + + + and source = #{source} + + + and cost = #{cost} + + + and time = #{time} + + + + + + + + + + + + + + update wgd_srb + + + name = #{name}, + + + number = #{number}, + + + + source = #{source}, + + + cost = #{cost}, + + + time = #{time}, + + + where id = #{id} + + + + insert into wgd_srb + + + id, + + + name, + + + number, + + + + source, + + + cost, + + + time, + + + values + + + #{id}, + + + #{name}, + + + #{number}, + + + + #{source}, + + + #{cost}, + + + #{time}, + + + + + + delete from wgd_srb where id = #{id} + + + + delete from wgd_srb where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdWbtjMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdWbtjMapper.xml new file mode 100644 index 00000000..6e24bd3a --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdWbtjMapper.xml @@ -0,0 +1,226 @@ + + + + + + id,host,meeting,time,place,contributions,occurs,expenses,user,leadership,participants,information,recording,Issues + + + + + + and id = #{id} + + + and host like concat('%',#{host},'%') + + + and meeting like concat('%',#{meeting},'%') + + + and time like concat('%',#{time},'%') + + + and place = #{place} + + + and contributions = #{contributions} + + + and occurs = #{occurs} + + + and expenses = #{expenses} + + + and user = #{user} + + + and leadership = #{leadership} + + + and participants = #{participants} + + + and information = #{information} + + + and recording = #{recording} + + + and Issues = #{Issues} + + + + + + + + + + + + + + update wgd_wbtj + + + host = #{host}, + + + meeting = #{meeting}, + + + time = #{time}, + + + place = #{place}, + + + contributions = #{contributions}, + + + occurs = #{occurs}, + + + expenses = #{expenses}, + + + user = #{user}, + + + leadership = #{leadership}, + + + participants = #{participants}, + + + information = #{information}, + + + recording = #{recording}, + + + Issues = #{Issues}, + + + where id = #{id} + + + + insert into wgd_wbtj + + + id, + + + host, + + + meeting, + + + time, + + + place, + + + contributions, + + + occurs, + + + expenses, + + + user, + + + leadership, + + + participants, + + + information, + + + recording, + + + Issues, + + + values + + + #{id}, + + + #{host}, + + + #{meeting}, + + + #{time}, + + + #{place}, + + + #{contributions}, + + + #{occurs}, + + + #{expenses}, + + + #{user}, + + + #{leadership}, + + + #{participants}, + + + #{information}, + + + #{recording}, + + + #{Issues}, + + + + + + delete from wgd_wbtj where id = #{id} + + + + delete from wgd_wbtj where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdWbxdMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdWbxdMapper.xml new file mode 100644 index 00000000..c9c971c8 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdWbxdMapper.xml @@ -0,0 +1,323 @@ + + + + + + id,stage,number,name,project_id,project_name,type,preside,data_start,data_implement,body,drafting,data_record,report,participants,celebrity,cost_marking,cost_other,revised,status,signature,remark + + + + + + and id = #{id} + + + and stage like concat('%',#{stage},'%') + + + and number like concat('%',#{number},'%') + + + and name like concat('%',#{name},'%') + + + and project_id = #{projectId} + + + and project_name = #{projectName} + + + and type = #{type} + + + and preside = #{preside} + + + and data_start = #{dataStart} + + + and data_implement = #{dataImplement} + + + and body = #{body} + + + and drafting = #{drafting} + + + and data_record = #{dataRecord} + + + and report = #{report} + + + and participants = #{participants} + + + and celebrity = #{celebrity} + + + and cost_marking = #{costMarking} + + + and cost_other = #{costOther} + + + and revised = #{revised} + + + and status = #{status} + + + and signature = #{signature} + + + and remark = #{remark} + + + + + + + + + + + + + + update wgd_wbxd + + + stage = #{stage}, + + + number = #{number}, + + + name = #{name}, + + + project_id = #{projectId}, + + + project_name = #{projectName}, + + + type = #{type}, + + + preside = #{preside}, + + + data_start = #{dataStart}, + + + data_implement = #{dataImplement}, + + + body = #{body}, + + + drafting = #{drafting}, + + + data_record = #{dataRecord}, + + + report = #{report}, + + + participants = #{participants}, + + + celebrity = #{celebrity}, + + + cost_marking = #{costMarking}, + + + cost_other = #{costOther}, + + + revised = #{revised}, + + + status = #{status}, + + + signature = #{signature}, + + + remark = #{remark}, + + + where id = #{id} + + + + insert into wgd_wbxd + + + id, + + + stage, + + + number, + + + name, + + + project_id, + + + project_name, + + + type, + + + preside, + + + data_start, + + + data_implement, + + + body, + + + drafting, + + + data_record, + + + report, + + + participants, + + + celebrity, + + + cost_marking, + + + cost_other, + + + revised, + + + status, + + + signature, + + + remark, + + + + values + + + #{id}, + + + #{stage}, + + + #{number}, + + + #{name}, + + + #{projectId}, + + + #{projectName}, + + + #{type}, + + + #{preside}, + + + #{dataStart}, + + + #{dataImplement}, + + + #{body}, + + + #{drafting}, + + + #{dataRecord}, + + + #{report}, + + + #{participants}, + + + #{celebrity}, + + + #{costMarking}, + + + #{costOther}, + + + #{revised}, + + + #{status}, + + + #{signature}, + + + #{remark}, + + + + + + delete from wgd_wbxd where id = #{id} + + + + delete from wgd_wbxd where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdZcbMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdZcbMapper.xml new file mode 100644 index 00000000..d834b30d --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusLeo/WgdZcbMapper.xml @@ -0,0 +1,121 @@ + + + + + + id,name,cost,purposes,annexs + + + + + + and id = #{id} + + + and name = #{name} + + + and cost = #{cost} + + + and purposes = #{purposes} + + + and annexs = #{annexs} + + + + + + + + + + + + + + update wgd_zcb + + + name = #{name}, + + + cost = #{cost}, + + + purposes = #{purposes}, + + + annexs = #{annexs}, + + + + where id = #{id} + + + + insert into wgd_zcb + + + id, + + + name, + + + cost, + + + purposes, + + + annexs, + + + + values + + + #{id}, + + + #{name}, + + + #{cost}, + + + #{purposes}, + + + #{annexs}, + + + + + + + delete from wgd_zcb where id = #{id} + + + + delete from wgd_zcb where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdAssocCostMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdAssocCostMapper.xml new file mode 100644 index 00000000..6b619d16 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdAssocCostMapper.xml @@ -0,0 +1,164 @@ + + + + + + + LIMIT ${(page-1) * pageSize},${pageSize} + + + + + id,sc_name,ssc_name,wg_name,pay_standard,pay_reality,cost_outlay,annual_payment + + + + + + and id = #{id} + + + and ( + sc_name like concat('%',#{scName} ,'%') or + ssc_name like concat('%',#{scName} ,'%') or + wg_name like concat('%',#{scName} ,'%') + ) + + + and pay_standard = #{payStandard} + + + and pay_reality = #{payReality} + + + and cost_outlay = #{costOutlay} + + + and annual_payment = #{annualPayment} + + + + + + + + + + + + + + + + update wgd_assoc_cost + + + sc_name = #{scName}, + + + ssc_name = #{sscName}, + + + wg_name = #{wgName}, + + + pay_standard = #{payStandard}, + + + pay_reality = #{payReality}, + + + cost_outlay = #{costOutlay}, + + + annual_payment = #{annualPayment}, + + + where id = #{id} + + + + insert into wgd_assoc_cost + + + id, + + + sc_name, + + + ssc_name, + + + wg_name, + + + pay_standard, + + + pay_reality, + + + cost_outlay, + + + annual_payment, + + + values + + + #{id}, + + + #{scName}, + + + #{sscName}, + + + #{wgName}, + + + #{payStandard}, + + + #{payReality}, + + + #{costOutlay}, + + + #{annualPayment}, + + + + + + delete from wgd_assoc_cost where id = #{id} + + + + delete from wgd_assoc_cost where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdAssocInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdAssocInfoMapper.xml new file mode 100644 index 00000000..b50c7e47 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdAssocInfoMapper.xml @@ -0,0 +1,467 @@ + + + + + + + LIMIT ${(page-1) * pageSize},${pageSize} + + + + id,sc_name,ssc_name,wg_name,role,attend,standard,charge,leader,ini_time, + cur_time,cost_standard,cost_outlay,last_pay_time,pay_period,handler, + department,as_proper,as_status,as_contact,tel,mail, + p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32 + + + WHERE 1=1 + + and id = #{id} + + + and ( + sc_name like concat('%',#{scName} ,'%') or + ssc_name like concat('%',#{scName} ,'%') or + wg_name like concat('%',#{scName} ,'%') + ) + + + and role = #{role} + + + and attend = #{attend} + + + and standard = #{standard} + + + and charge = #{charge} + + + and leader = #{leader} + + + and DATE_FORMAT(ini_time,'%Y%m%d') = DATE_FORMAT(iniTime,'%Y%m%d') + + + and DATE_FORMAT(cur_time,'%Y%m%d') = DATE_FORMAT(curTime,'%Y%m%d') + + + and cost_standard = #{costStandard} + + + and cost_outlay = #{costOutlay} + + + and DATE_FORMAT(last_pay_time,'%Y%m%d') = DATE_FORMAT(lastPayTime,'%Y%m%d') + + + and pay_period = #{payPeriod} + + + and handler = #{handler} + + + and department = #{department} + + + and as_proper = #{asProper} + + + and as_status = #{asStatus} + + + and as_contact = #{asContact} + + + and tel = #{tel} + + + and mail = #{mail} + + + + + + + + + + + update wgd_assoc_info + + + sc_name = #{scName}, + + + ssc_name = #{sscName}, + + + wg_name = #{wgName}, + + + role = #{role}, + + + attend = #{attend}, + + + standard = #{standard}, + + + charge = #{charge}, + + + leader = #{leader}, + + + ini_time = #{iniTime}, + + + cur_time = #{curTime}, + + + cost_standard = #{costStandard}, + + + cost_outlay = #{costOutlay}, + + + last_pay_time = #{lastPayTime}, + + + pay_period = #{payPeriod}, + + + handler = #{handler}, + + + department = #{department}, + + + as_proper = #{asProper}, + + + as_status = #{asStatus}, + + + as_contact = #{asContact}, + + + tel = #{tel}, + + + mail = #{mail}, + + + p17 = #{p17}, + + + p18 = #{p18}, + + + p19 = #{p19}, + + + p20 = #{p20}, + + + p21 = #{p21}, + + + p22 = #{p22}, + + + p23 = #{p23}, + + + p24 = #{p24}, + + + p25 = #{p25}, + + + p26 = #{p26}, + + + p27 = #{p27}, + + + p28 = #{p28}, + + + p29 = #{p29}, + + + p30 = #{p30}, + + + p31 = #{p31}, + + + p32 = #{p32}, + + + where id = #{id} + + + + insert into wgd_assoc_info + + + id, + + + sc_name, + + + ssc_name, + + + wg_name, + + + role, + + + attend, + + + standard, + + + charge, + + + leader, + + + ini_time, + + + cur_time, + + + cost_standard, + + + cost_outlay, + + + last_pay_time, + + + pay_period, + + + handler, + + + department, + + + as_proper, + + + as_status, + + + as_contact, + + + tel, + + + mail, + + + p17, + + + p18, + + + p19, + + + p20, + + + p21, + + + p22, + + + p23, + + + p24, + + + p25, + + + p26, + + + p27, + + + p28, + + + p29, + + + p30, + + + p31, + + + p32, + + + values + + + #{id}, + + + #{scName}, + + + #{sscName}, + + + #{wgName}, + + + #{role}, + + + #{attend}, + + + #{standard}, + + + #{charge}, + + + #{leader}, + + + #{iniTime}, + + + #{curTime}, + + + #{costStandard}, + + + #{costOutlay}, + + + #{lastPayTime}, + + + #{payPeriod}, + + + #{handler}, + + + #{department}, + + + #{asProper}, + + + #{asStatus}, + + + #{asContact}, + + + #{tel}, + + + #{mail}, + + + #{p17}, + + + #{p18}, + + + #{p19}, + + + #{p20}, + + + #{p21}, + + + #{p22}, + + + #{p23}, + + + #{p24}, + + + #{p25}, + + + #{p26}, + + + #{p27}, + + + #{p28}, + + + #{p29}, + + + #{p30}, + + + #{p31}, + + + #{p32}, + + + + + delete from wgd_assoc_info where id = #{id} + + + + delete from wgd_assoc_info where id in + + #{id} + + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdCommiInfoMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdCommiInfoMapper.xml new file mode 100644 index 00000000..5062508b --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdCommiInfoMapper.xml @@ -0,0 +1,241 @@ + + + + + + LIMIT ${(page-1) * pageSize},${pageSize} + + + + id,unit,sc_name,ssc_name,wg_name,role,attend,cur_time,job,department, + tel,term,certificate,account,password,remark + + + where 1=1 + + and id = #{id} + + + and unit = #{unit} + + + and ( + sc_name like concat('%',#{scName} ,'%') or + ssc_name like concat('%',#{scName} ,'%') or + wg_name like concat('%',#{scName} ,'%') + ) + + + and role = #{role} + + + and attend = #{attend} + + + and DATE_FORMAT(cur_time,'%Y%m%d') = DATE_FORMAT(curTime,'%Y%m%d') + + + and job = #{job} + + + and department = #{department} + + + and tel = #{tel} + + + and term = #{term} + + + and certificate = #{certificate} + + + and account = #{account} + + + and remark = #{remark} + + + + + + + + + + update wgd_commi_info + + + unit = #{unit}, + + + sc_name = #{scName}, + + + ssc_name = #{sscName}, + + + wg_name = #{wgName}, + + + role = #{role}, + + + attend = #{attend}, + + + cur_time = #{curTime}, + + + job = #{job}, + + + department = #{department}, + + + tel = #{tel}, + + + term = #{term}, + + + certificate = #{certificate}, + + + account = #{account}, + + + password = #{password}, + + + remark = #{remark}, + + + where id = #{id} + + + insert into wgd_commi_info + + + id, + + + unit, + + + sc_name, + + + ssc_name, + + + wg_name, + + + role, + + + attend, + + + cur_time, + + + job, + + + department, + + + tel, + + + term, + + + certificate, + + + account, + + + password, + + + remark, + + + values + + + #{id}, + + + #{unit}, + + + #{scName}, + + + #{sscName}, + + + #{wgName}, + + + #{role}, + + + #{attend}, + + + #{curTime}, + + + #{job}, + + + #{department}, + + + #{tel}, + + + #{term}, + + + #{certificate}, + + + #{account}, + + + #{password}, + + + #{remark}, + + + + + delete from wgd_commi_info where id = #{id} + + + delete from wgd_commi_info where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdExReviseCostMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdExReviseCostMapper.xml new file mode 100644 index 00000000..f176790c --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdExReviseCostMapper.xml @@ -0,0 +1,124 @@ + + + + + + LIMIT ${(page-1) * pageSize},${pageSize} + + + + id,type,pro_id,pro_name,cost_outlay,cost + + + where 1=1 + + and id = #{id} + + + and type = #{type} + + + and pro_id = #{proId} + + + and pro_name = #{proName} + + + and cost = #{cost} + + + and cost_outlay = #{costOutlay} + + + + + + + + + update wgd_ex_revise_cost + + + type = #{type}, + + + pro_id = #{proId}, + + + pro_name = #{proName}, + + + cost = #{cost}, + + + cost_outlay = #{costOutlay}, + + + where id = #{id} + + + insert into wgd_ex_revise_cost + + + id, + + + type, + + + pro_id, + + + pro_name, + + + cost, + + + cost_outlay, + + + values + + + #{id}, + + + #{type}, + + + #{proId}, + + + #{proName}, + + + #{cost}, + + + #{costOutlay}, + + + + + delete from wgd_ex_revise_cost where id = #{id} + + + delete from wgd_ex_revise_cost where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdMeetCostMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdMeetCostMapper.xml new file mode 100644 index 00000000..f948663d --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/wgdCensusZ/WgdMeetCostMapper.xml @@ -0,0 +1,137 @@ + + + + + + LIMIT ${(page-1) * pageSize},${pageSize} + + + + id,unit,meet_name,meet_time,pay_standard,pay_reality,cost_outlay + + + + where 1=1 + + and id = #{id} + + + and unit = #{unit} + + + and meet_name = #{meetName} + + + and DATE_FORMAT(meet_time,'%Y%m%d') = DATE_FORMAT(#{meetTime},'%Y%m%d') + + + and pay_standard = #{payStandard} + + + and pay_reality = #{payReality} + + + and cost_outlay = #{costOutlay} + + + + + + + + + update wgd_meet_cost + + + unit = #{unit}, + + + meet_name = #{meetName}, + + + meet_time = #{meetTime}, + + + pay_standard = #{payStandard}, + + + pay_reality = #{payReality}, + + + cost_outlay = #{costOutlay}, + + + where id = #{id} + + + insert into wgd_meet_cost + + + id, + + + unit, + + + meet_name, + + + meet_time, + + + pay_standard, + + + pay_reality, + + + cost_outlay, + + + values + + + #{id}, + + + #{unit}, + + + #{meetName}, + + + #{meetTime}, + + + #{payStandard}, + + + #{payReality}, + + + #{costOutlay}, + + + + + delete from wgd_meet_cost where id = #{id} + + + delete from wgd_meet_cost where id in + + #{id} + + + diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/workGroup/WorkGroupMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/workGroup/WorkGroupMapper.xml new file mode 100644 index 00000000..3355cea1 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/workGroup/WorkGroupMapper.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + diff --git a/adc-da-sys/pom.xml b/adc-da-sys/pom.xml index 66956665..9c0f819c 100644 --- a/adc-da-sys/pom.xml +++ b/adc-da-sys/pom.xml @@ -33,6 +33,77 @@ adc-da-base 3.0.0 + + org.apache.httpcomponents + httpclient + 4.5.2 + + + commons-codec + commons-codec + 1.10 + + + org.apache.commons + commons-lang3 + 3.4 + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + + org.bouncycastle + bcprov-jdk15on + 1.56 + compile + + + com.adc + adc-da-util + 2.2.4 + + + org.bouncycastle + bcprov-jdk14 + + + + + org.dom4j + dom4j + 2.0.1 + + + + + com.lowagie + itext + 2.1.7 + + + com.lowagie + itextasian + 2.1.7 + + + com.itextpdf + itextpdf + 5.5.9 + + + com.itextpdf + itext-asian + 5.2.0 + + + com.squareup.okhttp3 + okhttp + 3.6.0 + diff --git a/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java b/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java index e3de920f..79754c64 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/controller/AttFileEOController.java @@ -1,22 +1,28 @@ package com.adc.da.att.controller; +import com.adc.da.att.dao.UserDao; import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.entity.TsUser; import com.adc.da.att.service.IAttFileEOService; import com.adc.da.att.vo.AttFileVo; import com.adc.da.file.store.IFileStore; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; +import com.adc.da.sys.entity.UserEO; import com.adc.da.util.MD5Util; import com.adc.da.util.UUIDUtils; +import com.adc.da.util.WaterMarkUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import sun.misc.BASE64Encoder; @@ -26,6 +32,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; import java.io.*; +import java.net.URL; +import java.net.URLConnection; import java.net.URLEncoder; import java.nio.file.Files; import java.text.SimpleDateFormat; @@ -35,7 +43,7 @@ import java.util.regex.Pattern; @RestController @RequestMapping("/${restPath}/att/attFile") -@Api(description = "|AttFileEO|文件上传") +@Api(tags = "|AttFileEO|文件上传") public class AttFileEOController { private static final Logger logger = LoggerFactory.getLogger(AttFileEOController.class); @@ -46,6 +54,9 @@ public class AttFileEOController { @Autowired private IFileStore iFileStore; + @Autowired + private UserDao userDao; + @Value("${file.path}") private String filePath;//文件存储路径 @@ -59,6 +70,13 @@ public class AttFileEOController { private String uploadFileWhiteLists; //上传文件白名单 + @ApiOperation(value = "|获取企标文件") + @GetMapping("/getBusStandFileByAttId") + public ResponseMessage getBusStandFileByAttId(String attId){ + AttFileEO attFileEO = attFileEOService.saveOrGetBusFileInfo(attId); + return Result.success(attFileEO); + } + @ApiOperation(value="|File|上传文件") @PostMapping(value="/upload",consumes="multipart/*",headers="content-type=multipart/form-data" ) @CrossOrigin(origins = "*", maxAge = 3600) @@ -97,6 +115,8 @@ public class AttFileEOController { String standName = oriFileName.replace(standNumber,""); fileInfo.setStandName(standName); } + // 上传转换文件 + fileToConvert(); return Result.success("true", "上传成功", fileInfo); } else { return Result.error("文件上传失败"); @@ -109,6 +129,64 @@ public class AttFileEOController { } } + @ApiOperation(value="|File|上传文件测试加密解密用") + @PostMapping(value="/uploadNew",consumes="multipart/*",headers="content-type=multipart/form-data" ) + @CrossOrigin(origins = "*", maxAge = 3600) + // @RequiresPermissions("att:attFile:uploadFile") + public ResponseMessage uploadFileNew(@RequestParam("file") @ApiParam(value="上传文件",required=true) MultipartFile file) throws Exception{ + if(StringUtils.isNotEmpty(uploadFileWhiteLists)){ + String[] fileLists = uploadFileWhiteLists.split(","); + List arrList = Arrays.asList(fileLists); + String getFileName = file.getOriginalFilename(); + Pattern pReg = Pattern.compile("\\/|\\/|\\||:|\\?|\\%|\\*|\"|<|>|\\p{Cntrl}"); +// getFileName = getFileName.replaceAll(, "_"); + Matcher matcher = pReg.matcher(getFileName); + if (matcher.find()) { + return Result.error("文件上传失败,该文件名可能导致文件类型改变,请修改后重试"); + } + //截取文件后缀 + int pos = getFileName.lastIndexOf("."); + String str = getFileName.substring(pos+1).toLowerCase(); + if (arrList.contains(str)) { + AttFileVo fileInfo = attFileEOService.saveFileInfo(file); + if (fileInfo != null && fileInfo.getId() != null) { + String oriFileName = fileInfo.getOldFileName(); + if (StringUtils.isNotEmpty(oriFileName)) { + String standNumber = ""; + oriFileName = oriFileName.replaceAll("."+fileInfo.getFileSuffix(),""); + Pattern ptest = Pattern.compile("[A-Z]{1,}/{0,1}[A-Z]{1,}\\s{0,1}[0-9]\\d*\\.?\\d*"); + Pattern ptest2 = Pattern.compile("[A-Z]{1,}/{0,1}[A-Z]{1,}\\s{0,1}[0-9]\\d*\\.?\\d*-[0-9]{1,4}"); + Matcher matcher1 = ptest.matcher(oriFileName); + Matcher matcher2 = ptest2.matcher(oriFileName); + if (matcher2.find()) { + standNumber = matcher2.group(); + } else if (matcher1.find()) { + standNumber = matcher1.group(); + } + fileInfo.setStandNum(standNumber); + String standName = oriFileName.replace(standNumber,""); + fileInfo.setStandName(standName); + } + // 上传转换文件 + fileToConvert(); + return Result.success("true", "上传成功", fileInfo); + } else { + return Result.error("文件上传失败"); + } + } else { + return Result.error("文件上传失败,不允许上传该类型文件"); + } + } else { + return Result.error("文件上传失败,不允许上传该类型文件"); + } + } + + @Async + void fileToConvert(){ + + + } + @ApiOperation(value="|File|上传文件") @PostMapping(value="/uploadFiles",consumes="multipart/*",headers="content-type=multipart/form-data" ) @CrossOrigin(origins = "*", maxAge = 3600) @@ -118,7 +196,7 @@ public class AttFileEOController { } /** - * @Author yangxuenan + * @Author super_liu * @Description 下载文件 * Date 2018/10/10 18:36 * @Param [response, fileId] @@ -136,7 +214,8 @@ public class AttFileEOController { String fileOldName = fileNameEncoding(attFileEO.getOldFileName(),request); response.setHeader("Content-Disposition", "attachment; filename=\""+ fileOldName +"\""); response.setContentType("application/octet-stream"); - is = iFileStore.loadFile(attFileEO.getFilePath()+attFileEO.getFileName()); + File file = new File(filePath+attFileEO.getFilePath()+attFileEO.getFileName()); + is = new FileInputStream(file); os = response.getOutputStream(); IOUtils.copy(is, os); os.flush(); @@ -188,7 +267,7 @@ public class AttFileEOController { if (!newFile.exists()) { Files.copy(oldFile.toPath(), newFile.toPath()); } - filePathResult = "uploadPath/phoneLoadFiles/" + timeStr + "/" + fileOldName; + filePathResult = "file/phoneLoadFiles/" + timeStr + "/" + fileOldName; return Result.success(filePathResult); } else { return Result.error("获取文件信息失败"); @@ -232,7 +311,33 @@ public class AttFileEOController { String fileOldName = fileNameEncoding(attFileEO.getOldFileName(),request); response.setHeader("Content-Disposition", "attachment;filename=\""+fileOldName+"\""); response.setContentType("application/octet-stream"); - is = iFileStore.loadFile(attFileEO.getFilePath()+attFileEO.getFileName()); + File file = new File(filePath+attFileEO.getFilePath()+attFileEO.getFileName()); + is = new FileInputStream(file); + os = response.getOutputStream(); + IOUtils.copy(is, os); + os.flush(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } finally { + IOUtils.closeQuietly(is); + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|File|下载文件") + @GetMapping("/downloadFileForSarNew") + // @RequiresPermissions("sys:file:downloadFileForSar") + public void downloadFileForSarNew(String fileId, HttpServletResponse response, HttpServletRequest request) throws Exception { + AttFileEO attFileEO = attFileEOService.getFileInfo(fileId); + InputStream is = null; + OutputStream os = null; + response.reset(); + try { + String fileOldName = fileNameEncoding(attFileEO.getOldFileName(),request); + response.setHeader("Content-Disposition", "attachment;filename=\""+fileOldName+"\""); + response.setContentType("application/octet-stream"); + File file = new File(filePath+attFileEO.getFilePath()+attFileEO.getFileName()); + is = new FileInputStream(file); os = response.getOutputStream(); IOUtils.copy(is, os); os.flush(); @@ -247,7 +352,7 @@ public class AttFileEOController { @ApiOperation(value = "|File|下载文件加水印") @GetMapping("/downloadFileForSarWaterMark") // @RequiresPermissions("sys:file:downloadFileForSar") - public void downloadFileForSarWaterMark(String fileId, HttpServletResponse response, HttpServletRequest request) throws Exception { + public void downloadFileForSarWaterMark(String userId,String fileId, HttpServletResponse response, HttpServletRequest request) throws Exception { AttFileEO attFileEO = attFileEOService.getFileInfo(fileId); InputStream is = null; OutputStream os = null; @@ -263,24 +368,96 @@ public class AttFileEOController { } String waterFilePath = newFilePath + attFileEO.getOldFileName(); // 添加水印 - String waterContent = ""; -// String userId = LoginUserUtil.getUserId(); -// String userMsg = ""; -// UserEO userEO = userEOService.selectByPrimaryKey(userId); -// if (userEO != null) { -// userMsg = userEO.getUname() + ","; -// if (StringUtils.isNotEmpty(userEO.getWorkNum())) { -// userMsg += userEO.getWorkNum() + ","; + String userMsg = ""; + TsUser tsUser = userDao.selectById(userId); + if (tsUser != null) { + userMsg = tsUser.getUname(); +// if (StringUtils.isNotEmpty(tsUser.getWorkNum())) { +// userMsg += tsUser.getWorkNum() + ","; // } -// } + } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");//设置日期格式 String date = df.format(new Date()); -// waterContent = userMsg + date; + String waterContent = userMsg; //2020年9月5日 去掉水印处理 -// WaterMarkUtil.waterMark(oldFilePath,waterFilePath,waterContent); + //2021年7月25日要求下载生成水印 + WaterMarkUtil.waterMark(oldFilePath,waterFilePath,waterContent); response.setHeader("Content-Disposition", "attachment;filename=\""+fileOldName+"\""); response.setContentType("application/octet-stream"); - is = iFileStore.loadFile(attFileEO.getFilePath()+"waterPath/"+attFileEO.getOldFileName()); + + String downloadFilePath=""; + String fileName=attFileEO.getFileName(); + String suffix=fileName.substring(fileName.lastIndexOf(".")+1); + //只能在pdf中添加水印, + //非pdf文件直接下载原文件 + if (suffix.equals("pdf")||suffix.equals("PDF")){ + downloadFilePath=waterFilePath; + }else { + downloadFilePath=oldFilePath; + } + + File file = new File(downloadFilePath); + is = new FileInputStream(file); + os = response.getOutputStream(); + IOUtils.copy(is, os); + os.flush(); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } finally { + IOUtils.closeQuietly(is); + IOUtils.closeQuietly(os); + } + } + + @ApiOperation(value = "|File|下载文件加水印") + @GetMapping("/downloadFileForSarWaterMarkNew") + // @RequiresPermissions("sys:file:downloadFileForSar") + public void downloadFileForSarWaterMarkNew(String userId,String fileId, HttpServletResponse response, HttpServletRequest request) throws Exception { + AttFileEO attFileEO = attFileEOService.getFileInfo(fileId); + InputStream is = null; + OutputStream os = null; + response.reset(); + try { + String fileOldName = fileNameEncoding(attFileEO.getOldFileName(),request); + //生成一份水印文件 + String oldFilePath = filePath + attFileEO.getFilePath()+attFileEO.getFileName(); + String newFilePath = filePath + attFileEO.getFilePath()+"waterPath/"; + File dir = new File(newFilePath); + if (!dir.exists()) { + dir.mkdirs(); + } + String waterFilePath = newFilePath + attFileEO.getOldFileName(); + // 添加水印 + String userMsg = ""; + TsUser tsUser = userDao.selectById(userId); + if (tsUser != null) { + userMsg = tsUser.getUname(); +// if (StringUtils.isNotEmpty(tsUser.getWorkNum())) { +// userMsg += tsUser.getWorkNum() + ","; +// } + } + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");//设置日期格式 + String date = df.format(new Date()); + String waterContent = userMsg; + //2020年9月5日 去掉水印处理 + //2021年7月25日要求下载生成水印 + WaterMarkUtil.waterMarkNew(oldFilePath,waterFilePath,waterContent); + response.setHeader("Content-Disposition", "attachment;filename=\""+fileOldName+"\""); + response.setContentType("application/octet-stream"); + + String downloadFilePath=""; + String fileName=attFileEO.getFileName(); + String suffix=fileName.substring(fileName.lastIndexOf(".")+1); + //只能在pdf中添加水印, + //非pdf文件直接下载原文件 + if (suffix.equals("pdf")||suffix.equals("PDF")){ + downloadFilePath=waterFilePath; + }else { + downloadFilePath=oldFilePath; + } + + File file = new File(downloadFilePath); + is = new FileInputStream(file); os = response.getOutputStream(); IOUtils.copy(is, os); os.flush(); @@ -293,7 +470,7 @@ public class AttFileEOController { } /** - * @Author yangxuenan + * @Author super_liu * @Description 根据不同浏览器定义下载文件编码 * Date 2018/10/11 10:40 * @Param [fileName, request] @@ -316,7 +493,7 @@ public class AttFileEOController { /** - * @Author yangxuenan + * @Author super_liu * @Description 查询文件信息 * Date 2018/10/10 18:41 * @Param [fileId] @@ -330,7 +507,7 @@ public class AttFileEOController { } /** - * @Author yangxuenan + * @Author super_liu * @Description 查询多个文件信息 * Date 2018/10/24 9:47 * @Param [fileIds] @@ -356,7 +533,8 @@ public class AttFileEOController { String fileOldName = fileNameEncoding(fileName,request); response.setHeader("Content-Disposition", "attachment; filename=" + fileOldName); response.setContentType("application/octet-stream"); - is = iFileStore.loadFile("/modal/"+fileName); + File file = new File(filePath+"/modal/"+fileName); + is = new FileInputStream(file); os = response.getOutputStream(); IOUtils.copy(is, os); os.flush(); @@ -575,4 +753,12 @@ public class AttFileEOController { } } + + @ApiOperation(value = "修改文件名称") + @GetMapping("/updateFileName") + public ResponseMessage updateFileName(@Param("fileId") String fileId,@Param("fileName") String fileName) { + AttFileEO attFileEO = attFileEOService.updateFileInfo(fileId,fileName); + return Result.success(attFileEO); + } + } diff --git a/adc-da-sys/src/main/java/com/adc/da/att/controller/UeditorController.java b/adc-da-sys/src/main/java/com/adc/da/att/controller/UeditorController.java index f566df77..888609b8 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/controller/UeditorController.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/controller/UeditorController.java @@ -69,9 +69,9 @@ public class UeditorController { AttFileVo attFileVo= attFileEOService.saveFileInfo(uploadFile); String picUrlPath =""; if(StringUtils.isNotEmpty(referer)){ - picUrlPath=referer+"uploadPath"+ attFileVo.getFilePath()+attFileVo.getFileName(); + picUrlPath=referer+"file"+ attFileVo.getFilePath()+attFileVo.getFileName(); }else{ - picUrlPath="uploadPath"+attFileVo.getFilePath()+attFileVo.getFileName(); + picUrlPath="file"+attFileVo.getFilePath()+attFileVo.getFileName(); } log.info("Ueditor 上传图片返回路径:"+picUrlPath); image.setState("SUCCESS"); diff --git a/adc-da-sys/src/main/java/com/adc/da/att/dao/AttFileEODao.java b/adc-da-sys/src/main/java/com/adc/da/att/dao/AttFileEODao.java index 1e2b9c43..b51ade10 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/dao/AttFileEODao.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/dao/AttFileEODao.java @@ -20,6 +20,8 @@ public interface AttFileEODao extends BaseMapper { public AttFileEO selectFileInfoById(AttFileEO attFileEO); + public int updateFileInfoById(AttFileEO attFileEO); + public int insertData(AttFileEO attFileEO); - + } diff --git a/adc-da-sys/src/main/java/com/adc/da/att/dao/UserDao.java b/adc-da-sys/src/main/java/com/adc/da/att/dao/UserDao.java new file mode 100644 index 00000000..b7f6d6df --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/att/dao/UserDao.java @@ -0,0 +1,8 @@ +package com.adc.da.att.dao; + +import com.adc.da.att.entity.TsUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface UserDao extends BaseMapper { + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/att/entity/AttFileEO.java b/adc-da-sys/src/main/java/com/adc/da/att/entity/AttFileEO.java index b99fc909..3035ab76 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/entity/AttFileEO.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/entity/AttFileEO.java @@ -29,12 +29,17 @@ public class AttFileEO extends BaseEntity implements Serializable{ private Date creationTime; @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date modifyTime; - + private String tableName; private String resId; - - + + /** + * 文件下载地址 + */ + private String downLoadUrl; + + /** * java字段名转换为原始数据库列名。如果不存在则返回null
    *

    字段列表:

    @@ -92,26 +97,26 @@ public class AttFileEO extends BaseEntity implements Serializable{ default: return null; } } - + /** **/ public String getId() { - int tableNameIndex = this.id.lastIndexOf("_"); - if(tableNameIndex!= -1){ + int tableNameIndex = this.id.lastIndexOf("_"); + if(tableNameIndex!= -1){ String tableName = this.id.substring(0, tableNameIndex); this.tableName=tableName; }else{ - logger.error("文件ID格式错误:"+this.id); + logger.error("文件ID格式错误:"+this.id); } return this.id; } /** **/ public void setId(String id) { - if(tableName!=null && !tableName.isEmpty()){ - this.id = tableName+"_"+id; - } - //此处注意保存时表结构是否存在 - this.id=id; + if(tableName!=null && !tableName.isEmpty()){ + this.id = tableName+"_"+id; + } + //此处注意保存时表结构是否存在 + this.id=id; } /** **/ @@ -184,7 +189,7 @@ public class AttFileEO extends BaseEntity implements Serializable{ this.modifyTime = modifyTime; } - public String getTableName() { + public String getTableName() { if(this.tableName !=null && !this.tableName.isEmpty()){ return this.tableName; }else{ @@ -197,11 +202,11 @@ public class AttFileEO extends BaseEntity implements Serializable{ } return this.tableName; } - } + } - public void setTableName(String tableName) { - this.tableName = tableName; - } + public void setTableName(String tableName) { + this.tableName = tableName; + } public static long getSerialVersionUID() { return serialVersionUID; @@ -214,4 +219,12 @@ public class AttFileEO extends BaseEntity implements Serializable{ public void setResId(String resId) { this.resId = resId; } + + public String getDownLoadUrl() { + return downLoadUrl; + } + + public void setDownLoadUrl(String downLoadUrl) { + this.downLoadUrl = downLoadUrl; + } } diff --git a/adc-da-sys/src/main/java/com/adc/da/att/entity/TsUser.java b/adc-da-sys/src/main/java/com/adc/da/att/entity/TsUser.java new file mode 100644 index 00000000..c088351b --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/att/entity/TsUser.java @@ -0,0 +1,24 @@ +package com.adc.da.att.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TsUser extends BaseEntity implements Serializable { + @TableId + private String usid; + @TableField + private String uname; + @TableField + private String workNum; + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/att/service/IAttFileEOService.java b/adc-da-sys/src/main/java/com/adc/da/att/service/IAttFileEOService.java index 952fdc7f..9f6a3b41 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/service/IAttFileEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/service/IAttFileEOService.java @@ -10,6 +10,8 @@ import java.util.List; public interface IAttFileEOService extends IService { + AttFileEO saveOrGetBusFileInfo(String attId); + public AttFileVo saveFileInfo(File file); public AttFileVo saveFileInfo(MultipartFile file); @@ -18,8 +20,14 @@ public interface IAttFileEOService extends IService { public AttFileEO getFileInfo(String attId); + public AttFileEO updateFileInfo(String attId,String name); + public List getMultiFileInfos(String fileIds); + public List getMultiFileInfosOrderByDateDesc(String fileIds); + public String saveFileAttId(File file); + public AttFileVo insertFileInfo(File file,String fileName); + } diff --git a/adc-da-sys/src/main/java/com/adc/da/att/service/impl/AttFileEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/att/service/impl/AttFileEOServiceImpl.java index 07f8c0c0..30004a37 100644 --- a/adc-da-sys/src/main/java/com/adc/da/att/service/impl/AttFileEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/att/service/impl/AttFileEOServiceImpl.java @@ -4,13 +4,15 @@ import com.adc.da.att.dao.AttFileEODao; import com.adc.da.att.entity.AttFileEO; import com.adc.da.att.service.IAttFileEOService; import com.adc.da.att.vo.AttFileVo; -import com.adc.da.common.ValidFlagEnum; +import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.util.FileUtil; import com.adc.da.util.UUIDUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -20,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Comparator; import java.util.Date; import java.util.List; @@ -28,10 +31,77 @@ import java.util.List; @Slf4j public class AttFileEOServiceImpl extends ServiceImpl implements IAttFileEOService { + private static final Logger logger = LoggerFactory.getLogger(AttFileEOServiceImpl.class); + @Value("${file.path}") private String filePath;//文件存储路径 + /** + * 文件下载路径 + */ + @Value("${file.downloadUrl}") + private String downloadUrl; + + public AttFileEO saveOrGetBusFileInfo(String attId){ + AttFileEO attFileEO=new AttFileEO(); + if(StringUtils.isNotBlank(attId)){ + attFileEO = this.getFileInfo(attId); + //2020年10月25日 此处补充文件的下载地址 + StringBuffer downloadFileUrl = new StringBuffer(); + downloadFileUrl.append(downloadUrl).append(attFileEO.getFilePath()).append(attFileEO.getFileName()); + attFileEO.setDownLoadUrl(downloadFileUrl.toString()); + }else{ + String fileId = UUIDUtils.randomUUID20(); + try { + String uuidPath = UUIDUtils.getUUIDPath(fileId); + + String FileSavePath = filePath + uuidPath; + File dir = new File(FileSavePath); + if (!dir.exists()) { + dir.mkdirs(); + } + File defaultBusFile =new File(filePath+"/modal/newStandFile.docx"); + if(!defaultBusFile.exists()){ + logger.error("默认标准文件不存在"); + } + String fileName = "标准正文.docx"; + String fileSuffix = ".docx"; + String newFileName = fileId + fileSuffix; + File saveFile = new File(FileSavePath + newFileName); +// FileUtil.copyInputStreamToFile(file.get, saveFile); + FileUtils.copyFile(defaultBusFile,saveFile); + //开始存储文件信息 + String tableName = UUIDUtils.getAttTable(); + int existTable = this.baseMapper.existTable(tableName); + if (existTable == 0) { + this.baseMapper.creatTableInfo(tableName); + } + fileId = tableName + "_" + fileId; + + attFileEO.setTableName(tableName); + attFileEO.setId(fileId); + attFileEO.setOldFileName(fileName); + attFileEO.setFileSuffix(fileSuffix); + attFileEO.setFilePath(uuidPath); + attFileEO.setFileName(newFileName); + attFileEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()); + attFileEO.setCreationTime(new Date()); + attFileEO.setModifyTime(new Date()); + this.baseMapper.insert(attFileEO); + //2020年10月25日 此处补充文件的下载地址 + StringBuffer downloadFileUrl=new StringBuffer(); + downloadFileUrl.append(filePath).append(uuidPath).append(newFileName); + attFileEO.setDownLoadUrl(downloadFileUrl.toString()); + } catch (IOException e) { + logger.error(e.getMessage(),e); + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + } + return attFileEO; + } + /** * 保存文件并返回文件ID @@ -263,9 +333,73 @@ public class AttFileEOServiceImpl extends ServiceImpl i return attFileEO; } + @Override + public AttFileEO updateFileInfo(String attId,String name) { + /** + * 根据ID获取文件信息 + */ + AttFileEO attFileEO = new AttFileEO(); + AttFileEO attFileInfo=null; + try { + attFileEO.setId(attId); + attFileInfo = this.baseMapper.selectFileInfoById(attFileEO); + if (name.contains(".")) { + int suffixIndex = name.lastIndexOf("."); + String newSuffix = name.substring(suffixIndex+1).trim(); + if (StringUtils.equals(newSuffix.toUpperCase(),attFileInfo.getFileSuffix().toUpperCase())) { + attFileInfo.setOldFileName(name); + }else { + String filename = name.substring(0,suffixIndex).trim(); + attFileInfo.setOldFileName(filename+"."+attFileInfo.getFileSuffix()); + } + }else { + attFileInfo.setOldFileName(name.trim()+"."+attFileEO.getFileSuffix()); + } + this.baseMapper.updateFileInfoById(attFileInfo); + return attFileInfo; + } catch (Exception e) { + log.error(e.getMessage(),e); + } + return attFileInfo; + } + /** - * @Author yangxuenan + * @Author super_liu + * @Description 多文件查询 + * Date 2018/10/24 11:08 + * @Param [fileIds] + * @return java.util.List + **/ + public List getMultiFileInfosOrderByDateDesc(String fileIds) { + List fileObj = new ArrayList<>(); + if(StringUtils.isNotEmpty(fileIds)){ + String idList[] = fileIds.split(","); + for(int i=0;i i for(int i=0;i i /** - * @Author yangxuenan + * @Author super_liu * @Description 获取attId * Date 2018/10/30 21:05 * @Param [file] @@ -358,4 +492,74 @@ public class AttFileEOServiceImpl extends ServiceImpl i } + + /** + * 保存文件并返回文件ID + * + * @param file + */ + @Transactional(rollbackFor = Exception.class) + public AttFileVo insertFileInfo(File file,String customFileName) { + /** + * 1、首先生成文件保存的主键ID + * 2、根据文件ID生成随机路径 + * 3、生成文件名 + * 3、保存文件 + * 4、获取文件相关信息 + * 5、判断当前表是否有存在,如果存在则执行insert语句 如果不存在则创建表结构 + * 5、保存入库并返回主键ID + */ + AttFileVo attFileVo = new AttFileVo(); + String fileId = UUIDUtils.randomUUID20(); + try { + String uuidPath = UUIDUtils.getUUIDPath(fileId); + + String FileSavePath = filePath + uuidPath + "/"; + File dir = new File(FileSavePath); + if (!dir.exists()) { + dir.mkdirs(); + } + + String fileName = file.getName(); + String fileSuffix = fileName.substring(fileName.lastIndexOf(".")+1, fileName.length()); + + String newFileName = fileId +"."+ fileSuffix; + String oldName=customFileName+"."+fileSuffix; + + + + File saveFile = new File(FileSavePath + newFileName); + FileUtils.copyFile(file,saveFile); + //开始存储文件信息 + String tableName = UUIDUtils.getAttTable(); + int existTable = this.baseMapper.existTable(tableName); + if (existTable == 0) { + this.baseMapper.creatTableInfo(tableName); + } + fileId = tableName + "_" + fileId; + AttFileEO attFileEO = new AttFileEO(); + attFileEO.setTableName(tableName); + attFileEO.setId(fileId); + attFileEO.setOldFileName(customFileName); + attFileEO.setFileSuffix(fileSuffix); + attFileEO.setFilePath(uuidPath); + attFileEO.setFileName(oldName); + attFileEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()); + attFileEO.setCreationTime(new Date()); + attFileEO.setModifyTime(new Date()); + this.baseMapper.insertData(attFileEO); + attFileVo.setId(fileId); + attFileVo.setFileName(newFileName); + attFileVo.setFilePath(uuidPath); + attFileVo.setFileSuffix(fileSuffix); + attFileVo.setOldFileName(oldName); + } catch (IOException e) { + log.error(e.getMessage(),e); + } catch (Exception e) { + log.error(e.getMessage(),e); + } + return attFileVo; + } + + } diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/config/OkHttpConfig.java b/adc-da-sys/src/main/java/com/adc/da/ocr/config/OkHttpConfig.java new file mode 100644 index 00000000..734f3261 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/config/OkHttpConfig.java @@ -0,0 +1,69 @@ +package com.adc.da.ocr.config; + +import okhttp3.ConnectionPool; +import okhttp3.OkHttpClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.concurrent.TimeUnit; + +@Configuration +public class OkHttpConfig { + + @Bean + public X509TrustManager x509TrustManager() { + return new X509TrustManager() { + @Override + public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + } + @Override + public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + } + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } + }; + } + @Bean + public SSLSocketFactory sslSocketFactory() { + try { + //信任任何链接 + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom()); + return sslContext.getSocketFactory(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyManagementException e) { + e.printStackTrace(); + } + return null; + } + /** + * Create a new connection pool with tuning parameters appropriate for a single-user application. + * The tuning parameters in this pool are subject to change in future OkHttp releases. Currently + */ + @Bean + public ConnectionPool pool() { + return new ConnectionPool(200, 5, TimeUnit.MINUTES); + } + @Bean + public OkHttpClient okHttpClient() { + return new OkHttpClient.Builder() + .sslSocketFactory(sslSocketFactory(), x509TrustManager()) + .retryOnConnectionFailure(false)//是否开启缓存 + .connectionPool(pool())//连接池 + .connectTimeout(10L, TimeUnit.SECONDS) + .readTimeout(10L, TimeUnit.SECONDS) + .build(); + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/controller/OCRRestfulController.java b/adc-da-sys/src/main/java/com/adc/da/ocr/controller/OCRRestfulController.java new file mode 100644 index 00000000..72e9e353 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/controller/OCRRestfulController.java @@ -0,0 +1,181 @@ +package com.adc.da.ocr.controller; + +import com.adc.da.att.entity.AttFileEO; +import com.adc.da.att.service.IAttFileEOService; +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.ocr.entity.OcrCallBackResultEo; +import com.adc.da.ocr.entity.OcrRecordEO; +import com.adc.da.ocr.page.OcrRecordEOPage; +import com.adc.da.ocr.service.OCRRestfulService; +import com.adc.da.ocr.service.OcrRecordEOService; +import com.adc.da.ocr.util.MD5Util; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang.StringUtils; +import org.apache.http.entity.ContentType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.File; +import java.io.FileInputStream; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @program: OcrDemo + * @description: ocr接口对接类 + * @author: duyunbao + * @create: 2019-03-13 18:21 + */ +@RestController +@RequestMapping("/${restPath}/ocr/OCRRestful") +@Api(description = "|OCR识别 |") +public class OCRRestfulController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(OCRRestfulController.class); + + @Autowired + private OCRRestfulService ocrRestfulService; + @Autowired + private OcrRecordEOService ocrRecordEOService; + @Autowired + private IAttFileEOService attFileEOService; + //接口回调公钥 + @Value("${OCR.publicKey}") + private String OcrPublicKey; + @Value("${OCR.ocrDownPath}") + private String ocrDownPath; + @Value("${file.path}") + private String filePath;//文件存储路径 + + @ApiOperation(value = "请求ocr") + @PostMapping(value="/upload",consumes="multipart/*",headers="content-type=multipart/form-data" ) + public ResponseMessage handleFile(@RequestParam("file") MultipartFile file) throws Exception { + SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); + logger.info("收到文件上传请求,开始处理文件:【"+sdf.format(new Date())+"】"); + return ocrRestfulService.handleFile(file,file.getOriginalFilename(),null,"add"); + } + + @ApiOperation(value = "ocr回调") + @PostMapping("/OcrHandleResult") + public String OcrHandleResult(@RequestParam("wordFile") MultipartFile wordFile,@RequestParam("jsonFile") MultipartFile jsonFile, OcrCallBackResultEo ocrCallBackResultEo) { + try{ + logger.info("调取到我了"); + logger.info("接口回调结果:"+ JSON.toJSONString(ocrCallBackResultEo)); + logger.info("接口回调时所传文件---wordFile:"+ wordFile.toString() +"; jsonFile:"+jsonFile.toString()); + if("error".equals(ocrCallBackResultEo.getResult())){ + logger.info("客户接口处理文件失败"); + ocrRestfulService.updateDb(ocrCallBackResultEo.getTaskID(),"客户接口处理文件失败"); + return "{\"result\":\"error\"}"; + } + //1.验证 key 是否符合,不符合打回,符合继续 + //2.向后传递文件 + String key = ocrCallBackResultEo.getKey(); + String sign = ocrCallBackResultEo.getTaskID() + OcrPublicKey; + String signMD5 = MD5Util.string2MD5(sign); + if(!signMD5.equals(key)){ + //不同,则认证失败 + logger.info("认证失败"); + ocrRestfulService.updateDb(ocrCallBackResultEo.getTaskID(),"回调接口认证失败"); + return "{\"result\":\"Authentication failed\"}"; + } + return ocrRestfulService.OcrHandleResult(wordFile,jsonFile,ocrCallBackResultEo.getTaskID()); + }catch (Exception e){ + logger.error(e.getMessage(),e); + return "{\"result\":\"runTimeException\"}"; + } + } + + @ApiOperation(value = "获取所有ocr结果") + @PostMapping("/getAllOcrResult") + public ResponseMessage> page(OcrRecordEOPage page) throws Exception { + if(org.apache.commons.lang3.StringUtils.isNotBlank(page.getPaixu()) && org.apache.commons.lang3.StringUtils.isNotBlank(page.getShunxu())){ + String sql = page.getPaixu()+" "+page.getShunxu(); + page.setSql(sql); + }else{ + page.setOrderBy("creation_time"); + page.setOrder("desc"); + } + List rows = ocrRecordEOService.queryByPage(page); + Integer integer = ocrRecordEOService.queryByPageCount(page); + DecimalFormat df = new DecimalFormat("0.00");//设置保留位数 + for (OcrRecordEO ocrRecordEO : rows){ + ocrRecordEO.setDocRealFile(ocrDownPath+ocrRecordEO.getDocRealName()); + ocrRecordEO.setJsonRealFile(ocrDownPath+ocrRecordEO.getJsonRealName()); + } + page.getPager().setRowCount(integer); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "新增ocr内容") + @PostMapping("/addOcrRecord") + public ResponseMessage addOcrRecord(OcrRecordEO ocrRecordEO) throws Exception { + SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); + logger.info("收到文件上传请求,开始处理文件:【"+sdf.format(new Date())+"】"); + // 根据attID查找文件 + String fileId = ocrRecordEO.getAttId(); + AttFileEO attFileEO = attFileEOService.getFileInfo(fileId); + if (attFileEO != null) { + String fileOriPath = filePath + attFileEO.getFilePath(); + String oriName = attFileEO.getOldFileName(); + File pdfFile = new File(fileOriPath+attFileEO.getFileName()); + FileInputStream fileInputStream = new FileInputStream(pdfFile); + MultipartFile multipartFile = new MockMultipartFile(oriName, oriName, + ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream); + return ocrRestfulService.handleFile(multipartFile,multipartFile.getOriginalFilename(),ocrRecordEO,"add"); + } else { + return Result.error("0","无法找到该文件",null); + } + } + + @ApiOperation(value = "修改ocr内容") + @PutMapping("/updateOcrRecord") + public ResponseMessage updateOcrRecord(@RequestBody OcrRecordEO ocrRecordEO) throws Exception { + if (StringUtils.isEmpty(ocrRecordEO.getAttId())) { + ocrRecordEOService.updateByPrimaryKeySelective(ocrRecordEO); + return Result.success("0","保存成功",ocrRecordEO); + } else { + SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); + logger.info("收到文件上传请求,开始处理文件:【"+sdf.format(new Date())+"】"); + // 根据attID查找文件 + String fileId = ocrRecordEO.getAttId(); + AttFileEO attFileEO = attFileEOService.getFileInfo(fileId); + if (attFileEO != null) { + String fileOriPath = filePath + attFileEO.getFilePath(); + String oriName = attFileEO.getOldFileName(); + File pdfFile = new File(fileOriPath+attFileEO.getFileName()); + FileInputStream fileInputStream = new FileInputStream(pdfFile); + MultipartFile multipartFile = new MockMultipartFile(oriName, oriName, + ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream); + return ocrRestfulService.handleFile(multipartFile,multipartFile.getOriginalFilename(),ocrRecordEO,"update"); + } else { + return Result.error("0","无法找到该文件",null); + } + } + } + + @ApiOperation(value = "删除ocr内容") + @DeleteMapping("/deleteOcrRecord") + public ResponseMessage deleteOcrRecord(String ids) throws Exception { + if (StringUtils.isNotEmpty(ids)) { + String[] idArr = ids.split(","); + List idList = Arrays.asList(idArr); + int i = ocrRecordEOService.deleteByIds(idList); + return Result.success("0","删除成功",i); + } else { + return Result.error("删除数据不能为空"); + } + + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/dao/OcrRecordEODao.java b/adc-da-sys/src/main/java/com/adc/da/ocr/dao/OcrRecordEODao.java new file mode 100644 index 00000000..26df14ae --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/dao/OcrRecordEODao.java @@ -0,0 +1,33 @@ +package com.adc.da.ocr.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.ocr.entity.OcrRecordEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * + *
    + * 功能:OCR_RECORD OcrRecordEODao
    + * 作者:code generator
    + * 日期: 2019-03-25
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Mapper +public interface OcrRecordEODao extends BaseMapper { + +// List getAllOcrResult(); +// +// int deleteByIds(@Param("idList") List idList); + + List queryByPage(BasePage var1); + Integer queryByPageCount(BasePage var1); + + int insertSelective(OcrRecordEO ocrRecordEO); + + int updateByPrimaryKeySelective(OcrRecordEO ocrRecordEO); + + int deleteByIds(@Param("idList") List idList); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrCallBackResultEo.java b/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrCallBackResultEo.java new file mode 100644 index 00000000..cc9ea879 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrCallBackResultEo.java @@ -0,0 +1,76 @@ +package com.adc.da.ocr.entity; + +/** + * @program: OcrDemo + * @description: orc调取回调函数的参数 + * @author: duyunbao + * @create: 2019-03-13 16:14 + */ +public class OcrCallBackResultEo { + + private String result ; + private String taskID ; +// private String wordFileName; +// private String wordFileContent; +// private String jsonFileName; +// private String jsonFileContent; + + private String key; + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public String getTaskID() { + return taskID; + } + + public void setTaskID(String taskID) { + this.taskID = taskID; + } +// +// public String getWordFileName() { +// return wordFileName; +// } +// +// public void setWordFileName(String wordFileName) { +// this.wordFileName = wordFileName; +// } +// +// public String getWordFileContent() { +// return wordFileContent; +// } +// +// public void setWordFileContent(String wordFileContent) { +// this.wordFileContent = wordFileContent; +// } +// +// public String getJsonFileName() { +// return jsonFileName; +// } +// +// public void setJsonFileName(String jsonFileName) { +// this.jsonFileName = jsonFileName; +// } + +// public String getJsonFileContent() { +// return jsonFileContent; +// } +// +// public void setJsonFileContent(String jsonFileContent) { +// this.jsonFileContent = jsonFileContent; +// } + + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrRecordEO.java b/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrRecordEO.java new file mode 100644 index 00000000..738cd9d9 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrRecordEO.java @@ -0,0 +1,280 @@ +package com.adc.da.ocr.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.io.Serializable; +import java.util.Date; + +/** + * 功能:OCR_RECORD OcrRecordEOEntity
    + * 作者:code generator
    + * 日期: 2019-03-25
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class OcrRecordEO extends BaseEntity implements Serializable{ + + private static final long serialVersionUID = -5464438392516276473L; + private Object wordFileCode; + private Object jsonFileCode; + private String id; + private String docRealName; + private String jsonRealName; + private String fileName; + private String docName; + private String jsonName; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + private String docRealFile; + private String jsonRealFile; + + //计算文件转换耗费时间 + private String spendTime; + //转换结果 + private String resultContent; + //新增字段 + private String fileType; + private String standNumber; + private String standName; + private String creationUser; + private String attId; + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • wordFileCode -> word_file_code
  • + *
  • jsonFileCode -> json_file_code
  • + *
  • id -> id
  • + *
  • docRealName -> doc_real_name
  • + *
  • jsonRealName -> json_real_name
  • + *
  • fileName -> file_name
  • + *
  • docName -> doc_name
  • + *
  • jsonName -> json_name
  • + *
  • creationTime -> creation_time
  • + *
  • modifyTime -> modify_time
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null) return null; + switch (fieldName) { + case "wordFileCode": return "word_file_code"; + case "jsonFileCode": return "json_file_code"; + case "id": return "id"; + case "docRealName": return "doc_real_name"; + case "jsonRealName": return "json_real_name"; + case "fileName": return "file_name"; + case "docName": return "doc_name"; + case "jsonName": return "json_name"; + case "creationTime": return "creation_time"; + case "modifyTime": return "modify_time"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • word_file_code -> wordFileCode
  • + *
  • json_file_code -> jsonFileCode
  • + *
  • id -> id
  • + *
  • doc_real_name -> docRealName
  • + *
  • json_real_name -> jsonRealName
  • + *
  • file_name -> fileName
  • + *
  • doc_name -> docName
  • + *
  • json_name -> jsonName
  • + *
  • creation_time -> creationTime
  • + *
  • modify_time -> modifyTime
  • + */ + public static String columnToField(String columnName) { + if (columnName == null) return null; + switch (columnName) { + case "word_file_code": return "wordFileCode"; + case "json_file_code": return "jsonFileCode"; + case "id": return "id"; + case "doc_real_name": return "docRealName"; + case "json_real_name": return "jsonRealName"; + case "file_name": return "fileName"; + case "doc_name": return "docName"; + case "json_name": return "jsonName"; + case "creation_time": return "creationTime"; + case "modify_time": return "modifyTime"; + default: return null; + } + } + + /** **/ + public Object getWordFileCode() { + return this.wordFileCode; + } + + /** **/ + public void setWordFileCode(Object wordFileCode) { + this.wordFileCode = wordFileCode; + } + + /** **/ + public Object getJsonFileCode() { + return this.jsonFileCode; + } + + /** **/ + public void setJsonFileCode(Object jsonFileCode) { + this.jsonFileCode = jsonFileCode; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + /** **/ + public String getDocRealName() { + return this.docRealName; + } + + /** **/ + public void setDocRealName(String docRealName) { + this.docRealName = docRealName; + } + + /** **/ + public String getJsonRealName() { + return this.jsonRealName; + } + + /** **/ + public void setJsonRealName(String jsonRealName) { + this.jsonRealName = jsonRealName; + } + + /** **/ + public String getFileName() { + return this.fileName; + } + + /** **/ + public void setFileName(String fileName) { + this.fileName = fileName; + } + + /** **/ + public String getDocName() { + return this.docName; + } + + /** **/ + public void setDocName(String docName) { + this.docName = docName; + } + + /** **/ + public String getJsonName() { + return this.jsonName; + } + + /** **/ + public void setJsonName(String jsonName) { + this.jsonName = jsonName; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getDocRealFile() { + return docRealFile; + } + + public void setDocRealFile(String docRealFile) { + this.docRealFile = docRealFile; + } + + public String getJsonRealFile() { + return jsonRealFile; + } + + public void setJsonRealFile(String jsonRealFile) { + this.jsonRealFile = jsonRealFile; + } + + public String getSpendTime() { + return spendTime; + } + + public void setSpendTime(String spendTime) { + this.spendTime = spendTime; + } + + public String getResultContent() { + return resultContent; + } + + public void setResultContent(String resultContent) { + this.resultContent = resultContent; + } + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getCreationUser() { + return creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrRequestEo.java b/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrRequestEo.java new file mode 100644 index 00000000..d4a92142 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrRequestEo.java @@ -0,0 +1,83 @@ +package com.adc.da.ocr.entity; + +/** + * @program: OcrDemo + * @description: ocr接口请求实体类 + * @author: duyunbao + * @create: 2019-03-13 20:46 + */ +public class OcrRequestEo { + + private String userId; + private String authCode; + private String convertType; + private String Filename; + private String taskId; + private String callBackUrl; + private String callBackMethod; + private String fileContent; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getAuthCode() { + return authCode; + } + + public void setAuthCode(String authCode) { + this.authCode = authCode; + } + + public String getConvertType() { + return convertType; + } + + public void setConvertType(String convertType) { + this.convertType = convertType; + } + + public String getFilename() { + return Filename; + } + + public void setFilename(String filename) { + Filename = filename; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getCallBackUrl() { + return callBackUrl; + } + + public void setCallBackUrl(String callBackUrl) { + this.callBackUrl = callBackUrl; + } + + public String getCallBackMethod() { + return callBackMethod; + } + + public void setCallBackMethod(String callBackMethod) { + this.callBackMethod = callBackMethod; + } + + public String getFileContent() { + return fileContent; + } + + public void setFileContent(String fileContent) { + this.fileContent = fileContent; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrResultEo.java b/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrResultEo.java new file mode 100644 index 00000000..9c6e519a --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/entity/OcrResultEo.java @@ -0,0 +1,30 @@ +package com.adc.da.ocr.entity; + +/** + * @program: OcrDemo + * @description: ocr返回结果 + * @author: duyunbao + * @create: 2019-03-13 15:35 + */ +public class OcrResultEo { + + private String resultCode; + + private String returnMessage; + + public String getResultCode() { + return resultCode; + } + + public void setResultCode(String resultCode) { + this.resultCode = resultCode; + } + + public String getReturnMessage() { + return returnMessage; + } + + public void setReturnMessage(String returnMessage) { + this.returnMessage = returnMessage; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/page/OcrRecordEOPage.java b/adc-da-sys/src/main/java/com/adc/da/ocr/page/OcrRecordEOPage.java new file mode 100644 index 00000000..5ab56ddc --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/page/OcrRecordEOPage.java @@ -0,0 +1,256 @@ +package com.adc.da.ocr.page; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:OCR_RECORD OcrRecordEOPage
    + * 作者:code generator
    + * 日期: 2019-03-25
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class OcrRecordEOPage extends BasePage { + + private String wordFileCode; + private String wordFileCodeOperator = "="; + private String jsonFileCode; + private String jsonFileCodeOperator = "="; + private String id; + private String idOperator = "="; + private String docRealName; + private String docRealNameOperator = "="; + private String jsonRealName; + private String jsonRealNameOperator = "="; + private String fileName; + private String fileNameOperator = "="; + private String docName; + private String docNameOperator = "="; + private String jsonName; + private String jsonNameOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String paixu; + private String shunxu; + private String sql; + + public String getWordFileCode() { + return this.wordFileCode; + } + + public void setWordFileCode(String wordFileCode) { + this.wordFileCode = wordFileCode; + } + + public String getWordFileCodeOperator() { + return this.wordFileCodeOperator; + } + + public void setWordFileCodeOperator(String wordFileCodeOperator) { + this.wordFileCodeOperator = wordFileCodeOperator; + } + + public String getJsonFileCode() { + return this.jsonFileCode; + } + + public void setJsonFileCode(String jsonFileCode) { + this.jsonFileCode = jsonFileCode; + } + + public String getJsonFileCodeOperator() { + return this.jsonFileCodeOperator; + } + + public void setJsonFileCodeOperator(String jsonFileCodeOperator) { + this.jsonFileCodeOperator = jsonFileCodeOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getDocRealName() { + return this.docRealName; + } + + public void setDocRealName(String docRealName) { + this.docRealName = docRealName; + } + + public String getDocRealNameOperator() { + return this.docRealNameOperator; + } + + public void setDocRealNameOperator(String docRealNameOperator) { + this.docRealNameOperator = docRealNameOperator; + } + + public String getJsonRealName() { + return this.jsonRealName; + } + + public void setJsonRealName(String jsonRealName) { + this.jsonRealName = jsonRealName; + } + + public String getJsonRealNameOperator() { + return this.jsonRealNameOperator; + } + + public void setJsonRealNameOperator(String jsonRealNameOperator) { + this.jsonRealNameOperator = jsonRealNameOperator; + } + + public String getFileName() { + return this.fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileNameOperator() { + return this.fileNameOperator; + } + + public void setFileNameOperator(String fileNameOperator) { + this.fileNameOperator = fileNameOperator; + } + + public String getDocName() { + return this.docName; + } + + public void setDocName(String docName) { + this.docName = docName; + } + + public String getDocNameOperator() { + return this.docNameOperator; + } + + public void setDocNameOperator(String docNameOperator) { + this.docNameOperator = docNameOperator; + } + + public String getJsonName() { + return this.jsonName; + } + + public void setJsonName(String jsonName) { + this.jsonName = jsonName; + } + + public String getJsonNameOperator() { + return this.jsonNameOperator; + } + + public void setJsonNameOperator(String jsonNameOperator) { + this.jsonNameOperator = jsonNameOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getPaixu() { + return paixu; + } + + public void setPaixu(String paixu) { + this.paixu = paixu; + } + + public String getShunxu() { + return shunxu; + } + + public void setShunxu(String shunxu) { + this.shunxu = shunxu; + } + + public String getSql() { + return sql; + } + + public void setSql(String sql) { + this.sql = sql; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/service/OCRRestfulService.java b/adc-da-sys/src/main/java/com/adc/da/ocr/service/OCRRestfulService.java new file mode 100644 index 00000000..0ce578ab --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/service/OCRRestfulService.java @@ -0,0 +1,16 @@ +package com.adc.da.ocr.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.ocr.entity.OcrRecordEO; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +public interface OCRRestfulService{ + + ResponseMessage handleFile(MultipartFile file, String fileName, OcrRecordEO getOcrEO, String type) throws Exception; + + void updateDb(String taskId,String result) throws Exception; + + String OcrHandleResult(MultipartFile wordFile,MultipartFile jsonFile,String taskId) throws Exception; + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/service/OcrRecordEOService.java b/adc-da-sys/src/main/java/com/adc/da/ocr/service/OcrRecordEOService.java new file mode 100644 index 00000000..c939597c --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/service/OcrRecordEOService.java @@ -0,0 +1,16 @@ +package com.adc.da.ocr.service; + +import com.adc.da.ocr.entity.OcrRecordEO; +import com.adc.da.ocr.page.OcrRecordEOPage; +import java.util.List; + +public interface OcrRecordEOService { + + List queryByPage(OcrRecordEOPage page); + + Integer queryByPageCount(OcrRecordEOPage page); + + int updateByPrimaryKeySelective(OcrRecordEO ocrRecordEO); + + int deleteByIds(List idList); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OCRRestfulServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OCRRestfulServiceImpl.java new file mode 100644 index 00000000..90dad375 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OCRRestfulServiceImpl.java @@ -0,0 +1,243 @@ +package com.adc.da.ocr.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.ocr.dao.OcrRecordEODao; +import com.adc.da.ocr.entity.OcrRecordEO; +import com.adc.da.ocr.entity.OcrResultEo; +import com.adc.da.ocr.service.OCRRestfulService; +import com.adc.da.ocr.util.Base64Util; +import com.adc.da.ocr.util.OkHttpUtil; +import com.adc.da.ocr.util.RsaUtil; +import com.adc.da.ocr.util.UUIDUtils; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.multipart.MultipartFile; +import com.adc.da.sys.util.LoginUserUtil; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class OCRRestfulServiceImpl implements OCRRestfulService { + private static final Logger logger = LoggerFactory.getLogger(OCRRestfulServiceImpl.class); + + //请求处理客户认证码 + @Value("${OCR.authCode}") + private String OcrAuthCode; + //请求处理文件url + @Value("${OCR.handleFileUrl}") + private String RestHandleFileUrl; + //接口回调url + @Value("${OCR.callBackUrl}") + private String RestCallBackUrl; + //请求处理usrid + @Value("${OCR.userId}") + private String OcrUserId; + @Value("${OCR.convertType}") + private String convertType; + @Autowired + private RestTemplate restTemplate; + @Autowired + private OkHttpUtil okHttpUtil; + @Autowired + private OcrRecordEODao ocrRecordEODao; + //ocr处理文件后存放url + @Value("${OCR.ocrPath}") + private String ocrFilePath; + @Value("${OCR.ocrDownPath}") + private String ocrDownPath; + + public ResponseMessage handleFile(MultipartFile file, String fileName, OcrRecordEO getOcrEO, String type) + throws Exception { + String taskId = ""; + if ("add".equals(type)) { + taskId = UUIDUtils.randomUUID20(); + } else { + taskId = getOcrEO.getId(); + } + + String authCode = RsaUtil.publicEncrypt(OcrAuthCode); + if(authCode == null){ + logger.error("客户认证RSA加密失败"); + return Result.error("客户认证RSA加密失败"); + } + String fileContent = Base64Util.PDFToBase64(file); + if(fileContent == null || "".equals(fileContent)){ + logger.error("PDF转Base64失败"); + return Result.error("PDF转Base64失败"); + } + SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); + try{ + //ResponseEntity responseEntity = restTemplate.postForEntity(RestHandleFileUrl, httpEntity, String.class); + Map map = new HashMap<>(); + map.put("userId",OcrUserId); + map.put("authCode",authCode); + map.put("convertType",convertType); + map.put("fileName",fileName); + map.put("fileContent",fileContent); + map.put("taskId",taskId); + map.put("callBackUrl",RestCallBackUrl); + map.put("callBackMethod",""); + logger.info("处理完文件数据,开始请求OCR接口数据:【"+sdf.format(new Date())+"】"); + String result = okHttpUtil.post(RestHandleFileUrl,map,new HashMap<>()); + logger.info("okHttp结果:"+result); + logger.info("请求OCR接口完毕,返回响应状态:【"+sdf.format(new Date())+"】"); + if(!result.contains("请求成功")){ + logger.error("请求出现异常:"+result); + return Result.error("请求出现异常"); + }else{ + OcrResultEo ocrResultEo = JSONObject.parseObject(result, OcrResultEo.class); + if(ocrResultEo.getResultCode().equals("0")){ + if ("add".equals(type)) { + OcrRecordEO ocrRecordEO = new OcrRecordEO(); + ocrRecordEO.setId(taskId); + ocrRecordEO.setCreationUser(LoginUserUtil.getUserId()); + ocrRecordEO.setFileName(fileName); + ocrRecordEO.setCreationTime(new Date()); + ocrRecordEO.setResultContent("转换中"); + ocrRecordEO.setStandNumber(getOcrEO.getStandNumber()); + ocrRecordEO.setStandName(getOcrEO.getStandName()); + ocrRecordEO.setFileType(getOcrEO.getFileType()); + ocrRecordEODao.insertSelective(ocrRecordEO); + return Result.success(ocrResultEo.getResultCode(), "加入转换成功", taskId); + } else { + OcrRecordEO ocrRecordEO = new OcrRecordEO(); + ocrRecordEO.setId(taskId); + ocrRecordEO.setFileName(fileName); + ocrRecordEO.setResultContent("转换中"); + ocrRecordEO.setStandNumber(getOcrEO.getStandNumber()); + ocrRecordEO.setStandName(getOcrEO.getStandName()); + ocrRecordEO.setFileType(getOcrEO.getFileType()); + ocrRecordEO.setCreationTime(new Date()); + ocrRecordEODao.updateByPrimaryKeySelective(ocrRecordEO); + return Result.success(ocrResultEo.getResultCode(), "加入转换成功", taskId); + } + }else{ + return Result.error(ocrResultEo.getReturnMessage()); + } + } + }catch (Exception e){ + logger.error(e.getMessage(),e); + return Result.error("OCR接口请求出现异常,无法将文件传输到OCR引擎!"); + } + } + + public void updateDb(String taskId,String result) throws Exception { + OcrRecordEO ocrRecordEO = new OcrRecordEO(); + ocrRecordEO.setId(taskId); + ocrRecordEO.setModifyTime(new Date()); + ocrRecordEO.setResultContent(result); + ocrRecordEODao.updateByPrimaryKeySelective(ocrRecordEO); + } + + public String OcrHandleResult(MultipartFile wordFile,MultipartFile jsonFile,String taskId) throws Exception { + //首先将文件保存至本地 + String saveWordFilePath=null; + String saveWordFileName=null; + logger.info("将文件保存至本地"); + if(wordFile!=null && !wordFile.isEmpty()){ + saveWordFileName=UUIDUtils.randomUUID20()+"_"+wordFile.getOriginalFilename().replace("/","_"); + saveWordFilePath=ocrFilePath+saveWordFileName; + logger.info(saveWordFilePath); + //生成保存文件 + File saveWordFile = new File(saveWordFilePath); + System.out.println(saveWordFile); + wordFile.transferTo(saveWordFile); +// FileUtils.copyInputStreamToFile(wordFile.getInputStream(),new File(saveWordFilePath)); +// savePic(wordFile.getInputStream(),saveWordFilePath); + logger.info("word存储完成"); + } + String saveJsonFilePath=null; + String saveJsonFileName=null; + if(jsonFile!=null && !jsonFile.isEmpty()){ + saveJsonFileName=UUIDUtils.randomUUID20()+"_"+jsonFile.getOriginalFilename().replace("/","_"); + saveJsonFilePath=ocrFilePath+saveJsonFileName; + logger.info(saveJsonFilePath); + File saveJsonFile = new File(saveJsonFilePath); + System.out.println(saveJsonFile); + jsonFile.transferTo(saveJsonFile); +// FileUtils.copyInputStreamToFile(jsonFile.getInputStream(),new File(saveJsonFilePath)); +// savePic(jsonFile.getInputStream(),saveJsonFilePath); + logger.info("Json存储完成"); + } + //开始将文件保存至数据库中 + if(StringUtils.isNotEmpty(saveWordFilePath) && StringUtils.isNotEmpty(saveJsonFilePath)){ + OcrRecordEO ocrRecordEO = new OcrRecordEO(); + ocrRecordEO.setId(taskId); + ocrRecordEO.setDocName(saveWordFilePath); + ocrRecordEO.setJsonName(saveJsonFilePath); + ocrRecordEO.setDocRealName(saveWordFileName); + ocrRecordEO.setWordFileCode(null); + ocrRecordEO.setJsonRealName(saveJsonFileName); + ocrRecordEO.setJsonFileCode(null); + ocrRecordEO.setModifyTime(new Date()); + ocrRecordEO.setResultContent("转换成功"); + ocrRecordEODao.updateByPrimaryKeySelective(ocrRecordEO); + return "{\"result\":\"success\"}"; + }else{ + updateDb(taskId,"error:File does not exist"); + return "{\"result\":\"error:File does not exist\"}";//文件不存在 + } + } + + private void savePic(InputStream inputStream, String filePath) { + + OutputStream os = null; + try { + // 2、保存到临时文件 + // 1K的数据缓冲 + byte[] bs = new byte[1024]; + // 读取到的数据长度 + int len; + // 输出的文件流保存到本地文件 + + File tempFile = new File(ocrFilePath); + if (!tempFile.exists()) { + tempFile.mkdirs(); + } + os = new FileOutputStream(filePath); + // 开始读取 + while ((len = inputStream.read(bs)) != -1) { + os.write(bs, 0, len); + } + + } catch (IOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + // 完毕,关闭所有链接 + try { + os.close(); + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OcrRecordEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OcrRecordEOServiceImpl.java new file mode 100644 index 00000000..f436cf55 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OcrRecordEOServiceImpl.java @@ -0,0 +1,44 @@ +package com.adc.da.ocr.service.impl; + +import com.adc.da.ocr.dao.OcrRecordEODao; +import com.adc.da.ocr.entity.OcrRecordEO; +import com.adc.da.ocr.page.OcrRecordEOPage; +import com.adc.da.ocr.service.OcrRecordEOService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.List; + +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class OcrRecordEOServiceImpl implements OcrRecordEOService { + private static final Logger logger = LoggerFactory.getLogger(OcrRecordEOServiceImpl.class); + + @Autowired + private OcrRecordEODao ocrRecordEODao; + + @Override + public List queryByPage(OcrRecordEOPage page) { + return ocrRecordEODao.queryByPage(page); + } + + @Override + public Integer queryByPageCount(OcrRecordEOPage page) { + return ocrRecordEODao.queryByPageCount(page); + } + + @Override + public int updateByPrimaryKeySelective(OcrRecordEO ocrRecordEO) { + return ocrRecordEODao.updateByPrimaryKeySelective(ocrRecordEO); + } + + @Override + public int deleteByIds(List idList){ + return ocrRecordEODao.deleteByIds(idList); + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/util/Base64Util.java b/adc-da-sys/src/main/java/com/adc/da/ocr/util/Base64Util.java new file mode 100644 index 00000000..f10e4f1b --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/util/Base64Util.java @@ -0,0 +1,211 @@ +package com.adc.da.ocr.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; +import sun.misc.BASE64Decoder; +import org.bouncycastle.util.encoders.Base64; +import java.io.*; + +/** + * @program: OcrDemo + * @description: 工具类 + * @author: duyunbao + * @create: 2019-03-13 14:58 + */ +public class Base64Util { + private static final Logger logger = LoggerFactory.getLogger(Base64Util.class); + public static String PDFToBase64(MultipartFile file) { + //BASE64Encoder encoder = new BASE64Encoder(); + InputStream fin =null; + BufferedInputStream bin =null; + ByteArrayOutputStream baos = null; + BufferedOutputStream bout =null; + try { + fin = file.getInputStream(); + bin = new BufferedInputStream(fin); + baos = new ByteArrayOutputStream(); + bout = new BufferedOutputStream(baos); + byte[] buffer = new byte[1024]; + int len = bin.read(buffer); + while(len != -1){ + bout.write(buffer, 0, len); + len = bin.read(buffer); + } + //刷新此输出流并强制写出所有缓冲的输出字节 + bout.flush(); + byte[] bytes = baos.toByteArray(); + return Base64.toBase64String(bytes); + + } catch (FileNotFoundException e) { + logger.error(e.getMessage(),e); + } catch (IOException e) { + logger.error(e.getMessage(),e); + }finally{ + try { + fin.close(); + bin.close(); + bout.close(); + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + } + return null; + } + + + /* public static String FindPDFBase(MultipartFile file){ + InputStream fin= null; + BufferedInputStream bin= null; + ByteArrayOutputStream baos= null; + BufferedOutputStream bout= null; + try{ + fin=file.getInputStream(); + bin=new BufferedInputStream(fin); + baos=new ByteArrayOutputStream(); + bout=new BufferedOutputStream(baos); + byte[] buffer=new byte[1024]; + int len=bin.read(buffer); + while(len!=-1){ + bout.write(buffer,0,len); + len=bin.read(buffer); + } + //读取完毕 + bout.flush(); + byte[] bytes=baos.toByteArray(); + String res= Base64.toBase64String(bytes); + return res; + }catch(Exception e){ + e.printStackTrace(); + }finally { + try{ + fin.close(); + bin.close(); + bout.close(); + }catch (IOException e){ + e.printStackTrace(); + } + } + + return null; + }*/ + + /** + *@Description: base64 转成文件 + *@Param: [base64Content, filePath] + *@return: void + *@Author: duyunbao + *@date: 2019/3/13 16:49 + */ + public static String base64StringToFile(String base64Content,String filePath) { + // BASE64Decoder decoder = new BASE64Decoder(); + BufferedInputStream bis = null; + FileOutputStream fos = null; + BufferedOutputStream bos = null; + + try { + // logger.info("获取到的文件base64字符串:"+base64Content); + // byte[] bytes = decoder.decodeBuffer(base64Content,);//base64编码内容转换为字节数组 + byte[] bytes = Base64.decode(base64Content.getBytes("UTF-8")); + ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes); + bis = new BufferedInputStream(byteInputStream); + File file = new File(filePath); + File path = file.getParentFile(); + if(!path.exists()){ + path.mkdirs(); + } + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + + byte[] buffer = new byte[1024]; + int length = bis.read(buffer); + while(length != -1){ + bos.write(buffer, 0, length); + length = bis.read(buffer); + } + bos.flush(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + return "error"; + }finally{ + try { + bos.close(); + bis.close(); + fos.close(); + } catch (IOException e) { + logger.error(e.getMessage(),e); + return "error"; + } + } + return "success"; + } + + /** + *@Description: base64 转成文件 + *@Param: [base64Content, filePath] + *@return: void + *@Author: duyunbao + *@date: 2019/3/13 16:49 + */ + public static String base64StringToFileOfTxt(String base64Content,String filePath) { + BASE64Decoder decoder = new BASE64Decoder(); + BufferedInputStream bis = null; + FileOutputStream fos = null; + BufferedOutputStream bos = null; + + try { + //logger.info("获取到的文件base64字符串:"+base64Content); + // new String(decoder.decodeBuffer(base64Content),"UTF-8"); +// byte[] bytes = decoder.decodeBuffer(base64Content);//base64编码内容转换为字节数组 + byte[] bytes = Base64.decode(base64Content.getBytes("UTF-8")); +// String result=new String(bytes); +// logger.info("返回的内容为:"+result); + ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes); + bis = new BufferedInputStream(byteInputStream); + File file = new File(filePath); + File path = file.getParentFile(); + if(!path.exists()){ + path.mkdirs(); + } + fos = new FileOutputStream(file); + bos = new BufferedOutputStream(fos); + + byte[] buffer = new byte[1024]; + int length = bis.read(buffer); + while(length != -1){ + bos.write(buffer, 0, length); + length = bis.read(buffer); + } + bos.flush(); +// FileWriter fw; +// fw = new FileWriter(filePath); +// PrintWriter out = new PrintWriter(fw); +// out.write(result); +// out.println(); +// fw.close(); +// out.close(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + return "error"; + }finally{ + try { + bos.close(); + bis.close(); + fos.close(); + } catch (IOException e) { + logger.error(e.getMessage(),e); + return "error"; + } + } + return "success"; + } + + + + public static void main(String[] args) { + String str="UEsDBBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAX3JlbHMvUEsDBBQAAAAIAAAAAADjVjz6ugAAAC4BAAALAAAAX3JlbHMvLnJlbHONzzsOwjAMBuAdiTtE3mlaBoRQ0y4IqSsqB4gSN41okygJj56NgSNxBTIwAGJgtP37s/y43cv6Og7kjD5oaxgUWQ4EjbBSG8Xg0O4WayAhciP5YA0ymDBAXc1n5R4HHtNS6LULJCkmMOhjdBtKg+hx5CGzDk2adNaPPKbSK+q4OHKFdJnnK+rfDag+TNJIBr6RBZB2cviPbbtOC9xacRrRxB8nvhJJ5l5hZHCxXlL5ameJBVqV9OPF6glQSwMEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAB3b3JkL1BLAwQUAAAACABae3xOcf0GXu4BAADvBAAAEQAAAHdvcmQvc2V0dGluZ3MueG1spZTPbhMxEMbvSLxD5HuyGyRQteqmEqQtF1DUUO7G681a2B5rPJtt+moceCRegcn+JS0qkTitvPPNb76xx/714+fl1YOzs73GaMDnYrlIxUx7BYXxu1zcf7mZX4hZJOkLacHrXBx0FFer168umyxqIpbFGSN8zJpcVEQhS5KoKu1kXEDQnmMloJPES9wlDWAREJSOkVOdTd6k6bvESeNFj8FzMFCWRuk1qNppTx0EtZXEXcTKhDjQmnAOrkDZ/GHn1OS6Cw5Ep84hOonf6zBX4AKb+masoUMLn4zFZxxnFEKEkhac1/fYmuHMZfrE1raSQU+03f/RbhHqMND2uajRZz1oPoKO7WR7ZwcdvKTrCvaf0ecyPSPnaE2seMIeAdysyfbS5qKsrd3InRbJMdKf2C2a4iOgeQRP0m6DVPxzyFheLJ+Jv2oko16QmhisPEzM9ZR7zdfkMGac6AfsP9SqkigVaezLf+ASCHZQHacF+Tw2tVdUt8Pc5ZUA5IH0Bo+rAHHICLwh74EIXCf0tbtxNEQLrYyTdgzdab7JSFM5z/e3hjqeVuG4KXKR/vVv20ny1FI35+2GwGeg64fAL8a2MiXdaeLzTibRtns1GOel013T4xX5BAXPSpPVaM6fZzHu8tveXG+HX6lkeqZWvwFQSwMEFAAAAAgAWnt8TuOGQpEXAQAArwIAABIAAAB3b3JkL251bWJlcmluZy54bWylkk1OwzAQRvdI3CHyPn8sEIqadlPBAYADuM6ksbA91thJ6NlYcCSugNMkbQEJRerKGs18z2+k+fr4XG3etYo6ICfRlCxPMhaBEVhJsy/Z68tj/MAi57mpuEIDJTuAY5v17c2qL0yrd0BhMAoM44q+ZI33tkhTJxrQ3CVowYRejaS5DyXt0x6psoQCnAtJrdK7LLtPNZeGTRhagsG6lgK2KFoNxo8QAsV9WMM10rqZ1tsluIp4f6HzU3I7NmeiFkuImtNba2OB2gapnVTSH47ws5j7w9FSEDqsfRJy045HmZDMs19azw23cKbtr6M9EbZ2pnUla8kUEyg+gYZ1ik6reQ7/mxs/nJ6TZ54tyAxqbDiy9OLK1t9QSwMEFAAAAAgAWnt8Tt98YfH/AgAAcw0AAA8AAAB3b3JkL3N0eWxlcy54bWztV19r2zAQfx/sOxi/p06yMkaoW7qUjkHJSv88D0WWYy2yJHRy3JR9sz3sI+0rTJIlN7GzENbBBqtf7Dvd/e50v9Mp+fHt+8nZQ8miFVFABU/j0dEwjgjHIqN8kcb3d5eDd3EEGvEMMcFJGq8JxGenr1+d1BPQa0YgMgAcJnUaF1rLSZIALkiJ4EhIws1aLlSJtBHVIqmFyqQSmAAY/JIl4+HwbVIiymMPow6BEXlOMbkQuCoJ1w2IIgxpswcoqISAVstD4DKF6o10tpO8aBYDYokPQSyRWlZygEUpTVJzyqheO/CnxKCHU1KsBIhcHxk/v0eXjPEcDTtp3RZIkie0xfPQPihRyYC2SuNK8YkHGrRAdjuTVcmCndhn1wT0rzbP0fAAH5tafGr6KxP4guSoYhqsqK6VF73kXpeCa4jqCQJMaRrf0dK05IzU0Y0okWmrekIQ6HOgaOdicc5htxuGvjqxIeHRrK4QS+PxcdBMoatjiC+CjvDB/e12Kq1qTjMaROOY+J0l3f3KrmRfS0LkjDzoEGjYxLbqK8oJdPQ1zUQ9NQVTgnWWoMiCBjOClKuAYMKcR1RpYcWcMuYl52Iz76JIhKnb95yY80DsguUm10T5b0btFBkft8JNxcgmLOU2E0Zy7T0UXRThO6cK9JWD8CG/4JCDdfEllL6Em0VLeg3l5pfx1mtp8CRSaKGQLGycrDEzA9FKzvBjlsYze8aZa06OShIie3XywsxhzPzN0+tK1xbHPd0KbRET5FGwkwKovWi6BT5oKvwGmc8fJK59+w2PC9Px2PC/p+H9cbkOZ8Py1Wt/bxS1VpEzS16I/geJxhVoUd5agy7ZU2PnFt70KH4vsnWkzTz7OvrsZwwCkn3inR7YbpRmW5Qvg5VDH291xrxT3vm0Oxu7o4z2LMBMXzZFsqfXii7Jr/kb7uDP66qg4OZXb5+fx2IwnW3z06oafhrxIH62bp49/Pjq7eFmJzWbt9MmGRt0b95cf+IqunTPzpH///Ft/iuFbzj9CVBLAwQUAAAACABae3xOQP0TY0gBAABRAwAAEgAAAHdvcmQvZm9vdG5vdGVzLnhtbKWTTU7DMBCF90jcIfK+TcICIatJNxUcoHAA4ziNReyxZpyano0FR+IKuGnSlh9VQWzGGs28b95I44+398Xy1bTJViFpsAXL5xlLlJVQabsp2NPj/eyOJeSFrUQLVhVsp4gty+urReA1gLfgFSWRYYmHgjXeO56mJBtlBM3BKRtrNaARPqa4SQNg5RCkIoojTJveZNltaoS2bMDgFAzUtZZqBbIzyvoDBFUrfFyDGu1opAU3BVehCGd2vppcHYoj0cgpRCPwpXMzCcZFU8+61X7Xw0/G6AfHaIlAUPt51A079maiMs++2Vo3wqkTbfM/2gNC50batmAdWj6AZkfQfh2+Ne3YB5f6DgOH5+gzzyZo9tZYeXZiSeC6Klg8zsD9zsU7JOUECg/Y97l9wHKRjtH1cZT/gspPKAnWa9v1t7P+EzZ+g7OUyk9QSwMEFAAAAAgAWnt8Tti6jnnDAgAAKQcAABEAAAB3b3JkL2RvY3VtZW50LnhtbKVV3U7bMBS+n7R3qHIPSQoUqGgRGwNNYggBewDXcRIP28eynYbu1bjYI+0Vduw4KRQ2dSIXic/f5+/82Pn99Ovk9FGK0ZIZy0HNknw3S0ZMUSi4qmbJ9/uLnaNkZB1RBRGg2CxZMZuczj9+OGmnBdBGMuVGCKHstJ0ltXN6mqaW1kwSuwuaKbSVYCRxKJoqbcEU2gBl1uIOUqTjLJukknCVRBizDQyUJafsPBLoQAwTxGEWtuba9mit3gauMKR9RuclyfPO2CNKug2iJOah0TsUpEZSCy64WwXwNTH7CkdyasBC6XYxLuYYyGBknm3QuquJZmu06n1olwYa3aMtZ0lj1DQC7QxAPp3pUoreD/7l120YPwPPPNsixlNbRxz8X2bjsPIkJZ1+rRQYshA4uAiUzHFqF1Cs/FeH140Jnzu3EmzUTpdEzJIgjJPUWx4Y09fs0fW2bK2+4orZDX3LC2g/g3IGxIbJ1kWvoYIRk6BEQQDOO2kceLHkQkQphCx4wTdRNKHYLtQuGM4b8wYUSOmYiWvB/Tkd7w/CbePzX8Ny5ZkIVroYYXhV9+uSG+uuAkTc8gftOfgQr0uHwnWvuL7AvH1BiKWcz5J7LrE+16wd3YIkyoMzYt2Z5eRNY32m7Nth1L5WB2qhfkOFwrNZphfd6eW899Ngub8z3turdKiCm+d/ebyT61y7EoadGHVdYAngFDgWJxKG0dKkYp/AOZAdOdXICzkMZMEol0QMpluGt7UZzBR7wlUDjY00N7ap7n6iK17deX6cHYc24HpytLcfC1R9I77CDrTXT8bJMDoYcPBseg73jiZeXASqa+eakcLPZj5GzFFH4LlcNS7ObtzwupH3K+1PY8gEPYdm+5r41uJwHo5jgIIvqvAZBck4cRkANzqK/6pLw4t4Im64o5jn3iSLVenbkMb7Af9v6foHN/8DUEsDBBQAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAd29yZC9fcmVscy9QSwMEFAAAAAgAAAAAAJR6mP7rAAAArAIAABwAAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzrZJNTsMwEIX3SNzBmj1x2iKEUJ1uEFK3VTiASSY/ajxj2VNEzsaCI3EFLAEllaqKRZbzRn7vm/F8vn+sN29uUK8YYs9kYJHloJAqrntqDTyXTzf3oKJYqu3AhAZGjLAprq/WOxyspEex631UyYWigU7EP2gdqw6djRl7pNRpODgrqQyt9rba2xb1Ms/vdJh6QHHiqba1gbCtF6DK0eN/vLlp+gofuTo4JDkToRtmIZY0gyptaFEMHKUsuYE+D7GcEyLKOEwJvutL8as54+ngXjCk//0jOEqXIG5n3QGKpLzpFn6UXwR9cmDFF1BLAwQUAAAACAAAAAAAhg2J1z0BAAAkBAAAEwAAAFtDb250ZW50X1R5cGVzXS54bWy1kz1OAzEQhXsk7mC5RVkHCoRQNin4KYEiHMB4ZzcGe2zZk5CcjYIjcQVm87MF2pAmKddvvveePdqfr+/RZOmdWEDKNmApL4uhFIAmVBabUr5OHwc3UmTSWGkXEEq5giwn4/Oz0XQVIQumMZdyRhRvlcpmBl7nIkRAVuqQvCb+TI2K2nzoBtTVcHitTEACpAG1HnI8uodazx2JhyUfb5okcFmKu81gm1VKHaOzRhPraoHVn5TBNqFgcj2TZzbmCx6QqjehVfYH7OfeIzR/QOvbq62FfiZiP9KeM/HMC0i2AvGiEz1pz7r6DKlSVTBzz0zxf9me1wh1bQ10fOsWUzCQM2/Wu6JTvLa4e6W9PTKtHOTjt9j4HozHuX+DxMjxG3TWB0vUIRAGOsUzdNaHFwFEzJxiFVvnXQW1/sHHv1BLAQIUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAMAAAAAAAAABfcmVscy9QSwECFAAUAAAACAAAAAAA41Y8+roAAAAuAQAACwAAAAAAAAAAACAAAAAkAAAAX3JlbHMvLnJlbHNQSwECFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAADAAAAAHAQAAd29yZC9QSwECFAAUAAAACABae3xOcf0GXu4BAADvBAAAEQAAAAAAAAAAACAgAAAqAQAAd29yZC9zZXR0aW5ncy54bWxQSwECFAAUAAAACABae3xO44ZCkRcBAACvAgAAEgAAAAAAAAAAACAgAABHAwAAd29yZC9udW1iZXJpbmcueG1sUEsBAhQAFAAAAAgAWnt8Tt98YfH/AgAAcw0AAA8AAAAAAAAAAAAgIAAAjgQAAHdvcmQvc3R5bGVzLnhtbFBLAQIUABQAAAAIAFp7fE5A/RNjSAEAAFEDAAASAAAAAAAAAAAAICAAALoHAAB3b3JkL2Zvb3Rub3Rlcy54bWxQSwECFAAUAAAACABae3xO2LqOecMCAAApBwAAEQAAAAAAAAAAACAgAAAyCQAAd29yZC9kb2N1bWVudC54bWxQSwECFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAADAAAAAkDAAAd29yZC9fcmVscy9QSwECFAAUAAAACAAAAAAAlHqY/usAAACsAgAAHAAAAAAAAAAAACAAAABNDAAAd29yZC9fcmVscy9kb2N1bWVudC54bWwucmVsc1BLAQIUABQAAAAIAAAAAACGDYnXPQEAACQEAAATAAAAAAAAAAAAIAAAAHINAABbQ29udGVudF9UeXBlc10ueG1sUEsFBgAAAAALAAsAnwIAAOAOAAAAAA=="; + base64StringToFileOfTxt(str,"d://1.json"); + } + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/util/MD5Util.java b/adc-da-sys/src/main/java/com/adc/da/ocr/util/MD5Util.java new file mode 100644 index 00000000..349bc0f3 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/util/MD5Util.java @@ -0,0 +1,77 @@ +package com.adc.da.ocr.util; + + +import java.security.MessageDigest; + +/** + * 采用MD5加密解密 + * @author tfq + * @datetime 2011-10-13 + */ +public class MD5Util { + + /*** + * MD5加码 生成32位md5码 + */ + public static String string2MD5(String inStr){ + MessageDigest md5 = null; + try{ + md5 = MessageDigest.getInstance("MD5"); + }catch (Exception e){ + System.out.println(e.toString()); + e.printStackTrace(); + return ""; + } + char[] charArray = inStr.toCharArray(); + byte[] byteArray = new byte[charArray.length]; + + for (int i = 0; i < charArray.length; i++) + byteArray[i] = (byte) charArray[i]; + byte[] md5Bytes = md5.digest(byteArray); + StringBuffer hexValue = new StringBuffer(); + for (int i = 0; i < md5Bytes.length; i++){ + int val = ((int) md5Bytes[i]) & 0xff; + if (val < 16) + hexValue.append("0"); + hexValue.append(Integer.toHexString(val)); + } + return hexValue.toString(); + + } + + /** + * 加密解密算法 执行一次加密,两次解密 + */ + public static String convertMD5(String inStr){ + + char[] a = inStr.toCharArray(); + for (int i = 0; i < a.length; i++){ + a[i] = (char) (a[i] ^ 't'); + } + String s = new String(a); + return s; + + } + + // 测试主函数 + public static void main(String args[]) { + /* String s = new String("tangfuqiang"); + System.out.println("原始:" + s); + System.out.println("MD5后:" + string2MD5(s)); + + System.out.println("加密的:" + convertMD5(s)); + + System.out.println("解密的:" + convertMD5(convertMD5(s)));*/ +// String fileId = "ATT_FILE_07_JLBUTUSFXDRUKTVX5BT5"; +// String key = "dufy20170329java"; +// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH"); +// String time = df.format(new Date()); +// String sign = fileId + time + key; + String str="GVJ3EZKW6NTK6Z5U92QE"+"EC4KKA6ZDTCPAOCRBC5M"; + String key="ecd2c0791b398882310c4edcc1eee42b"; + String entoryStr = string2MD5(str); + + System.out.println(entoryStr); + System.out.println(key); + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/util/OkHttpUtil.java b/adc-da-sys/src/main/java/com/adc/da/ocr/util/OkHttpUtil.java new file mode 100644 index 00000000..f36aac62 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/util/OkHttpUtil.java @@ -0,0 +1,193 @@ +package com.adc.da.ocr.util; + +import okhttp3.*; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.util.Iterator; +import java.util.Map; + +/** + * + * @author David + */ +@Component +public class OkHttpUtil { + private static final Logger logger = LoggerFactory.getLogger(OkHttpUtil.class); + + @Autowired + private OkHttpClient okHttpClient; + /** + * get + * + * @param url 请求的url + * @param queries 请求的参数,在浏览器?后面的数据,没有可以传null + * @return + */ + public String get(String url, Map queries, Map headerParams) { + String responseBody = ""; + StringBuffer sb = new StringBuffer(url); + if (queries != null && queries.keySet().size() > 0) { + boolean firstFlag = true; + Iterator iterator = queries.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + if (firstFlag) { + sb.append("?" + entry.getKey() + "=" + entry.getValue()); + firstFlag = false; + } else { + sb.append("&" + entry.getKey() + "=" + entry.getValue()); + } + } + } + + Request.Builder requestBuilder = new Request.Builder().url(url); + + if(headerParams != null){ + for(Map.Entry entry : headerParams.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + } + + + Request request = requestBuilder.url(sb.toString()) + .build(); + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + int status = response.code(); + if (status == 200) { + return response.body().string(); + } + } catch (Exception e) { + logger.error("okhttp put error >> ex = {}", ExceptionUtils.getStackTrace(e)); + } finally { + if (response != null) { + response.close(); + } + } + return responseBody; + } + /** + * post + * + * @param url 请求的url + * @param params post form 提交的参数 + * @return + */ + public String post(String url, Map params, Map headerParams) { + String responseBody = ""; + FormBody.Builder builder = new FormBody.Builder(); + //添加参数 + if (params != null && params.keySet().size() > 0) { + for (String key : params.keySet()) { + builder.add(key, params.get(key)); + } + } + + Request.Builder requestBuilder = new Request.Builder().url(url); + + for(Map.Entry entry : headerParams.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + + Request request = requestBuilder.post(builder.build()).build(); + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + int status = response.code(); + if (status == 200) { + return response.body().string(); + } + } catch (Exception e) { + logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e)); + } finally { + if (response != null) { + response.close(); + } + } + return responseBody; + } + + /** + * post + * + * @param url 请求的url + * @param params post form 提交的参数 + * @return + */ + public String postForJson(String url, String json, Map headerParams) { + RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json); + String responseBody = ""; + Request.Builder requestBuilder = new Request.Builder().url(url); + for(Map.Entry entry : headerParams.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + Request request = requestBuilder.post(requestBody).build(); + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + int status = response.code(); + if (status == 200) { + return response.body().string(); + } + } catch (Exception e) { + logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e)); + } finally { + if (response != null) { + response.close(); + } + } + return responseBody; + } + + /** + * post 上传文件 + * + * @param url + * @param params + * @param fileType + * @return + */ + public String postFile(String url, Map params, String fileType, Map headerParams) { + String responseBody = ""; + MultipartBody.Builder builder = new MultipartBody.Builder(); + //添加参数 + if (params != null && params.keySet().size() > 0) { + for (String key : params.keySet()) { + if (params.get(key) instanceof File) { + File file = (File) params.get(key); + builder.addFormDataPart(key, file.getName(), RequestBody.create(MediaType.parse(fileType), file)); + continue; + } + builder.addFormDataPart(key, params.get(key).toString()); + } + } + + Request.Builder requestBuilder = new Request.Builder(); + for(Map.Entry entry : headerParams.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + + Request request = requestBuilder.url(url).post(builder.build()).build(); + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + int status = response.code(); + if (status == 200) { + return response.body().string(); + } + } catch (Exception e) { + logger.error("okhttp postFile error >> ex = {}", ExceptionUtils.getStackTrace(e)); + } finally { + if (response != null) { + response.close(); + } + } + return responseBody; + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/util/RsaUtil.java b/adc-da-sys/src/main/java/com/adc/da/ocr/util/RsaUtil.java new file mode 100644 index 00000000..97699f51 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/util/RsaUtil.java @@ -0,0 +1,131 @@ +package com.adc.da.ocr.util; + + +import com.adc.da.util.utils.IOUtils; +import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; +import org.bouncycastle.crypto.params.RSAKeyParameters; +import org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory; +import org.bouncycastle.util.encoders.Base64; +import org.dom4j.DocumentException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import javax.crypto.Cipher; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.X509EncodedKeySpec; + +/** + * @program: OcrDemo + * @description: rsa加密解密 + * @author: duyunbao + * @create: 2019-03-14 19:54 + */ +public class RsaUtil { + + private static final Logger logger = LoggerFactory.getLogger(RsaUtil.class); + + public static final String CHARSET = "UTF-8"; + public static final String RSA_ALGORITHM = "RSA"; + + /// RSA公钥格式转换,.net->java + + public static String RSAPublicKeyDotNet2Java() throws IOException, DocumentException { + /* SAXReader reader = new SAXReader(); + Document document = reader.read(new File("../../../resources/rsa/publicRSAXML.xml")); + Element root = document.getRootElement(); + Element ModulusElem = root.element("Modulus"); + Element ExponentElem = root.element("Exponent"); + BigInteger m = new BigInteger(1, Base64.decode(ModulusElem.elements().get(0).getData().toString())); + BigInteger p = new BigInteger(1, Base64.decode(ExponentElem.elements().get(0).getData().toString()));*/ + BigInteger m = new BigInteger(1, Base64.decode("ncJeLmq4CT6t07x1Ct8LJn8/h6vPaSoySEcirRxAfFS7uoxxaWTyQE3khA4idvwky2ZrLtZjqVCFWRlHADKB5OCbRsVxvQv7kAR3VASJnCUtXH1lm+5zF9vxcw20ISfqEYUwikMDDogbVyLzNjwU/7ZfzzNY5lG+KsZxV8tuOE8=")); + BigInteger p = new BigInteger(1, Base64.decode("AQAB")); + + RSAKeyParameters pub = new RSAKeyParameters(false, m, p); + SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(pub); + byte[] serializedPublicBytes = publicKeyInfo.toASN1Primitive().getEncoded(); + return Base64.toBase64String(serializedPublicBytes); + } + + + /** + } + + * 得到公钥 + * @param publicKey 密钥字符串(经过base64编码) + * @throws Exception + */ + public static RSAPublicKey getPublicKey(String publicKey) throws NoSuchAlgorithmException, InvalidKeySpecException { + // 通过X509编码的Key指令获得公钥对象 + KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM); + X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(Base64.decode(publicKey)); + RSAPublicKey key = (RSAPublicKey) keyFactory.generatePublic(x509KeySpec); + return key; + } + + + + /** + * 公钥加密 + * @param data + * @return + */ + public static String publicEncrypt(String data) { + RSAPublicKey publicKey = null; + try { + publicKey = getPublicKey(RSAPublicKeyDotNet2Java()); + }catch (Exception e){ + logger.error(e.getMessage(),e); + return null; + } + + try { + Cipher cipher = Cipher.getInstance(RSA_ALGORITHM); + cipher.init(Cipher.ENCRYPT_MODE, publicKey); + return Base64.toBase64String(rsaSplitCodec(cipher, Cipher.ENCRYPT_MODE, data.getBytes(CHARSET), + publicKey.getModulus().bitLength())); + } catch (Exception e) { + logger.error("加密字符串[" + data + "]时遇到异常",e); + return null; + } + } + + + + + private static byte[] rsaSplitCodec(Cipher cipher, int opmode, byte[] datas, int keySize) { + int maxBlock = 0; + if (opmode == Cipher.DECRYPT_MODE) { + maxBlock = keySize / 8; + } else { + maxBlock = keySize / 8 - 11; + } + ByteArrayOutputStream out = new ByteArrayOutputStream(); + int offSet = 0; + byte[] buff; + int i = 0; + try { + while (datas.length > offSet) { + if (datas.length - offSet > maxBlock) { + buff = cipher.doFinal(datas, offSet, maxBlock); + } else { + buff = cipher.doFinal(datas, offSet, datas.length - offSet); + } + out.write(buff, 0, buff.length); + i++; + offSet = i * maxBlock; + } + } catch (Exception e) { + logger.error("加解密阀值为[" + maxBlock + "]的数据时发生异常",e); + } + byte[] resultDatas = out.toByteArray(); + IOUtils.closeQuietly(out); + return resultDatas; + } + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/util/UUIDUtils.java b/adc-da-sys/src/main/java/com/adc/da/ocr/util/UUIDUtils.java new file mode 100644 index 00000000..c7965124 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/util/UUIDUtils.java @@ -0,0 +1,40 @@ +package com.adc.da.ocr.util; + + +import com.adc.da.util.utils.RandomUtils; + +import java.util.Random; + +public class UUIDUtils { + + public static String randomUUID10() { + return RandomUtils.randomString(10); + } + + public static String randomUUID20() { + return RandomUtils.randomString(20); + } + + public static String randomUUID(int length) { + return RandomUtils.randomString(length); + } + + public static String getUUIDPath(String uuid){ + StringBuilder builder=new StringBuilder(); + builder.append("/"); + builder.append((uuid.substring(0, 3).hashCode())%100+"").append("/"); + builder.append((uuid.substring(7,10).hashCode())%100+"").append("/"); + builder.append((uuid.substring(11,14).hashCode())%100+"").append("/"); + return builder.toString(); + } + + public static String getAttTable(){ + Random rand = new Random(); + int nextInt = rand.nextInt(10)+1; + StringBuilder builder=new StringBuilder(); + builder.append("ATT_FILE_").append(String.format("%02d", nextInt)); + return builder.toString(); + } + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/person/controller/PersonCollectEOController.java b/adc-da-sys/src/main/java/com/adc/da/person/controller/PersonCollectEOController.java index a2be6996..2e91e397 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/controller/PersonCollectEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/controller/PersonCollectEOController.java @@ -1,23 +1,21 @@ package com.adc.da.person.controller; import com.adc.da.base.web.BaseController; -import com.adc.da.http.PageInfo; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; -import com.adc.da.person.entity.PersonCollectEO; +import com.adc.da.person.entity.TsPersonCollect; import com.adc.da.person.page.PersonCollectEOPage; import com.adc.da.person.service.IPersonCollectEOService; import com.adc.da.util.LoginUserUtil; import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -28,7 +26,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @RestController @RequestMapping("/${restPath}/person/personCollect") @Api(description = "|PersonCollectEO|") -public class PersonCollectEOController extends BaseController { +public class PersonCollectEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(PersonCollectEOController.class); @@ -45,45 +43,10 @@ public class PersonCollectEOController extends BaseController { **/ @ApiOperation(value = "|PersonCollectEO|分页查询") @GetMapping("/page") - public ResponseMessage> page(Integer pageNo, Integer pageSize, String modeType, String collectTitle) throws Exception { - PersonCollectEOPage page = new PersonCollectEOPage(); - if (StringUtils.isNotEmpty(modeType)) { - List collectTypes = new ArrayList<>(); - switch (modeType) { - case "STAND": - collectTypes.add("INLAND_STAND"); - collectTypes.add("FOREIGN_STAND"); - collectTypes.add("BUSINESS_STAND"); - break; - case "LAWS": - collectTypes.add("INLAND_LAWS"); - collectTypes.add("FOREIGN_LAWS"); - break; - case "MSG": - collectTypes.add("INLAND_MSG"); - collectTypes.add("FOREIGN_MSG"); - collectTypes.add("RESOURCE_MSG"); - break; - default:break; - } - page.setCollectTypeList(collectTypes); - } - if (pageNo != null) { - page.setPage(pageNo); - }else{ - page.setPage(1); - } - if (pageSize != null) { - page.setPageSize(pageSize); - }else{ - page.setPageSize(10); - } - if (StringUtils.isNotEmpty(collectTitle)) { - page.setCollectTitle(collectTitle); - } - page.setUserId(LoginUserUtil.getUserId()); - List rows = personCollectEOService.queryByPersonCollectPage(page); - return Result.success(getPageInfo(page.getPager(), rows)); + public ResponseMessage> page(Integer pageNo, Integer pageSize, String collectTitle, String modeType,String userId) throws Exception { + + + return personCollectEOService.queryCollectByWrapper(pageNo, pageSize,collectTitle,modeType,userId); } @@ -91,7 +54,7 @@ public class PersonCollectEOController extends BaseController { @ApiOperation(value = "|PersonCollectEO|查询") @GetMapping("") // @RequiresPermissions("person:personCollect:list") - public ResponseMessage> list(PersonCollectEOPage page) throws Exception { + public ResponseMessage> list(PersonCollectEOPage page) throws Exception { return Result.success(personCollectEOService.queryByList(page)); } @@ -99,39 +62,43 @@ public class PersonCollectEOController extends BaseController { @ApiOperation(value = "|PersonCollectEO|详情") @GetMapping("/{id}") // @RequiresPermissions("person:personCollect:get") - public ResponseMessage find(@PathVariable String id) throws Exception { + public ResponseMessage find(@PathVariable String id) throws Exception { return Result.success(personCollectEOService.getById(id)); } /** * 刘寅楠 - * @param personCollectEO + * 收藏国内标准法规 + * @param tsPersonCollect * @return com.adc.da.person.entity.PersonCollectEO * @throws Exception */ @ApiOperation(value = "|PersonCollectEO|新增") @PostMapping(consumes = APPLICATION_JSON_UTF8_VALUE) // @RequiresPermissions("person:personCollect:create") - public ResponseMessage create(@RequestBody PersonCollectEO personCollectEO) throws Exception { - String userId = LoginUserUtil.getUserId(); - personCollectEO.setId(UUIDUtils.randomUUID20()); - personCollectEO.setUserId(userId); - personCollectEO.setValidFlag(0); - personCollectEO.setCreationTime(new Date()); - personCollectEO.setModifyTime(new Date()); - personCollectEOService.save(personCollectEO); - return Result.success("0","收藏成功,请到'我的收藏'中查看相关信息。",personCollectEO); + public ResponseMessage create(@RequestBody TsPersonCollect tsPersonCollect) throws Exception { + // String userId = LoginUserUtil.getUserId(); + + tsPersonCollect.setId(UUIDUtils.randomUUID20()); + tsPersonCollect.setValidFlag(0); + tsPersonCollect.setCreationTime(new Date()); + tsPersonCollect.setModifyTime(new Date()); + + + personCollectEOService.save(tsPersonCollect); + + return Result.success("0","收藏成功,请到'我的收藏'中查看相关信息。", tsPersonCollect); } @ApiOperation(value = "|PersonCollectEO|修改") - @PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE) + @PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE,value = "/updatePersonCollect") // @RequiresPermissions("person:personCollect:update") - public ResponseMessage update(@RequestBody PersonCollectEO personCollectEO) throws Exception { - personCollectEO.setModifyTime(new Date()); - personCollectEOService.updateById(personCollectEO); - return Result.success(personCollectEO); + public ResponseMessage update(@RequestBody TsPersonCollect tsPersonCollect) throws Exception { + tsPersonCollect.setModifyTime(new Date()); + personCollectEOService.updateById(tsPersonCollect); + return Result.success(tsPersonCollect); } @@ -155,16 +122,23 @@ public class PersonCollectEOController extends BaseController { * @Param [personCollectEO] * @return com.adc.da.util.http.ResponseMessage **/ + + /** + * 通过收藏的id和userId确定修改的数据 + * @param tsPersonCollect + * @return + * @throws Exception + */ @ApiOperation(value = "取消收藏") @PutMapping("/updateByUserId") -// @RequiresPermissions("person:personCollect:updateByUserId") - public ResponseMessage updateByUserId(PersonCollectEO personCollectEO) throws Exception { - personCollectEO.setValidFlag(1); - boolean result = personCollectEOService.updateById(personCollectEO); - if(result){ - return Result.success("0","取消成功",personCollectEO); +// @RequiresPermissions("person:personCollect:updateByUserId") PersonCollectEO + public ResponseMessage updateByUserId(TsPersonCollect tsPersonCollect) throws Exception { + tsPersonCollect.setValidFlag(1); + int result = personCollectEOService.updateByPrimaryKeySelective(tsPersonCollect); + if(result == 1){ + return Result.success("0","取消成功", tsPersonCollect); } else { - return Result.error("0","取消失败",personCollectEO); + return Result.error("0","取消失败", tsPersonCollect); } } diff --git a/adc-da-sys/src/main/java/com/adc/da/person/dao/PersonCollectEODao.java b/adc-da-sys/src/main/java/com/adc/da/person/dao/PersonCollectEODao.java index cd1fe6e9..02f75a9d 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/dao/PersonCollectEODao.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/dao/PersonCollectEODao.java @@ -1,10 +1,12 @@ package com.adc.da.person.dao; import com.adc.da.base.page.BasePage; -import com.adc.da.person.entity.PersonCollectEO; +import com.adc.da.person.entity.StandInfo; +import com.adc.da.person.entity.TsPersonCollect; import com.adc.da.person.page.PersonCollectEOPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; import java.util.List; @@ -16,17 +18,26 @@ import java.util.List; * 日期: 2018-09-03
    * 版权所有:版权归北京卡达克数据技术中心所有。
    */ -public interface PersonCollectEODao extends BaseMapper { +@Repository +public interface PersonCollectEODao extends BaseMapper { - List queryByList(BasePage page); + public List queryByList(BasePage page); - int queryByCount(BasePage var1); + public int queryByCount(BasePage var1); - List queryByPage(BasePage page); + public List queryByPage(BasePage page); - public List queryByPersonCollectPage(PersonCollectEOPage page); + public List queryByPersonCollectPage(PersonCollectEOPage page); - int queryByPersonCollectPageCount(PersonCollectEOPage page); + public int queryByPersonCollectPageCount(PersonCollectEOPage page); - int deleteByIdList(@Param("idList") List idList); + public int deleteByIdList(@Param("idList") List idList); + + public int deleteByResId(@Param("resId") String resId); + + int deleteByResIdList(@Param("idList") List idList); + + int updateByPrimaryKeySelective(TsPersonCollect tsPersonCollect); + + int countPersonCollectByStandInfo(StandInfo standInfo); } diff --git a/adc-da-sys/src/main/java/com/adc/da/person/dao/PersonShareEODao.java b/adc-da-sys/src/main/java/com/adc/da/person/dao/PersonShareEODao.java index 926fa370..478d3a12 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/dao/PersonShareEODao.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/dao/PersonShareEODao.java @@ -26,4 +26,8 @@ public interface PersonShareEODao extends BaseMapper { void deleteByIdList(@Param("idList") List idList); void deleteByIdListForward(@Param("idList") List idList); + + int deleteByResId(@Param("resId") String resId); + + int deleteByResIdList(@Param("idList") List idList); } diff --git a/adc-da-sys/src/main/java/com/adc/da/person/entity/StandInfo.java b/adc-da-sys/src/main/java/com/adc/da/person/entity/StandInfo.java new file mode 100644 index 00000000..db5d229f --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/person/entity/StandInfo.java @@ -0,0 +1,11 @@ +package com.adc.da.person.entity; + +import lombok.Data; + +@Data +public class StandInfo { + + private String userId; + + private String standCode; +} diff --git a/adc-da-sys/src/main/java/com/adc/da/person/entity/PersonCollectEO.java b/adc-da-sys/src/main/java/com/adc/da/person/entity/TsPersonCollect.java similarity index 94% rename from adc-da-sys/src/main/java/com/adc/da/person/entity/PersonCollectEO.java rename to adc-da-sys/src/main/java/com/adc/da/person/entity/TsPersonCollect.java index c7200d51..8a62e5c2 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/entity/PersonCollectEO.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/entity/TsPersonCollect.java @@ -1,6 +1,9 @@ package com.adc.da.person.entity; import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.fasterxml.jackson.annotation.JsonFormat; import java.util.ArrayList; @@ -13,24 +16,32 @@ import java.util.List; * 日期: 2018-09-03
    * 版权所有:版权归北京卡达克数据技术中心所有。
    */ -public class PersonCollectEO extends BaseEntity { - +public class TsPersonCollect extends BaseEntity { + @TableField //@org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date modifyTime; //@org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - + @TableField private Date creationTime; + @TableLogic private Integer validFlag; + @TableField private String collectResId; + @TableField private String collectInfoUri; + @TableField private String collectTitle; + @TableField private String collectType; + @TableField private String userId; + @TableId private String id; //追加字段 + @TableField(exist = false) private List noteList = new ArrayList<>(); @@ -94,7 +105,7 @@ public class PersonCollectEO extends BaseEntity { default: return null; } } - + /** **/ public Date getModifyTime() { return this.modifyTime; diff --git a/adc-da-sys/src/main/java/com/adc/da/person/page/PersonCollectEOPage.java b/adc-da-sys/src/main/java/com/adc/da/person/page/PersonCollectEOPage.java index f2ee78b6..44190dcb 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/page/PersonCollectEOPage.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/page/PersonCollectEOPage.java @@ -25,6 +25,7 @@ public class PersonCollectEOPage extends BasePage { private String validFlag; private String validFlagOperator = "="; private String collectResId; + private List collectResIds; private String collectResIdOperator = "LIKE"; private String collectInfoUri; private String collectInfoUriOperator = "LIKE"; @@ -40,6 +41,14 @@ public class PersonCollectEOPage extends BasePage { private List collectTypeList = new ArrayList<>(); + public List getCollectResIds() { + return collectResIds; + } + + public void setCollectResIds(List collectResIds) { + this.collectResIds = collectResIds; + } + public String getModifyTime() { return this.modifyTime; } diff --git a/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonCollectEOService.java b/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonCollectEOService.java index 37ddc989..a68eefaf 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonCollectEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonCollectEOService.java @@ -1,21 +1,39 @@ package com.adc.da.person.service; -import com.adc.da.person.entity.PersonCollectEO; +import com.adc.da.http.ResponseMessage; +import com.adc.da.person.entity.StandInfo; +import com.adc.da.person.entity.TsPersonCollect; import com.adc.da.person.page.PersonCollectEOPage; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; -public interface IPersonCollectEOService extends IService { +public interface IPersonCollectEOService extends IService { - public List queryByPage(PersonCollectEOPage page); + public List queryByPage(PersonCollectEOPage page); - public List queryByList(PersonCollectEOPage page); + public List queryByList(PersonCollectEOPage page); - public List queryByPersonCollectPage(PersonCollectEOPage page); + public List queryByPersonCollectPage(PersonCollectEOPage page); public String queryCollectByUserAndId(String collectResId); + public Map queryCollectByUserAndIds(List collectResIds); + public int deleteByIdList(List idList); + public int deleteByResId(String resId); + + int updateByPrimaryKeySelective(TsPersonCollect tsPersonCollect) throws Exception; + + public ResponseMessage> queryCollectByWrapper(Integer pageNo, Integer pageSize, String collectTitle,String modeType, String userId); + + /** + * 通过标准号和用户id查询是否收藏此标准 + * @param standInfo + * @return + */ + public int countPersonCollectByStandInfo(StandInfo standInfo); } diff --git a/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonConfEOService.java b/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonConfEOService.java index 3bf183e5..dbb2a53b 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonConfEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonConfEOService.java @@ -16,13 +16,13 @@ public interface IPersonConfEOService extends IService { public PersonConfEO saveBean(PersonConfEO personConfEO); - public PersonConfEO insert1(PersonConfEO personConfEO ); + public PersonConfEO insert1(PersonConfEO personConfEO); public List selectByUserid(String userId); public Map selectPersonConfByUserid(String userId); - public String[] updatePersonConfList(String[] kes,String userId); + public String[] updatePersonConfList(String[] kes, String userId); public List saveConfList(String userId); diff --git a/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonShareEOService.java b/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonShareEOService.java index 53125c08..a68826b2 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonShareEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/service/IPersonShareEOService.java @@ -19,4 +19,6 @@ public interface IPersonShareEOService extends IService { public void deleteByIdListForward(List idList); + public int deleteByResId(String resId); + } diff --git a/adc-da-sys/src/main/java/com/adc/da/person/service/impl/PersonCollectEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/person/service/impl/PersonCollectEOServiceImpl.java index c8c256a4..7b96410a 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/service/impl/PersonCollectEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/service/impl/PersonCollectEOServiceImpl.java @@ -1,20 +1,28 @@ package com.adc.da.person.service.impl; import com.adc.da.base.page.BasePage; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; import com.adc.da.person.dao.PersonCollectEODao; import com.adc.da.person.dao.PersonNoteEODao; -import com.adc.da.person.entity.PersonCollectEO; +import com.adc.da.person.entity.StandInfo; +import com.adc.da.person.entity.TsPersonCollect; import com.adc.da.person.entity.PersonNoteEO; import com.adc.da.person.page.PersonCollectEOPage; import com.adc.da.person.service.IPersonCollectEOService; import com.adc.da.util.LoginUserUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** @@ -27,16 +35,19 @@ import java.util.List; */ @Service("personCollectEOService") @Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) -public class PersonCollectEOServiceImpl extends ServiceImpl implements IPersonCollectEOService { +public class PersonCollectEOServiceImpl extends ServiceImpl implements IPersonCollectEOService { @Autowired private PersonNoteEODao personNoteEODao; + @Autowired + private PersonCollectEODao personCollectEODao; + @Override - public List queryByPage(PersonCollectEOPage page) { + public List queryByPage(PersonCollectEOPage page) { Integer rowCount = this.queryByCount(page); page.getPager().setRowCount(rowCount); return this.baseMapper.queryByPage(page); @@ -47,15 +58,15 @@ public class PersonCollectEOServiceImpl extends ServiceImpl queryByList(PersonCollectEOPage page) { + public List queryByList(PersonCollectEOPage page) { return this.baseMapper.queryByList(page); } - public List queryByPersonCollectPage(PersonCollectEOPage page){ + public List queryByPersonCollectPage(PersonCollectEOPage page){ page.setValidFlag("0"); int ire = this.baseMapper.queryByPersonCollectPageCount(page); page.getPager().setRowCount(ire); - List list = this.baseMapper.queryByPersonCollectPage(page); + List list = this.baseMapper.queryByPersonCollectPage(page); for(int i =0;i getCollects = this.baseMapper.queryByList(page); + List getCollects = this.baseMapper.queryByList(page); String collectId = ""; if(getCollects != null){ if(getCollects.size()>0){ @@ -88,7 +99,69 @@ public class PersonCollectEOServiceImpl extends ServiceImpl queryCollectByUserAndIds(List collectResIds) { + Map resultMap = new TreeMap<>(); + String userId = LoginUserUtil.getUserId(); + PersonCollectEOPage page = new PersonCollectEOPage(); + page.setUserId(userId); + page.setValidFlag("0"); + page.setCollectResIds(collectResIds); + List getCollects = this.baseMapper.queryByList(page); + List distinctList = getCollects.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection( + () -> new TreeSet<>(Comparator.comparing(o -> o.getCollectResId()))), ArrayList::new)); + resultMap = distinctList.stream().collect(Collectors.toMap(TsPersonCollect::getCollectResId, TsPersonCollect::getId)); + return resultMap; + } + public int deleteByIdList(List idList){ return this.baseMapper.deleteByIdList(idList); } + + @Override + public int deleteByResId(String resId) { + return this.baseMapper.deleteByResId(resId); + } + + @Override + public int updateByPrimaryKeySelective(TsPersonCollect tsPersonCollect) throws Exception{ + return personCollectEODao.updateByPrimaryKeySelective(tsPersonCollect); + } + + + @Override + public ResponseMessage> queryCollectByWrapper(Integer pageNo, Integer pageSize, String collectTitle, String modeType,String userId) { + BasePage basePage = new BasePage(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id",userId); + if (collectTitle != null && !collectTitle.equals("")){ + wrapper.like("collect_title",collectTitle); + } + if (StringUtils.isNotBlank(modeType)){ + List ids = new ArrayList<>(Arrays.asList(modeType.split(","))); + wrapper.in("collect_type",ids); + } + + if (pageNo != null) { + basePage.setPage(pageNo); + }else{ + basePage.setPage(1); + } + if (pageSize != null) { + basePage.setPageSize(pageSize); + }else{ + basePage.setPageSize(10); + } + + + IPage page = this.page(new Page<>(basePage.getPage(), basePage.getPageSize()), wrapper); + return Result.success(page); + } + + @Override + public int countPersonCollectByStandInfo(StandInfo standInfo) { + return personCollectEODao.countPersonCollectByStandInfo(standInfo); + } + } diff --git a/adc-da-sys/src/main/java/com/adc/da/person/service/impl/PersonShareEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/person/service/impl/PersonShareEOServiceImpl.java index 93008101..5d079b95 100644 --- a/adc-da-sys/src/main/java/com/adc/da/person/service/impl/PersonShareEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/person/service/impl/PersonShareEOServiceImpl.java @@ -48,4 +48,9 @@ public class PersonShareEOServiceImpl extends ServiceImpl syncFotonUser()throws Exception{ + String appuser = "app_slrs"; + String appkey = "Fxi5LHbI5yGbQQDpVp86GcCdXeC5Bjfe"; + AuthUtils util = new AuthUtils(appuser, appkey, null); + + List json=new ArrayList<>(); + byte[] cookie = null; + do { + Map params = new HashMap(); + params.put("cookie", Base64.encodeBase64String(cookie)); + params.put("timestamp", "20141125065609Z"); + + // 用户参数 + params.put("filter", "(userid=*)"); + params.put("basedn", "ou=People,o=foton.com.cn,o=isp"); + System.out.println("RequestBody:" + params.toString()); + // 用户测试 + String rs = util.getResponseFromServer("http://idmsync.foton.com.cn/rest/users/getUserList", params); + log.debug(rs); + JSONObject responseStr = JSON.parseObject(rs); + if(responseStr.containsKey("status") && responseStr.getBoolean("status")){ + json.add(rs); + } + if (responseStr.containsKey("cookie")) { + try { + JSONArray entries = responseStr.getJSONArray("cookie"); + if(entries==null){ + break; + } + cookie = new byte[entries.size()]; + for (int i = 0; i < entries.size(); i++) { + cookie[i] = (byte) entries.getByte(i); + } + } catch (Exception e) { + log.error(e.getMessage(),e); + if (e.getMessage().contains("is not a JSONArray")) { + cookie = null; + } + } + } + + } while (cookie != null); + return json; + } + + + + public List syncFotonOrg()throws Exception{ + String appuser = "app_slrs"; + String appkey = "Fxi5LHbI5yGbQQDpVp86GcCdXeC5Bjfe"; + AuthUtils util = new AuthUtils(appuser, appkey, null); + + byte[] cookie = null; + List json=new ArrayList<>(); + do { + Map params = new HashMap(); + params.put("cookie", Base64.encodeBase64String(cookie)); + params.put("timestamp", "20141125065609Z"); + + // 组织参数 + params.put("filter", "(orgNumber=*)"); + params.put("basedn", "ou=Organizations,o=foton.com.cn,o=isp"); + // 组织测试 + String rs = util.getResponseFromServer("http://idmsync.foton.com.cn/rest/orgs/getOrgList", params); + log.info(rs); + JSONObject responseStr = JSONObject.parseObject(rs); + if(responseStr.containsKey("status") && responseStr.getBoolean("status")){ + json.add(rs); + } + if (responseStr.containsKey("cookie")) { + try { + JSONArray entries = responseStr.getJSONArray("cookie"); + if(entries==null){ + break; + } + cookie = new byte[entries.size()]; + for (int i = 0; i < entries.size(); i++) { + cookie[i] = (byte) entries.getByte(i); + } + } catch (Exception e) { + log.error(e.getMessage(),e); + if (e.getMessage().contains("is not a JSONArray")) { + cookie = null; + } + } + } + } while (cookie != null); + return json; + } + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sync/util/AuthUtils.java b/adc-da-sys/src/main/java/com/adc/da/sync/util/AuthUtils.java new file mode 100644 index 00000000..3a085b1f --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sync/util/AuthUtils.java @@ -0,0 +1,78 @@ +package com.adc.da.sync.util; + +import net.sf.json.JSONObject; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.client.utils.HttpClientUtils; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.ContentType; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Map; + +public class AuthUtils { + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss'Z'"); + + private final String appuser; + private final String appkey; + private final String appinfo; + + public AuthUtils(String appuser, String appkey, String appinfo) { + this.appuser = appuser; + this.appkey = appkey; + this.appinfo = appinfo; + } + + public String getResponseFromServer(String url, Map params) throws Exception { + HttpPost httpPost = new HttpPost(url); + createSignHeader(httpPost, params); + JSONObject object = JSONObject.fromObject(params); + httpPost.setEntity(new ByteArrayEntity(object.toString().getBytes(), ContentType.APPLICATION_JSON)); + return execute(httpPost); + } + + private String execute(HttpUriRequest request) throws Exception { + CloseableHttpClient client = null; + CloseableHttpResponse resp = null; + try { + client = HttpClientBuilder.create().build(); + resp = client.execute(request); + return EntityUtils.toString(resp.getEntity()); + } finally { + HttpClientUtils.closeQuietly(resp); + HttpClientUtils.closeQuietly(client); + } + } + + private void createSignHeader(HttpUriRequest request, Map params) throws Exception { + request.addHeader("appuser", appuser); + + String randomcode = RandomStringUtils.random(10, true, true); + request.addHeader("randomcode", randomcode); + + Calendar now = Calendar.getInstance(); + String timestamp = sdf.format(now.getTime()); + request.addHeader("timestamp", timestamp); + + String data = StringUtils.join(appuser, randomcode, timestamp); + String encodekey = DigestUtils.sha256Hex(StringUtils.join(data, "{", appkey, "}")); + request.addHeader("encodekey", encodekey); + + JSONObject object = JSONObject.fromObject(params); + String paramData = StringUtils.join(object.toString(), "&", appkey); + String signature = DigestUtils.md5Hex(paramData); + request.addHeader("sign", signature); + + request.addHeader("appinfo", appinfo); + request.addHeader("Content-Type", "application/json"); + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/common/BasePage.java b/adc-da-sys/src/main/java/com/adc/da/sys/common/BasePage.java new file mode 100644 index 00000000..739ef453 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/common/BasePage.java @@ -0,0 +1,93 @@ +package com.adc.da.sys.common; + +import com.adc.da.base.page.Pager; + +public class BasePage extends com.adc.da.base.page.BasePage { + private Integer page = 1; + private Integer pageSize = 10; + private Integer startIndex; + private Integer endIndex; + private String orderBy; + private String order; + private String q; + private Pager pager = new Pager(); + + public BasePage() { + } + + public Pager getPager() { + this.pager.setPageId(this.getPage()); + this.pager.setPageSize(this.getPageSize()); + String orderField = ""; + if (this.orderBy != null && this.orderBy.trim().length() > 0) { + orderField = this.orderBy; + } + + if (orderField.trim().length() > 0 && this.order != null && this.order.trim().length() > 0) { + orderField = orderField + " " + this.order; + } + + this.pager.setOrderField(orderField); + return this.pager; + } + + public void setPager(Pager pager) { + this.pager = pager; + } + + public Integer getPage() { + return this.page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public Integer getPageSize() { + return this.pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + public String getOrderBy() { + return this.orderBy; + } + + public void setOrderBy(String orderBy) { + this.orderBy = orderBy; + } + + public String getOrder() { + return this.order; + } + + public void setOrder(String order) { + this.order = order; + } + + public String getQ() { + return this.q; + } + + public void setQ(String q) { + this.q = q; + } + + public Integer getStartIndex() { + return this.startIndex; + } + + public void setStartIndex(Integer startIndex) { + this.startIndex = (this.page - 1) * this.pageSize + 1; + } + + public Integer getEndIndex() { + return this.endIndex; + } + + public void setEndIndex(Integer endIndex) { + this.endIndex = this.page * this.pageSize; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/common/EmailUtils.java b/adc-da-sys/src/main/java/com/adc/da/sys/common/EmailUtils.java new file mode 100644 index 00000000..cbc37150 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/common/EmailUtils.java @@ -0,0 +1,296 @@ +package com.adc.da.sys.common; + +import com.adc.da.exception.ServiceException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.MailException; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import java.io.File; +import java.io.UnsupportedEncodingException; + +@Component +public class EmailUtils { + + private final Logger logger = LoggerFactory.getLogger(getClass()); + /** + * The Mail sender. + */ + @Autowired + JavaMailSender mailSender; + + @Value("${mail.valid}") + private boolean mailValid; + + @Value("${spring.mail.username}") + private String userName; + + /** + * Send simple email. + * + * @param deliver the deliver + * @param receiver the receiver + * @param subject the subject + * @param content the content + * @throws ServiceException the service exception + */ + public void sendSimpleEmail(String deliver,String personName, String receiver, String subject, String content) throws ServiceException { + if(mailValid){ + String[] receivers = {receiver}; + sendSimpleEmail(deliver,personName, receivers, null, subject, content); + } + } + + + + /** + * Send simple email. + * + * @param deliver the deliver + * @param receiver the receiver + * @param carbonCopy the carbon copy + * @param subject the subject + * @param content the content + * @throws ServiceException the service exception + */ + public void sendSimpleEmail(String deliver,String personName, String[] receiver, String[] carbonCopy, String subject, String content) throws ServiceException { + + long startTimestamp = System.currentTimeMillis(); + logger.info("Start send mail ... "); + + try { + SimpleMailMessage message = new SimpleMailMessage(); + personName=javax.mail.internet.MimeUtility.encodeText(personName); + message.setFrom(personName + "<"+deliver+">"); + message.setTo(receiver); + if(carbonCopy!=null && carbonCopy.length>0){ + message.setCc(carbonCopy); + } + message.setSubject(subject); + message.setText(content); + mailSender.send(message); + logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp); + } catch (MailException e) { + logger.error("Send mail failed, error message is : {} \n", e.getMessage()); + logger.error(e.getMessage(),e); + throw new ServiceException(e.getMessage()); + } catch (UnsupportedEncodingException e) { + logger.error("Send mail failed, error message is : {} \n", e.getMessage()); + logger.error(e.getMessage(),e); + throw new ServiceException(e.getMessage()); + } + } + + + + /** + * Send html email. + * + * @param deliver the deliver + * @param receiver the receiver + * @param subject the subject + * @param content the content + * @throws ServiceException the service exception + */ + public void sendHtmlEmail(String deliver, String receiver, String subject, String content) throws ServiceException { + String[] receivers = {receiver}; + sendHtmlEmail(deliver, receivers, null, subject, content, true); + } + + /** + * Send html email. + * + * @param deliver the deliver + * @param receiver the receiver + * @param carbonCopy the carbon copy + * @param subject the subject + * @param content the content + * @param isHtml the is html + * @throws ServiceException the service exception + */ + public void sendHtmlEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml) throws ServiceException { + long startTimestamp = System.currentTimeMillis(); + logger.info("Start send email ..."); + + try { + MimeMessage message = mailSender.createMimeMessage(); + MimeMessageHelper messageHelper = new MimeMessageHelper(message); + + messageHelper.setFrom(deliver); + messageHelper.setTo(receiver); + messageHelper.setCc(carbonCopy); + messageHelper.setSubject(subject); + messageHelper.setText(content, isHtml); + + mailSender.send(message); + logger.info("Send email success, cost {} million seconds", System.currentTimeMillis() - startTimestamp); + } catch (MessagingException e) { + logger.error("Send email failed, error message is {} \n", e.getMessage()); + logger.error(e.getMessage(),e); + throw new ServiceException(e.getMessage()); + } + } + + /** + * Send attachment file email. + * + * @param deliver the deliver + * @param receiver the receiver + * @param subject the subject + * @param content the content + * @param fileName the file name + * @param file the file + * @throws ServiceException the service exception + */ + public void sendAttachmentFileEmail(String deliver, String receiver, String subject, String content, String fileName, File file) throws ServiceException { + String[] receivers = {receiver}; + sendAttachmentFileEmail(deliver, receivers, null, subject, content, true, fileName, file); + } + + /** + * Send attachment file mail. + * + * @param deliver the deliver + * @param receiver the receiver + * @param carbonCopy the carbon copy + * @param subject the subject + * @param content the content + * @param isHtml the is html + * @param fileName the file name + * @param file the file + * @throws ServiceException the service exception + */ + public void sendAttachmentFileEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml, String fileName, File file) throws ServiceException { + long startTimestamp = System.currentTimeMillis(); + logger.info("Start send mail ..."); + + try { + MimeMessage message = mailSender.createMimeMessage(); + MimeMessageHelper messageHelper = new MimeMessageHelper(message, true); + + messageHelper.setFrom(deliver); + messageHelper.setTo(receiver); + messageHelper.setCc(carbonCopy); + messageHelper.setSubject(subject); + messageHelper.setText(content, isHtml); + messageHelper.addAttachment(fileName, file); + + mailSender.send(message); + logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp); + } catch (MessagingException e) { + logger.error("Send mail failed, error message is {}\n", e.getMessage()); + logger.error(e.getMessage(),e); + throw new ServiceException(e.getMessage()); + } + } + + /* *//** + * Send template email. + * + * @param deliver the deliver + * @param receiver the receiver + * @param subject the subject + * @param template the template + * @param context the context + * @throws ServiceException the service exception + *//* + public void sendTemplateEmail(String deliver, String receiver, String subject, String template, Context context) throws ServiceException { + String[] receivers = {receiver}; + sendTemplateEmail(deliver, receivers, null, subject, template, context); + }*/ + + /* *//** + * Send template mail. + * @throws ServiceException the service exception + *//* + public void sendTemplateEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String template, Context context) throws ServiceException { + long startTimestamp = System.currentTimeMillis(); + logger.info("Start send mail ..."); + + try { + MimeMessage message = mailSender.createMimeMessage(); + MimeMessageHelper messageHelper = new MimeMessageHelper(message); + + String content = templateEngine.process(template, context); + messageHelper.setFrom(deliver); + messageHelper.setTo(receiver); + messageHelper.setCc(carbonCopy); + messageHelper.setSubject(subject); + messageHelper.setText(content, true); + + mailSender.send(message); + logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp); + } catch (MessagingException e) { + logger.error("Send mail failed, error message is {} \n", e.getMessage()); + e.printStackTrace(); + throw new ServiceException(e.getMessage()); + } + }*/ + + @Async + public void sendMsg(String[] tos,String msg){ + //创建简单邮件消息 + SimpleMailMessage message = new SimpleMailMessage(); + //谁发的 + message.setFrom(userName); + //谁要接收 + message.setTo(tos); + //邮件标题 + message.setSubject(msg); + //邮件内容 + message.setText(msg); + try { + mailSender.send(message); + } catch (MailException e) { + e.printStackTrace(); + } + } + + @Async + public void sendMsgFeign(String[] tos,String title, String msg){ + //创建简单邮件消息 + SimpleMailMessage message = new SimpleMailMessage(); + //谁发的 + message.setFrom(userName); + //谁要接收 + message.setTo(tos); + //邮件标题 + message.setSubject(title); + //邮件内容 + message.setText(msg); + try { + mailSender.send(message); + } catch (MailException e) { + e.printStackTrace(); + } + } + + @Async + public void sendMsgWithCC(String[] tos,String[] cc,String msg){ + //创建简单邮件消息 + SimpleMailMessage message = new SimpleMailMessage(); + //谁发的 + message.setFrom(userName); + //谁要接收 + message.setTo(tos); + //抄送 + message.setCc(cc); + //邮件标题 + message.setSubject(msg); + //邮件内容 + message.setText(msg); + try { + mailSender.send(message); + } catch (MailException e) { + e.printStackTrace(); + } + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/common/ReadExcelName.java b/adc-da-sys/src/main/java/com/adc/da/sys/common/ReadExcelName.java new file mode 100644 index 00000000..9507d500 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/common/ReadExcelName.java @@ -0,0 +1,37 @@ +package com.adc.da.sys.common; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; + +public class ReadExcelName { + + private static final Logger logger = LoggerFactory.getLogger(ReadExcelName.class); + /** + * + * @Title: encodeFileName + * @Description: 导出文件转换文件名称编码 + * @param @param fileNames + * @param @param request + * @param @return 设定文件 + * @return String 返回类型 + * @throws + */ + public static String encodeFileName(String fileNames , HttpServletRequest request) { + String codedFilename = null; + try { + String agent = request.getHeader("USER-AGENT"); + if (null != agent && -1 != agent.indexOf("MSIE") || null != agent + && -1 != agent.indexOf("Trident") || null != agent && -1 != agent.indexOf("Edge")) {// ie浏览器及Edge浏览器 + String name = java.net.URLEncoder.encode(fileNames, "UTF-8"); + codedFilename = name; + } else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,Chrome等浏览器 + codedFilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1"); + } + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + return codedFilename ; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/common/SelectionResult.java b/adc-da-sys/src/main/java/com/adc/da/sys/common/SelectionResult.java new file mode 100644 index 00000000..d80db0b5 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/common/SelectionResult.java @@ -0,0 +1,39 @@ +package com.adc.da.sys.common; + +/** + * @Description: 用于返回下拉框格式数据 + * @Author: super_liu + * date: 2020/9/3 10:05 + */ +public class SelectionResult { + + private String label; + + private String value; + + private String sarType; + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getSarType() { + return sarType; + } + + public void setSarType(String sarType) { + this.sarType = sarType; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/CollectEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/CollectEnum.java new file mode 100644 index 00000000..70eb7455 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/CollectEnum.java @@ -0,0 +1,29 @@ +package com.adc.da.sys.constant; + +public enum CollectEnum { + + INLAND_MSG("INLAND_MSG","国内动态"), + FOREIGN_MSG("FOREIGN_MSG","国外动态"), + INLAND_STAND("INLAND_STAND","国内标准库"), + INLAND_LAWS("INLAND_LAWS","国内法规库"), + FOREIGN_STAND("FOREIGN_STAND","国外标准库"), + FOREIGN_LAWS("FOREIGN_LAWS","国外法规库"), + BUSINESS_STAND("BUSINESS_STAND","企业标准库"); + + private String value; + private String lable; + private CollectEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/DeleteFlagEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/DeleteFlagEnum.java new file mode 100644 index 00000000..26cf16a7 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/DeleteFlagEnum.java @@ -0,0 +1,26 @@ +package com.adc.da.sys.constant; + +/** + * Created by Administrator on 2018/11/8 15:47 + */ +public enum DeleteFlagEnum { + + NORMAL(0, "正常"), + DELETE(1, "已删除"); + + private int value; + private String label; + + private DeleteFlagEnum(int value, String label) { + this.value = value; + this.label = label; + } + + public int getValue() { + return this.value; + } + + public String getLabel() { + return this.label; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/FactoryTypeEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/FactoryTypeEnum.java new file mode 100644 index 00000000..ae9d8577 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/FactoryTypeEnum.java @@ -0,0 +1,28 @@ +package com.adc.da.sys.constant; + +/** + * 工厂/公司类型区分 + */ +public enum FactoryTypeEnum { + DLFAC("动力基地","DLFAC"), + ZCFAC("整车基地","ZCFAC"), + OTFAC("其他","OTFAC"); + + + private String lable; + private String value; + + private FactoryTypeEnum(String lable, String value) { + this.lable = lable; + this.value = value; + } + + public String getLable() { + return lable; + } + + public String getValue() { + return value; + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/GenderEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/GenderEnum.java new file mode 100644 index 00000000..6aac4aec --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/GenderEnum.java @@ -0,0 +1,22 @@ +package com.adc.da.sys.constant; + +public enum GenderEnum { + + MAN(0,"男"),WOMAN(1,"女"); + + private int value; + private String lable; + private GenderEnum(int value, String lable) { + this.value = value; + this.lable = lable; + } + public int getValue() { + return value; + } + public String getLable() { + return lable; + } + + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/OrgTypeEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/OrgTypeEnum.java new file mode 100644 index 00000000..e04afaa7 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/OrgTypeEnum.java @@ -0,0 +1,24 @@ +package com.adc.da.sys.constant; + +public enum OrgTypeEnum { + + ROOM("室","ROOM"), + FAMILY("科","FAMILY"), + DEPART("部门","DEPART"); + + private String lable; + private String value; + + private OrgTypeEnum(String lable, String value) { + this.lable = lable; + this.value = value; + } + + public String getLable() { + return lable; + } + + public String getValue() { + return value; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/PersonModelEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/PersonModelEnum.java index 1e2fdc7a..287601de 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/constant/PersonModelEnum.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/PersonModelEnum.java @@ -14,7 +14,7 @@ public enum PersonModelEnum { private String lable; private String path; - private PersonModelEnum(String value, String lable, String path) { + private PersonModelEnum(String value, String lable,String path) { this.value = value; this.lable = lable; this.path = path; diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/ResourceTypeEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/ResourceTypeEnum.java new file mode 100644 index 00000000..0abafdd9 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/ResourceTypeEnum.java @@ -0,0 +1,30 @@ +package com.adc.da.sys.constant; + +public enum ResourceTypeEnum { + + INLAND_MSG("INLAND_MSG","国内动态"), + FOREIGN_MSG("FOREIGN_MSG","国外动态"), + INLAND_STAND("INLAND_STAND","国内标准库"), + INLAND_LAWS("INLAND_LAWS","国内法规库"), + FOREIGN_STAND("FOREIGN_STAND","国外标准库"), + FOREIGN_LAWS("FOREIGN_LAWS","国外法规库"), + BUSINESS_STAND("BUSINESS_STAND","企业标准库"); + + + private String value; + private String lable; + private ResourceTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + + + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/RoleEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/RoleEnum.java new file mode 100644 index 00000000..dd934e71 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/RoleEnum.java @@ -0,0 +1,21 @@ +package com.adc.da.sys.constant; + +/** + * Created by Administrator on 2018/11/8 15:47 + */ +public enum RoleEnum { + LOCAL_USER("LOCAL","广汽研究院用户"),OTHER_USER("OTHER","非广汽研究院用户"),CONADMIN("CONADMIN","配置管理员"),; + + private String value; + private String lable; + private RoleEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/UserDisableFlagEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/UserDisableFlagEnum.java new file mode 100644 index 00000000..fea1633e --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/UserDisableFlagEnum.java @@ -0,0 +1,27 @@ +package com.adc.da.sys.constant; + +/** + * Created by Administrator on 2018/11/5 16:49 + * 用户状态:启用,禁用 + */ +public enum UserDisableFlagEnum { + DISABLE_FLAG_TRUE("0", "启用"), DISABLE_FLAG_FALSE("1", "禁用"); + + private String value; + private String lable; + + UserDisableFlagEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + + public String getValue() { + return value; + } + + + public String getLable() { + return lable; + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/ValidFlagEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/ValidFlagEnum.java new file mode 100644 index 00000000..4a884036 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/ValidFlagEnum.java @@ -0,0 +1,22 @@ +package com.adc.da.sys.constant; + +public enum ValidFlagEnum { + VALID_TRUE(0, "有效"), VALID_FALSE(1, "无效"); + + private int value; + private String lable; + + private ValidFlagEnum(int value, String lable) { + this.value = value; + this.lable = lable; + } + + public int getValue() { + return value; + } + + public String getLable() { + return lable; + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/ValueStateEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/ValueStateEnum.java new file mode 100644 index 00000000..43ee35a4 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/ValueStateEnum.java @@ -0,0 +1,28 @@ +package com.adc.da.sys.constant; + +public enum ValueStateEnum { + + VALUE_TRUE(0,"TRUE"),VALUE_FALSE(1,"FALSE"); + + private int value; + private String lable; + + + private ValueStateEnum(int value, String lable) { + this.value = value; + this.lable = lable; + } + + + public int getValue() { + return value; + } + + + public String getLable() { + return lable; + } + + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/WarnTimeEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/WarnTimeEnum.java new file mode 100644 index 00000000..2b0759b7 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/WarnTimeEnum.java @@ -0,0 +1,32 @@ +package com.adc.da.sys.constant; +/*** + * 预警时间枚举 + * @MethodName: + * @author: zhangyanduan + * @param: + * @return: + * date: 2018/9/17 17:26 + */ +public enum WarnTimeEnum { + THREEMONTH("THREEMONTH","3个月"), + SIXMONTH("SIXMONTH","6个月"), + ONEYEAR("SIXMONTH","1年"), + TWOYEAR("TWOYEAR","2年"); + + private String label; + private String value; + + private WarnTimeEnum(String value, String label) { + this.value = value; + this.label = label; + } + public String getValue() { + return value; + } + + public String getLabel() { + return label; + } + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/DicEORestController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DicEORestController.java new file mode 100644 index 00000000..10418330 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DicEORestController.java @@ -0,0 +1,140 @@ +package com.adc.da.sys.controller; + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.entity.DictionaryEO; +import com.adc.da.sys.page.DictionaryEOPage; +import com.adc.da.sys.service.IDicEOService; +import com.adc.da.sys.service.IDicTypeEOService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * + */ +@RestController +@RequestMapping("/${restPath}/sys/dictionary") +@Api(tags = "数据字典管理") +public class DicEORestController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DictionaryEO.class); + + @Autowired + private IDicEOService dicEOService; + + @ApiOperation(value = "|DictionaryEO|分页查询") + @GetMapping("/page") +// @RequiresPermissions("lawssBase:dictionary:page") + public ResponseMessage> page(DictionaryEOPage page) throws Exception { + page.setDictionaryCodeOperator("like"); + page.setDictionaryNameOperator("like"); + if(org.apache.commons.lang3.StringUtils.isNotBlank(page.getPaixu()) && org.apache.commons.lang3.StringUtils.isNotBlank(page.getShunxu())){ + String sql = page.getPaixu()+" "+page.getShunxu(); + page.setSql(sql); + }else{ + String sql = "order_num,u0.id"; + page.setSql(sql); + } + List rows = dicEOService.queryAllDicByPage(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|DictionaryEO|查询") + @GetMapping("/queryByList") +// @RequiresPermissions("lawssBase:dictionary:list") + public ResponseMessage> list(DictionaryEOPage page) throws Exception { + return Result.success(dicEOService.queryByList(page)); + } + + @ApiOperation(value = "|DictionaryEO|详情") + @GetMapping("/{id}") +// @RequiresPermissions("lawssBase:dictionary:get") + public ResponseMessage find(@PathVariable String id) throws Exception { + return Result.success(dicEOService.getById(id)); + } + + @ApiOperation(value = "|DictionaryEO|新增") + @PostMapping("/addDictionary") +// @RequiresPermissions("lawssBase:dictionary:save") + public ResponseMessage addDictionary(@RequestBody DictionaryEO dictionaryEO) throws Exception { + String resultMsg = dicEOService.createDictionary(dictionaryEO); + if ("success".equals(resultMsg)) { + return Result.success("0","新增成功",dictionaryEO); + } else { + return Result.error("新增失败," + resultMsg); + } + } + + @ApiOperation(value = "|DictionaryEO|修改") + @PutMapping("/updateDictionary") +// @RequiresPermissions("lawssBase:dictionary:update") + public ResponseMessage updateDictionary(@RequestBody DictionaryEO dictionaryEO) throws Exception { + String resultMsg = dicEOService.updateDictionary(dictionaryEO); + if ("success".equals(resultMsg)) { + return Result.success("0","修改成功",dictionaryEO); + } else { + return Result.error("修改失败," + resultMsg); + } + } + + @ApiOperation(value = "|DictionaryEO|删除") + @PutMapping("/deleteByIds") +// @RequiresPermissions("lawssBase:dictionary:delete") + public ResponseMessage deleteByIds(String id) throws Exception { + int countRes = dicEOService.queryUseByCount(id); + if (countRes > 0) { + return Result.error("0","有引用,无法删除",null); + } else { + dicEOService.deleteDicAndType(id); + return Result.success("0","删除成功",null); + } + } + + @ApiOperation(value = "|DictionaryEO|删除字典和相关明细") + @DeleteMapping("/deleteDicAndType/{id}") +// @RequiresPermissions("sys:dic:delete") + public ResponseMessage deleteDicAndType(@NotNull @PathVariable(value = "id") String id) throws Exception { + dicEOService.deleteDicAndType(id); + return Result.success(); + } + + /* + * 数据字典下拉框接口(通用) + * @MethodName:getByDicCode + * @author: DuYunbao + * @date: 2018/5/3 10:36 + */ + @ApiOperation(value = "数据字典下拉框接口") + @GetMapping("/dicCode/{dicCode}") +// @RequiresPermissions("sys:dic:getByDicCode") + public ResponseMessage getByDicCode(@NotNull @PathVariable("dicCode") String dicCode) throws Exception { + DictionaryEO dictionaryVO = dicEOService.getDicEOAndTypeEoByDicCode(dicCode); + return Result.success(dictionaryVO); + } + + @ApiOperation(value = "以下拉框格式查询所有类别") + @GetMapping("/getDictionarySelList") +// @RequiresPermissions("sys:dic:getByDicCode") + public ResponseMessage> getDictionarySelList(String id) { + List getList = dicEOService.getDictionarySelList(id); + return Result.success(getList); + } + + @ApiOperation(value = "以下拉框格式查询所有类别Code") + @GetMapping("/getDictionaryCodeSelList") +// @RequiresPermissions("sys:dic:getByDicCode") + public ResponseMessage> getDictionaryCodeSelList(String id) { + List getList = dicEOService.getDictionaryCodeSelList(id); + return Result.success(getList); + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/DicTypeEORestController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DicTypeEORestController.java new file mode 100644 index 00000000..c5644193 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DicTypeEORestController.java @@ -0,0 +1,392 @@ +package com.adc.da.sys.controller; + +import com.adc.da.base.page.Pager; +import com.adc.da.base.web.BaseController; +import com.adc.da.http.PageInfo; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.page.DicTypeEOPage; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.sys.vo.DicTypeVO; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotNull; +import java.util.*; + +import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; + +@RestController +@RequestMapping("/${restPath}/sys/dictype") +@Api(tags = "字典类型明细管理") +public class DicTypeEORestController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(DicTypeEO.class); + @Autowired + private IDicTypeEOService dicTypeEOService; + + List dicTypeEOTypeNameAndCode = new ArrayList<>(); + + /** + * @return com.adc.da.util.http.ResponseMessage + * @Author liwenxuan + * @Description 新增数据字典,必填字段:字典类型编码、字典类型名称 + * @Date Administrator 2018/9/17 + * @Param [dicTypeVO] + **/ + @ApiOperation(value = "|DicTypeEO|新增") + @PostMapping("/create") +// @RequiresPermissions("sys:dicType:create") + public ResponseMessage create(@RequestBody DicTypeEO dicTypeVO) throws Exception { + + //通过传入的code获取对象(此时id为空,sql做了判断) +// List dicTypeEOList = dicTypeEOService.getDicTypeEOByDicTypeCode(dicTypeVO.getDicId(),dicTypeVO.getId(),dicTypeVO.getDicTypeCode(),dicTypeVO.getParentId()); + //通过传入的name和数据字典id获取对象 + dicTypeVO.setId(null); + List dicTypeEOS = dicTypeEOService.getTypeIdByDicIdAndTypeName(dicTypeVO.getDicId(), dicTypeVO.getId(), dicTypeVO.getDicTypeName(), dicTypeVO.getParentId()); + if (dicTypeEOS != null && !dicTypeEOS.isEmpty()) { + return Result.error("选项已存在"); + } + //前台需要返回message和true,底层封装的返回方法只有这个返回值能用(返回的对象t:1前台不需要) + Integer dicTypeEO = dicTypeEOService.saveDictype(dicTypeVO); + if (dicTypeEO > 0) { + return Result.success("", "新增成功", 1); + } + return Result.error("新增失败"); + } + + /** + * @return com.adc.da.util.http.ResponseMessage + * @Author liwenxuan + * @Description 企业标准大类 + * @Date Administrator 2018/10/9 + * @Param [dicTypeVO] + **/ + @ApiOperation(value = "|DicTypeEO|企标大类新增") + @PostMapping("/createEnterpriseStandard") +// @RequiresPermissions("sys:dicType:createEnterpriseStandard") + public ResponseMessage createEnterpriseStandard(@RequestBody DicTypeEO dicTypeVO) throws Exception { + dicTypeVO.setId(UUIDUtils.randomUUID20()); +// liwenxuan:用来企业大类判断新增是否重复 有parentId代表查询里面的数据 (企业大类分页查找只显示根节点,编辑每条数据里面是他对应的孩子节点,是dicTypeEOService.getDicTypeEOTypeNameAndCode1方法) + if (dicTypeVO.getParentId() != null) { + dicTypeEOTypeNameAndCode = dicTypeEOService.getDicTypeEOTypeNameAndCode(dicTypeVO.getId(), dicTypeVO.getDicTypeName(), dicTypeVO.getDicTypeCode(), dicTypeVO.getParentId()); + } else { + dicTypeEOTypeNameAndCode = dicTypeEOService.getDicTypeEOTypeNameAndCode1(dicTypeVO.getId(), dicTypeVO.getDicTypeName(), dicTypeVO.getDicTypeCode(), dicTypeVO.getParentId()); + } + if (dicTypeEOTypeNameAndCode.size() != 0) { + for (DicTypeEO dicTypeEO : dicTypeEOTypeNameAndCode) { + if (dicTypeEO.getDicTypeName().equals(dicTypeVO.getDicTypeName())) { + return Result.error("选项已存在"); + } + } + } + Integer dicTypeEO = dicTypeEOService.saveDictype(dicTypeVO); + if (dicTypeEO > 0) { + return Result.success("", "新增成功", 1); + } + + return Result.error("新增失败"); + } + + + /** + * @return com.adc.da.util.http.ResponseMessage> + * @Author liwenxuan + * @Description 分页查询(根据code也可以进行模糊查找) + * 1.供所有的数据字典参照表使用 + * 2.供国家地区的编辑和查看的回显使用(需要传入id作为parentId进行查找国家地区下面的孩子节点) + * @Date Administrator 2018/9/17 + * @Param [pageNo, pageSize, dicId, dicTypeName, dicTypeCode] + **/ + @ApiOperation(value = "|DicTypeEO|分页列表") + @GetMapping("/page") + //@RequiresPermissions("sys:dicType:pageListByDicId") + public ResponseMessage> pageListByDicId(DicTypeEOPage page) throws Exception { + page.setPager(new Pager()); + page.setValidFlag("0"); + page.setOrderBy("show_index,modify_time desc"); + List rows = dicTypeEOService.queryByPage(page); + /*企标细类加入分类代号*/ + if("FGFBTYGHGHMB".equals(page.getDicId()) && rows!=null && rows.size()>0){ + for(DicTypeEO row:rows){ + List getClassify = dicTypeEOService.getDicTypeEOByDicTypeCode(null,null,null,row.getId()); + if(getClassify!=null && getClassify.size()>0){ + row.setClassifyCode(getClassify.get(0).getDicTypeName()); + row.setClassifyCodeId(getClassify.get(0).getId()); + } + } + } + return Result.success(getPageInfo(page.getPager(), rows)); + } + + @ApiOperation(value = "|DicTypeEO|国家/地区分页列表") + @GetMapping("/pageCountry") +// @RequiresPermissions("sys:dicType:pageListByDicIdAndNoParentId") + public ResponseMessage> pageListByDicIdAndNoParentId(DicTypeEOPage page) throws Exception { + page.setPager(new Pager()); + page.setValidFlag("0"); + page.setOrderBy("show_index,modify_time desc"); + List rows = dicTypeEOService.queryByPageNoParentId(page); + return Result.success(getPageInfo(page.getPager(), rows)); + } + + /*** + * 获取数据字典属性所有内容 + * @MethodName:getDicTypeList + * @author: zhangyanduan + * @param:[dicId] + * @return:com.adc.da.util.http.ResponseMessage> + * date: 2018/11/1 15:42 + */ + @ApiOperation(value = "|DicTypeEO|查询所有数据字典数据") + @GetMapping("/getDicTypeList") +// @RequiresPermissions("sys:dicType:getDicTypeList") + public ResponseMessage> getDicTypeList(String dicId) throws Exception { + DicTypeEOPage page = new DicTypeEOPage(); + page.setDicId(dicId); + page.setValidFlag("0"); + List typeEOList = dicTypeEOService.queryByList(page); + return Result.success(typeEOList); + } + + + /** + * @return com.adc.da.util.http.ResponseMessage + * @Author liwenxuan + * @Description 修改数据字典编码和名称 + * 1.如果修改的字典类型编码不改变也可以进行修改 通过用户id获得字段名字和输入的名字一致也可以 + * 2.原name和新输入的name进行对比,如果一样不算在字典类型编码重复 + * @Date Administrator 2018/9/17 + * @Param [dicTypeVO] + **/ + @ApiOperation(value = "|DicTypeEO|修改") + @PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE) +// @RequiresPermissions("sys:dicType:update") + public ResponseMessage update(@RequestBody DicTypeEO dicTypeVO) throws Exception { + // liwenxuan:用来企业大类判断新增是否重复 有parentId代表查询里面的数据 + if (dicTypeVO.getParentId() != null) { + dicTypeEOTypeNameAndCode = dicTypeEOService.getDicTypeEOTypeNameAndCode(dicTypeVO.getId(), dicTypeVO.getDicTypeName(), dicTypeVO.getDicTypeCode(), dicTypeVO.getParentId()); + } else { + dicTypeEOTypeNameAndCode = dicTypeEOService.getTypeIdByDicIdAndTypeName(dicTypeVO.getDicId(), dicTypeVO.getId(), dicTypeVO.getDicTypeName(), dicTypeVO.getParentId()); + } + for (DicTypeEO dicTypeEO : dicTypeEOTypeNameAndCode) { + if (dicTypeEO.getDicTypeName().equals(dicTypeVO.getDicTypeName())) { + return Result.error("选项已存在"); + } + } + dicTypeVO.setModifyTime(new Date()); + int i = dicTypeEOService.updateByPrimaryKeySelective(dicTypeVO); + //如果修改数据为标准类别,将国家地区关联的标准类别同时修改 + if ("JKSADFH564S".equals(dicTypeVO.getDicId())) { + dicTypeEOService.updateByDicTypeCode(dicTypeVO); + } + //修改细类中分类代号 + if(StringUtils.isNotEmpty(dicTypeVO.getClassifyCode()) && StringUtils.isNotEmpty(dicTypeVO.getClassifyCodeId())){ + DicTypeEO upClassiEo = new DicTypeEO(); + upClassiEo.setId(dicTypeVO.getClassifyCodeId()); + upClassiEo.setDicTypeName(dicTypeVO.getClassifyCode()); + upClassiEo.setModifyTime(new Date()); + dicTypeEOService.updateByPrimaryKeySelective(upClassiEo); + } else if(StringUtils.isNotEmpty(dicTypeVO.getClassifyCodeId()) && StringUtils.isEmpty(dicTypeVO.getClassifyCode())){ + DicTypeEO upClassiEo = new DicTypeEO(); + upClassiEo.setId(dicTypeVO.getClassifyCodeId()); + upClassiEo.setValidFlag(1); + dicTypeEOService.updateByPrimaryKeySelective(upClassiEo); + }else if(StringUtils.isEmpty(dicTypeVO.getClassifyCodeId()) && StringUtils.isNotEmpty(dicTypeVO.getClassifyCode())){ + DicTypeEO dicClassifyCode = new DicTypeEO(); + dicClassifyCode.setDicTypeName(dicTypeVO.getClassifyCode()); + dicClassifyCode.setDicId("YDWVSVOAQG"); + dicClassifyCode.setParentId(dicTypeVO.getId()); + dicClassifyCode.setId(UUIDUtils.randomUUID20()); + dicClassifyCode.setValidFlag(0); + dicClassifyCode.setCreationTime(new Date()); + dicClassifyCode.setModifyTime(new Date()); + dicClassifyCode.setDicTypeCode(UUIDUtils.randomUUID10()); + dicTypeEOService.insertSelective(dicClassifyCode); + } + if (i == 0) { + return Result.error("修改失败"); + } + return Result.success("true", "修改成功", 1); + } + + /** + * @return com.adc.da.util.http.ResponseMessage + * @Author liwenxuan + * @Description 根据数据字典参数表id获取数据字典参数表信息 + * @Date Administrator 2018/9/17 + * @Param [id] + **/ + @ApiOperation(value = "|DicTypeEO|详情") + @GetMapping("/{id}") +// @RequiresPermissions("sys:dicType:get") + public ResponseMessage getById(@NotNull @PathVariable("id") String id) throws Exception { + DicTypeEO dicTypeVO = dicTypeEOService.getDicTypeById(id); + return Result.success(dicTypeVO); + } + + + /** + * @return com.adc.da.util.http.ResponseMessage + * @Author liwenxuan + * @Description 删除多条数据 ,实际上设置vilid_flag=1 + * @Date Administrator 2018/9/17 + * @Param [ids] + **/ + @ApiOperation(value = "|DicTypeEO|删除多条数据") + //@DeleteMapping("/deleteArr/{ids}") + @DeleteMapping("/deleteArr") + //@RequiresPermissions("sys:dicType:deleteArr") + public ResponseMessage deleteArr(String[] ids, String[] dicTypeCodes) throws Exception { + if (dicTypeCodes != null) { + List list = Arrays.asList(dicTypeCodes); + for (String dicTypeCode : list) { + boolean dicTypeByDicTypeCode = dicTypeEOService.getDicTypeByDicTypeCode(dicTypeCode); + if (dicTypeByDicTypeCode == false) { + return Result.error("有引用,无法删除"); + } + } + } else { + // 标准类别判断 + List list = Arrays.asList(ids); + for (String id : list) { + DicTypeEO dicTypeEO = dicTypeEOService.getDicTypeById(id); + // 通过对应的国家code,和 标准类别code 判断是否被引用 + DicTypeEO countryEO = dicTypeEOService.getDicTypeById(dicTypeEO.getParentId()); + //在主表中,标准类别的code和name 是同一个是 + boolean dicTypeByDicTypeCode = dicTypeEOService.judgeHaveUse(dicTypeEO.getDicTypeCode(),countryEO.getDicTypeCode()); + if (!dicTypeByDicTypeCode) { + return Result.error("有引用,无法删除"); + } + } + } + dicTypeEOService.delete(Arrays.asList(ids)); + if (dicTypeCodes != null) { + // 如果dicTypeCode不为空,说明删除标准类别,国家下的标准类别也需要同步删除 + dicTypeEOService.deleteDicTypeByCodeAndParentid(Arrays.asList(dicTypeCodes)); + } + return Result.success("", "删除成功", null); + } + + + /** + * @return com.adc.da.util.http.ResponseMessage + * @Author liwenxuan + * @Description 删除一条数据 + * @Date Administrator 2018/9/17 + * @Param [id] + **/ + @ApiOperation(value = "|DicTypeEO|删除一条数据") + @DeleteMapping("/delete") + //@RequiresPermissions("sys:dicType:removeDicType") + public ResponseMessage delete(String dicTypeEOId, String dicTypeCode) throws Exception { + if (dicTypeCode != null) { + boolean dicTypeByDicTypeCode = dicTypeEOService.getDicTypeByDicTypeCode(dicTypeCode); + if (dicTypeByDicTypeCode == false) { + return Result.error("有引用,无法删除"); + } + }else { + // 标准类别判断 + DicTypeEO dicTypeEO = dicTypeEOService.getDicTypeById(dicTypeEOId); + // 通过对应的国家code,和 标准类别code 判断是否被引用 + DicTypeEO countryEO = dicTypeEOService.getDicTypeById(dicTypeEO.getParentId()); + //在主表中,标准类别的code和name 是同一个是 + boolean dicTypeByDicTypeCode = dicTypeEOService.judgeHaveUse(dicTypeEO.getDicTypeName(),countryEO.getDicTypeCode()); + if (!dicTypeByDicTypeCode) { + return Result.error("有引用,无法删除"); + } + } + dicTypeEOService.deleteDicTypeByDicId(dicTypeEOId); + if (dicTypeCode != null) { + // 如果dicTypeCode不为空,说明删除标准类别,国家下的标准类别也需要同步删除 + List codes = new ArrayList<>(); + codes.add(dicTypeCode); + dicTypeEOService.deleteDicTypeByCodeAndParentid(codes); + } + return Result.success("", "删除成功", null); + } + + /** + * @return com.adc.da.util.http.ResponseMessage> + * @Author super_liu + * @Description 根据数据字典编码查询字典类型 + * Date 2018/9/12 10:12 + * @Param [dicCode] + **/ + @ApiOperation(value = "|DicTypeEO|查询字典类型") + @GetMapping("/getDicTypeByDicCode") + // @RequiresPermissions("sys:dicType:getDicTypeByDicCode") + public ResponseMessage>> getDicTypeByDicCode(@RequestParam String dicCode) throws Exception { + List> dicTypeEO = dicTypeEOService.getDicTypeByDicCode(dicCode); + return Result.success(dicTypeEO); + } + + /** + * @return com.adc.da.util.http.ResponseMessage> + * @Author gaoyan + * @Description 分组查询全部字典类型 + * Date 2018/9/11 19:09 + * @Param [dicCode] + **/ + @ApiOperation(value = "|DicTypeEO|查询字典类型") + @GetMapping("/getDicTypeListCode") + //@RequiresPermissions("sys:dicType:getDicTypeListCode") + public ResponseMessage> getDicTypeListCode() throws Exception { + Map dicTypeEO = dicTypeEOService.getDicTypeListCode(); + return Result.success(dicTypeEO); + } + + /** + * @return com.adc.da.util.http.ResponseMessage> + * @Author gaoyan + * @Description 分组查询全部字典类型 + * Date 2018/9/11 19:09 + * @Param [dicCode] + **/ + @ApiOperation(value = "|DicTypeEO|查询字典类型") + @GetMapping("/getDicTypeListCodeByType") + //@RequiresPermissions("sys:dicType:getDicTypeListCode") + public ResponseMessage> getDicTypeListCodeByType(List types) throws Exception { + Map dicTypeEO = dicTypeEOService.getDicTypeListCodeByType(types); + return Result.success(dicTypeEO); + } + + /** + * @return com.adc.da.util.http.ResponseMessage>> + * @Author super_liu + * @Description 根据父级code查询 + * Date 2018/10/9 14:11 + * @Param [dicTypeCode] + **/ + @ApiOperation(value = "|DicTypeEO|根据父级code查询") + @GetMapping("/getDicTypeByParentCode") + // @RequiresPermissions("sys:dicType:getDicTypeByParentCode") + public ResponseMessage>> getDicTypeByParentCode(@RequestParam String dicTypeCode) throws Exception { + List> dicTypeEO = dicTypeEOService.getDicTypeByParentCode(dicTypeCode); + return Result.success(dicTypeEO); + } + + @ApiOperation(value = "|DicTypeEO|根据父级多个code查询") + @GetMapping("/getDicTypeByParentCodes") + // @RequiresPermissions("sys:dicType:getDicTypeByParentCode") + public ResponseMessage>> getDicTypeByParentCodes(@RequestParam String dicTypeCode) throws Exception { + List> dicTypeEO = dicTypeEOService.getDicTypeByParentCodes(dicTypeCode); + return Result.success(dicTypeEO); + } + + @ApiOperation(value = "|DicTypeEO|根据DicId查询下拉列表") + @GetMapping("/getDicTypeByDicId") + public ResponseMessage> getDicTypeByDicId(String dicId) { + List dicTypeEO = dicTypeEOService.getDicTypeByDicId(dicId); + return Result.success(dicTypeEO); + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/FeedbackInfoEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/FeedbackInfoEOController.java index c8c33204..ec82b26d 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/FeedbackInfoEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/FeedbackInfoEOController.java @@ -27,7 +27,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @RestController @RequestMapping("/${restPath}/sys/feedbackInfo") -@Api(description = "|FeedbackInfoEO|") +@Api(tags = "|FeedbackInfoEO|") public class FeedbackInfoEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(FeedbackInfoEOController.class); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/LinkInfoEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/LinkInfoEOController.java index 67ec504c..243d4f8d 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/LinkInfoEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/LinkInfoEOController.java @@ -23,7 +23,7 @@ import java.util.List; @RestController @RequestMapping("/${restPath}/sys/linkInfo") -@Api(description = "|LinkInfoEO|") +@Api(tags = "|LinkInfoEO|") public class LinkInfoEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(LinkInfoEOController.class); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/LoginInfoEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/LoginInfoEOController.java index 62686b53..79f7bf10 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/LoginInfoEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/LoginInfoEOController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController; * @Description: */ @RestController -@Api(description="LoginInfoEO") +@Api(tags="LoginInfoEO") @RequestMapping("/${restPath}/sys/loginInfoEO") public class LoginInfoEOController { @Autowired diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/MenuEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/MenuEOController.java index f0ba2844..615ae981 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/MenuEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/MenuEOController.java @@ -24,7 +24,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @RestController @RequestMapping("/${restPath}/sys/menu") -@Api(description = "菜单管理") +@Api(tags = "菜单管理") public class MenuEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(MenuEOController.class); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/OrgEORestController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/OrgEORestController.java index 11876aaf..63af809a 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/OrgEORestController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/OrgEORestController.java @@ -29,7 +29,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @RestController @RequestMapping("/${restPath}/sys/org") -@Api(description = "组织机构管理") +@Api(tags = "福田标准法规--标准法规库--组织机构管理") public class OrgEORestController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(OrgEORestController.class); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/RoleEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/RoleEOController.java index 6012f1b3..74ed1549 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/RoleEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/RoleEOController.java @@ -3,17 +3,21 @@ package com.adc.da.sys.controller; import cn.hutool.core.bean.BeanUtil; import com.adc.da.base.page.Pager; import com.adc.da.base.web.BaseController; -import com.adc.da.common.ValidFlagEnum; import com.adc.da.http.PageInfo; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; +import com.adc.da.sys.constant.DeleteFlagEnum; import com.adc.da.sys.constant.IsBelongEnum; +import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.entity.UserRoleEO; import com.adc.da.sys.page.RoleEOPage; +import com.adc.da.sys.page.RoleUserEOPage; import com.adc.da.sys.service.IRoleEOService; import com.adc.da.sys.service.IUserEOService; +import com.adc.da.sys.util.RoleGroupUtil; +import com.adc.da.sys.vo.RoleUserVO; import com.adc.da.sys.vo.RoleVO; import com.adc.da.util.LoginUserUtil; import io.swagger.annotations.Api; @@ -34,7 +38,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @RestController @RequestMapping("/${restPath}/sys/role") -@Api(description = "角色管理") +@Api(tags = "角色管理") public class RoleEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(RoleEOController.class); @@ -85,6 +89,46 @@ public class RoleEOController extends BaseController { return Result.success(getPageInfo(page.getPager(), rows)); } + @ApiOperation(value = "|RoleUserVO|根据部门和层级获取人员") + @GetMapping("/getRoleAndUserByOrgIdPage") + public ResponseMessage> getRoleAndUserByOrgIdPage(Integer pageNo, Integer pageSize, String orgId, String roleHierarchyName, String roleName, String roleId, String userName){ + RoleUserEOPage page = new RoleUserEOPage(); + if (pageNo != null) { + page.setPage(pageNo); + } + if (pageSize != null) { + page.setPageSize(pageSize); + } + if (StringUtils.isNotEmpty(userName)) { + page.setUserName("%"+roleName+"%"); + page.setUserNameOperator("LIKE"); + } + if (StringUtils.isNotEmpty(roleName)) { + page.setRoleName("%"+roleName+"%"); + page.setRoleNameOperator("LIKE"); + } + page.setOrgId(roleId); + page.setRoleName(roleName); + page.setUserName(userName); + page.setRoleHierarchyName(String.valueOf(roleHierarchyName != null ? RoleGroupUtil.getId(roleHierarchyName): null)); + page.setOrgId(orgId); + page.setValidFlag(DeleteFlagEnum.NORMAL.getValue()+""); + page.setPager(new Pager()); + page.setOrderBy("modify_time desc"); + List list = userService.getUserByRolePage(page); + return Result.success(getPageInfoNew(page.getPager(), list)); + } + + public PageInfo getPageInfoNew(Pager pager, List rows) { + PageInfo pageInfo = new PageInfo(); + pageInfo.setList(rows); + pageInfo.setCount((long)pager.getRowCount()); + pageInfo.setPageSize(pager.getPageSize()); + pageInfo.setPageCount((long)pager.getPageCount()); + pageInfo.setPageNo(pager.getPageId()); + return pageInfo; + } + @ApiOperation(value = "|RoleEO|详情") @GetMapping("/{id}") // @RequiresPermissions("sys:role:get") diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/RoleSarMenuEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/RoleSarMenuEOController.java index 490569dd..08722b23 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/RoleSarMenuEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/RoleSarMenuEOController.java @@ -21,7 +21,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @RestController @RequestMapping("/${restPath}/sys/roleSarMenu") -@Api(description = "|RoleSarMenuEO|") +@Api(tags = "|RoleSarMenuEO|") public class RoleSarMenuEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(RoleSarMenuEOController.class); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserConfigEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserConfigEOController.java index b2f155c2..93870d3f 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserConfigEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserConfigEOController.java @@ -21,7 +21,7 @@ import java.util.List; @RestController @RequestMapping("/${restPath}/person/userConfig") -@Api(description = "|UserConfigEO|") +@Api(tags = "|UserConfigEO|") public class UserConfigEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(UserConfigEOController.class); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserEOController.java index 77f627d8..377c6226 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserEOController.java @@ -3,12 +3,13 @@ package com.adc.da.sys.controller; import cn.hutool.core.bean.BeanUtil; import com.adc.da.base.page.Pager; import com.adc.da.base.web.BaseController; -import com.adc.da.common.ValidFlagEnum; import com.adc.da.http.PageInfo; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; +import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.entity.UserPhoneDTO; import com.adc.da.sys.page.UserEOPage; import com.adc.da.sys.service.IOrgEOService; import com.adc.da.sys.service.IRoleEOService; @@ -35,7 +36,7 @@ import java.util.List; @RestController @RequestMapping("/${restPath}/sys/user") -@Api(description = "用户管理") +@Api(tags = "用户管理") public class UserEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(UserEOController.class); @@ -53,7 +54,32 @@ public class UserEOController extends BaseController { @ApiOperation(value = "|UserEO|详情") @GetMapping("/{id}") // @RequiresPermissions("sys:user:get") - public ResponseMessage getById(@NotNull @PathVariable("id") String id) throws Exception { + public ResponseMessage getById(@PathVariable("id") String id) throws Exception { + UserEO userEO = userEOService.getUserWithRoles(id); + UserVO userVO= new UserVO(); + if(userEO!=null){ + userVO = BeanUtil.toBean(userEO,UserVO.class); + userVO.setRoles(userEO.getRoleEOList()); + userVO.setOrgsstr(userEO.getOrgIdList()); + userVO.setOrgs(userEO.getOrgEOList()); + userVO.setPassword(userEO.getPassword()); + } + return Result.success(userVO); + } + + + + @ApiOperation(value = "|UserEO|详情") + @GetMapping("/getUserByPhone") +// @RequiresPermissions("sys:user:get") + public ResponseMessage> getUserByName(@RequestParam(required = false,value = "name")String name,@RequestParam("page")Integer page){ + List userPhoneDTOS=userEOService.getUserByName(name,page); + return Result.success(userPhoneDTOS); + } + + @ApiOperation(value = "|UserEO|详情接口") + @GetMapping("/getById") + public ResponseMessage getByIdFeignClient(String id) throws Exception { UserEO userEO = userEOService.getUserWithRoles(id); UserVO userVO= new UserVO(); if(userEO!=null){ diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserInfoEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserInfoEOController.java index 4692a62d..b0669fd2 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserInfoEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/UserInfoEOController.java @@ -1,10 +1,10 @@ package com.adc.da.sys.controller; import com.adc.da.base.web.BaseController; -import com.adc.da.common.ValidFlagEnum; import com.adc.da.http.PageInfo; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; +import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.entity.UserInfoEO; @@ -27,7 +27,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @RestController @RequestMapping("/${restPath}/person/userInfo") -@Api(description = "|UserInfoEO|") +@Api(tags = "|UserInfoEO|") public class UserInfoEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(UserInfoEOController.class); @@ -62,11 +62,11 @@ public class UserInfoEOController extends BaseController { @ApiOperation(value = "查找用户信息接口") @GetMapping("/getByUserInfoCode") //@RequiresPermissions("person:userInfo:getByUserInfoCode") - public ResponseMessage getByUserInfoCode() throws Exception { + public ResponseMessage getByUserInfoCode(String userId) throws Exception { //获取当前登录人 - String userId= LoginUserUtil.getUserId(); +// String userId= LoginUserUtil.getUserId(); UserInfoEO userInfoEO =new UserInfoEO(); - userInfoEO.setUserId(userId); + userInfoEO.setUserId(userIdFilter(userId)); userInfoEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()); UserInfoEO getInfo = userInfoEOService.getUserEOAndInfoEOByUserCode(userInfoEO); if(getInfo!=null){ @@ -84,6 +84,16 @@ public class UserInfoEOController extends BaseController { return Result.success(getInfo); } + private String userIdFilter(String str){ + String result = ""; + if(str.contains("?_t")){ + result = str.split("\\?_t")[0]; + }else { + result = str; + } + return result; + } + /** * 刘寅楠 diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/WarnTimeEOController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/WarnTimeEOController.java index 2bd7b1e2..ebcb43d0 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/WarnTimeEOController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/WarnTimeEOController.java @@ -24,7 +24,7 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @RestController @RequestMapping("/${restPath}/sys/warnTime") -@Api(description = "|WarnTimeEO|") +@Api(tags = "|WarnTimeEO|") public class WarnTimeEOController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(WarnTimeEOController.class); diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/DicEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/DicEODao.java new file mode 100644 index 00000000..4697c837 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/DicEODao.java @@ -0,0 +1,50 @@ +package com.adc.da.sys.dao; + +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.entity.DictionaryEO; +import com.adc.da.sys.page.DictionaryEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface DicEODao extends BaseMapper { + + public DictionaryEO getDictionaryEOById(String id); + + public DictionaryEO getDictionaryEOByDicCode(String dictionaryCode); + + public DictionaryEO getDicEOAndTypeEoByDicCode(String dictionaryCode); + + public DictionaryEO getDictionaryEOByDicName(String dictionaryName); + + public void deleteDic(String id); + + //gaoyan + public List getDictionaryEO(); + + public List getDictionaryEOByType(@Param("types") List types); + + public Integer countByCodeOrName(DictionaryEOPage page); + + public List queryAllDicByPage(DictionaryEOPage page); + + public Integer queryAllDicByCount(DictionaryEOPage page); + + public List getDictionarySelList(@Param("id") String id); + + public List getDictionaryCodeSelList(@Param("id") String id); + + public int queryUseByCount(@Param("id") String id); + + public int insertSelective(DictionaryEO dictionaryEO); + + public int updateByPrimaryKeySelective(DictionaryEO dictionaryEO); + + public List queryByPage(DictionaryEOPage page); + + public int queryByCount(DictionaryEOPage page); + + public List queryByList(DictionaryEOPage page); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/DicTypeEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/DicTypeEODao.java new file mode 100644 index 00000000..18d9e1ac --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/DicTypeEODao.java @@ -0,0 +1,88 @@ +package com.adc.da.sys.dao; + +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.page.DicTypeEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface DicTypeEODao extends BaseMapper { + + public DicTypeEO getDicTypeEOById(String id); + + public void deleteDicTypeByIdInBatch(List ids); + + public List getTypeIdByDicIdAndTypeName(@Param("dicId") String dicId, @Param("id") String id, @Param("typeName") String typeName, @Param("parentId") String parentId); + + + public List getDicTypeEOByDicTypeCode(@Param("dicId") String dicId, @Param("id") String id, @Param("dicTypeCode") String dicTypeCode, @Param("parentId") String parentId); + + public void batchInsertTypeEo(List ModelType); + + public void deleteDicTypeByDicId(String id); + + /** + * @Author super_liu + * @Description 根据数据字典编码查询字典类型 + * Date 2018/9/11 15:09 + * @Param [dictionaryCode] + * @return java.util.List + **/ + public List getDicTypeByDicCode(String dictionaryCode); + + public List getFineDicTypeByDicCode(String dictionaryCode); + + //liwenxuan:国家地区新增 + public List queryByPageNoParentId(DicTypeEOPage page); + + public int queryByCountCounter(DicTypeEOPage page); + public List getDicTypeByParentCode(String dicTypeCode); + + public List getDicTypeByDicTypeName(DicTypeEO dicTypeEO); + + public List getDicTypeEOTypeNameAndCode(@Param("id") String id, @Param("dicTypeName") String dicTypeName, @Param("dicTypeCode") String dicTypeCode, @Param("parentId") String parentId); + public List getDicTypeEOTypeNameAndCode1(@Param("id") String id, @Param("dicTypeName") String dicTypeName, @Param("dicTypeCode") String dicTypeCode, @Param("parentId") String parentId); + + // 标准法规属性管理中删除之前查看其它地方是否引用 + public List getDicTypeByDicTypeCode(String dicTypeCode); + + public List getDicEOByDicTypeCode(String dicTypeCode); + + public List getDicEOByDicTypeCodeParent(String dicTypeCode); + + public int deleteByDicIdAndDicTypeCode(DicTypeEO dicTypeEO); + + public int updateByDicTypeCode(DicTypeEO dicTypeEO); + + public int judgeHaveUse(@Param("sortCode") String sortCode, @Param("countryCode") String countryCode); + + public void deleteDicTypeByCodeAndParentid(List codes); + + public int deleteByDictionaryId(@Param("dicId") String dicId); + + public List getDicTypeByDicId(@Param("dicId") String dicId); + + public String getDicNamesByCodes(@Param("codeList") List codeList, @Param("dicId") String dicId); + + public int insertSelective(DicTypeEO dictionaryEO); + + public int updateByPrimaryKeySelective(DicTypeEO dictionaryEO); + + public List queryByPage(DicTypeEOPage page); + + public int queryByCount(DicTypeEOPage page); + + public List queryByList(DicTypeEOPage page); + + /** + * @param filed 需要查询的字段名 + * 查询需要的字段的所有数据 + * @return + */ + public List getDicInfo(@Param("filed") String... filed); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/FeedbackInfoEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/FeedbackInfoEODao.java new file mode 100644 index 00000000..65f04ba4 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/FeedbackInfoEODao.java @@ -0,0 +1,25 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.FeedbackInfoEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * + *
    + * 功能:TS_FEEDBACK_INFO FeedbackInfoEODao
    + * 作者:code generator
    + * 日期: 2018-09-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface FeedbackInfoEODao extends BaseMapper { + + List queryByList(BasePage page); + + int queryByCount(BasePage var1); + + List queryByPage(BasePage page); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/LinkInfoEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/LinkInfoEODao.java new file mode 100644 index 00000000..3e9c8d92 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/LinkInfoEODao.java @@ -0,0 +1,27 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.LinkInfoEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * + *
    + * 功能:TS_LINK_INFO LinkInfoEODao
    + * 作者:code generator
    + * 日期: 2020-01-13
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface LinkInfoEODao extends BaseMapper { + + List queryByList(BasePage page); + + int queryByCount(BasePage page); + + List queryByPage(BasePage page); + + int deleteByIds(@Param("idList") List idList); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/LoginInfoEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/LoginInfoEODao.java new file mode 100644 index 00000000..4221bff0 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/LoginInfoEODao.java @@ -0,0 +1,29 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.LoginInfoEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.Date; +import java.util.List; + +/** + * Created by Administrator on 2018/10/11 17:36 + */ +public interface LoginInfoEODao extends BaseMapper { + + List queryByList(BasePage page); + + int queryByCount(BasePage page); + + List queryByPage(BasePage page); + +// liwenxuan:系统用户访问数量 和 Top10 + List sysUserVisitCount(Date visitTime); + List sysUserVisitCountTop10(); + int count(); + + LoginInfoEO sysUserVisitCountByDate(LoginInfoEO loginInfoEO); + + int sysUserVisitCountByAll(LoginInfoEO loginInfoEO); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/MenuEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/MenuEODao.java new file mode 100644 index 00000000..4852b16e --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/MenuEODao.java @@ -0,0 +1,75 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.MenuEO; +import com.adc.da.sys.page.MenuEOPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *
    + * 功能:TS_MENU MenuEODao
    + * 作者:code generator
    + * 日期: 2017-11-06
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface MenuEODao extends BaseMapper { + + List queryByList(BasePage page); + + int queryByCount(BasePage page); + + /** + * 获取所有的菜单 + * @return 所有菜单 + */ + List findAll(); + + /** + * 获取角色对应的所有菜单 + * @param roleId 角色ID + * @return 角色对应的所有菜单 + */ + List listMenuEOByRoleID(String roleId); + + /** + * 获取用户的所有菜单 + * @param userId 用户ID + * @return 用户的所有菜单 + */ + List listMenuEOByUserId(String userId); + + /** + * 获取当前节点的所有子节点 + * @param parentId 当前节点 + * @return 返回所有子节点 + */ + List getChildMenus(String parentId); + + /** + * 逻辑删除所有菜单 + * @param ids 菜单ID + */ + void deleteMenuLogic(String[] ids); + + /** + * 删除角色与当前菜单以及子菜单关系 + * @param ids + */ + void deleteRoleMenus(String[] ids); + + /** + * 判定菜单是否属于角色 + * @param roleId 角色ID + * @param menuId 菜单ID + * @return 如果>0说明存在记录,菜单属于角色 + */ + int isBelong(@Param("roleId") String roleId, @Param("menuId") String menuId); + + List selectPersonalByUserId(String userId); + + List queryByAllMenu(MenuEOPage page); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/OrgEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/OrgEODao.java new file mode 100644 index 00000000..8057fe85 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/OrgEODao.java @@ -0,0 +1,167 @@ +package com.adc.da.sys.dao; + +import com.adc.da.sys.entity.OrgEO; +import com.adc.da.sys.entity.UserOrgEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.LinkedList; +import java.util.List; + + +public interface OrgEODao extends BaseMapper { + + public List listOrgEOByOrgName(@Param("orgName") String orgName); + + public OrgEO getOrgEOByNameAndPid(@Param("orgName") String orgName, @Param("pId") String pId); + + //liwenxuan:判断组织机构名称不重复 + public OrgEO getOrgEOByorgNameAndPidAndId(@Param("orgName") String orgName, @Param("pId") String pId, @Param("id") String id); + + //liwenxuan:判断组织机构简称不重复 + public OrgEO getOrgEOByShotNameAndPidAndId(@Param("shotName") String shotName, @Param("pId") String pId, @Param("id") String id); + + String getNamesByIds(@Param("list") String[] list); + + String getIdsByNames(@Param("list") String[] list, @Param("orgType") String orgType); + + public List getOrgEOByPid(@Param("pId") String pId); + + public OrgEO getOrgEOById(String id); + + public int deleteLogic(String id); + + //获取根节点, pid 和 CORP_ID 为 null + public LinkedList selectOrgAllNode(); + + List getChildDept(@Param("orgId") String orgId); + + public LinkedList selectRootNode(); + + public LinkedList selectNodeByPid(String id); + + public List queryByObject(OrgEO eo); + + public int delOrgRelatedUser(UserOrgEO userOrgEO); + + public int addOrgRelatedUsers(List userOrgEOs); + + public int delOrgRelatedUserByUserId(String usId); + + public int addOrgRelatedUser(UserOrgEO userOrgEO); + + public int updateUserOrg(UserOrgEO userOrgEO); + + public int deleteUserOrgByOrgId(String orgId); + /*** + * SSO查询组织机构 + * @MethodName:getOrgListOfSSO + * @author: zhangyanduan + * @param:[] + * @return:java.util.List + * date: 2018/10/16 19:18 + */ + public List getOrgListOfSSO(); + + /*** + * 从SSO添加组织机构 + * @MethodName:addOrgOfSSO + * @author: zhangyanduan + * @param:[orgEO] + * @return:void + * date: 2018/10/16 19:19 + */ + public void addOrgOfSSO(OrgEO orgEO); + + /*** + * SSO更新组织机构 + * @MethodName:updateOrgOfSSO + * @author: zhangyanduan + * @param:[orgEO] + * @return:void + * date: 2018/10/16 20:42 + */ + public void updateOrgOfSSO(OrgEO orgEO); + + /** + * @Author liwenxuan + * @Description //根据角色名称,查找该角色的用户(用于流程中心) + * @Date Administrator 2018/10/24 + * @Param [roleName] + * @return java.lang.String + **/ + public List getTreeByRole1(String roleName); + + /** + * @Author liwenxuan + * @Description //根据用户查找其组织结构,筛选出唯一的组织结构 + * @Date Administrator 2018/10/24 + * @Param + * @return + **/ + public List getTreeByRole2(String roleName); + + + // liwenxuan:1.查找该用户所在的组织结构,拿到parent_ids +// liwenxuan:2.根据第一步返回的parent_ids,和id 组成list ,使用in查询,筛选组织结构 +// liwenxuan:3.根据2中获取的组织结构id,和角色名称roleName删选用户 + public OrgEO getLeaderByUserId1(String usId); + public List getLeaderByUserId2(@Param("orgType") String orgType, @Param("parentIds") List parentIds); + public List getLeaderByUserId3(@Param("roleName") String roleName, @Param("id") String id); + + + // liwenxuan:根据orgId获取其所在的组织结构 + public List getTreeByRoleAndOrgId1(@Param("orgId") String orgId); + //liwenxuan:根据parentIds获取当前组织结构树分支 此parentIds中封装了id + public List getTreeByRoleAndOrgId2(@Param("ids") List ids); + // liwenxuan:使用mybatis的foreach标签,遍历list + public List getTreeByRoleAndOrgId3(@Param("roleName") String roleName, @Param("orgEOList") List orgEOList); + + List getManagerByOrgId(@Param("roleName") String roleName, @Param("orgId") String orgId); + + //根据orgType查询部及以上组织结构 + public List getIdsByorgType(); + /** + * @Author gaoyan + * @Description //根据不忙部门名称查询部门id + * @Date Administrator 2018/10/24 + * @Param + * @return + **/ + public List getIdByName(String orgName); + + //liwenxuan:1.根据orgId,roleId查看用户 + public List getLeaderByOrgIdAndRoleId(@Param("orgIds") List orgIds); + + //根据orgId查找所有组织结构 + public OrgEO getAllOrgbyOrgId(String orgId); + + // 根据orgIds查询下面的用户集合 + public List getLeaderByUserId4(@Param("id") List id); + + // 查找科级部门下的科级负责人,根据orgId和roleId确定是否有一个用户 + public OrgEO getHeadOfSection(@Param("orgId") String orgId, @Param("userId") String userId); + + // 查找部门下的部门负责人,根据orgId和roleId确定是否有一个用户 + public OrgEO getDepartmentHeads(@Param("orgId") String orgId, @Param("userId") String userId); + + // 根据SSOOrgId获取OrgEO对象 + public OrgEO getOrgInfoBySSOOrgId(String SSOOrgId); + + + public void updateOrgOfSSOById(OrgEO orgEO); + + List queryOrgByList(@Param("orgName") String orgName); + + List getTreeByRole3(String roleId); + + List getTreeByRole4(String roleId); + + public OrgEO getOrgInfoByOrgId(String OrgId); + + public OrgEO getOrgParentInfoOrgId(OrgEO orgEO); + + public List getOrgRootTree(); + + int clearData(); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/RoleEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/RoleEODao.java new file mode 100644 index 00000000..06663fb4 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/RoleEODao.java @@ -0,0 +1,89 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.RoleEO; +import com.adc.da.sys.entity.UserRoleEO; +import com.adc.da.sys.vo.RoleVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *
    + * 功能:TS_ROLE RoleEODao
    + * 作者:code generator
    + * 日期: 2017-11-06
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface RoleEODao extends BaseMapper { + + List queryByList(BasePage page); + + int queryByCount(BasePage page); + + List queryByPage(BasePage page); + + String getNamesByIds(@Param("list") String[] list); + + String getIdsByNames(@Param("list") String[] list); + + public void save(RoleEO sysRoleEO); + + public RoleEO getRoleWithMenus(String id); + + public List getRoleListByUserId(String userId); + + public void deleteLogic(String roleId); + + public void deleteRoleMenuByRoleId(String roleId); + + public List findAll(RoleVO roleVO); + + /** + * 查询角色所对应的用户 + */ + public List getUserRoleListByRoleId(String roleId); + + public List getMenuIdListByRoleId(String roleId); + + public void saveRoleMenu(@Param("roleId") String roleId, @Param("menuId") String menuId); + + /** + * 判断角色是否属于相应用户 + */ + public int isBelong(@Param("userId") String userId, @Param("roleId") String roleId); + + public List findByUserId(String userId); + + /** + * 通过用户名查询所有用户信息 + */ + public List selectByNameAndId(@Param("id") String id, @Param("name") String name); + + /** + * @return + * @Author liwenxuan + * @Description //根据角色id判断此角色对应的用户数量 + * @Date Administrator 2018/11/5 + * @Param + **/ + public int countByRoleId(@Param("roleId") String roleId, @Param("userId") String userId); + /** + * @Author liwenxuan + * @Description //所在组织组织机构下科级负责人和部门负责人的个数 + * @Date Administrator 2018/11/5 + * @Param + * @return + **/ + /*public int countByOrgId(String orgId);*/ + +//查找部门负责人和科级负责人 + public int countByRoleIdOfDepartmentAndSection(String roleId); + //查找科级负责人 + public int querySectionCount(String roleId); + //查找部门负责人 + public int querySectionCount1(String roleId); + + public List selectIdByNames(@Param("nameList") List nameList); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/RoleSarMenuEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/RoleSarMenuEODao.java new file mode 100644 index 00000000..14e934be --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/RoleSarMenuEODao.java @@ -0,0 +1,32 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.RoleSarMenuEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * + *
    + * 功能:TS_ROLE_SAR_MENU RoleSarMenuEODao
    + * 作者:code generator
    + * 日期: 2019-02-19
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface RoleSarMenuEODao extends BaseMapper { + + List queryByList(BasePage page); + + int queryByCount(BasePage page); + + List queryByPage(BasePage page); + + List findRoleSarMenu(String roleId); + + String queryBusinessStandRootId(String sorDivide); + + List selectSarMenuRoots(); + + int insertSubMenu(RoleSarMenuEO roleSarMenuEO); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserConfigEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserConfigEODao.java new file mode 100644 index 00000000..2898b1a2 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserConfigEODao.java @@ -0,0 +1,27 @@ +package com.adc.da.sys.dao; + + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.LoginInfoEO; +import com.adc.da.sys.entity.UserConfigEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * + *
    + * 功能:TS_USER_CONFIG UserConfigEODao
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface UserConfigEODao extends BaseMapper { + + List queryByList(BasePage page); + + int queryByCount(BasePage page); + + List queryByPage(BasePage page); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserEODao.java new file mode 100644 index 00000000..e2e8a56f --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserEODao.java @@ -0,0 +1,182 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.entity.UserPhoneDTO; +import com.adc.da.sys.page.RoleUserEOPage; +import com.adc.da.sys.page.UserEOPage; +import com.adc.da.sys.vo.RoleUserVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * + *
    + * 功能:TS_USER UserEODao
    + * 作者:code generator
    + * 日期: 2017-12-18
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface UserEODao extends BaseMapper { + + public void updatePassword(@Param("usid") String usid, @Param("oldPassword") String oldPassword, + @Param("newPassword") String newPassword); + + public void updateUserEO(UserEO userEO); + + String getNamesByIds(@Param("list") String[] list); + + String getIdsByNames(@Param("list") String[] list,@Param("orgIdList") String[] orgIdList); + + public List getRoleIdListByUserId(Integer usid); + + List getUserByRolePage(RoleUserEOPage page); + + int getUserByRolePageCount(RoleUserEOPage page); + + public void saveUserRole(@Param("usid") String usid, @Param("roleId") String roleId); + + public void saveUserOrg(@Param("usid") String usid, @Param("orgId") String orgId); + + public int queryByCount(BasePage queryPage); + + public List queryByPage(BasePage queryPage); + + /*** + * 用户管理查询分页 + * @MethodName:queryUserInfoByCount + * @author: zhangyanduan + * @param:[basePage] + * @return:int + * date: 2018/9/15 15:59 + */ + public int queryUserInfoByCount(BasePage basePage); + + public List queryUserInfoByPage(BasePage basePage); + + /** + * 物理删除用户角色关联 + * + * @param usid + * 用户ID + */ + public void deleteUserRoleByUsid(String usid); + /** + * 物理删除用户组织机构关联 + * + * @param usid + * 用户ID + */ + public void deleteUserOrgByUsid(String usid); + + public int deleteLogicInBatch(List usids); + + /** + * 批量删除用户角色关联 + * + * @param usids + * 用户ID集合 + */ + public int deleteUserRoleByUsidInBatch(List usids); + + /** + * 批量删除用户组织机构关联 + * + * @param usids + * 用户ID集合 + */ + public int deleteUserOrgByUsidInBatch(List usids); + + public UserEO getUserEOByAccount(@Param("account") String account, @Param("usid") String usid); + + /** + * 查询用户及用户所对应的角色 + */ + public UserEO getUserWithRoles(String id); + + public UserEO getUserWithRolesAll(String id); + + public UserEO get(String id); + + /** + * 根据当前登录用户id查询个人信息及部门 + * @param usid + * @return + */ + UserEO selectOrgByPrimaryKey(String usid); + + List getUser(String usid); + + Integer selectOrgCountByPrimaryKey(String usid); + + UserEO selectRoleMessageByPrimaryKey(String usid); + + public List queryByOrg(BasePage basePage); + + public UserEO selectByUnameAndPwd(UserEO userEO); + public int queryByOrgCount(BasePage basePage); + + public int updatePasswordByPrimaryKey(UserEO userEO); + + //liwenxuan:查找未分配组织结构的用户的行数 + public int findBySetOrgCount(BasePage basePage); + //liwenxuan:查询未分配组织机构人员信息 + public List findBySetOrg(BasePage basePage); + + List selectThatOrgUser(String orgId); + + String selectOrgByUserId(String userId); + + String selectPositionByUserId(String userId); + + List queryUserEoList(UserEOPage page); + /*** + * 添加SSO来源用户 + * @MethodName:addSSOUser + * @author: zhangyanduan + * @param:[userEO] + * @return:void + * date: 2018/10/23 20:17 + */ + public void addSSOUser(UserEO userEO); + /*** + * 根据工号查询用户信息 + * @MethodName:selectUserByWorkNum + * @author: zhangyanduan + * @param:[workNum] + * @return:java.util.List + * date: 2018/10/25 16:20 + */ + public List selectUserByWorkNum(String workNum); + + /*** + * 根据对接ID获取用户信息 + * @MethodName:getUserBySSOId + * @author: DuYunbao + * @param:[ssoId] + * @return:com.adc.da.sys.entity.UserEO + * date: 2018/11/1 21:23 + */ + public List getUserBySSOId(String ssoId); + + public List getUserListByRoleName(String RoleName); +//根据角色id查询用户信息 + public List getUserListByUserId(String userId); + + public List getUserEOBySpecRole(@Param("orgId") String orgId, @Param("userId") String userId); + + public List selectAllUserInfoBySSO(); + + //根据用户id查部门id + public UserEO getOrgIdByUserId(String userId); + + public UserEO getUserEOByAccountNotDeleted(String account); + + //手机端接口 只查人 + List getUserByName(@Param("name") String name,@Param("page")Integer page); + + String getName (@Param("id") String id); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserInfoEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserInfoEODao.java new file mode 100644 index 00000000..10462c2e --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserInfoEODao.java @@ -0,0 +1,35 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.entity.UserInfoEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * + *
    + * 功能:TS_USER_INFO UserInfoEODao
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface UserInfoEODao extends BaseMapper { + + List queryByList(BasePage page); + + int queryByCount(BasePage page); + + List queryByPage(BasePage page); + + + UserInfoEO getUserInfoByUserId(UserInfoEO userInfo); + + + int updateByUserId(UserInfoEO userId); + +// liwenxuan:修改用户详细信息 + int updateByPrimaryKey(UserInfoEO userInfoEO); + +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserRoleEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserRoleEODao.java new file mode 100644 index 00000000..3548546e --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/UserRoleEODao.java @@ -0,0 +1,16 @@ +package com.adc.da.sys.dao; + +import com.adc.da.sys.entity.UserRoleEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * + *
    + * 功能:TR_USER_ROLE UserRoleEODao
    + * 作者:code generator
    + * 日期: 2017-11-07
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface UserRoleEODao extends BaseMapper { + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/WarnTimeEODao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/WarnTimeEODao.java new file mode 100644 index 00000000..df7f38bb --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/WarnTimeEODao.java @@ -0,0 +1,23 @@ +package com.adc.da.sys.dao; + +import com.adc.da.base.page.BasePage; +import com.adc.da.sys.entity.WarnTimeEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * + *
    + * 功能:TS_WARN_TIME WarnTimeEODao
    + * 作者:code generator
    + * 日期: 2018-09-17
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public interface WarnTimeEODao extends BaseMapper { + List queryByList(BasePage page); + + int queryByCount(BasePage page); + + List queryByPage(BasePage page); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/DicTypeEO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/DicTypeEO.java new file mode 100644 index 00000000..89485ad5 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/DicTypeEO.java @@ -0,0 +1,236 @@ +package com.adc.da.sys.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + + +/** + * 功能:TS_DICTYPE DictypeEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class DicTypeEO extends BaseEntity { + + private Integer validFlag; + private String parentId; + private String dicTypeCode; + private String dicTypeName; + private String dicId; + private String id; + private String describes; + private Integer showIndex; + private String addCountrySortFlag; + +// 新增字段 + private Date creationTime; + private Date modifyTime; + + private String classifyCode; + private String classifyCodeId; + + //新增字段用于存储企业细类父ID + private String businessParentId; + private String treePid; + private String others; + private String creationUser; + + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • validFlag -> valid_flag
  • + *
  • parentId -> parent_id
  • + *
  • dicTypeCode -> dic_type_code
  • + *
  • dicTypeName -> dic_type_name
  • + *
  • dicId -> dic_id
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "showIndex": return "show_index"; + case "validFlag": return "valid_flag"; + case "parentId": return "parent_id"; + case "dicTypeCode": return "dic_type_code"; + case "dicTypeName": return "dic_type_name"; + case "dicId": return "dic_id"; + case "id": return "id"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • valid_flag -> validFlag
  • + *
  • parent_id -> parentId
  • + *
  • dic_type_code -> dicTypeCode
  • + *
  • dic_type_name -> dicTypeName
  • + *
  • dic_id -> dicId
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "show_index": return "showIndex"; + case "valid_flag": return "validFlag"; + case "parent_id": return "parentId"; + case "dic_type_code": return "dicTypeCode"; + case "dic_type_name": return "dicTypeName"; + case "dic_id": return "dicId"; + case "id": return "id"; + default: return null; + } + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getParentId() { + return this.parentId; + } + + /** **/ + public void setParentId(String parentId) { + this.parentId = parentId; + } + + /** **/ + public String getDicTypeCode() { + return this.dicTypeCode; + } + + /** **/ + public void setDicTypeCode(String dicTypeCode) { + this.dicTypeCode = dicTypeCode; + } + + /** **/ + public String getDicTypeName() { + return this.dicTypeName; + } + + /** **/ + public void setDicTypeName(String dicTypeName) { + this.dicTypeName = dicTypeName; + } + + /** **/ + public String getDicId() { + return this.dicId; + } + + /** **/ + public void setDicId(String dicId) { + this.dicId = dicId; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getDescribes() { + return describes; + } + + public void setDescribes(String describes) { + this.describes = describes; + } + + public String getClassifyCode() { + return classifyCode; + } + + public void setClassifyCode(String classifyCode) { + this.classifyCode = classifyCode; + } + + public String getClassifyCodeId() { + return classifyCodeId; + } + + public void setClassifyCodeId(String classifyCodeId) { + this.classifyCodeId = classifyCodeId; + } + + public Integer getShowIndex() { + return showIndex; + } + + public void setShowIndex(Integer showIndex) { + this.showIndex = showIndex; + } + + public String getAddCountrySortFlag() { + return addCountrySortFlag; + } + + public void setAddCountrySortFlag(String addCountrySortFlag) { + this.addCountrySortFlag = addCountrySortFlag; + } + + public String getBusinessParentId() { + return businessParentId; + } + + public void setBusinessParentId(String businessParentId) { + this.businessParentId = businessParentId; + } + + public String getTreePid() { + return treePid; + } + + public void setTreePid(String treePid) { + this.treePid = treePid; + } + + public String getOthers() { + return others; + } + + public void setOthers(String others) { + this.others = others; + } + + public String getCreationUser() { + return creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/DictionaryEO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/DictionaryEO.java new file mode 100644 index 00000000..1eae4b23 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/DictionaryEO.java @@ -0,0 +1,186 @@ +package com.adc.da.sys.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:TS_DICTIONARY DictionaryEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class DictionaryEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private String validFlag; + private String dictionaryName; + private String dictionaryCode; + private String id; + private Integer orderNum; + private String enable; + private String dictionType; + private String creationUser; + private String isRelate; + private String relateDicId; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • dictionarySeq -> dictionary_seq
  • + *
  • dictionaryName -> dictionary_name
  • + *
  • dictionaryCode -> dictionary_code
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "validFlag": return "valid_flag"; + case "dictionarySeq": return "dictionary_seq"; + case "dictionaryName": return "dictionary_name"; + case "dictionaryCode": return "dictionary_code"; + case "id": return "id"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • valid_flag -> validFlag
  • + *
  • dictionary_seq -> dictionarySeq
  • + *
  • dictionary_name -> dictionaryName
  • + *
  • dictionary_code -> dictionaryCode
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "valid_flag": return "validFlag"; + case "dictionary_seq": return "dictionarySeq"; + case "dictionary_name": return "dictionaryName"; + case "dictionary_code": return "dictionaryCode"; + case "id": return "id"; + default: return null; + } + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public String getValidFlag() { + return validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getDictionaryName() { + return this.dictionaryName; + } + + /** **/ + public void setDictionaryName(String dictionaryName) { + this.dictionaryName = dictionaryName; + } + + /** **/ + public String getDictionaryCode() { + return this.dictionaryCode; + } + + /** **/ + public void setDictionaryCode(String dictionaryCode) { + this.dictionaryCode = dictionaryCode; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public Integer getOrderNum() { + return orderNum; + } + + public void setOrderNum(Integer orderNum) { + this.orderNum = orderNum; + } + + public String getEnable() { + return enable; + } + + public void setEnable(String enable) { + this.enable = enable; + } + + public String getDictionType() { + return dictionType; + } + + public void setDictionType(String dictionType) { + this.dictionType = dictionType; + } + + public String getCreationUser() { + return creationUser; + } + + public void setCreationUser(String creationUser) { + this.creationUser = creationUser; + } + + public String getIsRelate() { + return isRelate; + } + + public void setIsRelate(String isRelate) { + this.isRelate = isRelate; + } + + public String getRelateDicId() { + return relateDicId; + } + + public void setRelateDicId(String relateDicId) { + this.relateDicId = relateDicId; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/LoginInfoEO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/LoginInfoEO.java index 3c4391bc..60949f05 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/entity/LoginInfoEO.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/LoginInfoEO.java @@ -1,6 +1,7 @@ package com.adc.da.sys.entity; import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; import java.util.Date; @@ -10,6 +11,7 @@ import java.util.Date; * 日期: 2018-09-03
    * 版权所有:版权归北京卡达克数据技术中心所有。
    */ +@TableName(value = "TS_LOGIN_INFO") public class LoginInfoEO extends BaseEntity { @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @@ -21,7 +23,7 @@ public class LoginInfoEO extends BaseEntity { private Date loginTime; private String userId; private String id; - private int countNum; +// private int countNum; private String maxCountDate; /** @@ -130,13 +132,13 @@ public class LoginInfoEO extends BaseEntity { this.id = id; } - public int getCountNum() { - return countNum; - } +// public int getCountNum() { +// return countNum; +// } - public void setCountNum(int countNum) { - this.countNum = countNum; - } +// public void setCountNum(int countNum) { +// this.countNum = countNum; +// } public String getMaxCountDate() { return maxCountDate; diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java index 2d961ec6..cf336364 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/OrgEO.java @@ -1,6 +1,7 @@ package com.adc.da.sys.entity; import com.adc.da.base.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; @@ -13,6 +14,7 @@ import java.util.List; * 日期: 2018-09-03
    * 版权所有:版权归北京卡达克数据技术中心所有。
    */ +@TableName(value = "ts_org") public class OrgEO extends BaseEntity implements Serializable { @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserEO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserEO.java index 1337593e..9890eb0b 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserEO.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserEO.java @@ -2,6 +2,7 @@ package com.adc.da.sys.entity; import com.adc.da.base.entity.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; import java.io.Serializable; import java.util.ArrayList; @@ -14,6 +15,7 @@ import java.util.List; * 日期: 2018-09-03
    * 版权所有:版权归北京卡达克数据技术中心所有。
    */ +@Data public class UserEO extends BaseEntity implements Serializable { private static final long serialVersionUID = 3658632939727891047L; @@ -32,6 +34,11 @@ public class UserEO extends BaseEntity implements Serializable { private String password; private String account; private String usid; + private String sex; + private String phone; + private String upDeptName; + private String upDeptId; + // 扩展字段 private String userType; private String orgId; @@ -51,8 +58,11 @@ public class UserEO extends BaseEntity implements Serializable { private Integer unlockFlag; private String userInfoId; private String orgType; - + private String institutionName; + private String institutionId; private String ssoId; + private String token; + private String institutionNameDepartment; /** * java字段名转换为原始数据库列名。如果不存在则返回null
    *

    字段列表:

    @@ -382,4 +392,12 @@ public class UserEO extends BaseEntity implements Serializable { public void setOrgType(String orgType) { this.orgType = orgType; } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserPhoneDTO.java b/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserPhoneDTO.java new file mode 100644 index 00000000..8c416903 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/entity/UserPhoneDTO.java @@ -0,0 +1,15 @@ +package com.adc.da.sys.entity; + +import lombok.Data; + +@Data +public class UserPhoneDTO { + + private String usId; + + private String userName; + + private Integer total; + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/page/DicTypeEOPage.java b/adc-da-sys/src/main/java/com/adc/da/sys/page/DicTypeEOPage.java new file mode 100644 index 00000000..d0c2aa42 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/page/DicTypeEOPage.java @@ -0,0 +1,149 @@ +package com.adc.da.sys.page; + +import com.adc.da.base.page.BasePage; + + +/** + * 功能:TS_DICTYPE DictypeEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class DicTypeEOPage extends BasePage { + + private String validFlag; + private String validFlagOperator = "like"; + private String parentId; + private String parentIdOperator = "like"; + private String dicTypeCode; + private String dicTypeCodeOperator = "="; + private String dicTypeName; + private String dicTypeNameOperator = "like"; + private String dicId; + private String dicIdOperator = "like"; + private String id; + private String idOperator = "like"; + private String describes; + private String describesOperator = "like"; + private Integer showIndex; + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getParentId() { + return this.parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public String getParentIdOperator() { + return this.parentIdOperator; + } + + public void setParentIdOperator(String parentIdOperator) { + this.parentIdOperator = parentIdOperator; + } + + public String getDicTypeCode() { + return this.dicTypeCode; + } + + public void setDicTypeCode(String dicTypeCode) { + this.dicTypeCode = dicTypeCode; + } + + public String getDicTypeCodeOperator() { + return this.dicTypeCodeOperator; + } + + public void setDicTypeCodeOperator(String dicTypeCodeOperator) { + this.dicTypeCodeOperator = dicTypeCodeOperator; + } + + public String getDicTypeName() { + return this.dicTypeName; + } + + public void setDicTypeName(String dicTypeName) { + this.dicTypeName = dicTypeName; + } + + public String getDicTypeNameOperator() { + return this.dicTypeNameOperator; + } + + public void setDicTypeNameOperator(String dicTypeNameOperator) { + this.dicTypeNameOperator = dicTypeNameOperator; + } + + public String getDicId() { + return this.dicId; + } + + public void setDicId(String dicId) { + this.dicId = dicId; + } + + public String getDicIdOperator() { + return this.dicIdOperator; + } + + public void setDicIdOperator(String dicIdOperator) { + this.dicIdOperator = dicIdOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getDescribes() { + return describes; + } + + public void setDescribes(String describes) { + this.describes = describes; + } + + public String getDescribesOperator() { + return describesOperator; + } + + public void setDescribesOperator(String describesOperator) { + this.describesOperator = describesOperator; + } + + public Integer getShowIndex() { + return showIndex; + } + + public void setShowIndex(Integer showIndex) { + this.showIndex = showIndex; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/page/DictionaryEOPage.java b/adc-da-sys/src/main/java/com/adc/da/sys/page/DictionaryEOPage.java new file mode 100644 index 00000000..094373c8 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/page/DictionaryEOPage.java @@ -0,0 +1,40 @@ +package com.adc.da.sys.page; + + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +/** + * 功能:TS_DICTIONARY DictionaryEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +@Data +public class DictionaryEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String dictionarySeq; + private String dictionarySeqOperator = "="; + private String dictionaryName; + private String dictionaryNameOperator = "="; + private String dictionaryCode; + private String dictionaryCodeOperator = "="; + private String id; + private String idOperator = "="; + private String notId; + + private String paixu; + private String shunxu; + private String sql; + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/page/MenuEOPage.java b/adc-da-sys/src/main/java/com/adc/da/sys/page/MenuEOPage.java new file mode 100644 index 00000000..60fbbba4 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/page/MenuEOPage.java @@ -0,0 +1,266 @@ +package com.adc.da.sys.page; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:TS_MENU MenuEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class MenuEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "="; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + private String remarks; + private String remarksOperator = "="; + private String permission; + private String permissionOperator = "="; + private String isShow; + private String isShowOperator = "="; + private String icon; + private String iconOperator = "="; + private String href; + private String hrefOperator = "="; + private String parentIds; + private String parentIdsOperator = "="; + private String parentId; + private String parentIdOperator = "="; + private String name; + private String nameOperator = "="; + private String id; + private String idOperator = "="; + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getRemarksOperator() { + return this.remarksOperator; + } + + public void setRemarksOperator(String remarksOperator) { + this.remarksOperator = remarksOperator; + } + + public String getPermission() { + return this.permission; + } + + public void setPermission(String permission) { + this.permission = permission; + } + + public String getPermissionOperator() { + return this.permissionOperator; + } + + public void setPermissionOperator(String permissionOperator) { + this.permissionOperator = permissionOperator; + } + + public String getIsShow() { + return this.isShow; + } + + public void setIsShow(String isShow) { + this.isShow = isShow; + } + + public String getIsShowOperator() { + return this.isShowOperator; + } + + public void setIsShowOperator(String isShowOperator) { + this.isShowOperator = isShowOperator; + } + + public String getIcon() { + return this.icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getIconOperator() { + return this.iconOperator; + } + + public void setIconOperator(String iconOperator) { + this.iconOperator = iconOperator; + } + + public String getHref() { + return this.href; + } + + public void setHref(String href) { + this.href = href; + } + + public String getHrefOperator() { + return this.hrefOperator; + } + + public void setHrefOperator(String hrefOperator) { + this.hrefOperator = hrefOperator; + } + + public String getParentIds() { + return this.parentIds; + } + + public void setParentIds(String parentIds) { + this.parentIds = parentIds; + } + + public String getParentIdsOperator() { + return this.parentIdsOperator; + } + + public void setParentIdsOperator(String parentIdsOperator) { + this.parentIdsOperator = parentIdsOperator; + } + + public String getParentId() { + return this.parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public String getParentIdOperator() { + return this.parentIdOperator; + } + + public void setParentIdOperator(String parentIdOperator) { + this.parentIdOperator = parentIdOperator; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNameOperator() { + return this.nameOperator; + } + + public void setNameOperator(String nameOperator) { + this.nameOperator = nameOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/page/OrgEOPage.java b/adc-da-sys/src/main/java/com/adc/da/sys/page/OrgEOPage.java new file mode 100644 index 00000000..f00456b9 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/page/OrgEOPage.java @@ -0,0 +1,312 @@ +package com.adc.da.sys.page; + +import com.adc.da.base.page.BasePage; + +/** + * 功能:TS_ORG OrgEOPage
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class OrgEOPage extends BasePage { + + private String modifyTime; + private String modifyTime1; + private String modifyTime2; + private String modifyTimeOperator = "like"; + private String creationTime; + private String creationTime1; + private String creationTime2; + private String creationTimeOperator = "like"; + private String validFlag; + private String validFlagOperator = "like"; + private String isShow; + private String isShowOperator = "like"; + private String parentIds; + private String parentIdsOperator = "like"; + private String parentId; + private String parentIdOperator = "like"; + private String shotName; + private String shotNameOperator = "like"; + private String remarks; + private String remarksOperator = "like"; + private String orgDesc; + private String orgDescOperator = "like"; + private String orgType; + private String orgTypeOperator = "like"; + private String orgCode; + private String orgCodeOperator = "like"; + private String orgName; + private String orgNameOperator = "like"; + private String id; + private String idOperator = "like"; + + private String orgId; + private String roleName; + + private String processFlag; + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public String getOrgId() { + return orgId; + } + + public void setOrgId(String orgId) { + this.orgId = orgId; + } + + public String getModifyTime() { + return this.modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getModifyTime1() { + return this.modifyTime1; + } + + public void setModifyTime1(String modifyTime1) { + this.modifyTime1 = modifyTime1; + } + + public String getModifyTime2() { + return this.modifyTime2; + } + + public void setModifyTime2(String modifyTime2) { + this.modifyTime2 = modifyTime2; + } + + public String getModifyTimeOperator() { + return this.modifyTimeOperator; + } + + public void setModifyTimeOperator(String modifyTimeOperator) { + this.modifyTimeOperator = modifyTimeOperator; + } + + public String getCreationTime() { + return this.creationTime; + } + + public void setCreationTime(String creationTime) { + this.creationTime = creationTime; + } + + public String getCreationTime1() { + return this.creationTime1; + } + + public void setCreationTime1(String creationTime1) { + this.creationTime1 = creationTime1; + } + + public String getCreationTime2() { + return this.creationTime2; + } + + public void setCreationTime2(String creationTime2) { + this.creationTime2 = creationTime2; + } + + public String getCreationTimeOperator() { + return this.creationTimeOperator; + } + + public void setCreationTimeOperator(String creationTimeOperator) { + this.creationTimeOperator = creationTimeOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + + public String getIsShow() { + return this.isShow; + } + + public void setIsShow(String isShow) { + this.isShow = isShow; + } + + public String getIsShowOperator() { + return this.isShowOperator; + } + + public void setIsShowOperator(String isShowOperator) { + this.isShowOperator = isShowOperator; + } + + public String getParentIds() { + return this.parentIds; + } + + public void setParentIds(String parentIds) { + this.parentIds = parentIds; + } + + public String getParentIdsOperator() { + return this.parentIdsOperator; + } + + public void setParentIdsOperator(String parentIdsOperator) { + this.parentIdsOperator = parentIdsOperator; + } + + public String getParentId() { + return this.parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public String getParentIdOperator() { + return this.parentIdOperator; + } + + public void setParentIdOperator(String parentIdOperator) { + this.parentIdOperator = parentIdOperator; + } + + public String getShotName() { + return this.shotName; + } + + public void setShotName(String shotName) { + this.shotName = shotName; + } + + public String getShotNameOperator() { + return this.shotNameOperator; + } + + public void setShotNameOperator(String shotNameOperator) { + this.shotNameOperator = shotNameOperator; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getRemarksOperator() { + return this.remarksOperator; + } + + public void setRemarksOperator(String remarksOperator) { + this.remarksOperator = remarksOperator; + } + + public String getOrgDesc() { + return this.orgDesc; + } + + public void setOrgDesc(String orgDesc) { + this.orgDesc = orgDesc; + } + + public String getOrgDescOperator() { + return this.orgDescOperator; + } + + public void setOrgDescOperator(String orgDescOperator) { + this.orgDescOperator = orgDescOperator; + } + + public String getOrgType() { + return this.orgType; + } + + public void setOrgType(String orgType) { + this.orgType = orgType; + } + + public String getOrgTypeOperator() { + return this.orgTypeOperator; + } + + public void setOrgTypeOperator(String orgTypeOperator) { + this.orgTypeOperator = orgTypeOperator; + } + + public String getOrgCode() { + return this.orgCode; + } + + public void setOrgCode(String orgCode) { + this.orgCode = orgCode; + } + + public String getOrgCodeOperator() { + return this.orgCodeOperator; + } + + public void setOrgCodeOperator(String orgCodeOperator) { + this.orgCodeOperator = orgCodeOperator; + } + + public String getOrgName() { + return this.orgName; + } + + public void setOrgName(String orgName) { + this.orgName = orgName; + } + + public String getOrgNameOperator() { + return this.orgNameOperator; + } + + public void setOrgNameOperator(String orgNameOperator) { + this.orgNameOperator = orgNameOperator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getProcessFlag() { + return processFlag; + } + + public void setProcessFlag(String processFlag) { + this.processFlag = processFlag; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/page/OrgMenuEOPage.java b/adc-da-sys/src/main/java/com/adc/da/sys/page/OrgMenuEOPage.java new file mode 100644 index 00000000..f9f17b2c --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/page/OrgMenuEOPage.java @@ -0,0 +1,87 @@ +package com.adc.da.sys.page; + +import com.adc.da.base.page.BasePage; + + +/** + * 功能:TS_ORG_MENU OrgMenuEOPage
    + * 作者:code generator
    + * 日期: 2020-09-23
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class OrgMenuEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String orgId; + private String orgIdOperator = "="; + private String orgRootId; + private String orgRootIdOperator = "="; + private String validFlag; + private String validFlagOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getOrgId() { + return this.orgId; + } + + public void setOrgId(String orgId) { + this.orgId = orgId; + } + + public String getOrgIdOperator() { + return this.orgIdOperator; + } + + public void setOrgIdOperator(String orgIdOperator) { + this.orgIdOperator = orgIdOperator; + } + + public String getOrgRootId() { + return this.orgRootId; + } + + public void setOrgRootId(String orgRootId) { + this.orgRootId = orgRootId; + } + + public String getOrgRootIdOperator() { + return this.orgRootIdOperator; + } + + public void setOrgRootIdOperator(String orgRootIdOperator) { + this.orgRootIdOperator = orgRootIdOperator; + } + + public String getValidFlag() { + return this.validFlag; + } + + public void setValidFlag(String validFlag) { + this.validFlag = validFlag; + } + + public String getValidFlagOperator() { + return this.validFlagOperator; + } + + public void setValidFlagOperator(String validFlagOperator) { + this.validFlagOperator = validFlagOperator; + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/page/RoleUserEOPage.java b/adc-da-sys/src/main/java/com/adc/da/sys/page/RoleUserEOPage.java new file mode 100644 index 00000000..5de5faac --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/page/RoleUserEOPage.java @@ -0,0 +1,41 @@ +package com.adc.da.sys.page; + +import com.adc.da.base.page.BasePage; +import lombok.Data; + +import java.util.List; + +@Data +public class RoleUserEOPage extends BasePage { + + private String userId; + private String userName; + private String userNameOperator = "="; + private String roleId; + private String roleName; + private String roleNameOperator = "="; + private String orgId; + private String orgType; + private String orgName; + private String orgNameOperator = "="; + private String pOrgId; + private String pOrgName; + private String email; + + private String departName; + + private String departId; + + private String validFlag; + private String validFlagOperator = "="; + + private String roleHierarchyName; + + private List orgIdList; + private List roleHierarchy; + private List roleNameList; + private List roleIdList; + private List userNameList; + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/controller/SarMenuStandardController.java b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/controller/SarMenuStandardController.java new file mode 100644 index 00000000..834a0ed9 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/controller/SarMenuStandardController.java @@ -0,0 +1,81 @@ +package com.adc.da.sys.sarMenuStandard.controller; + + +import com.adc.da.base.web.BaseController; +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** +*

    + * 前端控制器 + *

    +* +* @author super_liu +* @since 2021-07-07 +*/ +@RestController +@Api(tags = "福田标准法规--标准法规库-菜单标准体系") +@RequestMapping("/${restPath}/lawss/sarMenuStandard") +public class SarMenuStandardController extends BaseController { + + @Autowired + private ISarMenuStandardService iSarMenuStandardService; + + @ApiOperation("查询所有菜单") + @GetMapping + public ResponseMessage> getAll(@RequestParam String dicId){ + List sarMenus=iSarMenuStandardService.getAll(dicId); + return Result.success(sarMenus); + } + + @ApiOperation("查询有权限资源") + @GetMapping("/getListStand") + public ResponseMessage> getListStand(SarMenuStandard sarMenuStandard){ + List tsResources=iSarMenuStandardService.getListStand(sarMenuStandard); + return Result.success(tsResources); + } + + @ApiOperation("根据ID查询菜单") + @GetMapping("/getSarMenuStandardById") + public ResponseMessage getSarMenuStandardById(@RequestParam String menuId){ + SarMenuStandard sarMenus = iSarMenuStandardService.getById(menuId); + if(sarMenus != null && sarMenus.getParentIds() != null && StringUtils.isNotBlank(sarMenus.getParentIds())){ + List menuStandards = iSarMenuStandardService.getMenuByIds(Arrays.asList(sarMenus.getParentIds().split(","))); + if(!menuStandards.isEmpty()){ + String parentIdsName = menuStandards.stream().map(SarMenuStandard::getMenuName).collect(Collectors.joining(",")); + sarMenus.setParentIdsName(parentIdsName); + } + } + return Result.success(sarMenus); + } + + @ApiOperation("添加菜单") + @PostMapping("/add") + public ResponseMessage addMenu(@RequestBody SarMenuStandard sarMenu){ + return iSarMenuStandardService.addMenu(sarMenu); + } + + @ApiOperation("编辑菜单") + @PutMapping + public ResponseMessage updateMenu(@Validated(SarMenuStandard.update.class) @RequestBody SarMenuStandard sarMenu){ + return iSarMenuStandardService.updateMenu(sarMenu); + } + + @ApiOperation("删除菜单") + @DeleteMapping + public ResponseMessage delMenu(@RequestParam String menuId){ + return iSarMenuStandardService.delMenu(menuId); + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/dao/SarMenuStandardDao.java b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/dao/SarMenuStandardDao.java new file mode 100644 index 00000000..03031654 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/dao/SarMenuStandardDao.java @@ -0,0 +1,35 @@ +package com.adc.da.sys.sarMenuStandard.dao; + +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

    + * Mapper 接口 + *

    + * + * @author super_liu + * @since 2021-07-07 + */ +@Repository +public interface SarMenuStandardDao extends BaseMapper { + + String updateStateScheduledSql = "SELECT " + + "ID,DISPLAY_SEQ,SOR_DIVIDE,CREATION_TIME,VALID_FLAG,PARENT_IDS,MENU_NAME,DIC_ID,PARENT_ID,MODIFY_TIME,HREF,REMARKS " + + "FROM sar_menu_standard ${ew.customSqlSegment} order by find_in_set(ID,#{topIds})"; + + /** + * 自动更新文本状态通用查询 + * @param queryWrapper + * @return + */ + @Select(updateStateScheduledSql) + List selectTopList(@Param("ew") QueryWrapper queryWrapper,@Param("topIds") String topIds); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/SarMenuStandard.java b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/SarMenuStandard.java new file mode 100644 index 00000000..7cea639d --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/SarMenuStandard.java @@ -0,0 +1,110 @@ +package com.adc.da.sys.sarMenuStandard.entity; + +import com.adc.da.base.entity.BaseEntity; +import com.adc.da.sys.utils.treetool.annotation.TreeNodeId; +import com.adc.da.sys.utils.treetool.annotation.TreeNodeName; +import com.adc.da.sys.utils.treetool.annotation.TreeNodeParentId; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +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; + +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +/** + *

    + * + *

    + * + * @author super_liu + * @since 2021-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SarMenuStandard对象", description="") +public class SarMenuStandard extends BaseEntity { + public interface update{ + } + + private static final long serialVersionUID = 1L; + + @TreeNodeId + @NotNull(message = "id不能为空",groups = {update.class}) + @ApiModelProperty(value = "主键") + @TableId(value = "ID",type = IdType.UUID) + private String id; + + @ApiModelProperty(value = "标准法规划分") + @TableField("SOR_DIVIDE") + private String sorDivide; + + @TreeNodeName + @ApiModelProperty(value = "目录名称") + @TableField("MENU_NAME") + private String menuName; + + @TreeNodeParentId + @ApiModelProperty(value = "父级ID") + @TableField("PARENT_ID") + private String parentId; + + @ApiModelProperty(value = "父级ID集合") + @TableField("PARENT_IDS") + private String parentIds; + + @ApiModelProperty(value = "排序序号") + @TableField("DISPLAY_SEQ") + private Integer displaySeq; + + @ApiModelProperty(value = "路径") + @TableField("HREF") + private String href; + + @ApiModelProperty(value = "是否有效") + @TableField("VALID_FLAG") + private Integer validFlag; + + @ApiModelProperty(value = "创建时间") + @TableField("CREATION_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + @ApiModelProperty(value = "修改时间") + @TableField("MODIFY_TIME") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + + @ApiModelProperty(value = "备注") + @TableField("REMARKS") + private String remarks; + + @ApiModelProperty(value = "数据字典ID") + @TableField("DIC_ID") + private String dicId; + + @ApiModelProperty(value = "子菜单") + @TableField(exist = false) + private List children; + + @TableField(exist=false) + private List roleIds; + + @TableField(exist=false) + private List childMenuIds; + + @TableField(exist=false) + private String parentIdsName; + + @ApiModelProperty(value = "树结构数据 区分 类型: 标准数据 tsr 技术系列 sarMs") + @TableField(exist = false) + private String treeType; + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/service/ISarMenuStandardService.java b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/service/ISarMenuStandardService.java new file mode 100644 index 00000000..63ff3208 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/service/ISarMenuStandardService.java @@ -0,0 +1,59 @@ +package com.adc.da.sys.sarMenuStandard.service; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author super_liu + * @since 2021-07-07 + */ +public interface ISarMenuStandardService extends IService { + + List getChildMenuList(String menuId); + + /** + * 查询所有菜单 + */ + List getAll(String dicId); + + List getListStand(SarMenuStandard sarMenuStandard); + + + /** + * 添加菜单 + * @param sarMenu:菜单信息 + * @return ResponseMessage + */ + ResponseMessage addMenu(SarMenuStandard sarMenu); + + /** + * 编辑菜单 + * @param sarMenu:菜单信息 + * @return ResponseMessage + */ + ResponseMessage updateMenu(SarMenuStandard sarMenu); + + /** + * 删除菜单 + * @param menuId :菜单ID + * @return ResponseMessage + */ + ResponseMessage delMenu(String menuId); + + /** + * 通过Ids查询menu + * @param menuIds :菜单Ids + * @return List + */ + List getMenuByIds(List menuIds); + + SarMenuStandard selectMenuById(String id); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/service/impl/SarMenuStandardServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/service/impl/SarMenuStandardServiceImpl.java new file mode 100644 index 00000000..29fa1c9d --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/service/impl/SarMenuStandardServiceImpl.java @@ -0,0 +1,235 @@ +package com.adc.da.sys.sarMenuStandard.service.impl; + +import com.adc.da.http.ResponseMessage; +import com.adc.da.http.Result; +import com.adc.da.sys.sarMenuStandard.dao.SarMenuStandardDao; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService; +import com.adc.da.sys.util.treetool.Tree; +import com.adc.da.sys.util.treetool.TreeNode; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

    + * 服务实现类 + *

    + * + * @author super_liu + * @since 2021-07-07 + */ +@Service +public class SarMenuStandardServiceImpl extends ServiceImpl implements ISarMenuStandardService { + + @Autowired + private SarMenuStandardDao dao; + + @Override + public SarMenuStandard selectMenuById(String id){ + return dao.selectById(id); + } + + public List getChildMenuList (String menuId) { + List menuIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(menuId)) { + List SarMenuList = dao.selectList(new QueryWrapper<>()); + Tree tree = new Tree(SarMenuList); + TreeNode treeNode = tree.getTreeNode(menuId); + if (treeNode != null) { + menuIds.add(treeNode.getNodeId()); + for (TreeNode node : treeNode.getAllChildren()) { + menuIds.add(node.getNodeId()); + } + } + } + return menuIds; + } + + /** + * 查询有权限菜单 + * @param sarMenuStandard + */ + @Override + public List getListStand(SarMenuStandard sarMenuStandard) { + List TsResources = new ArrayList<>(); + + QueryWrapper queryWrapper =new QueryWrapper<>(); + if(sarMenuStandard.getSorDivide()!=null){ + queryWrapper.eq("sor_divide",sarMenuStandard.getSorDivide()); + } + + if(sarMenuStandard.getDicId()!=null){ + queryWrapper.eq("DIC_ID",sarMenuStandard.getDicId()); + } + queryWrapper.isNull("PARENT_ID"); + queryWrapper.orderByAsc("DISPLAY_SEQ"); + TsResources=dao.selectList(queryWrapper); + + for(SarMenuStandard resource:TsResources){ + resource.setTreeType("sarMs"); + QueryWrapper TsResourceQueryWrapper=new QueryWrapper<>(); + TsResourceQueryWrapper.like("PARENT_IDS",resource.getId()); + TsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); + List children=dao.selectList(TsResourceQueryWrapper); + resource.setChildren(recursionGetListChildrenStand((resource),(children))); + } + + return TsResources; + } + + /** + * 递归调用获取子节点 + * @return List + */ + private List recursionGetListChildrenStand(SarMenuStandard resource,List children){ + List tsResources = children.stream() + .filter(resource1 -> resource1.getParentId().equals(resource.getId())) + .collect(Collectors.toList()); + if(!tsResources.isEmpty()){ + tsResources = tsResources.stream().sorted(Comparator.comparing(resource1 -> resource1.getDisplaySeq())).collect(Collectors.toList()); + tsResources.forEach(resource1 -> { + resource1.setTreeType("sarMs"); + resource1.setChildren(recursionGetListChildrenStand((resource1),(children))); + }); + } + return tsResources; + } + + /** + * 查询所有菜单 + */ + @Override + public List getAll(String dicId) { + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.eq("DIC_ID",dicId); + sarMenuQueryWrapper.orderByAsc("DISPLAY_SEQ"); +// sarMenuQueryWrapper.isNull("PARENT_ID"); + List sarMenus=dao.selectList(sarMenuQueryWrapper); + List dtas=new ArrayList<>(); + List remove=new ArrayList<>(); + for (SarMenuStandard sarMenuStandard:sarMenus) { + if (null==sarMenuStandard.getParentId() ){ + dtas.add(sarMenuStandard); + remove.add(sarMenuStandard); + } + } + sarMenus.removeAll(remove); + for(SarMenuStandard sarMenu:dtas){ + sarMenu.setChildren(recursionGetChildrens(sarMenu,sarMenus)); + } + + return dtas; + } + + private List recursionGetChildrens( SarMenuStandard Menu, List sarMenuStandards){ + List children=new ArrayList<>(); + sarMenuStandards.forEach(sarMenuStandard -> { + if (Menu.getId().equals(sarMenuStandard.getParentId())){ + children.add(sarMenuStandard); + } + }); + sarMenuStandards.removeAll(children); + for(SarMenuStandard sarMenu:children){ + sarMenu.setChildren(recursionGetChildrens(sarMenu,sarMenuStandards)); + } + return children; + } + + /** + * 添加菜单 + * @param sarMenu:菜单信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage addMenu(SarMenuStandard sarMenu) { + SarMenuStandard save = new SarMenuStandard(); + if(sarMenu.getParentId() != null && StringUtils.isNotBlank(sarMenu.getParentId())){ + SarMenuStandard parent=dao.selectById(sarMenu.getParentId()); + if(parent==null){ + return Result.error("该父菜单不存在"); + } + } + sarMenu.setCreationTime(new Date()); + sarMenu.setModifyTime(new Date()); + dao.insert(sarMenu); + return Result.success(); + } + + /** + * 编辑菜单 + * @param sarMenu:菜单信息 + * @return ResponseMessage + */ + @Override + public ResponseMessage updateMenu(SarMenuStandard sarMenu) { + SarMenuStandard oldMenu=dao.selectById(sarMenu.getId()); + if(oldMenu==null){ + return Result.error("该菜单不存在"); + } + if(sarMenu.getParentId() != null && StringUtils.isNotBlank(sarMenu.getParentId())){ + SarMenuStandard parent=dao.selectById(sarMenu.getParentId()); + if(parent==null){ + return Result.error("父节点不存在"); + } + } + dao.updateById(sarMenu); + return Result.success(); + } + + /** + * 删除菜单 + * @param menuId :菜单ID + * @return ResponseMessage + */ + @Override + public ResponseMessage delMenu(String menuId) { + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.eq("parent_id",menuId); + List children=dao.selectList(sarMenuQueryWrapper); + if(children !=null && !children.isEmpty()){ + return Result.error("该菜单有子节点,无法删除"); + } + dao.deleteById(menuId); + return Result.success(); + } + + /** + * 通过Ids查询menu + * @param menuIds :菜单Ids + * @return List + */ + @Override + public List getMenuByIds(List menuIds) { + if(menuIds!=null&&menuIds.size()>0){ + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.in("id",menuIds); + return dao.selectList(sarMenuQueryWrapper); + } + return new ArrayList<>(); + } + + /** + * 递归调用获取子节点 + * @param parent:父节点 + * @return List + */ + private List recursionGetChildren(SarMenuStandard parent){ + QueryWrapper sarMenuQueryWrapper=new QueryWrapper<>(); + sarMenuQueryWrapper.orderByAsc("DISPLAY_SEQ"); + sarMenuQueryWrapper.eq("PARENT_ID",parent.getId()); + List children=dao.selectList(sarMenuQueryWrapper); + for(SarMenuStandard sarMenu:children){ + sarMenu.setChildren(recursionGetChildren((sarMenu))); + } + return children; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/IDicEOService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/IDicEOService.java new file mode 100644 index 00000000..20dcfe30 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/IDicEOService.java @@ -0,0 +1,54 @@ +package com.adc.da.sys.service; + +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.entity.DictionaryEO; +import com.adc.da.sys.page.DictionaryEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface IDicEOService extends IService { + + public DictionaryEO getDictionaryEOById(String id); + + public DictionaryEO getDictionaryEOByDicCode(String dictionaryCode); + + public DictionaryEO getDicEOAndTypeEoByDicCode(String dictionaryCode); + + public DictionaryEO getDictionaryEOByDicName(String dictionaryName); + + public void deleteDic(String id); + + //gaoyan + public List getDictionaryEO(); + + public List getDictionaryEOByType(List types); + + public Integer countByCodeOrName(DictionaryEOPage page); + + public List queryAllDicByPage(DictionaryEOPage page); + + public Integer queryAllDicByCount(DictionaryEOPage page); + + public List getDictionarySelList(String id); + + public List getDictionaryCodeSelList(String id); + + public int queryUseByCount(String id); + + public int insertSelective(DictionaryEO dictionaryEO); + + public int updateByPrimaryKeySelective(DictionaryEO dictionaryEO); + + public List queryByPage(DictionaryEOPage page); + + public int queryByCount(DictionaryEOPage page); + + public List queryByList(DictionaryEOPage page); + + public String createDictionary(DictionaryEO dictionaryEO); + + public String updateDictionary(DictionaryEO dictionaryEO); + + public void deleteDicAndType(String id); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/IDicTypeEOService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/IDicTypeEOService.java new file mode 100644 index 00000000..0b1d5fc2 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/IDicTypeEOService.java @@ -0,0 +1,91 @@ +package com.adc.da.sys.service; + +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.page.DicTypeEOPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +public interface IDicTypeEOService extends IService { + + public DicTypeEO getDicTypeEOById(String id); + + public void deleteDicTypeByIdInBatch(List ids); + + public List getTypeIdByDicIdAndTypeName(String dicId, String id, String typeName, String parentId); + + + public List getDicTypeEOByDicTypeCode(String dicId, String id, String dicTypeCode, String parentId); + + public void batchInsertTypeEo(List ModelType); + + public void deleteDicTypeByDicId(String id); + + /** + * @Author super_liu + * @Description 根据数据字典编码查询字典类型 + * Date 2018/9/11 15:09 + * @Param [dictionaryCode] + * @return java.util.List + **/ + public List> getDicTypeByDicCode(String dictionaryCode); + + public List getFineDicTypeByDicCode(String dictionaryCode); + + //liwenxuan:国家地区新增 + public List queryByPageNoParentId(DicTypeEOPage page); + + public int queryByCountCounter(DicTypeEOPage page); + public List> getDicTypeByParentCode(String dicTypeCode); + + public List getDicTypeByDicTypeName(DicTypeEO dicTypeEO); + + public List getDicTypeEOTypeNameAndCode(String id, String dicTypeName, String dicTypeCode, String parentId); + public List getDicTypeEOTypeNameAndCode1(String id, String dicTypeName, String dicTypeCode, String parentId); + + // 标准法规属性管理中删除之前查看其它地方是否引用 + public boolean getDicTypeByDicTypeCode(String dicTypeCode); + + public List getDicEOByDicTypeCode(String dicTypeCode); + + public List getDicEOByDicTypeCodeParent(String dicTypeCode); + + public int deleteByDicIdAndDicTypeCode(DicTypeEO dicTypeEO); + + public int updateByDicTypeCode(DicTypeEO dicTypeEO); + + public boolean judgeHaveUse(String sortCode, String countryCode); + + public void deleteDicTypeByCodeAndParentid(List codes); + + public int deleteByDictionaryId(String dicId); + + public List getDicTypeByDicId(String dicId); + + public String getDicNamesByCodes(List codeList,String dicId); + + public int insertSelective(DicTypeEO dictionaryEO); + + public int updateByPrimaryKeySelective(DicTypeEO dictionaryEO); + + public List queryByPage(DicTypeEOPage page); + + public int queryByCount(DicTypeEOPage page); + + public List queryByList(DicTypeEOPage page); + + public Integer saveDictype(DicTypeEO dicTypeEO); + + public DicTypeEO getDicTypeById(String id); + + public void delete(List ids); + + public Map getDicTypeListCode(); + + public Map getDicTypeListCodeByType(List types); + + public List> getDicTypeByParentCodes(String dicTypeCode); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/IRoleEOService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/IRoleEOService.java index 0a183788..f233379d 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/IRoleEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/IRoleEOService.java @@ -38,6 +38,6 @@ public interface IRoleEOService extends IService { public List selectByNameAndId(String id, String name); - + public List selectIdByNames(List nameList); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/IRoleSarMenuEOService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/IRoleSarMenuEOService.java index b84df62a..23a2b64c 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/IRoleSarMenuEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/IRoleSarMenuEOService.java @@ -18,6 +18,6 @@ public interface IRoleSarMenuEOService extends IService { public List selectSarMenuRoots(); - public int insertSubMenu (RoleSarMenuEO roleSarMenuEO); + public int insertSubMenu(RoleSarMenuEO roleSarMenuEO); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserConfigEOService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserConfigEOService.java index 567b2af3..397c094b 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserConfigEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserConfigEOService.java @@ -12,6 +12,6 @@ public interface IUserConfigEOService extends IService { public List queryByList(UserConfigEOPage page); - public int createPageConfig (String userId); + public int createPageConfig(String userId); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserEOService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserEOService.java index 1818f2d0..133c493e 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserEOService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/IUserEOService.java @@ -3,7 +3,10 @@ package com.adc.da.sys.service; import com.adc.da.base.page.BasePage; import com.adc.da.http.ResponseMessage; import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.entity.UserPhoneDTO; +import com.adc.da.sys.page.RoleUserEOPage; import com.adc.da.sys.page.UserEOPage; +import com.adc.da.sys.vo.RoleUserVO; import com.adc.da.sys.vo.UserVO; import com.baomidou.mybatisplus.extension.service.IService; @@ -23,6 +26,8 @@ public interface IUserEOService extends IService { public int delete(List ids); + List getUserByRolePage(RoleUserEOPage page); + public UserEO getUserWithRoles(String id); public UserEO getUserWithRolesAll(String id); @@ -50,6 +55,8 @@ public interface IUserEOService extends IService { public List selectThatOrgUser(String userId); + String selectPositionByUserId(String userId); + public List queryUserEoList(UserEOPage page); public List queryUserInfoByWordNum(String workNum); @@ -67,7 +74,14 @@ public interface IUserEOService extends IService { public UserEO getOrgIdByUserId(String userId); + public List getUser(String userId); + public UserEO getUserByLoginNameNotDeleted(String userName); + //手机端接口 只查人 + List getUserByName(String name,Integer page); + + String getName(String name); + } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/DicEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/DicEOServiceImpl.java new file mode 100644 index 00000000..31770197 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/DicEOServiceImpl.java @@ -0,0 +1,239 @@ +package com.adc.da.sys.service.impl; + +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.dao.DicEODao; +import com.adc.da.sys.entity.DictionaryEO; +import com.adc.da.sys.page.DictionaryEOPage; +import com.adc.da.sys.service.IDicEOService; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * 新增数据字典属性 +* */ +@Service("dicEOService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +@Slf4j +public class DicEOServiceImpl extends ServiceImpl implements IDicEOService { + + private static final Logger logger = LoggerFactory.getLogger(DictionaryEO.class); + + @Autowired + private DicEODao dicEODao; + @Autowired + private IDicTypeEOService dicTypeEODao; + + public DicEODao getDao() { + return dicEODao; + } + + /** + * 查询字典详情 + */ + @Transactional(readOnly = true, rollbackFor = Exception.class) + public DictionaryEO getDictionaryById(String id) { + return dicEODao.getDictionaryEOById(id); + } + + @Transactional(readOnly = true, rollbackFor = Exception.class) + public DictionaryEO getDictionaryByDicCode(String dictionaryCode) { + return dicEODao.getDictionaryEOByDicCode(dictionaryCode); + } + + @Override + public DictionaryEO getDictionaryEOById(String id) { + return dicEODao.getDictionaryEOById(id); + } + + @Override + public DictionaryEO getDictionaryEOByDicCode(String dictionaryCode) { + return dicEODao.getDictionaryEOByDicCode(dictionaryCode); + } + + @Transactional(readOnly = true, rollbackFor = Exception.class) + public DictionaryEO getDicEOAndTypeEoByDicCode(String dictionaryCode) { + return dicEODao.getDicEOAndTypeEoByDicCode(dictionaryCode); + } + + @Override + public DictionaryEO getDictionaryEOByDicName(String dictionaryName) { + return dicEODao.getDictionaryEOByDicName(dictionaryName); + } + + @Override + public void deleteDic(String id) { + dicEODao.deleteDic(id); + } + + @Override + public List getDictionaryEO() { + return dicEODao.getDictionaryEO(); + } + + @Override + public List getDictionaryEOByType(List types) { + return dicEODao.getDictionaryEOByType(types); + } + + @Override + public Integer countByCodeOrName(DictionaryEOPage page) { + return dicEODao.countByCodeOrName(page); + } + + @Transactional(readOnly = true, rollbackFor = Exception.class) + public DictionaryEO getDictionaryByDicName(String dictionaryName) { + return dicEODao.getDictionaryEOByDicName(dictionaryName); + } + + //删除字典 + public void delete(String id) { + dicEODao.deleteDic(id); + } + + //删除字典 + public void deleteDicAndType(String id) { + dicEODao.deleteDic(id); + dicTypeEODao.deleteByDictionaryId(id); + } + + public int queryUseByCount(String id){ + return dicEODao.queryUseByCount(id); + } + + @Override + public int insertSelective(DictionaryEO dictionaryEO) { + return dicEODao.insertSelective(dictionaryEO); + } + + @Override + public int updateByPrimaryKeySelective(DictionaryEO dictionaryEO) { + return dicEODao.updateByPrimaryKeySelective(dictionaryEO); + } + + @Override + public List queryByPage(DictionaryEOPage page) { + Integer rowCount = dicEODao.queryByCount(page); + page.getPager().setRowCount(rowCount); + return dicEODao.queryByPage(page); + } + + @Override + public int queryByCount(DictionaryEOPage page) { + return dicEODao.queryByCount(page); + } + + @Override + public List queryByList(DictionaryEOPage page) { + return dicEODao.queryByList(page); + } + + /*** + * @Description: 新增数据字典 + * @Author: super_liu + * @Date: 2020/8/21 14:34 + * @Param: [dictionaryEO] + * @Return: int + */ + @Override + public String createDictionary(DictionaryEO dictionaryEO){ + // 验证编码是否存在 + DictionaryEOPage page = new DictionaryEOPage(); + page.setDictionaryCode(dictionaryEO.getDictionaryCode()); + int countCode = dicEODao.countByCodeOrName(page); + if (countCode > 0) { + return "数据字典编码已存在"; + } + // 验证 + page.setDictionaryCode(null); + page.setDictionaryName(dictionaryEO.getDictionaryName()); + int countName = dicEODao.countByCodeOrName(page); + if (countName > 0) { + return "数据字典名称已存在"; + } + dictionaryEO.setId(UUIDUtils.randomUUID20()); + dictionaryEO.setEnable("1"); + dictionaryEO.setValidFlag("0"); + dictionaryEO.setCreationUser(LoginUserUtil.getUserId()); + dictionaryEO.setCreationTime(new Date()); + dictionaryEO.setModifyTime(new Date()); + int countSuc = dicEODao.insertSelective(dictionaryEO); + if (countSuc > 0) { + return "success"; + } else { + return "error"; + } + } + + /*** + * @Description: 修改数据字典 + * @Author: super_liu + * @Date: 2020/8/21 15:42 + * @Param: [dictionaryEO] + * @Return: java.lang.String + */ + @Override + public String updateDictionary(DictionaryEO dictionaryEO){ + // 验证编码是否存在 + DictionaryEOPage page = new DictionaryEOPage(); + page.setNotId(dictionaryEO.getId()); + page.setDictionaryCode(dictionaryEO.getDictionaryCode()); + int countCode = dicEODao.countByCodeOrName(page); + if (countCode > 0) { + return "数据字典编码已存在"; + } + // 验证 + page.setDictionaryCode(null); + page.setDictionaryName(dictionaryEO.getDictionaryName()); + int countName = dicEODao.countByCodeOrName(page); + if (countName > 0) { + return "数据字典名称已存在"; + } + dictionaryEO.setModifyTime(new Date()); + int countSuc = dicEODao.updateByPrimaryKeySelective(dictionaryEO); + if (countSuc > 0) { + return "success"; + } else { + return "error"; + } + } + + public List queryAllDicByPage (DictionaryEOPage page) { + Integer rowCount = dicEODao.queryAllDicByCount(page); + page.getPager().setRowCount(rowCount); + return dicEODao.queryAllDicByPage(page); + } + + @Override + public Integer queryAllDicByCount(DictionaryEOPage page) { + return dicEODao.queryAllDicByCount(page); + } + + /*** + * @Description: 以下拉框格式查询所有类别 + * @Author: super_liu + * @Date: 2020/9/3 10:08 + * @Param: [id] + * @Return: java.util.List + */ + public List getDictionarySelList(String id){ + return dicEODao.getDictionarySelList(id); + } + + public List getDictionaryCodeSelList(String id){ + return dicEODao.getDictionaryCodeSelList(id); + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/DicTypeEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/DicTypeEOServiceImpl.java new file mode 100644 index 00000000..cf7a4b89 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/DicTypeEOServiceImpl.java @@ -0,0 +1,454 @@ +package com.adc.da.sys.service.impl; + +import com.adc.da.sys.common.SelectionResult; +import com.adc.da.sys.dao.DicTypeEODao; +import com.adc.da.sys.entity.DicTypeEO; +import com.adc.da.sys.entity.DictionaryEO; +import com.adc.da.sys.page.DicTypeEOPage; +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService; +import com.adc.da.sys.service.IDicEOService; +import com.adc.da.sys.service.IDicTypeEOService; +import com.adc.da.util.LoginUserUtil; +import com.adc.da.util.UUIDUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +@Service("dicTypeEOService") +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class DicTypeEOServiceImpl extends ServiceImpl implements IDicTypeEOService { + private + static final Logger logger = LoggerFactory.getLogger(DicTypeEO.class); + + @Autowired + private DicTypeEODao dicTypeEODao; + + @Autowired + private IDicEOService dicEODao; + + @Autowired + private ISarMenuStandardService iSarMenuStandardService; + + + + public DicTypeEODao getDao() { + return dicTypeEODao; + } +//李文轩:此方法对应的sql语句必须有parentId,不传入parentId就会报错 + public DicTypeEO saveDic(DicTypeEO dicTypeEO) { + + String parentId = dicTypeEO.getParentId(); + + dicTypeEO.setId(UUIDUtils.randomUUID20()); + dicTypeEO.setValidFlag(0); + + if(parentId!=null){ + dicTypeEO.setParentId(parentId); + } + + dicTypeEODao.insert(dicTypeEO); + return dicTypeEO; + } + + + /** + * 查询字典详情 + */ + @Transactional(readOnly = true, rollbackFor = Exception.class) + public DicTypeEO getDicTypeById(String id) { + return dicTypeEODao.getDicTypeEOById(id); + } + + @Override + public void delete(List ids) { + dicTypeEODao.deleteDicTypeByIdInBatch(ids); + } + + @Transactional(readOnly = true, rollbackFor = Exception.class) + public List getTypeIdByDicIdAndTypeName(String dicId, String id, String typeName, String parentId) { + return dicTypeEODao.getTypeIdByDicIdAndTypeName(dicId,id, typeName,parentId); + } + + @Transactional(readOnly = true, rollbackFor = Exception.class) + public List getDicTypeEOByDicTypeCode(String dicId, String id, String dicTypeCode, String parentId) { + return dicTypeEODao.getDicTypeEOByDicTypeCode(dicId,id,dicTypeCode,parentId); + } + + @Override + public void batchInsertTypeEo(List ModelType) { + dicTypeEODao.batchInsertTypeEo(ModelType); + } + + public void deleteDicTypeByDicId(String id) { + dicTypeEODao.deleteDicTypeByDicId(id); + } + + /** + * 新增数据字典参数表 + * */ + @Override + public Integer saveDictype(DicTypeEO dicTypeEO){ + // 此处存在问题, 当当前参数为标准类别时需要输入的code为name值 + if(StringUtils.isNotEmpty(dicTypeEO.getDicId()) && !"JKSADFH564S".equals(dicTypeEO.getDicId()) && !"NGETEMDJDI".equals(dicTypeEO.getDicId()) ){ + if(!StringUtils.isNotEmpty(dicTypeEO.getDicTypeCode())){ + dicTypeEO.setDicTypeCode(UUIDUtils.randomUUID10()); + } + }else { + dicTypeEO.setDicTypeCode(dicTypeEO.getDicTypeName()); + } + String id = UUIDUtils.randomUUID20(); + dicTypeEO.setId(id); + dicTypeEO.setValidFlag(0); + dicTypeEO.setCreationTime(new Date()); + dicTypeEO.setModifyTime(new Date()); + dicTypeEO.setCreationUser(LoginUserUtil.getUserId()); + //加分类代号 + if (StringUtils.isNotEmpty(dicTypeEO.getClassifyCode())) { + DicTypeEO dicClassifyCode = new DicTypeEO(); + dicClassifyCode.setDicTypeName(dicTypeEO.getClassifyCode()); + dicClassifyCode.setDicId("YDWVSVOAQG"); + dicClassifyCode.setParentId(id); + dicClassifyCode.setId(UUIDUtils.randomUUID20()); + dicClassifyCode.setValidFlag(0); + dicClassifyCode.setCreationTime(new Date()); + dicClassifyCode.setModifyTime(new Date()); + dicClassifyCode.setCreationUser(LoginUserUtil.getUserId()); + dicClassifyCode.setDicTypeCode(UUIDUtils.randomUUID10()); + dicTypeEODao.insertSelective(dicClassifyCode); + } + return dicTypeEODao.insertSelective(dicTypeEO); + } + + /** + * @Author super_liu + * @Description 根据数据字典编码查询字典类型 + * Date 2018/9/12 10:18 + * @Param [dictionaryCode] + * @return java.util.List> + **/ + public List> getDicTypeByDicCode(String dictionaryCode){ + List getDicType = new ArrayList<>(); + if ("BUSSFINECLASSSHOW".equals(dictionaryCode)) { + getDicType = dicTypeEODao.getFineDicTypeByDicCode("BUSSFINECLASS"); + } else { + getDicType = dicTypeEODao.getDicTypeByDicCode(dictionaryCode); + } + List> listMap = new ArrayList<>(); + for(int i=0;i map = new HashMap<>(); + map.put("label",getDicType.get(i).getDicTypeName()); + map.put("value",getDicType.get(i).getDicTypeCode()); + // gaoyan 新增代码开始,关于企业细类需要查父节点,即企业大类 + if(dictionaryCode.equals("BUSSFINECLASS") && StringUtils.isNotEmpty(getDicType.get(i).getParentId())){ + DicTypeEO dicTypeEO = dicTypeEODao.getDicTypeEOById(getDicType.get(i).getParentId()); + map.put("parentCode",dicTypeEO.getDicTypeCode()); + } + // gaoyan 新增代码结束 + listMap.add(map); + } + return listMap; + } + + @Override + public List getFineDicTypeByDicCode(String dictionaryCode) { + return null; + } + + /** + * @Author gaoyan + * @Description + * Date 2018/9/11 19:12 + * @Param [dictionaryCode] + * @return java.util.List + **/ + @Override + public Map getDicTypeListCode(){ + Map resultMap = new HashMap<>(); + List diclist = dicEODao.getDictionaryEO(); + for (DictionaryEO dictionaryEO : diclist){ + if(dictionaryEO.getDictionType().equals("TREE")){ + List treeList = iSarMenuStandardService.getAll(dictionaryEO.getId()); + resultMap.put(dictionaryEO.getDictionaryCode(),treeList); + }else { + List> relist = getDicTypeByDicCode(dictionaryEO.getDictionaryCode()); + resultMap.put(dictionaryEO.getDictionaryCode(),relist); + } + } + // 查询细类 + List> relist = getDicTypeByDicCode("BUSSFINECLASSSHOW"); + resultMap.put("BUSSFINECLASSSHOW",relist); + List> arr = new ArrayList<>(); + resultMap.put("STANDCLASSIFYSHOW",arr); + + return resultMap; + } + + /** + * @Author gaoyan + * @Description + * Date 2018/9/11 19:12 + * @Param [dictionaryCode] + * @return java.util.List + **/ + @Override + public Map getDicTypeListCodeByType(List types){ + Map resultMap = new HashMap<>(); + List diclist = dicEODao.getDictionaryEOByType(types); + for (DictionaryEO dictionaryEO : diclist){ + if(dictionaryEO.getDictionType().equals("TREE")){ + List treeList = iSarMenuStandardService.getAll(dictionaryEO.getId()); + resultMap.put(dictionaryEO.getDictionaryCode(),treeList); + }else { + List> relist = getDicTypeByDicCode(dictionaryEO.getDictionaryCode()); + resultMap.put(dictionaryEO.getDictionaryCode(),relist); + } + } + // 查询细类 + List> relist = getDicTypeByDicCode("BUSSFINECLASSSHOW"); + resultMap.put("BUSSFINECLASSSHOW",relist); + List> arr = new ArrayList<>(); + resultMap.put("STANDCLASSIFYSHOW",arr); + return resultMap; + } + + //liwenxuan:国家地区新增 + public List queryByPageNoParentId(DicTypeEOPage page){ + Integer rowCount = dicTypeEODao.queryByCountCounter(page); + page.getPager().setRowCount(rowCount); + return dicTypeEODao.queryByPageNoParentId(page); + } + + @Override + public int queryByCountCounter(DicTypeEOPage page) { + return 0; + } + + /** + * @Author super_liu + * @Description 根据父级code查询 + * Date 2018/10/9 14:08 + * @Param [dicTypeCode] + * @return java.util.List> + **/ + @Transactional(rollbackFor = Exception.class) + public List> getDicTypeByParentCode(String dicTypeCode){ + List getDicType = dicTypeEODao.getDicTypeByParentCode(dicTypeCode); + List> listMap = new ArrayList<>(); + for(int i=0;i map = new HashMap<>(); + map.put("label",getDicType.get(i).getDicTypeName()); + map.put("value",getDicType.get(i).getDicTypeCode()); + listMap.add(map); + } + return listMap; + } + + /** + * @Author super_liu + * @Description 传递多个code值 + * Date 2019/1/2 16:38 + * @Param [dicTypeCode] + * @return java.util.List> + **/ + public List> getDicTypeByParentCodes(String dicTypeCode){ + String codes[] = dicTypeCode.split(","); + List> listMap = new ArrayList<>(); + if (codes != null && codes.length>0) { + for(int i=0;i getDicType = dicTypeEODao.getDicTypeByParentCode(codes[i]); + for(int x=0;x map = new HashMap<>(); + map.put("label",getDicType.get(x).getDicTypeName()); + map.put("value",getDicType.get(x).getDicTypeCode()); + if (!listMap.contains(map)) { + listMap.add(map); + } + } + } + } + + return listMap; + } + + /** + * @Author liwenxuan + * @Description 用来企业大类判断新增是否重复 + * @Date Administrator 2018/10/17 + * @Param [id, dicypeName, dicTypeCode] + * @return java.util.List + **/ + public List getDicTypeEOTypeNameAndCode(String id, String dicTypeName, String dicTypeCode, String parentId){ + return dicTypeEODao.getDicTypeEOTypeNameAndCode(id,dicTypeName,dicTypeCode,parentId); + } + + /** + * @Author liwenxuan + * @Description 用来企业大类判断新增是否重复 + * @Date Administrator 2018/10/17 + * @Param [id, dicypeName, dicTypeCode] + * @return java.util.List + **/ + public List getDicTypeEOTypeNameAndCode1(String id, String dicTypeName, String dicTypeCode, String parentId){ + return dicTypeEODao.getDicTypeEOTypeNameAndCode1(id,dicTypeName,dicTypeCode,parentId); + } + + // 标准法规属性管理中删除之前查看其它地方是否引用 + @Transactional(rollbackFor = Exception.class) + public boolean getDicTypeByDicTypeCode(String dicTypeCode){ + List dicTypeByDicTypeCode = dicTypeEODao.getDicTypeByDicTypeCode(dicTypeCode); + for (int count: dicTypeByDicTypeCode) { + if(count > 0){ + return false; + } + } + return true; + } + + @Override + public List getDicTypeByDicTypeName(DicTypeEO dicTypeEO){ + return dicTypeEODao.getDicTypeByDicTypeName(dicTypeEO); + } + + public DicTypeEO getDicTypeEOById(String id){ + return dicTypeEODao.getDicTypeEOById(id); + } + + @Override + public void deleteDicTypeByIdInBatch(List ids) { + dicTypeEODao.deleteDicTypeByIdInBatch(ids); + } + + public int deleteByDicIdAndDicTypeCode(DicTypeEO dicTypeEO){ + return dicTypeEODao.deleteByDicIdAndDicTypeCode(dicTypeEO); + } + + public List getDicEOByDicTypeCode(String dicTypeCode){ + return dicTypeEODao.getDicEOByDicTypeCode(dicTypeCode); + } + + + public void judgeAndUpdateDictype(List dicTypeEOList){ + List samecodeid = new ArrayList<>(); + List sameEntercodeid = new ArrayList<>(); + for(DicTypeEO dicTypeEO:dicTypeEOList){ + // 通过id判断,如果相同不做处理 + DicTypeEO dicEO = dicTypeEODao.getDicTypeEOById(dicTypeEO.getId()); + if (null == dicEO) { + if (StringUtils.isNotEmpty(dicTypeEO.getParentId()) && !"".equals(dicTypeEO.getParentId())){ + // 有父id,是标准类别,进行特殊处理 + for (DicTypeEO dicTypeJue:dicTypeEOList){ + if (dicTypeJue.getId().equals(dicTypeEO.getParentId())){ + DicTypeEOPage dicTypeEOPage = new DicTypeEOPage(); + dicTypeEOPage.setDicTypeCode(dicTypeEO.getDicTypeCode()); + if(samecodeid.contains(dicTypeEO.getParentId())){ + dicTypeEOPage.setParentId(sameEntercodeid.get(samecodeid.indexOf(dicTypeEO.getParentId()))); + dicTypeEO.setParentId(sameEntercodeid.get(samecodeid.indexOf(dicTypeEO.getParentId()))); + } else { + dicTypeEOPage.setParentId(dicTypeEO.getParentId()); + } + dicTypeEOPage.setValidFlag("0"); + List codelist = dicTypeEODao.queryByList(dicTypeEOPage); + if (codelist == null || codelist.size()==0){ + // 判断name 值是否相同,如果相同 ,加标记 + dicTypeEO.setDescribes("同步云端属性"); + dicTypeEODao.insertSelective(dicTypeEO); + } + break; + } + } + } else { + // 通过code去判断,并且parentid是空的数据,如果没有数据进行添加 + List codelist = dicTypeEODao.getDicEOByDicTypeCodeParent(dicTypeEO.getDicTypeCode()); + if (codelist == null || codelist.size()==0){ + // 判断name 值是否相同,如果相同 ,加标记 + dicTypeEO.setDescribes("同步云端属性"); + dicTypeEODao.insertSelective(dicTypeEO); + } else { + // 如果相同,记录id, + samecodeid.add(dicTypeEO.getId()); + sameEntercodeid.add(codelist.get(0).getId()); + } + } + } else { + // 执行修改语句 + DicTypeEO dicTypeEOUpdate = new DicTypeEO(); + dicTypeEOUpdate.setId(dicTypeEO.getId()); + dicTypeEOUpdate.setDicTypeName(dicTypeEO.getDicTypeName()); + dicTypeEOUpdate.setShowIndex(dicTypeEO.getShowIndex()); + dicTypeEOUpdate.setDescribes("同步云端属性"); + dicTypeEOUpdate.setValidFlag(0); + dicTypeEODao.updateByPrimaryKeySelective(dicTypeEOUpdate); + } + } + } + + @Transactional(rollbackFor = Exception.class) + public boolean judgeHaveUse(String sortCode,String countryCode){ + Integer dicTypeByDicTypeCode = dicTypeEODao.judgeHaveUse(sortCode,countryCode); + if (dicTypeByDicTypeCode != null && dicTypeByDicTypeCode>0){ + return false; + } + return true; + } + + public int updateByDicTypeCode(DicTypeEO dicTypeEO){ + return dicTypeEODao.updateByDicTypeCode(dicTypeEO); + } + + public List getDicEOByDicTypeCodeParent(String dicTypeCode){ + return dicTypeEODao.getDicEOByDicTypeCodeParent(dicTypeCode); + } + public void deleteDicTypeByCodeAndParentid(List codes) { + dicTypeEODao.deleteDicTypeByCodeAndParentid(codes); + } + + @Override + public int deleteByDictionaryId(String dicId) { + return dicTypeEODao.deleteByDictionaryId(dicId); + } + + public List getDicTypeByDicId(String dicId){ + return dicTypeEODao.getDicTypeByDicId(dicId); + } + + @Override + public String getDicNamesByCodes(List codeList,String dicId) { + return dicTypeEODao.getDicNamesByCodes(codeList,dicId); + } + + @Override + public int insertSelective(DicTypeEO dictionaryEO) { + return dicTypeEODao.insertSelective(dictionaryEO); + } + + @Override + public int updateByPrimaryKeySelective(DicTypeEO dictionaryEO) { + return dicTypeEODao.updateByPrimaryKeySelective(dictionaryEO); + } + + @Override + public List queryByPage(DicTypeEOPage page) { + Integer rowCount = dicTypeEODao.queryByCount(page); + page.getPager().setRowCount(rowCount); + return dicTypeEODao.queryByPage(page); + } + + @Override + public int queryByCount(DicTypeEOPage page) { + return dicTypeEODao.queryByCount(page); + } + + @Override + public List queryByList(DicTypeEOPage page) { + return dicTypeEODao.queryByList(page); + } + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/MenuEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/MenuEOServiceImpl.java index 0664f328..78b13cb5 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/MenuEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/MenuEOServiceImpl.java @@ -3,7 +3,7 @@ package com.adc.da.sys.service.impl; import cn.hutool.core.bean.BeanUtil; import com.adc.da.base.entity.TreeEntity; import com.adc.da.base.page.BasePage; -import com.adc.da.common.ValidFlagEnum; +import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.sys.dao.MenuEODao; import com.adc.da.sys.entity.MenuEO; import com.adc.da.sys.page.MenuEOPage; diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/OrgEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/OrgEOServiceImpl.java index d875b440..04328068 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/OrgEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/OrgEOServiceImpl.java @@ -1,8 +1,8 @@ package com.adc.da.sys.service.impl; -import com.adc.da.common.ValidFlagEnum; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; +import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.sys.dao.OrgEODao; import com.adc.da.sys.entity.OrgEO; import com.adc.da.sys.entity.UserEO; diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/RoleEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/RoleEOServiceImpl.java index 4c545a17..fc93f7d2 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/RoleEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/RoleEOServiceImpl.java @@ -1,7 +1,7 @@ package com.adc.da.sys.service.impl; import com.adc.da.base.page.BasePage; -import com.adc.da.common.ValidFlagEnum; +import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.sys.dao.RoleEODao; import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserRoleEO; @@ -179,4 +179,9 @@ public class RoleEOServiceImpl extends ServiceImpl implements public List selectByNameAndId(String id, String name){ return this.baseMapper.selectByNameAndId(id,name); } + + @Override + public List selectIdByNames(List nameList) { + return this.baseMapper.selectIdByNames(nameList); + } } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/UserEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/UserEOServiceImpl.java index 2008c0c1..e6cb41ea 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/UserEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/impl/UserEOServiceImpl.java @@ -1,21 +1,20 @@ package com.adc.da.sys.service.impl; import com.adc.da.base.page.BasePage; -import com.adc.da.common.ValidFlagEnum; import com.adc.da.http.ResponseMessage; import com.adc.da.http.Result; import com.adc.da.sys.constant.UserSourceEnum; +import com.adc.da.sys.constant.ValidFlagEnum; import com.adc.da.sys.dao.OrgEODao; import com.adc.da.sys.dao.UserEODao; import com.adc.da.sys.dao.UserInfoEODao; -import com.adc.da.sys.entity.OrgEO; -import com.adc.da.sys.entity.UserEO; -import com.adc.da.sys.entity.UserInfoEO; -import com.adc.da.sys.entity.UserOrgEO; +import com.adc.da.sys.entity.*; +import com.adc.da.sys.page.RoleUserEOPage; import com.adc.da.sys.page.UserEOPage; import com.adc.da.sys.service.IOrgEOService; import com.adc.da.sys.service.IRoleEOService; import com.adc.da.sys.service.IUserEOService; +import com.adc.da.sys.vo.RoleUserVO; import com.adc.da.sys.vo.UserVO; import com.adc.da.util.LoginUserUtil; import com.adc.da.util.PasswordUtils; @@ -109,6 +108,58 @@ public class UserEOServiceImpl extends ServiceImpl implements return this.baseMapper.getUserEOByAccount(userName,usid); } + public List getUserByRolePage(RoleUserEOPage page){ + List orgIdList = null; + if (page.getOrgId() != null){ + orgIdList = Arrays.asList(page.getOrgId().split(",")); + page.setOrgIdList(orgIdList); + } + List roleNameList = null; + if (page.getRoleName() != null){ + roleNameList = Arrays.asList(page.getRoleName().split(",")); + page.setRoleNameList(roleNameList); + } + List roleIdList = null; + if (page.getRoleId() != null){ + roleIdList = Arrays.asList(page.getRoleId().split(",")); + page.setRoleIdList(roleIdList); + } + List list = this.baseMapper.getUserByRolePage(page); + int rowCount = this.baseMapper.getUserByRolePageCount(page); + page.getPager().setRowCount(rowCount); + //2021年4月19日 此处分页查询的时候直接查询,没有全局查询的BUG + for (RoleUserVO data:list) { + OrgEO departData = getDepartOrgData(data.getOrgId()); + if(departData!=null){ + data.setPOrgId(departData.getId()); + data.setPOrgName(departData.getOrgName()); + data.setDepartId(departData.getId()); + data.setDepartName(departData.getOrgName()); + }else{ + data.setDepartId(null); + data.setDepartName(null); + data.setPOrgId(null); + data.setPOrgName(null); + } + } + + return list; + } + + private OrgEO getDepartOrgData(String orgId){ + if(StringUtils.isNotBlank(orgId)){ + OrgEO orgData = orgEOService.getOrgEOById(orgId); + if(orgData!=null && StringUtils.equals(orgData.getOrgType(),"DEPART")){ + return orgData; + }else if(orgData != null){ + return getDepartOrgData(orgData.getpId()); + } + return null; + }else{ + return null; + } + } + public void updatePassword(String usid, String oldPassword, String newPassword) { this.baseMapper.updatePassword(usid, oldPassword, newPassword); } @@ -343,6 +394,11 @@ public class UserEOServiceImpl extends ServiceImpl implements return userIdList; } + @Override + public String selectPositionByUserId(String userId) { + return baseMapper.selectPositionByUserId(userId); + } + public List queryUserEoList(UserEOPage page) { page.setValidFlag("0"); @@ -374,6 +430,11 @@ public class UserEOServiceImpl extends ServiceImpl implements return this.baseMapper.get(userId); } + @Transactional(readOnly = true, rollbackFor = Exception.class) + public List getUser(String usid){ + return this.baseMapper.getUser(usid); + } + /** * @Author liwenxuan @@ -455,4 +516,14 @@ public class UserEOServiceImpl extends ServiceImpl implements return userEO; } + @Override + public List getUserByName(String name,Integer page) { + return this.baseMapper.getUserByName(name,page); + } + + @Override + public String getName(String id) { + return this.baseMapper.getName(id); + } + } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/DateUtil.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/DateUtil.java new file mode 100644 index 00000000..facdddf7 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/DateUtil.java @@ -0,0 +1,313 @@ +package com.adc.da.sys.util; + + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +public class DateUtil { + + private static String OS_NAME = System.getProperty("os.name").toLowerCase(); + + public static String getWeekByMapWebUseOSIf(String week) { + + String commandArray = ""; + OS_NAME = OS_NAME.toLowerCase(); + if (OS_NAME.contains("win")) { + commandArray=getChineseWeekDate(week); + } else { + commandArray=getWeekByMapWebUseLinux(getChineseWeekDate(week)); + } + + return commandArray; + } + + public static int getDateInOutNum(String startTime,String endTime) { + int days = 0; + try { + Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(startTime); + Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(endTime); + long times1 = d1.getTime(); + long times2 = d2.getTime(); + days = (int)((times2-times1)/1000/60/60/24); + } catch (Exception e) { + } + return days; + } + + public static String subTenDay(String date, Integer dayInt) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + try { + today = sdf.parse(date); + } catch (ParseException e) { + } + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(theCa.DATE, -dayInt);//最后一个数字30可改,30天的意思 + Date start = theCa.getTime(); + String startDate = sdf.format(start);//三十天之前日期 + + return startDate; + } + + public static String addTenDay(String date, Integer dayInt) { + + dayInt = dayInt - 1; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + try { + today = sdf.parse(date); + } catch (ParseException e) { + } + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(theCa.DATE, +dayInt);//最后一个数字30可改,30天的意思 + Date start = theCa.getTime(); + String startDate = sdf.format(start);//三十天之前日期 + + return startDate; + } + + public static Boolean ifNowDateGreaterPmSevenParam(String startTime) { + + Boolean boo = false; + Long pMSevenLong = 0L; + Long nowDateHHmmLong = 0L; + try { + pMSevenLong = new SimpleDateFormat("HH:mm").parse("21:00").getTime(); + nowDateHHmmLong = new SimpleDateFormat("HH:mm").parse(new SimpleDateFormat("HH:mm").format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(startTime))).getTime(); + + if(nowDateHHmmLong > pMSevenLong) { + boo = true; + } + + } catch (ParseException e) { + + } + + + return boo; + } + + public static Integer getMonth(String date) { + + String _M = ""; + try { + _M = new SimpleDateFormat("M").format(new SimpleDateFormat("yyyy-MM-dd").parse(date)); + } catch (ParseException e) { + } + + return Integer.valueOf(_M); + + } + + public static String firstOneDay(String date) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + String startDate = ""; + try { + today = sdf.parse(date); + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(Calendar.MONTH, 0); + theCa.set(Calendar.DAY_OF_MONTH, +1); + Date start = theCa.getTime(); + startDate = sdf.format(start); + } catch (ParseException e) { + } + + + return startDate; + } + + public static String finOneDay(String date) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + String startDate = ""; + try { + today = sdf.parse(date); + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.set(Calendar.DAY_OF_MONTH, 1); + theCa.set(Calendar.DATE, theCa.getActualMaximum(Calendar.DATE)); + Date start = theCa.getTime(); + startDate = sdf.format(start); + } catch (ParseException e) { + } + + + return startDate; + } + + public static String addOneDay(String date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + String startDate = ""; + try { + today = sdf.parse(date); + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(theCa.DATE, 1); + Date start = theCa.getTime(); + startDate = sdf.format(start); + } catch (ParseException e) { + } + return startDate; + } + + public static String addTenDay(Integer dayInt) { + + dayInt = dayInt - 1; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = new Date(); + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(theCa.DATE, +dayInt);//最后一个数字30可改,30天的意思 + Date start = theCa.getTime(); + String startDate = sdf.format(start);//三十天之前日期 + + return startDate; + } + + public static String subOneDay(String date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = null; + String startDate = ""; + try { + today = sdf.parse(date); + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(theCa.DATE, -1); + Date start = theCa.getTime(); + startDate = sdf.format(start); + } catch (ParseException e) { + } + return startDate; + } + public static String subTenDay(Integer dayInt) { + + dayInt = dayInt - 1; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date today = new Date(); + String endDate = sdf.format(today);//当前日期 + Calendar theCa = Calendar.getInstance(); + theCa.setTime(today); + theCa.add(theCa.DATE, -dayInt);//最后一个数字30可改,30天的意思 + Date start = theCa.getTime(); + String startDate = sdf.format(start);//三十天之前日期 + + return startDate; + + } + + /** + + * 获取一段时间的列表 + + */ + + public static String getWeekByMap(String week) { + Map map=new HashMap(); + map.put("Monday", "星期一"); + map.put("Tuesday", "星期二"); + map.put("Wednesday", "星期三"); + map.put("Thursday", "星期四"); + map.put("Friday", "星期五"); + map.put("Saturday", "星期六"); + map.put("Sunday", "星期日"); + return map.get(week); + } + + public static Integer getWeekByMapInt(String week) { + Map map=new HashMap(); + map.put("星期一",1); + map.put("星期二",2); + map.put("星期三",3); + map.put("星期四",4); + map.put("星期五",5); + map.put("星期六",6); + map.put("星期日",0); + return map.get(week); + } + + /** + * 页面 有效日期 传参 判断 用 + */ + public static String getWeekByMapWebUse(String week) { + Map map=new HashMap(); + map.put("1", "星期一"); + map.put("2", "星期二"); + map.put("3", "星期三"); + map.put("4", "星期四"); + map.put("5", "星期五"); + map.put("6", "星期六"); + map.put("7", "星期日"); + return map.get(week); + } + + public static String getWeekByMapWebUseLinux(String week) { + Map map=new HashMap(); + map.put("Mon", "星期一"); + map.put("Tue", "星期二"); + map.put("Wed", "星期三"); + map.put("Thu", "星期四"); + map.put("Fri", "星期五"); + map.put("Sat", "星期六"); + map.put("Sun", "星期日"); + return map.get(week); + } + + public static String getChineseWeekDate(String week) { + Date date = null; + try { + date = new SimpleDateFormat("yyyy-MM-dd").parse(week); + } catch (ParseException e) { + e.printStackTrace(); + } + return new SimpleDateFormat("E").format(date); + } + + /** + * 取起始时间到结束时间 所有的时间 + * @param startTime + * @param endTime + * @return + */ + + public static List get_D_Plaus_1List(String startTime, String endTime) { + List list = new ArrayList(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar cal = Calendar.getInstance(); + + try { + cal.setTime(sdf.parse(startTime)); + for (long d = cal.getTimeInMillis(); d <= sdf.parse(endTime).getTime(); d = get_D_Plaus_1(cal)) { + list.add(sdf.format(d)); + } + } catch (ParseException e) { + System.out.println("date change err"); + } + + return list; + } + + public static long get_D_Plaus_1(Calendar c) { + c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1); + return c.getTimeInMillis(); + } + + public static void main(String[] args) { + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/LoginUserUtil.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/LoginUserUtil.java new file mode 100644 index 00000000..508b73a2 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/LoginUserUtil.java @@ -0,0 +1,53 @@ +package com.adc.da.sys.util; + +import com.alibaba.fastjson.JSONObject; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.UnavailableSecurityManagerException; +import org.apache.shiro.session.InvalidSessionException; +import org.apache.shiro.subject.Subject; + +import java.util.Map; + +public class LoginUserUtil { + /** + * 获取当前登录用户ID + * + */ + public static String getUserId() { + String userId = null; + try { + Subject subject = SecurityUtils.getSubject(); + Object object=subject.getPrincipal(); + if(object!=null){ + String json = JSONObject.toJSONString(object); + if(json!=null && json.length()>0){ + Map userInfo= JSONObject.parseObject(json, Map.class); + userId=userInfo.get("id").toString(); + } + } + } catch (UnavailableSecurityManagerException e) { + } catch (InvalidSessionException e) { + } + return userId; + } + + public static String getUserParamValue() { + String paramValue = null; + try { + Subject subject = SecurityUtils.getSubject(); + Object object=subject.getPrincipal(); + if(object!=null){ + String json = JSONObject.toJSONString(object); + if(json!=null && json.length()>0){ + Map userInfo= JSONObject.parseObject(json, Map.class); + paramValue=userInfo.get("paramValue").toString(); + } + } + } catch (UnavailableSecurityManagerException e) { + } catch (InvalidSessionException e) { + } + return paramValue; + } + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/RoleGroupUtil.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/RoleGroupUtil.java new file mode 100644 index 00000000..4df8b46b --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/RoleGroupUtil.java @@ -0,0 +1,89 @@ +package com.adc.da.sys.util; + +public class RoleGroupUtil { + + public static String getName(Integer id){ + String name = null; + switch (id){ + case 1: + name = "总监"; + break; + case 2: + name = "助理"; + break; + case 3: + name = "高级经理"; + break; + case 4: + name = "系统经理"; + break; + case 5: + name = "工程师"; + break; + case 6: + name = "FO"; + break; + case 7: + name = "LO"; + break; + case 8: + name = "L1"; + break; + case 9: + name = "技师"; + break; + case 10: + name = "供应商"; + break; + case 11: + name = "VSE"; + break; + case 12: + name = "其他"; + break; + } + return name; + } + public static Integer getId(String name){ + Integer id = null; + switch (name){ + case "总监": + id = 1; + break; + case "助理": + id = 2; + break; + case "高级经理": + id = 3; + break; + case "系统经理": + id = 4; + break; + case "工程师": + id = 5; + break; + case "FO": + id = 6; + break; + case "LO": + id = 7; + break; + case "L1": + id = 8; + break; + case "技师": + id = 9; + break; + case "供应商": + id = 10; + break; + case "VSE": + id = 11; + break; + case "其他": + id = 12; + break; + } + return id; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/UUIDUtils.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/UUIDUtils.java new file mode 100644 index 00000000..b767d3d2 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/UUIDUtils.java @@ -0,0 +1,44 @@ +package com.adc.da.sys.util; + + +import com.adc.da.util.utils.RandomUtils; + +import java.util.Random; + +public class UUIDUtils { + + public static String randomUUID10() { + return RandomUtils.randomString(10); + } + + public static String randomUUID20() { + return RandomUtils.randomString(20); + } + + public static String randomUUID50() { + return RandomUtils.randomString(50); + } + + public static String randomUUID(int length) { + return RandomUtils.randomString(length); + } + + public static String getUUIDPath(String uuid){ + StringBuilder builder=new StringBuilder(); + builder.append("/"); + builder.append((uuid.substring(0, 3).hashCode())%100+"").append("/"); + builder.append((uuid.substring(7,10).hashCode())%100+"").append("/"); + builder.append((uuid.substring(11,14).hashCode())%100+"").append("/"); + return builder.toString(); + } + + public static String getAttTable(){ + Random rand = new Random(); + int nextInt = rand.nextInt(10)+1; + StringBuilder builder=new StringBuilder(); + builder.append("ATT_FILE_").append(String.format("%02d", nextInt)); + return builder.toString(); + } + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/ITree.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/ITree.java new file mode 100644 index 00000000..8ad5afe8 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/ITree.java @@ -0,0 +1,32 @@ +package com.adc.da.sys.util.tree; + +import java.util.List; + +/** + * 操作树的接口类 + * + */ +public interface ITree { + /** + * 获取构建数的list,因为根节点可能不止一个,所有返回List + * 获取的结构与getRoot基本一致,但是后边增加了另外的数据,不建议调用 + * + * @return + */ + List getTree(); + + /** + * 获取根节点树结构,因为根节点可能不止一个,所有返回List + * + * @return + */ + List getRoot(); + + /** + * 获取指定节点数据 + * + * @param nodeId + * @return + */ + TreeNode getTreeNode(String nodeId); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/ITreeNode.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/ITreeNode.java new file mode 100644 index 00000000..7ee144a4 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/ITreeNode.java @@ -0,0 +1,43 @@ +package com.adc.da.sys.util.tree; + +/** + * 需要实现树的实体类需要实现的接口,获取关键数据 + * + */ +public interface ITreeNode { + /** + * TreeNode获取nodeId + * + * @return + */ + String getNodeId(); + + /** + * TreeNode获取nodeName + * + * @return + */ + String getNodeName(); + + /** + * TreeNode获取nodeParentId(父id) + * + * @return + */ + String getNodeParentId(); + + /** + * TreeNode获取orderNum(排序字段用于排序) + * + * @return + */ + Integer getOrderNum(); + + /** + * TreeNode获取nodeLevel(当前属于第几层级) + * + * @return + */ + Integer getNodeLevel(); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/Tree.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/Tree.java new file mode 100644 index 00000000..9ac1d670 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/Tree.java @@ -0,0 +1,133 @@ +package com.adc.da.sys.util.tree; + +import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * 构建树形建构 + */ +public class Tree implements ITree { + /** + * 用于存放treeNode的Map + */ + private LinkedHashMap treeNodesMap = new LinkedHashMap<>(); + /** + * 用于存放treeNode的list + */ + private List treeNodesList = new ArrayList<>(); + + /** + * 构造方法 + * + * @param list + */ + public Tree(List list) { + initTreeNodeMap(list); + initTreeNodeList(); + } + + /** + * 将List对象数据转为TreeNodeMap + * + * @param list + */ + private void initTreeNodeMap(List list) { + TreeNode treeNode; + for (ITreeNode item : list) { + treeNode = new TreeNode(item); + treeNode.setLastNodeNum(1); + treeNodesMap.put(treeNode.getNodeId(), treeNode); + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode parentTreeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (StringUtils.isEmpty(treeNode.getParentNodeId())) { + continue; + } + parentTreeNode = treeNodesMap.get(treeNode.getParentNodeId()); + if (parentTreeNode != null) { + treeNode.setParent(parentTreeNode); + parentTreeNode.addChild(treeNode); + // 按照orderNum排序 + Collections.sort(parentTreeNode.getChildren(), new OrdNamComparator()); + // 判断这个节点是否是最子节点 + if (treeNode.getChildren().size() == 0) { + treeNode.setLastNode(true); + } + // 计算每一个节点的最子节点的数量 + List children = parentTreeNode.getChildren(); + if (children.size() > 0) { + int sum = 0; + for (TreeNode treeNode2 : children) { + sum += treeNode2.getLastNodeNum(); + } + parentTreeNode.setLastNodeNum(sum); + } + } + } + } + + /** + * 根据treeNodesMap转为treeNodesList + */ + private void initTreeNodeList() { + if (treeNodesList.size() > 0) { + return; + } + if (treeNodesMap.size() == 0) { + return; + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode treeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (treeNode.getParent() == null) { + this.treeNodesList.add(treeNode); + this.treeNodesList.addAll(treeNode.getAllChildren()); + } + } + } + + @Override + public List getTree() { + return this.treeNodesList; + } + + @Override + public List getRoot() { + List rootList = new ArrayList<>(); + if (this.treeNodesList.size() > 0) { + for (TreeNode node : treeNodesList) { + if (node.getParent() == null) { + rootList.add(node); + Collections.sort(rootList, new OrdNamComparator()); + } + } + } + return rootList; + } + + @Override + public TreeNode getTreeNode(String nodeId) { + return this.treeNodesMap.get(nodeId); + } +} + +/** + * 自定义排序,按照orderNum排序 + */ +class OrdNamComparator implements Comparator { + @Override + public int compare(TreeNode t1, TreeNode t2) { + if (t1.getOrderNum() > t2.getOrderNum()) { + return 1; + } + if (t1.getOrderNum() < t2.getOrderNum()) { + return -1; + } + return t1.getNodeName().compareTo(t2.getNodeName()); + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/TreeNode.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/TreeNode.java new file mode 100644 index 00000000..7bc15e30 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/tree/TreeNode.java @@ -0,0 +1,187 @@ +package com.adc.da.sys.util.tree; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.ArrayList; +import java.util.List; + +public class TreeNode { + + /** + * 树节点ID + */ + @JSONField(ordinal = 1) + private String nodeId; + /** + * 树节点名称 + */ + @JSONField(ordinal = 2) + private String nodeName; + /** + * 父节点ID + */ + @JSONField(ordinal = 3) + private String parentNodeId; + /** + * 节点在树中的排序号 + */ + @JSONField(ordinal = 4) + private int orderNum; + /** + * 节点所在的层级 + */ + @JSONField(ordinal = 5) + private int level; + /** + * 最子节点的数量 + */ + @JSONField(ordinal = 6) + private int lastNodeNum; + + /** + * 是否是最子节点 + */ + @JSONField(ordinal = 7) + private boolean lastNode; + + /** + * 当前节点的儿子节点 + */ + @JSONField(ordinal = 8) + private List children = new ArrayList<>(); + + /** + * 当前节点的完整路径 + */ + @JSONField(ordinal = 9) + private String completeName; + + /** + * 当前节点的父级节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private TreeNode parent; + + /** + * 当前节点的子孙节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private List allChildren = new ArrayList<>(); + + public TreeNode(ITreeNode obj) { + this.nodeId = obj.getNodeId(); + this.nodeName = obj.getNodeName(); + this.parentNodeId = obj.getNodeParentId(); + this.orderNum = obj.getOrderNum(); + this.level = obj.getNodeLevel(); + } + + public TreeNode(TreeNode obj) { + this.orderNum = obj.getOrderNum(); + this.level = obj.getLevel(); + this.lastNodeNum = obj.getLastNodeNum(); + } + + public TreeNode() { + } + + public void addChild(TreeNode treeNode) { + this.children.add(treeNode); + } + + public void removeChild(TreeNode treeNode) { + this.children.remove(treeNode); + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getParentNodeId() { + return parentNodeId; + } + + public void setParentNodeId(String parentNodeId) { + this.parentNodeId = parentNodeId; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public TreeNode getParent() { + return parent; + } + + public void setParent(TreeNode parent) { + this.parent = parent; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public int getOrderNum() { + return orderNum; + } + + public void setOrderNum(int orderNum) { + this.orderNum = orderNum; + } + + public int getLastNodeNum() { + return lastNodeNum; + } + + public void setLastNodeNum(int lastNodeNum) { + this.lastNodeNum = lastNodeNum; + } + + public boolean isLastNode() { + return lastNode; + } + + public void setLastNode(boolean lastNode) { + this.lastNode = lastNode; + } + + public List getAllChildren() { + if (this.allChildren.isEmpty()) { + for (TreeNode treeNode : this.children) { + this.allChildren.add(treeNode); + this.allChildren.addAll(treeNode.getAllChildren()); + } + } + return this.allChildren; + } + + public String getCompleteName() { + return completeName; + } + + public void setCompleteName(String completeName) { + this.completeName = completeName; + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/OrdNamComparator.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/OrdNamComparator.java new file mode 100644 index 00000000..324f1e68 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/OrdNamComparator.java @@ -0,0 +1,21 @@ +package com.adc.da.sys.util.treetool; + +import java.util.Comparator; + +/** + * List 排序 Comparator + * @author david + */ +public class OrdNamComparator implements Comparator { + + @Override + public int compare(TreeNode t1, TreeNode t2) { + if (t1.getOrderNum() > t2.getOrderNum()) { + return 1; + } + if (t1.getOrderNum() < t2.getOrderNum()) { + return -1; + } + return t1.getNodeName().compareTo(t2.getNodeName()); + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/Tree.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/Tree.java new file mode 100644 index 00000000..7538fa61 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/Tree.java @@ -0,0 +1,179 @@ +package com.adc.da.sys.util.treetool; + +import com.adc.da.sys.utils.treetool.annotation.*; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; + +//import group.ipp.tree.util.annotation.TreeNodeLevel; +//import group.ipp.tree.util.annotation.TreeNodeName; +//import group.ipp.tree.util.annotation.TreeNodeOrder; +//import group.ipp.tree.util.annotation.TreeNodeParentId; + +/** + * 构建树形建构 + * + * @author David + */ +public class Tree { + /** + * 用于存放treeNode的Map + */ + private LinkedHashMap treeNodesMap = new LinkedHashMap<>(); + /** + * 用于存放treeNode的list + */ + private List treeNodesList = new ArrayList<>(); + + /** + * 构造方法 + * + * @param list + */ + public Tree(List list) { + initTreeNodeMap(list); + initTreeNodeList(); + } + + /** + * 将List对象数据转为TreeNodeMap + * + * @param list + */ + private void initTreeNodeMap(List list) { + TreeNode treeNode; + for (Object item : list) { + treeNode = new TreeNode(); + treeNode.setNodeId(getFieldValue(item, "TreeNodeId")); + treeNode.setNodeName(getFieldValue(item, "TreeNodeName")); + treeNode.setParentNodeId(getFieldValue(item, "TreeNodeParentId")); + if(StringUtils.isEmpty(getFieldValue(item, "TreeNodeLevel"))) { + treeNode.setLevel(0); + } else { + treeNode.setLevel(Integer.parseInt(getFieldValue(item, "TreeNodeLevel"))); + } + if(StringUtils.isEmpty(getFieldValue(item, "TreeNodeOrder"))) { + treeNode.setOrderNum(0); + } else { + treeNode.setOrderNum(Integer.parseInt(getFieldValue(item, "TreeNodeOrder"))); + } + treeNode.setLastNodeNum(1); + treeNode.setData(item); + treeNodesMap.put(treeNode.getNodeId(), treeNode); + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode parentTreeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (StringUtils.isEmpty(treeNode.getParentNodeId())) { + continue; + } + parentTreeNode = treeNodesMap.get(treeNode.getParentNodeId()); + if (parentTreeNode != null) { + treeNode.setParent(parentTreeNode); + parentTreeNode.addChild(treeNode); + // 按照orderNum排序 + Collections.sort(parentTreeNode.getChildren(), new OrdNamComparator()); + // 判断这个节点是否是最子节点 + if (treeNode.getChildren().size() == 0) { + treeNode.setLastNode(true); + } + // 计算每一个节点的最子节点的数量 + List children = parentTreeNode.getChildren(); + if (children.size() > 0) { + int sum = 0; + for (TreeNode treeNode2 : children) { + sum += treeNode2.getLastNodeNum(); + } + parentTreeNode.setLastNodeNum(sum); + } + } + } + } + + private String getFieldValue(Object obj, String type) { + Class clz = obj.getClass(); + Field[] fields = clz.getDeclaredFields(); + String value = null; + try { + for(Field field : fields){ + field.setAccessible(true); + switch (type){ + case "TreeNodeId": + if(field.isAnnotationPresent(TreeNodeId.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeParentId": + if(field.isAnnotationPresent(TreeNodeParentId.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeName": + if(field.isAnnotationPresent(TreeNodeName.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeOrder": + if(field.isAnnotationPresent(TreeNodeOrder.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeLevel": + if(field.isAnnotationPresent(TreeNodeLevel.class)) { + value = String.valueOf(field.get(obj)); + } + break; + default: + break; + } + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return value; + } + + /** + * 根据treeNodesMap转为treeNodesList + */ + private void initTreeNodeList() { + if (treeNodesList.size() > 0) { + return; + } + if (treeNodesMap.size() == 0) { + return; + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode treeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (treeNode.getParent() == null) { + this.treeNodesList.add(treeNode); + this.treeNodesList.addAll(treeNode.getAllChildren()); + } + } + } + + public List getTree() { + return this.treeNodesList; + } + + public List getRoot() { + List rootList = new ArrayList<>(); + if (this.treeNodesList.size() > 0) { + for (TreeNode node : treeNodesList) { + if (node.getParent() == null) { + rootList.add(node); + Collections.sort(rootList, new OrdNamComparator()); + } + } + } + return rootList; + } + + public TreeNode getTreeNode(String nodeId) { + return this.treeNodesMap.get(nodeId); + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/TreeNode.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/TreeNode.java new file mode 100644 index 00000000..a978a5b3 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/TreeNode.java @@ -0,0 +1,202 @@ +package com.adc.da.sys.util.treetool; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author David + */ +public class TreeNode { + + /** + * 树节点ID + */ + @JSONField(ordinal = 1) + private String nodeId; + /** + * 树节点名称 + */ + @JSONField(ordinal = 2) + private String nodeName; + /** + * 父节点ID + */ + @JSONField(ordinal = 3) + private String parentNodeId; + /** + * 节点在树中的排序号 + */ + @JSONField(ordinal = 4) + private int orderNum; + /** + * 节点所在的层级 + */ + @JSONField(ordinal = 5) + private int level; + /** + * 最子节点的数量 + */ + @JSONField(ordinal = 6) + private int lastNodeNum; + + /** + * 是否是最子节点 + */ + @JSONField(ordinal = 7) + private boolean lastNode; + + private Object data; + + /** + * 当前节点的儿子节点 + */ + @JSONField(ordinal = 8) + private List children = new ArrayList<>(); + + /** + * 当前节点的完整路径 + */ + @JSONField(ordinal = 9) + private String completeName; + + /** + * 当前节点的父级节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private TreeNode parent; + + /** + * 当前节点的子孙节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private List allChildren = new ArrayList<>(); + + private int standFlag; + + public TreeNode(TreeNode obj) { + this.orderNum = obj.getOrderNum(); + this.level = obj.getLevel(); + this.lastNodeNum = obj.getLastNodeNum(); + } + + public TreeNode() { + } + + public void addChild(TreeNode treeNode) { + this.children.add(treeNode); + } + + public void removeChild(TreeNode treeNode) { + this.children.remove(treeNode); + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getParentNodeId() { + return parentNodeId; + } + + public void setParentNodeId(String parentNodeId) { + this.parentNodeId = parentNodeId; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public TreeNode getParent() { + return parent; + } + + public void setParent(TreeNode parent) { + this.parent = parent; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public int getOrderNum() { + return orderNum; + } + + public void setOrderNum(int orderNum) { + this.orderNum = orderNum; + } + + public int getLastNodeNum() { + return lastNodeNum; + } + + public void setLastNodeNum(int lastNodeNum) { + this.lastNodeNum = lastNodeNum; + } + + public boolean isLastNode() { + return lastNode; + } + + public void setLastNode(boolean lastNode) { + this.lastNode = lastNode; + } + + public List getAllChildren() { + if (this.allChildren.isEmpty()) { + for (TreeNode treeNode : this.children) { + this.allChildren.add(treeNode); + this.allChildren.addAll(treeNode.getAllChildren()); + } + } + return this.allChildren; + } + + public String getCompleteName() { + return completeName; + } + + public void setCompleteName(String completeName) { + this.completeName = completeName; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + + public int getStandFlag() { + return standFlag; + } + + public void setStandFlag(int standFlag) { + this.standFlag = standFlag; + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeId.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeId.java new file mode 100644 index 00000000..c8b1b2df --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeId.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.util.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeId { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeLevel.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeLevel.java new file mode 100644 index 00000000..caf33377 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeLevel.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.util.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeLevel { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeName.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeName.java new file mode 100644 index 00000000..7d5dd96c --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeName.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.util.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeName { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeOrder.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeOrder.java new file mode 100644 index 00000000..270b719b --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeOrder.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.util.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeOrder { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeParentId.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeParentId.java new file mode 100644 index 00000000..a3a07750 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/treetool/annotation/TreeNodeParentId.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.util.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeParentId { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/ITree.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/ITree.java new file mode 100644 index 00000000..36abbc42 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/ITree.java @@ -0,0 +1,32 @@ +package com.adc.da.sys.utils.tree; + +import java.util.List; + +/** + * 操作树的接口类 + * + */ +public interface ITree { + /** + * 获取构建数的list,因为根节点可能不止一个,所有返回List + * 获取的结构与getRoot基本一致,但是后边增加了另外的数据,不建议调用 + * + * @return + */ + List getTree(); + + /** + * 获取根节点树结构,因为根节点可能不止一个,所有返回List + * + * @return + */ + List getRoot(); + + /** + * 获取指定节点数据 + * + * @param nodeId + * @return + */ + TreeNode getTreeNode(String nodeId); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/ITreeNode.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/ITreeNode.java new file mode 100644 index 00000000..87874fc1 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/ITreeNode.java @@ -0,0 +1,43 @@ +package com.adc.da.sys.utils.tree; + +/** + * 需要实现树的实体类需要实现的接口,获取关键数据 + * + */ +public interface ITreeNode { + /** + * TreeNode获取nodeId + * + * @return + */ + String getNodeId(); + + /** + * TreeNode获取nodeName + * + * @return + */ + String getNodeName(); + + /** + * TreeNode获取nodeParentId(父id) + * + * @return + */ + String getNodeParentId(); + + /** + * TreeNode获取orderNum(排序字段用于排序) + * + * @return + */ + Integer getOrderNum(); + + /** + * TreeNode获取nodeLevel(当前属于第几层级) + * + * @return + */ + Integer getNodeLevel(); + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/Tree.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/Tree.java new file mode 100644 index 00000000..37d6cbd7 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/Tree.java @@ -0,0 +1,132 @@ +package com.adc.da.sys.utils.tree; + +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * 构建树形建构 + */ +public class Tree implements ITree { + /** + * 用于存放treeNode的Map + */ + private LinkedHashMap treeNodesMap = new LinkedHashMap<>(); + /** + * 用于存放treeNode的list + */ + private List treeNodesList = new ArrayList<>(); + + /** + * 构造方法 + * + * @param list + */ + public Tree(List list) { + initTreeNodeMap(list); + initTreeNodeList(); + } + + /** + * 将List对象数据转为TreeNodeMap + * + * @param list + */ + private void initTreeNodeMap(List list) { + TreeNode treeNode; + for (ITreeNode item : list) { + treeNode = new TreeNode(item); + treeNode.setLastNodeNum(1); + treeNodesMap.put(treeNode.getNodeId(), treeNode); + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode parentTreeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (StringUtils.isEmpty(treeNode.getParentNodeId())) { + continue; + } + parentTreeNode = treeNodesMap.get(treeNode.getParentNodeId()); + if (parentTreeNode != null) { + treeNode.setParent(parentTreeNode); + parentTreeNode.addChild(treeNode); + // 按照orderNum排序 + Collections.sort(parentTreeNode.getChildren(), new OrdNamComparator()); + // 判断这个节点是否是最子节点 + if (treeNode.getChildren().size() == 0) { + treeNode.setLastNode(true); + } + // 计算每一个节点的最子节点的数量 + List children = parentTreeNode.getChildren(); + if (children.size() > 0) { + int sum = 0; + for (TreeNode treeNode2 : children) { + sum += treeNode2.getLastNodeNum(); + } + parentTreeNode.setLastNodeNum(sum); + } + } + } + } + + /** + * 根据treeNodesMap转为treeNodesList + */ + private void initTreeNodeList() { + if (treeNodesList.size() > 0) { + return; + } + if (treeNodesMap.size() == 0) { + return; + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode treeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (treeNode.getParent() == null) { + this.treeNodesList.add(treeNode); + this.treeNodesList.addAll(treeNode.getAllChildren()); + } + } + } + + @Override + public List getTree() { + return this.treeNodesList; + } + + @Override + public List getRoot() { + List rootList = new ArrayList<>(); + if (this.treeNodesList.size() > 0) { + for (TreeNode node : treeNodesList) { + if (node.getParent() == null) { + rootList.add(node); + Collections.sort(rootList, new OrdNamComparator()); + } + } + } + return rootList; + } + + @Override + public TreeNode getTreeNode(String nodeId) { + return this.treeNodesMap.get(nodeId); + } +} + +/** + * 自定义排序,按照orderNum排序 + */ +class OrdNamComparator implements Comparator { + @Override + public int compare(TreeNode t1, TreeNode t2) { + if (t1.getOrderNum() > t2.getOrderNum()) { + return 1; + } + if (t1.getOrderNum() < t2.getOrderNum()) { + return -1; + } + return t1.getNodeName().compareTo(t2.getNodeName()); + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/TreeNode.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/TreeNode.java new file mode 100644 index 00000000..38d5e75c --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/tree/TreeNode.java @@ -0,0 +1,187 @@ +package com.adc.da.sys.utils.tree; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.ArrayList; +import java.util.List; + +public class TreeNode { + + /** + * 树节点ID + */ + @JSONField(ordinal = 1) + private String nodeId; + /** + * 树节点名称 + */ + @JSONField(ordinal = 2) + private String nodeName; + /** + * 父节点ID + */ + @JSONField(ordinal = 3) + private String parentNodeId; + /** + * 节点在树中的排序号 + */ + @JSONField(ordinal = 4) + private int orderNum; + /** + * 节点所在的层级 + */ + @JSONField(ordinal = 5) + private int level; + /** + * 最子节点的数量 + */ + @JSONField(ordinal = 6) + private int lastNodeNum; + + /** + * 是否是最子节点 + */ + @JSONField(ordinal = 7) + private boolean lastNode; + + /** + * 当前节点的儿子节点 + */ + @JSONField(ordinal = 8) + private List children = new ArrayList<>(); + + /** + * 当前节点的完整路径 + */ + @JSONField(ordinal = 9) + private String completeName; + + /** + * 当前节点的父级节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private TreeNode parent; + + /** + * 当前节点的子孙节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private List allChildren = new ArrayList<>(); + + public TreeNode(ITreeNode obj) { + this.nodeId = obj.getNodeId(); + this.nodeName = obj.getNodeName(); + this.parentNodeId = obj.getNodeParentId(); + this.orderNum = obj.getOrderNum(); + this.level = obj.getNodeLevel(); + } + + public TreeNode(TreeNode obj) { + this.orderNum = obj.getOrderNum(); + this.level = obj.getLevel(); + this.lastNodeNum = obj.getLastNodeNum(); + } + + public TreeNode() { + } + + public void addChild(TreeNode treeNode) { + this.children.add(treeNode); + } + + public void removeChild(TreeNode treeNode) { + this.children.remove(treeNode); + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getParentNodeId() { + return parentNodeId; + } + + public void setParentNodeId(String parentNodeId) { + this.parentNodeId = parentNodeId; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public TreeNode getParent() { + return parent; + } + + public void setParent(TreeNode parent) { + this.parent = parent; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public int getOrderNum() { + return orderNum; + } + + public void setOrderNum(int orderNum) { + this.orderNum = orderNum; + } + + public int getLastNodeNum() { + return lastNodeNum; + } + + public void setLastNodeNum(int lastNodeNum) { + this.lastNodeNum = lastNodeNum; + } + + public boolean isLastNode() { + return lastNode; + } + + public void setLastNode(boolean lastNode) { + this.lastNode = lastNode; + } + + public List getAllChildren() { + if (this.allChildren.isEmpty()) { + for (TreeNode treeNode : this.children) { + this.allChildren.add(treeNode); + this.allChildren.addAll(treeNode.getAllChildren()); + } + } + return this.allChildren; + } + + public String getCompleteName() { + return completeName; + } + + public void setCompleteName(String completeName) { + this.completeName = completeName; + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/OrdNamComparator.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/OrdNamComparator.java new file mode 100644 index 00000000..f102f4de --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/OrdNamComparator.java @@ -0,0 +1,21 @@ +package com.adc.da.sys.utils.treetool; + +import java.util.Comparator; + +/** + * List 排序 Comparator + * @author david + */ +public class OrdNamComparator implements Comparator { + + @Override + public int compare(TreeNode t1, TreeNode t2) { + if (t1.getOrderNum() > t2.getOrderNum()) { + return 1; + } + if (t1.getOrderNum() < t2.getOrderNum()) { + return -1; + } + return t1.getNodeName().compareTo(t2.getNodeName()); + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/Tree.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/Tree.java new file mode 100644 index 00000000..2d63654a --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/Tree.java @@ -0,0 +1,179 @@ +package com.adc.da.sys.utils.treetool; + +import com.adc.da.sys.utils.treetool.annotation.*; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.*; + +//import group.ipp.tree.util.annotation.TreeNodeLevel; +//import group.ipp.tree.util.annotation.TreeNodeName; +//import group.ipp.tree.util.annotation.TreeNodeOrder; +//import group.ipp.tree.util.annotation.TreeNodeParentId; + +/** + * 构建树形建构 + * + * @author David + */ +public class Tree { + /** + * 用于存放treeNode的Map + */ + private LinkedHashMap treeNodesMap = new LinkedHashMap<>(); + /** + * 用于存放treeNode的list + */ + private List treeNodesList = new ArrayList<>(); + + /** + * 构造方法 + * + * @param list + */ + public Tree(List list) { + initTreeNodeMap(list); + initTreeNodeList(); + } + + /** + * 将List对象数据转为TreeNodeMap + * + * @param list + */ + private void initTreeNodeMap(List list) { + TreeNode treeNode; + for (Object item : list) { + treeNode = new TreeNode(); + treeNode.setNodeId(getFieldValue(item, "TreeNodeId")); + treeNode.setNodeName(getFieldValue(item, "TreeNodeName")); + treeNode.setParentNodeId(getFieldValue(item, "TreeNodeParentId")); + if(StringUtils.isEmpty(getFieldValue(item, "TreeNodeLevel"))) { + treeNode.setLevel(0); + } else { + treeNode.setLevel(Integer.parseInt(getFieldValue(item, "TreeNodeLevel"))); + } + if(StringUtils.isEmpty(getFieldValue(item, "TreeNodeOrder"))) { + treeNode.setOrderNum(0); + } else { + treeNode.setOrderNum(Integer.parseInt(getFieldValue(item, "TreeNodeOrder"))); + } + treeNode.setLastNodeNum(1); + treeNode.setData(item); + treeNodesMap.put(treeNode.getNodeId(), treeNode); + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode parentTreeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (StringUtils.isEmpty(treeNode.getParentNodeId())) { + continue; + } + parentTreeNode = treeNodesMap.get(treeNode.getParentNodeId()); + if (parentTreeNode != null) { + treeNode.setParent(parentTreeNode); + parentTreeNode.addChild(treeNode); + // 按照orderNum排序 + Collections.sort(parentTreeNode.getChildren(), new OrdNamComparator()); + // 判断这个节点是否是最子节点 + if (treeNode.getChildren().size() == 0) { + treeNode.setLastNode(true); + } + // 计算每一个节点的最子节点的数量 + List children = parentTreeNode.getChildren(); + if (children.size() > 0) { + int sum = 0; + for (TreeNode treeNode2 : children) { + sum += treeNode2.getLastNodeNum(); + } + parentTreeNode.setLastNodeNum(sum); + } + } + } + } + + private String getFieldValue(Object obj, String type) { + Class clz = obj.getClass(); + Field[] fields = clz.getDeclaredFields(); + String value = null; + try { + for(Field field : fields){ + field.setAccessible(true); + switch (type){ + case "TreeNodeId": + if(field.isAnnotationPresent(TreeNodeId.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeParentId": + if(field.isAnnotationPresent(TreeNodeParentId.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeName": + if(field.isAnnotationPresent(TreeNodeName.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeOrder": + if(field.isAnnotationPresent(TreeNodeOrder.class)) { + value = String.valueOf(field.get(obj)); + } + break; + case "TreeNodeLevel": + if(field.isAnnotationPresent(TreeNodeLevel.class)) { + value = String.valueOf(field.get(obj)); + } + break; + default: + break; + } + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return value; + } + + /** + * 根据treeNodesMap转为treeNodesList + */ + private void initTreeNodeList() { + if (treeNodesList.size() > 0) { + return; + } + if (treeNodesMap.size() == 0) { + return; + } + Iterator iterator = treeNodesMap.values().iterator(); + TreeNode treeNode; + while (iterator.hasNext()) { + treeNode = iterator.next(); + if (treeNode.getParent() == null) { + this.treeNodesList.add(treeNode); + this.treeNodesList.addAll(treeNode.getAllChildren()); + } + } + } + + public List getTree() { + return this.treeNodesList; + } + + public List getRoot() { + List rootList = new ArrayList<>(); + if (this.treeNodesList.size() > 0) { + for (TreeNode node : treeNodesList) { + if (node.getParent() == null) { + rootList.add(node); + Collections.sort(rootList, new OrdNamComparator()); + } + } + } + return rootList; + } + + public TreeNode getTreeNode(String nodeId) { + return this.treeNodesMap.get(nodeId); + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/TreeNode.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/TreeNode.java new file mode 100644 index 00000000..34070063 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/TreeNode.java @@ -0,0 +1,202 @@ +package com.adc.da.sys.utils.treetool; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author David + */ +public class TreeNode { + + /** + * 树节点ID + */ + @JSONField(ordinal = 1) + private String nodeId; + /** + * 树节点名称 + */ + @JSONField(ordinal = 2) + private String nodeName; + /** + * 父节点ID + */ + @JSONField(ordinal = 3) + private String parentNodeId; + /** + * 节点在树中的排序号 + */ + @JSONField(ordinal = 4) + private int orderNum; + /** + * 节点所在的层级 + */ + @JSONField(ordinal = 5) + private int level; + /** + * 最子节点的数量 + */ + @JSONField(ordinal = 6) + private int lastNodeNum; + + /** + * 是否是最子节点 + */ + @JSONField(ordinal = 7) + private boolean lastNode; + + private Object data; + + /** + * 当前节点的儿子节点 + */ + @JSONField(ordinal = 8) + private List children = new ArrayList<>(); + + /** + * 当前节点的完整路径 + */ + @JSONField(ordinal = 9) + private String completeName; + + /** + * 当前节点的父级节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private TreeNode parent; + + /** + * 当前节点的子孙节点 + * 转json的时候忽略此属性,因为此属性到前端无作用 + */ + @JSONField(serialize = false) + private List allChildren = new ArrayList<>(); + + private int standFlag; + + public TreeNode(TreeNode obj) { + this.orderNum = obj.getOrderNum(); + this.level = obj.getLevel(); + this.lastNodeNum = obj.getLastNodeNum(); + } + + public TreeNode() { + } + + public void addChild(TreeNode treeNode) { + this.children.add(treeNode); + } + + public void removeChild(TreeNode treeNode) { + this.children.remove(treeNode); + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getParentNodeId() { + return parentNodeId; + } + + public void setParentNodeId(String parentNodeId) { + this.parentNodeId = parentNodeId; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public TreeNode getParent() { + return parent; + } + + public void setParent(TreeNode parent) { + this.parent = parent; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public int getOrderNum() { + return orderNum; + } + + public void setOrderNum(int orderNum) { + this.orderNum = orderNum; + } + + public int getLastNodeNum() { + return lastNodeNum; + } + + public void setLastNodeNum(int lastNodeNum) { + this.lastNodeNum = lastNodeNum; + } + + public boolean isLastNode() { + return lastNode; + } + + public void setLastNode(boolean lastNode) { + this.lastNode = lastNode; + } + + public List getAllChildren() { + if (this.allChildren.isEmpty()) { + for (TreeNode treeNode : this.children) { + this.allChildren.add(treeNode); + this.allChildren.addAll(treeNode.getAllChildren()); + } + } + return this.allChildren; + } + + public String getCompleteName() { + return completeName; + } + + public void setCompleteName(String completeName) { + this.completeName = completeName; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + + public int getStandFlag() { + return standFlag; + } + + public void setStandFlag(int standFlag) { + this.standFlag = standFlag; + } +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeId.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeId.java new file mode 100644 index 00000000..b212109e --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeId.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeId { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeLevel.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeLevel.java new file mode 100644 index 00000000..0dde7e37 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeLevel.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeLevel { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeName.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeName.java new file mode 100644 index 00000000..8d1dbaf4 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeName.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeName { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeOrder.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeOrder.java new file mode 100644 index 00000000..fa77789f --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeOrder.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeOrder { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeParentId.java b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeParentId.java new file mode 100644 index 00000000..149cecac --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/utils/treetool/annotation/TreeNodeParentId.java @@ -0,0 +1,12 @@ +package com.adc.da.sys.utils.treetool.annotation; + +import java.lang.annotation.*; + +/** + * @author david + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +@Documented +public @interface TreeNodeParentId { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/DicTypeVO.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/DicTypeVO.java new file mode 100644 index 00000000..abe8d354 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/DicTypeVO.java @@ -0,0 +1,122 @@ +package com.adc.da.sys.vo; + +import java.util.Date; + +public class DicTypeVO { + private String id; + private String dicTypeCode; + private String dicTypeName; + private String dicId; + private Integer validFlag; + private String parentId; + private Date creationTime; + private Date modifyTime; + private String describes; + private Integer showIndex; + + private String classifyCode; + private String classifyCodeId; + private String addCountrySortFlag; + + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + + public String getDicTypeCode() { + return dicTypeCode; + } + public void setDicTypeCode(String dicTypeCode) { + this.dicTypeCode = dicTypeCode; + } + + public String getDicTypeName() { + return dicTypeName; + } + public void setDicTypeName(String dicTypeName) { + this.dicTypeName = dicTypeName; + } + + public String getDicId() { + return dicId; + } + + public void setDicId(String dicId) { + this.dicId = dicId; + } + + public Integer getValidFlag() { + return validFlag; + } + + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public String getDescribes() { + return describes; + } + + public void setDescribes(String describes) { + this.describes = describes; + } + + public String getClassifyCode() { + return classifyCode; + } + + public void setClassifyCode(String classifyCode) { + this.classifyCode = classifyCode; + } + + public String getClassifyCodeId() { + return classifyCodeId; + } + + public void setClassifyCodeId(String classifyCodeId) { + this.classifyCodeId = classifyCodeId; + } + + public Integer getShowIndex() { + return showIndex; + } + + public void setShowIndex(Integer showIndex) { + this.showIndex = showIndex; + } + + public String getAddCountrySortFlag() { + return addCountrySortFlag; + } + + public void setAddCountrySortFlag(String addCountrySortFlag) { + this.addCountrySortFlag = addCountrySortFlag; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/OrgVO.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/OrgVO.java new file mode 100644 index 00000000..245b2424 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/OrgVO.java @@ -0,0 +1,111 @@ +package com.adc.da.sys.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +public class OrgVO extends TreeVO{ + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private Integer isShow; + private String pId; + private String shotName; + private String remarks; + private Integer orgDesc; + private String orgType; + private String orgCode; + private String orgName; + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Integer getValidFlag() { + return validFlag; + } + + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + public Integer getIsShow() { + return isShow; + } + + public void setIsShow(Integer isShow) { + this.isShow = isShow; + } + + public String getShotName() { + return shotName; + } + + public void setShotName(String shotName) { + this.shotName = shotName; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public Integer getOrgDesc() { + return orgDesc; + } + + public void setOrgDesc(Integer orgDesc) { + this.orgDesc = orgDesc; + } + + public String getOrgType() { + return orgType; + } + + public void setOrgType(String orgType) { + this.orgType = orgType; + } + + public String getOrgCode() { + return orgCode; + } + + public void setOrgCode(String orgCode) { + this.orgCode = orgCode; + } + + public String getOrgName() { + return orgName; + } + + public void setOrgName(String orgName) { + this.orgName = orgName; + } + + + public String getpId() { + return pId; + } + + public void setpId(String pId) { + this.pId = pId; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/RoleUserVO.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/RoleUserVO.java new file mode 100644 index 00000000..231f92ae --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/RoleUserVO.java @@ -0,0 +1,23 @@ +package com.adc.da.sys.vo; + +import lombok.Data; + +@Data +public class RoleUserVO { + + private String userId; + private String userName; + private String roleId; + private String roleName; + private String orgId; + private String orgType; + private String orgName; + private String pOrgId; + private String pOrgName; + private String email; + + private String departName; + + private String departId; + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/RoleVO.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/RoleVO.java new file mode 100644 index 00000000..8bdbf8b8 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/RoleVO.java @@ -0,0 +1,209 @@ +package com.adc.da.sys.vo; + +import com.adc.da.sys.entity.MenuEO; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class RoleVO { + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String operUser; + private String extInfo; + private String remarks; + private Integer isDefault; + private Integer useFlag; + private String roleType; + private String name; + //新添字段 + private String oprUser; + private String operUserName; + + + // 扩展字段 + private List menus = new ArrayList<>(); + private List menusstr = new ArrayList<>(); + private String rid; + private Integer belong; + private String rname; + private String rdesc; + private String enabled; + + private String id; + private String roleIds; + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public Integer getValidFlag() { + return validFlag; + } + + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + public String getOperUser() { + return operUser; + } + + public void setOperUser(String operUser) { + this.operUser = operUser; + } + + public String getExtInfo() { + return extInfo; + } + + public void setExtInfo(String extInfo) { + this.extInfo = extInfo; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public Integer getIsDefault() { + return isDefault; + } + + public void setIsDefault(Integer isDefault) { + this.isDefault = isDefault; + } + + public Integer getUseFlag() { + return useFlag; + } + + public void setUseFlag(Integer useFlag) { + this.useFlag = useFlag; + } + + public String getRoleType() { + return roleType; + } + + public void setRoleType(String roleType) { + this.roleType = roleType; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + + public String getOprUser() { + return oprUser; + } + + public void setOprUser(String oprUser) { + this.oprUser = oprUser; + } + + public String getOperUserName() { + return operUserName; + } + + public void setOperUserName(String operUserName) { + this.operUserName = operUserName; + } + + public List getMenus() { + return menus; + } + + public void setMenus(List menus) { + this.menus = menus; + } + + public List getMenusstr() { + return menusstr; + } + + public void setMenusstr(List menusstr) { + this.menusstr = menusstr; + } + + public String getRid() { + return rid; + } + + public void setRid(String rid) { + this.rid = rid; + } + + public Integer getBelong() { + return belong; + } + + public void setBelong(Integer belong) { + this.belong = belong; + } + + public String getRname() { + return rname; + } + + public void setRname(String rname) { + this.rname = rname; + } + + public String getRdesc() { + return rdesc; + } + + public void setRdesc(String rdesc) { + this.rdesc = rdesc; + } + + public String getEnabled() { + return enabled; + } + + public void setEnabled(String enabled) { + this.enabled = enabled; + } + + public void setId(String id){ + this.id=id; + } + + public String getId(){ + return this.id; + } + + public String getRoleIds() { + return roleIds; + } + + public void setRoleIds(String roleIds) { + this.roleIds = roleIds; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/websocket/service/WebSocketServer.java b/adc-da-sys/src/main/java/com/adc/da/websocket/service/WebSocketServer.java index bc03304b..4213a6f3 100644 --- a/adc-da-sys/src/main/java/com/adc/da/websocket/service/WebSocketServer.java +++ b/adc-da-sys/src/main/java/com/adc/da/websocket/service/WebSocketServer.java @@ -31,7 +31,7 @@ public interface WebSocketServer { * @param session session 对象 * @param throwable 抛出的异常 */ - public void onError(Session session,Throwable throwable); + public void onError(Session session, Throwable throwable); /** * 向单个客户端发送消息 @@ -48,7 +48,7 @@ public interface WebSocketServer { * @return:void * date: 2018/12/17 15:04 */ - public void sendMessageOfUserList(List userList,WebSocketMessage message); + public void sendMessageOfUserList(List userList, WebSocketMessage message); /** * 向所有在线用户群发消息 diff --git a/adc-da-sys/src/main/resources/dozer/dozer-mappings-sys.xml b/adc-da-sys/src/main/resources/dozer/dozer-mappings-sys.xml new file mode 100644 index 00000000..4568c2a2 --- /dev/null +++ b/adc-da-sys/src/main/resources/dozer/dozer-mappings-sys.xml @@ -0,0 +1,83 @@ + + + + com.adc.da.sys.entity.UserEO + com.adc.da.sys.vo.UserVO + + roleIdList + roleIdList + + + roleNameList + roleNameList + + + roleEOList + roles + + + orgIdList + orgsstr + + + orgEOList + orgs + + + password + password + + + + + com.adc.da.sys.entity.RoleEO + com.adc.da.sys.vo.RoleVO + + id + id + + + name + name + + + remarks + remarks + + + validFlag + validFlag + + + menuEOIdList + menusstr + + + menuEOList + menus + + + + com.adc.da.sys.entity.MenuEO + com.adc.da.sys.vo.MenuVO + + + com.adc.da.sys.entity.DictionaryEO + com.adc.da.sys.vo.DictionaryVO + + + com.adc.da.sys.entity.DicTypeEO + com.adc.da.sys.vo.DicTypeVO + + + com.adc.da.sys.entity.OrgEO + com.adc.da.sys.vo.OrgVO + + + com.adc.da.log.entity.LogEO + com.adc.da.log.vo.LogVO + + + \ No newline at end of file diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/att/AttFileEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/att/AttFileEOMapper.xml index 04f4a809..565a95df 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/att/AttFileEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/att/AttFileEOMapper.xml @@ -35,7 +35,7 @@ @@ -96,5 +96,8 @@ where id = #{id} + + update ${tableName} set OLD_FILE_NAME = #{oldFileName} where id = #{id} + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/ocr/OcrRecordEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/ocr/OcrRecordEOMapper.xml new file mode 100644 index 00000000..277062e1 --- /dev/null +++ b/adc-da-sys/src/main/resources/mybatis/mapper/ocr/OcrRecordEOMapper.xml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + word_file_code, json_file_code, id, doc_real_name, json_real_name, file_name, doc_name, json_name, + creation_time, modify_time,result_content,file_type,stand_number,stand_name + + + + + where 1=1 + + + and word_file_code ${wordFileCodeOperator} #{wordFileCode} + + + and json_file_code ${jsonFileCodeOperator} #{jsonFileCode} + + + and id ${idOperator} #{id} + + + and doc_real_name ${docRealNameOperator} #{docRealName} + + + and json_real_name ${jsonRealNameOperator} #{jsonRealName} + + + and file_name ${fileNameOperator} #{fileName} + + + and doc_name ${docNameOperator} #{docName} + + + and json_name ${jsonNameOperator} #{jsonName} + + + and creation_time ${creationTimeOperator} #{creationTime} + + + and creation_time >= #{creationTime1} + + + and creation_time <= #{creationTime2} + + + and modify_time ${modifyTimeOperator} #{modifyTime} + + + and modify_time >= #{modifyTime1} + + + and modify_time <= #{modifyTime2} + + + + + + + + insert into OCR_RECORD() + values (#{wordFileCode, jdbcType=VARCHAR}, #{jsonFileCode, jdbcType=VARCHAR}, #{id, jdbcType=VARCHAR}, #{docRealName, jdbcType=VARCHAR}, #{jsonRealName, jdbcType=VARCHAR}, #{fileName, jdbcType=VARCHAR}, #{docName, jdbcType=VARCHAR}, #{jsonName, jdbcType=VARCHAR}, #{creationTime, jdbcType=TIMESTAMP}, #{modifyTime, jdbcType=TIMESTAMP}) + + + + + + insert into OCR_RECORD + + word_file_code, + json_file_code, + id, + doc_real_name, + json_real_name, + file_name, + doc_name, + json_name, + creation_time, + modify_time, + result_content, + file_type, + stand_number, + stand_name, + + + #{wordFileCode, jdbcType=VARCHAR}, + #{jsonFileCode, jdbcType=VARCHAR}, + #{id, jdbcType=VARCHAR}, + #{docRealName, jdbcType=VARCHAR}, + #{jsonRealName, jdbcType=VARCHAR}, + #{fileName, jdbcType=VARCHAR}, + #{docName, jdbcType=VARCHAR}, + #{jsonName, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{resultContent, jdbcType=VARCHAR}, + #{fileType, jdbcType=VARCHAR}, + #{standNumber, jdbcType=VARCHAR}, + #{standName, jdbcType=VARCHAR}, + + + + + + update OCR_RECORD + set word_file_code = #{wordFileCode}, + json_file_code = #{jsonFileCode}, + doc_real_name = #{docRealName}, + json_real_name = #{jsonRealName}, + file_name = #{fileName}, + doc_name = #{docName}, + json_name = #{jsonName}, + creation_time = #{creationTime}, + modify_time = #{modifyTime} + where id = #{id} + + + + + update OCR_RECORD + + + word_file_code = #{wordFileCode}, + + + json_file_code = #{jsonFileCode}, + + + doc_real_name = #{docRealName}, + + + json_real_name = #{jsonRealName}, + + + file_name = #{fileName}, + + + doc_name = #{docName}, + + + json_name = #{jsonName}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + result_content = #{resultContent}, + + + file_type = #{fileType}, + + + stand_number = #{standNumber}, + + + stand_name = #{standName}, + + + where id = #{id} + + + + + + + + delete from OCR_RECORD + where id = #{value} + + + + + + + + + + + + + + + + + delete from OCR_RECORD + where id in + + #{item} + + + + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/person/PersonCollectEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/person/PersonCollectEOMapper.xml index e0084ffb..28559bfe 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/person/PersonCollectEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/person/PersonCollectEOMapper.xml @@ -2,7 +2,7 @@ - + @@ -49,6 +49,12 @@ and collect_res_id ${collectResIdOperator} #{collectResId} + + and collect_res_id IN + + #{item} + + and collect_info_uri ${collectInfoUriOperator} #{collectInfoUri} @@ -153,7 +159,7 @@ - + @@ -164,7 +170,7 @@ - + @@ -194,7 +200,7 @@ - + update TS_PERSON_COLLECT set modify_time = #{modifyTime}, creation_time = #{creationTime}, @@ -208,7 +214,7 @@ - + update TS_PERSON_COLLECT @@ -332,7 +338,7 @@ ${pager.orderCondition} order by TS_PERSON_COLLECT.creation_time desc - ) tmp_tb where rownum <= ${pager.endIndex}) + ) as tmp_tb where rownum <= ${pager.endIndex}) where rn >= ${pager.startIndex} @@ -373,4 +379,75 @@ + + update TS_PERSON_COLLECT + set valid_flag=1 + where collect_res_id = #{resId} + + + + delete from TS_PERSON_COLLECT + + + collect_res_id IN + + #{item} + + + + + + + + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/person/PersonShareEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/person/PersonShareEOMapper.xml index 42d27738..2ed8193c 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/person/PersonShareEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/person/PersonShareEOMapper.xml @@ -240,4 +240,22 @@ + + + update TS_PERSON_SHARE + set valid_flag=1 + where res_id = #{resId} + + + + delete from TS_PERSON_COLLECT + + + collect_res_id IN + + #{item} + + + + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sarMenuStandard/SarMenuStandardMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sarMenuStandard/SarMenuStandardMapper.xml new file mode 100644 index 00000000..d4f6cccd --- /dev/null +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sarMenuStandard/SarMenuStandardMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/DicTypeEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/DicTypeEOMapper.xml new file mode 100644 index 00000000..2bcc302c --- /dev/null +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/DicTypeEOMapper.xml @@ -0,0 +1,617 @@ + + + + + + + + + + + + + + + + + + + + + + + creation_time, modify_time,id,parent_id, dic_type_code, dic_type_name, dic_id,valid_flag,show_index, tree_pid, others, creation_user, describes + + + + + TS_DICTYPE.id,TS_DICTYPE.parent_id, TS_DICTYPE.dic_type_code, TS_DICTYPE.dic_type_name, TS_DICTYPE.dic_id, + TS_DICTYPE.valid_flag,TS_DICTYPE.creation_time,TS_DICTYPE.modify_time,TS_DICTYPE.describes,TS_DICTYPE.show_index, + tree_pid + + + + + TS_DICTYPE.id,TS_DICTYPE.parent_id, TS_DICTYPE.dic_type_code, TS_DICTYPE.dic_type_name, TS_DICTYPE.dic_id, + TS_DICTYPE.valid_flag,TS_DICTYPE.creation_time,TS_DICTYPE.modify_time,TS_DICTYPE.describes,(@rownum :=@rownum + 1) AS rownum,TS_DICTYPE.show_index,tree_pid + + + + + a.id,a.parent_id, a.dic_type_code, a.dic_type_name, a.dic_id,a.valid_flag,a.creation_time,a.modify_time,a.describes,a.show_index + + + + + a.id,a.parent_id, a.dic_type_code, a.dic_type_name, a.dic_id,a.valid_flag,a.creation_time,a.modify_time,a.rownum,a.describes,a.show_index + + + + u.*, ur.id as type_id, + ur.dic_type_code as dic_type_code, + ur.dic_type_name as dic_type_name, + ur.dic_id as dic_id, + ur.parent_id as parent_id, + ur.valid_flag as type_valid_flag + + + + + where valid_flag = 0 + + + and id ${idOperator} #{id} + + + and dic_id ${dicIdOperator} #{dicId} + + + and dic_type_name ${dicTypeNameOperator} concat(concat('%',#{dicTypeName}),'%') + + + and dic_type_code ${dicTypeCodeOperator} concat(concat('%',#{dicTypeCode}),'%') + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and parent_id ${parentIdOperator} #{parentId} + + + + + + where valid_flag = 0 + + + and id ${idOperator} #{id} + + + and dic_id ${dicIdOperator} #{dicId} + + + and dic_type_name = #{dicTypeName} + + + and dic_type_code = #{dicTypeCode} + + + and valid_flag ${validFlagOperator} #{validFlag} + + + and parent_id ${parentIdOperator} #{parentId} + + + + + + + where TS_DICTYPE.valid_flag = 0 + + + and TS_DICTYPE.dic_id ${dicIdOperator} #{dicId} + + + and TS_DICTYPE.dic_type_name ${dicTypeNameOperator} concat(concat('%',#{dicTypeName}),'%') + + + and TS_DICTYPE.dic_type_code ${dicTypeCodeOperator} concat(concat('%',#{dicTypeCode}),'%') + + + and TS_DICTYPE.parent_id = #{id} + + + and TS_DICTYPE.DESCRIBES = #{describes} + + + + + + + where TS_DICTYPE.valid_flag = 0 + + + and TS_DICTYPE.id ${idOperator} #{id} + + + and TS_DICTYPE.dic_id ${dicIdOperator} #{dicId} + + + and TS_DICTYPE.dic_type_name ${dicTypeNameOperator} concat(concat('%',#{dicTypeName}),'%') + + + and TS_DICTYPE.dic_type_code ${dicTypeCodeOperator} concat(concat('%',#{dicTypeCode}),'%') + + + and TS_DICTYPE.DESCRIBES = #{describes} + + AND TS_DICTYPE.parent_id IS NULL + + + + + + update TS_DICTYPE + + + dic_type_code = #{dicTypeCode}, + + + dic_type_name = #{dicTypeName}, + + + dic_id = #{dicId}, + + + valid_flag = #{validFlag}, + + + parent_id = #{parentId}, + + + modify_Time = #{modifyTime}, + + + DESCRIBES = #{describes}, + + + tree_pid = #{treePid}, + + + others = #{others}, + + + creation_user = #{creationUser}, + + + SHOW_INDEX = #{showIndex} + + + where id = #{id} + + + + + update TS_DICTYPE + SET valid_flag = 1 + where id in + + #{id} + + + + + + + + + + + + + + + + insert into TS_DICTYPE + + ID, + parent_id, + valid_flag, + DIC_ID, + DIC_TYPE_NAME, + DIC_TYPE_CODE, + creation_Time, + modify_Time, + DESCRIBES, + show_index, + tree_pid, + others, + creation_user, + + + #{id}, + #{parentId}, + #{validFlag}, + #{dicId}, + #{dicTypeName}, + #{dicTypeCode}, + #{creationTime}, + #{modifyTime}, + #{describes}, + #{showIndex}, + #{treePid, jdbcType=VARCHAR}, + #{others, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + + + + + + + + + + + + + + + + + + + + INSERT INTO TS_DICTYPE ("ID","parent_id","valid_flag", "DIC_ID", "DIC_TYPE_NAME") + VALUES + + (#{eo.id},#{eo.parentId},#{eo.validFlag},#{eo.dicId},#{eo.dicTypeName}) + + + + + update TS_DICTYPE + set valid_flag = 1 + where ID = #{id} + + + + + + + + + + + + + + + + + + + + + + delete from TS_DICTYPE + where PARENT_ID is not null and DIC_TYPE_CODE = #{dicTypeCode} + + + + update TS_DICTYPE + + + dic_type_name = #{dicTypeName}, + + + valid_flag = #{validFlag}, + + + where DIC_TYPE_CODE = #{dicTypeCode} and parent_id is not null + + + + + + update TS_DICTYPE + set valid_flag = 1 + where DIC_TYPE_CODE in + + #{code} + + and PARENT_ID IS not null + + + + delete from TS_DICTYPE + where dic_id = #{dicId} + + + + + + + + + + + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/DictionaryEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/DictionaryEOMapper.xml new file mode 100644 index 00000000..c8788318 --- /dev/null +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/DictionaryEOMapper.xml @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + + + modify_time, creation_time, valid_flag, dictionary_name, dictionary_code, id, order_num, enable, diction_type, + is_relate,relate_dic_id,creation_user + + + + + + + + + + + + + + + + + + + + + + + + + u.*, ur.id as type_id, + ur.dic_type_code as dic_type_code, + ur.dic_type_name as dic_type_name, + ur.dic_id as dic_id, + ur.parent_id as parent_id, + ur.valid_flag as type_valid_flag + + + + + where 1=1 and u0.valid_flag='0' + + + and u0.id ${idOperator} #{id} + + + and u0.dictionary_code ${dictionaryCodeOperator} '%${dictionaryCode}%' + + + and u0.dictionary_name ${dictionaryNameOperator} '%${dictionaryName}%' + + + and u0.valid_flag ${validFlagOperator} #{validFlag} + + + and u0.modify_time ${modifyTimeOperator} #{modifyTime} + + + and u0.modify_time >= #{modifyTime1} + + + and u0.modify_time <= #{modifyTime2} + + + and u0.creation_time ${creationTimeOperator} #{creationTime} + + + and u0.creation_time >= #{creationTime1} + + + and u0.creation_time <= #{creationTime2} + + + + + + + update TS_DICTIONARY + + + valid_flag = #{validFlag}, + + + creation_time = #{creationTime}, + + + modify_time = #{modifyTime}, + + + dictionary_code = #{dictionaryCode}, + + + dictionary_name = #{dictionaryName}, + + + order_num = #{orderNum}, + + + enable = #{enable}, + + + diction_type = #{dictionType}, + + + is_relate = #{isRelate}, + + + relate_dic_id = #{relateDicId}, + + + creation_user = #{creationUser}, + + + where id = #{id} + + + + + + + + + + + + + + + insert into TS_DICTIONARY + + valid_flag, + creation_time, + modify_time, + id, + dictionary_code, + dictionary_name, + order_num, + enable, + diction_type, + is_relate, + relate_dic_id, + creation_user, + + + #{validFlag, jdbcType=VARCHAR}, + #{creationTime, jdbcType=TIMESTAMP}, + #{modifyTime, jdbcType=TIMESTAMP}, + #{id, jdbcType=VARCHAR}, + #{dictionaryCode, jdbcType=VARCHAR}, + #{dictionaryName, jdbcType=VARCHAR}, + #{orderNum, jdbcType=INTEGER}, + #{enable, jdbcType=VARCHAR}, + #{dictionType, jdbcType=VARCHAR}, + #{isRelate, jdbcType=VARCHAR}, + #{relateDicId, jdbcType=VARCHAR}, + #{creationUser, jdbcType=VARCHAR}, + + + + + + + + update TS_DICTIONARY + set valid_flag = 1 + where id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/OrgEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/OrgEOMapper.xml index 07470641..2d64c352 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/sys/OrgEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/OrgEOMapper.xml @@ -181,6 +181,40 @@ parent_id = #{pId} AND valid_flag = 0 + + + + + + + + delete from TS_ORG + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/RoleEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/RoleEOMapper.xml index 2cd5931f..6da2bace 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/sys/RoleEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/RoleEOMapper.xml @@ -94,6 +94,34 @@ where r.id = #{id} + + + + + + + SELECT userIdAndRoleId, + userId, + userName, + email, + roleId, + roleName, + orgId, + orgType, + orgName, + pOrgId, + pOrgName + FROM ( + select distinct + concat(TS_USER.usid,TS_ROLE.ID) as userIdAndRoleId, + TS_USER.usid as userId, + TS_USER.uname as userName, + TS_USER.email as email, + TS_ROLE.ID as roleId, + TS_ROLE.NAME as roleName, + tog.ID as orgId, + tog.ORG_TYPE as orgType, + tog.ORG_NAME as orgName, + tog.PARENT_ID as pOrgId, + (select ORG_NAME from TS_ORG where TS_ORG.ID=tog.PARENT_ID) as pOrgName + from TS_USER + left join TS_USER_ROLE on TS_USER_ROLE.USER_ID = TS_USER.USID + left join TS_ROLE on TS_ROLE.ID = TS_USER_ROLE.ROLE_ID + left join TS_USER_ORG on TS_USER_ORG.USER_ID = TS_USER.USID + left join TS_ORG tog on tog.ID = TS_USER_ORG.ORG_ID + + TS_USER.VALID_FLAG = '0' + and TS_ROLE.VALID_FLAG = '0' + and TS_ROLE.USE_FLAG = 0 + + and ( + tog.ID in + + #{item} + + + or tog.PARENT_IDS like concat('%',#{item},'%') + + ) + + + and TS_ROLE.role_hierarchy = #{roleHierarchy} + + + and TS_ROLE.ID in + + #{item} + + + + and TS_ROLE.NAME in + + #{item} + + + + and ( + TS_USER.UNAME ${userNameOperator} concat('%',#{userName},'%') + ) or ( + TS_USER.email ${userNameOperator} concat('%',#{userName},'%') + ) + + ) tmp_user + limit ${pager.startIndex-1},${pageSize} + + + + + + + - select from TS_USER u @@ -347,11 +492,12 @@ SELECT * FROM( SELECT temp_user.*, ROWNUM rn FROM( - SELECT TEMP.* FROM ( + SELECT TEMP.* , + @rowno:=@rowno+1 as ROWNUM FROM ( SELECT - TU.usid,max(TU.USER_TYPE) as USER_TYPE,max(TU."ACCOUNT") as ACCOUNT,MAX(TU.UNAME) AS UNAME,MAX(TU.EMAIL) AS + TU.usid,max(TU.USER_TYPE) as USER_TYPE,max(TU.ACCOUNT) as ACCOUNT,MAX(TU.UNAME) AS UNAME,MAX(TU.EMAIL) AS EMAIL,MAX(TU.WORK_NUM) AS WORK_NUM, - MAX(TU.DISABLE_FLAG) AS DISABLE_FLAG,MAX(tu.modify_time) AS modify_time,MAX(tr."NAME") AS + MAX(TU.DISABLE_FLAG) AS DISABLE_FLAG,MAX(tu.modify_time) AS modify_time,MAX(tr.NAME) AS ROLE_NAME,MAX(tui.mobile_phone)AS mobile_phone, MAX(tui.office_phone) AS office_phone,MAX(tui.ADDRESS) AS ADDRESS,MAX(tui.FAX_ADDRESS) AS FAX_ADDRESS,MAX(tor.org_name) AS org_name, @@ -366,7 +512,7 @@ LEFT JOIN TS_ORG tor ON (tor. ID = tuo.org_id and tor.VALID_FLAG = 0) GROUP BY tu.usid - ) TEMP + ) TEMP ,(select @rowno:=0) ts ORDER BY TEMP.modify_time DESC,TEMP.usid ) temp_user WHERE ROWNUM <= ${pager.endIndex} ) a @@ -493,6 +639,14 @@ FROM TS_USER_ORG tuo WHERE tuo.USER_ID = #{userId} + + + select usid, account, valid_flag, password, uname, ext_info,email,work_num,creation_time,modify_time,oper_user,user_source,disable_flag,unlock_flag,user_type + ,t2.name as INSTITUTION_NAME,INSTITUTION_ID,SEX,PHONE,ts_institution.name as upDeptName,ts_institution.id as upDeptId + from TS_USER + left join ts_institution ON ts_institution.id = (SELECT parent_id from ts_institution WHERE id = ts_user.INSTITUTION_ID) + left join ts_institution t2 on ts_user.INSTITUTION_ID=t2.id + where account = #{account} and VALID_FLAG != 1 + + + + + + + + + diff --git a/doc/es/es 创建索引字段_bussioness.txt b/doc/es/es 创建索引字段_bussioness.txt new file mode 100644 index 00000000..58d63d8a --- /dev/null +++ b/doc/es/es 创建索引字段_bussioness.txt @@ -0,0 +1,952 @@ +bussstand/bussstand/_mapping?pretty&include_type_name=true + +{ + "bussstand": { + "properties": { + "standSortOrder": { + "type": "integer" + }, + "BARQ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BARQName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BDTQBBHBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BDTQBBHBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BZSMBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BZSMBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CDZD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CSZD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYBZ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYBZName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCDName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCDYBXHBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCDYBXHBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCDYMCBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCDYMCBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCVPPSBMBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCVPPSBMBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCVPPSCNBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCVPPSCNBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DTQBBHBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DTQBBHBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYBXHBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYBXHBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYMCBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYMCBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FBGBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FBGBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FSRQBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FSRQBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FZRQBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FZRQBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GLWJBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GLWJBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KCVPPSBMBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KCVPPSBMBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KCVPPSCNBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KCVPPSCNBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "LSBBBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "LSBBBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "NYLXCLASS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "NYLXCLASSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QCDW": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QCDWName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QCDWShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QCRBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QCRBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QTWJBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QTWJBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "STAND_ID": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYCPXCLASS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYCPXCLASSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYCXCLASS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYCXCLASSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TXLBBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TXLBBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "VPPSBMBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "VPPSBMBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "VPPSCNBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "VPPSCNBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "WJSCRYBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "WJSCRYBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XCSJBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XCSJBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGDName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGJLBUSS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGJLBUSSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGLC": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGLCName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYBZ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYBZName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZFCDXZ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "content": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "country": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "issueTime": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "issue_time_data": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "nameshow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "numberExpNull": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "numbershow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "putTime": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "put_time_data": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "replaceStandNum": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "replace_stand_num": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "replacedStandNum": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "replaced_stand_num": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standEnName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standNumber": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "standSort": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "standSortShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standYear": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "stand_code": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_en_name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_sort": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_status": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_year": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standstateshow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "statecode": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "textStatusBuss": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "textStatusBussName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "type": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "validFlag": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + } +} \ No newline at end of file diff --git a/doc/es/es 创建索引字段_fulltextserch.txt b/doc/es/es 创建索引字段_fulltextserch.txt new file mode 100644 index 00000000..3ab06f67 --- /dev/null +++ b/doc/es/es 创建索引字段_fulltextserch.txt @@ -0,0 +1,142 @@ +fulltextserch/fulltextserch/_mapping?pretty&include_type_name=true + +{ + "fulltextserch": { + "properties": { + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "indexType": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "issue_time": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "issue_time_order": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "sortTitle": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "numberTitle": { + "type": "text", + "analyzer": "ik_max_word", + "search_analyzer": "ik_max_word", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "nameTitle": { + "type": "text", + "analyzer": "ik_max_word", + "search_analyzer": "ik_max_word", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "nameEnTitle": { + "type": "text", + "analyzer": "ik_max_word", + "search_analyzer": "ik_max_word", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "yearOrder": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "standSortOrder": { + "type": "integer" + }, + "standTypeOrder": { + "type": "integer" + }, + "textContent": { + "type": "text", + "analyzer": "ik_max_word", + "search_analyzer": "ik_max_word", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "textItems": { + "type": "text", + "analyzer": "ik_max_word", + "search_analyzer": "ik_max_word", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "title": { + "type": "text", + "analyzer": "ik_max_word", + "search_analyzer": "ik_max_word", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + } + } + } +} \ No newline at end of file diff --git a/doc/es/es 创建索引字段_laws.txt b/doc/es/es 创建索引字段_laws.txt new file mode 100644 index 00000000..ae65838f --- /dev/null +++ b/doc/es/es 创建索引字段_laws.txt @@ -0,0 +1,745 @@ +laws/laws/_mapping?pretty&include_type_name=true + +{ + "laws": { + "properties": { + "standSortOrder": { + "type": "integer" + }, + "BDTWJHLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BDTWJHLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CHJLLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CHJLLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYSDLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYSDLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYSDLAWSShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DTWJHLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DTWJHLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FBJGLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GCWBLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GCWBLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GLWJLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GLWJLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "JDWJLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "JDWJLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "NYLXLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "NYLXLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "NYLXLAWSShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SSRQLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SSRQLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TGDWLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TGDWLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TGDWLAWSShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TGRLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TGRLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TGRLAWSShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XCXSSRQLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XCXSSRQLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGLC": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGLCName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYBZZCLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYBZZCLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYRZLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYRZLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYRZLAWSShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZCWBLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZCWBLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZCXSSRQLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZCXSSRQLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRBMLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRBMLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRBMLAWSShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRGCSLAWS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRGCSLAWSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRGCSLAWSShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "commentCycleEnd": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "commentCycleEnd_data": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "commentCycleStart": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "commentCycleStart_data": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "content": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "country": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "countryShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "isRelateAccess": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "isRelateAccessName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "issueCompany": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "issueTime": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "issue_time_data": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "lawsBulletin": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsEnName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsLabel": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsLabelName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsNo": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsNotisyncNum": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsNumber": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "lawsRemark": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsSycx": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsSycxName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsSyqy": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsSyqyName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsTextState": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsTextStateName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsType": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "lawsTypeName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "lawsYear": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "lawsYearName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standType": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "type": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "validFlag": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + } +} \ No newline at end of file diff --git a/doc/es/es 创建索引字段_stand.txt b/doc/es/es 创建索引字段_stand.txt new file mode 100644 index 00000000..b0b3fe6a --- /dev/null +++ b/doc/es/es 创建索引字段_stand.txt @@ -0,0 +1,1306 @@ +stand/stand/_mapping?pretty&include_type_name=true + +{ + "stand": { + "properties": { + "standSortOrder": { + "type": "integer" + }, + "BARQ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BARQName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BBFDTBZ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BBFDTBZName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BDTBH": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BDTBZH": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BDTBZHName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BFDTBZ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BFDTBZName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BPG": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BPGName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BYYBJ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "BYYBJName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CA": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CAName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CBBH": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CBBHName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CBCD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CBCDName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CBCDShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CHJL": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CHJLName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CLLX": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CLLXName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CLLXShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCVPPSBM": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCVPPSBMName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCVPPSCN": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYCVPPSCNName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYSD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYSDName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYSDShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYZBPM": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYZBPMName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "CYZBPMShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DTBJH": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DTBJHName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYBXH": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYBXHCAR": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYBXHCARName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYBXHName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYMC": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYMCCAR": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYMCCARName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "DYMCName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FBGBJBD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "FBGBJBDName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GKDW": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GKDWName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GKDWShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GLWJ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GLWJName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GXHBQ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "GXHBQName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "JDWJ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "JDWJName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KCCVPPSBM": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KCCVPPSBMName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KCCVPPSCN": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KCCVPPSCNName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KWJ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "KWJName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "NYLX": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "NYLXName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "NYLXShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QCDW": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QCDWName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "QCDWShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SSG": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SSGName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SSRQ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SSRQName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYCPX": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYCPXName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYCPXShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYRZ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYRZName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "SYRZShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TXLB": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TXLBName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "TXLBShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "WAS_": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "WQW_": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "WSSMR": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "WSSMRName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "WSSMRShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XCXSSRQ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XCXSSRQName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XDB": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XDBName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGDName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGLC": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "XGLCName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYBJ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "YYBJName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZBJBD": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZBJBDName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZCCSSRQ": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZCCSSRQName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZQYJG": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZQYJGName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRBM": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRBMName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRBMShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRGCS": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRGCSName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "ZRGCSShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "baseSearchContent": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "content": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "country": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "countryShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "isRelateAccess": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "isRelateAccessName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "issueTime": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "issue_time_data": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "itemExistList": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "mapItems": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "nameshow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "numberExpNull": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "numbershow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standEnName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standNature": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standNatureName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standNumber": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "standSort": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "standSortShow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standSystem": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standType": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standYear": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + }, + "fielddata": true + }, + "stand_en_name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_sort": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "stand_year": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "standstateshow": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "synopsis": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "textStatus": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "textStatusName": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "type": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "validFlag": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + + } + + } + +} \ No newline at end of file diff --git a/doc/es/es 更新字段语法.txt b/doc/es/es 更新字段语法.txt new file mode 100644 index 00000000..8d751be3 --- /dev/null +++ b/doc/es/es 更新字段语法.txt @@ -0,0 +1,40 @@ +索引/_update_by_query + +{ + "script": { + "source": "ctx._source['standSortOrder']=51" + }, + "query": { + "bool": { + "must": [ + { + "match": { + "sortTitle.keyword": "QC/T" + } + } + ], + "must_not": [], + "should": [] + } + } +} + + + +根据是否存在"ipsub"字段,如果不存在,给信息增加字段"ipsub",并且赋值0 +POST my_index / _update_by_query + +{ + "script": { + "source": "ctx._source['standSortOrder']=0" + }, + "query": { + "bool": { + "must_not": [{ + "exists": { + "field": "standSortOrder" + } + }] + } + } +} \ No newline at end of file diff --git a/doc/sql/20220122_模块单元数据表新增字段.sql b/doc/sql/20220122_模块单元数据表新增字段.sql new file mode 100644 index 00000000..b622964c --- /dev/null +++ b/doc/sql/20220122_模块单元数据表新增字段.sql @@ -0,0 +1,4 @@ +ALTER TABLE `sar_model_tree` +ADD COLUMN `MODEL_TYPE` varchar(20) NULL COMMENT '模块数据类型(CAR:乘用车;TRUCK:卡车)' AFTER `HAS_CHILDREN`, +ADD COLUMN `MODEL_PID` varchar(100) NULL COMMENT '模块父级ID' AFTER `MODEL_TYPE`, +ADD COLUMN `MODEL_LEVEL` int(2) NULL COMMENT '模块层级' AFTER `MODEL_PID`; \ No newline at end of file diff --git a/doc/sql/20220127_国内海外标准库新增模块单元字段.sql b/doc/sql/20220127_国内海外标准库新增模块单元字段.sql new file mode 100644 index 00000000..609e25ff --- /dev/null +++ b/doc/sql/20220127_国内海外标准库新增模块单元字段.sql @@ -0,0 +1,8 @@ +-- 字段配置表新增 +INSERT INTO `sar_stand_attr_details`(`ID`, `ATTR_FIELD`, `ATTR_NAME`, `ATTR_TYPE`, `ATTR_LEN`, `ORDER_NUM`, `IS_EDIT`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `IS_MUST`, `IS_SHOW_IMP`, `SHOW_REGION_ID`, `SEL_VAL`, `SAR_TYPE`, `IS_SEARCH`, `IS_WARN`, `IS_JANSUO`) VALUES ('ibb1lhjxy5180auyqnta', 'DYBXHCAR', '模块结构单元型号(乘用车)', 'INPUT_STR', 1000, 19, '0', 'admin', '0', '2022-01-27 00:00:00', '2022-01-27 10:07:31', '1', '0', '6DCCCGU9KFQXTQ6EGGA4', '', 'STAND', '1', '1', NULL); +INSERT INTO `sar_stand_attr_details`(`ID`, `ATTR_FIELD`, `ATTR_NAME`, `ATTR_TYPE`, `ATTR_LEN`, `ORDER_NUM`, `IS_EDIT`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `IS_MUST`, `IS_SHOW_IMP`, `SHOW_REGION_ID`, `SEL_VAL`, `SAR_TYPE`, `IS_SEARCH`, `IS_WARN`, `IS_JANSUO`) VALUES ('seul117cy8y410qm5trk', 'DYMCCAR', '模块结构单元名称(乘用车)', 'INPUT_STR', 1000, 20, '0', 'admin', '0', '2022-01-27 10:07:21', '2022-01-27 10:07:21', '1', '0', '6DCCCGU9KFQXTQ6EGGA4', '', 'STAND', '1', '1', NULL); + +-- 标准扩展字段表添加字段 +ALTER TABLE `sar_stand_attr_info` +ADD COLUMN `DYBXHCAR` varchar(1000) NULL AFTER `BDTBZH`, +ADD COLUMN `DYMCCAR` varchar(1000) NULL AFTER `DYBXHCAR`; diff --git a/doc/sql/20220317_ts_resource.sql b/doc/sql/20220317_ts_resource.sql new file mode 100644 index 00000000..b19ef346 --- /dev/null +++ b/doc/sql/20220317_ts_resource.sql @@ -0,0 +1,1067 @@ +/* + Navicat Premium Data Transfer + + Source Server : 62.234.118.181 + Source Server Type : MySQL + Source Server Version : 50720 + Source Host : 62.234.118.181:3306 + Source Schema : foton_slrs_test + + Target Server Type : MySQL + Target Server Version : 50720 + File Encoding : 65001 + + Date: 17/03/2022 11:53:55 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for ts_resource +-- ---------------------------- +DROP TABLE IF EXISTS `ts_resource`; +CREATE TABLE `ts_resource` ( + `ID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', + `SOR_DIVIDE` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标准法规划分', + `MENU_NAME` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '目录名称', + `PARENT_ID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父级ID', + `PARENT_IDS` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父级ID集合', + `DISPLAY_SEQ` tinyint(8) NULL DEFAULT NULL COMMENT '排序序号', + `VALID_FLAG` tinyint(1) NULL DEFAULT 0 COMMENT '是否有效', + `CREATION_TIME` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `MODIFY_TIME` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `REMARKS` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of ts_resource +-- ---------------------------- +INSERT INTO `ts_resource` VALUES ('1', 'INLAND_STAND', '国内标准', NULL, NULL, 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('10', NULL, '汽车行业标准(QC)', '1', '1', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('100', NULL, '节能技术标准', '91', '91', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('101', NULL, '排放标准', '91', '91', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('102', NULL, '噪声标准', '91', '91', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('103', NULL, '底盘标准', '91', '91', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('104', NULL, '车身及附件标准', '91', '91', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('105', NULL, '电器标准', '91', '91', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('106', NULL, '制动标准', '91', '91', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('107', NULL, '车轮及轮胎标准', '91', '91', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('108', NULL, '灯光标准', '91', '91', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('109', NULL, '仪表标准', '91', '91', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('11', NULL, '机械行业标准(JB)', '1', '1', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('110', NULL, '玻璃标准', '91', '91', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('1104', NULL, 'E类标准(发动机)', '3', '3', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('111', NULL, '燃气汽车', '91', '91', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('112', NULL, '电动汽车', '91', '91', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('113', NULL, '回收再利用', '91', '91', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('114', NULL, '整车标准', '92', '92', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('115', NULL, '安全技术标准', '92', '92', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('116', NULL, '节能技术标准', '92', '92', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('117', NULL, '排放标准', '92', '92', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('118', NULL, '噪声标准', '92', '92', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('119', NULL, '底盘标准', '92', '92', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('12', NULL, '交通行业标准(JT)', '1', '1', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('120', NULL, '车身及附件标准', '92', '92', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('121', NULL, '电器标准', '92', '92', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('122', NULL, '制动标准', '92', '92', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('123', NULL, '车轮及轮胎标准', '92', '92', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('124', NULL, '灯光标准', '92', '92', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('125', NULL, '仪表标准', '92', '92', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('126', NULL, '玻璃标准', '92', '92', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('127', NULL, '燃气汽车', '92', '92', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('128', NULL, '电动汽车', '92', '92', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('129', NULL, '回收再利用', '92', '92', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('13', NULL, '化工行业标准(HG)', '1', '1', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('130', NULL, '整车标准', '93', '93', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('131', NULL, '安全技术标准', '93', '93', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('132', NULL, '节能技术标准', '93', '93', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('133', NULL, '排放标准', '93', '93', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('134', NULL, '噪声标准', '93', '93', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('135', NULL, '底盘标准', '93', '93', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('136', NULL, '车身及附件标准', '93', '93', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('137', NULL, '电器标准', '93', '93', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('138', NULL, '制动标准', '93', '93', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('139', NULL, '车轮及轮胎标准', '93', '93', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('14', NULL, '黑色冶金行业标准(YB)', '1', '1', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('140', NULL, '灯光标准', '93', '93', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('141', NULL, '仪表标准', '93', '93', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('142', NULL, '玻璃标准', '93', '93', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('143', NULL, '燃气汽车', '93', '93', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('144', NULL, '电动汽车', '93', '93', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('145', NULL, '回收再利用', '93', '93', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('146', NULL, '整车标准', '94', '94', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('147', NULL, '安全技术标准', '94', '94', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('148', NULL, '节能技术标准', '94', '94', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('149', NULL, '排放标准', '94', '94', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('15', NULL, '石油行业标准(SY)', '1', '1', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('150', NULL, '噪声标准', '94', '94', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('151', NULL, '底盘标准', '94', '94', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('152', NULL, '车身及附件标准', '94', '94', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('153', NULL, '电器标准', '94', '94', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('154', NULL, '制动标准', '94', '94', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('155', NULL, '车轮及轮胎标准', '94', '94', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('156', NULL, '灯光标准', '94', '94', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('157', NULL, '仪表标准', '94', '94', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('158', NULL, '玻璃标准', '94', '94', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('159', NULL, '燃气汽车', '94', '94', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('16', NULL, '石化行业标准(SH)', '1', '1', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('160', NULL, '电动汽车', '94', '94', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('161', NULL, '回收再利用', '94', '94', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('162', NULL, '整车标准', '95', '95', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('163', NULL, '安全技术标准', '95', '95', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('164', NULL, '节能技术标准', '95', '95', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('165', NULL, '排放标准', '95', '95', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('166', NULL, '噪声标准', '95', '95', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('167', NULL, '底盘标准', '95', '95', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('168', NULL, '车身及附件标准', '95', '95', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('169', NULL, '电器标准', '95', '95', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('17', NULL, '公安标准(GA)', '1', '1', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('170', NULL, '制动标准', '95', '95', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('171', NULL, '车轮及轮胎标准', '95', '95', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('172', NULL, '灯光标准', '95', '95', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('173', NULL, '仪表标准', '95', '95', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('174', NULL, '玻璃标准', '95', '95', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('175', NULL, '燃气汽车', '95', '95', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('176', NULL, '电动汽车', '95', '95', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('177', NULL, '回收再利用', '95', '95', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('178', NULL, '整车标准', '96', '96', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('179', NULL, '安全技术标准', '96', '96', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('18', NULL, '地方标准', '1', '1', 25, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('180', NULL, '节能技术标准', '96', '96', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('181', NULL, '排放标准', '96', '96', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('182', NULL, '噪声标准', '96', '96', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('183', NULL, '底盘标准', '96', '96', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('184', NULL, '车身及附件标准', '96', '96', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('185', NULL, '电器标准', '96', '96', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('186', NULL, '制动标准', '96', '96', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('187', NULL, '车轮及轮胎标准', '96', '96', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('188', NULL, '灯光标准', '96', '96', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('189', NULL, '仪表标准', '96', '96', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('19', NULL, '其它行业标准', '1', '1', 24, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('190', NULL, '玻璃标准', '96', '96', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('1911', NULL, '泰国标准、法规', '2', '2', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('1913', NULL, '美国汽车工程学会标准 SAE(英文版)', '41', '41', 3, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('193', NULL, '回收再利用', '96', '96', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('194', NULL, '整车标准', '97', '97', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('195', NULL, '安全技术标准', '97', '97', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('199', NULL, '底盘标准', '97', '97', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2', 'FOREIGN_STAND', '国外标准', NULL, NULL, 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('20', NULL, '北京市地方标准', '18', '18', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('200', NULL, '车身及附件标准', '97', '97', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('201', NULL, '电器标准', '97', '97', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('202', NULL, '制动标准', '97', '97', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('203', NULL, '车轮及轮胎标准', '97', '97', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('204', NULL, '灯光标准', '97', '97', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2077', NULL, '会议信息', '321', '321', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2078', NULL, '培训信息', '321', '321', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2079', NULL, '2011会议信息', '2077', '2077', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2084', NULL, '标准公告', '320', '320', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('209', NULL, '回收再利用', '97', '97', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2130', NULL, '2009年新闻', '319', '319', 27, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2131', NULL, '标准件', '216', '216', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('215', NULL, '车辆及发动机标准', '0', '0', 23, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('216', NULL, '基础通用标准', '0', '0', 24, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('22', NULL, '国际标准(ISO)', '2', '2', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2200', NULL, '国际电工委员会标准(IEC)', '2', '2', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2201', NULL, '国际电工委员会标准(IEC)(英文版)', '2200', '2200', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2211', NULL, '国家、行业等管理办法', '323', '323', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2212', NULL, '国内标准目录', '367', '367', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2213', NULL, '国外标准、法规目录', '367', '367', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2214', NULL, '企业标准目录', '367', '367', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2215', NULL, '巴西标准、法规', '2', '2', 40, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2216', NULL, '巴西标准、法规(译文版)', '2215', '2215', 3, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2217', NULL, '巴西标准、法规(英文版)', '2215', '2215', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2218', NULL, '美国联邦法规', '31', '31', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2219', NULL, '2004年版本(译文版)', '2218', '2218', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2220', NULL, '美国汽车工程学会标准SAE(译文版)', '41', '41', 4, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2223', NULL, 'CFR第49篇', '2219', '2219', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2225', NULL, '571部分', '2223', '2223', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2226', NULL, 'CFR第40篇', '2219', '2219', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2227', NULL, '第86部分', '2226', '2226', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2228', NULL, '第85部分', '2226', '2226', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2231', NULL, '其他', '2218', '2218', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2232', NULL, '其他部分', '2223', '2223', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2236', NULL, '海湾标准(译文版)', '29', '29', 5, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2237', NULL, '沙特标准', '2236', '2236', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2238', NULL, '其他海湾标准', '2236', '2236', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2240', NULL, '日本法规条文的解释', '27', '27', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2241', NULL, '排放后处理装置', '7', '7', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2242', NULL, '标准公告 2009', '2084', '2084', 30, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2243', NULL, '标准化信息', '320', '320', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2245', NULL, '欧洲电信标准(ETSI)', '2', '2', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2246', NULL, '欧洲电信标准(ETSI)(英文版)', '2245', '2245', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2247', NULL, '德国标准化学会标准(DIN)', '26', '26', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2248', NULL, 'DIN(英文版/德文版)', '2247', '2247', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2249', NULL, 'DIN(译文版)', '2247', '2247', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2250', NULL, '印度汽车研究协会(ARAI)标准:AIS(译文版)', '32', '32', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2251', NULL, '印度标准局标准:IS(译文版)', '32', '32', 7, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('2252', NULL, '其他法规(译文版)', '32', '32', 5, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('23', NULL, '欧盟经济共同体汽车法规指令(EEC/EC)', '2', '2', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('24', NULL, '欧洲经济委员会汽车法规(ECE)', '2', '2', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('25', NULL, '俄罗斯标准、法规', '2', '2', 34, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('26', NULL, '德国标准、法规', '2', '2', 30, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('261', NULL, '环境行业标准 (HJ)', '1', '1', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('265', NULL, '燃气汽车', '215', '215', 18, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('266', NULL, '电动汽车', '215', '215', 19, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('267', NULL, '其它企业标准', '3', '3', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('27', NULL, '日本标准、法规', '2', '2', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('277', NULL, '拖拉机、收获机械、农业机械', '215', '215', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('279', NULL, '摩托车', '215', '215', 21, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('28', NULL, '韩国标准、法规', '2', '2', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('280', NULL, '整车标准', '279', '279', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('281', NULL, '安全技术标准', '279', '279', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('282', NULL, '节能技术标准', '279', '279', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('283', NULL, '排放标准', '279', '279', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('284', NULL, '噪声标准', '279', '279', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('285', NULL, '底盘标准', '279', '279', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('286', NULL, '车身及附件标准', '279', '279', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('287', NULL, '电器标准', '279', '279', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('288', NULL, '制动标准', '279', '279', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('289', NULL, '车轮及轮胎标准', '279', '279', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('29', NULL, '海湾标准', '2', '2', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('290', NULL, '灯光标准', '279', '279', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('291', NULL, '仪表标准', '279', '279', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('292', NULL, '玻璃标准', '279', '279', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('293', NULL, '燃气汽车', '279', '279', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('294', NULL, '电动汽车', '279', '279', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('295', NULL, '回收再利用', '279', '279', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3', 'BUSINESS_STAND', '企业标准', NULL, NULL, 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('30', NULL, '南非标准、法规', '2', '2', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('302', NULL, '三轮汽车', '215', '215', 22, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('303', NULL, '整车标准', '302', '302', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('304', NULL, '安全技术标准', '302', '302', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('305', NULL, '节能技术标准', '302', '302', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('306', NULL, '排放标准', '302', '302', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('307', NULL, '噪声标准', '302', '302', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('308', NULL, '底盘标准', '302', '302', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('309', NULL, '车身及附件标准', '302', '302', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('31', NULL, '美国标准、法规', '2', '2', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('310', NULL, '电器标准', '302', '302', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('311', NULL, '制动标准', '302', '302', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3114', NULL, '内部标准培训', '2078', '2078', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3115', NULL, '内部标准培训(2009)', '3114', '3114', 99, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3116', NULL, '内部标准培训(2010)', '3114', '3114', 101, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3117', NULL, '内燃机分标委', '2078', '2078', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3118', NULL, '内燃机分标委(2009)', '3117', '3117', 99, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3119', NULL, '内燃机分标委(2010)', '3117', '3117', 100, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('312', NULL, '车轮及轮胎标准', '302', '302', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3120', NULL, '基础分标委', '2078', '2078', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3121', NULL, '基础分标委(2009)', '3120', '3120', 100, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3122', NULL, '汽车分标协', '2078', '2078', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3123', NULL, '整车分标委', '2078', '2078', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3128', NULL, '其它', '2078', '2078', 22, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3129', NULL, '其它(2009)', '3128', '3128', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('313', NULL, '灯光标准', '302', '302', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3132', NULL, '香港法规', '18', '18', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3133', NULL, '香港法规(英文版)', '3132', '3132', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3134', NULL, '香港法规(译文版)', '3132', '3132', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('314', NULL, '仪表标准', '302', '302', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('315', NULL, '玻璃标准', '302', '302', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('318', NULL, '回收再利用', '302', '302', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('319', NULL, '标准新闻', '0', '0', 32, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('32', NULL, '印度标准、法规', '2', '2', 45, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('320', NULL, '标准公告', '0', '0', 33, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('321', NULL, '会议、培训信息', '0', '0', 34, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('322', NULL, '征求意见稿及意见汇总', '0', '0', 35, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('323', NULL, '常用资料', '0', '0', 36, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('324', NULL, '发动机附件', '4', '4', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('325', NULL, '发动机附件', '91', '91', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('326', NULL, '发动机附件', '92', '92', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('327', NULL, '发动机附件', '93', '93', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('328', NULL, '发动机附件', '94', '94', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('329', NULL, '发动机附件', '95', '95', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('33', NULL, '日本工业标准(JIS)', '27', '27', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('330', NULL, '发动机附件', '96', '96', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('331', NULL, '发动机附件', '302', '302', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('333', NULL, '2008年度', '322', '322', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('334', NULL, '2007年度', '322', '322', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('335', NULL, '2006年新闻', '319', '319', 30, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('336', NULL, '2007年新闻', '319', '319', 29, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('337', NULL, '2008年新闻', '319', '319', 28, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('34', NULL, '日本汽车工业协会标准(JASO)', '27', '27', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('366', NULL, '模板', '323', '323', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('367', NULL, '标准法规目录', '0', '0', 55, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('368', NULL, '2009年度', '322', '322', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('369', NULL, '日本法规', '27', '27', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('370', NULL, '国际标准(ISO)(英文版)', '22', '22', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('371', NULL, '国际标准(ISO)(译文版)', '22', '22', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('39', NULL, '伊朗标准、法规', '2', '2', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('3cebf4482611739386a3eace8e2b1ce0', NULL, '建筑工业行业标准(JG)', '1', ',1', 2, NULL, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('4', NULL, '乘用车标准', '215', '215', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('41', NULL, '美国汽车工程学会标准(SAE)', '31', '31', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('42', NULL, 'A类标准(汽车(含挂车))', '3', '3', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('43', NULL, 'B类标准(技术基础)', '3', '3', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('44', NULL, 'C类标准(产品标准)', '3', '3', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('46', NULL, 'P类标准(工艺工装)', '3', '3', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('47', NULL, 'Q类标准(质量评审)', '3', '3', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('49', NULL, '底盘标准', '42', '42', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('50', NULL, '电器标准', '42', '42', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('517', NULL, '澳大利亚标准、法规', '2', '2', 35, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('519', NULL, '联合国欧洲经济委员会汽车法规(ECE)(英文版)', '24', '24', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('520', NULL, '澳大利亚标准、法规(译文版)', '517', '517', 3, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('522', NULL, '南非标准、法规(英文版)', '30', '30', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('530', NULL, '海湾标准(英文版)', '29', '29', 4, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('54', NULL, '车身及其附件标准', '42', '42', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('55', NULL, '车轮标准', '42', '42', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('56', NULL, '整车装调标准', '42', '42', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('563', NULL, '欧盟经济共同体汽车法规指令(EEC/EC)(英文版)', '23', '23', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('57', NULL, '试验方法标准', '42', '42', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('58', NULL, '其它标准', '42', '42', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6228', NULL, '2010年度', '322', '322', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6229', NULL, '美国电气和电子工程师协会(IEEE)', '31', '31', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6230', NULL, '美国电气和电子工程师协会(IEEE)英文版', '6229', '6229', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6254', NULL, '荷兰标准、法规', '2', '2', 41, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6255', NULL, '波兰标准、法规', '2', '2', 42, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6256', NULL, '墨西哥标准、法规', '2', '2', 43, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6257', NULL, '荷兰标准、法规(英文版)', '6254', '6254', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6258', NULL, '波兰标准、法规(英文版)', '6255', '6255', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6259', NULL, '墨西哥标准、法规(英文版)', '6256', '6256', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6260', NULL, '荷兰标准、法规(译文版)', '6254', '6254', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6261', NULL, '波兰标准、法规(译文版)', '6255', '6255', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6262', NULL, '墨西哥标准、法规(译文版)', '6256', '6256', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6263', NULL, '2010年新闻', '319', '319', 26, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6265', NULL, '国际电工委员会标准(IEC)(译文版)', '2200', '2200', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6266', NULL, '欧洲电信标准(ETSI)(译文版)', '2245', '2245', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6267', NULL, '国外企业标准、法规', '2', '2', 44, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6268', NULL, '国外企业联盟标准(英文版)', '6267', '6267', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6269', NULL, '国外企业联盟标准(译文版)', '6267', '6267', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6274', NULL, '欧洲标准(EN)', '2', '2', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6275', NULL, '1997年—2005年新闻', '319', '319', 31, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6276', NULL, '阿根廷标准、法规', '2', '2', 46, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6277', NULL, '阿根廷标准、法规(英文版)', '6276', '6276', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6278', NULL, '阿根廷标准、法规(译文版)', '6276', '6276', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6282', NULL, '澳大利亚标准、法规(英文版)', '517', '517', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6283', NULL, '韩国标准、法规(英文版)', '28', '28', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6284', NULL, '韩国标准、法规(译文版)', '28', '28', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6285', NULL, '南非标准、法规(译文版)', '30', '30', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('66', NULL, '整车标准', '4', '4', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('67', NULL, '安全技术标准', '4', '4', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('68', NULL, '节能技术标准', '4', '4', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('69', NULL, '排放标准', '4', '4', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6905', NULL, '德国法规', '26', '26', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6906', NULL, '德国法规(英文版)', '6905', '6905', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6907', NULL, '德国法规(译文版)', '6905', '6905', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6908', NULL, '英国标准、法规', '2', '2', 47, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6909', NULL, '英国法规(英文版)', '6908', '6908', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6910', NULL, '英国法规(译文版)', '6908', '6908', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6911', NULL, '新加坡标准、法规', '2', '2', 48, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6912', NULL, '新加坡法规', '6911', '6911', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6913', NULL, '新加坡法规(英文版)', '6912', '6912', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6914', NULL, '新加坡法规(译文版)', '6912', '6912', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6915', NULL, '深圳市地方标准', '18', '18', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6916', NULL, '其他法规(英文版)', '32', '32', 4, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6917', NULL, 'X类标准(出口车)', '3', '3', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6918', NULL, '南非标准法规(ZA、VC)', '522', '522', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6919', NULL, '南非国家标准(SANS)', '522', '522', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6920', NULL, '南非标准法规(ZA、VC)', '6285', '6285', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6921', NULL, '南非国家标准(SANS)', '6285', '6285', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6922', NULL, 'SABS', '522', '522', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6923', NULL, 'SABS', '6285', '6285', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6924', NULL, '其他部分', '522', '522', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6925', NULL, '其他部分', '6285', '6285', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6926', NULL, '其它(2010)', '3128', '3128', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6927', NULL, '汽车分标协(2010)', '3122', '3122', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6935', NULL, '欧盟经济共同体汽车法规指令(EEC/EC)(译文版)', '23', '23', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6936', NULL, '美国电气和电子工程师协会(IEEE)译文版', '6229', '6229', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6937', NULL, '欧洲标准(EN)英文版', '6274', '6274', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6938', NULL, '欧洲标准(EN)译文版', '6274', '6274', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6939', NULL, '加拿大标准、法规', '2', '2', 49, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6940', NULL, '加拿大标准、法规(英文版)', '6939', '6939', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6941', NULL, '加拿大标准、法规(译文版)', '6939', '6939', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6942', NULL, '马来西亚标准、法规', '2', '2', 50, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6943', NULL, '马来西亚标准、法规(英文版)', '6942', '6942', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6944', NULL, '马来西亚标准、法规(译文版)', '6942', '6942', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6945', NULL, '新西兰标准、法规', '2', '2', 51, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6946', NULL, '新西兰标准、法规(英文版)', '6945', '6945', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6947', NULL, '新西兰标准、法规(译文版)', '6945', '6945', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6948', NULL, '泰国标准、法规(英文版)', '1911', '1911', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6949', NULL, '泰国标准、法规(译文版)', '1911', '1911', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6950', NULL, '俄罗斯标准、法规(英文版)', '25', '25', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6951', NULL, '俄罗斯标准、法规(译文版)', '25', '25', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6952', NULL, '印度汽车研究协会(ARAI)标准:AIS(英文版)', '32', '32', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('6953', NULL, '印度标准局标准:IS(英文版)', '32', '32', 6, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7', NULL, '发动机标准', '215', '215', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('70', NULL, '噪声标准', '4', '4', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7017', NULL, '土方机械', '215', '215', 24, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7018', NULL, '轻工行业标准(QB)', '1', '1', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('71', NULL, '底盘标准', '4', '4', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7116', '', '标准法规分析报告', '0', '0', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7117', NULL, '综合性法规分析', '7116', '7116', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7118', NULL, 'PU201项目', '7116', '7116', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7119', NULL, '福康E(e)-mark认证项目法规分析报告', '7116', '7116', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7120', NULL, 'K1项目法规分析', '7116', '7116', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7121', NULL, '2009年法规研究报告汇总(仅供参考)', '7116', '7116', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7124', NULL, '2010年法规研究报告汇总(初稿,仅供参考)', '7116', '7116', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7125', NULL, '车身及附件,灯光与信号', '7124', '7124', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7127', NULL, '整车', '7124', '7124', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7128', NULL, '俄罗斯法规分析', '7117', '7117', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7131', NULL, '印度法规分析', '7117', '7117', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7132', NULL, 'K1项目法规分析-澳大利亚、南非、沙特、泰国', '7120', '7120', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7133', NULL, '新能源法规解读', '7117', '7117', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7134', NULL, '土耳其法规研究', '7117', '7117', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7135', NULL, '车身及附件,灯光与信号', '7121', '7121', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7136', NULL, '整车', '7121', '7121', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7137', NULL, '其他部分', '7121', '7121', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7138', NULL, '轮胎', '7124', '7124', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7139', NULL, '制动、转向', '7124', '7124', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7140', NULL, '碰撞', '7124', '7124', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7141', NULL, '环保(排放、噪声、回收再利用)', '7124', '7124', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7142', NULL, '电子电器', '7124', '7124', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7143', NULL, '发动机相关', '7124', '7124', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7144', NULL, 'PU201项目(2009)', '7118', '7118', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7145', NULL, 'PU201项目(2010)', '7118', '7118', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7146', NULL, '新能源', '7124', '7124', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7147', NULL, '其它(2011)', '3128', '3128', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7148', NULL, '内部标准培训(2011)', '3114', '3114', 102, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7149', NULL, '2011年新闻', '319', '319', 25, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7150', NULL, '2011年度', '322', '322', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7151', NULL, '日本电动车辆协会标准(JEVS)', '27', '27', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7152', NULL, '各工作组', '2078', '2078', 23, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7153', NULL, '车用材料回收利用技术工作组', '7152', '7152', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7154', NULL, '车用材料回收利用技术工作组(2011)', '7153', '7153', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7155', NULL, '商用车制动工作组', '7152', '7152', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7156', NULL, '商用车制动工作组(2009)', '7155', '7155', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7157', NULL, '商用车标准研究工作组', '7152', '7152', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7158', NULL, '商用车标准研究工作组(2009)', '7157', '7157', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7159', NULL, '汽车噪声标准研究工作组', '7152', '7152', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7160', NULL, '汽车噪声标准研究工作组(2009)', '7159', '7159', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7161', NULL, '汽车噪声标准研究工作组(2010)', '7159', '7159', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7162', NULL, '中重型商用车燃料消耗量试验方法工作组', '7152', '7152', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7163', NULL, '中重型商用车燃料消耗量试验方法工作组(2010)', '7162', '7162', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7164', NULL, '台湾法规', '18', '18', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7165', NULL, '台湾法规(英文版)', '7164', '7164', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7166', NULL, '台湾法规(译文版)', '7164', '7164', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7167', NULL, 'TAP(译文)', '32', '32', 8, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7168', NULL, '联合国欧洲经济委员会汽车法规(ECE)(译文版)', '24', '24', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7170', NULL, '欧盟(EEC/EC)', '7197', '7197', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7171', NULL, '欧洲经济委员会(ECE)', '7197', '7197', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7172', NULL, '美国', '7197', '7197', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7173', NULL, '日本', '7197', '7197', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7174', NULL, '韩国', '7197', '7197', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7175', NULL, '澳大利亚', '7197', '7197', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7176', NULL, '阿根廷', '7201', '7201', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7177', NULL, '巴西', '7201', '7201', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7178', NULL, '俄罗斯', '2213', '2213', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7179', NULL, '厄瓜多尔', '7201', '7201', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7180', NULL, '菲律宾', '7198', '7198', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7181', NULL, '哥伦比亚', '7201', '7201', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7182', NULL, '海湾', '7200', '7200', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7183', NULL, '荷兰', '7197', '7197', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7184', NULL, '墨西哥', '7201', '7201', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7185', NULL, '马来西亚', '7198', '7198', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7186', NULL, '南非', '7203', '7203', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7187', NULL, '土耳其', '7197', '7197', 18, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7188', NULL, '泰国', '7198', '7198', 19, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7189', NULL, '乌克兰', '7205', '7205', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7190', NULL, '乌拉圭', '7201', '7201', 21, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7191', NULL, '委内瑞拉', '7201', '7201', 22, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7192', NULL, '印尼', '7198', '7198', 23, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7193', NULL, '印度', '2213', '2213', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7194', NULL, '伊朗', '7200', '7200', 24, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7196', NULL, '智利', '7201', '7201', 26, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7197', NULL, '高端区域', '2213', '2213', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7198', NULL, '东南亚', '2213', '2213', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7199', NULL, '新加坡', '7198', '7198', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('72', NULL, '车身及附件标准', '4', '4', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7200', NULL, '西亚', '2213', '2213', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7201', NULL, '美洲', '2213', '2213', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7202', NULL, '加拿大', '7201', '7201', 27, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7203', NULL, '中南非', '2213', '2213', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7204', NULL, '埃及', '7203', '7203', 18, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7205', NULL, '其他', '2213', '2213', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7208', NULL, '波兰', '7197', '7197', 19, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7209', NULL, '德国', '7197', '7197', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7210', NULL, '英国', '7197', '7197', 21, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7211', NULL, '新西兰', '7197', '7197', 22, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7212', NULL, '香港标准目录', '367', '367', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7213', NULL, '台湾标准目录', '367', '367', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7214', NULL, '基础分标委(2011)', '3120', '3120', 101, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7215', NULL, '发布的(国标、行标、地标)汽车类相关标准', '2212', '2212', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7216', NULL, '发布的(国标、行标、地标)汽车类相关标准(2008)', '7215', '7215', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7217', NULL, '发布的(国标、行标、地标)汽车类相关标准(2009)', '7215', '7215', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7218', NULL, '发布的(国标、行标、地标)汽车类相关标准(2010)', '7215', '7215', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7219', NULL, '发布的(国标、行标、地标)汽车类相关标准(2011)', '7215', '7215', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7220', NULL, '国内电动车辆标准目录', '2212', '2212', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7221', NULL, '国内电动车辆标准目录(2009)', '7220', '7220', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7222', NULL, '国内电动车辆标准目录(2010)', '7220', '7220', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7223', NULL, '国内电动车辆标准目录(2011)', '7220', '7220', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7224', NULL, '国标、行标、地标 作废、代替、转号情况汇总', '2212', '2212', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7225', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2008-2011)', '7224', '7224', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7226', NULL, '香港标准目录(2011)', '7212', '7212', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7228', NULL, '专用汽车标准目录', '2212', '2212', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7229', NULL, '专用汽车标准目录(2010)', '7228', '7228', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('723', NULL, '起重机', '215', '215', 23, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7230', NULL, '专用汽车标准目录(2011)', '7228', '7228', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7231', NULL, '标准起草组', '321', '321', 25, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7232', NULL, 'GB 4094 起草组', '7231', '7231', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7233', NULL, '内燃机分标委(2011)', '3117', '3117', 101, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7235', '', '标准法规符合性检查报告', '0', '0', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7236', NULL, 'W1项目法规符合性检查报告', '7235', '7235', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7238', NULL, '中国强制性标准目录', '2212', '2212', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7239', NULL, '中国强制性标准目录(2010)', '7238', '7238', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7240', NULL, '中国强制性标准目录(2011)', '7238', '7238', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7241', NULL, '中国强制性标准分类目录', '2212', '2212', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7242', NULL, '中国强制性标准分类目录(2011)', '7241', '7241', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7243', NULL, '汽车分标协(2011)', '3122', '3122', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7244', NULL, '中国强制性标准目录(2008)', '7238', '7238', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7245', NULL, 'T类标准(试验标准)', '3', '3', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7246', NULL, 'F类标准(仿真分析)', '3', '3', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7247', NULL, 'R类标准(设计规范)', '3', '3', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7248', NULL, 'M类标准(工程机械)', '3', '3', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7249', NULL, '乘用车标准', '3', '3', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7251', NULL, '设计标准', '7249', '7249', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7257', NULL, '重型商用车辆燃料消耗量限值', '7152', '7152', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7258', NULL, '重型商用车辆燃料消耗量限值(2011)', '7257', '7257', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7260', NULL, '其他', '31', '31', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7261', NULL, '任务书模板', '366', '366', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7262', NULL, '工程机械', '215', '215', 25, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7263', NULL, '参考标准', '3', '3', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7264', NULL, '参考标准(FT T)', '7263', '7263', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7265', NULL, '发布的(国标、行标、地标)汽车类相关标准(2012)', '7215', '7215', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7266', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2012)', '7224', '7224', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7267', NULL, '专用汽车标准目录(2012)', '7228', '7228', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7268', NULL, '2011年法规研究报告汇总(仅供参考)', '7116', '7116', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7269', NULL, '2012年度', '322', '322', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7270', NULL, 'Z类标准(指导性技术文件)', '3', '3', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7271', NULL, '2012年新闻', '319', '319', 24, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7272', NULL, '国内电动车辆标准目录(2012)', '7220', '7220', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7273', NULL, '中国强制性标准目录(2012)', '7238', '7238', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7274', NULL, '中国强制性标准分类目录(2012)', '7241', '7241', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7275', NULL, '车身及附件,灯光与信号', '7268', '7268', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7276', NULL, '整车', '7268', '7268', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7277', NULL, '轮胎', '7268', '7268', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7278', NULL, '制动、转向', '7268', '7268', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7279', NULL, '碰撞', '7268', '7268', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7280', NULL, '环保(排放、噪声、回收再利用)', '7268', '7268', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7281', NULL, '电子电器', '7268', '7268', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7282', NULL, '发动机相关', '7268', '7268', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7283', NULL, '新能源', '7268', '7268', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7284', NULL, '材料', '7268', '7268', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7285', NULL, '2012年会议信息', '2077', '2077', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7286', NULL, '欧洲法规研究报告', '7117', '7117', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7288', NULL, '测试', '7235', '7235', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7289', NULL, '2012年', '2243', '2243', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7290', NULL, '2011年', '2243', '2243', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7291', NULL, '2010年', '2243', '2243', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7292', NULL, '2009年', '2243', '2243', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7293', NULL, '内燃机分标委(2012)', '3117', '3117', 102, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7294', NULL, '电动汽车整车标准工作组', '7152', '7152', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7295', NULL, '电动汽车用动力蓄电池标准研究工作组', '7152', '7152', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7296', NULL, '电动汽车整车标准工作组(2012)', '7294', '7294', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7297', NULL, '电动汽车用动力蓄电池标准研究工作组(2012)', '7295', '7295', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7298', NULL, '全球技术法规(GTR)', '2', '2', 52, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7299', NULL, '全球技术法规(GTR)英文', '7298', '7298', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('73', NULL, '电器标准', '4', '4', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7300', NULL, '全球技术法规(GTR)译文', '7298', '7298', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7301', NULL, 'GB 16735-2004《道路车辆 车辆识别代号(VIN)》、GB 16737-2004《道路车辆 世界制造厂识别代号(WMI)》', '7231', '7231', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7302', NULL, '整车试验方法标准研究工作组', '7152', '7152', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7303', NULL, '整车试验方法标准研究工作组(2012)', '7302', '7302', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7304', NULL, '标准体系框架', '323', '323', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7305', NULL, 'UTE联盟', '2', '2', 53, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7306', NULL, 'UTE联盟(英文版)', '7305', '7305', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7307', NULL, 'DB11/ 电动汽车远程监控技术规范', '7231', '7231', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7308', NULL, '日本型式认证手册', '369', '369', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7309', NULL, '日本型式认证手册(2004版)', '7308', '7308', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7310', NULL, '日本型式认证手册(2010版)', '7308', '7308', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7311', NULL, '汽车电磁兼容(EMC)标准化工作组', '7152', '7152', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7312', NULL, '内部标准培训(2012)', '3114', '3114', 103, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7313', NULL, '美国材料试验协会标准(ASTM)', '31', '31', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7314', NULL, '美国材料试验协会标准(ASTM)(英文版)', '7313', '7313', 1, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7315', NULL, '美国材料试验协会标准(ASTM)(译文版)', '7313', '7313', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7316', NULL, 'ESC电子稳定控制系统工作组', '7152', '7152', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7317', NULL, 'ESC电子稳定控制系统工作组(2012)', '7316', '7316', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7318', NULL, '乘用车辆燃料消耗量标准工作组', '7152', '7152', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7319', NULL, '乘用车辆燃料消耗量标准工作组(2012)', '7318', '7318', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7320', NULL, '其它(2012)', '3128', '3128', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7321', NULL, '车辆分类标准研究工作组', '7152', '7152', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7322', NULL, '车辆分类标准研究工作组(2012)', '7321', '7321', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7323', NULL, '汽车分标协(2012)', '3122', '3122', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7324', NULL, 'GB7258', '7116', '7116', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7325', NULL, '汽车电磁兼容(EMC)标准化工作组(2012)', '7311', '7311', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7326', NULL, '国军标标准目录', '2212', '2212', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7327', NULL, '2011年版本', '2218', '2218', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7328', NULL, '2011年版本(原文版)', '7327', '7327', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7329', NULL, '2011年版本(译文版)', '7327', '7327', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7330', NULL, '乘用车第三阶段油耗标准介绍', '7116', '7116', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7331', NULL, '2012', '7330', '7330', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7332', NULL, '汽车噪声标准研究工作组(2012)', '7159', '7159', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7333', NULL, '基础分标委(2012)', '3120', '3120', 102, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7334', NULL, '2013年新闻', '319', '319', 23, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7335', NULL, '参考文件', '2', '2', 54, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7336', NULL, '内部标准培训(2013)', '3114', '3114', 104, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7337', NULL, '汽车分标协(2013)', '3122', '3122', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7338', NULL, '基础分标委(2013)', '3120', '3120', 103, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7339', NULL, '发布的(国标、行标、地标)汽车类相关标准(2013)', '7215', '7215', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7340', NULL, '其它(2013)', '3128', '3128', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7341', NULL, '2013年', '2243', '2243', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7342', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2013)', '7224', '7224', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7343', NULL, '中国强制性标准目录(2013)', '7238', '7238', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7344', NULL, 'V类标准(评价标准)', '3', '3', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7346', NULL, '乘用车辆燃料消耗量标准工作组(2013)', '7318', '7318', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7347', NULL, '2013年度', '322', '322', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7348', NULL, '手册', '323', '323', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7350', NULL, 'PM项目法规分析', '7116', '7116', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7351', NULL, 'PM项目法规分析(2013年)', '7350', '7350', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7352', NULL, '车身及附件,灯光与信号', '7351', '7351', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7353', NULL, '整车', '7351', '7351', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7354', NULL, '轮胎', '7351', '7351', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7355', NULL, '制动、转向', '7351', '7351', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7356', NULL, '碰撞', '7351', '7351', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7357', NULL, '环保(排放、噪声、回收再利用)', '7351', '7351', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7358', NULL, '电子电器', '7351', '7351', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7359', NULL, '发动机相关', '7351', '7351', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7360', NULL, '新能源', '7351', '7351', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7361', NULL, '材料', '7351', '7351', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7362', NULL, '巴西汽车法规研究报告', '7117', '7117', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7363', NULL, '印度中重卡项目法规研究', '7116', '7116', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7364', NULL, '印度中重卡项目法规研究(2013年)', '7363', '7363', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7365', NULL, '车身及附件,灯光与信号', '7364', '7364', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7366', NULL, '整车', '7364', '7364', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7367', NULL, '轮胎', '7364', '7364', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7368', NULL, '制动、转向', '7364', '7364', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7369', NULL, '碰撞', '7364', '7364', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7370', NULL, '环保(排放、噪声、回收再利用)', '7364', '7364', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7371', NULL, '电子电器', '7364', '7364', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7372', NULL, '发动机相关', '7364', '7364', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7373', NULL, '新能源', '7364', '7364', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7374', NULL, '材料', '7364', '7364', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7375', NULL, '整车试验方法标准研究工作组(2013)', '7302', '7302', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7376', NULL, '中国强制性标准分类目录(2013)', '7241', '7241', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7377', NULL, '电动汽车用驱动电机标准研究工作组', '7152', '7152', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7379', NULL, '汽车电磁兼容(EMC)标准化工作组(2013)', '7311', '7311', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7380', NULL, '汽车标准件', '323', '323', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7381', NULL, '汽车标准件手册', '7380', '7380', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7382', NULL, '汽车标准件调研资料', '7380', '7380', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7383', NULL, '福田企业标准件手册', '7380', '7380', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7387', NULL, '汽车紧固件标准化工作组', '2078', '2078', 21, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7388', NULL, '汽车紧固件标准化工作组(2013)', '7387', '7387', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7389', NULL, '汽车缓速制动系统', '7231', '7231', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7390', NULL, '电动汽车用动力蓄电池标准研究工作组(2013)', '7295', '7295', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7391', NULL, '电动汽车用动力蓄电池标准研究工作组(2013)', '7295', '7295', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7392', NULL, '轻型汽车燃料消耗量标识标准研究工作组', '7231', '7231', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7393', NULL, '电动汽车用驱动电机标准研究工作组(2013)', '7377', '7377', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7394', NULL, '汽车噪声标准研究工作组(2013)', '7159', '7159', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7395', NULL, '印度尼西亚', '2', '2', 55, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7396', NULL, '印度尼西亚(原文)', '7395', '7395', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7397', NULL, '印度尼西亚(译文)', '7395', '7395', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7398', NULL, '哥伦比亚法规', '2', '2', 56, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7399', NULL, '哥伦比亚法规(原文)', '7398', '7398', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('74', NULL, '制动标准', '4', '4', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7400', NULL, '哥伦比亚法规(译文)', '7398', '7398', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7401', NULL, 'enterprise standard', '3', '3', 18, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7402', NULL, '发布的(国标、行标、地标)汽车类相关标准(2014)', '7215', '7215', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7403', NULL, '中国强制性标准目录(2014)', '7238', '7238', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7404', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2014)', '7224', '7224', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7405', NULL, '内燃机分标委(2013)', '3117', '3117', 103, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7406', NULL, '其它(2014)', '3128', '3128', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7407', NULL, '2014年新闻', '319', '319', 22, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7408', NULL, '2014年', '2243', '2243', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7409', NULL, '国内电动车辆标准目录(2014)', '7220', '7220', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7410', NULL, '2014年度', '322', '322', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7411', NULL, '产品开发项目法规清单', '367', '367', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7412', NULL, 'PX/PM项目', '7411', '7411', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7413', NULL, '内部标准培训(2014)', '3114', '3114', 105, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7414', NULL, '重型商用车辆燃料消耗量限值2014', '7257', '7257', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('75', NULL, '车轮及轮胎标准', '4', '4', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7520', NULL, '乘用车辆燃料消耗量标准工作组(2014)', '7318', '7318', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7521', '', '国家标准化法律/法规', '0', '0', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7522', NULL, '国家标准化法律', '7521', '7521', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7523', NULL, '国家标准化法规', '7521', '7521', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7524', NULL, '2014年版本', '2218', '2218', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7525', NULL, '2014年版本(原文版)', '7524', '7524', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7526', NULL, '2014年版本(译文版)', '7524', '7524', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7527', NULL, '基础分标委(2014)', '3120', '3120', 104, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7528', NULL, '汽车分标协(2014)', '3122', '3122', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7563', NULL, '汽车紧固件标准化工作组(2014)', '7387', '7387', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7564', NULL, '汽标委', '2078', '2078', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7565', NULL, '全标委2014', '7564', '7564', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7566', NULL, '内燃机分标委(2014)', '3117', '3117', 104, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7567', NULL, '柴油机 活塞测温试验 标准起草组', '7231', '7231', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7568', NULL, '2015年新闻', '319', '319', 21, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7569', NULL, '中国强制性标准目录(2015)', '7238', '7238', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7570', NULL, '2015年', '2243', '2243', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7571', NULL, '内燃机分标委(2015)', '3117', '3117', 105, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7572', NULL, '基础分标委(2015)', '3120', '3120', 105, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7573', NULL, '挂车分标委', '2078', '2078', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7574', NULL, '挂车分标委(2015)', '7573', '7573', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7575', NULL, '发布的(国标、行标、地标)汽车类相关标准(2015)', '7215', '7215', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7576', NULL, '2015年度', '322', '322', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7577', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2015)', '7224', '7224', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7578', NULL, '消防车', '215', '215', 26, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7579', NULL, '乌拉圭标准、法规', '2', '2', 57, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7580', NULL, '乌拉圭标准、法规(原文)', '7579', '7579', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7581', NULL, '乌拉圭标准、法规(译文)', '7579', '7579', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7582', NULL, '其它(2015)', '3128', '3128', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7583', NULL, '乘用车辆燃料消耗量标准工作组(2015)', '7318', '7318', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7584', NULL, '汽车分标协(2015)', '3122', '3122', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7585', NULL, '轻型商用车辆燃料消耗量限值', '7152', '7152', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7586', NULL, '轻型商用车辆燃料消耗量限值(2015)', '7585', '7585', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7587', NULL, '内部标准培训(2015)', '3114', '3114', 106, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7588', NULL, '车身分标委', '2078', '2078', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7589', NULL, '车身分标委(2015)', '7588', '7588', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7590', NULL, '换档提醒工作组', '7231', '7231', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7591', NULL, '微车工作组', '7152', '7152', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7592', NULL, '国内电动车辆标准目录(2015)', '7220', '7220', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7593', NULL, '建材行业标准(JC)', '1', '1', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7594', NULL, '建筑工业行业标准(JG)', '1', '1', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7595', NULL, '能源行业标准(NB)', '1', '1', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7596', NULL, '商用车标准研究工作组(2015)', '7157', '7157', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7597', NULL, '重型商用车辆燃料消耗量限值(2015)', '7257', '7257', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7598', NULL, '车辆分类标准研究工作组(2015)', '7321', '7321', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7599', NULL, '2016年新闻', '319', '319', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('76', NULL, '灯光标准', '4', '4', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7601', NULL, '整车分标委(2015)', '3123', '3123', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7602', NULL, '整车分技术委员会(2016)', '3123', '3123', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7603', NULL, '发布的(国标、行标、地标)汽车类相关标准(2016)', '7215', '7215', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7604', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2016)', '7224', '7224', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7605', NULL, '国内电动车辆标准目录(2016)', '7220', '7220', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7606', NULL, '中国强制性标准目录(2016)', '7238', '7238', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7607', NULL, '整车试验方法标准研究工作组(2015)', '7302', '7302', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7608', NULL, '内部标准培训(2016)', '3114', '3114', 107, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7609', NULL, '2016年', '2243', '2243', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7610', NULL, '车辆分类标准研究工作组(2016)', '7321', '7321', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7611', NULL, '其它(2016)', '3128', '3128', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7612', NULL, '企业标准发布通知', '320', '320', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7613', NULL, '企业标准发布通知(2016)', '7612', '7612', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7614', NULL, '汽车分标协(2016)', '3122', '3122', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7615', NULL, '2016年度', '322', '322', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7616', NULL, '基础分标委(2016)', '3120', '3120', 106, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7617', NULL, '商用车标准研究工作组(2016)', '7157', '7157', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7618', NULL, '互换性技术', '97', '97', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7619', NULL, '汽车噪声标准研究工作组(2016)', '7159', '7159', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7620', NULL, '乘用车辆燃料消耗量标准工作组(2016)', '7318', '7318', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7622', NULL, '轻型汽车燃料消耗量试验方法标准工作组', '7231', '7231', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7623', NULL, '北京市重型车OBD、车载法标准工作组', '7231', '7231', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7624', NULL, '车身附件分标委', '2078', '2078', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7625', NULL, '车身附件分标委(2016)', '7624', '7624', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7626', NULL, '世界汽车排放油耗标准对标平台', '7152', '7152', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7627', NULL, '世界汽车排放油耗标准对标平台(2016)', '7626', '7626', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7628', NULL, 'GB 7258标准研究工作组', '7231', '7231', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7629', NULL, 'GB 7258标准研究工作组(2016)', '7628', '7628', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7630', NULL, '道路车辆功能安全起草组', '7231', '7231', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7631', NULL, '道路车辆回收利用标准工作组', '7152', '7152', 18, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7632', NULL, '道路车辆回收利用标准工作组(2016)', '7631', '7631', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7633', NULL, '整车试验方法标准研究工作组(2016)', '7302', '7302', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7634', NULL, '底盘分标委', '2078', '2078', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7635', NULL, '底盘分标委(2016)', '7634', '7634', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('77', NULL, '仪表标准', '4', '4', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7749', NULL, '车身分标委(2016)', '7588', '7588', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7750', NULL, '企业标准发布通知(2017)', '7612', '7612', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7751', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2017)', '7224', '7224', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7752', NULL, '中国强制性标准目录(2017)', '7238', '7238', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7753', NULL, '发布的(国标、行标、地标)汽车类相关标准(2017)', '7215', '7215', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7754', NULL, '内部标准培训(2017)', '3114', '3114', 108, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7755', NULL, '2017年新闻', '319', '319', 19, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7756', NULL, '2017年', '320', '320', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7757', NULL, '2017年度', '322', '322', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7758', NULL, '整车试验方法标准研究工作组(2017)', '7302', '7302', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7759', NULL, '汽车分标协(2017)', '3122', '3122', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7760', NULL, '基础分标委(2017)', '3120', '3120', 107, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7761', NULL, '整车分技术委员会(2017)', '3123', '3123', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7762', NULL, '制动分标委', '2078', '2078', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7763', NULL, '制动分标委(2017)', '7762', '7762', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7764', NULL, '商用车标准研究工作组(2017)', '7157', '7157', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7765', NULL, '智利标准、法规', '2', '2', 58, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7766', NULL, '美国各州标准、法规', '31', '31', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7767', NULL, '原文', '7765', '7765', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7768', NULL, '译文', '7765', '7765', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7769', NULL, '原文', '7766', '7766', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7770', NULL, '译文', '7766', '7766', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7771', NULL, '微车工作组(2017)', '7591', '7591', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7772', NULL, '车辆分类标准研究工作组(2017)', '7321', '7321', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7773', NULL, '乘用车辆燃料消耗量标准工作组(2017)', '7318', '7318', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7774', NULL, '汽车噪声标准研究工作组(2017)', '7159', '7159', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7775', NULL, '挂车分标委(2017)', '7573', '7573', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7776', NULL, '重型商用车辆燃料消耗量限值(2017)', '7257', '7257', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7777', NULL, '电器分标委', '2078', '2078', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7778', NULL, '电器分标委(2017)', '7777', '7777', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7779', NULL, '车身分标委(2017)', '7588', '7588', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7780', NULL, '其它(2017)', '3128', '3128', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7781', NULL, '道路车辆回收利用标准工作组(2017)', '7631', '7631', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7782', NULL, '原文', '2231', '2231', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7784', NULL, '译文', '2231', '2231', 2, 1, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7785', NULL, '标准件采购体系清单', '323', '323', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('78', NULL, '玻璃标准', '4', '4', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7805', NULL, '2018年新闻', '319', '319', 32, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7807', NULL, '乘用车辆燃料消耗量标准工作组(2018)', '7318', '7318', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7808', NULL, '2017', '7564', '7564', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7809', NULL, '车身附件分标委(2018)', '7624', '7624', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7810', NULL, '汽车分标协(2018)', '3122', '3122', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7811', NULL, '挂车分标委(2018)', '7573', '7573', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7812', NULL, '2018', '7564', '7564', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7813', NULL, '基础分标委(2018)', '3120', '3120', 108, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7814', NULL, '整车分技术委员会 (2018)', '3123', '3123', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7815', NULL, '车身分标委(2018)', '7588', '7588', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7816', NULL, '底盘分标委(2018)', '7634', '7634', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7817', NULL, '制动分标委(2018)', '7762', '7762', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7818', NULL, '电器分标委(2018)', '7777', '7777', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7819', NULL, '其它(2018)', '3128', '3128', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7820', NULL, '电动车辆分标委', '2078', '2078', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7821', NULL, '电动车辆分标委(2018)', '7820', '7820', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7822', NULL, '企业标准发布通知(2018)', '7612', '7612', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7823', NULL, '商用车标准研究工作组(2018)', '7157', '7157', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7824', NULL, '2018年度', '322', '322', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7825', NULL, '发布的(国标、行标、地标)汽车类相关标准(2018)', '7215', '7215', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7826', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2018)', '7224', '7224', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7827', NULL, '中国强制性标准目录(2018)', '7238', '7238', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7828', NULL, '汽车噪声标准研究工作组(2018)', '7159', '7159', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7829', NULL, '皮卡车标准工作组', '7152', '7152', 19, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7830', NULL, '皮卡车标准工作组(2018)', '7829', '7829', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7831', NULL, '整车试验方法标准研究工作组(2018)', '7302', '7302', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7832', NULL, '安全带提醒装置标准工作组', '7152', '7152', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7833', NULL, '安全带提醒装置标准工作组(2018)', '7832', '7832', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7834', NULL, '交通部公路科学研究所', '2078', '2078', 23, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7835', NULL, '交通部公路科学研究所(2018)', '7834', '7834', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7836', NULL, '重型商用车辆燃料消耗量限值(2018)', '7257', '7257', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7837', NULL, '车辆分类标准研究工作组(2018)', '7321', '7321', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7838', NULL, '非金属材料制品分标委', '2078', '2078', 18, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7839', NULL, '非金属材料制品分标委(2018)', '7838', '7838', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7840', NULL, '2019年新闻', '319', '319', 33, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7841', NULL, '企业标准发布通知(2019)', '7612', '7612', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7842', NULL, '2019', '7564', '7564', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7843', NULL, '基础分标委(2019)', '3120', '3120', 109, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7844', NULL, '汽车分标协(2019)', '3122', '3122', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7845', NULL, '整车分标委(2019)', '3123', '3123', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7846', NULL, '挂车分标委(2019)', '7573', '7573', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7847', NULL, '车身分标委(2019)', '7588', '7588', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7848', NULL, '车身附件分标委(2019)', '7624', '7624', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7849', NULL, '底盘分标委(2019)', '7634', '7634', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7850', NULL, '制动分标委(2019)', '7762', '7762', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7851', NULL, '电器分标委(2019)', '7777', '7777', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7852', NULL, '其它(2019)', '3128', '3128', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7853', NULL, '商用车标准研究工作组(2019)', '7157', '7157', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7854', NULL, '乘用车辆燃料消耗量标准工作组(2019)', '7318', '7318', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7855', NULL, '重型商用车辆燃料消耗量限值(2019)', '7257', '7257', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7856', NULL, '整车试验方法标准研究工作组(2019)', '7302', '7302', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7857', NULL, '皮卡车标准工作组(2019)', '7829', '7829', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7858', NULL, '安全带提醒装置标准工作组(2019)', '7832', '7832', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7859', NULL, '车辆分类标准研究工作组(2019)', '7321', '7321', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7860', NULL, '轻型汽车燃料消耗量试验方法标准工作组(2019)', '7622', '7622', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7861', NULL, '电动车辆分标委(2019)', '7820', '7820', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7862', NULL, '非金属材料制品分标委(2019)', '7838', '7838', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7863', NULL, '发布的(国标、行标、地标)汽车类相关标准(2019)', '7215', '7215', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7864', NULL, '内部标准培训(2019)', '3114', '3114', 109, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7865', NULL, '汽车噪声标准研究工作组(2019)', '7159', '7159', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7866', NULL, '河北雷萨标准', '3', '3', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7868', NULL, '智能网联分标委', '2078', '2078', 21, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7869', NULL, '自动驾驶标准工作组', '7868', '7868', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7870', NULL, '自动驾驶标准工作组(2019)', '7869', '7869', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7871', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2019)', '7224', '7224', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7872', NULL, '中国强制性标准目录(2019)', '7238', '7238', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7873', NULL, '2019年度', '322', '322', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7874', NULL, '智能网联汽车节能项目组', '7152', '7152', 21, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7875', NULL, '智能网联汽车节能项目组(2019)', '7874', '7874', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7876', NULL, '燃料电池工作组', '7152', '7152', 22, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7877', NULL, '燃料电池工作组(2019)', '7876', '7876', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7878', NULL, '团体标准', '2078', '2078', 24, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7879', NULL, '“基于可回收利用的动力电池设计导则”项目', '7878', '7878', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7880', NULL, '“基于可回收利用的动力电池设计导则”项目', '7878', '7878', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7881', NULL, '国家标准、行业标准目录', '2212', '2212', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7883', NULL, '团体标准', '1', '1', 26, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7884', NULL, '中关村标准', '7883', '7883', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7885', NULL, '中国汽车工程学会CSAE', '7883', '7883', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7886', NULL, '交通部公路科学研究所(2019)', '7834', '7834', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7887', NULL, '网联功能与应用工作组', '7868', '7868', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7888', NULL, '全标委汽车碰撞试验及碰撞防护分委会', '2078', '2078', 25, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7889', NULL, '汽车电子与电磁兼容分技术委员会', '2078', '2078', 26, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7890', NULL, '汽车工程学会CSAE', '2078', '2078', 27, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7892', NULL, '福田汽车新能源汽车试验手册', '323', '323', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7893', NULL, '中国标准化协会CAS', '7883', '7883', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7894', NULL, '电动汽车整车标准工作组(2019)', '7294', '7294', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7895', NULL, '车辆动力学分标委', '2078', '2078', 28, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7896', NULL, '设计标准', '3', '3', 19, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7897', NULL, '整车', '7896', '7896', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7898', NULL, '整车性能', '7897', '7897', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7899', NULL, '整车集成', '7897', '7897', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('79', NULL, '燃气汽车', '4', '4', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7900', NULL, '产品标准', '7897', '7897', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7901', NULL, '造型技术', '7897', '7897', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7902', NULL, '动传系统', '7896', '7896', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7903', NULL, '底盘系统', '7896', '7896', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7904', NULL, '车身系统', '7896', '7896', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7905', NULL, '发动机模块', '7902', '7902', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7906', NULL, '动力悬置模块', '7902', '7902', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7907', NULL, '变速模块', '7902', '7902', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7908', NULL, '动力电子模块', '7902', '7902', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7909', NULL, '冷却系统模块', '7902', '7902', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7910', NULL, '后处理+排气模块', '7902', '7902', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7911', NULL, '进气系统模块', '7902', '7902', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7912', NULL, '燃油系统模块', '7902', '7902', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7913', NULL, '驱动桥模块', '7902', '7902', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7914', NULL, '车轮及轮胎模块', '7903', '7903', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7915', NULL, '悬架模块', '7903', '7903', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7916', NULL, '转向模块', '7903', '7903', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7917', NULL, '制动模块', '7903', '7903', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7918', NULL, '非驱动前轴模块', '7903', '7903', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7919', NULL, '车架模块', '7903', '7903', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7920', NULL, '白车身模块', '7904', '7904', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7921', NULL, '悬置模块', '7904', '7904', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7922', NULL, '货厢模块', '7904', '7904', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7923', NULL, '开闭件模块', '7904', '7904', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7924', NULL, '内饰系统模块', '7904', '7904', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7925', NULL, '外饰系统模块', '7904', '7904', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7926', NULL, '电子电控', '7896', '7896', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7927', NULL, '电子电控架构', '7926', '7926', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7928', NULL, '智能网联', '7926', '7926', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7929', NULL, '电器及附件', '7926', '7926', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7930', NULL, '空调系统及其零部件', '7926', '7926', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7931', NULL, '车身电子模块', '7926', '7926', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7932', NULL, '新能源', '7896', '7896', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7933', NULL, '整车控制模块', '7932', '7932', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7934', NULL, '高压附件模块', '7932', '7932', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7935', NULL, '电驱动模块', '7932', '7932', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7936', NULL, '电池模块', '7932', '7932', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7937', NULL, '系统集成', '7932', '7932', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7938', NULL, '技术基础', '3', '3', 20, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7939', NULL, '技术标准综合要求', '7938', '7938', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7940', NULL, '设计文件规范', '7938', '7938', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7941', NULL, '编号、代号类', '7938', '7938', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7942', NULL, '材料标准', '7938', '7938', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7943', NULL, '标准件', '7938', '7938', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7946', NULL, '客车分标委', '2078', '2078', 24, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7947', NULL, '上海智博', '319', '319', 34, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7948', NULL, '上海智博', '320', '320', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7949', NULL, '上海智博', '322', '322', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7950', NULL, '上海智博', '321', '321', 29, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7951', NULL, '上海智博', '323', '323', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7952', NULL, '乘用车及轻型商用车燃油消耗量及指标类标准工作组', '7152', '7152', 23, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7953', NULL, '-2019', '7952', '7952', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7954', NULL, '-2020', '7952', '7952', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7955', NULL, '轻型汽车燃料消耗量试验方法及标识类标准工作组', '7152', '7152', 24, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7956', NULL, '-2019', '7955', '7955', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7957', NULL, '-2020', '7955', '7955', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7958', NULL, '2020年新闻', '319', '319', 35, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7959', NULL, '汽车分标协(2020)', '3122', '3122', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7960', NULL, '企业标准发布通知(2020)', '7612', '7612', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7961', NULL, '2020年度', '322', '322', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7962', NULL, '2020年度', '7887', '7887', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7963', NULL, '2020年', '7868', '7868', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7964', NULL, '制动分标委(2020)', '7762', '7762', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7965', NULL, '轻型汽车能耗标识标准核心起草组', '7152', '7152', 25, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7966', NULL, '2020', '7965', '7965', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7967', NULL, '中国汽车流通协会CADA', '7883', '7883', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7968', NULL, '中国公路学会CHTS', '7883', '7883', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7969', NULL, '整车试验方法标准研究工作组(2020)', '7302', '7302', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7970', NULL, '驾乘操控舒适性系列标准工作组', '7152', '7152', 26, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7971', NULL, '驾乘操控舒适性系列标准工作组(2020)', '7970', '7970', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7972', NULL, '皮卡车标准工作组(2020)', '7829', '7829', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7973', NULL, '重型商用车辆燃料消耗量限值(2020)', '7257', '7257', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7974', NULL, '商用车标准研究工作组(2020)', '7157', '7157', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7975', NULL, '资源管理与信息服务标准工作组', '7152', '7152', 27, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7976', NULL, '资源管理与信息服务标准工作组(2020)', '7975', '7975', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7977', NULL, 'S类标准(产品试制标准)', '3', '3', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7978', NULL, 'Y类标准(标杆研究标准)', '3', '3', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7979', NULL, '自动驾驶标准工作组(2020)', '7869', '7869', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7980', NULL, '道路车辆功能安全标准研究制定工作组', '7152', '7152', 28, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7981', NULL, '道路车辆功能安全标准研究制定工作组(2020)', '7980', '7980', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7982', NULL, '电动车辆分标委(2020)', '7820', '7820', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7983', NULL, '汽车噪声标准研究工作组(2020)', '7159', '7159', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7984', NULL, '安全带提醒装置标准工作组(2020)', '7832', '7832', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7985', NULL, '中国智能交通产业联盟', '7883', '7883', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7986', NULL, '汽车灯光标准整合研究工作组', '7152', '7152', 29, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7987', NULL, '汽车灯光标准整合研究工作组(2020)', '7986', '7986', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7988', NULL, '整车分标委(2020)', '3123', '3123', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7989', NULL, '燃料电池工作组(2020)', '7876', '7876', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7990', NULL, '发布的(国标、行标、地标)汽车类相关标准(2020)', '7215', '7215', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7991', NULL, '国标、行标、地标 作废、代替、转号情况汇总(2020)', '7224', '7224', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7992', NULL, '中国强制性标准目录(2020)', '7238', '7238', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7993', NULL, '电器分标委(2020)', '7777', '7777', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7994', NULL, '车用动力电池回收利用标准研究工作组', '7152', '7152', 30, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7995', NULL, '车用动力电池回收利用标准研究工作组(2020)', '7994', '7994', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7996', NULL, '电动汽车整车标准工作组(2020)', '7294', '7294', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7997', NULL, '电动汽车动力蓄电池标准研究工作组(2020)', '7295', '7295', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7998', NULL, '车辆分类标准研究工作组(2020)', '7321', '7321', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('7999', NULL, '底盘分标委(2020)', '7634', '7634', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8', NULL, '国家标准(GB)', '1', '1', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('80', NULL, '电动汽车', '4', '4', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8000', NULL, '基础分标委(2020)', '3120', '3120', 110, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8001', NULL, '其它(2020)', '3128', '3128', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8002', NULL, '电动汽车用驱动电机标准研究工作组(2020)', '7377', '7377', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8003', NULL, '汽车电磁兼容(EMC)标准化工作组(2020)', '7311', '7311', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8004', NULL, '汽标委(2020)', '7564', '7564', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8005', NULL, '车身附件分标委(2020)', '7624', '7624', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8006', NULL, '2021年新闻', '319', '319', 36, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8007', NULL, '企业标准发布通知(2021)', '7612', '7612', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8008', NULL, '车身分标委(2020)', '7588', '7588', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8009', NULL, '车载电子工作组', '7152', '7152', 31, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8010', NULL, '车载电子工作组(2020)', '8009', '8009', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8011', NULL, '中国东盟汽车标准法规研究中心', '2078', '2078', 29, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8012', NULL, '国际汽车标准及技术法规跟踪与研究工作组', '2078', '2078', 30, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8013', NULL, '道路车辆回收利用标准工作组(2020)', '7631', '7631', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8014', NULL, '节能分标委', '2078', '2078', 22, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8015', NULL, '节能分标委(2020)', '8014', '8014', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8016', NULL, '整车分标委(2021)', '3123', '3123', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8017', NULL, '福田戴姆勒', '3', '3', 21, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8018', NULL, '技术条件', '8017', '8017', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8019', NULL, '技术管理', '8017', '8017', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8020', NULL, '技术基础', '8017', '8017', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8021', NULL, '设计规范', '8017', '8017', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8022', NULL, '试验方法', '8017', '8017', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8023', NULL, '工艺检验', '8017', '8017', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8024', NULL, '电动车辆分标委(2021)', '7820', '7820', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8025', NULL, '2021', '7564', '7564', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8026', NULL, '基础分标委(2021)', '3120', '3120', 111, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8027', NULL, '汽车分标协(2021)', '3122', '3122', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8028', NULL, '挂车分标委(2021)', '7573', '7573', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8029', NULL, '车身分标委(2021)', '7588', '7588', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8030', NULL, '车身附件分标委(2021)', '7624', '7624', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8031', NULL, '底盘分标委(2021)', '7634', '7634', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8032', NULL, '制动分标委(2021)', '7762', '7762', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8033', NULL, '智能网联分标委(2021)', '7868', '7868', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8034', NULL, '汽车紧固件标准化工作组(2021)', '7387', '7387', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8035', NULL, '节能分标委(2021)', '8014', '8014', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8036', NULL, '重型商用车辆燃料消耗量限值(2021)', '7257', '7257', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8037', NULL, '商用车标准研究工作组(2021)', '7157', '7157', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8038', NULL, '-2021', '7952', '7952', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8039', NULL, '车辆分类标准研究工作组(2021)', '7321', '7321', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8040', NULL, '整车试验方法标准研究工作组(2021)', '7302', '7302', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8041', NULL, '汽车噪声标准研究工作组(2021)', '7159', '7159', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8042', NULL, '汽车电磁兼容(EMC)标准化工作组(2021)', '7311', '7311', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8043', NULL, '电动汽车整车标准工作组(2021)', '7294', '7294', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8044', NULL, '电动汽车用驱动电机标准研究工作组(2021)', '7377', '7377', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8045', NULL, '道路车辆回收利用标准工作组(2021)', '7631', '7631', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8046', NULL, '皮卡车标准工作组(2021)', '7829', '7829', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8047', NULL, '安全带提醒装置标准工作组(2021)', '7832', '7832', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8048', NULL, '燃料电池工作组(2021)', '7876', '7876', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8049', NULL, '-2021', '7955', '7955', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8050', NULL, '车载电子工作组(2021)', '8009', '8009', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8051', NULL, '其它(2021)', '3128', '3128', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8052', NULL, '汽车灯光标准整合研究工作组(2021)', '7986', '7986', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8053', NULL, '道路车辆功能安全标准研究制定工作组(2021)', '7980', '7980', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8054', NULL, '北京汽车行业协会', '7883', '7883', 7, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8055', NULL, '先进驾驶辅助系统(ADAS)标准工作组(2021)', '7152', '7152', 32, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8056', NULL, '2021', '7887', '7887', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8057', NULL, '自动驾驶标准工作组(2021)', '7869', '7869', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8058', NULL, '汽车信息安全标准工作组', '7152', '7152', 33, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8059', NULL, '紧固件工作组', '7152', '7152', 34, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8060', NULL, '中国汽车研究院股份有限公司', '7878', '7878', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8061', NULL, '中国汽车研究院股份有限公司', '7878', '7878', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('8062', NULL, '中国汽车工程研究院股份有限公司', '7878', '7878', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('81', NULL, '回收再利用', '4', '4', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('82', NULL, '发动机整机', '7', '7', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('83', NULL, '零部件部分', '7', '7', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('84', NULL, '燃料系统', '7', '7', 3, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('85', NULL, '润滑系统', '7', '7', 4, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('86', NULL, '冷却系统', '7', '7', 5, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('87', NULL, '增压及进排气系统系统', '7', '7', 6, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('88', NULL, '金属材料标准', '216', '216', 8, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('89', NULL, '非金属材料标准', '216', '216', 9, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('9', NULL, '国军标(GJB)', '1', '1', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('90', NULL, '基础通用标准', '216', '216', 10, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('91', NULL, '客车', '215', '215', 11, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('92', NULL, '轻型货车', '215', '215', 12, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('93', NULL, '中重型货车', '215', '215', 13, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('94', NULL, '专用车', '215', '215', 14, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('95', NULL, '拖拉机变型运输机', '215', '215', 15, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('96', NULL, '低速货车', '215', '215', 16, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('97', NULL, '挂车', '215', '215', 17, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('98', NULL, '整车标准', '91', '91', 1, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('99', NULL, '安全技术标准', '91', '91', 2, 0, NULL, NULL, NULL); +INSERT INTO `ts_resource` VALUES ('gnwdsc', 'INLAND_STAND', '我的收藏', '1', '1', 99, 0, '2018-10-15 13:54:00', '2018-10-16 10:47:14', NULL); +INSERT INTO `ts_resource` VALUES ('hwwdsc', 'FOREIGN_STAND', '我的收藏', '2', '2', 99, 0, '2018-10-18 09:49:08', '2018-10-18 09:49:08', NULL); +INSERT INTO `ts_resource` VALUES ('qbwdsc', 'BUSINESS_STAND', '我的收藏', '3', '3', 99, 0, '2018-10-18 09:49:08', '2018-10-18 09:49:08', NULL); +INSERT INTO `ts_resource` VALUES ('zcwdsc', 'LAWS_STAND', '我的收藏', '64df1d5522bb49c09af6', '64df1d5522bb49c09af6', 99, 0, '2018-10-18 09:49:08', '2018-10-18 09:49:08', NULL); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/doc/sql/20220511-添加绑定老系统关系字段.sql b/doc/sql/20220511-添加绑定老系统关系字段.sql new file mode 100644 index 00000000..8b387a33 --- /dev/null +++ b/doc/sql/20220511-添加绑定老系统关系字段.sql @@ -0,0 +1,2 @@ +ALTER TABLE `sar_standards_info` ADD COLUMN `BUILD_ID` varchar(200) NULL COMMENT '关联绑定老系统ID' AFTER `NYLX`; +ALTER TABLE `sar_bussioness_stand` ADD COLUMN `BUILD_ID` varchar(200) NULL COMMENT '绑定老系统ID' AFTER `STAND_SN`; \ No newline at end of file diff --git a/doc/sql/20220526_基础数据表添加数据.sql b/doc/sql/20220526_基础数据表添加数据.sql new file mode 100644 index 00000000..fdafae38 --- /dev/null +++ b/doc/sql/20220526_基础数据表添加数据.sql @@ -0,0 +1,3 @@ +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('q6h0m329utvyzjp2ci4m', 'DNDYWNSJKH4H8LYTV2CJ', '全国安全防范报警系统标准化技术委员会(SAC/TC 100)', '3jurxfza8n', '全国安全防范报警系统标准化技术委员会(SAC/TC 100)', 2, NULL, NULL, NULL, 'admin', '0', '2022-05-26 08:01:33', '2022-05-26 08:01:33'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('vaqx4d6ggrg0tfoayqxs', 'DNDYWNSJKH4H8LYTV2CJ', '全国汽车标准化技术委员会挂车分技术委员会(SAC/TC 114/SC 13)', 'scloaolgv2', '全国汽车标准化技术委员会挂车分技术委员会(SAC/TC 114/SC 13)', 2, NULL, NULL, NULL, 'admin', '0', '2022-05-26 08:01:21', '2022-05-26 08:01:21'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('cp9ln5c7q3l8zow2vc5s', 'DNDYWNSJKH4H8LYTV2CJ', '生态环境部', '2wtg9whgmd', '生态环境部', 2, NULL, NULL, NULL, 'admin', '0', '2022-05-26 07:57:30', '2022-05-26 07:57:30'); diff --git a/doc/sql/20220615_企标基础字段去掉宣贯记录和关联流程.sql b/doc/sql/20220615_企标基础字段去掉宣贯记录和关联流程.sql new file mode 100644 index 00000000..3ce01f95 --- /dev/null +++ b/doc/sql/20220615_企标基础字段去掉宣贯记录和关联流程.sql @@ -0,0 +1 @@ +UPDATE sar_stand_attr_details SET VALID_FLAG = 1 WHERE ID IN ('88aeocfrkc7z7ooygxtf','v2n6olsurtwnk3fzoduw'); \ No newline at end of file diff --git a/doc/sql/20220621标准类别重新排序.sql b/doc/sql/20220621标准类别重新排序.sql new file mode 100644 index 00000000..a349a796 --- /dev/null +++ b/doc/sql/20220621标准类别重新排序.sql @@ -0,0 +1,399 @@ +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('Q8QT8JWFJC', 'JKSADFH564S', 'GB', 'GB', NULL, 1, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2021-12-05 07:42:53'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('7BRHD4L7QB', 'JKSADFH564S', 'GB/T', 'GB/T', NULL, 2, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2021-12-05 10:14:38'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('v84651i9vvgoi8njkmxy', 'JKSADFH564S', 'JT/T', 'JT/T', NULL, 3, NULL, NULL, NULL, NULL, '0', '2021-09-14 07:58:04', '2021-09-14 07:58:04'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('gkn4mhocmr0uw8rjgz20', 'JKSADFH564S', 'HJ/T', 'HJ/T', NULL, 4, NULL, NULL, NULL, NULL, '0', '2021-10-16 14:17:25', '2021-10-16 14:17:25'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ifs76gatwnn3yw2qj6o4', 'JKSADFH564S', 'MAS', 'MAS', NULL, 5, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:21:49', '2021-11-29 13:21:49'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('NHMF7WGWDZ', 'JKSADFH564S', 'QC/T', 'QC/T', NULL, 6, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2020-08-21 15:04:44'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('cz5rsbfsr8oufuxhgzz8', 'JKSADFH564S', '(EU)', 'EU', '', 7, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:16:26', '2022-04-19 01:46:02'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('s4jzokrgord84n2gjlgv', 'JKSADFH564S', 'EC', 'EC', '', 8, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:16:34', '2021-11-06 05:16:34'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('v0kncqf3qxii5rt98lzt', 'JKSADFH564S', 'EEC', 'EEC', '', 9, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:27:01', '2021-11-06 05:27:01'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('e8nxa6hnrenym3rkic3q', 'JKSADFH564S', 'ECE', 'ECE', '', 10, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:16:20', '2021-11-06 05:16:20'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('VUQ45KJMBA', 'JKSADFH564S', 'GTR', 'GTR', NULL, 11, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2020-08-21 15:04:44'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('et1o77bao076idtzxewt', 'JKSADFH564S', 'ISO', 'ISO', '', 12, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:27:10', '2021-11-06 05:27:10'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('4599A2BMEY', 'JKSADFH564S', 'IEC', 'IEC', NULL, 13, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2020-08-21 15:04:44'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('9bsbyilx9hghso258jcx', 'JKSADFH564S', 'Q/FT A', 'Q/FT A', '', 14, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:29:41', '2021-11-06 05:29:41'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('uu697zraku5f25b4rfu0', 'JKSADFH564S', 'Q/FT B', 'Q/FT B', '', 15, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:29:55', '2021-11-06 05:29:55'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('5jff4mqdlrk14voxqmd2', 'JKSADFH564S', 'Q/FT E', 'Q/FT E', '', 16, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:30:04', '2021-11-06 05:30:04'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('9xlas6pzlzojewsqtdj2', 'JKSADFH564S', 'Q/FT F', 'Q/FT F', '', 17, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:30:12', '2021-11-06 05:30:12'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('k9vru1kg2edyjsh7cthd', 'JKSADFH564S', 'Q/FT M', 'Q/FT M', '', 18, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:30:28', '2021-11-06 05:30:28'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('o4q0cinns5n3mqo1ufeb', 'JKSADFH564S', 'Q/FT G', 'Q/FT G', '', 19, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:30:19', '2021-11-06 05:30:19'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('wfguq2byj2xv4rntb0gb', 'JKSADFH564S', 'Q/FT Q', 'Q/FT Q', '', 20, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:30:38', '2021-11-06 05:30:38'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('z03zlxg0k176rckffhvd', 'JKSADFH564S', 'Q/FT R', 'Q/FT R', '', 21, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:30:48', '2021-11-06 05:30:48'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('zv09auk9wpd2aw0uo8el', 'JKSADFH564S', 'Q/FT S', 'Q/FT S', '', 22, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:30:58', '2021-11-06 05:30:58'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('hkuq9t70xzhosbw4vzsu', 'JKSADFH564S', 'Q/FT T', 'Q/FT T', '', 23, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:31:09', '2021-11-06 05:31:09'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('8a9q53cvdejk4k7wcaxs', 'JKSADFH564S', 'Q/FT X', 'Q/FT X', '', 24, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:31:27', '2021-11-06 05:31:27'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('36jehhgla5ib642uowpq', 'JKSADFH564S', 'Q/FT Y', 'Q/FT Y', '', 25, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:31:37', '2021-11-06 05:31:37'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('1xp2k1ornwf06nyjwrvm', 'JKSADFH564S', 'Q/FT Z', 'Q/FT Z', '', 26, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:31:46', '2021-11-06 05:31:46'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('d6a8rxzzi1cqeg2qxsrk', 'JKSADFH564S', 'Q/QCBFC', 'Q/QCBFC', '', 27, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:32:04', '2021-11-06 05:32:04'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('otsf534la6lj4e4rpshf', 'JKSADFH564S', 'ABNT', 'ABNT', '', 28, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:28:49', '2021-11-06 05:28:49'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('6kncssdw2blbr0pwkulk', 'JKSADFH564S', 'ABNT NBR', 'ABNT NBR', NULL, 29, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:22:27', '2021-11-29 13:22:27'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('34yk6t5jx7ebaxmza77l', 'JKSADFH564S', 'ADR', 'ADR', '', 30, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:29:31', '2021-11-06 05:29:31'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('s7000x7o9j0n5zxmxip5', 'JKSADFH564S', 'AIS', 'AIS', NULL, 31, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:26', '2021-11-29 13:20:26'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('v9vqolfbhvpdvbywdwpy', 'JKSADFH564S', 'AQ/T', 'AQ/T', NULL, 32, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:34:44', '2021-10-14 12:34:44'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('jmeirpwti8525zuchosj', 'JKSADFH564S', 'ARG', 'ARG', NULL, 33, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:05', '2021-11-29 13:20:05'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('vqyaxldih3pawyqeqdgd', 'JKSADFH564S', 'ARP', 'ARP', NULL, 34, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:16:17', '2021-11-29 13:16:17'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('4wja8d4omk47olivvvav', 'JKSADFH564S', 'AS', 'AS', NULL, 35, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:13:04', '2021-10-14 12:13:04'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('N4E65635BJ', 'JKSADFH564S', 'ASTM', 'ASTM', NULL, 36, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2020-08-21 15:04:44'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('gns29h6fy5o92lv5a7vd', 'JKSADFH564S', 'BB/T', 'BB/T', NULL, 37, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:47:35', '2021-10-16 15:47:35'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ukv9isly3nj2ssthf51o', 'JKSADFH564S', 'BRA', 'BRA', NULL, 38, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:21:00', '2021-11-29 13:21:00'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('zv684bbsltmrazt44wb8', 'JKSADFH564S', 'BS', 'BS', NULL, 39, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:22:29', '2021-11-29 13:22:29'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('nghw088cqqc8liyhsehr', 'JKSADFH564S', 'BZJ', 'BZJ', NULL, 40, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:11:57', '2021-10-14 12:11:57'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('w9w0mq9rfbpyau7yjdda', 'JKSADFH564S', 'CAN', 'CAN', NULL, 41, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:21:08', '2021-11-29 13:21:08'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('t5ewcaojk15xo9ojyabj', 'JKSADFH564S', 'CB/T', 'CB/T', NULL, 42, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:23', '2021-10-14 12:40:23'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('o3rqndbyljy0fpogvph0', 'JKSADFH564S', 'CFR', 'CFR', '', 43, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:27:28', '2021-11-06 05:27:28'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('6ozidcgk0wqayy797qjr', 'JKSADFH564S', 'Circular', 'Circular', NULL, 44, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:54:52', '2021-11-29 13:54:52'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('51dwcmsvrpee721c9w5m', 'JKSADFH564S', 'CJ/T', 'CJ/T', NULL, 45, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:41:13', '2021-10-14 12:41:13'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('7plvih1sot9marrizqrh', 'JKSADFH564S', 'CMVR', 'CMVR', NULL, 46, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 16:25:48', '2021-11-15 16:25:48'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('pnm4a6ch53agk251tmsg', 'JKSADFH564S', 'CONAMA', 'CONAMA', NULL, 47, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:24', '2021-10-14 12:40:24'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('4b50y2d7tw111fnzlvd0', 'JKSADFH564S', 'Conpes', 'Conpes', NULL, 48, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:01', '2021-10-14 12:40:01'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('hq1z26qat15nusli3pgu', 'JKSADFH564S', 'CONTRAN', 'CONTRAN', '', 49, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:28:22', '2021-11-06 05:28:22'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('k64awijukluojndjah8o', 'JKSADFH564S', 'CSAE', 'CSAE', NULL, 50, NULL, NULL, NULL, NULL, '0', '2021-09-14 07:58:09', '2021-09-14 07:58:09'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('pz12mgc1bis533ujz6mi', 'JKSADFH564S', 'DB11', 'DB11', NULL, 51, NULL, NULL, NULL, 'chenchunmei', '0', '2022-04-19 10:07:34', '2022-04-19 10:07:34'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('a9geb9cpt3zaq1kdzzm4', 'JKSADFH564S', 'DB11/', 'DB11/', NULL, 52, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 16:25:24', '2021-11-15 16:25:24'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ztqtu6b4noar7fknthl6', 'JKSADFH564S', 'DB11/T', 'DB11/T', NULL, 53, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 16:24:56', '2021-11-15 16:24:56'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('pgr4iy9ofzrsunqu05gh', 'JKSADFH564S', 'DB11/Z', 'DB11/Z', NULL, 54, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:30:38', '2021-10-16 15:30:38'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('yq4pfdoknru2oinn5d6u', 'JKSADFH564S', 'Decree', 'Decree', NULL, 55, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:54:58', '2021-11-29 13:54:58'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('fy60y7yrvwff9wb7xe0q', 'JKSADFH564S', 'DENATRAN', 'DENATRAN', '', 56, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:28:31', '2021-11-06 05:28:31'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('r7jjulxe8sdfwso4q96r', 'JKSADFH564S', 'DIN', 'DIN', NULL, 57, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:13:04', '2021-10-14 12:13:04'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('6s7hue2691vogfo13ghd', 'JKSADFH564S', 'ETSI', 'ETSI', NULL, 58, NULL, NULL, NULL, 'chenchunmei', '0', '2021-12-22 09:18:01', '2021-12-22 09:18:01'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('UQZFVQ8ZPN', 'JKSADFH564S', 'FMVSS', 'FMVSS', NULL, 59, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2020-08-21 15:04:44'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('s7k0o5g0hu3za5hrd4xo', 'JKSADFH564S', 'FT', 'FT', NULL, 60, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:12:02', '2021-10-14 12:12:02'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('7v0tyn8yw7i2fn2kikos', 'JKSADFH564S', 'FZ/T', 'FZ/T', NULL, 61, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 16:24:43', '2021-11-15 16:24:43'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('pkrj2axqqz5f8w1kwy2h', 'JKSADFH564S', 'G/T', 'G/T', NULL, 62, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:25', '2021-10-14 12:40:25'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('1kfglkacw6dh5ymxlsbe', 'JKSADFH564S', 'GA', 'GA', '', 63, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:14:12', '2021-11-06 05:14:12'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('wdswpaqfj8ad7frvql8o', 'JKSADFH564S', 'GA/T', 'GA/T', NULL, 64, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 16:24:16', '2021-11-15 16:24:16'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('h5d321szj518zp57fqy1', 'JKSADFH564S', 'GB/Z', 'GB/Z', NULL, 65, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:42:51', '2021-10-14 12:42:51'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ucvjlh89g3bksk4g7q5b', 'JKSADFH564S', 'GBR', 'GBR', NULL, 66, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:59:25', '2021-11-29 13:59:25'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('3emfn24tgfo5jrefdold', 'JKSADFH564S', 'GER', 'GER', NULL, 67, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:59:47', '2021-11-29 13:59:47'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('t835ayzr5b77y9fxgbvy', 'JKSADFH564S', 'GJB', 'GJB', NULL, 68, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:41:11', '2021-10-14 12:41:11'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('21up75jbvtddo4qpkegf', 'JKSADFH564S', 'GJB/Z', 'GJB/Z', NULL, 69, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:41:58', '2021-10-14 12:41:58'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('iwh2rfx0s2fzv49psyxz', 'JKSADFH564S', 'GJBz', 'GJBz', NULL, 70, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:41:57', '2021-10-14 12:41:57'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('8eqsniftgmz67fvl04ql', 'JKSADFH564S', 'GMW', 'GMW', NULL, 71, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:56:02', '2021-11-29 13:56:02'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('vtacackqo5l7y8znxn9o', 'JKSADFH564S', 'GOST', 'GOST', NULL, 72, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:10:11', '2021-10-14 12:10:11'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('igcis8z2bc7kirwo2oun', 'JKSADFH564S', 'GS', 'GS', NULL, 73, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:26', '2021-10-14 12:01:26'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('2epht3v5w5akhsvg1wd0', 'JKSADFH564S', 'GS0', 'GS0', NULL, 74, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:43', '2021-10-14 12:01:43'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('knnizmk888pvbjg9qhyl', 'JKSADFH564S', 'GS38', 'GS38', NULL, 75, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:42', '2021-10-14 12:01:42'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('q7uzksau9dy6zek2egcn', 'JKSADFH564S', 'GSO', 'GSO', NULL, 76, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:39', '2021-10-14 12:01:39'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('iu93i09pcya94fynlnyf', 'JKSADFH564S', 'GWKB', 'GWKB', NULL, 77, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:13:03', '2021-10-14 12:13:03'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('1j8fs3xn99g3ivpb5fxf', 'JKSADFH564S', 'HB', 'HB', NULL, 78, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:11:10', '2021-10-14 12:11:10'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('qdw5epdn8na2qo7ci75l', 'JKSADFH564S', 'HB/T', 'HB/T', NULL, 79, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:28', '2021-10-14 12:01:28'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('q0r8ics3he6bt7nsn6q8', 'JKSADFH564S', 'HCRJ', 'HCRJ', NULL, 80, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:10:54', '2021-10-14 12:10:54'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('3b4c5qsrdcnf914tjju3', 'JKSADFH564S', 'HG', 'HG', NULL, 81, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:42:16', '2021-10-14 12:42:16'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('yr0y3e60rel552b3cuga', 'JKSADFH564S', 'HG/T', 'HG/T', NULL, 82, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:41:41', '2021-11-15 15:41:41'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('akfcikaczp556lktbuwc', 'JKSADFH564S', 'HJ', 'HJ', '', 83, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:16:12', '2021-11-06 05:16:12'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('gtibugwzsqtu8kn2hp2f', 'JKSADFH564S', 'HKG', 'HKG', NULL, 84, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-22 08:15:32', '2021-11-22 08:15:32'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('o76plb4qwz7b8fmkjpnk', 'JKSADFH564S', 'IATF', 'IATF', NULL, 85, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:25', '2021-10-14 12:40:25'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('vbty6irxjfu3g4vqr8bu', 'JKSADFH564S', 'IEEE', 'IEEE', NULL, 86, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:15', '2021-11-29 13:20:15'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('6g0azabgikse5k43plcp', 'JKSADFH564S', 'INMETRO', 'INMETRO', '', 87, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:29:09', '2021-11-06 05:29:09'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('f3zgbgu3or2x59h2is3i', 'JKSADFH564S', 'INSO', 'INSO', NULL, 88, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:15', '2021-10-14 12:40:15'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('rhjprn9xjo4w4zb000sk', 'JKSADFH564S', 'IS', 'IS', NULL, 89, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:36', '2021-10-14 12:01:36'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('q1ygw5ho3o917qe239iv', 'JKSADFH564S', 'IS:', 'IS:', NULL, 90, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:37', '2021-10-14 12:01:37'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('judbvcar3z7ylwf89dmx', 'JKSADFH564S', 'ISO/TR', 'ISO/TR', '', 91, NULL, NULL, NULL, 'chenchunmei', '0', '2022-02-15 08:11:12', '2022-02-15 08:11:12'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('bkl3gfees7ltovya6qxx', 'JKSADFH564S', 'ISO/TS', 'ISO/TS', '', 92, NULL, NULL, NULL, 'wangkun52', '0', '2022-02-15 08:23:37', '2022-02-15 08:23:37'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('jvkzzvqlbtbmvuw70p57', 'JKSADFH564S', 'ISOIEC', 'ISOIEC', NULL, 93, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:35', '2021-10-14 12:40:35'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('xo9n282vfpne50gvarqe', 'JKSADFH564S', 'JASO', 'JASO', NULL, 94, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:11:10', '2021-10-14 12:11:10'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('jpcelgj0aj63l18p72gx', 'JKSADFH564S', 'JASOB', 'JASOB', NULL, 95, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:11:37', '2021-10-14 12:11:37'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('1ai2a10bc6hbn0efu4hh', 'JKSADFH564S', 'JB', 'JB', NULL, 96, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:42:15', '2021-10-14 12:42:15'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('gfjqry884lkqongvzl3t', 'JKSADFH564S', 'JB/T', 'JB/T', NULL, 97, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:41:19', '2021-10-14 12:41:19'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('1ttxs4yl8t0zb2umcouy', 'JKSADFH564S', 'JC', 'JC', NULL, 98, NULL, NULL, NULL, NULL, '0', '2021-10-16 14:16:32', '2021-10-16 14:16:32'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('goag3cvsuyf57p4kpsvz', 'JKSADFH564S', 'JC/T', 'JC/T', NULL, 99, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:34:49', '2021-11-15 15:34:49'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ivi3wmyjc9vp673jpklo', 'JKSADFH564S', 'JEVS', 'JEVS', NULL, 100, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:51', '2021-11-29 13:20:51'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('q80xkdccvdyedf0wizwe', 'JKSADFH564S', 'JG/T', 'JG/T', NULL, 101, NULL, NULL, NULL, NULL, '0', '2021-10-16 14:33:03', '2021-10-16 14:33:03'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('4gc7imklqj0idfsy57cz', 'JKSADFH564S', 'JGJ', 'JGJ', NULL, 102, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:34:41', '2021-11-15 15:34:41'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('n36z4i5e8dzsdypp7f57', 'JKSADFH564S', 'JGJ/T', 'JGJ/T', NULL, 103, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:35:54', '2021-10-16 15:35:54'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('YS3P33FQBH', 'JKSADFH564S', 'JIS', 'JIS', NULL, 104, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2020-08-21 15:04:44'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('vj47yrysyesce1nu0etm', 'JKSADFH564S', 'JJF', 'JJF', NULL, 105, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:10:09', '2021-10-14 12:10:09'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('tbjde3ulsgy9rzxb52om', 'JKSADFH564S', 'JJG', 'JJG', NULL, 106, NULL, NULL, NULL, NULL, '0', '2021-10-16 14:21:10', '2021-10-16 14:21:10'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('pe2lygsxs7bxiiwhulcu', 'JKSADFH564S', 'JT', 'JT', NULL, 107, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:42:14', '2021-10-14 12:42:14'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('kc6fomyznjulkzjjxtdj', 'JKSADFH564S', 'JTG', 'JTG', NULL, 108, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:41:41', '2021-10-14 12:41:41'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('31mixjxyy16ixrrr3zwy', 'JKSADFH564S', 'KOR', 'KOR', NULL, 109, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:54:08', '2021-11-29 13:54:08'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('onqyfu9qlzsoan7odv3w', 'JKSADFH564S', 'LY/T', 'LY/T', NULL, 110, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:40', '2021-10-14 12:01:40'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('nszctchkybr8noz2xrbr', 'JKSADFH564S', 'MEX', 'MEX', NULL, 111, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:52', '2021-11-29 13:20:52'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ug5hadxi0xrozwtqjdwx', 'JKSADFH564S', 'MH/T', 'MH/T', NULL, 112, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:32:43', '2021-10-16 15:32:43'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('49jl4nvd5bgzku0g7cu6', 'JKSADFH564S', 'MINNESOTA', 'MINNESOTA', NULL, 113, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 14:01:18', '2021-11-29 14:01:18'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('04ey99c7k4eg9ayji9x0', 'JKSADFH564S', 'NAS', 'NAS', NULL, 114, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:11:49', '2021-10-14 12:11:49'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('oxycupdhuao2u0ynezbj', 'JKSADFH564S', 'NB/SH/T', 'NB/SH/T', NULL, 115, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:28:09', '2021-10-16 15:28:09'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('x0pmu6rjlurg5j870udy', 'JKSADFH564S', 'NB/T', 'NB/T', NULL, 116, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:28:32', '2021-10-16 15:28:32'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('cmdle3o83wlyvolnu155', 'JKSADFH564S', 'NBR', 'NBR', '', 117, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:28:57', '2021-11-06 05:28:57'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('dnrqch0xskaxkh48k58a', 'JKSADFH564S', 'NED', 'NED', NULL, 118, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:53:47', '2021-11-29 13:53:47'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('k1eokohegfrwoz4smjwo', 'JKSADFH564S', 'Normative Instruction', 'Normative Instruction', '', 119, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:29:24', '2021-11-06 05:29:24'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ky0dxw870lefsy70v06b', 'JKSADFH564S', 'NY', 'NY', NULL, 120, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:29', '2021-10-14 12:01:29'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('0yh7a1qmm22rkxlxgjqs', 'JKSADFH564S', 'NZL', 'NZL', NULL, 121, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:21:15', '2021-11-29 13:21:15'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('qyasmaxgl3f08r6baozu', 'JKSADFH564S', 'OST', 'OST', NULL, 122, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:10:58', '2021-10-14 12:10:58'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('t3eso8ddt24ob2128656', 'JKSADFH564S', 'POL', 'POL', NULL, 123, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:11:11', '2021-10-14 12:11:11'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('wcxsdqaof3r55x4i5lvw', 'JKSADFH564S', 'Q-HD', 'Q-HD', NULL, 124, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:24:01', '2021-11-15 15:24:01'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('jfc7x9z3kwijy63y749c', 'JKSADFH564S', 'Q-LY', 'Q-LY', NULL, 125, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:23:59', '2021-11-15 15:23:59'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('opguw5t22vw8aatf0hmn', 'JKSADFH564S', 'Q/ASB', 'Q/ASB', NULL, 126, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:39:58', '2021-10-14 12:39:58'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('k39trmrakdvn797h296s', 'JKSADFH564S', 'Q/BQB', 'Q/BQB', NULL, 127, NULL, NULL, NULL, NULL, '0', '2021-10-16 16:16:04', '2021-10-16 16:16:04'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('1kc54dcklqcwrfqege28', 'JKSADFH564S', 'Q/F', 'Q/F', NULL, 128, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:46', '2021-10-14 12:40:46'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('xzvc3zlz0h9vpoyi24ph', 'JKSADFH564S', 'Q/FL', 'Q/FL', NULL, 129, NULL, NULL, NULL, NULL, '0', '2021-09-14 07:58:15', '2021-09-14 07:58:15'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('36p5e33mdnixa247oqvc', 'JKSADFH564S', 'Q/FT', 'Q/FT', NULL, 130, NULL, NULL, NULL, NULL, '0', '2021-09-14 07:58:15', '2021-09-24 02:24:03'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('3hsgw5glo2k0fym3yx6j', 'JKSADFH564S', 'Q/FT V', 'Q/FT V', '', 131, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:31:16', '2021-11-06 05:31:16'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('nl3933qsfulwh4klk4yq', 'JKSADFH564S', 'Q/MGB', 'Q/MGB', NULL, 132, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:16', '2021-10-14 12:40:16'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ten485pq46q17s299o44', 'JKSADFH564S', 'Q/SGZGS', 'Q/SGZGS', NULL, 133, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:40:18', '2021-10-14 12:40:18'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('y2k1her2wt7abwgsiann', 'JKSADFH564S', 'Q/SH', 'Q/SH', NULL, 134, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:31', '2021-10-14 12:01:31'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('18x73rpfjpa69o4zl48e', 'JKSADFH564S', 'QB', 'QB', NULL, 135, NULL, NULL, NULL, NULL, '0', '2021-10-16 14:16:32', '2021-10-16 14:16:32'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('4yfwd0l2gdz87rspru40', 'JKSADFH564S', 'QB/T', 'QB/T', NULL, 136, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:41:09', '2021-10-14 12:41:09'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('q5c7p48w0drf05rkhroo', 'JKSADFH564S', 'QC', 'QC', NULL, 137, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:32:57', '2021-11-15 15:32:57'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('gzwuh6lcv2opon4von85', 'JKSADFH564S', 'QC-T', 'QC-T', NULL, 138, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:24:02', '2021-11-15 15:24:02'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('w9p3he78t51iy66ryu28', 'JKSADFH564S', 'QCn', 'QCn', NULL, 139, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:24:03', '2021-11-15 15:24:03'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ks63a5ea04o07t8gh45c', 'JKSADFH564S', 'QJ', 'QJ', NULL, 140, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:13:01', '2021-10-14 12:13:01'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('hdqzi9hazh5rwvpa87za', 'JKSADFH564S', 'QJ/SH', 'QJ/SH', NULL, 141, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:35', '2021-10-14 12:01:35'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('xojgsrt23kv783ave4kx', 'JKSADFH564S', 'Q房/AYJ', 'Q房/AYJ', NULL, 142, NULL, NULL, NULL, NULL, '0', '2021-10-16 16:06:28', '2021-10-16 16:06:28'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('iwjezf28s9vhcx6sjbgq', 'JKSADFH564S', 'Q石/T', 'Q石/T', NULL, 143, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-16 09:49:02', '2021-11-16 09:49:02'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('02sz5rauoznssffj0p1u', 'JKSADFH564S', 'RD', 'RD', NULL, 144, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:10:59', '2021-10-14 12:10:59'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('p510u2a7hrh2veyc51qs', 'JKSADFH564S', 'Res.', 'Res.', NULL, 145, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:23:06', '2021-11-29 13:23:06'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('vy4irua9jcxm3y0yfwji', 'JKSADFH564S', 'SABS', 'SABS', NULL, 146, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:25', '2021-10-14 12:01:25'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('55N5BEPRF8', 'JKSADFH564S', 'SAE', 'SAE', NULL, 147, NULL, NULL, NULL, 'WY8J26MH23', '0', '2020-08-21 15:04:44', '2020-08-21 15:04:44'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('kvr7fm41db3rb688pj6x', 'JKSADFH564S', 'SAEUSCAR', 'SAEUSCAR', NULL, 148, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:10:22', '2021-10-14 12:10:22'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('g8vhxsi5vsbxrqt63jf0', 'JKSADFH564S', 'SANS', 'SANS', NULL, 149, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:37', '2021-10-14 12:01:37'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('36to94gbx7ay37woaaf6', 'JKSADFH564S', 'SASO', 'SASO', NULL, 150, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:02:14', '2021-10-14 12:02:14'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ljm32u16foh15qjsz5lv', 'JKSADFH564S', 'SB/T', 'SB/T', NULL, 151, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:32:10', '2021-10-16 15:32:10'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ueqw22779jc9qh2ispr8', 'JKSADFH564S', 'SGP', 'SGP', NULL, 152, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:52', '2021-11-29 13:20:52'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('b1uorpzpl4u43y7qxb31', 'JKSADFH564S', 'SH', 'SH', NULL, 153, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:23:57', '2021-11-15 15:23:57'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('wttuoxnyuet8zwpsnz8b', 'JKSADFH564S', 'SH/T', 'SH/T', NULL, 154, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:42:17', '2021-10-14 12:42:17'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('fworv7faqw9xeu7fg1w8', 'JKSADFH564S', 'SJ/T', 'SJ/T', NULL, 155, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:42:26', '2021-10-14 12:42:26'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ijltpzptm7yj39aa4f5q', 'JKSADFH564S', 'SN/T', 'SN/T', NULL, 156, NULL, NULL, NULL, NULL, '0', '2021-10-16 14:34:21', '2021-10-16 14:34:21'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('nltfujghgj0un1vcfv5t', 'JKSADFH564S', 'SSA', 'SSA', NULL, 157, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:22', '2021-11-29 13:20:22'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('y5w2311txb3rh9v0mz0r', 'JKSADFH564S', 'StVZO', 'StVZO', NULL, 158, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:54:57', '2021-11-29 13:54:57'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('hp5o51nyb0vsg86ce8bd', 'JKSADFH564S', 'SY', 'SY', NULL, 159, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:41:43', '2021-10-14 12:41:43'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('o3xylcf1xyhpcah85ldy', 'JKSADFH564S', 'SY/T', 'SY/T', NULL, 160, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:20:42', '2021-10-16 15:20:42'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('r21oh7gd3lw5x1u2207b', 'JKSADFH564S', 'SZDB/Z', 'SZDB/Z', NULL, 161, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:23:22', '2021-11-15 15:23:22'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('xb3r6vhwjfe1zaaompbi', 'JKSADFH564S', 'T/BJQC', 'T/BJQC', NULL, 162, NULL, NULL, NULL, NULL, '0', '2021-10-16 16:05:08', '2021-10-16 16:05:08'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('6vqx0u1wtmgg9rxl7v5l', 'JKSADFH564S', 'T/CADA', 'T/CADA', NULL, 163, NULL, NULL, NULL, NULL, '0', '2021-10-16 16:03:32', '2021-10-16 16:03:32'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('oy7e3lpaddim7dl23mo6', 'JKSADFH564S', 'T/CAS', 'T/CAS', NULL, 164, NULL, NULL, NULL, NULL, '0', '2021-10-16 16:02:39', '2021-10-16 16:02:39'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('7tjswlao3dj4os0p7v38', 'JKSADFH564S', 'T/CECA-G', 'T/CECA-G', NULL, 165, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-22 08:19:41', '2021-11-22 08:19:41'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('42ir72epc18y8lwnv9y1', 'JKSADFH564S', 'T/CHTS', 'T/CHTS', NULL, 166, NULL, NULL, NULL, NULL, '0', '2021-10-16 16:03:32', '2021-10-16 16:03:32'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('3w9b5a0iiy2l5fikmu9t', 'JKSADFH564S', 'T/CMAX', 'T/CMAX', 'T/CMAX', 167, NULL, NULL, NULL, 'chenchunmei', '0', '2022-03-16 01:50:38', '2022-03-16 01:50:38'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('mwpqc7qsh99y2vy2np5m', 'JKSADFH564S', 'T/CSAE', 'T/CSAE', NULL, 168, NULL, NULL, NULL, NULL, '0', '2021-09-14 07:58:00', '2021-09-14 07:58:00'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('qlhcnyj9duishow2col7', 'JKSADFH564S', 'T/ITS', 'T/ITS', NULL, 169, NULL, NULL, NULL, NULL, '0', '2021-10-16 16:03:47', '2021-10-16 16:03:47'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('yc58xc4ykntkis7d5mux', 'JKSADFH564S', 'T/TBPS', 'T/TBPS', NULL, 170, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:50:34', '2021-10-16 15:50:34'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('kcoycyzlfgtoiqsaxzbf', 'JKSADFH564S', 'T/ZSA', 'T/ZSA', NULL, 171, NULL, NULL, NULL, NULL, '0', '2021-10-16 16:04:14', '2021-10-16 16:04:14'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('rwxwtih4kh57lf3p3g81', 'JKSADFH564S', 'TB/T', 'TB/T', NULL, 172, NULL, NULL, NULL, NULL, '0', '2021-10-16 14:34:21', '2021-10-16 14:34:21'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('5m5zwxlnghqdpmdsrrcf', 'JKSADFH564S', 'TFT', 'TFT', NULL, 173, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:13:43', '2021-10-14 12:13:43'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ox64tr4g50hw8f3713cq', 'JKSADFH564S', 'TG', 'TG', NULL, 174, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:21:15', '2021-11-29 13:21:15'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ta0pgmrikxibka7ttdcm', 'JKSADFH564S', 'TIS', 'TIS', NULL, 175, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:21:33', '2021-11-29 13:21:33'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ab32ck6d7bkbb9w7u71g', 'JKSADFH564S', 'TP', 'TP', '', 176, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:28:03', '2021-11-06 05:28:03'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('nwtzdnd3199f2ig2fnvd', 'JKSADFH564S', 'UAE', 'UAE', '', 177, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:28:15', '2021-11-06 05:28:15'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('w6y02bpup6wbhv8gb41d', 'JKSADFH564S', 'UTE', 'UTE', NULL, 178, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:25:07', '2021-11-29 13:25:07'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('jcwc3v7534x0blsz2fz5', 'JKSADFH564S', 'UTEC80', 'UTEC80', NULL, 179, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:13:02', '2021-10-14 12:13:02'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('6tdffi6aloo1lviqoqyp', 'JKSADFH564S', 'VC', 'VC', NULL, 180, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:30', '2021-11-29 13:20:30'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ikwixgggwcqh2t8gu35r', 'JKSADFH564S', 'VDI', 'VDI', NULL, 181, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:20:57', '2021-11-29 13:20:57'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('c0m2co1io17lnbi483lp', 'JKSADFH564S', 'WB/T', 'WB/T', NULL, 182, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:23:05', '2021-11-15 15:23:05'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('k20k1dn5exnh9h7xc85s', 'JKSADFH564S', 'WS/T', 'WS/T', NULL, 183, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:02:11', '2021-10-14 12:02:11'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('h9kxjp2n7j9efirdws4u', 'JKSADFH564S', 'YB', 'YB', NULL, 184, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:23:03', '2021-11-15 15:23:03'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('454myolbmako449vczuh', 'JKSADFH564S', 'YB/T', 'YB/T', '', 185, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 12:32:21', '2021-11-15 12:32:21'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('x83hpmzn4vfl3f3efl3q', 'JKSADFH564S', 'YD/T', 'YD/T', NULL, 186, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 15:22:37', '2021-11-15 15:22:37'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('yzbpjbqct67o5y81fis7', 'JKSADFH564S', 'YS/T', 'YS/T', NULL, 187, NULL, NULL, NULL, NULL, '0', '2021-10-16 15:20:43', '2021-10-16 15:20:43'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('2ozcejiwf0r4zfas8s9o', 'JKSADFH564S', 'YZ/T', 'YZ/T', NULL, 188, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:30', '2021-10-14 12:01:30'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('3ppz3muy2axagvzxsj48', 'JKSADFH564S', 'ZA', 'ZA', NULL, 189, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:11:16', '2021-10-14 12:11:16'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('vuzxt0cusp699v14y7i7', 'JKSADFH564S', 'ZAF', 'ZAF', NULL, 190, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:53:12', '2021-11-29 13:53:12'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('2hnuo887bvoc0l4p8vzd', 'JKSADFH564S', 'ΓOCT', 'ΓOCT', '', 191, NULL, NULL, NULL, 'admin', '0', '2021-11-06 05:27:57', '2021-11-06 05:27:57'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('e2sk06x5z8gjkbrin6uq', 'JKSADFH564S', 'ГОСТ', 'ГОСТ', NULL, 192, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:19:42', '2021-11-29 13:19:42'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('u5gg1baee6q2xrdektae', 'JKSADFH564S', 'Стр', 'Стр', NULL, 193, NULL, NULL, NULL, 'chenchunmei', '0', '2021-12-22 09:23:11', '2021-12-22 09:23:11'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('roe57ra53d87qtu5mm42', 'JKSADFH564S', 'ТР ТС', 'ТР ТС', NULL, 194, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:52:49', '2021-11-29 13:52:49'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('ura8cv4ih1to45t9wmny', 'JKSADFH564S', '京DHJB', '京DHJB', '', 195, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-15 12:33:53', '2021-11-15 12:33:53'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('x5t4xftqs8y2wekr3dpj', 'JKSADFH564S', '其他', '其他', NULL, 196, NULL, NULL, NULL, 'chenchunmei', '0', '2021-11-29 13:15:32', '2021-11-29 13:15:32'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('xevuwspzhzfaa70bm12g', 'JKSADFH564S', '津Q/NK', '津Q/NK', NULL, 197, NULL, NULL, NULL, NULL, '0', '2021-10-14 12:01:31', '2021-10-14 12:01:31'); +INSERT INTO `ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('26F9AA69948C4F3582DCBA83F7D3882C', 'JKSADFH564S', '*', '*', NULL, 198, NULL, NULL, NULL, NULL, '0', '2022-04-28 21:22:22', '2022-04-28 21:22:25'); + +//update语句 +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'RD', `DIC_TYPE_CODE` = 'RD', `DESCRIBES` = NULL, `SHOW_INDEX` = 144, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:10:59', `MODIFY_TIME` = '2021-10-14 12:10:59' WHERE `ID` = '02sz5rauoznssffj0p1u'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'NAS', `DIC_TYPE_CODE` = 'NAS', `DESCRIBES` = NULL, `SHOW_INDEX` = 114, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:11:49', `MODIFY_TIME` = '2021-10-14 12:11:49' WHERE `ID` = '04ey99c7k4eg9ayji9x0'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'NZL', `DIC_TYPE_CODE` = 'NZL', `DESCRIBES` = NULL, `SHOW_INDEX` = 121, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:21:15', `MODIFY_TIME` = '2021-11-29 13:21:15' WHERE `ID` = '0yh7a1qmm22rkxlxgjqs'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'QB', `DIC_TYPE_CODE` = 'QB', `DESCRIBES` = NULL, `SHOW_INDEX` = 135, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 14:16:32', `MODIFY_TIME` = '2021-10-16 14:16:32' WHERE `ID` = '18x73rpfjpa69o4zl48e'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JB', `DIC_TYPE_CODE` = 'JB', `DESCRIBES` = NULL, `SHOW_INDEX` = 96, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:42:15', `MODIFY_TIME` = '2021-10-14 12:42:15' WHERE `ID` = '1ai2a10bc6hbn0efu4hh'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'HB', `DIC_TYPE_CODE` = 'HB', `DESCRIBES` = NULL, `SHOW_INDEX` = 78, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:11:10', `MODIFY_TIME` = '2021-10-14 12:11:10' WHERE `ID` = '1j8fs3xn99g3ivpb5fxf'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/F', `DIC_TYPE_CODE` = 'Q/F', `DESCRIBES` = NULL, `SHOW_INDEX` = 128, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:46', `MODIFY_TIME` = '2021-10-14 12:40:46' WHERE `ID` = '1kc54dcklqcwrfqege28'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GA', `DIC_TYPE_CODE` = 'GA', `DESCRIBES` = '', `SHOW_INDEX` = 63, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:14:12', `MODIFY_TIME` = '2021-11-06 05:14:12' WHERE `ID` = '1kfglkacw6dh5ymxlsbe'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JC', `DIC_TYPE_CODE` = 'JC', `DESCRIBES` = NULL, `SHOW_INDEX` = 98, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 14:16:32', `MODIFY_TIME` = '2021-10-16 14:16:32' WHERE `ID` = '1ttxs4yl8t0zb2umcouy'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT Z', `DIC_TYPE_CODE` = 'Q/FT Z', `DESCRIBES` = '', `SHOW_INDEX` = 26, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:31:46', `MODIFY_TIME` = '2021-11-06 05:31:46' WHERE `ID` = '1xp2k1ornwf06nyjwrvm'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GJB/Z', `DIC_TYPE_CODE` = 'GJB/Z', `DESCRIBES` = NULL, `SHOW_INDEX` = 69, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:41:58', `MODIFY_TIME` = '2021-10-14 12:41:58' WHERE `ID` = '21up75jbvtddo4qpkegf'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = '*', `DIC_TYPE_CODE` = '*', `DESCRIBES` = NULL, `SHOW_INDEX` = 198, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2022-04-28 21:22:22', `MODIFY_TIME` = '2022-04-28 21:22:25' WHERE `ID` = '26F9AA69948C4F3582DCBA83F7D3882C'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GS0', `DIC_TYPE_CODE` = 'GS0', `DESCRIBES` = NULL, `SHOW_INDEX` = 74, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:43', `MODIFY_TIME` = '2021-10-14 12:01:43' WHERE `ID` = '2epht3v5w5akhsvg1wd0'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ΓOCT', `DIC_TYPE_CODE` = 'ΓOCT', `DESCRIBES` = '', `SHOW_INDEX` = 191, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:27:57', `MODIFY_TIME` = '2021-11-06 05:27:57' WHERE `ID` = '2hnuo887bvoc0l4p8vzd'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'YZ/T', `DIC_TYPE_CODE` = 'YZ/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 188, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:30', `MODIFY_TIME` = '2021-10-14 12:01:30' WHERE `ID` = '2ozcejiwf0r4zfas8s9o'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'KOR', `DIC_TYPE_CODE` = 'KOR', `DESCRIBES` = NULL, `SHOW_INDEX` = 109, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:54:08', `MODIFY_TIME` = '2021-11-29 13:54:08' WHERE `ID` = '31mixjxyy16ixrrr3zwy'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ADR', `DIC_TYPE_CODE` = 'ADR', `DESCRIBES` = '', `SHOW_INDEX` = 30, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:29:31', `MODIFY_TIME` = '2021-11-06 05:29:31' WHERE `ID` = '34yk6t5jx7ebaxmza77l'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT Y', `DIC_TYPE_CODE` = 'Q/FT Y', `DESCRIBES` = '', `SHOW_INDEX` = 25, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:31:37', `MODIFY_TIME` = '2021-11-06 05:31:37' WHERE `ID` = '36jehhgla5ib642uowpq'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT', `DIC_TYPE_CODE` = 'Q/FT', `DESCRIBES` = NULL, `SHOW_INDEX` = 130, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-09-14 07:58:15', `MODIFY_TIME` = '2021-09-24 02:24:03' WHERE `ID` = '36p5e33mdnixa247oqvc'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SASO', `DIC_TYPE_CODE` = 'SASO', `DESCRIBES` = NULL, `SHOW_INDEX` = 150, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:02:14', `MODIFY_TIME` = '2021-10-14 12:02:14' WHERE `ID` = '36to94gbx7ay37woaaf6'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'HG', `DIC_TYPE_CODE` = 'HG', `DESCRIBES` = NULL, `SHOW_INDEX` = 81, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:42:16', `MODIFY_TIME` = '2021-10-14 12:42:16' WHERE `ID` = '3b4c5qsrdcnf914tjju3'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GER', `DIC_TYPE_CODE` = 'GER', `DESCRIBES` = NULL, `SHOW_INDEX` = 67, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:59:47', `MODIFY_TIME` = '2021-11-29 13:59:47' WHERE `ID` = '3emfn24tgfo5jrefdold'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT V', `DIC_TYPE_CODE` = 'Q/FT V', `DESCRIBES` = '', `SHOW_INDEX` = 131, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:31:16', `MODIFY_TIME` = '2021-11-06 05:31:16' WHERE `ID` = '3hsgw5glo2k0fym3yx6j'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ZA', `DIC_TYPE_CODE` = 'ZA', `DESCRIBES` = NULL, `SHOW_INDEX` = 189, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:11:16', `MODIFY_TIME` = '2021-10-14 12:11:16' WHERE `ID` = '3ppz3muy2axagvzxsj48'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/CMAX', `DIC_TYPE_CODE` = 'T/CMAX', `DESCRIBES` = 'T/CMAX', `SHOW_INDEX` = 167, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2022-03-16 01:50:38', `MODIFY_TIME` = '2022-03-16 01:50:38' WHERE `ID` = '3w9b5a0iiy2l5fikmu9t'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/CHTS', `DIC_TYPE_CODE` = 'T/CHTS', `DESCRIBES` = NULL, `SHOW_INDEX` = 166, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 16:03:32', `MODIFY_TIME` = '2021-10-16 16:03:32' WHERE `ID` = '42ir72epc18y8lwnv9y1'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'YB/T', `DIC_TYPE_CODE` = 'YB/T', `DESCRIBES` = '', `SHOW_INDEX` = 185, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 12:32:21', `MODIFY_TIME` = '2021-11-15 12:32:21' WHERE `ID` = '454myolbmako449vczuh'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'IEC', `DIC_TYPE_CODE` = 'IEC', `DESCRIBES` = NULL, `SHOW_INDEX` = 13, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2020-08-21 15:04:44' WHERE `ID` = '4599A2BMEY'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'MINNESOTA', `DIC_TYPE_CODE` = 'MINNESOTA', `DESCRIBES` = NULL, `SHOW_INDEX` = 113, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 14:01:18', `MODIFY_TIME` = '2021-11-29 14:01:18' WHERE `ID` = '49jl4nvd5bgzku0g7cu6'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Conpes', `DIC_TYPE_CODE` = 'Conpes', `DESCRIBES` = NULL, `SHOW_INDEX` = 48, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:01', `MODIFY_TIME` = '2021-10-14 12:40:01' WHERE `ID` = '4b50y2d7tw111fnzlvd0'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JGJ', `DIC_TYPE_CODE` = 'JGJ', `DESCRIBES` = NULL, `SHOW_INDEX` = 102, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:34:41', `MODIFY_TIME` = '2021-11-15 15:34:41' WHERE `ID` = '4gc7imklqj0idfsy57cz'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'AS', `DIC_TYPE_CODE` = 'AS', `DESCRIBES` = NULL, `SHOW_INDEX` = 35, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:13:04', `MODIFY_TIME` = '2021-10-14 12:13:04' WHERE `ID` = '4wja8d4omk47olivvvav'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'QB/T', `DIC_TYPE_CODE` = 'QB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 136, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:41:09', `MODIFY_TIME` = '2021-10-14 12:41:09' WHERE `ID` = '4yfwd0l2gdz87rspru40'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'CJ/T', `DIC_TYPE_CODE` = 'CJ/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 45, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:41:13', `MODIFY_TIME` = '2021-10-14 12:41:13' WHERE `ID` = '51dwcmsvrpee721c9w5m'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SAE', `DIC_TYPE_CODE` = 'SAE', `DESCRIBES` = NULL, `SHOW_INDEX` = 147, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2020-08-21 15:04:44' WHERE `ID` = '55N5BEPRF8'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT E', `DIC_TYPE_CODE` = 'Q/FT E', `DESCRIBES` = '', `SHOW_INDEX` = 16, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:30:04', `MODIFY_TIME` = '2021-11-06 05:30:04' WHERE `ID` = '5jff4mqdlrk14voxqmd2'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'TFT', `DIC_TYPE_CODE` = 'TFT', `DESCRIBES` = NULL, `SHOW_INDEX` = 173, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:13:43', `MODIFY_TIME` = '2021-10-14 12:13:43' WHERE `ID` = '5m5zwxlnghqdpmdsrrcf'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'INMETRO', `DIC_TYPE_CODE` = 'INMETRO', `DESCRIBES` = '', `SHOW_INDEX` = 87, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:29:09', `MODIFY_TIME` = '2021-11-06 05:29:09' WHERE `ID` = '6g0azabgikse5k43plcp'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ABNT NBR', `DIC_TYPE_CODE` = 'ABNT NBR', `DESCRIBES` = NULL, `SHOW_INDEX` = 29, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:22:27', `MODIFY_TIME` = '2021-11-29 13:22:27' WHERE `ID` = '6kncssdw2blbr0pwkulk'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Circular', `DIC_TYPE_CODE` = 'Circular', `DESCRIBES` = NULL, `SHOW_INDEX` = 44, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:54:52', `MODIFY_TIME` = '2021-11-29 13:54:52' WHERE `ID` = '6ozidcgk0wqayy797qjr'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ETSI', `DIC_TYPE_CODE` = 'ETSI', `DESCRIBES` = NULL, `SHOW_INDEX` = 58, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-12-22 09:18:01', `MODIFY_TIME` = '2021-12-22 09:18:01' WHERE `ID` = '6s7hue2691vogfo13ghd'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'VC', `DIC_TYPE_CODE` = 'VC', `DESCRIBES` = NULL, `SHOW_INDEX` = 180, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:30', `MODIFY_TIME` = '2021-11-29 13:20:30' WHERE `ID` = '6tdffi6aloo1lviqoqyp'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/CADA', `DIC_TYPE_CODE` = 'T/CADA', `DESCRIBES` = NULL, `SHOW_INDEX` = 163, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 16:03:32', `MODIFY_TIME` = '2021-10-16 16:03:32' WHERE `ID` = '6vqx0u1wtmgg9rxl7v5l'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GB/T', `DIC_TYPE_CODE` = 'GB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 2, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2021-12-05 10:14:38' WHERE `ID` = '7BRHD4L7QB'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'CMVR', `DIC_TYPE_CODE` = 'CMVR', `DESCRIBES` = NULL, `SHOW_INDEX` = 46, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 16:25:48', `MODIFY_TIME` = '2021-11-15 16:25:48' WHERE `ID` = '7plvih1sot9marrizqrh'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/CECA-G', `DIC_TYPE_CODE` = 'T/CECA-G', `DESCRIBES` = NULL, `SHOW_INDEX` = 165, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-22 08:19:41', `MODIFY_TIME` = '2021-11-22 08:19:41' WHERE `ID` = '7tjswlao3dj4os0p7v38'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'FZ/T', `DIC_TYPE_CODE` = 'FZ/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 61, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 16:24:43', `MODIFY_TIME` = '2021-11-15 16:24:43' WHERE `ID` = '7v0tyn8yw7i2fn2kikos'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT X', `DIC_TYPE_CODE` = 'Q/FT X', `DESCRIBES` = '', `SHOW_INDEX` = 24, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:31:27', `MODIFY_TIME` = '2021-11-06 05:31:27' WHERE `ID` = '8a9q53cvdejk4k7wcaxs'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GMW', `DIC_TYPE_CODE` = 'GMW', `DESCRIBES` = NULL, `SHOW_INDEX` = 71, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:56:02', `MODIFY_TIME` = '2021-11-29 13:56:02' WHERE `ID` = '8eqsniftgmz67fvl04ql'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT A', `DIC_TYPE_CODE` = 'Q/FT A', `DESCRIBES` = '', `SHOW_INDEX` = 14, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:29:41', `MODIFY_TIME` = '2021-11-06 05:29:41' WHERE `ID` = '9bsbyilx9hghso258jcx'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT F', `DIC_TYPE_CODE` = 'Q/FT F', `DESCRIBES` = '', `SHOW_INDEX` = 17, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:30:12', `MODIFY_TIME` = '2021-11-06 05:30:12' WHERE `ID` = '9xlas6pzlzojewsqtdj2'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'DB11/', `DIC_TYPE_CODE` = 'DB11/', `DESCRIBES` = NULL, `SHOW_INDEX` = 52, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 16:25:24', `MODIFY_TIME` = '2021-11-15 16:25:24' WHERE `ID` = 'a9geb9cpt3zaq1kdzzm4'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'TP', `DIC_TYPE_CODE` = 'TP', `DESCRIBES` = '', `SHOW_INDEX` = 176, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:28:03', `MODIFY_TIME` = '2021-11-06 05:28:03' WHERE `ID` = 'ab32ck6d7bkbb9w7u71g'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'HJ', `DIC_TYPE_CODE` = 'HJ', `DESCRIBES` = '', `SHOW_INDEX` = 83, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:16:12', `MODIFY_TIME` = '2021-11-06 05:16:12' WHERE `ID` = 'akfcikaczp556lktbuwc'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SH', `DIC_TYPE_CODE` = 'SH', `DESCRIBES` = NULL, `SHOW_INDEX` = 153, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:23:57', `MODIFY_TIME` = '2021-11-15 15:23:57' WHERE `ID` = 'b1uorpzpl4u43y7qxb31'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ISO/TS', `DIC_TYPE_CODE` = 'ISO/TS', `DESCRIBES` = '', `SHOW_INDEX` = 92, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'wangkun52', `VALID_FLAG` = '0', `CREATION_TIME` = '2022-02-15 08:23:37', `MODIFY_TIME` = '2022-02-15 08:23:37' WHERE `ID` = 'bkl3gfees7ltovya6qxx'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'WB/T', `DIC_TYPE_CODE` = 'WB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 182, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:23:05', `MODIFY_TIME` = '2021-11-15 15:23:05' WHERE `ID` = 'c0m2co1io17lnbi483lp'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'NBR', `DIC_TYPE_CODE` = 'NBR', `DESCRIBES` = '', `SHOW_INDEX` = 117, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:28:57', `MODIFY_TIME` = '2021-11-06 05:28:57' WHERE `ID` = 'cmdle3o83wlyvolnu155'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = '(EU)', `DIC_TYPE_CODE` = 'EU', `DESCRIBES` = '', `SHOW_INDEX` = 7, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:16:26', `MODIFY_TIME` = '2022-04-19 01:46:02' WHERE `ID` = 'cz5rsbfsr8oufuxhgzz8'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/QCBFC', `DIC_TYPE_CODE` = 'Q/QCBFC', `DESCRIBES` = '', `SHOW_INDEX` = 27, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:32:04', `MODIFY_TIME` = '2021-11-06 05:32:04' WHERE `ID` = 'd6a8rxzzi1cqeg2qxsrk'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'NED', `DIC_TYPE_CODE` = 'NED', `DESCRIBES` = NULL, `SHOW_INDEX` = 118, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:53:47', `MODIFY_TIME` = '2021-11-29 13:53:47' WHERE `ID` = 'dnrqch0xskaxkh48k58a'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ГОСТ', `DIC_TYPE_CODE` = 'ГОСТ', `DESCRIBES` = NULL, `SHOW_INDEX` = 192, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:19:42', `MODIFY_TIME` = '2021-11-29 13:19:42' WHERE `ID` = 'e2sk06x5z8gjkbrin6uq'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ECE', `DIC_TYPE_CODE` = 'ECE', `DESCRIBES` = '', `SHOW_INDEX` = 10, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:16:20', `MODIFY_TIME` = '2021-11-06 05:16:20' WHERE `ID` = 'e8nxa6hnrenym3rkic3q'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ISO', `DIC_TYPE_CODE` = 'ISO', `DESCRIBES` = '', `SHOW_INDEX` = 12, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:27:10', `MODIFY_TIME` = '2021-11-06 05:27:10' WHERE `ID` = 'et1o77bao076idtzxewt'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'INSO', `DIC_TYPE_CODE` = 'INSO', `DESCRIBES` = NULL, `SHOW_INDEX` = 88, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:15', `MODIFY_TIME` = '2021-10-14 12:40:15' WHERE `ID` = 'f3zgbgu3or2x59h2is3i'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SJ/T', `DIC_TYPE_CODE` = 'SJ/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 155, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:42:26', `MODIFY_TIME` = '2021-10-14 12:42:26' WHERE `ID` = 'fworv7faqw9xeu7fg1w8'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'DENATRAN', `DIC_TYPE_CODE` = 'DENATRAN', `DESCRIBES` = '', `SHOW_INDEX` = 56, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:28:31', `MODIFY_TIME` = '2021-11-06 05:28:31' WHERE `ID` = 'fy60y7yrvwff9wb7xe0q'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SANS', `DIC_TYPE_CODE` = 'SANS', `DESCRIBES` = NULL, `SHOW_INDEX` = 149, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:37', `MODIFY_TIME` = '2021-10-14 12:01:37' WHERE `ID` = 'g8vhxsi5vsbxrqt63jf0'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JB/T', `DIC_TYPE_CODE` = 'JB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 97, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:41:19', `MODIFY_TIME` = '2021-10-14 12:41:19' WHERE `ID` = 'gfjqry884lkqongvzl3t'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'HJ/T', `DIC_TYPE_CODE` = 'HJ/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 4, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 14:17:25', `MODIFY_TIME` = '2021-10-16 14:17:25' WHERE `ID` = 'gkn4mhocmr0uw8rjgz20'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'BB/T', `DIC_TYPE_CODE` = 'BB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 37, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:47:35', `MODIFY_TIME` = '2021-10-16 15:47:35' WHERE `ID` = 'gns29h6fy5o92lv5a7vd'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JC/T', `DIC_TYPE_CODE` = 'JC/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 99, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:34:49', `MODIFY_TIME` = '2021-11-15 15:34:49' WHERE `ID` = 'goag3cvsuyf57p4kpsvz'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'HKG', `DIC_TYPE_CODE` = 'HKG', `DESCRIBES` = NULL, `SHOW_INDEX` = 84, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-22 08:15:32', `MODIFY_TIME` = '2021-11-22 08:15:32' WHERE `ID` = 'gtibugwzsqtu8kn2hp2f'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'QC-T', `DIC_TYPE_CODE` = 'QC-T', `DESCRIBES` = NULL, `SHOW_INDEX` = 138, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:24:02', `MODIFY_TIME` = '2021-11-15 15:24:02' WHERE `ID` = 'gzwuh6lcv2opon4von85'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GB/Z', `DIC_TYPE_CODE` = 'GB/Z', `DESCRIBES` = NULL, `SHOW_INDEX` = 65, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:42:51', `MODIFY_TIME` = '2021-10-14 12:42:51' WHERE `ID` = 'h5d321szj518zp57fqy1'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'YB', `DIC_TYPE_CODE` = 'YB', `DESCRIBES` = NULL, `SHOW_INDEX` = 184, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:23:03', `MODIFY_TIME` = '2021-11-15 15:23:03' WHERE `ID` = 'h9kxjp2n7j9efirdws4u'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'QJ/SH', `DIC_TYPE_CODE` = 'QJ/SH', `DESCRIBES` = NULL, `SHOW_INDEX` = 141, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:35', `MODIFY_TIME` = '2021-10-14 12:01:35' WHERE `ID` = 'hdqzi9hazh5rwvpa87za'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT T', `DIC_TYPE_CODE` = 'Q/FT T', `DESCRIBES` = '', `SHOW_INDEX` = 23, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:31:09', `MODIFY_TIME` = '2021-11-06 05:31:09' WHERE `ID` = 'hkuq9t70xzhosbw4vzsu'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SY', `DIC_TYPE_CODE` = 'SY', `DESCRIBES` = NULL, `SHOW_INDEX` = 159, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:41:43', `MODIFY_TIME` = '2021-10-14 12:41:43' WHERE `ID` = 'hp5o51nyb0vsg86ce8bd'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'CONTRAN', `DIC_TYPE_CODE` = 'CONTRAN', `DESCRIBES` = '', `SHOW_INDEX` = 49, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:28:22', `MODIFY_TIME` = '2021-11-06 05:28:22' WHERE `ID` = 'hq1z26qat15nusli3pgu'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'MAS', `DIC_TYPE_CODE` = 'MAS', `DESCRIBES` = NULL, `SHOW_INDEX` = 5, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:21:49', `MODIFY_TIME` = '2021-11-29 13:21:49' WHERE `ID` = 'ifs76gatwnn3yw2qj6o4'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GS', `DIC_TYPE_CODE` = 'GS', `DESCRIBES` = NULL, `SHOW_INDEX` = 73, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:26', `MODIFY_TIME` = '2021-10-14 12:01:26' WHERE `ID` = 'igcis8z2bc7kirwo2oun'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SN/T', `DIC_TYPE_CODE` = 'SN/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 156, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 14:34:21', `MODIFY_TIME` = '2021-10-16 14:34:21' WHERE `ID` = 'ijltpzptm7yj39aa4f5q'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'VDI', `DIC_TYPE_CODE` = 'VDI', `DESCRIBES` = NULL, `SHOW_INDEX` = 181, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:57', `MODIFY_TIME` = '2021-11-29 13:20:57' WHERE `ID` = 'ikwixgggwcqh2t8gu35r'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GWKB', `DIC_TYPE_CODE` = 'GWKB', `DESCRIBES` = NULL, `SHOW_INDEX` = 77, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:13:03', `MODIFY_TIME` = '2021-10-14 12:13:03' WHERE `ID` = 'iu93i09pcya94fynlnyf'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JEVS', `DIC_TYPE_CODE` = 'JEVS', `DESCRIBES` = NULL, `SHOW_INDEX` = 100, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:51', `MODIFY_TIME` = '2021-11-29 13:20:51' WHERE `ID` = 'ivi3wmyjc9vp673jpklo'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GJBz', `DIC_TYPE_CODE` = 'GJBz', `DESCRIBES` = NULL, `SHOW_INDEX` = 70, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:41:57', `MODIFY_TIME` = '2021-10-14 12:41:57' WHERE `ID` = 'iwh2rfx0s2fzv49psyxz'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q石/T', `DIC_TYPE_CODE` = 'Q石/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 143, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-16 09:49:02', `MODIFY_TIME` = '2021-11-16 09:49:02' WHERE `ID` = 'iwjezf28s9vhcx6sjbgq'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'UTEC80', `DIC_TYPE_CODE` = 'UTEC80', `DESCRIBES` = NULL, `SHOW_INDEX` = 179, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:13:02', `MODIFY_TIME` = '2021-10-14 12:13:02' WHERE `ID` = 'jcwc3v7534x0blsz2fz5'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q-LY', `DIC_TYPE_CODE` = 'Q-LY', `DESCRIBES` = NULL, `SHOW_INDEX` = 125, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:23:59', `MODIFY_TIME` = '2021-11-15 15:23:59' WHERE `ID` = 'jfc7x9z3kwijy63y749c'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ARG', `DIC_TYPE_CODE` = 'ARG', `DESCRIBES` = NULL, `SHOW_INDEX` = 33, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:05', `MODIFY_TIME` = '2021-11-29 13:20:05' WHERE `ID` = 'jmeirpwti8525zuchosj'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JASOB', `DIC_TYPE_CODE` = 'JASOB', `DESCRIBES` = NULL, `SHOW_INDEX` = 95, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:11:37', `MODIFY_TIME` = '2021-10-14 12:11:37' WHERE `ID` = 'jpcelgj0aj63l18p72gx'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ISO/TR', `DIC_TYPE_CODE` = 'ISO/TR', `DESCRIBES` = '', `SHOW_INDEX` = 91, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2022-02-15 08:11:12', `MODIFY_TIME` = '2022-02-15 08:11:12' WHERE `ID` = 'judbvcar3z7ylwf89dmx'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ISOIEC', `DIC_TYPE_CODE` = 'ISOIEC', `DESCRIBES` = NULL, `SHOW_INDEX` = 93, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:35', `MODIFY_TIME` = '2021-10-14 12:40:35' WHERE `ID` = 'jvkzzvqlbtbmvuw70p57'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Normative Instruction', `DIC_TYPE_CODE` = 'Normative Instruction', `DESCRIBES` = '', `SHOW_INDEX` = 119, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:29:24', `MODIFY_TIME` = '2021-11-06 05:29:24' WHERE `ID` = 'k1eokohegfrwoz4smjwo'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'WS/T', `DIC_TYPE_CODE` = 'WS/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 183, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:02:11', `MODIFY_TIME` = '2021-10-14 12:02:11' WHERE `ID` = 'k20k1dn5exnh9h7xc85s'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/BQB', `DIC_TYPE_CODE` = 'Q/BQB', `DESCRIBES` = NULL, `SHOW_INDEX` = 127, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 16:16:04', `MODIFY_TIME` = '2021-10-16 16:16:04' WHERE `ID` = 'k39trmrakdvn797h296s'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'CSAE', `DIC_TYPE_CODE` = 'CSAE', `DESCRIBES` = NULL, `SHOW_INDEX` = 50, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-09-14 07:58:09', `MODIFY_TIME` = '2021-09-14 07:58:09' WHERE `ID` = 'k64awijukluojndjah8o'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT M', `DIC_TYPE_CODE` = 'Q/FT M', `DESCRIBES` = '', `SHOW_INDEX` = 18, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:30:28', `MODIFY_TIME` = '2021-11-06 05:30:28' WHERE `ID` = 'k9vru1kg2edyjsh7cthd'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JTG', `DIC_TYPE_CODE` = 'JTG', `DESCRIBES` = NULL, `SHOW_INDEX` = 108, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:41:41', `MODIFY_TIME` = '2021-10-14 12:41:41' WHERE `ID` = 'kc6fomyznjulkzjjxtdj'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/ZSA', `DIC_TYPE_CODE` = 'T/ZSA', `DESCRIBES` = NULL, `SHOW_INDEX` = 171, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 16:04:14', `MODIFY_TIME` = '2021-10-16 16:04:14' WHERE `ID` = 'kcoycyzlfgtoiqsaxzbf'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GS38', `DIC_TYPE_CODE` = 'GS38', `DESCRIBES` = NULL, `SHOW_INDEX` = 75, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:42', `MODIFY_TIME` = '2021-10-14 12:01:42' WHERE `ID` = 'knnizmk888pvbjg9qhyl'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'QJ', `DIC_TYPE_CODE` = 'QJ', `DESCRIBES` = NULL, `SHOW_INDEX` = 140, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:13:01', `MODIFY_TIME` = '2021-10-14 12:13:01' WHERE `ID` = 'ks63a5ea04o07t8gh45c'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SAEUSCAR', `DIC_TYPE_CODE` = 'SAEUSCAR', `DESCRIBES` = NULL, `SHOW_INDEX` = 148, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:10:22', `MODIFY_TIME` = '2021-10-14 12:10:22' WHERE `ID` = 'kvr7fm41db3rb688pj6x'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'NY', `DIC_TYPE_CODE` = 'NY', `DESCRIBES` = NULL, `SHOW_INDEX` = 120, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:29', `MODIFY_TIME` = '2021-10-14 12:01:29' WHERE `ID` = 'ky0dxw870lefsy70v06b'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SB/T', `DIC_TYPE_CODE` = 'SB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 151, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:32:10', `MODIFY_TIME` = '2021-10-16 15:32:10' WHERE `ID` = 'ljm32u16foh15qjsz5lv'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/CSAE', `DIC_TYPE_CODE` = 'T/CSAE', `DESCRIBES` = NULL, `SHOW_INDEX` = 168, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-09-14 07:58:00', `MODIFY_TIME` = '2021-09-14 07:58:00' WHERE `ID` = 'mwpqc7qsh99y2vy2np5m'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JGJ/T', `DIC_TYPE_CODE` = 'JGJ/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 103, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:35:54', `MODIFY_TIME` = '2021-10-16 15:35:54' WHERE `ID` = 'n36z4i5e8dzsdypp7f57'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ASTM', `DIC_TYPE_CODE` = 'ASTM', `DESCRIBES` = NULL, `SHOW_INDEX` = 36, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2020-08-21 15:04:44' WHERE `ID` = 'N4E65635BJ'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'BZJ', `DIC_TYPE_CODE` = 'BZJ', `DESCRIBES` = NULL, `SHOW_INDEX` = 40, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:11:57', `MODIFY_TIME` = '2021-10-14 12:11:57' WHERE `ID` = 'nghw088cqqc8liyhsehr'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'QC/T', `DIC_TYPE_CODE` = 'QC/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 6, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2020-08-21 15:04:44' WHERE `ID` = 'NHMF7WGWDZ'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/MGB', `DIC_TYPE_CODE` = 'Q/MGB', `DESCRIBES` = NULL, `SHOW_INDEX` = 132, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:16', `MODIFY_TIME` = '2021-10-14 12:40:16' WHERE `ID` = 'nl3933qsfulwh4klk4yq'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SSA', `DIC_TYPE_CODE` = 'SSA', `DESCRIBES` = NULL, `SHOW_INDEX` = 157, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:22', `MODIFY_TIME` = '2021-11-29 13:20:22' WHERE `ID` = 'nltfujghgj0un1vcfv5t'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'MEX', `DIC_TYPE_CODE` = 'MEX', `DESCRIBES` = NULL, `SHOW_INDEX` = 111, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:52', `MODIFY_TIME` = '2021-11-29 13:20:52' WHERE `ID` = 'nszctchkybr8noz2xrbr'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'UAE', `DIC_TYPE_CODE` = 'UAE', `DESCRIBES` = '', `SHOW_INDEX` = 177, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:28:15', `MODIFY_TIME` = '2021-11-06 05:28:15' WHERE `ID` = 'nwtzdnd3199f2ig2fnvd'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'CFR', `DIC_TYPE_CODE` = 'CFR', `DESCRIBES` = '', `SHOW_INDEX` = 43, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:27:28', `MODIFY_TIME` = '2021-11-06 05:27:28' WHERE `ID` = 'o3rqndbyljy0fpogvph0'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SY/T', `DIC_TYPE_CODE` = 'SY/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 160, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:20:42', `MODIFY_TIME` = '2021-10-16 15:20:42' WHERE `ID` = 'o3xylcf1xyhpcah85ldy'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT G', `DIC_TYPE_CODE` = 'Q/FT G', `DESCRIBES` = '', `SHOW_INDEX` = 19, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:30:19', `MODIFY_TIME` = '2021-11-06 05:30:19' WHERE `ID` = 'o4q0cinns5n3mqo1ufeb'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'IATF', `DIC_TYPE_CODE` = 'IATF', `DESCRIBES` = NULL, `SHOW_INDEX` = 85, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:25', `MODIFY_TIME` = '2021-10-14 12:40:25' WHERE `ID` = 'o76plb4qwz7b8fmkjpnk'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'LY/T', `DIC_TYPE_CODE` = 'LY/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 110, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:40', `MODIFY_TIME` = '2021-10-14 12:01:40' WHERE `ID` = 'onqyfu9qlzsoan7odv3w'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/ASB', `DIC_TYPE_CODE` = 'Q/ASB', `DESCRIBES` = NULL, `SHOW_INDEX` = 126, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:39:58', `MODIFY_TIME` = '2021-10-14 12:39:58' WHERE `ID` = 'opguw5t22vw8aatf0hmn'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ABNT', `DIC_TYPE_CODE` = 'ABNT', `DESCRIBES` = '', `SHOW_INDEX` = 28, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:28:49', `MODIFY_TIME` = '2021-11-06 05:28:49' WHERE `ID` = 'otsf534la6lj4e4rpshf'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'TG', `DIC_TYPE_CODE` = 'TG', `DESCRIBES` = NULL, `SHOW_INDEX` = 174, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:21:15', `MODIFY_TIME` = '2021-11-29 13:21:15' WHERE `ID` = 'ox64tr4g50hw8f3713cq'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'NB/SH/T', `DIC_TYPE_CODE` = 'NB/SH/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 115, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:28:09', `MODIFY_TIME` = '2021-10-16 15:28:09' WHERE `ID` = 'oxycupdhuao2u0ynezbj'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/CAS', `DIC_TYPE_CODE` = 'T/CAS', `DESCRIBES` = NULL, `SHOW_INDEX` = 164, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 16:02:39', `MODIFY_TIME` = '2021-10-16 16:02:39' WHERE `ID` = 'oy7e3lpaddim7dl23mo6'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Res.', `DIC_TYPE_CODE` = 'Res.', `DESCRIBES` = NULL, `SHOW_INDEX` = 145, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:23:06', `MODIFY_TIME` = '2021-11-29 13:23:06' WHERE `ID` = 'p510u2a7hrh2veyc51qs'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JT', `DIC_TYPE_CODE` = 'JT', `DESCRIBES` = NULL, `SHOW_INDEX` = 107, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:42:14', `MODIFY_TIME` = '2021-10-14 12:42:14' WHERE `ID` = 'pe2lygsxs7bxiiwhulcu'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'DB11/Z', `DIC_TYPE_CODE` = 'DB11/Z', `DESCRIBES` = NULL, `SHOW_INDEX` = 54, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:30:38', `MODIFY_TIME` = '2021-10-16 15:30:38' WHERE `ID` = 'pgr4iy9ofzrsunqu05gh'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'G/T', `DIC_TYPE_CODE` = 'G/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 62, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:25', `MODIFY_TIME` = '2021-10-14 12:40:25' WHERE `ID` = 'pkrj2axqqz5f8w1kwy2h'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'CONAMA', `DIC_TYPE_CODE` = 'CONAMA', `DESCRIBES` = NULL, `SHOW_INDEX` = 47, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:24', `MODIFY_TIME` = '2021-10-14 12:40:24' WHERE `ID` = 'pnm4a6ch53agk251tmsg'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'DB11', `DIC_TYPE_CODE` = 'DB11', `DESCRIBES` = NULL, `SHOW_INDEX` = 51, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2022-04-19 10:07:34', `MODIFY_TIME` = '2022-04-19 10:07:34' WHERE `ID` = 'pz12mgc1bis533ujz6mi'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'HCRJ', `DIC_TYPE_CODE` = 'HCRJ', `DESCRIBES` = NULL, `SHOW_INDEX` = 80, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:10:54', `MODIFY_TIME` = '2021-10-14 12:10:54' WHERE `ID` = 'q0r8ics3he6bt7nsn6q8'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'IS:', `DIC_TYPE_CODE` = 'IS:', `DESCRIBES` = NULL, `SHOW_INDEX` = 90, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:37', `MODIFY_TIME` = '2021-10-14 12:01:37' WHERE `ID` = 'q1ygw5ho3o917qe239iv'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'QC', `DIC_TYPE_CODE` = 'QC', `DESCRIBES` = NULL, `SHOW_INDEX` = 137, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:32:57', `MODIFY_TIME` = '2021-11-15 15:32:57' WHERE `ID` = 'q5c7p48w0drf05rkhroo'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GSO', `DIC_TYPE_CODE` = 'GSO', `DESCRIBES` = NULL, `SHOW_INDEX` = 76, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:39', `MODIFY_TIME` = '2021-10-14 12:01:39' WHERE `ID` = 'q7uzksau9dy6zek2egcn'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JG/T', `DIC_TYPE_CODE` = 'JG/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 101, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 14:33:03', `MODIFY_TIME` = '2021-10-16 14:33:03' WHERE `ID` = 'q80xkdccvdyedf0wizwe'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GB', `DIC_TYPE_CODE` = 'GB', `DESCRIBES` = NULL, `SHOW_INDEX` = 1, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2021-12-05 07:42:53' WHERE `ID` = 'Q8QT8JWFJC'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'HB/T', `DIC_TYPE_CODE` = 'HB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 79, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:28', `MODIFY_TIME` = '2021-10-14 12:01:28' WHERE `ID` = 'qdw5epdn8na2qo7ci75l'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/ITS', `DIC_TYPE_CODE` = 'T/ITS', `DESCRIBES` = NULL, `SHOW_INDEX` = 169, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 16:03:47', `MODIFY_TIME` = '2021-10-16 16:03:47' WHERE `ID` = 'qlhcnyj9duishow2col7'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'OST', `DIC_TYPE_CODE` = 'OST', `DESCRIBES` = NULL, `SHOW_INDEX` = 122, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:10:58', `MODIFY_TIME` = '2021-10-14 12:10:58' WHERE `ID` = 'qyasmaxgl3f08r6baozu'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SZDB/Z', `DIC_TYPE_CODE` = 'SZDB/Z', `DESCRIBES` = NULL, `SHOW_INDEX` = 161, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:23:22', `MODIFY_TIME` = '2021-11-15 15:23:22' WHERE `ID` = 'r21oh7gd3lw5x1u2207b'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'DIN', `DIC_TYPE_CODE` = 'DIN', `DESCRIBES` = NULL, `SHOW_INDEX` = 57, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:13:04', `MODIFY_TIME` = '2021-10-14 12:13:04' WHERE `ID` = 'r7jjulxe8sdfwso4q96r'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'IS', `DIC_TYPE_CODE` = 'IS', `DESCRIBES` = NULL, `SHOW_INDEX` = 89, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:36', `MODIFY_TIME` = '2021-10-14 12:01:36' WHERE `ID` = 'rhjprn9xjo4w4zb000sk'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ТР ТС', `DIC_TYPE_CODE` = 'ТР ТС', `DESCRIBES` = NULL, `SHOW_INDEX` = 194, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:52:49', `MODIFY_TIME` = '2021-11-29 13:52:49' WHERE `ID` = 'roe57ra53d87qtu5mm42'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'TB/T', `DIC_TYPE_CODE` = 'TB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 172, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 14:34:21', `MODIFY_TIME` = '2021-10-16 14:34:21' WHERE `ID` = 'rwxwtih4kh57lf3p3g81'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'EC', `DIC_TYPE_CODE` = 'EC', `DESCRIBES` = '', `SHOW_INDEX` = 8, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:16:34', `MODIFY_TIME` = '2021-11-06 05:16:34' WHERE `ID` = 's4jzokrgord84n2gjlgv'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'AIS', `DIC_TYPE_CODE` = 'AIS', `DESCRIBES` = NULL, `SHOW_INDEX` = 31, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:26', `MODIFY_TIME` = '2021-11-29 13:20:26' WHERE `ID` = 's7000x7o9j0n5zxmxip5'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'FT', `DIC_TYPE_CODE` = 'FT', `DESCRIBES` = NULL, `SHOW_INDEX` = 60, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:12:02', `MODIFY_TIME` = '2021-10-14 12:12:02' WHERE `ID` = 's7k0o5g0hu3za5hrd4xo'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'POL', `DIC_TYPE_CODE` = 'POL', `DESCRIBES` = NULL, `SHOW_INDEX` = 123, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:11:11', `MODIFY_TIME` = '2021-10-14 12:11:11' WHERE `ID` = 't3eso8ddt24ob2128656'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'CB/T', `DIC_TYPE_CODE` = 'CB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 42, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:23', `MODIFY_TIME` = '2021-10-14 12:40:23' WHERE `ID` = 't5ewcaojk15xo9ojyabj'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GJB', `DIC_TYPE_CODE` = 'GJB', `DESCRIBES` = NULL, `SHOW_INDEX` = 68, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:41:11', `MODIFY_TIME` = '2021-10-14 12:41:11' WHERE `ID` = 't835ayzr5b77y9fxgbvy'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'TIS', `DIC_TYPE_CODE` = 'TIS', `DESCRIBES` = NULL, `SHOW_INDEX` = 175, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:21:33', `MODIFY_TIME` = '2021-11-29 13:21:33' WHERE `ID` = 'ta0pgmrikxibka7ttdcm'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JJG', `DIC_TYPE_CODE` = 'JJG', `DESCRIBES` = NULL, `SHOW_INDEX` = 106, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 14:21:10', `MODIFY_TIME` = '2021-10-16 14:21:10' WHERE `ID` = 'tbjde3ulsgy9rzxb52om'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/SGZGS', `DIC_TYPE_CODE` = 'Q/SGZGS', `DESCRIBES` = NULL, `SHOW_INDEX` = 133, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:40:18', `MODIFY_TIME` = '2021-10-14 12:40:18' WHERE `ID` = 'ten485pq46q17s299o44'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Стр', `DIC_TYPE_CODE` = 'Стр', `DESCRIBES` = NULL, `SHOW_INDEX` = 193, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-12-22 09:23:11', `MODIFY_TIME` = '2021-12-22 09:23:11' WHERE `ID` = 'u5gg1baee6q2xrdektae'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GBR', `DIC_TYPE_CODE` = 'GBR', `DESCRIBES` = NULL, `SHOW_INDEX` = 66, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:59:25', `MODIFY_TIME` = '2021-11-29 13:59:25' WHERE `ID` = 'ucvjlh89g3bksk4g7q5b'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SGP', `DIC_TYPE_CODE` = 'SGP', `DESCRIBES` = NULL, `SHOW_INDEX` = 152, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:52', `MODIFY_TIME` = '2021-11-29 13:20:52' WHERE `ID` = 'ueqw22779jc9qh2ispr8'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'MH/T', `DIC_TYPE_CODE` = 'MH/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 112, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:32:43', `MODIFY_TIME` = '2021-10-16 15:32:43' WHERE `ID` = 'ug5hadxi0xrozwtqjdwx'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'BRA', `DIC_TYPE_CODE` = 'BRA', `DESCRIBES` = NULL, `SHOW_INDEX` = 38, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:21:00', `MODIFY_TIME` = '2021-11-29 13:21:00' WHERE `ID` = 'ukv9isly3nj2ssthf51o'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'FMVSS', `DIC_TYPE_CODE` = 'FMVSS', `DESCRIBES` = NULL, `SHOW_INDEX` = 59, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2020-08-21 15:04:44' WHERE `ID` = 'UQZFVQ8ZPN'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = '京DHJB', `DIC_TYPE_CODE` = '京DHJB', `DESCRIBES` = '', `SHOW_INDEX` = 195, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 12:33:53', `MODIFY_TIME` = '2021-11-15 12:33:53' WHERE `ID` = 'ura8cv4ih1to45t9wmny'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT B', `DIC_TYPE_CODE` = 'Q/FT B', `DESCRIBES` = '', `SHOW_INDEX` = 15, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:29:55', `MODIFY_TIME` = '2021-11-06 05:29:55' WHERE `ID` = 'uu697zraku5f25b4rfu0'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'EEC', `DIC_TYPE_CODE` = 'EEC', `DESCRIBES` = '', `SHOW_INDEX` = 9, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:27:01', `MODIFY_TIME` = '2021-11-06 05:27:01' WHERE `ID` = 'v0kncqf3qxii5rt98lzt'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JT/T', `DIC_TYPE_CODE` = 'JT/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 3, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-09-14 07:58:04', `MODIFY_TIME` = '2021-09-14 07:58:04' WHERE `ID` = 'v84651i9vvgoi8njkmxy'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'AQ/T', `DIC_TYPE_CODE` = 'AQ/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 32, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:34:44', `MODIFY_TIME` = '2021-10-14 12:34:44' WHERE `ID` = 'v9vqolfbhvpdvbywdwpy'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'IEEE', `DIC_TYPE_CODE` = 'IEEE', `DESCRIBES` = NULL, `SHOW_INDEX` = 86, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:20:15', `MODIFY_TIME` = '2021-11-29 13:20:15' WHERE `ID` = 'vbty6irxjfu3g4vqr8bu'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JJF', `DIC_TYPE_CODE` = 'JJF', `DESCRIBES` = NULL, `SHOW_INDEX` = 105, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:10:09', `MODIFY_TIME` = '2021-10-14 12:10:09' WHERE `ID` = 'vj47yrysyesce1nu0etm'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ARP', `DIC_TYPE_CODE` = 'ARP', `DESCRIBES` = NULL, `SHOW_INDEX` = 34, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:16:17', `MODIFY_TIME` = '2021-11-29 13:16:17' WHERE `ID` = 'vqyaxldih3pawyqeqdgd'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GOST', `DIC_TYPE_CODE` = 'GOST', `DESCRIBES` = NULL, `SHOW_INDEX` = 72, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:10:11', `MODIFY_TIME` = '2021-10-14 12:10:11' WHERE `ID` = 'vtacackqo5l7y8znxn9o'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GTR', `DIC_TYPE_CODE` = 'GTR', `DESCRIBES` = NULL, `SHOW_INDEX` = 11, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2020-08-21 15:04:44' WHERE `ID` = 'VUQ45KJMBA'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'ZAF', `DIC_TYPE_CODE` = 'ZAF', `DESCRIBES` = NULL, `SHOW_INDEX` = 190, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:53:12', `MODIFY_TIME` = '2021-11-29 13:53:12' WHERE `ID` = 'vuzxt0cusp699v14y7i7'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SABS', `DIC_TYPE_CODE` = 'SABS', `DESCRIBES` = NULL, `SHOW_INDEX` = 146, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:25', `MODIFY_TIME` = '2021-10-14 12:01:25' WHERE `ID` = 'vy4irua9jcxm3y0yfwji'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'UTE', `DIC_TYPE_CODE` = 'UTE', `DESCRIBES` = NULL, `SHOW_INDEX` = 178, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:25:07', `MODIFY_TIME` = '2021-11-29 13:25:07' WHERE `ID` = 'w6y02bpup6wbhv8gb41d'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'QCn', `DIC_TYPE_CODE` = 'QCn', `DESCRIBES` = NULL, `SHOW_INDEX` = 139, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:24:03', `MODIFY_TIME` = '2021-11-15 15:24:03' WHERE `ID` = 'w9p3he78t51iy66ryu28'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'CAN', `DIC_TYPE_CODE` = 'CAN', `DESCRIBES` = NULL, `SHOW_INDEX` = 41, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:21:08', `MODIFY_TIME` = '2021-11-29 13:21:08' WHERE `ID` = 'w9w0mq9rfbpyau7yjdda'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q-HD', `DIC_TYPE_CODE` = 'Q-HD', `DESCRIBES` = NULL, `SHOW_INDEX` = 124, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:24:01', `MODIFY_TIME` = '2021-11-15 15:24:01' WHERE `ID` = 'wcxsdqaof3r55x4i5lvw'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'GA/T', `DIC_TYPE_CODE` = 'GA/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 64, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 16:24:16', `MODIFY_TIME` = '2021-11-15 16:24:16' WHERE `ID` = 'wdswpaqfj8ad7frvql8o'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT Q', `DIC_TYPE_CODE` = 'Q/FT Q', `DESCRIBES` = '', `SHOW_INDEX` = 20, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:30:38', `MODIFY_TIME` = '2021-11-06 05:30:38' WHERE `ID` = 'wfguq2byj2xv4rntb0gb'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'SH/T', `DIC_TYPE_CODE` = 'SH/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 154, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:42:17', `MODIFY_TIME` = '2021-10-14 12:42:17' WHERE `ID` = 'wttuoxnyuet8zwpsnz8b'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'NB/T', `DIC_TYPE_CODE` = 'NB/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 116, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:28:32', `MODIFY_TIME` = '2021-10-16 15:28:32' WHERE `ID` = 'x0pmu6rjlurg5j870udy'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = '其他', `DIC_TYPE_CODE` = '其他', `DESCRIBES` = NULL, `SHOW_INDEX` = 196, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:15:32', `MODIFY_TIME` = '2021-11-29 13:15:32' WHERE `ID` = 'x5t4xftqs8y2wekr3dpj'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'YD/T', `DIC_TYPE_CODE` = 'YD/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 186, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:22:37', `MODIFY_TIME` = '2021-11-15 15:22:37' WHERE `ID` = 'x83hpmzn4vfl3f3efl3q'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/BJQC', `DIC_TYPE_CODE` = 'T/BJQC', `DESCRIBES` = NULL, `SHOW_INDEX` = 162, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 16:05:08', `MODIFY_TIME` = '2021-10-16 16:05:08' WHERE `ID` = 'xb3r6vhwjfe1zaaompbi'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = '津Q/NK', `DIC_TYPE_CODE` = '津Q/NK', `DESCRIBES` = NULL, `SHOW_INDEX` = 197, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:31', `MODIFY_TIME` = '2021-10-14 12:01:31' WHERE `ID` = 'xevuwspzhzfaa70bm12g'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JASO', `DIC_TYPE_CODE` = 'JASO', `DESCRIBES` = NULL, `SHOW_INDEX` = 94, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:11:10', `MODIFY_TIME` = '2021-10-14 12:11:10' WHERE `ID` = 'xo9n282vfpne50gvarqe'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q房/AYJ', `DIC_TYPE_CODE` = 'Q房/AYJ', `DESCRIBES` = NULL, `SHOW_INDEX` = 142, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 16:06:28', `MODIFY_TIME` = '2021-10-16 16:06:28' WHERE `ID` = 'xojgsrt23kv783ave4kx'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FL', `DIC_TYPE_CODE` = 'Q/FL', `DESCRIBES` = NULL, `SHOW_INDEX` = 129, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-09-14 07:58:15', `MODIFY_TIME` = '2021-09-14 07:58:15' WHERE `ID` = 'xzvc3zlz0h9vpoyi24ph'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/SH', `DIC_TYPE_CODE` = 'Q/SH', `DESCRIBES` = NULL, `SHOW_INDEX` = 134, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-14 12:01:31', `MODIFY_TIME` = '2021-10-14 12:01:31' WHERE `ID` = 'y2k1her2wt7abwgsiann'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'StVZO', `DIC_TYPE_CODE` = 'StVZO', `DESCRIBES` = NULL, `SHOW_INDEX` = 158, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:54:57', `MODIFY_TIME` = '2021-11-29 13:54:57' WHERE `ID` = 'y5w2311txb3rh9v0mz0r'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'T/TBPS', `DIC_TYPE_CODE` = 'T/TBPS', `DESCRIBES` = NULL, `SHOW_INDEX` = 170, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:50:34', `MODIFY_TIME` = '2021-10-16 15:50:34' WHERE `ID` = 'yc58xc4ykntkis7d5mux'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Decree', `DIC_TYPE_CODE` = 'Decree', `DESCRIBES` = NULL, `SHOW_INDEX` = 55, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:54:58', `MODIFY_TIME` = '2021-11-29 13:54:58' WHERE `ID` = 'yq4pfdoknru2oinn5d6u'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'HG/T', `DIC_TYPE_CODE` = 'HG/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 82, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 15:41:41', `MODIFY_TIME` = '2021-11-15 15:41:41' WHERE `ID` = 'yr0y3e60rel552b3cuga'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'JIS', `DIC_TYPE_CODE` = 'JIS', `DESCRIBES` = NULL, `SHOW_INDEX` = 104, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-08-21 15:04:44', `MODIFY_TIME` = '2020-08-21 15:04:44' WHERE `ID` = 'YS3P33FQBH'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'YS/T', `DIC_TYPE_CODE` = 'YS/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 187, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = NULL, `VALID_FLAG` = '0', `CREATION_TIME` = '2021-10-16 15:20:43', `MODIFY_TIME` = '2021-10-16 15:20:43' WHERE `ID` = 'yzbpjbqct67o5y81fis7'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT R', `DIC_TYPE_CODE` = 'Q/FT R', `DESCRIBES` = '', `SHOW_INDEX` = 21, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:30:48', `MODIFY_TIME` = '2021-11-06 05:30:48' WHERE `ID` = 'z03zlxg0k176rckffhvd'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'DB11/T', `DIC_TYPE_CODE` = 'DB11/T', `DESCRIBES` = NULL, `SHOW_INDEX` = 53, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-15 16:24:56', `MODIFY_TIME` = '2021-11-15 16:24:56' WHERE `ID` = 'ztqtu6b4noar7fknthl6'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'Q/FT S', `DIC_TYPE_CODE` = 'Q/FT S', `DESCRIBES` = '', `SHOW_INDEX` = 22, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'admin', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-06 05:30:58', `MODIFY_TIME` = '2021-11-06 05:30:58' WHERE `ID` = 'zv09auk9wpd2aw0uo8el'; +UPDATE `foton_slrs`.`ts_dictype` SET `DIC_ID` = 'JKSADFH564S', `DIC_TYPE_NAME` = 'BS', `DIC_TYPE_CODE` = 'BS', `DESCRIBES` = NULL, `SHOW_INDEX` = 39, `PARENT_ID` = NULL, `TREE_PID` = NULL, `OTHERS` = NULL, `CREATION_USER` = 'chenchunmei', `VALID_FLAG` = '0', `CREATION_TIME` = '2021-11-29 13:22:29', `MODIFY_TIME` = '2021-11-29 13:22:29' WHERE `ID` = 'zv684bbsltmrazt44wb8'; + diff --git a/doc/sql/20220623_定时任务执行管理表添加预警信息.sql b/doc/sql/20220623_定时任务执行管理表添加预警信息.sql new file mode 100644 index 00000000..42e2e02b --- /dev/null +++ b/doc/sql/20220623_定时任务执行管理表添加预警信息.sql @@ -0,0 +1 @@ +INSERT INTO `tb_task`(`id`, `task_name`, `task_desc`, `task_exp`, `task_status`, `task_class`, `update_time`, `create_time`) VALUES ('6', 'task6', '每天定时扫描标准预警数据', '0 0 0 * * ?', 0, 'com.adc.da.scheduled.WarningSchedulingTasks', '2022-06-23 06:19:32', '2022-06-23 06:19:32'); diff --git a/doc/sql/20220706_新表.sql b/doc/sql/20220706_新表.sql new file mode 100644 index 00000000..137d8c6d --- /dev/null +++ b/doc/sql/20220706_新表.sql @@ -0,0 +1,24 @@ +CREATE TABLE `foton_slrs`.`zl_data` ( + `id` varchar(64) NULL COMMENT 'id', + `data_id` varchar(64) NULL COMMENT '数据id' +); + +ALTER TABLE `foton_slrs`.`file_material` +ADD COLUMN `is_show` varchar(255) NULL COMMENT '是否展示' AFTER `del_flag`; + + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for zl_tree +-- ---------------------------- +DROP TABLE IF EXISTS `zl_tree`; +CREATE TABLE `zl_tree` ( + `id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', + `p_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父id', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '节点名称', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/doc/sql/20220713_数据.sql b/doc/sql/20220713_数据.sql new file mode 100644 index 00000000..7868f335 --- /dev/null +++ b/doc/sql/20220713_数据.sql @@ -0,0 +1,76 @@ + +====新增的菜单数据==== + +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('07ba9d907841a62a18267198da3873b1', NULL, '左侧树删除', '32143ffassgabyabayg', NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0b95246d8ad2da6c54381deffa3d0fa2', NULL, '左侧树修改', '32143ffassgabyabayg', NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1cae70abf414bacc33f3ed794cdfa903', NULL, '资料中心删除', '32143ffassgabyabayg', NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('32143ffassgabyabayg', NULL, '资料中心', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('39784f04404cdf50891e9d033f6373c3', NULL, '资料中心查询', '32143ffassgabyabayg', NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('45db41d367f474e10a7ae5dbe8cb0f6e', NULL, '资料中心新增', '32143ffassgabyabayg', NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d9698737e801822ab8f96dbcd47b7d62', NULL, '资料中心修改', '32143ffassgabyabayg', NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e9e80920563325fa7f6e91213ee98466', NULL, '左侧树新增', '32143ffassgabyabayg', NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL); + + + + +UPDATE `foton_slrs`.`sar_menu` SET `SOR_DIVIDE` = NULL, `MENU_NAME` = '左侧树删除', `PARENT_ID` = '32143ffassgabyabayg', `PARENT_IDS` = NULL, `LEVEL` = 2, `DISPLAY_SEQ` = NULL, `HREF` = NULL, `VALID_FLAG` = NULL, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = '07ba9d907841a62a18267198da3873b1'; +UPDATE `foton_slrs`.`sar_menu` SET `SOR_DIVIDE` = NULL, `MENU_NAME` = '左侧树修改', `PARENT_ID` = '32143ffassgabyabayg', `PARENT_IDS` = NULL, `LEVEL` = 2, `DISPLAY_SEQ` = NULL, `HREF` = NULL, `VALID_FLAG` = NULL, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = '0b95246d8ad2da6c54381deffa3d0fa2'; +UPDATE `foton_slrs`.`sar_menu` SET `SOR_DIVIDE` = NULL, `MENU_NAME` = '资料中心删除', `PARENT_ID` = '32143ffassgabyabayg', `PARENT_IDS` = NULL, `LEVEL` = 2, `DISPLAY_SEQ` = NULL, `HREF` = NULL, `VALID_FLAG` = NULL, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = '1cae70abf414bacc33f3ed794cdfa903'; +UPDATE `foton_slrs`.`sar_menu` SET `SOR_DIVIDE` = NULL, `MENU_NAME` = '资料中心', `PARENT_ID` = NULL, `PARENT_IDS` = NULL, `LEVEL` = 1, `DISPLAY_SEQ` = NULL, `HREF` = NULL, `VALID_FLAG` = NULL, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = '32143ffassgabyabayg'; +UPDATE `foton_slrs`.`sar_menu` SET `SOR_DIVIDE` = NULL, `MENU_NAME` = '资料中心查询', `PARENT_ID` = '32143ffassgabyabayg', `PARENT_IDS` = NULL, `LEVEL` = 2, `DISPLAY_SEQ` = NULL, `HREF` = NULL, `VALID_FLAG` = NULL, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = '39784f04404cdf50891e9d033f6373c3'; +UPDATE `foton_slrs`.`sar_menu` SET `SOR_DIVIDE` = NULL, `MENU_NAME` = '资料中心新增', `PARENT_ID` = '32143ffassgabyabayg', `PARENT_IDS` = NULL, `LEVEL` = 2, `DISPLAY_SEQ` = NULL, `HREF` = NULL, `VALID_FLAG` = NULL, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = '45db41d367f474e10a7ae5dbe8cb0f6e'; +UPDATE `foton_slrs`.`sar_menu` SET `SOR_DIVIDE` = NULL, `MENU_NAME` = '资料中心修改', `PARENT_ID` = '32143ffassgabyabayg', `PARENT_IDS` = NULL, `LEVEL` = 2, `DISPLAY_SEQ` = NULL, `HREF` = NULL, `VALID_FLAG` = NULL, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = 'd9698737e801822ab8f96dbcd47b7d62'; +UPDATE `foton_slrs`.`sar_menu` SET `SOR_DIVIDE` = NULL, `MENU_NAME` = '左侧树新增', `PARENT_ID` = '32143ffassgabyabayg', `PARENT_IDS` = NULL, `LEVEL` = 2, `DISPLAY_SEQ` = NULL, `HREF` = NULL, `VALID_FLAG` = NULL, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = 'e9e80920563325fa7f6e91213ee98466'; + +=======资料中心左侧树结构======= + +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('1', NULL, '资料中心', '0'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('10', '1', '常用资料', '9'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('11', '10', '模板', '10'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('12', '10', '法律\\法规\\管理办法', '11'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('13', '10', '标准体系框架', '12'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('14', '10', '汽车标准件', '13'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('15', '14', '汽车标准手册', '14'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('16', '14', '福田企业标准件手册', '15'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('17', '14', '汽车标准件调研资料', '16'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('18', '10', '福田汽车新能源汽车试验手册', '17'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('19', '1', '标准法规目录', '18'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('2', '1', '标准公告', '2'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('20', '19', '外部标准目录', '19'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('21', '19', '企业标准目录', '20'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('22', '1', '标准法规分析报告', '21'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('23', '1', '标准法规符合性检车报告', '22'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('3', '2', '标准公告', '3'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('4', '2', '标准化信息', '4'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('5', '2', '企业标准发布通知', '5'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('6', '1', '标准新闻', '1'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('7', '1', '会议/培训信息', '6'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('8', '7', '会议信息', '7'); +INSERT INTO `foton_slrs`.`zl_tree`(`id`, `p_id`, `name`, `sort`) VALUES ('9', '7', '培训信息', '8'); + +======更新语句======= + +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = NULL, `name` = '资料中心', `sort` = '0' WHERE `id` = '1'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '1', `name` = '常用资料', `sort` = '9' WHERE `id` = '10'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '10', `name` = '模板', `sort` = '10' WHERE `id` = '11'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '10', `name` = '法律\\法规\\管理办法', `sort` = '11' WHERE `id` = '12'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '10', `name` = '标准体系框架', `sort` = '12' WHERE `id` = '13'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '10', `name` = '汽车标准件', `sort` = '13' WHERE `id` = '14'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '14', `name` = '汽车标准手册', `sort` = '14' WHERE `id` = '15'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '14', `name` = '福田企业标准件手册', `sort` = '15' WHERE `id` = '16'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '14', `name` = '汽车标准件调研资料', `sort` = '16' WHERE `id` = '17'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '10', `name` = '福田汽车新能源汽车试验手册', `sort` = '17' WHERE `id` = '18'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '1', `name` = '标准法规目录', `sort` = '18' WHERE `id` = '19'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '1', `name` = '标准公告', `sort` = '2' WHERE `id` = '2'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '19', `name` = '外部标准目录', `sort` = '19' WHERE `id` = '20'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '19', `name` = '企业标准目录', `sort` = '20' WHERE `id` = '21'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '1', `name` = '标准法规分析报告', `sort` = '21' WHERE `id` = '22'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '1', `name` = '标准法规符合性检车报告', `sort` = '22' WHERE `id` = '23'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '2', `name` = '标准公告', `sort` = '3' WHERE `id` = '3'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '2', `name` = '标准化信息', `sort` = '4' WHERE `id` = '4'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '2', `name` = '企业标准发布通知', `sort` = '5' WHERE `id` = '5'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '1', `name` = '标准新闻', `sort` = '1' WHERE `id` = '6'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '1', `name` = '会议/培训信息', `sort` = '6' WHERE `id` = '7'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '7', `name` = '会议信息', `sort` = '7' WHERE `id` = '8'; +UPDATE `foton_slrs`.`zl_tree` SET `p_id` = '7', `name` = '培训信息', `sort` = '8' WHERE `id` = '9'; + diff --git a/doc/sql/20220717_国内海外标准新增译文字段.sql b/doc/sql/20220717_国内海外标准新增译文字段.sql new file mode 100644 index 00000000..b686e411 --- /dev/null +++ b/doc/sql/20220717_国内海外标准新增译文字段.sql @@ -0,0 +1 @@ +INSERT INTO `sar_stand_attr_details`(`ID`, `ATTR_FIELD`, `ATTR_NAME`, `ATTR_TYPE`, `ATTR_LEN`, `ORDER_NUM`, `IS_EDIT`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `IS_MUST`, `IS_SHOW_IMP`, `SHOW_REGION_ID`, `SEL_VAL`, `SAR_TYPE`, `IS_SEARCH`, `IS_WARN`, `IS_JANSUO`) VALUES ('vh9ywh0cs2kryho209lb', 'FBGYWBD', '发布稿(译文)', 'FILE', 2000, 4, '0', 'admin', '0', '2022-07-16 16:00:00', '2022-07-17 14:29:59', '1', '0', 'L378EYP5HL28KE7NSZ68', '', 'STAND', '1', '1', NULL); diff --git a/doc/sql/20220718_表修改.sql b/doc/sql/20220718_表修改.sql new file mode 100644 index 00000000..3ea38927 --- /dev/null +++ b/doc/sql/20220718_表修改.sql @@ -0,0 +1,20 @@ +//资料中心 附件表字段扩容 +ALTER TABLE `foton_slrs`.`file_material` +MODIFY COLUMN `attach_file_id` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `data_explain`; + +//标准属性修改 +ALTER TABLE `foton_slrs`.`sar_stand_attr_info` +MODIFY COLUMN `BDTBZH` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `TXLB`; + +ALTER TABLE `foton_slrs`.`sar_stand_attr_info` +MODIFY COLUMN `CBBH` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `SYZD`, +MODIFY COLUMN `CBCD_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `CBBH`, +MODIFY COLUMN `CYZBPM` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `CBCD_`, +MODIFY COLUMN `BFDTBZ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `CYZBPM`, +MODIFY COLUMN `BBFDTBZ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `BFDTBZ`, +MODIFY COLUMN `CSZD` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `BBFDTBZ`, +MODIFY COLUMN `XDB` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `CSZD`, +MODIFY COLUMN `TXLB` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `XDB`, +MODIFY COLUMN `DYBXHCAR` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `BDTBZH`, +MODIFY COLUMN `DYMCCAR` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `DYBXHCAR`, +MODIFY COLUMN `FBGYWBD` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `DYMCCAR`; \ No newline at end of file diff --git a/doc/sql/20220726_数据库字段内容修改.SQL b/doc/sql/20220726_数据库字段内容修改.SQL new file mode 100644 index 00000000..c8edcd27 --- /dev/null +++ b/doc/sql/20220726_数据库字段内容修改.SQL @@ -0,0 +1,2 @@ +UPDATE `ts_resource` SET `SOR_DIVIDE` = 'FOREIGN_STAND', `MENU_NAME` = '海外标准', `PARENT_ID` = NULL, `PARENT_IDS` = NULL, `DISPLAY_SEQ` = 2, `VALID_FLAG` = 0, `CREATION_TIME` = NULL, `MODIFY_TIME` = NULL, `REMARKS` = NULL WHERE `ID` = '2'; +UPDATE `sar_stand_attr_details` SET `ATTR_FIELD` = 'FBGBJBD', `ATTR_NAME` = '发布稿(原文)', `ATTR_TYPE` = 'FILE', `ATTR_LEN` = 500, `ORDER_NUM` = 4, `IS_EDIT` = '1', `CREATION_USER` = 'WY8J26MH23', `VALID_FLAG` = '0', `CREATION_TIME` = '2020-10-22 16:00:00', `MODIFY_TIME` = '2021-12-17 05:26:10', `IS_MUST` = '1', `IS_SHOW_IMP` = '0', `SHOW_REGION_ID` = 'L378EYP5HL28KE7NSZ68', `SEL_VAL` = NULL, `SAR_TYPE` = 'STAND', `IS_SEARCH` = '1', `IS_WARN` = '1', `IS_JANSUO` = NULL WHERE `ID` = '5BDBGYXS442QCTY43AHB'; diff --git a/doc/sql/20220727_权限增加关联条款按钮.sql b/doc/sql/20220727_权限增加关联条款按钮.sql new file mode 100644 index 00000000..ba706045 --- /dev/null +++ b/doc/sql/20220727_权限增加关联条款按钮.sql @@ -0,0 +1,2 @@ +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('960a97045a6e47b0b8e33ebc347e5fd9', NULL, '关联条款', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bd291146ac1e42c48968c5142ae55375', NULL, '关联条款', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL); diff --git a/doc/sql/20220901_解读流程新增字段.sql b/doc/sql/20220901_解读流程新增字段.sql new file mode 100644 index 00000000..7f8dd945 --- /dev/null +++ b/doc/sql/20220901_解读流程新增字段.sql @@ -0,0 +1,2 @@ +ALTER TABLE sar_interpretation_national_standard + ADD COLUMN `prc_num` varchar(255) NULL COMMENT '流程编号' AFTER `risk_degree`; \ No newline at end of file diff --git a/doc/sql/20220916_sar_menu表重构数据.sql b/doc/sql/20220916_sar_menu表重构数据.sql new file mode 100644 index 00000000..0afa3f4f --- /dev/null +++ b/doc/sql/20220916_sar_menu表重构数据.sql @@ -0,0 +1,424 @@ +truncate table sar_menu; + +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0021d017199b2b57c953671fa09e1677', NULL, '未符合项整改库新增按钮', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0062e261bc65e27e0a968dac67e16a3c', NULL, '标准拆分', 'afsd12', NULL, 2, 2, '/standAutoSplit', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0119abd677e0204e061eb0f0b8cafda0', NULL, '未符合项', '2ewfwfa', NULL, 2, 6, '/nonConfomity', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('013dc790d5438d2fa93a03eabf641318', NULL, '事业部导出', '9b9aa2350f30082edf5e4f4c4bdacb03', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('018cb58e72025fc43a9bfe1bde00c14a', NULL, '标准内容表格-获取文件', '3db80f62af9d96d6dfc6d429eea4b29b', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('01ed8f752748227777b3572d56ee9ab5', NULL, '企业标准', '2ewfwfa', NULL, 2, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('02424c2bc370ee846aa5a6d60c49a6a5', NULL, '零部件编号申请查询按钮', 'ad9db496772c075f78495382b7581fe9', NULL, 3, 1, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('025368d14944c4c4c86da29109b5f383', NULL, '删除按钮', 'd73d0e230eafdb2ddefe1c97daf657ea', NULL, 3, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('02e7caaa53bec6bb2e87e572c298dfec', NULL, '管理页-批量删除', '72a24657972d286b8b5d80735cf4eee2', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('02fd6eff0537c283dd071683de10689f', NULL, '国内标准带水印下载', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 15, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('047cd72141270c21a7dd479d78bb50a5', NULL, '技术评估结果清空', 'e81f9857997cba2f5faa439201a13085', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0514cd2c6b0e6311a7632f8bef87aecb', NULL, '征求意见查询', '2b25c67f10abbbadf37d60daaaec54d3', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('06a64841ad8acf3dcc74ccbb8123e7b1', NULL, '查看页面删除', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 10, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('072efe80c5459dd47fedd2d14f59ff7f', NULL, '国家/地区清单-查询', 'b05b562950cb6d0aef539fad30b7386a', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('074bc85966e5ca7153f4620a76c5897b', NULL, '企业标准库-删除', '7feeb73929c25a6f1fd67952704ec02b', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('07ba9d907841a62a18267198da3873b1', NULL, '资料中心目录删除', '32143ffassgabyabayg', NULL, 2, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('08dbd417864b08426034ca56d1fa3d02', NULL, '法规清单', '2ewfwfa', NULL, 2, 5, '/accessStandardsAndRegulations', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('08e9f28f1afb80b706217bdd9c6323bd', NULL, '项目评估结果-表格查看', 'd64fe4a4d794921885a96c1daf5c3802', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0982c83299f3eb996317b014bb6aaff2', NULL, '其他清单批量删除', '5a75523729b04102a565167004d640e9', NULL, 4, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0a208743eb1c987e8aa0d6bf3007287d', NULL, '条款比对按钮', '36078b3c8e897f8c1b6d6974a612d0c7', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0a76fe1a368755aeefc5a1a48eb0ec7f', NULL, '工作组批量删除', '79238a037746bd4bb42997a97e55609e', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0af780936b77df9905c988db9e90bee8', NULL, '标准拆分清空按钮', '0062e261bc65e27e0a968dac67e16a3c', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0b95246d8ad2da6c54381deffa3d0fa2', NULL, '资料中心目录编辑', '32143ffassgabyabayg', NULL, 2, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0bdf3aecef5161bb66256ebcbbd4bdaa', NULL, '标准涉及项目查询', 'e81f9857997cba2f5faa439201a13085', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0cbf713be29e63b6c6eff5d1aec59c64', NULL, '展示区域-删除', 'ee838a0ff0d332cac850fd553e81048d', NULL, 5, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0d8ddb11e7f924c91cb86c9d6f24dc20', NULL, '工作组查询', '79238a037746bd4bb42997a97e55609e', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0efd0f4b7a15fd1b687cc0ac36e9e7d9', NULL, '发起参与外部标准制修订信息提报流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 19, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('0fbb849e244e07433a90180fb314ad10', NULL, '岗位管理-删除岗位', 'd2954be3abaaf2de3dc79add4c8ab8cd', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1044adc0569438df582585db349f2cde', NULL, '收藏政策查询', '63e999c65b1f2b1339119a00eb1d50cf', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('10ba28487876990927f653a66e1eeb98', NULL, '标准拆分删除按钮', '0062e261bc65e27e0a968dac67e16a3c', NULL, 3, 5, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('116a3f339f3600e639271d0073045912', NULL, '展示区域-删除', '9557b51320a50728d7047448d01c57c6', NULL, 5, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('117fc9260e2014077489c45276976593', NULL, '查看页面编辑', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 8, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('11a6fc355f457eff8ad70278224a2f3b', NULL, '项目清单高级查询', 'a1170d77f4332e5f45ce520e63b00e15', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('11a9ebeec5cbee55e7c49c07c25f47ac', NULL, '查看页面导出按钮', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('123a2d7808ec50b6b4ce14567a9282f2', NULL, '新增', 'b22bdd0959e5a445fd90a9e0e7a8f607', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('12a6b1f548cef7b152746c978fc32dbb', NULL, '机构管理清空', '983f16809318054be16dc447b566c8cb', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('13219b54a6f41280818e7ade5cf2cfad', NULL, '标准比对-查看', '1d83a6278f781419f628e9f5560f5c86', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('141c18729a988fe5d9c52296f35ba9f4', NULL, '新增工作组按钮', '68d78524c68c6c84c4578c13fb1ea069', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1468f4d8f5b784512a8942db2da1a13b', NULL, '展示区域-新增', '85b2b303cce28234fafa1f5ab12ba61d', NULL, 5, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('14802475aba2684ed63af6ef50812937', NULL, '其他清单详情-导出', '30bfbe928d7ee6e6bcef9408b762bc97', NULL, 5, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('149187e6e3a686a949a4119dadaafbef', NULL, '车型类别清单详情-清空', 'cfe3ce86cd64c5924c2e6d13e7f7ea31', NULL, 5, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('14bdb937d168478e65b139214e982a8c', NULL, '标准内容表格-编辑', '3db80f62af9d96d6dfc6d429eea4b29b', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('14f54ef4475d9210b1ee7872ab69eca8', NULL, '发起项目清单确认流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 8, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1595c63ae9b14631ff3adefe51a92bdb', NULL, '企标计划查询', 'b07296765085f06eb3c158147f3a7312', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('16d1a83a89ad4781d34163a45c04e3cb', NULL, '展示区域-新增', 'ee838a0ff0d332cac850fd553e81048d', NULL, 5, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('16f0eb84681538029f59361b3778d44e', NULL, '管理页-清空', '72a24657972d286b8b5d80735cf4eee2', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('173e7a3ce7e9544578f63eaf11dd48de', NULL, '未符合项整改库历史数据', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 10, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('17ba4598eb411d6feed468a2e446a301', NULL, '标准拆分查看按钮', '0062e261bc65e27e0a968dac67e16a3c', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('18c1e5134ea0cf865e8960b26b81fd8c', NULL, '海外标准', '2ewfwfa', NULL, 2, 2, '/foreignStandardsAndRegulations', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('19173939f52bb35d82e85fdcfc5bc37a', NULL, '查看页面模板下载按钮', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1954a5c1fbef6722037b8e12b035d13f', NULL, '国内外政策-编辑', 'efcbe65f90d3a23f0be5df5ad60d1dac', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('19e9ff56a1d5dcde2710036d5cc53ebb', NULL, '政策工作组删除按钮', 'c6cb01bda2a7fc031b434889a82495ee', NULL, 4, 3, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1ae29971a6f4b30f527e6ed2f8b3dd51', NULL, '产品规划部导出', '2d3ac826dda0e5f40fcda35301e0fefd', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1cae70abf414bacc33f3ed794cdfa903', NULL, '资料中心删除', '32143ffassgabyabayg', NULL, 2, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1d5b1476371cbf9d6e600def85f30efc', NULL, '拆分界面-清空按钮', '633d92e841ab4d49fb57b48b45fd0db8', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1d83a6278f781419f628e9f5560f5c86', NULL, '标准比对', 'afsd12', NULL, 2, 3, '/standContrast', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('1e8a5e0eb6127b2d440b84a19e522e95', NULL, '企业标准库-编辑', '7feeb73929c25a6f1fd67952704ec02b', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('200212748ffc5fd3d93179789446535a', NULL, '已收藏政策', '63e999c65b1f2b1339119a00eb1d50cf', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2027eafd482aa7d031c95ef5908dc725', NULL, '查看页面复制', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 9, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('20ddefa1588cbebeee5372d7f5389693', NULL, '批量删除', 'b22bdd0959e5a445fd90a9e0e7a8f607', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('21f35d66ae92f2e6f20eeba84ce78987', NULL, '企业标准目录新增', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('226bcb0d4d1b5767183d51186f24c57a', NULL, '重点标准跟踪清单新增', '418123d180abf67bd2c46d5a694baaa5', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2321e6eaaf6d89eb7c36a12aa5624396', NULL, '监控流程-清空', 'e1eb3e91143c1cf356889e013e698672', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2331baafd7d298b87ab3c0b5430d608d', NULL, '工作组统计按钮', 'b64240325f0e01ec4a318ee0cfedd82e', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('23e01cb6ac6bfcedd39537f236a769e5', NULL, '重点标准跟踪清单查询', '418123d180abf67bd2c46d5a694baaa5', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('247cebaefa7cf1683092af160af11502', NULL, '国内标准编辑 ', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('24e7400242307a236cc50bbec1796d26', NULL, '历史数据查看', '173e7a3ce7e9544578f63eaf11dd48de', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('253fb387b97868c10434cc8fa3d87294', NULL, '已发流程-查询', 'b9abd00768c8ed97be89547c2da3f0eb', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2545b11a92961106563f83daad9735ff', NULL, '编辑', 'c8355290d8ece5202db506405c7df6fd', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('255351d90836fad911d347da0e8c65b5', NULL, '草稿-查询', 'fa19fb2dc2cf3055a64732dab6c40cb9', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2564bd61852551b99e0fe3d49a89b288', NULL, '发起标准解读流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2621269642ea4c6c8c42905863b2dc09', NULL, '问答库', '2ewfwfa', NULL, 2, 10, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('264c235efd8aae1eaff42fbea4efe0f8', NULL, '企业标准库-新增', '7feeb73929c25a6f1fd67952704ec02b', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('27e0f6cdfb3e2af446c36f9923e90d76', NULL, '标准法规属性管理详情页', '72a24657972d286b8b5d80735cf4eee2', NULL, 3, 8, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('28a917b40ab7c9cc319aafe0e23bd535', NULL, '车型类别清单查询', '63e05705d0c8013162caa34f9fe52865', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('29bf24bbd156c06f136cc89b1c7b2bb0', '', '海外标准移除标准', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 9, '', 0, '2021-07-12 11:22:50', '2021-07-12 11:22:50', ''); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2a788bca1cca66384e97f8ff722d4232', NULL, '展示区域-编辑', '9557b51320a50728d7047448d01c57c6', NULL, 5, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2b196e3179b073436deb9c64251ddb3d', NULL, '零部件编号申请导出按钮', 'ad9db496772c075f78495382b7581fe9', NULL, 3, 4, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2b25c67f10abbbadf37d60daaaec54d3', NULL, '征求意见', '2ewfwfa', NULL, 2, 8, '/standardForComments', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2c8041eb6226368ee6e6b975b4aa88f1', NULL, '已办流程-查询', '4f71b81686079ba2b7e3739d3994e0af', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2d0f99ba961c551b1d8cad8ad5223731', NULL, '发起标准清单发布/更新流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2d3ac826dda0e5f40fcda35301e0fefd', NULL, '产品规划部', 'e02897e9ab6b1a72f49c47c07b5be9a5', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2d41ebdb6150ba1af52fd753086d77dc', NULL, '企业标准移除标准', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 9, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2d6ab9d465ab73d415194e1ca4313793', NULL, '国内标准详情在线预览', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 17, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2d9402bd81545e391aef735733051627', NULL, '车型类别清单批量删除', '63e05705d0c8013162caa34f9fe52865', NULL, 4, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2dd158ffb07ddcc89ed41468b196b451', NULL, '车型类别清单新增', '63e05705d0c8013162caa34f9fe52865', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2ddb307d6b6840ac4e7f8f46d4c8f437', NULL, '发起企标制修订立项计划流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 15, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2dee468b4139ac3f26ebe8ac498b9da6', NULL, '收藏政策取消收藏', '63e999c65b1f2b1339119a00eb1d50cf', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2ede47a179e37347b7aacfd9d139085f', NULL, '国内外政策-删除', 'efcbe65f90d3a23f0be5df5ad60d1dac', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2ee2ffeda5a5c99455b1a6b0a0b31d60', NULL, '全文比对按钮', '36078b3c8e897f8c1b6d6974a612d0c7', NULL, 4, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2ewfwfa', NULL, '标准法规库', NULL, NULL, 1, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2f211ed7ff6c273c690a52f890ea8008', NULL, '项目清单查看详情导出', '881cfa2f3c898e0954d90ee7d521ed70', NULL, 5, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('2f2752bc8a37b87d6eaadae3fcfe61c4', NULL, '发起政策课题参会流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 23, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('30bfbe928d7ee6e6bcef9408b762bc97', NULL, '其他清单查看', '5a75523729b04102a565167004d640e9', NULL, 4, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('30d080f4194a10a76cc4994bad0afc9e', NULL, '取消预警', 'asfdew33', NULL, 2, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('30db3b395deb5004266cd65d302c2776', NULL, '启用/禁用按钮', '983f16809318054be16dc447b566c8cb', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('314ad07cd81834dfdd3c58476cdcde68', NULL, '项目评估结果查询', 'd64fe4a4d794921885a96c1daf5c3802', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('31ac9f600d8a3072ba088f1c106df359', '', '海外标准清空', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 5, '', 0, '2021-07-12 11:22:50', '2021-07-12 11:22:50', ''); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('32143ffasdf', NULL, '个人中心', NULL, NULL, 1, 9, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('32143ffassgabyabayg', NULL, '资料中心', NULL, NULL, 1, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('321e497259b08734941a308960da2bae', NULL, '发起外部标准化协会参会流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 17, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('32d99dd10bef923935b0d19d3f2d2a90', NULL, '其他清单详情-高级查询', '30bfbe928d7ee6e6bcef9408b762bc97', NULL, 5, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('33519a9d6eee3576e04e165b98e926c7', NULL, '技术委员会-新增', 'e17f7aec26ca25d7464d023e8b6d7f84', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('344c9c97b581400718451e8b8a319382', NULL, '发起政策征求意见流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 22, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('3480a13964a18e000196e4d5bc6ef117', NULL, '国家/地区清单-清空', 'b05b562950cb6d0aef539fad30b7386a', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('351d1b7b07ca6ca76dc37f11dd389f91', NULL, '产品规划部批量关闭', '2d3ac826dda0e5f40fcda35301e0fefd', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('36078b3c8e897f8c1b6d6974a612d0c7', NULL, '标准比对-比对', '1d83a6278f781419f628e9f5560f5c86', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('366c89d1c54465faca96aaed26a158b1', '', '海外标准查询', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 4, '', 0, '2021-07-12 11:22:50', '2021-07-12 11:22:50', ''); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('374205ce36a859a158ca4db196d151b7', NULL, '企业标准批量删除', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 8, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('374cb5206597fa201e57f561ff2f8ed7', NULL, '未符合项整改库查看', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 9, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('381d34443196ca840118ae577ff30d5e', NULL, '企业标准配置标准', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 10, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('389d3690eeea9d3808bdff4d02dddbd8', NULL, '其他清单新增', '5a75523729b04102a565167004d640e9', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('38e362493fd7603dc7fddd1f3ac8971c', NULL, '编辑按钮', 'd73d0e230eafdb2ddefe1c97daf657ea', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('39784f04404cdf50891e9d033f6373c3', NULL, '资料中心查询', '32143ffassgabyabayg', NULL, 2, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('39eb1c25f5865a14020708fe07ea4b5c', NULL, '车型类别清单详情-高级查询', 'cfe3ce86cd64c5924c2e6d13e7f7ea31', NULL, 5, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('3b4223ab22aa24b8332c3d27f1e7fe32', NULL, '收藏政策清空', '63e999c65b1f2b1339119a00eb1d50cf', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('3d2a7ad51f31f0204810b6e505a244f8', NULL, '拆分界面-清空按钮', '633d92e841ab4d49fb57b48b45fd0db8', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('3db80f62af9d96d6dfc6d429eea4b29b', NULL, 'OCR识别', 'afsd12', NULL, 2, 1, '/standardRecognition', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('3e0cee86b3522d4233df8f1f11ab02c7', NULL, '新增角色按钮', 'd73d0e230eafdb2ddefe1c97daf657ea', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('3e3657498664beaa0dc1de1ecb3ae0da', NULL, '国内标准', '2ewfwfa', NULL, 2, 1, '/domesticStandardsAndRegulations', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('3f5fe30d457f714c9cf68ec48b2887ec', NULL, '历史数据清空', '9b68b46455c5af042d430e05e6579b27', NULL, 6, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('3fadf', NULL, '工作中心', NULL, NULL, 1, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4136d025d20d4c9b55c732b74dfa581d', NULL, '车型类别清单删除', '63e05705d0c8013162caa34f9fe52865', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('418123d180abf67bd2c46d5a694baaa5', NULL, '重点标准跟踪清单', '08dbd417864b08426034ca56d1fa3d02', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('41945d15f5cb658665ef4916f62354a2', NULL, '重点标准跟踪清单清空', '418123d180abf67bd2c46d5a694baaa5', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('41f76602450a4f4fa4516b6c35eb3b75', NULL, '历史数据查看', '5eba31766fdc0521461684d2d6bf66c4', NULL, 6, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4219fdb5e33dbbc84d845af98c947e66', NULL, '待办流程', '3fadf', NULL, 2, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('42a77131e13b8cc67886025b44d9948d', NULL, '新增标准按钮', '68d78524c68c6c84c4578c13fb1ea069', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('436653a7e2e55c427dda1f1d0faa4fca', NULL, '批量删除', 'c8355290d8ece5202db506405c7df6fd', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('43ae63abc1b64e6bd5cf3bb75b423bc2', NULL, '企业标准在线预览', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 14, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('45db41d367f474e10a7ae5dbe8cb0f6e', NULL, '资料中心新增', '32143ffassgabyabayg', NULL, 2, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4733577057bf2470fc5c1f88d81eaf1d', NULL, '国家/地区清单-编辑', 'b05b562950cb6d0aef539fad30b7386a', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('47528dfdf744d0602e72da33e1b70ece', NULL, '管理页-搜索', '72a24657972d286b8b5d80735cf4eee2', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4819e2ee2a92fdcba7643e27dba4a41b', NULL, '企业标准清空', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('48723deaa90798f56e939aea6aa49a23', NULL, '详情-编辑按钮', '27e0f6cdfb3e2af446c36f9923e90d76', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4a65b081ccf9bf992014adba1c73a78f', NULL, '产品规划部查询', '2d3ac826dda0e5f40fcda35301e0fefd', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4abd63ca838a6845bdf6a9e8cbc8ad5b', NULL, '政策工作组查看按钮', 'c6cb01bda2a7fc031b434889a82495ee', NULL, 4, 4, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4b5207b6ebff8f5ca7990dd6debf7f60', NULL, '国家地区清单详情导出', 'b736f2469d49b3214cc8087419a24b60', NULL, 5, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4c674bc8b1a21ca17592f1b034444c57', NULL, '已办流程-清空', '4f71b81686079ba2b7e3739d3994e0af', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('4f71b81686079ba2b7e3739d3994e0af', NULL, '已办流程', '3fadf', NULL, 2, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('503f373e13fc62a8b50d52898fcd50cd', NULL, '未符合项整改库批量关闭', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 8, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('50d7a0c0af4740c486100c257ae6068e', NULL, '问题项管控', 'asdzcfgk', NULL, 2, 3, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('50ee603959d7c8f3fbb3240101a6f252', NULL, '岗位管理-清空', 'd2954be3abaaf2de3dc79add4c8ab8cd', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5104360fd3822e73b45e65d2337cf143', NULL, '发起企标废止流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 13, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('562e58cc3a960096cf3321e631293dc9', NULL, '国家/地区清单-批量删除', 'b05b562950cb6d0aef539fad30b7386a', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('568cc2a4431e8ea0d1f65bd0c0805907', NULL, '草稿-清空', 'fa19fb2dc2cf3055a64732dab6c40cb9', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('590049684c0af005c6b3d1f0ebcf897e', '', '海外标准配置标准', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 10, '', 0, '2021-07-12 11:22:50', '2021-07-12 11:22:50', ''); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5905d0743c3504799aee83ac9697f8c5', NULL, '未符合项整改库清空', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5966a5368b682b658ea4e7d2b2099123', NULL, '管理页-编辑', '72a24657972d286b8b5d80735cf4eee2', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5a09164da97760846509c5c9dd86b80c', NULL, '机构管理', 'adff323', NULL, 2, 4, '/MechanismManage', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5a75523729b04102a565167004d640e9', NULL, '其他清单', '08dbd417864b08426034ca56d1fa3d02', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5aedea192a77b14c364f19bdcee3513a', NULL, '国内标准移除标准', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 9, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5af38c3aaad325741045c4db44e6850e', NULL, '标准/政策-导出', '2b25c67f10abbbadf37d60daaaec54d3', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5af5073695c2e1d12ca3d5a6afae67b5', NULL, '发起企标复审流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 12, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5b26775620cf73b044d753bf1f07ceaf', NULL, '国家地区清单详情高级查询', 'b736f2469d49b3214cc8087419a24b60', NULL, 5, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5c8347d102094d48139b30723e187113', NULL, '企标计划清空', 'b07296765085f06eb3c158147f3a7312', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5cf95d4e0eaae6118e1375f677a0a08d', NULL, '转办', '4219fdb5e33dbbc84d845af98c947e66', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5dca375c3d8d57c45e4815acf3611b34', NULL, '标准预警查询', 'asfdew33', NULL, 2, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5e5ea3cc23f1b27ba1c6b6bee44214f0', NULL, '标准涉及项目清空', 'e81f9857997cba2f5faa439201a13085', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5e834b3fca90619e593ad0ee83263885', NULL, '标准化活动日历', 'b64240325f0e01ec4a318ee0cfedd82e', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5eb720bb99553de7ae77a977a6276d7c', NULL, '查询', '4219fdb5e33dbbc84d845af98c947e66', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('5eba31766fdc0521461684d2d6bf66c4', NULL, '产品规划部历史数据', '2d3ac826dda0e5f40fcda35301e0fefd', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('61a33c05ed689934f7d4a0de4220c9ce', NULL, '国内外政策目录编辑', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('620e6da5808bf104e576c763546a33b6', NULL, '未符合项整改库导出', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('62d7895323fc44fcd3a2d7fa1a0c84bf', NULL, '发起企标制修订-技术标准流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 10, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('62f5582b71835d1a0486d3109ff24698', NULL, '企业标准高级检索', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('633d92e841ab4d49fb57b48b45fd0db8', NULL, '标准拆分拆分按钮', '0062e261bc65e27e0a968dac67e16a3c', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('6382abe1d7d3686909921161503de05f', NULL, '技术委员会-批量删除', 'e17f7aec26ca25d7464d023e8b6d7f84', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('63d0dbbae0bee0f0888295d6cc6ef9c3', NULL, '收藏法规清空', '63e999c65b1f2b1339119a00eb1d50cf', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('63e05705d0c8013162caa34f9fe52865', NULL, '车型类别清单', '08dbd417864b08426034ca56d1fa3d02', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('63e999c65b1f2b1339119a00eb1d50cf', NULL, '我的收藏', '32143ffasdf', NULL, 2, 1, '/collection', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('6557e9c4ce672af71be5807052da126b', NULL, '国内外政策', 'asdzcfgk', NULL, 2, 1, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('65ca2741907ba7a689c41f3d26684b4b', NULL, '其他清单清空', '5a75523729b04102a565167004d640e9', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('66ae947771821e3bd064c5594a14d145', NULL, '企标计划新增', 'b07296765085f06eb3c158147f3a7312', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('66fa37fc93e298b03d272fe17aeca6de', NULL, '事业部清空', '9b9aa2350f30082edf5e4f4c4bdacb03', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('670472f38fe27b192c7f7105847f38ce', NULL, '标准法规清单详情高级查询', 'ae06c279ac5e462a57a576c605420eec', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('670dd74a8469a6232a0762c69b575775', NULL, '标准法规清单详情查询', 'ae06c279ac5e462a57a576c605420eec', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('688151df30bbff4cd2ecdc436addfd3f', NULL, '其他清单查询', '5a75523729b04102a565167004d640e9', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('68bc53399a9e0daf1cc2f1bb2aa1d566', NULL, '企标计划查看', 'b07296765085f06eb3c158147f3a7312', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('68d17445a13ff3f635c39291070985c3', NULL, '监控流程-查询', 'e1eb3e91143c1cf356889e013e698672', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('68d78524c68c6c84c4578c13fb1ea069', NULL, '标准法规工作组', 'b64240325f0e01ec4a318ee0cfedd82e', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('69ebe6847ad7bf7e90bae8025080678c', NULL, '其他清单编辑', '5a75523729b04102a565167004d640e9', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('6a1c8575a6ed7da8d441767c7e8dd407', NULL, '国家地区清单详情查询', 'b736f2469d49b3214cc8087419a24b60', NULL, 5, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('6b449f378912df86bb15e4fc32da6435', NULL, '技术委员会-清空', 'e17f7aec26ca25d7464d023e8b6d7f84', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('6c51b9f4bb333aaf4895c98f8c2ea896', NULL, '查看页面批量复制按钮', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('6c697ab1dd54d0264e06e526506c4492', NULL, '查看页面属性', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('6dbbd2d6b808cc0f02b22c97e9d34c54', NULL, '企业标准Q/QCBFC带水印下载', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 18, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7238d3ca40d709ba6b089c9aaa560760', NULL, '项目清单清空', 'a1170d77f4332e5f45ce520e63b00e15', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('72a24657972d286b8b5d80735cf4eee2', NULL, '属性字典', 'adff323', NULL, 2, 1, '/standLawsAttrManage', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('730c9240a8f80bcdb88c71adb37f2aa7', NULL, '国内外标准法规-删除', 'ad3ef2b8b8487229e52a7fe93416c437', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7425c976dbdabe8ed92d12f9bb0f79ba', NULL, '查看页面导入按钮', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7455dc97eac2933341e18be659f07e89', NULL, '流程中心', '3fadf', NULL, 2, NULL, '/processCenter', 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('74725d0f8bf0df73bc9c297358803588', NULL, '删除', 'b22bdd0959e5a445fd90a9e0e7a8f607', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('74c437f9bfce7198144aa08e9a52950e', NULL, '企标计划删除', 'b07296765085f06eb3c158147f3a7312', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('74cffbebad841dbe2e0597792e5aba3f', NULL, '标准内容表格-删除', '3db80f62af9d96d6dfc6d429eea4b29b', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('758f8a7438a7bc49a29ecc240789b884', NULL, '岗位管理-查询', 'd2954be3abaaf2de3dc79add4c8ab8cd', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('760fadd76000c74ae30ee033b8993d16', NULL, '比对右侧清空', '36078b3c8e897f8c1b6d6974a612d0c7', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('764f630a49072d76a237dbcc9a1831e1', NULL, '国内标准目录新增', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('76742566e1cf930f384ef78cecb86f61', NULL, '企标复审计划按钮', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 13, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7751d25f72d0a6515e4110ae41837db8', NULL, '发起项目合规评估流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('779665b2e4bb20fc480cf9372a100f69', NULL, '岗位管理-配置角色', 'd2954be3abaaf2de3dc79add4c8ab8cd', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7845345e5fa2b0a93eb0e021bd3486f1', NULL, '发起外部标准化协会入会流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 16, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('784d26f527a659eefe84d5e5a53deb96', NULL, '企业标准导出', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 11, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('786a941b255a4fe4d13b7e67f100a4e5', NULL, '机构管理批量配置岗位', '983f16809318054be16dc447b566c8cb', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('79238a037746bd4bb42997a97e55609e', NULL, '工作组', '5a09164da97760846509c5c9dd86b80c', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7a53ef593e5401aab19485b937ce78a0', NULL, '发起企标制修订-技术标准流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7aaf236bdf6b1657c615380f7f34b8a8', NULL, '国家/地区清单-新增', 'b05b562950cb6d0aef539fad30b7386a', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7b526f036f2bac2fdee6f34dd976d865', NULL, '管理页-删除', '72a24657972d286b8b5d80735cf4eee2', NULL, 3, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7bf7951f769ee077e3ef5f6d6d0a0914', NULL, '比对左侧查询', '36078b3c8e897f8c1b6d6974a612d0c7', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7ce85b4b537f2a78db0c468beec5c08f', NULL, '进入链接', 'c8355290d8ece5202db506405c7df6fd', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7d79b9521e77c73857ee788e30670e8d', NULL, '技术评估结果-表格查看', 'e81f9857997cba2f5faa439201a13085', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7ec1c1789e26ac06f0c27ff02067b5ec', NULL, '拆分界面-查询按钮', '633d92e841ab4d49fb57b48b45fd0db8', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7f13a22a53f9f76f56f5193f9a04389d', NULL, '企业标准Q/QCBFC下载', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 16, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('7feeb73929c25a6f1fd67952704ec02b', NULL, '企业标准库', '9cdb9b40157dd967b664b9af462b960b', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8088f3612c206cb5ca5040091a08ac86', NULL, '政策工作组编辑按钮', 'c6cb01bda2a7fc031b434889a82495ee', NULL, 4, 2, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8158aefd62cda676a6baf179532328c6', NULL, '国内标准配置标准', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 10, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('824f3bf9edef83fc7488917136167232', NULL, '海外标准带水印下载', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 15, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8258ee44344e92365e7e5bd90f3c8d21', NULL, '标准预警清空', 'asfdew33', NULL, 2, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('83981863baa8716bdcc9e52a1fb1d2dc', NULL, '标准比对-批量删除', '1d83a6278f781419f628e9f5560f5c86', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('855d8db42fd3e50f3f092f81f8c2c895', NULL, '国家地区清单详情清空', 'b736f2469d49b3214cc8087419a24b60', NULL, 5, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('85b2b303cce28234fafa1f5ab12ba61d', NULL, '国内外政策-展示区域管理', 'efcbe65f90d3a23f0be5df5ad60d1dac', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('864854404dbd8cf413fb15c4b7a25e3e', NULL, '查看页面提交按钮', '17ba4598eb411d6feed468a2e446a301', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('87b8b4f5817a7829696e63185c744d52', NULL, '菜单管理', 'adff323', NULL, 2, 8, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('881cfa2f3c898e0954d90ee7d521ed70', NULL, '项目清单查看详情页', 'a1170d77f4332e5f45ce520e63b00e15', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8871ed1be74cf65851659514880bb50a', '', '海外标准导出', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 11, '', 0, '2021-07-12 11:22:50', '2021-07-12 11:22:50', ''); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('887ec926ad9a2b85395159db38885d96', NULL, '事业部查看', '9b9aa2350f30082edf5e4f4c4bdacb03', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('88ee8b7e529353511d47eb1e67fcd6a1', NULL, '海外标准目录删除', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8969811dc465528909628a3a13529023', NULL, '详情-新增按钮', '27e0f6cdfb3e2af446c36f9923e90d76', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8a9c87fe06244fb9d55e78fb281f625b', NULL, '合规评估', '2ewfwfa', NULL, 2, 9, '/standInvolveProject', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8d2e05ebce16d742a7f1fb895f0306b7', NULL, '海外标准目录编辑', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8dbef1803c841b8dadbed619d3cbf249', NULL, '历史数据清空', '5eba31766fdc0521461684d2d6bf66c4', NULL, 6, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8ddeee2d65ab6a223551771ff99869b7', NULL, '详情-搜索按钮', '27e0f6cdfb3e2af446c36f9923e90d76', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8e354f43e928886eee08817b71b3df65', NULL, '清空', '4219fdb5e33dbbc84d845af98c947e66', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8f65a365dd67634e29925098162ee8d5', NULL, '发起外部署名推荐审批流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 18, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('8fcdfb04dd4257f7ddc3372dd7d06056', NULL, '技术委员会-编辑', 'e17f7aec26ca25d7464d023e8b6d7f84', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('904b8b52d0c9d76e3622531d9d5a9f0e', NULL, '历史数据查询', '173e7a3ce7e9544578f63eaf11dd48de', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('90c7bae6308595f053c6f6f90167e493', NULL, '发起标准合规评估流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('91e02de33d955a8df791366636803570', NULL, '标准比对-搜索', '1d83a6278f781419f628e9f5560f5c86', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('93e75b6ec0b2b6b0b40d2b11adeba88a', NULL, '配置角色权限按钮', 'd73d0e230eafdb2ddefe1c97daf657ea', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('93ed4eeb1ad7c005e505a346d3997412', NULL, '工作组清空', '79238a037746bd4bb42997a97e55609e', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9557b51320a50728d7047448d01c57c6', NULL, '国内外标准法规-展示区域管理', 'ad3ef2b8b8487229e52a7fe93416c437', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('958e004c1ac4fe39564aa7547b8c0b6b', NULL, '查看页面审核按钮', '17ba4598eb411d6feed468a2e446a301', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('960a97045a6e47b0b8e33ebc347e5fd9', NULL, '关联条款', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 16, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('967c8b1402459951b5f75fcd1c548665', NULL, '国内标准查询', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('980cb239683de9e29ee5335cec98e5b4', NULL, '岗位管理-新增岗位', 'd2954be3abaaf2de3dc79add4c8ab8cd', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('982b2f92a26c3c91b6b868419f0e2d3b', NULL, '详情-删除按钮', '27e0f6cdfb3e2af446c36f9923e90d76', NULL, 4, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('983f16809318054be16dc447b566c8cb', NULL, '机构管理', '5a09164da97760846509c5c9dd86b80c', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9882f477aad895ec56a7464f3e9c0b11', NULL, '企业标准-下载', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 15, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9adff72ab464793564c5d1de20b45620', NULL, '发起标准入库流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9b68b46455c5af042d430e05e6579b27', NULL, '事业部历史数据', '9b9aa2350f30082edf5e4f4c4bdacb03', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9b718444ea1f163e8ccd492396cc9234', NULL, '国内标准拆分', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 14, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9b99ffc92c0100dab08b9fd0037e2b06', NULL, '政策工作组新增按钮', 'c6cb01bda2a7fc031b434889a82495ee', NULL, 4, 1, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9b9aa2350f30082edf5e4f4c4bdacb03', NULL, '事业部', 'e02897e9ab6b1a72f49c47c07b5be9a5', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9bab2662fbd9d0507b39be813371a597', NULL, '企业标准带水印下载', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 17, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9c8cc1b74b1caa16f34a47895b489833', NULL, '发起政策入库流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 21, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9ca2bd379b83d479110cb51bcb4502ed', NULL, '企业标准目录删除', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9caea8a46be62a0ae0600de35bad6539', NULL, '零部件编号申请删除按钮', 'ad9db496772c075f78495382b7581fe9', NULL, 3, 3, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9cdb9b40157dd967b664b9af462b960b', NULL, '属性配置', 'adff323', NULL, 2, 2, '/attributeCustom', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9cfce14dcb70220b1feb948f956b3e0e', NULL, '重点标准跟踪清单编辑', '418123d180abf67bd2c46d5a694baaa5', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('9d0783096e61390a54e0fea1eda461dc', NULL, '车型类别清单编辑', '63e05705d0c8013162caa34f9fe52865', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a0926c279e15ef0a3a2bc782f93d15fa', NULL, '收藏法规查询', '63e999c65b1f2b1339119a00eb1d50cf', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a1170d77f4332e5f45ce520e63b00e15', NULL, '项目清单', '08dbd417864b08426034ca56d1fa3d02', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a151f5e2ee44f8df81e201b8696fca31', NULL, '发起未符合项整改流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 9, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a26b92e156f68dbfe0d73b0dc068ebe4', NULL, '标准跟踪清单', 'asdzcfgk', NULL, 2, 2, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a3109949cc30dae1ef523c037b2651b8', NULL, '国内外政策目录新增', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a34dcbc3a44a297a6b6cc95e450b28ea', NULL, '导出Excel', 'asfdew33', NULL, 2, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a3803aae3f65134dee97c6b03680d4f9', NULL, '工作组编辑按钮', '68d78524c68c6c84c4578c13fb1ea069', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a772afab2a6708883335500f3f86e771', NULL, '海外标准附件下载', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 14, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('a87f58f50bed49452ee2a9147254b16b', NULL, '新增', 'c8355290d8ece5202db506405c7df6fd', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('aa4d6d0cc28d016f8241159c9e7d4c80', NULL, '标准涉及项目符合性清空', 'd64fe4a4d794921885a96c1daf5c3802', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('abba040e019fad5092624ffd71a70372', NULL, '国内外标准法规-编辑', 'ad3ef2b8b8487229e52a7fe93416c437', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('acc9bf3585de7dbf7282cc3cf4fb6337', NULL, '政策工作组查看政策按钮', 'c6cb01bda2a7fc031b434889a82495ee', NULL, 4, 6, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ad3ef2b8b8487229e52a7fe93416c437', NULL, '国内外标准法规', '9cdb9b40157dd967b664b9af462b960b', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ad9db496772c075f78495382b7581fe9', NULL, '零部件编号申请', '2ewfwfa', NULL, 2, 12, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('adbd27728903d2049ce9dc75467c4cc3', NULL, '测试 111', '64df1d5522bb49c09af2', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('adec3450d97917a4ffa803d40a46dba9', NULL, '其他清单删除', '5a75523729b04102a565167004d640e9', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('adff323', NULL, '配置管理', NULL, NULL, 1, 8, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ae06c279ac5e462a57a576c605420eec', NULL, '标准法规清单详情', '08dbd417864b08426034ca56d1fa3d02', NULL, 3, 6, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('af79900eebf9360eea4ed45f257dae0c', NULL, '历史数据清空', '173e7a3ce7e9544578f63eaf11dd48de', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('af875e070ca13ecb04455f35c0b9d80a', NULL, '详情-清空按钮', '27e0f6cdfb3e2af446c36f9923e90d76', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('afa3d1aee5fd8027b18675621afdeff6', NULL, '发起制修订计划管控流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 14, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('afdef0736eb111e9865e19fa3129d0ac', NULL, '国内标准目录编辑', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('aff4a409c3c3856986c535a5f4782b13', NULL, '事业部查询', '9b9aa2350f30082edf5e4f4c4bdacb03', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('afsd12', NULL, '本地工具', NULL, NULL, 1, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('asdfadf', NULL, '首页', NULL, NULL, 1, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('asdzcfgk', NULL, '政策法规库', NULL, NULL, 1, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('asfdew33', NULL, '标准预警', NULL, NULL, 1, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b05b562950cb6d0aef539fad30b7386a', NULL, '国家/地区清单', '08dbd417864b08426034ca56d1fa3d02', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b07296765085f06eb3c158147f3a7312', NULL, '企标计划', '2ewfwfa', NULL, 2, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b123231eb8c42b2a61e3dc5f59654f79', NULL, '国内外政策法规目录删除', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b137bf029b78a6a092661a062ae053e8', NULL, '查看人员按钮', 'd73d0e230eafdb2ddefe1c97daf657ea', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b1391e768988c363b177419e2ae16633', NULL, '工作组删除按钮', '68d78524c68c6c84c4578c13fb1ea069', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b17f1d035219c47344032e261342d87d', NULL, '国内标准导出', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 11, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b196ef0253cebd1adfc3a8432a28e377', NULL, '发起政策课题入会流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 24, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b1ac4fb12eeb08c525b018ef839dbd40', NULL, '项目清单查询', 'a1170d77f4332e5f45ce520e63b00e15', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b1c5fe2985a365d90d10607b47885749', NULL, '海外标准目录新增', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b22bdd0959e5a445fd90a9e0e7a8f607', NULL, '第二行链接', 'd3ff92078c53a4d9d1f1a94450fee91e', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b299fa5edb3f3f35badb2adb6bda9f2e', '', '海外标准删除', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 8, '', 0, '2021-07-12 11:22:50', '2021-07-12 11:22:50', ''); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b3aaea6d18f5871b68825d3783eb736a', NULL, '未符合项整改库查询', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b46217ac825d49933b0f7349ba924ea7', NULL, '项目清单详情页导出', 'a1170d77f4332e5f45ce520e63b00e15', NULL, 4, 6, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b53e6722b33a37c0fa2d87a9b06cca40', NULL, '新建流程', '3fadf', NULL, 2, 6, '/createProcessNew', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b5eb643881b814cadd477a1e414e568e', NULL, '查看页面合并条款按钮', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b64240325f0e01ec4a318ee0cfedd82e', NULL, '工作组', '2ewfwfa', NULL, 2, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b6b048e926ecc9334cad769d4be7c4ec', NULL, '标准比对-删除', '1d83a6278f781419f628e9f5560f5c86', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b736f2469d49b3214cc8087419a24b60', NULL, '国家地区清单-查看', 'b05b562950cb6d0aef539fad30b7386a', NULL, 4, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('b9abd00768c8ed97be89547c2da3f0eb', NULL, '已发流程', '3fadf', NULL, 2, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bb7386429dabf20b8006e03efacc0673', NULL, '征求意见清空', '2b25c67f10abbbadf37d60daaaec54d3', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bb9ca454af855bbefff426a0a0f8596a', NULL, '配置法规库数据权限按钮', 'd73d0e230eafdb2ddefe1c97daf657ea', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bbb957b5f37a59c82bd397bc038aefc8', NULL, '项目清单查看详情清空', '881cfa2f3c898e0954d90ee7d521ed70', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bcbd7dae607dd0594b2d4c9c3a861b4f', NULL, '其他清单详情-清空', '30bfbe928d7ee6e6bcef9408b762bc97', NULL, 5, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bcd9e2881cc174e5aef98bf0e54694e9', NULL, '未符合项整改库编辑', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bcf0d05723689ced8f49fae7794ff0db', NULL, '标准拆分查询按钮', '0062e261bc65e27e0a968dac67e16a3c', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bd291146ac1e42c48968c5142ae55375', NULL, '国内标准关联条款', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 18, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('bdc3bb8549669702642f86aa4323c568', NULL, '重点标准跟踪清单批量删除', '418123d180abf67bd2c46d5a694baaa5', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c06b789cb4d6fba4773b12ce0804c1c3', NULL, '企业标准目录编辑', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c083653097fb63aef0d9a424b0e7c88e', NULL, '产品规划部查看', '2d3ac826dda0e5f40fcda35301e0fefd', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c149ed69750916dce3e26c35c4728542', NULL, '发起企标制修订-产品标准流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 11, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c1bed997a716e13dabade0f4864cdbf7', NULL, '车型类别清单清空', '63e05705d0c8013162caa34f9fe52865', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c517df26b904cb8f69495f7f38f8f77b', NULL, '国内标准目录删除', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c5931f7d69d66aae5f45c9e88a137f5a', NULL, '重点标准跟踪清单删除', '418123d180abf67bd2c46d5a694baaa5', NULL, 4, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c5b873fcb659afb230db133e7e4706c8', NULL, '零部件编号申请清空按钮', 'ad9db496772c075f78495382b7581fe9', NULL, 3, 2, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c6a1f3e31357ae2e02ac643f50c40c1c', NULL, '产品规划部清空', '2d3ac826dda0e5f40fcda35301e0fefd', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c6cb01bda2a7fc031b434889a82495ee', NULL, '政策工作组', 'b64240325f0e01ec4a318ee0cfedd82e', NULL, 3, 2, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c6e2c982e42dcd15468dcd321e885518', NULL, '测试', 'adbd27728903d2049ce9dc75467c4cc3', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c7165a1baa667140f97e792971c89a71', NULL, '标准法规清单导出', 'ae06c279ac5e462a57a576c605420eec', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c75cda0786cd76094456082cf8e2d098', NULL, '工作组新增', '79238a037746bd4bb42997a97e55609e', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c77d866909a907aff3afa2b6d2ac2204', NULL, '比对左侧清空', '36078b3c8e897f8c1b6d6974a612d0c7', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c8355290d8ece5202db506405c7df6fd', NULL, '第一行链接', 'd3ff92078c53a4d9d1f1a94450fee91e', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c8605037fd040fd480b052d6e9dd8d13', NULL, '清空', 'eb1565c40ca7506f89655f79f7a1ca65', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c87d81feecb75a364f7969f8df8f8eb9', NULL, '展示区域-编辑', 'ee838a0ff0d332cac850fd553e81048d', NULL, 5, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c88bcafee6144c573a6820df9dde586d', NULL, '编辑', 'b22bdd0959e5a445fd90a9e0e7a8f607', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c9cb749aacefc52347f1250d0f98272a', NULL, '国内标准高级检索', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 8, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('cabf2a3ddd06136225a46bce777ac21c', NULL, '工作组编辑', '79238a037746bd4bb42997a97e55609e', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('cac1eb379eb8e3b987cbb2e4599adb50', NULL, '国内标准收藏', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 12, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('cc5d8f1a15726c62c5016e595246ec8b', NULL, '企标计划编辑', 'b07296765085f06eb3c158147f3a7312', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('cce80ba303858ee9943f17e93946c2ff', NULL, '海外标准高级检索', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('cd42491cd3cd8a1794a9349cdf8f3da3', NULL, '比对右侧查询', '36078b3c8e897f8c1b6d6974a612d0c7', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('cd639217443270d5c858fc593b439f79', NULL, '删除', 'c8355290d8ece5202db506405c7df6fd', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ce2d2b9bb8004e0d9efcabc42a9f354d', NULL, '配置岗位按钮', '983f16809318054be16dc447b566c8cb', NULL, 4, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ce8bfa18d70a122aa96b945a766cf290', NULL, '进入链接', 'b22bdd0959e5a445fd90a9e0e7a8f607', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('cfe3ce86cd64c5924c2e6d13e7f7ea31', NULL, '车型类别清单查看', '63e05705d0c8013162caa34f9fe52865', NULL, 4, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d1ed6ed77afa8395d2fd9ee6351bb78d', NULL, '展示区域-修改', '85b2b303cce28234fafa1f5ab12ba61d', NULL, 5, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d285ee99b52abcd63d863f6783e350f0', NULL, '机构管理查询', '983f16809318054be16dc447b566c8cb', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d2954be3abaaf2de3dc79add4c8ab8cd', NULL, '岗位管理', 'adff323', NULL, 2, 6, '/postManage', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d38fea2d0d992615f9e1c4dfb6dc76f3', NULL, '国内标准清空', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d3ff92078c53a4d9d1f1a94450fee91e', NULL, '链接管理', 'adff323', NULL, 2, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d451a3e980f0536386a09443f40af772', NULL, '企业标准查询', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d55e2eb884449f04ecdb30f0523d965d', NULL, '标准法规清单详情清空', 'ae06c279ac5e462a57a576c605420eec', NULL, 4, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d5a02a1e7a5bf9047e81a35bdc8d3a40', NULL, '标准/政策-导出上报意见', '2b25c67f10abbbadf37d60daaaec54d3', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d5b28957b5105c805e90a16fd5056a45', NULL, '国内标准附件下载', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 16, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d64fe4a4d794921885a96c1daf5c3802', NULL, '项目评估结果', '8a9c87fe06244fb9d55e78fb281f625b', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d73d0e230eafdb2ddefe1c97daf657ea', NULL, '角色管理', 'adff323', NULL, 2, 5, '/roleManage', 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d9698737e801822ab8f96dbcd47b7d62', NULL, '资料中心编辑', '32143ffassgabyabayg', NULL, 2, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('d9730d984627af948053df56a2db7997', NULL, '企业标准收藏', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 12, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('da3564b242a91d112e50336ec5433c2e', NULL, '其他清单详情-查询', '30bfbe928d7ee6e6bcef9408b762bc97', NULL, 5, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('db4ab168afb99c61d4f986c9746a7c65', NULL, '工作组查看按钮', '68d78524c68c6c84c4578c13fb1ea069', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('dbaf9df2990a595c8abea28e68b1a681', NULL, '国内标准删除', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('dc9c8efc60be6ba8b78b68bf949e2f6b', NULL, '已发流程-清空', 'b9abd00768c8ed97be89547c2da3f0eb', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('dcddb2abd19e51067fef994736057b8c', NULL, '展示区域-删除', '85b2b303cce28234fafa1f5ab12ba61d', NULL, 5, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('dd4ea796dab7a01b105ba657b1968a84', NULL, '企业标准编辑', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('dd74d2cb03c9f31074c5ea06c57c89cb', NULL, '历史数据查询', '9b68b46455c5af042d430e05e6579b27', NULL, 6, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('dd87f572b6c807b6982fa071fcbe0d41', NULL, '发起确认流程按钮', 'a1170d77f4332e5f45ce520e63b00e15', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('de85dfbf1ca4fff1f47d4908af13c284', NULL, '草稿-删除', 'fa19fb2dc2cf3055a64732dab6c40cb9', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('df57f63c9e993bbfb2a4b400d5257577', NULL, '国内外标准法规-新增', 'ad3ef2b8b8487229e52a7fe93416c437', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('df889d64e87c977e4bc9f9a0851d4c27', NULL, '详情-批量删除按钮', '27e0f6cdfb3e2af446c36f9923e90d76', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e02897e9ab6b1a72f49c47c07b5be9a5', NULL, '重点问题项管控', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 1, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e128da8f053dd19113e75772f2c70f29', NULL, '展示区域-新增', '9557b51320a50728d7047448d01c57c6', NULL, 5, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e17f7aec26ca25d7464d023e8b6d7f84', NULL, '技术委员会', '5a09164da97760846509c5c9dd86b80c', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e1be15b50bc9493f20c38ad678699422', NULL, '历史数据查询', '5eba31766fdc0521461684d2d6bf66c4', NULL, 6, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e1eb3e91143c1cf356889e013e698672', NULL, '监控流程', '3fadf', NULL, 2, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e214975dcab66d2e27bf2ed9897f521c', NULL, '标准拆分批量删除按钮', '0062e261bc65e27e0a968dac67e16a3c', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e4a94f03223df6f4ad70732b96f07221', NULL, '我的板块', '32143ffasdf', NULL, 2, 2, '/plate', 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e4aee670a804c8f26a2044c60800f835', NULL, '车型类别清单详情-查询', 'cfe3ce86cd64c5924c2e6d13e7f7ea31', NULL, 5, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e5217a4776525b1ba63511b730a2e02d', NULL, '发起加入标准化协会信息提报流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 20, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e7727b0018f886127174227cdbc58f28', NULL, '国内标准OCR', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, 13, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e81f9857997cba2f5faa439201a13085', NULL, '技术评估结果', '8a9c87fe06244fb9d55e78fb281f625b', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e8d690904ee1895dd0d17d9c794fbcd7', '', '海外标准编辑', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 7, '', 0, '2021-07-12 11:22:50', '2021-07-12 11:22:50', ''); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e99a7847d5d9d04d4423e8f69e77f080', NULL, '查看标准按钮', '68d78524c68c6c84c4578c13fb1ea069', NULL, 4, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('e9e80920563325fa7f6e91213ee98466', NULL, '资料中心目录新增', '32143ffassgabyabayg', NULL, 2, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('eb10d6461d5540bd1bc57107e44c1f7f', NULL, '管理页-新增', '72a24657972d286b8b5d80735cf4eee2', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('eb1565c40ca7506f89655f79f7a1ca65', NULL, '操作日志', 'adff323', NULL, 2, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('eb402ab8306d437c7d33e9e4b4e4341a', NULL, '项目评估结果清空', 'd64fe4a4d794921885a96c1daf5c3802', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ee684b4a9975f5d8a6dfe898c0332f98', NULL, '海外标准详情在线预览', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 13, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ee838a0ff0d332cac850fd553e81048d', NULL, '企业标准库-展示区域管理', '7feeb73929c25a6f1fd67952704ec02b', NULL, 4, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ef02a3b0af9a4b3ede460456a9591ebc', NULL, '国内外政策', '2ewfwfa', NULL, 2, 11, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ef2d8c0d8ab743e8b344c8a0f5c330cf', NULL, '搜索', 'eb1565c40ca7506f89655f79f7a1ca65', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('efcbe65f90d3a23f0be5df5ad60d1dac', NULL, '国内外政策', '9cdb9b40157dd967b664b9af462b960b', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f01a55435ba41dfe0a4bf99428b9e5c2', NULL, '发起重点认证标准/政策合规性项目审查流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 25, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f0ea68cb2c01cd0063ea639ee9bd4cec', NULL, '标准涉及项目符合性查询', 'd64fe4a4d794921885a96c1daf5c3802', NULL, 4, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f1a4b33a498e58a8a87c954ce5ce6ad6', NULL, '政策工作组', 'asdzcfgk', NULL, 2, 4, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f3686f4736acca57b1c0a97a990f96fc', NULL, '已收藏标准法规', '63e999c65b1f2b1339119a00eb1d50cf', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f3ea8cde1a7116aa7ba56ff33a19189f', NULL, '技术评估结果查询', 'e81f9857997cba2f5faa439201a13085', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f4eeb9ed48eac5686a456a5582508d9c', NULL, '发起标准调研流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f53a4a4776dbee07e38f5db04c5a7d81', NULL, '查看页面删除按钮', '17ba4598eb411d6feed468a2e446a301', NULL, 4, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f56e5f765a93c14cba88f8c3270388c6', NULL, '标准内容-上传', '3db80f62af9d96d6dfc6d429eea4b29b', NULL, 3, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f5cb0b1223bff16bf398bcabae7e198b', NULL, '项目清单查看详情高级查询', '881cfa2f3c898e0954d90ee7d521ed70', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f5ffaf2df95f03970c4846ba4b703730', NULL, '车型类别清单详情-导出', 'cfe3ce86cd64c5924c2e6d13e7f7ea31', NULL, 5, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f7104578c86803cce79a00f05f79709f', NULL, '项目清单查看详情查询', '881cfa2f3c898e0954d90ee7d521ed70', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f73bebf2787676d94faf54e923960dc7', NULL, '配置法规库树结构权限按钮', 'd73d0e230eafdb2ddefe1c97daf657ea', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('f9745194958bc9ed3ee5127459795dbc', '', '海外标准收藏', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, 12, '', 0, '2021-07-12 11:22:50', '2021-07-12 11:22:50', ''); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fa0846d977aeef07e9cb7faf648f8f7f', NULL, '岗位管理-编辑岗位', 'd2954be3abaaf2de3dc79add4c8ab8cd', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fa19fb2dc2cf3055a64732dab6c40cb9', NULL, '草稿', '3fadf', NULL, 2, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fa21906587bacdcaf0a72f995db4e40d', NULL, '国内外政策-新增', 'efcbe65f90d3a23f0be5df5ad60d1dac', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fc25b770ad3752cdec52f3bd7b35a6a1', NULL, '发起标准征求意见流程', 'b53e6722b33a37c0fa2d87a9b06cca40', NULL, 3, 3, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fc2b045e1fe8a5e14feab48d3138df53', NULL, '收藏法规取消收藏', '63e999c65b1f2b1339119a00eb1d50cf', NULL, 3, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fc37681cb98f8122d8969c91b8ee1c94', NULL, '技术委员会-查询', 'e17f7aec26ca25d7464d023e8b6d7f84', NULL, 4, 1, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fc429d36f2d117f13f079aab59c28338', NULL, '政策工作组新增政策按钮', 'c6cb01bda2a7fc031b434889a82495ee', NULL, 4, 5, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbd', NULL, '国内外政策移除政策', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 10, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbf', NULL, '国内外政策配置政策', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 11, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbg', NULL, '国内外政策在线预览', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 13, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbh', NULL, '国内外政策清空', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 5, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbi', NULL, '国内外政策高级检索', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbj', NULL, '国内外政策导出', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 9, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbk', NULL, '国内外政策删除', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 8, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbl', NULL, '国内外政策查询', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 4, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbo', NULL, '国内外政策收藏', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 12, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbq', NULL, '国内外政策相关流程', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 14, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fd83032ae5f41a0021b00e93c88edbbr', NULL, '国内外政策编辑', 'ef02a3b0af9a4b3ede460456a9591ebc', NULL, 3, 7, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fda571f37b0dc0738856799e3287990e', NULL, '标准比对-清空', '1d83a6278f781419f628e9f5560f5c86', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('fde586188a364382cf67a0efa62a586c', NULL, '事业部批量关闭', '9b9aa2350f30082edf5e4f4c4bdacb03', NULL, 5, NULL, NULL, 1, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ff411226afb759fd2f4a2798ceac322a', NULL, '国家/地区清单-删除', 'b05b562950cb6d0aef539fad30b7386a', NULL, 4, 6, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('ff7bc984c8115204bba04090f350b19c', NULL, '未符合项整改库模块', '0119abd677e0204e061eb0f0b8cafda0', NULL, 3, 2, NULL, 0, NULL, NULL, NULL); diff --git a/doc/sql/20220921-用户组织机构查询优化.sql b/doc/sql/20220921-用户组织机构查询优化.sql new file mode 100644 index 00000000..aa9033fe --- /dev/null +++ b/doc/sql/20220921-用户组织机构查询优化.sql @@ -0,0 +1 @@ +ALTER TABLE `ts_user` ADD COLUMN `SYS_POSITION_IDS` varchar(2000) NULL COMMENT '设置的岗位ID集合' AFTER `SSO_ID`; \ No newline at end of file diff --git a/doc/sql/20220930_定时任务添加IP地址.sql b/doc/sql/20220930_定时任务添加IP地址.sql new file mode 100644 index 00000000..182e0a22 --- /dev/null +++ b/doc/sql/20220930_定时任务添加IP地址.sql @@ -0,0 +1,2 @@ +ALTER TABLE tb_task +ADD COLUMN ip varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'ip地址' AFTER `create_time`; \ No newline at end of file diff --git a/doc/sql/20221009_添加移动标准按钮.sql b/doc/sql/20221009_添加移动标准按钮.sql new file mode 100644 index 00000000..debffe54 --- /dev/null +++ b/doc/sql/20221009_添加移动标准按钮.sql @@ -0,0 +1,3 @@ +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('56b2eec13fe5b53916b8e2b9dacc6554', NULL, '国内标准移动标准', '3e3657498664beaa0dc1de1ecb3ae0da', NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('c596ecef95f5177ecde662acfc9dee02', NULL, '海外标准移动标准', '18c1e5134ea0cf865e8960b26b81fd8c', NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `foton_slrs`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('6d0daae8471f16d635bec1529801670a', NULL, '企业标准移动标准', '01ed8f752748227777b3572d56ee9ab5', NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL); diff --git a/doc/sql/20221010-补充表结构.sql b/doc/sql/20221010-补充表结构.sql new file mode 100644 index 00000000..aceecb54 --- /dev/null +++ b/doc/sql/20221010-补充表结构.sql @@ -0,0 +1,15 @@ +CREATE TABLE `sar_buss_stand_sn` ( + `ID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', + `REVISE_STATUS` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '计划库制定状态 0 默认 buss1_1 技术标准 制定 buss2_1 产品标准 制定 ', + `STAND_SN` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企标顺序号', + `STAND_SORT` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企标类别', + `USE_STATUS` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'yes' COMMENT '企标编号使用状态 yes 已使用 no 未使用', + `VALID_FLAG` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '是否有效', + `MODIFY_TIME` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `CREATION_TIME` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `TASK_ID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`ID`) USING BTREE, + INDEX `ID_index`(`ID`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '企业标准信息表-顺序号表' ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/doc/sql/20221013_企标计划新增字段.sql b/doc/sql/20221013_企标计划新增字段.sql new file mode 100644 index 00000000..c6afb444 --- /dev/null +++ b/doc/sql/20221013_企标计划新增字段.sql @@ -0,0 +1,3 @@ +ALTER TABLE `es_revise_plan` +ADD COLUMN `stand_id` varchar(255) NULL AFTER `LXD`; +ADD COLUMN `actual_time` datetime NULL AFTER `stand_id`; diff --git a/doc/sql/20221013_企标计划更新日志.sql b/doc/sql/20221013_企标计划更新日志.sql new file mode 100644 index 00000000..bde3057b --- /dev/null +++ b/doc/sql/20221013_企标计划更新日志.sql @@ -0,0 +1,7 @@ +CREATE TABLE `es_revise_plan_log` ( +`id` varchar(250) NOT NULL , +`plan_id` varchar(250) NULL , +`content` longtext NULL , +`create_time` datetime NULL , +PRIMARY KEY (`id`) +); diff --git a/doc/sql/VPPS数据-220127版本.sql b/doc/sql/VPPS数据-220127版本.sql new file mode 100644 index 00000000..b81f04d0 --- /dev/null +++ b/doc/sql/VPPS数据-220127版本.sql @@ -0,0 +1,9428 @@ +/* + Navicat Premium Data Transfer + + Source Server : 39.100.23.127 + Source Server Type : MySQL + Source Server Version : 50734 + Source Host : 39.100.23.127:3306 + Source Schema : foton_slrs_test + + Target Server Type : MySQL + Target Server Version : 50734 + File Encoding : 65001 + + Date: 27/01/2022 20:47:28 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +TRUNCATE sar_vpps_tree; + +-- ---------------------------- +-- Records of sar_vpps_tree +-- ---------------------------- +INSERT INTO `sar_vpps_tree` VALUES ('00897D04AC0B4E4EB2A', '20.03.03.06.16', '', '16', '后排座椅骨架总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('00AF8355D22C4215AC7', '60.06.01.03.03.01', '', '01', 'CMU60SA上壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('029D758D0ACA43C7B81', '20.01.02.11', '', '11', '倒车灯总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('02ACA6FB7E5C4C79B7B', '60.06.01.01.14.13', '', '13', '电芯连接排', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('034E4D1745E64E29B29', '30.06.07.02', '', '02', '连接板', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('037812FEB5D946C5822', '30.05.05.19', '', '19', '前桥模块', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0527361AAE834A2ABA1', '60.06.01.05.13', '', '13', '骑马螺栓垫块', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('055EA4B8F4EA4E93990', '30.04.01.28', '', '28', '后桥转向装置图', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0564D9D36E01493A8AB', '20.04.01.01.07', '', '07', '右前门B柱副密封条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('0767F9750F3C47ABA23', '20.04.01.01.33', '', '33', '左前门防虫网', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('07E57832DF9D40FB857', '60.06.01.01.14.04', '', '04', '汇流排托板', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('097B1FB590DB4BB1BEF', '50.01.01.08.01', '', '01', '气弹簧本体', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('0A17B5924E4D4CD895E', '60.06.01.01.14.10.02', '', '02', '模组扎带-23S', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0A62B70F6BD54E5DBD3', '60.06.01.05.03', '', '03', '电池支架横梁', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0B0EA25B6BD54696AD2', '10.03.01.37', '', '37', '管夹', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0B352C4931654E64879', '60.06.01.05.09', '', '09', '控制盒支架', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0C011E04495641E19F5', '20.03.03.02.22', '', '22', '乘客座靠背发泡面套总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0C0B494D67C34676ADC', '20.04.04.01.01.01.02.04', '', '04', '前舱盖右铰链加强板组件', '', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0C77C07B5A614196BB7', '60.06.01.03.04.01', '', '01', 'CMU48SB上壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0C814A93E65F478BB23', '20.03.03.01.18', '', '18', '座垫发泡面套总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0E9E1ED6D90A4A889F0', '10.03.01.30.02', '', '02', '组合垫', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0ED28F23E8B6462AA73', '10.03.01.29', '', '29', '液压油回油滤清器总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('0EED96B7862B43F2BE4', '30.01.01.05', '', '05', '纵梁中段总成-右', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('0F52E3173A884B22BAE', '10.03.01.26.10', '', '10', '减震块', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1', 'Truck', NULL, 'ck', '卡车类', '', '1', NULL, '0', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('10', '10.01.01.06', NULL, '06', '传感器', 'Sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('100', '10.03.01.02', NULL, '02', '燃油箱盖总成', 'Fuel tank cover assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1000', '20.01.10.05', NULL, '05', '防飞溅', 'Anti-splash', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1001', '20.01.10.05.01', NULL, '01', '防溅总成', 'Left upper anti spatter', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1002', '20.01.10.05.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1003', '20.01.10.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1004', '20.01.10.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1005', '20.01.11', NULL, '11', '车身脚踏板', 'Body pedal', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1006', '20.01.11.01', NULL, '01', '脚踏板支架', 'Pedal bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1007', '20.01.11.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1008', '20.01.11.02', NULL, '02', '脚踏板总成', 'Pedal assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1009', '20.01.11.02.01', NULL, '01', '护罩', 'Protection cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('101', '10.03.01.02.02', NULL, '02', '燃油箱锁总成', 'Fuel tank lock assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1010', '20.01.11.02.02', NULL, '02', '装饰板', 'Trim panel', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1011', '20.01.11.02.03', NULL, '03', '脚踏板', 'Pedal', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1012', '20.01.11.02.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1013', '20.01.11.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1014', '20.01.11.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1015', '20.01.11.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1016', '20.01.12', NULL, '12', '顶外饰件', 'Top exterior trim parts', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1017', '20.01.12.01', NULL, '01', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1018', '20.01.12.02', NULL, '02', '遮阳罩', 'Sunshade', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1019', '20.01.12.02.01', NULL, '01', '堵盖', 'Plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('102', '10.03.01.03', NULL, '03', '燃油泵总成', 'Power fuel pump assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1020', '20.01.12.02.02', NULL, '02', '胶套', 'Rubber sleeve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1021', '20.01.12.02.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1022', '20.01.12.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1023', '20.01.12.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1024', '20.01.12.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1025', '20.01.13', NULL, '13', '后视镜', 'Rearview mirror', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1026', '20.01.13.01', NULL, '01', '后视镜总成', 'R. view mirror assy.', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1027', '20.01.13.01.01', NULL, '01', '后视镜主体', 'R.view mirror main body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1028', '20.01.13.01.01.01', NULL, '01', '镜头', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1029', '20.01.13.01.01.02', NULL, '02', '镜杆', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('103', '10.03.01.03.01', NULL, '01', '燃油泵', 'Power fuel pump assemblyPower-driven fuel pump', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1030', '20.01.13.01.02', NULL, '02', '装饰罩', 'R.view mirror holder trim cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1031', '20.01.13.02', NULL, '02', '侧下视镜总成', 'Side-lower mirror assy.', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1032', '20.01.13.03', NULL, '03', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1033', '20.01.13.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1034', '20.01.13.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1035', '20.01.14', NULL, '14', '其他外饰附件', 'Accessories for other exterior trim parts', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1036', '20.01.14.01', NULL, '01', '反光标识', 'Reflect light logo', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1037', '20.01.14.02', NULL, '02', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1038', '20.01.14.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1039', '20.02', NULL, '02', '车身内饰系统', 'Body interior system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('104', '10.03.01.03.02', NULL, '02', '传感器及支架', 'Oil-water separator assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1040', '20.02.01', NULL, '01', '地板装饰件', 'Floor trim parts', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1041', '20.02.01.01', NULL, '01', '地毯总成', 'Carpet assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1042', '20.02.01.02', NULL, '02', '压条', 'Trim strip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1043', '20.02.01.03', NULL, '03', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1044', '20.02.01.06', NULL, '06', '暖瓶座', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1045', '20.02.01.07', NULL, '07', '歇脚板', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1046', '20.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1047', '20.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1048', '20.02.02', NULL, '02', '隔音隔热减振密封装置', 'Sound/heat insulation vibration reduction seal device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1049', '20.02.02.01', NULL, '01', '发动机上隔热垫', 'Heat insulation pad', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('105', '10.03.01.04', NULL, '04', '油管总成', 'Oil filling pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1050', '20.02.02.02', NULL, '02', '隔音垫', 'Center channel left sound insulation plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1051', '20.02.02.03', NULL, '03', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1052', '20.02.02.04', NULL, '04', '孔贴', 'Hole sticker', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1053', '20.02.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1054', '20.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1055', '20.02.03', NULL, '03', '侧围内饰', 'Interior trim parts for front/rear wall', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1056', '20.02.03.01', NULL, '01', 'A柱护板', 'Left Acolumn shield', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1057', '20.02.03.02', NULL, '02', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1058', '20.02.03.03', NULL, '03', '扶手', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1059', '20.02.03.04', NULL, '04', '侧围护板总成', 'Left side wall shield', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('106', '10.03.01.04.01', NULL, '01', '软垫', 'Cushion', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1060', '20.02.03.04.01', NULL, '01', '侧围护板本体', 'Left side wall shield', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1061', '20.02.03.04.02', NULL, '02', '侧围储物盒总成', 'Left side wall storage box', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1062', '20.02.03.04.03', NULL, '03', '侧围文件栏', 'Side wall documents column', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1063', '20.02.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1064', '20.02.03.05', NULL, '05', '下卧铺灯总成', 'Lower berth lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1065', '20.02.03.06', NULL, '06', '储物盒', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1066', '20.02.03.07', NULL, '07', '枪托卡子总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1067', '20.02.03.08', NULL, '08', '枪托底座总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1068', '20.02.03.09', NULL, '09', '传感器底座及护罩', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1069', '20.02.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('107', '10.03.01.04.02', NULL, '02', '卡簧', 'Snap spring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1070', '20.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('10703C4A5F144DBA841', '10.03.01.26.11', '', '11', '液位计', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1071', '20.02.04', NULL, '04', '前后围内饰件', 'Inner trim parts for side wall', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1072', '20.02.04.01', NULL, '01', '后围内护板总成', 'Rear wall inner guard plate assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1073', '20.02.04.01.01', NULL, '01', '后围内护板', 'Rear wall trim panel', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1074', '20.02.04.01.02', NULL, '02', '通风口', 'Air vent', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1075', '20.02.04.02', NULL, '02', '后围风罩', 'rear wall left air deflector', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1076', '20.02.04.03', NULL, '03', '后窗帘及导轨总成', 'Rear window curtain assembly and Rear curtain guide rail', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1077', '20.02.04.04', NULL, '04', '逆变器护罩', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1078', '20.02.04.05', NULL, '05', '密封条', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1079', '20.02.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('108', '10.03.01.04.03', NULL, '03', '供油管', 'Steel filler pipe for fuel filler', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1080', '20.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1081', '20.02.05', NULL, '05', '顶盖内饰', 'Inner trim parts for roof', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1082', '20.02.05.01', NULL, '01', '室内灯总成', 'Interior lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1083', '20.02.05.03', NULL, '03', '顶棚总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1084', '20.02.05.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1085', '20.02.05.05', NULL, '05', '扶手', 'Upper berth handrail', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1086', '20.02.05.06', NULL, '06', '压条', 'Trim strip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1087', '20.02.05.07', NULL, '07', '导轨', 'Guide rail', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1088', '20.02.05.08', NULL, '08', '窗帘总成', 'Side window curtain assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1089', '20.02.05.08.01', NULL, '01', '挂钩', 'Hook', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('109', '10.03.01.04.04', NULL, '04', '排气管', 'Exhaust pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1090', '20.02.05.08.02', NULL, '02', '帘布', 'Cord Fabric', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1091', '20.02.05.09', NULL, '09', '手动天窗总成', 'Manual roof assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1092', '20.02.05.10', NULL, '10', '手动天窗护框总成', 'Manual roof lath crib', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1093', '20.02.05.10.01', NULL, '01', '手动天窗内框总成', 'Manual roof inside casing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1094', '20.02.05.10.02', NULL, '02', '天窗外框', 'Roof outside casing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1095', '20.02.05.10.03', NULL, '03', '纱窗总成', 'Screen window assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1096', '20.02.05.10.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1097', '20.02.05.11', NULL, '11', '天窗水管', 'Roof water drain pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1098', '20.02.05.12', NULL, '12', '粘线卡', 'Cable clip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1099', '20.02.05.13', NULL, '13', '窗帘扎带', 'Cord Ribbon', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('10B0F3236AB14377A02', '20.04.04.01.01.09', '', '09', '前舱盖撑杆固定座', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('11', '10.01.01.07', NULL, '07', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('110', '10.03.01.04.05', NULL, '05', '供油软管', 'Fuel filler hose', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1100', '20.02.05.14', NULL, '14', '电动滑动天窗总成', 'Sliding roof assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1101', '20.02.05.15', NULL, '15', '电动天窗护框总成', 'Power roof lath crib', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1102', '20.02.05.16', NULL, '16', '边梁', 'beam', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1103', '20.02.05.17', NULL, '17', '装饰板', 'decorative panel', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1104', '20.02.05.18', NULL, '18', '遮阳板总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1105', '20.02.05.19', NULL, '19', '遮阳帘总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1106', '20.02.05.20', NULL, '20', '电动遮阳帘总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1107', '20.02.05.21', NULL, '21', '眼镜盒', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1108', '20.02.05.22', NULL, '22', '杂物盒', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1109', '20.02.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('111', '10.03.01.04.06', NULL, '06', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1110', '20.02.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1111', '20.02.06', NULL, '06', '顶层文件柜', 'Top document cabinet', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1112', '20.02.06.01', NULL, '01', '顶置文件柜总成', 'Top document cabinet assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1113', '20.02.06.01.01', NULL, '01', '顶柜底板总成', 'Top tank base plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1114', '20.02.06.01.01.01', NULL, '01', '底板焊接总成', 'Base plate weldmentment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1115', '20.02.06.01.01.01.01', NULL, '01', '底板外板', 'Base plate outer plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1116', '20.02.06.01.01.01.02', NULL, '02', '底板内板', 'Base plate inner plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1117', '20.02.06.01.01.01.03', NULL, '03', '底板加强板', 'Base plate left reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1118', '20.02.06.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1119', '20.02.06.01.02', NULL, '02', '挡板', 'Baffle plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('112', '10.03.01.04.07', NULL, '07', '隔热护套', 'Heat insulation sleeve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1120', '20.02.06.01.03', NULL, '03', '顶柜立柱', 'Top tank stand column', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1121', '20.02.06.01.04', NULL, '04', '储物盒', 'Center lower storage box', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1122', '20.02.06.01.05', NULL, '05', '毛毡', 'Felt', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1123', '20.02.06.01.06', NULL, '06', '喇叭座总成', 'Left horn surface cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1124', '20.02.06.01.06.01', NULL, '01', '喇叭座', 'Left horn surface cover', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1125', '20.02.06.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1126', '20.02.06.01.07', NULL, '07', '顶柜电器面板总成', 'Top cabinet electrical panel assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1127', '20.02.06.01.07.01', NULL, '01', '顶柜电器面板', 'Top cabinet electrical panel', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1128', '20.02.06.01.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1129', '20.02.06.01.08', NULL, '08', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('113', '10.03.01.04.08', NULL, '08', '水加热油管总成', 'Water heating tubing assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1130', '20.02.06.01.09', NULL, '09', '文件柜连接横梁总成', 'Document cabinet connecting cross member assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1131', '20.02.06.01.10', NULL, '10', '文件柜总成', 'Left document cabinet assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1132', '20.02.06.01.10.01', NULL, '01', '文件柜本体', 'Left document cabinet body', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1133', '20.02.06.01.10.02', NULL, '02', '顶柜照明灯总成', 'Top cabinet headlamp assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1134', '20.02.06.01.10.03', NULL, '03', '文件柜铰链限位器', 'Document cabinet hinge limiter', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1135', '20.02.06.01.10.04', NULL, '04', '柜灯线束固定座', 'Cabinet lamp wiring fixing seat', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1136', '20.02.06.01.10.05', NULL, '05', '堵盖', 'Plug', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1137', '20.02.06.01.10.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1138', '20.02.06.01.11', NULL, '11', '文件柜支架压片', 'Document cabinet support pressure plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1139', '20.02.06.01.12', NULL, '12', '缓冲销', 'Cushion pin', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('114', '10.03.01.04.09', NULL, '09', '油箱连通管', 'Oil tank connecting pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1140', '20.02.06.01.13', NULL, '13', '文件柜侧加强板', 'Document cabinet side reinforced plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1141', '20.02.06.01.14', NULL, '14', '角板', 'Angle plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1142', '20.02.06.01.15', NULL, '15', '立柱饰框总成', 'Left columns trim frame assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1143', '20.02.06.01.15.01', NULL, '01', '左立柱饰框', 'Left columns trim frame', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1144', '20.02.06.01.15.02', NULL, '02', '金属卡子', 'Metal clip', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1145', '20.02.06.01.16', NULL, '16', '文件柜门板总成', 'Center document cabinet door plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1146', '20.02.06.01.16.01', NULL, '01', '侧柜门焊接总成', 'Side cabinet doors weldmentment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1147', '20.02.06.01.16.01.01', NULL, '01', '侧柜门外板', 'Side cabinet doors outer plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1148', '20.02.06.01.16.01.02', NULL, '02', '侧柜门内板', 'Side cabinet doors inner plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1149', '20.02.06.01.16.02', NULL, '02', '文件柜锁总成', 'Document cabinet lock assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('115', '10.03.01.04.10', NULL, '10', '水管-三通至水阀', 'Water pipe - joint to water valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1150', '20.02.06.01.16.03', NULL, '03', '文件柜铰链总成', 'Document cabinet hinge assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1151', '20.02.06.01.16.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1152', '20.02.06.01.17', NULL, '17', '喇叭面罩', 'Left horn surface cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1153', '20.02.06.01.18', NULL, '18', '顶柜本体', 'Top tank body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1154', '20.02.06.01.19', NULL, '19', '顶柜后围板', 'Top tank after of燾oaming', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1155', '20.02.06.01.20', NULL, '20', '顶柜中部面板', 'Top tank燾entral panel', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1156', '20.02.06.01.21', NULL, '21', '顶柜装饰堵板', 'Top tank decorative panel', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1157', '20.02.06.01.22', NULL, '22', '顶柜推拉门', 'Top tank sliding door', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1158', '20.02.06.01.23', NULL, '23', '柜门扣手', 'Top tank燿oor clasp hands', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1159', '20.02.06.02', NULL, '02', '顶柜杂物盒总成', 'Top cabinet sundries box assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('116', '10.03.01.04.11', NULL, '11', '水管-水阀至油箱', 'Water pipe - water valve to fuel tank', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1160', '20.02.06.02.01', NULL, '01', '杂物盒', 'Sundries box', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1161', '20.02.06.02.02', NULL, '02', '杂物盒挡板', 'Left sundries box baffle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1162', '20.02.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1163', '20.02.06.03', NULL, '03', '扶手', 'Roof handle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1164', '20.02.06.04', NULL, '04', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1165', '20.02.06.05', NULL, '05', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1166', '20.02.06.09', NULL, '09', '顶柜横梁', 'Top tank reinforced beam', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1167', '20.02.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1168', '20.02.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1169', '20.02.07', NULL, '07', '室内灯及内视镜', 'Interior lamp and interior mirror', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('117', '10.03.01.04.12', NULL, '12', '回水管', 'Backwater pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1170', '20.02.07.01', NULL, '01', '内视镜总成', 'Inner view mirror assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1171', '20.02.07.02', NULL, '02', '室内灯总成', 'Interior lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1172', '20.02.07.02.01', NULL, '01', '室内灯', 'Interior lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1173', '20.02.07.02.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1174', '20.02.07.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1175', '20.02.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1176', '20.02.08', NULL, '08', '灭火器', 'Fire extinguisher', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1177', '20.02.08.01', NULL, '01', '灭火器总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1178', '20.02.08.02', NULL, '02', '灭火器支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1179', '20.03', NULL, '03', '座舱系统', 'Cab system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('118', '10.03.01.04.13', NULL, '13', '取水管', 'Water intake pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1180', '20.03.01', NULL, '01', '仪表板', 'Instrument panel', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1181', '20.03.01.01', NULL, '01', '仪表板总成', 'Instrument panel assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1182', '20.03.01.01.01', NULL, '01', '仪表板本体', 'Instrument panel body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1183', '20.03.01.01.02', NULL, '02', '护板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1184', '20.03.01.01.03', NULL, '03', '面板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1185', '20.03.01.01.04', NULL, '04', '盖板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1186', '20.03.01.01.05', NULL, '05', '吹面风道', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1187', '20.03.01.01.06', NULL, '06', '除霜风道', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1188', '20.03.01.01.07', NULL, '07', '出风口', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1189', '20.03.01.01.08', NULL, '08', '除霜风口', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('119', '10.03.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1190', '20.03.01.01.09', NULL, '09', '仪表罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1191', '20.03.01.01.10', NULL, '10', '装饰板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1192', '20.03.01.01.11', NULL, '11', '装饰条', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1193', '20.03.01.01.12', NULL, '12', '手套箱', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1194', '20.03.01.01.13', NULL, '13', '杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1195', '20.03.01.01.14', NULL, '14', '烟灰缸', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1196', '20.03.01.01.15', NULL, '15', '杯托', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1197', '20.03.01.01.16', NULL, '16', '卡槽', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1198', '20.03.01.01.17', NULL, '17', '抽屉', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1199', '20.03.01.01.18', NULL, '18', '桌板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('12', '10.01.01.08', NULL, '08', '防水布', 'Waterproof', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('120', '10.03.01.05', NULL, '05', '燃油箱紧固带总成', 'Fuel tank fastening belt assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1200', '20.03.01.01.19', NULL, '19', '踏板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1201', '20.03.01.01.20', NULL, '20', '扶手', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1202', '20.03.01.01.21', NULL, '21', '氛围灯', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1203', '20.03.01.01.22', NULL, '22', '照明灯', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1204', '20.03.01.01.23', NULL, '23', '堵盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1205', '20.03.01.01.24', NULL, '24', '软垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1206', '20.03.01.01.25', NULL, '25', '隔音件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1207', '20.03.01.01.26', NULL, '26', '隔热件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1208', '20.03.01.01.27', NULL, '27', '减震件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1209', '20.03.01.01.28', NULL, '28', '密封件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('121', '10.03.01.05.01', NULL, '01', '燃油箱紧固带', 'Fuel tank fastening belt', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1210', '20.03.01.01.29', NULL, '29', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1211', '20.03.01.01.30', NULL, '30', '手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1212', '20.03.01.01.31', NULL, '31', '笔架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1213', '20.03.01.01.32', NULL, '32', '挂钩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1214', '20.03.01.01.33', NULL, '33', '副气囊托架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1215', '20.03.01.01.34', NULL, '34', '护套', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1216', '20.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1217', '20.03.01.02', NULL, '02', '副仪表板总成', 'Co-instrument panel assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1218', '20.03.01.02.01', NULL, '01', '副仪表板本体', 'Co-instrument panel body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1219', '20.03.01.02.02', NULL, '02', '盖板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('122', '10.03.01.05.02', NULL, '02', '轴套', 'Shaft sleeve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1220', '20.03.01.02.03', NULL, '03', '装饰条', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1221', '20.03.01.02.04', NULL, '04', '吹面风道', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1222', '20.03.01.02.05', NULL, '05', '杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1223', '20.03.01.02.06', NULL, '06', '烟灰缸', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1224', '20.03.01.02.07', NULL, '07', '杯托', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1225', '20.03.01.02.08', NULL, '08', '扶手箱', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1226', '20.03.01.02.09', NULL, '09', '扶手', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1227', '20.03.01.02.10', NULL, '10', '卡槽', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1228', '20.03.01.02.11', NULL, '11', '堵盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1229', '20.03.01.02.12', NULL, '12', '软垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('122C94986D1D4C86B99', '30.06.07.04', '', '04', '紧固件', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('123', '10.03.01.05.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1230', '20.03.01.02.13', NULL, '13', '隔音件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1231', '20.03.01.02.14', NULL, '14', '隔热件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1232', '20.03.01.02.15', NULL, '15', '减震件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1233', '20.03.01.02.16', NULL, '16', '密封件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1234', '20.03.01.02.17', NULL, '17', '手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1235', '20.03.01.02.18', NULL, '18', '护套', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1236', '20.03.01.02.19', NULL, '19', '氛围灯', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1237', '20.03.01.02.20', NULL, '20', '照明灯', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1238', '20.03.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1239', '20.03.01.03', NULL, '03', '管梁及支架', 'Beam and Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('124', '10.03.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1240', '20.03.01.03.01', NULL, '01', '管梁焊接总成', 'Instrument panel beam', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1241', '20.03.01.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1242', '20.03.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1243', '20.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1244', '20.03.02', NULL, '02', '卧铺装置', 'Berth device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1245', '20.03.02.00', NULL, '00', '安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1246', '20.03.02.00.01', NULL, '01', '卧铺安装图', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1247', '20.03.02.00.02', NULL, '02', '卧铺储物箱安装图', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1248', '20.03.02.01', NULL, '01', '上卧铺', 'Upper berth', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1249', '20.03.02.01.01', NULL, '01', '上卧铺总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('125', '10.03.01.06', NULL, '06', '隔热板', 'Insulation against heat plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1250', '20.03.02.01.02', NULL, '02', '上卧铺垫总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1251', '20.03.02.01.03', NULL, '03', '上卧铺板总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1252', '20.03.02.01.04', NULL, '04', '上卧铺护网', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1253', '20.03.02.01.05', NULL, '05', '上卧铺护栏', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1254', '20.03.02.01.06', NULL, '06', '上卧铺挂带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1255', '20.03.02.01.07', NULL, '07', '上卧铺挂带锁扣', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1256', '20.03.02.01.08', NULL, '08', '上卧铺登梯', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1257', '20.03.02.01.09', NULL, '09', '上卧铺扶手', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1258', '20.03.02.01.10', NULL, '10', '左支承座总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1259', '20.03.02.01.11', NULL, '11', '右支承座总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('126', '10.03.01.07', NULL, '07', '防护罩', 'Guard cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1260', '20.03.02.01.12', NULL, '12', '后围安装支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1261', '20.03.02.02', NULL, '02', '下卧铺', 'Lower berth', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1262', '20.03.02.02.01', NULL, '01', '下卧铺总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1263', '20.03.02.02.02', NULL, '02', '下卧铺垫总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1264', '20.03.02.02.03', NULL, '03', '下卧铺板总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1265', '20.03.02.02.04', NULL, '04', '左下卧铺总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1266', '20.03.02.02.05', NULL, '05', '中下卧铺总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1267', '20.03.02.02.06', NULL, '06', '右下卧铺总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1268', '20.03.02.02.07', NULL, '07', '卧铺加宽垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1269', '20.03.02.02.08', NULL, '08', '卧铺靠背', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('127', '10.03.01.08', NULL, '08', '燃油箱支架总成', 'Fuel tank bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1270', '20.03.02.02.09', NULL, '09', '下卧铺护网', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1271', '20.03.02.02.10', NULL, '10', '护栏总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1272', '20.03.02.03', NULL, '03', '左部储物箱', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1273', '20.03.02.03.01', NULL, '01', '左部储物箱总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1274', '20.03.02.03.02', NULL, '02', '左部卧铺杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1275', '20.03.02.03.03', NULL, '03', '左储物箱上盖板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1276', '20.03.02.03.04', NULL, '04', '左部挡板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1277', '20.03.02.03.05', NULL, '05', '左装饰护罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1278', '20.03.02.03.06', NULL, '06', '左卧铺储物箱支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1279', '20.03.02.03.07', NULL, '07', '左部隔板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('128', '10.03.01.08.01', NULL, '01', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1280', '20.03.02.03.08', NULL, '08', '左储物箱下垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1281', '20.03.02.03.09', NULL, '09', '左储物箱箱口下垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1282', '20.03.02.04', NULL, '04', '右部储物箱', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1283', '20.03.02.04.01', NULL, '01', '右部储物箱总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1284', '20.03.02.04.02', NULL, '02', '右部卧铺杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1285', '20.03.02.04.03', NULL, '03', '右储物箱上盖板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1286', '20.03.02.04.04', NULL, '04', '右部挡板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1287', '20.03.02.04.05', NULL, '05', '右装饰护罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1288', '20.03.02.04.06', NULL, '06', '右卧铺储物箱支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1289', '20.03.02.04.07', NULL, '07', '右部隔板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('129', '10.03.01.08.02', NULL, '02', '导静电弹簧垫片', 'Static conduction spring gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1290', '20.03.02.04.08', NULL, '08', '右储物箱下垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1291', '20.03.02.04.09', NULL, '09', '右储物箱箱口下垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1292', '20.03.02.05', NULL, '05', '抽屉', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1293', '20.03.02.05.01', NULL, '01', '中部抽屉总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1294', '20.03.02.05.02', NULL, '02', '保温箱', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1295', '20.03.02.05.03', NULL, '03', '左抽屉总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1296', '20.03.02.05.04', NULL, '04', '右抽屉总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1297', '20.03.02.05.05', NULL, '05', '上抽屉总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1298', '20.03.02.05.06', NULL, '06', '下抽屉总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1299', '20.03.02.05.07', NULL, '07', '抽屉盖板总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('12AD1B3351D940C6BD4', '60.06.01.01.02.02', '', '02', 'B箱下壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('12D917141080404281A', '20.04.03.01.01.03', '', '03', '充电口锁', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('13', '10.01.01.09', NULL, '09', '装饰条', 'Trim strip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('130', '10.03.01.10', NULL, '10', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1300', '20.03.02.06', NULL, '06', '中储物箱', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1301', '20.03.02.06.01', NULL, '01', '中储物箱总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1302', '20.03.02.06.02', NULL, '02', '中部卧铺杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1303', '20.03.02.06.03', NULL, '03', '中储物箱上盖板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1304', '20.03.02.06.04', NULL, '04', '中部挡板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1305', '20.03.02.06.05', NULL, '05', '中装饰护罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1306', '20.03.02.06.06', NULL, '06', '中部隔板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1307', '20.03.02.06.07', NULL, '07', '中卧铺储物箱支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1308', '20.03.02.06.08', NULL, '08', '中储物箱下垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1309', '20.03.02.07', NULL, '07', '功能组件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('131', '10.03.01.11', NULL, '11', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1310', '20.03.02.07.01', NULL, '01', '抽拉桌板总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1311', '20.03.02.07.02', NULL, '02', '升降桌板总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1312', '20.03.02.07.03', NULL, '03', '垃圾桶总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1313', '20.03.02.07.04', NULL, '04', '暖水瓶座', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1314', '20.03.02.07.05', NULL, '05', '晾衣杆', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1315', '20.03.02.07.06', NULL, '06', '水平仪', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1316', '20.03.02.08', NULL, '08', '卧铺附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1317', '20.03.02.08.01', NULL, '01', '卧铺铰链', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1318', '20.03.02.08.02', NULL, '02', '卧铺锁钩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1319', '20.03.02.08.03', NULL, '03', '卧铺托架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('132', '10.03.01.12', NULL, '12', '燃油粗滤器总成', 'Fuel coarse strainer assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1320', '20.03.02.08.04', NULL, '04', '挂钩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1321', '20.03.02.08.05', NULL, '05', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1322', '20.03.02.08.06', NULL, '06', '软垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1323', '20.03.02.08.07', NULL, '07', '支承块', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1324', '20.03.02.08.08', NULL, '08', '标签', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1325', '20.03.02.08.09', NULL, '09', '防护垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1326', '20.03.02.08.10', NULL, '10', '堵盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1327', '20.03.02.08.11', NULL, '11', '护罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1328', '20.03.02.08.12', NULL, '12', '卧铺枕头', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1329', '20.03.02.09', NULL, '09', '紧固件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('133', '10.03.01.12.01', NULL, '01', '滤芯', 'Filter element', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1330', '20.03.02.09.01', NULL, '01', '紧固件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1331', '20.03.03', NULL, '03', '座椅', 'Seat', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1332', '20.03.03.01', NULL, '01', '驾驶员座椅', 'Driver seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1333', '20.03.03.01.01', NULL, '01', '驾驶员座椅本体', 'Driver seat body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1334', '20.03.03.01.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1335', '20.03.03.01.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1336', '20.03.03.01.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1337', '20.03.03.01.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1338', '20.03.03.01.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1339', '20.03.03.01.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('134', '10.03.01.12.02', NULL, '02', '滤座', 'Filter seat', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1340', '20.03.03.01.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1341', '20.03.03.01.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1342', '20.03.03.01.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1343', '20.03.03.01.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1344', '20.03.03.01.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1345', '20.03.03.01.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1346', '20.03.03.01.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1347', '20.03.03.01.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1348', '20.03.03.01.16', NULL, '16', '扶手总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1349', '20.03.03.02', NULL, '02', '副驾驶员座椅', 'Co-driver seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('135', '10.03.01.12.03', NULL, '03', '水位传感器', 'Water level sensor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1350', '20.03.03.02.01', NULL, '01', '副驾驶员座椅本体', 'Co-driver seat body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1351', '20.03.03.02.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1352', '20.03.03.02.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1353', '20.03.03.02.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1354', '20.03.03.02.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1355', '20.03.03.02.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1356', '20.03.03.02.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1357', '20.03.03.02.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1358', '20.03.03.02.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1359', '20.03.03.02.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('136', '10.03.01.12.04', NULL, '04', '粗滤器底座及壳体总成', 'Shell and base assembly of coarse filter', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1360', '20.03.03.02.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1361', '20.03.03.02.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1362', '20.03.03.02.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1363', '20.03.03.02.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1364', '20.03.03.02.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1365', '20.03.03.02.16', NULL, '16', '扶手总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1366', '20.03.03.03', NULL, '03', '中间座椅', 'Center seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1367', '20.03.03.03.01', NULL, '01', '中间座椅本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1368', '20.03.03.03.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1369', '20.03.03.03.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('137', '10.03.01.12.05', NULL, '05', '电泵总成', 'Pump', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1370', '20.03.03.03.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1371', '20.03.03.03.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1372', '20.03.03.03.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1373', '20.03.03.03.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1374', '20.03.03.03.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1375', '20.03.03.03.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1376', '20.03.03.03.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1377', '20.03.03.03.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1378', '20.03.03.03.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1379', '20.03.03.03.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('138', '10.03.01.12.06', NULL, '06', 'TRV阀体', 'TRV body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1380', '20.03.03.03.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1381', '20.03.03.03.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1382', '20.03.03.04', NULL, '04', '乘客单人座椅', 'Passenger single seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1383', '20.03.03.04.01', NULL, '01', '乘客单人座椅本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1384', '20.03.03.04.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1385', '20.03.03.04.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1386', '20.03.03.04.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1387', '20.03.03.04.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1388', '20.03.03.04.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1389', '20.03.03.04.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('139', '10.03.01.12.07', NULL, '07', '放水阀', 'Drain valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1390', '20.03.03.04.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1391', '20.03.03.04.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1392', '20.03.03.04.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1393', '20.03.03.04.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1394', '20.03.03.04.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1395', '20.03.03.04.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1396', '20.03.03.04.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1397', '20.03.03.04.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1398', '20.03.03.05', NULL, '05', '乘客双人座椅(固定)', 'Passenger double-seat(Fix)', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1399', '20.03.03.05.01', NULL, '01', '乘客双人座椅(固定)本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('13A396A928F745688EE', '20.02.02.05', '', '05', '发动机后隔热垫', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('14', '10.01.01.10', NULL, '10', '飞轮壳', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('140', '10.03.01.13', NULL, '13', '燃油细滤器总成', 'Fuel fine filter assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1400', '20.03.03.05.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1401', '20.03.03.05.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1402', '20.03.03.05.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1403', '20.03.03.05.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1404', '20.03.03.05.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1405', '20.03.03.05.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1406', '20.03.03.05.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1407', '20.03.03.05.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1408', '20.03.03.05.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1409', '20.03.03.05.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('141', '10.03.01.13.01', NULL, '01', '滤芯', 'Filter element', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1410', '20.03.03.05.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1411', '20.03.03.05.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1412', '20.03.03.05.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1413', '20.03.03.05.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1414', '20.03.03.06', NULL, '06', '乘客三人座椅(固定)', 'Passenger three-person seat(Fix)', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1415', '20.03.03.06.01', NULL, '01', '乘客三人座椅(固定)本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1416', '20.03.03.06.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1417', '20.03.03.06.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1418', '20.03.03.06.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1419', '20.03.03.06.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('142', '10.03.01.13.02', NULL, '02', '滤座', 'Filter seat', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1420', '20.03.03.06.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1421', '20.03.03.06.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1422', '20.03.03.06.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1423', '20.03.03.06.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1424', '20.03.03.06.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1425', '20.03.03.06.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1426', '20.03.03.06.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1427', '20.03.03.06.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1428', '20.03.03.06.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1429', '20.03.03.06.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('143', '10.03.01.13.03', NULL, '03', '集水盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1430', '20.03.03.07', NULL, '07', '乘客三人座椅(2+1)', 'Passenger three-person seat(2+1)', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1431', '20.03.03.07.01', NULL, '01', '乘客三人座椅(2+1)本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1432', '20.03.03.07.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1433', '20.03.03.07.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1434', '20.03.03.07.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1435', '20.03.03.07.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1436', '20.03.03.07.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1437', '20.03.03.07.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1438', '20.03.03.07.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1439', '20.03.03.07.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('144', '10.03.01.14', NULL, '14', '燃油箱通风过滤器总成', 'Fuel tank air venting filter assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1440', '20.03.03.07.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1441', '20.03.03.07.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1442', '20.03.03.07.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1443', '20.03.03.07.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1444', '20.03.03.07.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1445', '20.03.03.07.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1446', '20.03.03.08', NULL, '08', '乘客四人座椅(固定)', 'Passenger four-position seat(Fix)', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1447', '20.03.03.08.01', NULL, '01', '乘客四人座椅(固定)本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1448', '20.03.03.08.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1449', '20.03.03.08.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('145', '10.03.01.15', NULL, '15', '碳罐总成', 'Canister assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1450', '20.03.03.08.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1451', '20.03.03.08.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1452', '20.03.03.08.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1453', '20.03.03.08.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1454', '20.03.03.08.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1455', '20.03.03.08.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1456', '20.03.03.08.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1457', '20.03.03.08.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1458', '20.03.03.08.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1459', '20.03.03.08.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('146', '10.03.01.15.01', NULL, '01', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1460', '20.03.03.08.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1461', '20.03.03.08.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1462', '20.03.03.09', NULL, '09', '乘客四人座椅(3+1)', 'Passenger four-position seat(2+1)', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1463', '20.03.03.09.01', NULL, '01', '乘客四人座椅(3+1)本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1464', '20.03.03.09.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1465', '20.03.03.09.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1466', '20.03.03.09.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1467', '20.03.03.09.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1468', '20.03.03.09.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1469', '20.03.03.09.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('147', '10.03.01.15.02', NULL, '02', '碳罐', 'Canister', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1470', '20.03.03.09.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1471', '20.03.03.09.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1472', '20.03.03.09.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1473', '20.03.03.09.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1474', '20.03.03.09.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1475', '20.03.03.09.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1476', '20.03.03.09.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1477', '20.03.03.09.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1478', '20.03.03.10', NULL, '10', '侧翻座椅', 'Rollover seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1479', '20.03.03.10.01', NULL, '01', '侧翻座椅本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('148', '10.03.01.15.03', NULL, '03', '碳罐通气管', 'Carbon tank air venting pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1480', '20.03.03.10.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1481', '20.03.03.10.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1482', '20.03.03.10.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1483', '20.03.03.10.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1484', '20.03.03.10.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1485', '20.03.03.10.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1486', '20.03.03.10.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1487', '20.03.03.10.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1488', '20.03.03.10.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1489', '20.03.03.10.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('149', '10.03.01.16', NULL, '16', '燃油散热器总成', 'Fuel radiator assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1490', '20.03.03.10.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1491', '20.03.03.10.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1492', '20.03.03.10.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1493', '20.03.03.10.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1494', '20.03.03.11', NULL, '11', '前翻座椅', 'Tilting seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1495', '20.03.03.11.01', NULL, '01', '前翻座椅本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1496', '20.03.03.11.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1497', '20.03.03.11.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1498', '20.03.03.11.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1499', '20.03.03.11.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('15', '10.01.01.11', NULL, '11', '防护罩', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('150', '10.03.01.17', NULL, '17', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1500', '20.03.03.11.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1501', '20.03.03.11.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1502', '20.03.03.11.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1503', '20.03.03.11.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1504', '20.03.03.11.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1505', '20.03.03.11.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1506', '20.03.03.11.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1507', '20.03.03.11.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1508', '20.03.03.11.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1509', '20.03.03.11.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('151', '10.03.01.18', NULL, '18', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1510', '20.03.03.12', NULL, '12', '四分座椅', 'Four-position seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1511', '20.03.03.12.01', NULL, '01', '四分座椅本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1512', '20.03.03.12.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1513', '20.03.03.12.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1514', '20.03.03.12.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1515', '20.03.03.12.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1516', '20.03.03.12.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1517', '20.03.03.12.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1518', '20.03.03.12.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1519', '20.03.03.12.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('152', '10.03.01.19', NULL, '19', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1520', '20.03.03.12.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1521', '20.03.03.12.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1522', '20.03.03.12.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1523', '20.03.03.12.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1524', '20.03.03.12.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1525', '20.03.03.12.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1526', '20.03.03.13', NULL, '13', '六分座椅', 'Six-piece seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1527', '20.03.03.13.01', NULL, '01', '六分座椅本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1528', '20.03.03.13.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1529', '20.03.03.13.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('153', '10.03.01.20', NULL, '20', '销轴', 'Pin shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1530', '20.03.03.13.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1531', '20.03.03.13.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1532', '20.03.03.13.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1533', '20.03.03.13.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1534', '20.03.03.13.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1535', '20.03.03.13.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1536', '20.03.03.13.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1537', '20.03.03.13.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1538', '20.03.03.13.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1539', '20.03.03.13.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('154', '10.03.01.21', NULL, '21', '轴套', 'Shaft sleeve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1540', '20.03.03.13.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1541', '20.03.03.13.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1542', '20.03.03.14', NULL, '14', '四六分座椅(坐垫连体)', 'Four-position seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1543', '20.03.03.14.01', NULL, '01', '四六分座椅(坐垫连体)本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1544', '20.03.03.14.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1545', '20.03.03.14.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1546', '20.03.03.14.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1547', '20.03.03.14.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1548', '20.03.03.14.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1549', '20.03.03.14.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('155', '10.03.01.22', NULL, '22', '垫板', 'Backing plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1550', '20.03.03.14.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1551', '20.03.03.14.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1552', '20.03.03.14.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1553', '20.03.03.14.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1554', '20.03.03.14.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1555', '20.03.03.14.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1556', '20.03.03.14.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1557', '20.03.03.14.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1558', '20.03.03.15', NULL, '15', '四六分座椅(靠背连体)', 'Four-position seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1559', '20.03.03.15.01', NULL, '01', '四六分座椅(靠背连体)本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('156', '10.03.01.23', NULL, '23', '通气管', 'Air pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1560', '20.03.03.15.02', NULL, '02', '头枕总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1561', '20.03.03.15.03', NULL, '03', '外侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1562', '20.03.03.15.04', NULL, '04', '内侧旁侧板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1563', '20.03.03.15.05', NULL, '05', '调角器手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1564', '20.03.03.15.06', NULL, '06', '高度调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1565', '20.03.03.15.07', NULL, '07', '机械减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1566', '20.03.03.15.08', NULL, '08', '机械高调器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1567', '20.03.03.15.09', NULL, '09', '气囊减震器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1568', '20.03.03.15.10', NULL, '10', '翻转座椅拉带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1569', '20.03.03.15.11', NULL, '11', '翻转座椅锁体拉线', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('157', '10.03.01.24', NULL, '24', '控制器', 'Heater controller', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1570', '20.03.03.15.12', NULL, '12', '滑轨端盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1571', '20.03.03.15.13', NULL, '13', '靠背杂物盒', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1572', '20.03.03.15.14', NULL, '14', '座椅倾角调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1573', '20.03.03.15.15', NULL, '15', '坐垫加长调节手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1574', '20.03.03.16', NULL, '16', '滑轨', 'Sliding track', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1575', '20.03.03.17', NULL, '17', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1576', '20.03.03.18', NULL, '18', '装饰护罩', 'Trim cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1577', '20.03.03.19', NULL, '19', '地脚装饰件', 'Trimming', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1578', '20.03.03.20', NULL, '20', '标签', 'Label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1579', '20.03.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('158', '10.03.01.25', NULL, '25', '油箱转换阀', 'Fuel tank conversion valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1580', '20.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1581', '20.03.04', NULL, '04', '约束系统', 'Restraint system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1582', '20.03.04.00', NULL, '00', '安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1583', '20.03.04.00.01', NULL, '01', '安全带安装图', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1584', '20.03.04.00.02', NULL, '02', '前排左侧安全带安装图', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1585', '20.03.04.00.03', NULL, '03', '前排右侧安全带安装图', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1586', '20.03.04.00.04', NULL, '04', '前排中间安全带安装图', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1587', '20.03.04.00.05', NULL, '05', '后排安全带安装图', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1588', '20.03.04.00.06', NULL, '06', '乘客安全带安装图', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1589', '20.03.04.01', NULL, '01', '前排左侧安全带', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('159', '10.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1590', '20.03.04.01.00', NULL, '00', '前排安全带总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1591', '20.03.04.02', NULL, '02', '前排右侧安全带', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1592', '20.03.04.02.01', NULL, '01', '前排右侧安全带总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1593', '20.03.04.02.02', NULL, '02', '前排右侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1594', '20.03.04.03', NULL, '03', '前排中间安全带', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1595', '20.03.04.03.01', NULL, '01', '前排中间安全带总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1596', '20.03.04.03.02', NULL, '02', '前排中间卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1597', '20.03.04.04', NULL, '04', '锁舌锁扣', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1598', '20.03.04.04.01', NULL, '01', '锁舌总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1599', '20.03.04.04.02', NULL, '02', '锁扣总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('159B887697F842E3A02', '20.04.03.01.01.01', '', '01', '充电口外板', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('15AB376D4FD048C3A7C', '60.06.01.03.04.02', '', '02', 'CMU48SB下壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('16', '10.01.01.12', NULL, '12', '控制单元', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('160', '10.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1600', '20.03.04.04.03', NULL, '03', '锁扣总成带报警', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1601', '20.03.04.04.04', NULL, '04', '双锁扣总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1602', '20.03.04.04.05', NULL, '05', '锁舌锁扣总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1603', '20.03.04.04.06', NULL, '06', '双锁舌总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1604', '20.03.04.05', NULL, '05', '乘客安全带总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1605', '20.03.04.05.00', NULL, '00', '乘客安全带总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1606', '20.03.04.06', NULL, '06', '乘客卷收器总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1607', '20.03.04.06.00', NULL, '00', '乘客卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1608', '20.03.04.07', NULL, '07', '乘客左侧卷收器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1609', '20.03.04.07.00', NULL, '00', '乘客左侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('161', '10.04', NULL, '04', '进气系统', 'Air intake system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1610', '20.03.04.07.01', NULL, '01', '乘客一排左侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1611', '20.03.04.07.02', NULL, '02', '乘客二排左侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1612', '20.03.04.07.03', NULL, '03', '乘客三排左侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1613', '20.03.04.07.04', NULL, '04', '乘客四排左侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1614', '20.03.04.07.05', NULL, '05', '乘客五排左侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1615', '20.03.04.07.06', NULL, '06', '乘客六排左侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1616', '20.03.04.08', NULL, '08', '乘客右侧卷收器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1617', '20.03.04.08.00', NULL, '00', '乘客右侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1618', '20.03.04.08.01', NULL, '01', '乘客一排右侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1619', '20.03.04.08.02', NULL, '02', '乘客二排右侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('162', '10.04.01', NULL, '01', '进气装置', 'Intake device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1620', '20.03.04.08.03', NULL, '03', '乘客三排右侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1621', '20.03.04.08.04', NULL, '04', '乘客四排右侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1622', '20.03.04.08.05', NULL, '05', '乘客五排右侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1623', '20.03.04.08.06', NULL, '06', '乘客六排右侧卷收器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1624', '20.03.04.09', NULL, '09', '高度调节器总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1625', '20.03.04.09.01', NULL, '01', '高度调节器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1626', '20.03.04.09.02', NULL, '02', '前排左侧高度调节器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1627', '20.03.04.09.03', NULL, '03', '前排右侧高度调节器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1628', '20.03.04.10', NULL, '10', '附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1629', '20.03.04.10.01', NULL, '01', '卷收器护罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('163', '10.04.01.01', NULL, '01', '空滤器总成', 'Air filter assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1630', '20.03.04.10.02', NULL, '02', '高度调节器装饰护罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1631', '20.03.04.10.03', NULL, '03', '安全带导向盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1632', '20.03.04.10.04', NULL, '04', '安全带导向环', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1633', '20.03.04.10.05', NULL, '05', '导向环护罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1634', '20.03.04.10.06', NULL, '06', '螺栓饰盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1635', '20.03.04.10.07', NULL, '07', '堵盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1636', '20.03.04.10.08', NULL, '08', '安装支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1637', '20.03.04.10.09', NULL, '09', '标签', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1638', '20.03.04.11', NULL, '11', '紧固件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1639', '20.03.05', NULL, '05', '仪表板外委分装', '11', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('164', '10.04.01.01.01', NULL, '01', '壳体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1640', '20.03.05.01', NULL, '01', '仪表板外委分装总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1641', '20.03.05.01.01', NULL, '01', '仪表板类分装总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1642', '20.03.05.01.02', NULL, '02', '电器类分装总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1643', '20.03.05.01.03', NULL, '03', '底盘类分装总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1644', '20.04', NULL, '04', '开闭件系统', 'Closure system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1645', '20.04.01', NULL, '01', '前侧门', 'Front side door', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1646', '20.04.01.01', NULL, '01', '前门安装总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1647', '20.04.01.01.01', NULL, '01', '前门焊接总成', 'Front door welding assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1648', '20.04.01.01.01.01', NULL, '01', '前门外板', 'F. door outer plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1649', '20.04.01.01.01.02', NULL, '02', '前门内板总成', 'F. door inner panel assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('165', '10.04.01.01.02', NULL, '02', '滤芯', 'Filter element', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1650', '20.04.01.01.01.02.01', NULL, '01', '前门内板本体', 'F. door inner plate body', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1651', '20.04.01.01.01.02.02', NULL, '02', '前门窗框总成', 'Window frame inner panel assembly of FL door', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1652', '20.04.01.01.01.02.02.01', NULL, '01', '前门窗框前段', 'Front segment of front door window frame', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1653', '20.04.01.01.01.02.02.02', NULL, '02', '前门窗框后段', 'Rear segment of front door window frame', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1654', '20.04.01.01.01.02.02.03', NULL, '03', '前门窗框上段', 'Upper segment of front door window frame', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1655', '20.04.01.01.01.02.02.04', NULL, '04', '前门密封条卡槽', 'Clamping slot of front door weather strip', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1656', '20.04.01.01.01.02.03', NULL, '03', '前门门锁加强板', 'F. door lock reinforced plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1657', '20.04.01.01.01.02.04', NULL, '04', '前门玻璃上导轨', 'Upper guide rail of front door glass', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1658', '20.04.01.01.01.02.05', NULL, '05', '前门铰链加强板', 'F. door hinge reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1659', '20.04.01.01.01.02.05.01', NULL, '01', '前门上铰链加强板', 'Reinforcing plate of upper hinge of front door', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('166', '10.04.01.01.06', NULL, '06', '密封垫', 'Sealing gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1660', '20.04.01.01.01.02.05.02', NULL, '02', '前门下铰链加强板', 'Reinforcing plate of lower hinge of front door', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1661', '20.04.01.01.01.02.06', NULL, '06', '螺母板总成', 'nut plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1662', '20.04.01.01.01.02.06.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1663', '20.04.01.01.01.02.07', NULL, '07', '前门玻璃前导轨总成', 'F. door glass front guide rail', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1664', '20.04.01.01.01.02.07.01', NULL, '01', '前门玻璃前导轨', 'Front guide rail of front door glass', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1665', '20.04.01.01.01.02.07.02', NULL, '02', '玻璃导轨支架', 'Glass guide rail bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1666', '20.04.01.01.01.02.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1667', '20.04.01.01.01.02.08', NULL, '08', '前门玻璃后导轨总成', 'F. door glass front guide rail', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1668', '20.04.01.01.01.02.08.01', NULL, '01', '前门玻璃后导轨', 'Rear guide rail of front door glass', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1669', '20.04.01.01.01.02.08.02', NULL, '02', '玻璃导轨支架', 'Glass guide rail bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('166A09810D4B4F5FB67', '60.06.01.01.14.13.02', '', '02', '电芯连接排-24S输出正', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('167', '10.04.01.01.09', NULL, '09', '端盖', 'End cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1670', '20.04.01.01.01.02.09', NULL, '09', '前门后视镜加强板总成', 'Left rearview mirror reinforcing plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1671', '20.04.01.01.01.02.09.01', NULL, '01', '后视镜上加强板', 'Upper reinforcing plate of rearview mirror', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1672', '20.04.01.01.01.02.09.02', NULL, '02', '后视镜下加强板', 'Lower reinforcing plate of rearview mirror', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1673', '20.04.01.01.01.02.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1674', '20.04.01.01.01.02.10', NULL, '10', '前门加强板总成', 'F. door reinforced plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1675', '20.04.01.01.01.02.10.01', NULL, '01', '前门加强板', 'F. door reinforced plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1676', '20.04.01.01.01.02.10.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1677', '20.04.01.01.01.02.11', NULL, '11', '前门防撞梁总成', 'F. door anti-collision member assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1678', '20.04.01.01.01.02.11.01', NULL, '01', '前门防撞梁', 'Front door impact beam', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1679', '20.04.01.01.01.02.11.02', NULL, '02', '防撞梁连接板', 'Impact beam connecting plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('168', '10.04.01.02', NULL, '02', '空气流量计', 'Air flow meter', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1680', '20.04.01.01.01.02.11.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1681', '20.04.01.01.01.02.12', NULL, '12', '前门内板窗台加强板总成', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1682', '20.04.01.01.01.02.12.01', NULL, '01', '前门内板窗台加强板', '11', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1683', '20.04.01.01.01.02.13', NULL, '13', '前门外板窗台加强板', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1684', '20.04.01.01.01.03', NULL, '03', '车门补强片', 'Door reinforced panel', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1685', '20.04.01.01.02', NULL, '02', '前门铰链总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1686', '20.04.01.01.02.01', NULL, '01', '前门铰链臂总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1687', '20.04.01.01.02.02', NULL, '02', '前门铰链座总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1688', '20.04.01.01.02.03', NULL, '03', '铰链轴', 'Hinge shaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1689', '20.04.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('169', '10.04.01.03', NULL, '03', '进气温度传感器', 'Intake air temperature sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1690', '20.04.01.01.03', NULL, '03', '前门下铰链总成', 'F. door lower hinge assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1691', '20.04.01.01.04', NULL, '04', '前门限位器总成', 'Front door stopper assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1692', '20.04.01.01.05', NULL, '05', '前门玻璃总成', 'F. door window glass assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1693', '20.04.01.01.06', NULL, '06', '前门玻璃泥槽', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1694', '20.04.01.01.07', NULL, '07', '前门外水切', 'F. door external weatherstrip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1695', '20.04.01.01.08', NULL, '08', '前门内水切', 'F. door interior weatherstrip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1696', '20.04.01.01.09', NULL, '09', '前门框密封条', 'F. doorframe seal strip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1697', '20.04.01.01.10', NULL, '10', '前门密封条总成', 'F. door seal strip assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1698', '20.04.01.01.11', NULL, '11', '前导轨密封条', 'Glass front guide rail seal strip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1699', '20.04.01.01.12', NULL, '12', '后导轨密封条', 'Glass rear guide rail seal strip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('17', '10.01.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('170', '10.04.01.06', NULL, '06', '谐振腔总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1700', '20.04.01.01.13', NULL, '13', '前门三角窗', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1701', '20.04.01.01.14', NULL, '14', '前门三角窗密封条', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1702', '20.04.01.01.15', NULL, '15', '前门升降器总成', 'Front door lifter assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1703', '20.04.01.01.15.01', NULL, '01', '前门升降器分总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1704', '20.04.01.01.15.02', NULL, '02', '摇柄', 'Handle assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1705', '20.04.01.01.15.03', NULL, '03', '卡簧', 'Snap spring', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1706', '20.04.01.01.16', NULL, '16', '前门玻璃安装导轨总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1707', '20.04.01.01.17', NULL, '17', '前门玻璃后安装导轨总成', 'Left glass rear guide rail', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1708', '20.04.01.01.18', NULL, '18', '前门锁总成', 'F. door lock assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1709', '20.04.01.01.18.01', NULL, '01', '前门锁体总成', 'F. door lock body assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('171', '10.04.01.07', NULL, '07', '空压机降噪管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1710', '20.04.01.01.18.02', NULL, '02', '前门内锁止拉索(杆)', 'Front door inner lock cable', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1711', '20.04.01.01.18.03', NULL, '03', '前门内开启拉索(杆)', 'Front door inner unlock cable', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1712', '20.04.01.01.18.04', NULL, '04', '前门内把手', 'F. door inner handle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1713', '20.04.01.01.18.05', NULL, '05', '前门外把手总成', 'F. door outer handle assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1714', '20.04.01.01.18.06', NULL, '06', '前门外把手拨叉', 'F. door outer handle fork', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1715', '20.04.01.01.18.07', NULL, '07', '前门外把手拉索(杆)', 'F. door outer lock cable', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1716', '20.04.01.01.18.08', NULL, '08', '前锁芯拉杆(线)', 'F. lock cylinder handle (wire)', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1717', '20.04.01.01.18.09', NULL, '09', '车门锁提钮', 'Door lock knob', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1718', '20.04.01.01.18.10', NULL, '10', '锁扣', 'Buckle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1719', '20.04.01.01.19', NULL, '19', '全车锁芯及钥匙总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('172', '10.04.01.08', NULL, '08', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1720', '20.04.01.01.19.01', NULL, '01', '点火锁芯', 'Ignition lock cylinder', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1721', '20.04.01.01.19.02', NULL, '02', '车门锁芯', 'Door lock cylinder', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1722', '20.04.01.01.19.03', NULL, '03', '油箱盖锁芯', 'Lock cylinder of fuel tank cap', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1723', '20.04.01.01.19.04', NULL, '04', '尿素盖锁芯', 'Lock cylinder of urea tank cap', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1724', '20.04.01.01.19.05', NULL, '05', '充电口锁芯', 'Lock cylinder of charging port', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1725', '20.04.01.01.19.06', NULL, '06', '钥匙', 'Key plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1726', '20.04.01.01.20', NULL, '20', '前门内护板总成', 'F. door inner shield assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1727', '20.04.01.01.20.01', NULL, '01', '前门内护板本体总成', 'F. door trim', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1728', '20.04.01.01.20.02', NULL, '02', '前门控制器面板总成', 'F. door controller cover plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1729', '20.04.01.01.20.03', NULL, '03', '前门扬声器面罩', 'F. door speaker mask', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('173', '10.04.01.09', NULL, '09', '高位进气管总成', 'High-mounted intake pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1730', '20.04.01.01.20.04', NULL, '04', '前门内护板装饰件', 'F. door inner shield trim strip', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1731', '20.04.01.01.20.05', NULL, '05', '内护板堵盖', 'Inner guard plate plug', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1732', '20.04.01.01.20.06', NULL, '06', '前门内护板扣手盒', 'F. door inner shield buckle box', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1733', '20.04.01.01.20.07', NULL, '07', '前门内护板海绵块', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1734', '20.04.01.01.20.08', NULL, '08', '前门内护板吸音棉', 'Front door sonnd absorption cotton', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1735', '20.04.01.01.20.09', NULL, '09', '前门内护板密封条', 'Inner shield seal strip', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1736', '20.04.01.01.20.10', NULL, '10', '内护板烟灰缸', 'Inner guard plate ashtray', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1737', '20.04.01.01.20.11', NULL, '11', '前门出风口总成', 'F. door air outlet assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1738', '20.04.01.01.20.12', NULL, '12', '风道进气胶套', 'Air duct air inlet rubber sleeve', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1739', '20.04.01.01.21', NULL, '21', '前门三角板', 'F. door triangle trim cover assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('174', '10.04.01.09.02', NULL, '02', '进气帽', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1740', '20.04.01.01.22', NULL, '22', '车门装饰条', 'nterior shield trim cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1741', '20.04.01.01.23', NULL, '23', '车门内扶手', 'F. door interior handle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1742', '20.04.01.01.24', NULL, '24', '安装支架', 'bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1743', '20.04.01.01.25', NULL, '25', '前门下装饰板总成', 'F. door lower trim cover assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1744', '20.04.01.01.25.01', NULL, '01', '前门下装饰板内板', 'F. door lower trim cover inner plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1745', '20.04.01.01.25.02', NULL, '02', '前门下装饰板外板', 'F. door lower trim cover outer plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1746', '20.04.01.01.25.03', NULL, '03', '前门下装饰板加强板', 'F. door lower trim cover reinforced part', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1747', '20.04.01.01.25.04', NULL, '04', '装饰板密封条', 'seal strip', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1748', '20.04.01.01.26', NULL, '26', '前门防擦条总成', 'F. door rubbing strip assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1749', '20.04.01.01.27', NULL, '27', '车门贴膜总成', 'F. door front film ASM', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('175', '10.04.01.10', NULL, '10', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1750', '20.04.01.01.27.01', NULL, '01', '窗框贴膜', 'frame film', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1751', '20.04.01.01.28', NULL, '28', '前门防水膜', 'Front door waterproof membrane', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1752', '20.04.01.01.29', NULL, '29', '车门防撞块', 'door bumper block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1753', '20.04.01.01.30', NULL, '30', '孔堵(贴)', 'Door rubber plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1754', '20.04.01.01.31', NULL, '31', '车门其他附件', 'Other door accessories', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1755', '20.04.01.01.32', NULL, '32', '上导轨密封条', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1756', '20.04.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1757', '20.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1758', '20.04.02', NULL, '02', '后侧门', 'Rear side door', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1759', '20.04.02.01', NULL, '01', '后门安装总成', 'R. door installation assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('176', '10.04.01.11', NULL, '11', '波纹管', 'Bellows', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1760', '20.04.02.01.01', NULL, '01', '后门焊接总成', 'R. door weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1761', '20.04.02.01.01.01', NULL, '01', '后门外板', 'R. door outer plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1762', '20.04.02.01.01.02', NULL, '02', '后门内板总成', 'R. door inner plate assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1763', '20.04.02.01.01.02.01', NULL, '01', '后门内板本体', 'R. door inner plate body', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1764', '20.04.02.01.01.02.02', NULL, '02', '后门窗框总成', 'Window frame inner panel assembly of FL door', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1765', '20.04.02.01.01.02.02.01', NULL, '01', '后门窗框前段', 'Front segment of rear door window frame', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1766', '20.04.02.01.01.02.02.02', NULL, '02', '后门窗框后段', 'Rear segment of rear door window frame', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1767', '20.04.02.01.01.02.02.03', NULL, '03', '后门窗框上段', 'Upper segment of rear door window frame', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1768', '20.04.02.01.01.02.02.04', NULL, '04', '后门密封条卡槽', 'Clamping slot of rear door weather strip', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1769', '20.04.02.01.01.02.03', NULL, '03', '后门门锁加强板', 'R. door lock reinforced plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('177', '10.04.01.12', NULL, '12', '硬管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1770', '20.04.02.01.01.02.04', NULL, '04', '后门铰链加强板', 'R. door hinge reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1771', '20.04.02.01.01.02.04.01', NULL, '01', '后门上铰链加强板', 'R. door upper hinge reinforced plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1772', '20.04.02.01.01.02.04.02', NULL, '02', '后门上铰链加强板', 'R. door lowwer hinge reinforced plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1773', '20.04.02.01.01.02.05', NULL, '05', '\"螺母板总成\"', 'nut plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1774', '20.04.02.01.01.02.05.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1775', '20.04.02.01.01.02.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1776', '20.04.02.01.01.02.06', NULL, '06', '后门玻璃前导轨总成', 'R. door glass front guide rail', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1777', '20.04.02.01.01.02.06.01', NULL, '01', '后门玻璃前导轨', 'R. door glass front guide', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1778', '20.04.02.01.01.02.06.02', NULL, '02', '玻璃导轨支架', 'Glass guide rail bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1779', '20.04.02.01.01.02.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('178', '10.04.01.13', NULL, '13', '软管', 'Hose', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1780', '20.04.02.01.01.02.07', NULL, '07', '后门玻璃后导轨总成', 'R. door glass front guide rail', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1781', '20.04.02.01.01.02.07.01', NULL, '01', '后门玻璃后导轨', 'R. door glass front guide', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1782', '20.04.02.01.01.02.07.02', NULL, '02', '玻璃导轨支架', 'Glass guide rail bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1783', '20.04.02.01.01.02.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1784', '20.04.02.01.01.02.08', NULL, '08', '后门加强板总成', 'R. door reinforced plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1785', '20.04.02.01.01.02.08.01', NULL, '01', '后门加强板', 'R. door reinforced plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1786', '20.04.02.01.01.02.08.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1787', '20.04.02.01.01.02.09', NULL, '09', '后门防撞梁总成', 'R. door anti-collision member assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1788', '20.04.02.01.01.02.09.01', NULL, '01', '后门防撞梁', 'R. door anti-collision member', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1789', '20.04.02.01.01.02.09.02', NULL, '02', '防撞梁连接板', 'Impact beam connecting plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('179', '10.04.01.17', NULL, '17', '防虫网总成', 'Fly net assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1790', '20.04.02.01.01.02.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1791', '20.04.02.01.01.02.10', NULL, '10', '后门内板窗台加强板总成', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1792', '20.04.02.01.01.02.10.01', NULL, '01', '后门内板窗台加强板', '11', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1793', '20.04.02.01.01.02.11', NULL, '11', '后门外板窗台加强板', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1794', '20.04.02.01.01.03', NULL, '03', '车门补强片', 'Door reinforced panel', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1795', '20.04.02.01.02', NULL, '02', '后门铰链总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1796', '20.04.02.01.02.01', NULL, '01', '后门铰链臂总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1797', '20.04.02.01.02.02', NULL, '02', '后门铰链座总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1798', '20.04.02.01.02.03', NULL, '03', '铰链轴', 'Hinge shaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1799', '20.04.02.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('17E60629C0094FF8B70', '50.01.01.01.10', '', '10', '货箱后门左铰链', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('18', '10.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('180', '10.04.01.18', NULL, '18', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1800', '20.04.02.01.03', NULL, '03', '后门下铰链总成', 'R. door lower hinge assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1801', '20.04.02.01.04', NULL, '04', '后门玻璃前安装导轨总成', 'Left glass front guide rail', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1802', '20.04.02.01.05', NULL, '05', '后门玻璃后安装导轨总成', 'Left glass rear guide rail', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1803', '20.04.02.01.06', NULL, '06', '后门限位器总成', 'Rear door limiter assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1804', '20.04.02.01.07', NULL, '07', '后门玻璃总成', 'R. door window glass assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1805', '20.04.02.01.08', NULL, '08', '后门泥槽', 'R. door mud chute', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1806', '20.04.02.01.09', NULL, '09', '后门外水切', 'R. door external weatherstrip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1807', '20.04.02.01.10', NULL, '10', '后门内水切', 'R. door interior weatherstrip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1808', '20.04.02.01.11', NULL, '11', '后门框密封条', 'R. doorframe seal strip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1809', '20.04.02.01.12', NULL, '12', '后门密封条总成', 'R. door seal strip assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('181', '10.04.01.19', NULL, '19', '衬套', 'Lining', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1810', '20.04.02.01.13', NULL, '13', '前导轨密封条', 'Glass front guide rail seal strip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1811', '20.04.02.01.14', NULL, '14', '后导轨密封条', 'Glass rear guide rail seal strip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1812', '20.04.02.01.15', NULL, '15', '后门升降器总成', 'Rear door lifter assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1813', '20.04.02.01.15.01', NULL, '01', '后门升降器分总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1814', '20.04.02.01.15.02', NULL, '02', '摇柄', 'Handle assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1815', '20.04.02.01.16', NULL, '16', '后门锁总成', 'R. door lock assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1816', '20.04.02.01.16.01', NULL, '01', '后门锁体总成', 'R. door lock body assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1817', '20.04.02.01.16.02', NULL, '02', '后门内锁止拉索(杆)', 'Rear door inner lock cable', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1818', '20.04.02.01.16.03', NULL, '03', '后门内开启拉索(杆)', 'Rear door inner unlock cable', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1819', '20.04.02.01.16.04', NULL, '04', '后门内把手', 'R. door inner handle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('182', '10.04.01.20', NULL, '20', '进气温度压力传感器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1820', '20.04.02.01.16.05', NULL, '05', '后门外把手总成', 'R.door outer handle assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1821', '20.04.02.01.16.06', NULL, '06', '后门外把手拨叉', 'R.door outer handle fork', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1822', '20.04.02.01.16.07', NULL, '07', '后门外把手拉索(杆)', 'R. door outer lock cable', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1823', '20.04.02.01.16.08', NULL, '08', '后锁芯拉杆(线)', 'R.L lock', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1824', '20.04.02.01.16.09', NULL, '09', '锁扣', 'Buckle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1825', '20.04.02.01.17', NULL, '17', '后门内护板总成', 'R.door interior shield assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1826', '20.04.02.01.17.01', NULL, '01', '后门内护板本体总成', 'R.. door trim', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1827', '20.04.02.01.17.02', NULL, '02', '后门控制器面板总成', 'R. door controller cover plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1828', '20.04.02.01.17.03', NULL, '03', '后门扬声器面罩', 'R. door speaker mask', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1829', '20.04.02.01.17.04', NULL, '04', '后门内护板装饰件', 'R. door inner shield trim strip', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('183', '10.04.01.21', NULL, '21', '中冷器护罩', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1830', '20.04.02.01.17.05', NULL, '05', '内护板堵盖', 'Inner guard plate plug', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1831', '20.04.02.01.17.06', NULL, '06', '后门内护板扣手盒', 'R.door interior shield buckle box', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1832', '20.04.02.01.17.07', NULL, '07', '后门内护板缓冲块', 'R. door bumper block', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1833', '20.04.02.01.17.08', NULL, '08', '后门内护板吸音棉', 'Rear door sonnd absorption cotton', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1834', '20.04.02.01.17.09', NULL, '09', '后门内护板密封条', 'Inner shield seal strip', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1835', '20.04.02.01.18', NULL, '18', '后门三角板', 'R. door triangle trim cover assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1836', '20.04.02.01.19', NULL, '19', '后门内拉手总成', 'Rear door interior handle assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1837', '20.04.02.01.20', NULL, '20', '后门防水膜', 'Rear door waterproof membrane', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1838', '20.04.02.01.21', NULL, '21', '车门防撞块', 'door bumper block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1839', '20.04.02.01.22', NULL, '22', '安装支架', 'Mounting bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('184', '10.04.01.22', NULL, '22', '前引气管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1840', '20.04.02.01.23', NULL, '23', '孔堵(贴)', 'Door rubber plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1841', '20.04.02.01.24', NULL, '24', '后门小窗玻璃', 'Small window glass of rear door', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1842', '20.04.02.01.25', NULL, '25', '后门小窗胶条', 'Small window rubber strip of rear door', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1843', '20.04.02.01.26', NULL, '26', '后门防擦条总成', 'Rear door side moulding assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1844', '20.04.02.01.27', NULL, '27', '车门贴膜总成', 'Door film assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1845', '20.04.02.01.27.01', NULL, '01', '后门上窗框贴膜', 'R. door upper window frame film', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1846', '20.04.02.01.27.02', NULL, '02', '后门下窗框贴膜', 'R. door lower window frame film', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1847', '20.04.02.01.27.03', NULL, '03', '后门前窗框贴膜', 'R. door front window frame film', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1848', '20.04.02.01.27.04', NULL, '04', '后门后窗框贴膜', 'R. door rear window frame film', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1849', '20.04.02.01.28', NULL, '28', '车门其他附件', 'Other door accessories', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('185', '10.04.01.23', NULL, '23', '进气消声器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1850', '20.04.02.01.29', NULL, '29', '上导轨密封条', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1851', '20.05', NULL, '05', '车身本体', 'Body shell', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1852', '20.05.01', NULL, '01', '车身本体总成', 'Body shell assembly', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1853', '20.05.01.01', NULL, '01', 'M4白车身焊接总成', 'Body shell weldment assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1854', '20.05.01.01.01', NULL, '01', '地板焊接总成', 'Drive sleeper cab floor weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1855', '20.05.01.01.01.01', NULL, '01', '地板骨架焊接总成', 'Floor frame weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1856', '20.05.01.01.01.01.01', NULL, '01', '地板前横梁焊接总成', 'Floor front cross member weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1857', '20.05.01.01.01.01.01.01', NULL, '01', '地板前横梁', 'Floor front cross member', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1858', '20.05.01.01.01.01.01.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1859', '20.05.01.01.01.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('186', '10.04.01.24', NULL, '24', '中冷器总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1860', '20.05.01.01.01.01.01.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1861', '20.05.01.01.01.01.02', NULL, '02', '地板后横梁焊接总成', 'Floor rear cross member weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1862', '20.05.01.01.01.01.02.01', NULL, '01', '地板后横梁', 'Floor rear cross member', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1863', '20.05.01.01.01.01.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1864', '20.05.01.01.01.01.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1865', '20.05.01.01.01.01.02.04', NULL, '04', '后悬置支座', 'Rear suspension bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1866', '20.05.01.01.01.01.02.05', NULL, '05', '排半后地板连接板', 'Connecting plate rear floor, sleeper cab', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1867', '20.05.01.01.01.01.02.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1868', '20.05.01.01.01.01.03', NULL, '03', '左/右纵梁焊接总成', 'Left/Right side member weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1869', '20.05.01.01.01.01.03.01', NULL, '01', '纵梁前段', 'member front stage', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('187', '10.04.01.24.01', NULL, '01', '中冷器本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1870', '20.05.01.01.01.01.03.02', NULL, '02', '纵梁中段', 'Middle of side member', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1871', '20.05.01.01.01.01.03.03', NULL, '03', '纵梁后段', 'member rear stage', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1872', '20.05.01.01.01.01.03.03.01', NULL, '01', '支架', '11', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1873', '20.05.01.01.01.01.03.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1874', '20.05.01.01.01.01.03.05', NULL, '05', '支架', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1875', '20.05.01.01.01.01.03.06', NULL, '06', '纵梁与地板连接板', 'Side member and floor connecting plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1876', '20.05.01.01.01.01.03.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1877', '20.05.01.01.01.01.04', NULL, '04', '下车体焊接分总成', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1878', '20.05.01.01.01.01.04.01', NULL, '01', '下车体焊接前部总成', '11', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1879', '20.05.01.01.01.01.04.01.01', NULL, '01', '前地板焊接总成', '11', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('188', '10.04.01.25', NULL, '25', '螺栓', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1880', '20.05.01.01.01.01.04.01.01.01', NULL, '01', '发动机室前板总成', '11', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1881', '20.05.01.01.01.01.04.01.01.01.01', NULL, '01', '发动机室前板焊接总成', '11', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1882', '20.05.01.01.01.01.04.01.01.01.01.01', NULL, '01', '发动机室前板组件', '11', '1', NULL, '12', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1883', '20.05.01.01.01.01.04.01.01.01.01.01.01', NULL, '01', '发动机室前板', '11', '1', NULL, '13', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1884', '20.05.01.01.01.02', NULL, '02', '前地板面板焊接总成', 'Front floor panel weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1885', '20.05.01.01.01.02.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1886', '20.05.01.01.01.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1887', '20.05.01.01.01.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1888', '20.05.01.01.01.02.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1889', '20.05.01.01.01.03', NULL, '03', '中地板面板焊接总成', 'Center floor panel weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('189', '10.04.01.26', NULL, '26', '螺母', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1890', '20.05.01.01.01.03.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1891', '20.05.01.01.01.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1892', '20.05.01.01.01.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1893', '20.05.01.01.01.03.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1894', '20.05.01.01.01.04', NULL, '04', '后地板面板焊接总成', 'Rear floor panel weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1895', '20.05.01.01.01.04.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1896', '20.05.01.01.01.04.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1897', '20.05.01.01.01.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1898', '20.05.01.01.01.04.04', NULL, '04', '延伸板', 'Extension', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1899', '20.05.01.01.01.04.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('19', '10.01.02', NULL, '02', '隔音装置', 'Sound Insulation Device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('190', '10.04.01.27', NULL, '27', '垫片', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1900', '20.05.01.01.01.05', NULL, '05', '左侧A柱下内板焊接总成', 'Left side A pillar lower inner plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1901', '20.05.01.01.01.05.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1902', '20.05.01.01.01.05.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1903', '20.05.01.01.01.05.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1904', '20.05.01.01.01.05.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1905', '20.05.01.01.01.06', NULL, '06', '左侧B柱下内板焊接总成', 'Left side B pillar lower inner pane weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1906', '20.05.01.01.01.06.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1907', '20.05.01.01.01.06.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1908', '20.05.01.01.01.06.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1909', '20.05.01.01.01.06.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('191', '10.04.01.28', NULL, '28', '卡箍', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1910', '20.05.01.01.01.07', NULL, '07', '右侧A柱下内板焊接总成', 'Right side A pillar lower inner pane weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1911', '20.05.01.01.01.07.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1912', '20.05.01.01.01.07.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1913', '20.05.01.01.01.07.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1914', '20.05.01.01.01.07.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1915', '20.05.01.01.01.08', NULL, '08', '右侧B柱下内板焊接总成', 'Right side B pillar lower inner plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1916', '20.05.01.01.01.08.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1917', '20.05.01.01.01.08.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1918', '20.05.01.01.01.08.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1919', '20.05.01.01.01.08.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('192', '10.04.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1920', '20.05.01.01.01.09', NULL, '09', '卧铺安装总成', 'Berth installation assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1921', '20.05.01.01.01.09.01', NULL, '01', '卧铺下板', 'Berth lower plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1922', '20.05.01.01.01.09.02', NULL, '02', '卧铺上板', 'Berth upper plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1923', '20.05.01.01.01.09.03', NULL, '03', '卧铺安装板', 'Berth installation plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1924', '20.05.01.01.01.09.04', NULL, '04', '卧铺安装加强板', 'Berth installation reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1925', '20.05.01.01.01.09.05', NULL, '05', '卧铺加强横梁', 'Berth reinforced cross member', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1926', '20.05.01.01.01.09.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1927', '20.05.01.01.02', NULL, '02', '前围焊接总成', 'Front wall weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1928', '20.05.01.01.02.01', NULL, '01', '前风窗下横梁外板', 'Front windscreen lower cross member outer plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1929', '20.05.01.01.02.02', NULL, '02', '前风窗下横梁内板总成', 'Front windscreen lower cross member inner panel assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('193', '10.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1930', '20.05.01.01.02.02.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1931', '20.05.01.01.02.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1932', '20.05.01.01.02.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1933', '20.05.01.01.02.02.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1934', '20.05.01.01.02.03', NULL, '03', '前围板总成', 'Front wall plate assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1935', '20.05.01.01.02.03.01', NULL, '01', '面板', 'Panel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1936', '20.05.01.01.02.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1937', '20.05.01.01.02.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1938', '20.05.01.01.02.03.04', NULL, '04', '延伸板', 'Extension', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1939', '20.05.01.01.02.03.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('194', '10.05', NULL, '05', '排气及后处理', 'Exhaust and aftertreatment', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1940', '20.05.01.01.02.04', NULL, '04', '前风窗下横梁合件', 'Front windscreen lower cross member assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1941', '20.05.01.01.03', NULL, '03', '左/右侧围焊接总成', 'left/Right side wall weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1942', '20.05.01.01.03.01', NULL, '01', '侧围外板焊接总成', 'side wall outer plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1943', '20.05.01.01.03.01.01', NULL, '01', '侧围外板', 'side wall outer plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1944', '20.05.01.01.03.01.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1945', '20.05.01.01.03.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1946', '20.05.01.01.03.01.04', NULL, '04', '导水槽', 'Gutter', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1947', '20.05.01.01.03.01.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1948', '20.05.01.01.03.02', NULL, '02', '侧围A柱内板焊接总成', 'side wall inner plate front stage weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1949', '20.05.01.01.03.02.01', NULL, '01', 'A柱内板', 'A pillar inner plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('195', '10.05.01', NULL, '01', '排气装置', 'Exhaust gear', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1950', '20.05.01.01.03.02.02', NULL, '02', 'A柱内板加强板', 'A pillar inner plate reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1951', '20.05.01.01.03.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1952', '20.05.01.01.03.02.04', NULL, '04', '延伸板', 'Extension', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1953', '20.05.01.01.03.02.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1954', '20.05.01.01.03.03', NULL, '03', 'B/C柱内板焊接总成', 'B/C pillar upper inner plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1955', '20.05.01.01.03.03.01', NULL, '01', 'B/C柱内板', 'B/C pillar inner plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1956', '20.05.01.01.03.03.02', NULL, '02', 'B/C柱内板加强板', 'B/C pillar inner plate reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1957', '20.05.01.01.03.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1958', '20.05.01.01.03.03.04', NULL, '04', '隔热板', 'Insulation against heat plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1959', '20.05.01.01.03.03.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('196', '10.05.01.01', NULL, '01', '消声器总成', 'Muffler assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1960', '20.05.01.01.03.04', NULL, '04', '前/后门框上边梁内板焊接总成', 'front/rear door frame upper side plate inner plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1961', '20.05.01.01.03.04.01', NULL, '01', '门框前柱', 'door frame front pillar', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1962', '20.05.01.01.03.04.02', NULL, '02', '门框上边梁外板', 'outer plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1963', '20.05.01.01.03.04.03', NULL, '03', '门框上边梁内板', 'inner plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1964', '20.05.01.01.03.04.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1965', '20.05.01.01.03.04.05', NULL, '05', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1966', '20.05.01.01.03.04.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1967', '20.05.01.01.04', NULL, '04', '后围焊接总成', 'Rear wall weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1968', '20.05.01.01.04.01', NULL, '01', '后围板', 'Rear wall plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1969', '20.05.01.01.04.02', NULL, '02', '内板', 'Plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('197', '10.05.01.02', NULL, '02', '排气管', 'Exhaust pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1970', '20.05.01.01.04.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1971', '20.05.01.01.04.04', NULL, '04', '延伸板', 'Extension', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1972', '20.05.01.01.04.05', NULL, '05', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1973', '20.05.01.01.04.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1974', '20.05.01.01.05', NULL, '05', '顶盖焊接总成', 'Roof weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1975', '20.05.01.01.05.01', NULL, '01', '顶盖外板', 'Roof outer plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1976', '20.05.01.01.05.02', NULL, '02', '顶盖横梁', 'Top cover cross member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1977', '20.05.01.01.05.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1978', '20.05.01.01.05.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1979', '20.05.01.01.06', NULL, '06', '前风窗上横梁外板总成', 'Front windshield upper cross member outer plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('198', '10.05.01.04', NULL, '04', '密封垫', 'Sealing gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1980', '20.05.01.01.06.01', NULL, '01', '前风窗上横梁外板', 'Front windshield upper cross member outer plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1981', '20.05.01.01.06.02', NULL, '02', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1982', '20.05.01.01.06.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1983', '20.05.01.02', NULL, '02', 'M4白车身总装件', 'ACCESSORY ASSY BIW ASSEMBLY', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1984', '20.05.01.02.01', NULL, '01', '发动机检修盖安装板总成', 'Engine service cover plate installation plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1985', '20.05.01.02.01.01', NULL, '01', '发动机主检修盖安装板本体', 'Engine main service cover plate installation plate body', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1986', '20.05.01.02.01.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1987', '20.05.01.02.01.03', NULL, '03', '延伸板', 'Extension', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1988', '20.05.01.02.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1989', '20.05.01.02.01.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('199', '10.05.01.05', NULL, '05', '隔热罩', 'Heat shield', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1990', '20.05.01.02.02', NULL, '02', '发动机副检修盖板总成', 'Engine auxiliary service cover plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1991', '20.05.01.02.02.01', NULL, '01', '发动机副检修盖板本体', 'Engine auxiliary service cover plate body', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1992', '20.05.01.02.02.02', NULL, '02', '发动机副检修盖板把手', 'Engine auxiliary access panel handle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1993', '20.05.01.02.02.03', NULL, '03', '发动机副检修盖板卡板', 'Engine auxiliary access panel locking board', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1994', '20.05.01.02.02.04', NULL, '04', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1995', '20.05.01.02.02.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1996', '20.05.01.02.03', NULL, '03', '发动机盖板总成', 'Engine cover plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1997', '20.05.01.02.03.01', NULL, '01', '发动机盖板', 'Engine cover plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1998', '20.05.01.02.03.02', NULL, '02', '发动机盖板加强板', 'Engine cover reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1999', '20.05.01.02.03.03', NULL, '03', '发动机盖板锁支架', 'engine cover plate lock bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('19A0FF7E8EF64E8CB54', '10.03.01.28.02', '', '02', '空气滤清器外壳', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1A5A00FF745146E1B3B', '20.02.09.05', '', '05', '2型胶堵', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1AC82FB512204DDB857', '60.06.01.01.03.02', '', '02', '固定模组支架', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1CE7F4E446424F04878', '40.01.04.05', '', '05', '驻车空调安装支架', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1D49BCFA011648C4AE4', '20.03.02.08.13', '', '13', '气撑杆球头支架', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('1D627EC3B54F40D7BF4', '20.04.02.01.34', '', '34', '左后车门限位器加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('1D76D8FF6AC448169C3', '20.04.04.01.01.07', '', '07', '前舱盖前部密封条', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2', '10', NULL, '10', '动力总成', 'Power Assembly', '1', NULL, '1', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('20', '10.01.02.01', NULL, '01', '隔音板', 'Sound insulation board', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('200', '10.05.01.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2000', '20.05.01.02.03.04', NULL, '04', '发动机盖板锁扣安装板', 'engine cover plate buckle installation plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2001', '20.05.01.02.03.05', NULL, '05', '发动机盖铰链安装板', 'engine hood hinge installation plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2002', '20.05.01.02.03.06', NULL, '06', '发动机盖铰链加强板', 'engine hood hinge reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2003', '20.05.01.02.03.07', NULL, '07', '发动机盖板铰链总成', 'Engine hood panel hinge assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2004', '20.05.01.02.03.07.01', NULL, '01', '铰链静片', 'hinge stationary sheet', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2005', '20.05.01.02.03.07.02', NULL, '02', '铰链动片', 'hinge movable sheet', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2006', '20.05.01.02.03.07.03', NULL, '03', '铰链销轴', 'Hinge pin shaft', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2007', '20.05.01.02.03.07.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2008', '20.05.01.02.03.08', NULL, '08', '发动机盖板锁扣总成', 'Engine hood panel lock catch assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2009', '20.05.01.02.03.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('201', '10.05.01.08', NULL, '08', '衬套', 'Lining', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2010', '20.05.01.02.04', NULL, '04', '左右侧围连接杆总成', 'Left & right side wall connecting bar assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2011', '20.05.01.02.04.01', NULL, '01', '竖撑杆', 'vertical support rod', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2012', '20.05.01.02.04.02', NULL, '02', '横撑杆', 'cross support rod', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2013', '20.05.01.02.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2014', '20.05.01.02.04.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2015', '20.05.01.02.05', NULL, '05', '前围加强板总成', 'Front wall reinforced plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2016', '20.05.01.02.05.01', NULL, '01', '前围加强板', 'Front wall reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2017', '20.05.01.02.05.02', NULL, '02', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2018', '20.05.01.02.05.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2019', '20.05.01.02.05.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('202', '10.05.01.09', NULL, '09', '减振胶块', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2020', '20.05.01.02.06', NULL, '06', '车身中悬置安装支架总成', 'Body center suspension installation bracket assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2021', '20.05.01.02.06.01', NULL, '01', '车身中悬置安装支架', 'Body center suspension installation bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2022', '20.05.01.02.06.02', NULL, '02', '车身中悬置支架加强板', 'Body center suspension bracket reinforcing plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2023', '20.05.01.02.06.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2024', '20.05.01.02.07', NULL, '07', '前大灯安装支架总成', 'front headlamp installation bracket assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2025', '20.05.01.02.07.01', NULL, '01', '前大灯安装支架', 'front headlamp installation bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2026', '20.05.01.02.07.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2027', '20.05.01.02.07.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2028', '20.05.01.02.08', NULL, '08', '角板安装支架总成', 'angle plate mounting support assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2029', '20.05.01.02.08.01', NULL, '01', '角板安装支架', 'angle plate mounting support', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('203', '10.05.01.10', NULL, '10', '尾喉', 'Throat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2030', '20.05.01.02.08.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2031', '20.05.01.02.09', NULL, '09', '顶柜安装支架总成', 'Top cabinet installation bracket assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2032', '20.05.01.02.09.01', NULL, '01', '顶柜安装支架', 'Installation bracket of top cabinet', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2033', '20.05.01.02.09.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2034', '20.05.01.02.10', NULL, '10', '前翻转面板锁固定支架总成', 'front tilting panel lock mounting bracket assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2035', '20.05.01.02.10.01', NULL, '01', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2036', '20.05.01.02.10.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2037', '20.05.01.02.11', NULL, '11', '工具箱安装总成', 'Tool box installation assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2038', '20.05.01.02.11.01', NULL, '01', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2039', '20.05.01.02.11.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('204', '10.05.01.11', NULL, '11', '熄火帽', 'Shutdown cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2040', '20.05.01.02.11.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2041', '20.05.01.02.12', NULL, '12', '防冻防锈液加液盖板总成', 'Filler cover board assembly of antifreezing and antirust fluid', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2042', '20.05.01.02.12.01', NULL, '01', '防冻防锈液加液盖板本体', 'Filler cover board body of antifreezing and antirust fluid', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2043', '20.05.01.02.12.02', NULL, '02', '防冻防锈液加液盖板卡板', 'Filler cover board locking plate of antifreezing and antirust fluid', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2044', '20.05.01.02.12.03', NULL, '03', '防冻防锈液加液盖板把手', 'Filler cover board handle of antifreezing and antirust fluid', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2045', '20.05.01.02.12.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2046', '20.05.01.02.98', NULL, '98', '紧固件', 'Attachments/Component', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2047', '20.05.01.03', NULL, '03', '密封剂&粘合剂', 'Sealant & Adhesive', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2048', '20.05.01.03.01', NULL, '01', '密封剂', 'Sealants', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2049', '20.05.01.03.01.01', NULL, '01', '制造/焊装车间装用件', 'Fabrication/Body Shop Installed', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('205', '10.05.01.13', NULL, '13', '挠性软管', 'Hose', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2050', '20.05.01.03.01.01.01', NULL, '01', '可泵送密封胶', 'Pumpable Sealer', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2051', '20.05.01.03.01.01.02', NULL, '02', '修边/预成型/压延焊接密封胶', 'Die Cut/Preformed/Extruded Weld-Thru Sealer', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2052', '20.05.01.03.01.01.03', NULL, '03', '修边/预成型/压延隔音密封胶', 'Die Cut/Preformed/Extruded Acoustic Sealer', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2053', '20.05.01.03.01.02', NULL, '02', '涂装车间装用件', 'Paint Shop Installed', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2054', '20.05.01.03.01.02.01', NULL, '01', '可泵送密封胶', 'Pumpable Sealer', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2055', '20.05.01.03.01.02.02', NULL, '02', '修边/预成型密封胶', 'Die Cut & Preformed Sealer', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2056', '20.05.01.03.01.02.03', NULL, '03', '熔化密封胶', 'Meltdown Sealer', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2057', '20.05.01.03.01.03', NULL, '03', '总装/返工装用件', 'General Assembly/Repair Installed', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2058', '20.05.01.03.01.03.01', NULL, '01', '可泵送密封胶', 'Pumpable Sealer', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2059', '20.05.01.03.01.03.02', NULL, '02', '修边/预成型密封胶', 'Die Cut & Preformed Sealer', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('205ABED8C568431B9D6', '60.06.01.01.07.01', '', '01', '多合一接插件-带保险', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('206', '10.05.01.14', NULL, '14', '隔音罩', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2060', '20.05.01.03.02', NULL, '02', '粘合剂', 'Adhesives', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2061', '20.05.01.03.02.01', NULL, '01', '结构焊接用可泵送/预成型胶', 'Structural Bonding-Pumpable/Preformed Adhesive', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2062', '20.05.01.03.02.02', NULL, '02', '隔震胶', 'Anti-Flutter Adhesive', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2063', '20.05.01.03.02.03', NULL, '03', '折边胶', 'Hem Adhesive', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2064', '20.05.01.03.03', NULL, '03', '车身堵件', 'Body Plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2065', '20.05.01.03.04', NULL, '04', '空腔处理', 'Cavity Treatments', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2066', '20.05.01.03.05', NULL, '05', '注射泡沫', 'Injection Foam', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2067', '20.05.01.03.05.01', NULL, '01', '吸引泡沫', 'Acoustic Foam', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2068', '20.05.01.03.05.01.01', NULL, '01', '2-氨基钾酸酯', '2-Part Urethane', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2069', '20.05.01.03.05.02', NULL, '02', '结构泡沫', 'Structural Foam', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('207', '10.05.01.15', NULL, '15', '排气卡箍', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2070', '20.05.01.03.05.02.01', NULL, '01', '2-氨基钾酸酯', '2-Part Urethane', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2071', '20.05.01.04', NULL, '04', '应用的涂料', 'Applied Coatings', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2072', '20.05.01.04.01', NULL, '01', '磷酸盐', 'Phosphate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2073', '20.05.01.04.02', NULL, '02', '电泳', 'Electrocoat (ELPO)', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2074', '20.05.01.04.03', NULL, '03', '头二道混合底漆', 'Primer Surfacer', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2075', '20.05.01.04.04', NULL, '04', '底漆/清漆', 'Basecoat/Clearcoat', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2076', '20.05.01.04.05', NULL, '05', '增补漆', 'Augmentation Coatings', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2077', '20.05.01.04.06', NULL, '06', '塑胶底漆', 'Plastic Primer', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2078', '20.05.01.04.07', NULL, '07', '补漆工具', 'Touch-Up Paint Kit', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2079', '20.05.01.04.08', NULL, '08', '防锈蜡', 'WAX', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('208', '10.05.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2080', '20.05.01.05', NULL, '05', 'H4白车身焊接总成', 'Body shell weldment assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2081', '20.05.01.05.01', NULL, '01', '地板焊接总成', 'Drive sleeper cab floor weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2082', '20.05.01.05.01.01', NULL, '01', '地板总成', 'Floor subassembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2083', '20.05.01.05.01.01.01', NULL, '01', '侧地板焊接总成', 'Side floor weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2084', '20.05.01.05.01.01.01.01', NULL, '01', '侧地板分总成', 'Side floor panel subassembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2085', '20.05.01.05.01.01.01.01.01', NULL, '01', '侧地板前段总成', 'Side floor assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2086', '20.05.01.05.01.01.01.01.01.01', NULL, '01', '侧地板前段面板', 'Side floor', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2087', '20.05.01.05.01.01.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2088', '20.05.01.05.01.01.01.01.02', NULL, '02', '侧地板后段总成', 'Side floor assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2089', '20.05.01.05.01.01.01.01.02.01', NULL, '01', '侧地板后段面板', 'Side floor', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('209', '10.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2090', '20.05.01.05.01.01.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2091', '20.05.01.05.01.01.01.01.03', NULL, '03', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2092', '20.05.01.05.01.01.01.01.03.01', NULL, '01', '结构加强板', 'Reinforcement', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2093', '20.05.01.05.01.01.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2094', '20.05.01.05.01.01.01.01.04', NULL, '04', '附件安装板总成', 'Bracket assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2095', '20.05.01.05.01.01.01.01.04.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2096', '20.05.01.05.01.01.01.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2097', '20.05.01.05.01.01.01.02', NULL, '02', '边梁焊接总成', 'side member welding assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2098', '20.05.01.05.01.01.01.02.01', NULL, '01', '侧槛板总成', 'side sill plate assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2099', '20.05.01.05.01.01.01.02.01.01', NULL, '01', '侧边梁', 'side member', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('21', '10.01.02.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('210', '10.05.02', NULL, '02', '排气净化装置', 'Air exhaust purification device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2100', '20.05.01.05.01.01.01.02.01.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2101', '20.05.01.05.01.01.01.02.01.02.01', NULL, '01', '结构加强板', 'Reinforcement', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2102', '20.05.01.05.01.01.01.02.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2103', '20.05.01.05.01.01.01.02.01.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2104', '20.05.01.05.01.01.01.02.01.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2105', '20.05.01.05.01.01.01.02.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2106', '20.05.01.05.01.01.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2107', '20.05.01.05.01.01.01.02.02', NULL, '02', '侧边梁总成', 'side member assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2108', '20.05.01.05.01.01.01.02.02.01', NULL, '01', '侧边梁', 'side member', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2109', '20.05.01.05.01.01.01.02.02.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('211', '10.05.02.01', NULL, '01', '催化器总成', 'Catalysis assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2110', '20.05.01.05.01.01.01.02.02.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2111', '20.05.01.05.01.01.01.02.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2112', '20.05.01.05.01.01.01.02.02.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2113', '20.05.01.05.01.01.01.02.02.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2114', '20.05.01.05.01.01.01.02.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2115', '20.05.01.05.01.01.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2116', '20.05.01.05.01.01.01.03', NULL, '03', '纵梁焊接总成', 'side member weldment assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2117', '20.05.01.05.01.01.01.03.01', NULL, '01', '纵梁加强总成', 'side member reinforced assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2118', '20.05.01.05.01.01.01.03.01.01', NULL, '01', '纵梁总成', 'side member assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2119', '20.05.01.05.01.01.01.03.01.01.01', NULL, '01', '纵梁', 'side member', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('212', '10.05.02.03', NULL, '03', 'SCR空气滤清器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2120', '20.05.01.05.01.01.01.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2121', '20.05.01.05.01.01.01.03.01.02', NULL, '02', '纵梁前部加强梁总成', 'side member front part reinforced member assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2122', '20.05.01.05.01.01.01.03.01.02.01', NULL, '01', '纵梁前部加强梁', 'side member front part reinforced member', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2123', '20.05.01.05.01.01.01.03.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2124', '20.05.01.05.01.01.01.03.01.03', NULL, '03', '纵梁后堵板焊接总成', 'Left side member rear blocking plate assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2125', '20.05.01.05.01.01.01.03.01.03.01', NULL, '01', '纵梁后堵板', 'side member rear blocking plate', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2126', '20.05.01.05.01.01.01.03.01.03.02', NULL, '02', '附件安装板总成', 'Bracket assembly', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2127', '20.05.01.05.01.01.01.03.01.03.02.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '12', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2128', '20.05.01.05.01.01.01.03.01.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2129', '20.05.01.05.01.01.01.03.01.04', NULL, '04', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('213', '10.05.02.03.01', NULL, '01', 'SCR空气滤清器壳体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2130', '20.05.01.05.01.01.01.03.01.04.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2131', '20.05.01.05.01.01.01.03.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2132', '20.05.01.05.01.01.01.03.01.05', NULL, '05', '附件安装板总成', 'Bracket assembly', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2133', '20.05.01.05.01.01.01.03.01.05.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2134', '20.05.01.05.01.01.01.03.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2135', '20.05.01.05.01.01.01.03.02', NULL, '02', '螺栓管套', 'Suspension installation screw-tube', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2136', '20.05.01.05.01.01.01.03.03', NULL, '03', '纵梁与地板连接板', 'Side member and floor connecting plate', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2137', '20.05.01.05.01.01.01.03.04', NULL, '04', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2138', '20.05.01.05.01.01.01.03.04.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2139', '20.05.01.05.01.01.01.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('214', '10.05.02.03.02', NULL, '02', 'SCR空气滤清器滤芯', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2140', '20.05.01.05.01.01.01.03.05', NULL, '05', '附件安装板总成', 'Bracket assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2141', '20.05.01.05.01.01.01.03.05.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2142', '20.05.01.05.01.01.01.03.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2143', '20.05.01.05.01.01.02', NULL, '02', '中地板焊接总成', 'Middle floor weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2144', '20.05.01.05.01.01.02.01', NULL, '01', '中地板与后围内板连接板焊接总成', 'Center floor and rear wall inner plate connecting plate weldment assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2145', '20.05.01.05.01.01.02.01.01', NULL, '01', '中地板与后围内板连接板总成', 'Center floor and rear wall inner plate connecting plate assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2146', '20.05.01.05.01.01.02.01.01.01', NULL, '01', '中地板与后围内板连接板', 'Center floor and rear wall inner plate connecting plate', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2147', '20.05.01.05.01.01.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2148', '20.05.01.05.01.01.02.01.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2149', '20.05.01.05.01.01.02.01.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('215', '10.05.02.04', NULL, '04', '尿素泵总成', 'Urea pump assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2150', '20.05.01.05.01.01.02.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2151', '20.05.01.05.01.01.02.01.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2152', '20.05.01.05.01.01.02.01.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2153', '20.05.01.05.01.01.02.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2154', '20.05.01.05.01.01.02.02', NULL, '02', '中地板前段焊接总成', 'Center floor front stage weldment assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2155', '20.05.01.05.01.01.02.02.01', NULL, '01', '中地板前段总成', 'Center floor front stage assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2156', '20.05.01.05.01.01.02.02.01.01', NULL, '01', '中地板前段', 'Center floor front stage', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2157', '20.05.01.05.01.01.02.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2158', '20.05.01.05.01.01.02.02.02', NULL, '02', '中地板横梁总成', 'reinforced cross member assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2159', '20.05.01.05.01.01.02.02.02.01', NULL, '01', '中地板横梁', 'reinforced cross member', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('216', '10.05.02.04.01', NULL, '01', '尿素泵', 'Urea pump', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2160', '20.05.01.05.01.01.02.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2161', '20.05.01.05.01.01.02.02.03', NULL, '03', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2162', '20.05.01.05.01.01.02.02.03.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2163', '20.05.01.05.01.01.02.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2164', '20.05.01.05.01.01.02.02.04', NULL, '04', '附件安装板总成', 'Bracket assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2165', '20.05.01.05.01.01.02.02.04.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2166', '20.05.01.05.01.01.02.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2167', '20.05.01.05.01.01.02.03', NULL, '03', '中地板后段焊接总成', 'Center floor rear stage weldment assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2168', '20.05.01.05.01.01.02.03.01', NULL, '01', '中地板后段总成', 'Center floor rear stage assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2169', '20.05.01.05.01.01.02.03.01.01', NULL, '01', '中地板后段', 'Center floor rear stage', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('217', '10.05.02.04.02', NULL, '02', '尿素泵滤芯', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2170', '20.05.01.05.01.01.02.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2171', '20.05.01.05.01.01.02.03.02', NULL, '02', '中地板横梁总成', 'reinforced cross member assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2172', '20.05.01.05.01.01.02.03.02.01', NULL, '01', '中地板横梁', 'reinforced cross member', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2173', '20.05.01.05.01.01.02.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2174', '20.05.01.05.01.01.02.03.03', NULL, '03', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2175', '20.05.01.05.01.01.02.03.03.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2176', '20.05.01.05.01.01.02.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2177', '20.05.01.05.01.01.02.03.04', NULL, '04', '附件安装板总成', 'Bracket assembly', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2178', '20.05.01.05.01.01.02.03.04.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2179', '20.05.01.05.01.01.02.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('218', '10.05.02.05', NULL, '05', '尿素罐总成', 'Urea tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2180', '20.05.01.05.01.01.03', NULL, '03', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2181', '20.05.01.05.01.01.03.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2182', '20.05.01.05.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2183', '20.05.01.05.01.01.04', NULL, '04', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2184', '20.05.01.05.01.01.04.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2185', '20.05.01.05.01.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2186', '20.05.01.05.01.02', NULL, '02', '前围内板焊接总成', 'Front wall inner plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2187', '20.05.01.05.01.02.01', NULL, '01', '前围内板总成', 'Front wall inner plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2188', '20.05.01.05.01.02.01.01', NULL, '01', '前围内板', 'Front wall inner plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2189', '20.05.01.05.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('219', '10.05.02.05.01', NULL, '01', '尿素罐盖总成', 'Urea tank cover assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2190', '20.05.01.05.01.02.02', NULL, '02', '前围与地板连接板总成', 'side front wall and floor connecting plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2191', '20.05.01.05.01.02.02.01', NULL, '01', '前围与地板连接板', 'side front wall and floor connecting plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2192', '20.05.01.05.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2193', '20.05.01.05.01.02.03', NULL, '03', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2194', '20.05.01.05.01.02.03.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2195', '20.05.01.05.01.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2196', '20.05.01.05.01.02.04', NULL, '04', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2197', '20.05.01.05.01.02.04.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2198', '20.05.01.05.01.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2199', '20.05.01.05.01.03', NULL, '03', '后围内板焊接总成', 'Rear wall inner plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('22', '10.01.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('220', '10.05.02.05.02', NULL, '02', '尿素传感器', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2200', '20.05.01.05.01.03.01', NULL, '01', '后围内板', 'Rear wall inner plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2201', '20.05.01.05.01.03.02', NULL, '02', '后围内板中部加强板', 'Rear wall inner plate center part reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2202', '20.05.01.05.01.03.03', NULL, '03', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2203', '20.05.01.05.01.03.03.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2204', '20.05.01.05.01.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2205', '20.05.01.05.01.03.04', NULL, '04', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2206', '20.05.01.05.01.03.04.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2207', '20.05.01.05.01.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2208', '20.05.01.05.02', NULL, '02', '前围焊接总成', 'Front wall weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2209', '20.05.01.05.02.01', NULL, '01', '前围外板焊接总成', 'Front wall weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('221', '10.05.02.05.03', NULL, '03', '通气阀', 'Venting valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2210', '20.05.01.05.02.01.01', NULL, '01', '前围外板总成', 'Corresponding H4 front wall outer plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2211', '20.05.01.05.02.01.01.01', NULL, '01', '前围外板', 'Corresponding H4 front wall outer plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2212', '20.05.01.05.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2213', '20.05.01.05.02.01.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2214', '20.05.01.05.02.01.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2215', '20.05.01.05.02.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2216', '20.05.01.05.02.01.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2217', '20.05.01.05.02.01.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2218', '20.05.01.05.02.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2219', '20.05.01.05.02.02', NULL, '02', '前风窗外板焊接总成', 'Front windscreen outer plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('222', '10.05.02.05.04', NULL, '04', '尿素罐本体', 'Urea tank body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2220', '20.05.01.05.02.02.01', NULL, '01', '前风窗外板总成', 'Front windscreen outer plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2221', '20.05.01.05.02.02.01.01', NULL, '01', '前风窗外板', 'Front windscreen outer plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2222', '20.05.01.05.02.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2223', '20.05.01.05.02.02.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2224', '20.05.01.05.02.02.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2225', '20.05.01.05.02.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2226', '20.05.01.05.02.02.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2227', '20.05.01.05.02.02.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2228', '20.05.01.05.02.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2229', '20.05.01.05.02.03', NULL, '03', '门框前柱总成', 'side front door frame front pillar assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('223', '10.05.02.05.05', NULL, '05', '传感器滤网', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2230', '20.05.01.05.02.03.01', NULL, '01', '门框前柱', 'side front door frame front pillar', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2231', '20.05.01.05.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2232', '20.05.01.05.02.04', NULL, '04', '前风窗上横梁内板总成', 'Front windshield upper cross member inner plate assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2233', '20.05.01.05.02.04.01', NULL, '01', '前风窗上横梁内板', 'Front windshield upper cross member inner plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2234', '20.05.01.05.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2235', '20.05.01.05.02.05', NULL, '05', 'A柱内板焊接总成', 'side A pillar inner plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2236', '20.05.01.05.02.05.01', NULL, '01', 'A柱内板总成', 'side A pillar inner plate assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2237', '20.05.01.05.02.05.01.01', NULL, '01', 'A柱内板', 'Left side A pillar inner plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2238', '20.05.01.05.02.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2239', '20.05.01.05.02.05.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('224', '10.05.02.06', NULL, '06', '尿素喷嘴', 'Urea nozzle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2240', '20.05.01.05.02.05.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2241', '20.05.01.05.02.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2242', '20.05.01.05.02.05.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2243', '20.05.01.05.02.05.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2244', '20.05.01.05.02.05.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2245', '20.05.01.05.03', NULL, '03', '门框上横梁焊接总成', 'side front door frame upper side plate weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2246', '20.05.01.05.03.01', NULL, '01', '门框上边梁外板', 'front door frame upper side plate outer plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2247', '20.05.01.05.03.02', NULL, '02', '门框上边梁内板总成', 'front door frame upper side plate inner plate assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2248', '20.05.01.05.03.02.01', NULL, '01', '门框上边梁内板', 'front door frame upper side plate inner plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2249', '20.05.01.05.03.02.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('225', '10.05.02.08', NULL, '08', '尿素管', 'Urea pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2250', '20.05.01.05.03.02.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2251', '20.05.01.05.03.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2252', '20.05.01.05.03.02.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2253', '20.05.01.05.03.02.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2254', '20.05.01.05.03.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2255', '20.05.01.05.04', NULL, '04', '后围上部加强梁内板总成', 'Rear wall upper part reinforced cross member inner plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2256', '20.05.01.05.04.01', NULL, '01', '后围上部加强梁内板', 'Rear wall upper part reinforced cross member inner plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2257', '20.05.01.05.04.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2258', '20.05.01.05.04.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2259', '20.05.01.05.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('226', '10.05.02.09', NULL, '09', '水管', 'Water pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2260', '20.05.01.05.04.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2261', '20.05.01.05.04.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2262', '20.05.01.05.04.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2263', '20.05.01.05.05', NULL, '05', '排烟管导管', 'Air exhaust pipe duct', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2264', '20.05.01.05.06', NULL, '06', '后部焊接总成', 'Rear wall weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2265', '20.05.01.05.06.01', NULL, '01', '后围板焊接总成', 'Rear wall plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2266', '20.05.01.05.06.01.01', NULL, '01', '后围上板焊接总成', 'Rear wall upper plate weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2267', '20.05.01.05.06.01.01.01', NULL, '01', '后围上板', 'Rear wall upper plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2268', '20.05.01.05.06.01.01.02', NULL, '02', '后围加强纵梁总成', 'Rear wall reinforced side member assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2269', '20.05.01.05.06.01.01.02.01', NULL, '01', '后围加强纵梁', 'Rear wall reinforced side member', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('227', '10.05.02.10', NULL, '10', '电磁阀', 'Solenoid valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2270', '20.05.01.05.06.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2271', '20.05.01.05.06.01.01.03', NULL, '03', '后围加强横梁总成', 'Rear wall reinforced cross member', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2272', '20.05.01.05.06.01.01.03.01', NULL, '01', '后围加强横梁', 'Rear wall reinforced cross member', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2273', '20.05.01.05.06.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2274', '20.05.01.05.06.01.01.04', NULL, '04', '后视窗加强总总成', 'Rear window reinforced plate assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2275', '20.05.01.05.06.01.01.04.01', NULL, '01', '后视窗加强板', 'Rear window reinforced plate', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2276', '20.05.01.05.06.01.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2277', '20.05.01.05.06.01.01.05', NULL, '05', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2278', '20.05.01.05.06.01.01.05.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2279', '20.05.01.05.06.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('228', '10.05.02.11', NULL, '11', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2280', '20.05.01.05.06.01.01.06', NULL, '06', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2281', '20.05.01.05.06.01.01.06.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2282', '20.05.01.05.06.01.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2283', '20.05.01.05.06.01.02', NULL, '02', '后围下板焊接总成', 'Rear wall lower plate weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2284', '20.05.01.05.06.01.02.01', NULL, '01', '后围下板总成', 'Rear wall lower plate assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2285', '20.05.01.05.06.01.02.01.01', NULL, '01', '后围下板', 'Rear wall lower plate', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2286', '20.05.01.05.06.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2287', '20.05.01.05.06.01.02.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2288', '20.05.01.05.06.01.02.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2289', '20.05.01.05.06.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('229', '10.05.02.12', NULL, '12', '尿素罐防护盖', 'Urea tank shield cap', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2290', '20.05.01.05.06.01.02.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2291', '20.05.01.05.06.01.02.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2292', '20.05.01.05.06.01.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2293', '20.05.01.05.06.02', NULL, '02', '侧围骨架焊接总成', 'side wall frame weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2294', '20.05.01.05.06.02.01', NULL, '01', '后立柱总成', 'Rear stand column assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2295', '20.05.01.05.06.02.01.01', NULL, '01', '后立柱', 'C pillar', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2296', '20.05.01.05.06.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2297', '20.05.01.05.06.02.02', NULL, '02', '侧围下加强梁总成', 'side wall lower reinforced member assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2298', '20.05.01.05.06.02.02.01', NULL, '01', '侧围下加强梁', 'side wall lower reinforced member', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2299', '20.05.01.05.06.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('22C02D1E8712442BB23', '10.03.01.26.01', '', '01', '液压油箱体', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('22F02BEAD1514FCCAA5', '10.03.01.35', '', '35', '安装法兰', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('23', '10.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('230', '10.05.02.14', NULL, '14', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2300', '20.05.01.05.06.02.03', NULL, '03', 'B柱焊接总成', 'Right side B pillar weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2301', '20.05.01.05.06.02.03.01', NULL, '01', 'B柱', 'Right side B pillar', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2302', '20.05.01.05.06.02.03.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2303', '20.05.01.05.06.02.03.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2304', '20.05.01.05.06.02.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2305', '20.05.01.05.06.02.03.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2306', '20.05.01.05.06.02.03.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2307', '20.05.01.05.06.02.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2308', '20.05.01.05.06.02.04', NULL, '04', '右侧围上加强梁外板', 'Right side wall upper reinforced member outer plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2309', '20.05.01.05.06.02.05', NULL, '05', '侧围横梁', 'Side wall stiffening member', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('231', '10.05.02.16', NULL, '16', '气管', 'Air pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2310', '20.05.01.05.06.02.06', NULL, '06', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2311', '20.05.01.05.06.02.06.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2312', '20.05.01.05.06.02.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2313', '20.05.01.05.06.02.07', NULL, '07', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2314', '20.05.01.05.06.02.07.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2315', '20.05.01.05.06.02.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2316', '20.05.01.05.06.03', NULL, '03', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2317', '20.05.01.05.06.03.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2318', '20.05.01.05.06.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2319', '20.05.01.05.06.04', NULL, '04', '附件安装板总成', 'Bracket assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('232', '10.05.02.17', NULL, '17', '后处理控制单元', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2320', '20.05.01.05.06.04.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2321', '20.05.01.05.06.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2322', '20.05.01.05.06.05', NULL, '05', '侧围面板焊接总成', 'Left side wall outer plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2323', '20.05.01.05.06.05.01', NULL, '01', '侧围面板', 'Left side wall outer plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2324', '20.05.01.05.06.05.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2325', '20.05.01.05.06.05.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2326', '20.05.01.05.06.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2327', '20.05.01.05.06.05.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2328', '20.05.01.05.06.05.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2329', '20.05.01.05.06.05.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('233', '10.05.02.19', NULL, '19', '传感器及线束总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2330', '20.05.01.05.06.06', NULL, '06', '后围上部加强梁外板', 'Rear wall upper part reinforced cross member outer plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2331', '20.05.01.05.06.07', NULL, '07', '后围加强横梁', 'Rear wall center part reinforced cross member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2332', '20.05.01.05.07', NULL, '07', '顶盖焊接总成', 'Roof weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2333', '20.05.01.05.07.01', NULL, '01', '顶盖外板焊接总成', 'Roof outer plate weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2334', '20.05.01.05.07.01.01', NULL, '01', '中顶盖焊接总成', 'Center roof weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2335', '20.05.01.05.07.01.01.01', NULL, '01', '中顶盖板', 'Center roof plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2336', '20.05.01.05.07.01.01.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2337', '20.05.01.05.07.01.01.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2338', '20.05.01.05.07.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2339', '20.05.01.05.07.01.01.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('234', '10.05.02.20', NULL, '20', '传感器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2340', '20.05.01.05.07.01.01.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2341', '20.05.01.05.07.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2342', '20.05.01.05.07.01.02', NULL, '02', '侧顶盖焊接总成', 'Left roof weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2343', '20.05.01.05.07.01.02.01', NULL, '01', '侧顶盖板', 'Left roof plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2344', '20.05.01.05.07.01.02.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2345', '20.05.01.05.07.01.02.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2346', '20.05.01.05.07.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2347', '20.05.01.05.07.01.02.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2348', '20.05.01.05.07.01.02.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2349', '20.05.01.05.07.01.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('235', '10.05.02.23', NULL, '23', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2350', '20.05.01.05.07.01.03', NULL, '03', '前顶盖焊接总成', 'Front roof weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2351', '20.05.01.05.07.01.03.01', NULL, '01', '前顶盖板', 'Front roof cover plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2352', '20.05.01.05.07.01.03.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2353', '20.05.01.05.07.01.03.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2354', '20.05.01.05.07.01.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2355', '20.05.01.05.07.01.03.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2356', '20.05.01.05.07.01.03.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2357', '20.05.01.05.07.01.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2358', '20.05.01.05.07.01.04', NULL, '04', '后顶盖焊接总成', 'Rear roof weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2359', '20.05.01.05.07.01.04.01', NULL, '01', '后顶盖板', 'Rear roof plate', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('236', '10.05.02.24', NULL, '24', '拉带', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2360', '20.05.01.05.07.01.04.02', NULL, '02', '结构加强件总成/结构加强件', 'Reinforcement assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2361', '20.05.01.05.07.01.04.02.01', NULL, '01', '结构加强件', 'Reinforcement', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2362', '20.05.01.05.07.01.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2363', '20.05.01.05.07.01.04.03', NULL, '03', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2364', '20.05.01.05.07.01.04.03.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2365', '20.05.01.05.07.01.04.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2366', '20.05.01.05.07.02', NULL, '02', '顶盖骨架焊接总成', 'Roof frame weldment assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2367', '20.05.01.05.07.02.01', NULL, '01', '顶盖加强梁分总成/顶盖加强梁', 'Left side roof front reinforced member weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2368', '20.05.01.05.07.02.01.01', NULL, '01', '顶盖加强梁', 'Side roof front reinforced member', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2369', '20.05.01.05.07.02.01.02', NULL, '02', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('237', '10.05.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2370', '20.05.01.05.07.02.01.02.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2371', '20.05.01.05.07.02.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2372', '20.05.01.05.07.02.02', NULL, '02', '中顶盖加强板焊接总成', 'Center roof reinforced plate weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2373', '20.05.01.05.07.02.02.01', NULL, '01', '中顶盖加强板总成', 'Center roof reinforced plate assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2374', '20.05.01.05.07.02.02.01.01', NULL, '01', '中顶盖加强板', 'Center roof reinforced plate', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2375', '20.05.01.05.07.02.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2376', '20.05.01.05.07.02.02.02', NULL, '02', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2377', '20.05.01.05.07.02.02.02.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2378', '20.05.01.05.07.02.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2379', '20.05.01.05.07.02.03', NULL, '03', '连接梁焊接总成', 'Connecting member weldment assembly', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('238', '10.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2380', '20.05.01.05.07.02.03.01', NULL, '01', '连接梁', 'Connecting member', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2381', '20.05.01.05.07.02.03.02', NULL, '02', '附件安装板总成', 'Bracket assembly', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2382', '20.05.01.05.07.02.03.02.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2383', '20.05.01.05.07.02.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2384', '20.05.01.06', NULL, '06', '附件安装板总成/附件安装板', 'Bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2385', '20.05.01.06.01', NULL, '01', '附件安装板', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2386', '20.05.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2387', '20.05.01.07', NULL, '07', '白车身(调整)总成', 'Body shell adjustment assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2388', '20.05.01.07.01', NULL, '01', '蓄电池支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2389', '20.05.02', NULL, '02', '白车身喷涂及密封', 'Body shell painting and sealing', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('239', '10.06', NULL, '06', '传动系统', 'Drivetrain', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2390', '20.05.02.01', NULL, '01', '阻尼垫', 'damping cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2391', '20.05.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2392', '20.05.03', NULL, '03', '车身NVH降噪', 'Body NVH noise reduction', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2393', '20.05.03.01', NULL, '01', '补强片', 'Reinforce panel', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2394', '20.05.03.02', NULL, '02', '发泡材料', 'Foam material', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2395', '20.05.03.03', NULL, '03', '隔断', 'Partition', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2396', '20.05.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2397', '20.06', NULL, '06', '底盘外饰系统', 'Chassis exterior system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2398', '20.06.01', NULL, '01', '脚踏板', 'Pedal', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2399', '20.06.01.01', NULL, '01', '脚踏板支架', 'Pedal bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('24', '10.01.03', NULL, '03', '动力系统防护装置', 'Power System Guard Device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('240', '10.06.01', NULL, '01', '离合器装置', 'Clutch device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2400', '20.06.01.01.01', NULL, '01', '脚踏板支撑管', 'Pedal supporting tube', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2401', '20.06.01.01.01.01', NULL, '01', '脚踏板支撑管', 'Pedal supporting tube', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2402', '20.06.01.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2403', '20.06.01.01.03', NULL, '03', '脚踏板固定座', 'Pedal fixing holder', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2404', '20.06.01.01.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2405', '20.06.01.02', NULL, '02', '脚踏板护罩', 'pedal assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2406', '20.06.01.02.01', NULL, '01', '护罩', 'Protection cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2407', '20.06.01.02.02', NULL, '02', '盖板', 'Cover plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2408', '20.06.01.03', NULL, '03', '脚踏板', 'level pedal pad', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2409', '20.06.01.03.01', NULL, '01', '踏板', 'Pedal', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('241', '10.06.01.01', NULL, '01', '离合器压盘带盖总成', 'Clutch pressure plate and cover assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2410', '20.06.01.04', NULL, '04', '踏板垫', 'Pedal pad', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2411', '20.06.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2412', '20.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2413', '20.07', NULL, '07', '车身悬置、翻转及锁止系统', 'Body mount, overturn and locking system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2414', '20.07.01', NULL, '01', '车身前悬置系统', 'Body front suspension system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2415', '20.07.01.01', NULL, '01', '上支架总成', 'Bracket on Cab FRT', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2416', '20.07.01.01.01', NULL, '01', '上支架', 'Upper upper support', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2417', '20.07.01.01.02', NULL, '02', '限位块', 'Limiting block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2418', '20.07.01.01.03', NULL, '03', '橡胶减振软垫总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2419', '20.07.01.01.98', NULL, '98', '紧固件', 'Tools Assambly(Fastener)', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('242', '10.06.01.02', NULL, '02', '从动盘总成', 'Driven plate assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2420', '20.07.01.02', NULL, '02', '固定座总成', 'Bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2421', '20.07.01.02.01', NULL, '01', '固定座', 'Fixing seat', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2422', '20.07.01.02.02', NULL, '02', '橡胶减振软垫总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2423', '20.07.01.03', NULL, '03', '支撑座', 'Base', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2424', '20.07.01.04', NULL, '04', '稳定杆总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2425', '20.07.01.04.01', NULL, '01', '摆臂', 'Swing arm', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2426', '20.07.01.04.02', NULL, '02', '稳定杆', 'Stabilizer handle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2427', '20.07.01.04.03', NULL, '03', '衬套', 'Lining', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2428', '20.07.01.05', NULL, '05', '弹簧减振器', 'Shock Absorber', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2429', '20.07.01.06', NULL, '06', '高度阀总成', 'H right side valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('243', '10.06.01.03', NULL, '03', '定位销', 'Location pin', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2430', '20.07.01.06.01', NULL, '01', '高度阀', 'Altitude valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2431', '20.07.01.06.02', NULL, '02', '纵拉杆', 'Pull Rod', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2432', '20.07.01.06.03', NULL, '03', '连接球头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2433', '20.07.01.06.04', NULL, '04', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2434', '20.07.01.06.98', NULL, '98', '紧固件', 'Tools Assambly(Fastener)', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2435', '20.07.01.07', NULL, '07', '支撑臂横管梁总成', 'Crossmember bracket on cab frt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2436', '20.07.01.07.01', NULL, '01', '支撑臂', 'Beating bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2437', '20.07.01.07.02', NULL, '02', '横梁管', 'Bracket on cab frt', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2438', '20.07.01.07.03', NULL, '03', '花键管', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2439', '20.07.01.07.04', NULL, '04', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('244', '10.06.01.04', NULL, '04', '离合器分离轴承', 'Clutch release bearing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2440', '20.07.01.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2441', '20.07.01.08', NULL, '08', '扭杆', 'Torsion bar', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2442', '20.07.01.09', NULL, '09', '扭杆臂总成', 'Torsion bar fixing arm assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2443', '20.07.01.09.01', NULL, '01', '扭杆臂', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2444', '20.07.01.09.02', NULL, '02', '扭杆轴套', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2445', '20.07.01.10', NULL, '10', '摇臂', 'Rocker arm', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2446', '20.07.01.11', NULL, '11', '摇臂滑轮', 'Rocker arm pulley', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2447', '20.07.01.12', NULL, '12', '轴套', 'Shaft sleeve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2448', '20.07.01.13', NULL, '13', '衬套', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2449', '20.07.01.14', NULL, '14', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('245', '10.06.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2450', '20.07.01.15', NULL, '15', '翻转轴', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2451', '20.07.01.16', NULL, '16', '限位块', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2452', '20.07.01.17', NULL, '17', '气管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2453', '20.07.01.18', NULL, '18', '前悬置总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2454', '20.07.01.19', NULL, '19', '翻转机构总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2455', '20.07.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2456', '20.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2457', '20.07.02', NULL, '02', '车身后悬置及锁止机构', 'Body rear suspension and lock mechanism', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2458', '20.07.02.01', NULL, '01', '橡胶软垫总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2459', '20.07.02.02', NULL, '02', '支架及其他附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('246', '10.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2460', '20.07.02.03', NULL, '03', '下支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2461', '20.07.02.04', NULL, '04', '横梁', 'Cross member', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2462', '20.07.02.05', NULL, '05', '支撑座', 'Base', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2463', '20.07.02.06', NULL, '06', '横向连接支架总成', 'Tie handle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2464', '20.07.02.06.01', NULL, '01', '连接支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2465', '20.07.02.06.02', NULL, '02', '衬套', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2466', '20.07.02.07', NULL, '07', '弹簧减振器', 'Shock Absorber RR', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2467', '20.07.02.08', NULL, '08', '高度阀总成', 'Altitude valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2468', '20.07.02.08.01', NULL, '01', '高度阀', 'Altitude valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2469', '20.07.02.08.02', NULL, '02', '纵拉杆', 'Pull Rod', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('246956AA5BCE4E5C929', '20.04.01.01.11', '', '11', '右前门三角窗内装饰条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('247', '10.06.02', NULL, '02', '变速器', 'Transmission', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2470', '20.07.02.08.03', NULL, '03', '连接球头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2471', '20.07.02.08.04', NULL, '04', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2472', '20.07.02.08.98', NULL, '98', '紧固件', 'Tools Assambly(Fastener)', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2473', '20.07.02.09', NULL, '09', '托架总成', 'bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2474', '20.07.02.09.01', NULL, '01', '托架', 'bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2475', '20.07.02.10', NULL, '10', '锁体总成', 'lock body assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2476', '20.07.02.11', NULL, '11', '操纵机构总成', 'operation mechanism assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2477', '20.07.02.12', NULL, '12', '短拉杆', 'short pull handle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2478', '20.07.02.13', NULL, '13', '长拉杆总成', 'long pull handle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2479', '20.07.02.13.01', NULL, '01', '长拉杆', 'long pull handle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('248', '10.06.02.01', NULL, '01', '支架', 'Brack', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2480', '20.07.02.14', NULL, '14', '连接板', 'connection plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2481', '20.07.02.15', NULL, '15', '副锁钩拉杆', 'Pull rod, auxiliary locking hook', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2482', '20.07.02.16', NULL, '16', '上锁体总成', 'lock body assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2483', '20.07.02.16.01', NULL, '01', '上锁体支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2484', '20.07.02.16.02', NULL, '02', '导向套', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2485', '20.07.02.16.03', NULL, '03', '销轴', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2486', '20.07.02.16.04', NULL, '04', '轴套', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2487', '20.07.02.16.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2488', '20.07.02.17', NULL, '17', '橡胶软垫总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2489', '20.07.02.18', NULL, '18', '气管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('249', '10.06.02.02', NULL, '02', '控制器总成', 'Controller assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2490', '20.07.02.19', NULL, '19', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2491', '20.07.02.20', NULL, '20', '后悬置总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2492', '20.07.02.21', NULL, '21', '塑料轴套', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2493', '20.07.02.22', NULL, '22', '标识', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2494', '20.07.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2495', '20.07.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2496', '20.07.03', NULL, '03', '车身翻转系统', 'Body turnover system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2497', '20.07.03.01', NULL, '01', '油缸', 'Cylinder', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2498', '20.07.03.02', NULL, '02', '电动泵', 'Handle Pump', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2499', '20.07.03.03', NULL, '03', '手动泵', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('25', '10.01.03.01', NULL, '01', '防护罩', 'Guard cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('250', '10.06.02.03', NULL, '03', '自动变速器总成', 'Automatic transmission assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2500', '20.07.03.04', NULL, '04', '手动泵支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2501', '20.07.03.05', NULL, '05', '电动泵支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2502', '20.07.03.06', NULL, '06', '电动泵控制器', 'Electric Pump Controller', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2503', '20.07.03.07', NULL, '07', '电动举升开关', 'Electric lifting switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2504', '20.07.03.08', NULL, '08', '液压举升管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2505', '20.07.03.09', NULL, '09', '油缸下支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2506', '20.07.03.09.01', NULL, '01', '油缸下支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2507', '20.07.03.09.02', NULL, '02', '轴', 'Axle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2508', '20.07.03.10', NULL, '10', '油缸上支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2509', '20.07.03.11', NULL, '11', '标识', 'Identification', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('251', '10.06.02.03.01', NULL, '01', '自动变速器', 'Automatic transmission', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2510', '20.07.03.12', NULL, '12', '撑杆总成', 'Support handle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2511', '20.07.03.13', NULL, '13', '拉手', 'Handle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2512', '20.07.03.14', NULL, '14', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2513', '20.07.03.15', NULL, '15', '密封垫', 'gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2514', '20.07.03.16', NULL, '16', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2515', '20.07.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2516', '20.07.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2517', '20.08', NULL, '08', '标志和铭牌', 'Sign and nameplate', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2518', '20.08.01', NULL, '01', '标志牌', 'Sign board', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2519', '20.08.01.01', NULL, '01', '标识标签', 'Children lock label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('252', '10.06.02.03.02', NULL, '02', '液力变矩器总成', 'Rocking bar support', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2520', '20.08.01.02', NULL, '02', '警告标签', 'Air bag warning label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2521', '20.08.01.03', NULL, '03', 'VIN识别标牌', 'VIN (vehicle identification nameplate)', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2522', '20.08.01.04', NULL, '04', '轮胎气压标签', 'Tire pressure label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2523', '20.08.01.05', NULL, '05', '空调警告标签', 'Air conditioner warning label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2524', '20.08.01.06', NULL, '06', '说明标签', 'Turnover lock mechanism nameplate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2525', '20.08.01.07', NULL, '07', '加油小门警告标签', 'Fuel opening warning label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2526', '20.08.01.08', NULL, '08', '车辆限速标识', 'Speed limit sign', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2527', '20.08.01.09', NULL, '09', 'ECM警告标签', 'ECM warning label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2528', '20.08.01.10', NULL, '10', '发动机保养警示牌', 'Engine maintenance warning board', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2529', '20.08.01.11', NULL, '11', '分动器使用说明标签', 'Power driver instructions label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('253', '10.06.02.03.03', NULL, '03', '连接盘', 'Connecting disc', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2530', '20.08.01.12', NULL, '12', '感载比例阀说明标签', 'Load sensing proportional valve instructions label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2531', '20.08.01.13', NULL, '13', '《用户须知》警示牌', 'Customer Notice warning nameplate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2532', '20.08.01.14', NULL, '14', '制动液说明牌', 'Brake fluid instruction plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2533', '20.08.01.15', NULL, '15', '车门紧急锁止标识', 'Door emergency locking mark', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2534', '20.08.01.16', NULL, '16', '行李重量标签', 'Luggage weight label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2535', '20.08.01.17', NULL, '17', '最高车速标签', 'Maximum speed label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2536', '20.08.01.18', NULL, '18', '乘员分类及数量标签', 'Passenger type and number label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2537', '20.08.01.19', NULL, '19', '急救包标签', 'First-aid kit label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2538', '20.08.01.20', NULL, '20', '一致性符合标签', 'Consistency acceptance label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2539', '20.08.01.21', NULL, '21', 'EBP使用说明牌', 'Board of instructions for EBP use', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('254', '10.06.02.03.04', NULL, '04', '齿轮和柔性盘总成', 'Gear and flexible disc assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2540', '20.08.01.22', NULL, '22', '三排座椅折叠说明标签', 'Label of instructions for three-row seat folding', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2541', '20.08.01.23', NULL, '23', '后视镜警示牌', 'Rearview mirror warning plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2542', '20.08.01.24', NULL, '24', '呼叫服务提示牌', 'Call service prompt plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2543', '20.08.01.25', NULL, '25', '燃油加注警示牌', 'Fuel filling warning sign', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2544', '20.08.01.26', NULL, '26', '散热器警告牌', 'Radiator warning board', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2545', '20.08.01.27', NULL, '27', '转向警告牌', 'Steering warning board', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2546', '20.08.01.28', NULL, '28', '风扇警示牌', 'Fan warning sign', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2547', '20.08.01.29', NULL, '29', 'mark认证标签', 'Mark certification label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2548', '20.08.01.30', NULL, '30', '蓄电池标签', 'Battery Label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2549', '20.08.01.31', NULL, '31', '制动系统气压及响应时间标签', 'Brake system pressure and response time label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('255', '10.06.02.03.05', NULL, '05', '曲轴毅', 'Crankcase', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2550', '20.08.01.32', NULL, '32', '载荷布置标识', 'Load layout identification', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2551', '20.08.01.33', NULL, '33', 'DPF后处理警示标签', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2552', '20.08.01.34', NULL, '34', '开关标签', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2553', '20.08.01.35', NULL, '35', '再生开关', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2554', '20.08.01.36', NULL, '36', '禁止再生开关', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2555', '20.08.01.37', NULL, '37', '出厂标记', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2556', '20.08.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2557', '20.08.02', NULL, '02', '铭牌', 'Nameplate', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2558', '20.08.02.01', NULL, '01', '整车铭牌', 'Complete vehicle nameplate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2559', '20.08.02.02', NULL, '02', '出厂标记', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('256', '10.06.02.03.06', NULL, '06', '曲轴毅垫片', 'Crankcase shim', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2560', '20.08.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2561', '20.08.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2562', '20.08.03', NULL, '03', '车身标志', 'Body emblem', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2563', '20.08.03.01', NULL, '01', '侧标', 'Body side emblem(6 375W)', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2564', '20.08.03.02', NULL, '02', '车辆监控芯片', 'Monitor chip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2565', '20.08.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2566', '20.08.04', NULL, '04', '车身外包装', 'Outer packing of body', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2567', '20.08.04.01', NULL, '01', '标识', 'Identification', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2568', '20.08.04.02', NULL, '02', '客户服务呼叫卡', 'Call alert service signboard', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2569', '20.08.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('257', '10.06.02.03.07', NULL, '07', '输出法兰', 'Output flange', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2570', '20.08.05', NULL, '05', '货箱外包装', 'Outer packing of cargo body', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2571', '20.08.05.01', NULL, '01', '车后标牌', 'Body rear nameplate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2572', '20.08.05.02', NULL, '02', '后轮防溅板', 'Rear wheel anti-splash plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2573', '20.08.05.03', NULL, '03', '厢车标识', 'Van emblem', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2574', '20.08.05.04', NULL, '04', '导流罩标识', 'Deflector identification', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2575', '20.08.05.05', NULL, '05', '反光标识', 'Reflective logo', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2576', '20.08.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2577', '20.08.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2578', '20.09', NULL, '09', '空气动力学组', 'Aerodynamic group', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2579', '20.09.01', NULL, '01', '导流装置', 'Deflector device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('258', '10.06.02.03.08', NULL, '08', '电控单元', 'Electronic control unit', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2580', '20.09.01.01', NULL, '01', '导流件', 'Diversion part', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2581', '20.09.01.01.01', NULL, '01', '导流罩', 'Deflector cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2582', '20.09.01.01.01.01', NULL, '01', '导流罩本体', 'Diversion cover body', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2583', '20.09.01.01.02', NULL, '02', '衬板', 'Deflector cover left lining plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2584', '20.09.01.01.03', NULL, '03', '导流板', 'Left deflector', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2585', '20.09.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2586', '20.09.01.03', NULL, '03', '警示牌', 'Warning board', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2587', '20.09.01.04', NULL, '04', '电机', 'motor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2588', '20.09.01.05', NULL, '05', '电机护罩', 'Motor shield', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2589', '20.09.01.06', NULL, '06', '加强杆', 'Reinforcing rod', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('259', '10.06.02.03.09', NULL, '09', '加油尺', 'Oil dipstick', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2590', '20.09.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2591', '20.09.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2592', '30', NULL, '30', '底盘', 'Chassis', '1', NULL, '1', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2593', '30.01', NULL, '01', '车架', 'Frame', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2594', '30.01.01', NULL, '01', '车架', 'Frame assembly', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2595', '30.01.01.01', NULL, '01', '车架总成', 'Frame assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2596', '30.01.01.01.01', NULL, '01', '纵梁总成', 'Left side member assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2597', '30.01.01.01.01.01', NULL, '01', '纵梁', 'Side member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2598', '30.01.01.01.01.02', NULL, '02', '纵梁加强板', 'Side member inner lining member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2599', '30.01.01.01.01.03', NULL, '03', '焊母', 'Welding base metal', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('25A42548DCF24CB9ABE', '60.06.01.01.09.02', '', '02', 'A箱连接排-模组到输出负', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('26', '10.01.03.01.01', NULL, '01', '防护罩骨架板', 'Frame plate of protective cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('260', '10.06.02.03.10', NULL, '10', '变速器主线束', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2600', '30.01.01.01.02', NULL, '02', '横梁总成-槽型', 'First cross member assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2601', '30.01.01.01.02.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2602', '30.01.01.01.02.02', NULL, '02', '横梁连接板', 'Cross member connecting plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2603', '30.01.01.01.02.03', NULL, '03', '横梁加强板', 'cross member reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2604', '30.01.01.01.02.04', NULL, '04', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2605', '30.01.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2606', '30.01.01.01.03', NULL, '03', '横梁总成-圆管型', 'First cross member assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2607', '30.01.01.01.03.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2608', '30.01.01.01.03.02', NULL, '02', '横梁连接板', 'Cross member connecting plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2609', '30.01.01.01.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('261', '10.06.02.03.11', NULL, '11', 'CAN线束', 'CAN harness', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2610', '30.01.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2611', '30.01.01.01.04', NULL, '04', '横梁总成-上下片式', 'First cross member assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2612', '30.01.01.01.04.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2613', '30.01.01.01.04.02', NULL, '02', '横梁连接板', 'Cross member connecting plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2614', '30.01.01.01.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2615', '30.01.01.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2616', '30.01.01.01.05', NULL, '05', '备胎横梁总成', 'Spare tire cross member assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2617', '30.01.01.01.05.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2618', '30.01.01.01.05.02', NULL, '02', '横梁连接板', 'Cross member connecting plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2619', '30.01.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('262', '10.06.02.03.12', NULL, '12', '压力开关', 'pressure switch', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2620', '30.01.01.01.06', NULL, '06', '支架总成', 'Powertrain mount bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2621', '30.01.01.01.06.01', NULL, '01', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2622', '30.01.01.01.06.01.01', NULL, '01', '支架本体', 'Bracket body', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2623', '30.01.01.01.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2624', '30.01.01.01.06.02', NULL, '02', '支撑梁总成-前悬置', 'Support beam assembly - Front mount', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2625', '30.01.01.01.06.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2626', '30.01.01.01.06.02.02', NULL, '02', '轴管', 'Shaft pipe', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2627', '30.01.01.01.06.03', NULL, '03', '支架总成', 'Bracket assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2628', '30.01.01.01.06.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2629', '30.01.01.01.06.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('263', '10.06.02.03.13', NULL, '13', '专用油标签', 'Parking brake front cable', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2630', '30.01.01.01.06.03.03', NULL, '03', '焊母', 'Welding base metal', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2631', '30.01.01.01.07', NULL, '07', '拖车钩', 'Towing hook', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2632', '30.01.01.01.08', NULL, '08', '垫板', 'Base plate (front towing hook)', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2633', '30.01.01.01.09', NULL, '09', '加强板', 'Reinforced plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2634', '30.01.01.01.10', NULL, '10', '螺纹管', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2635', '30.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2636', '30.01.02', NULL, '02', '副车架', 'Subframe', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2637', '30.01.02.01', NULL, '01', '副车架总成', 'Subframe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2638', '30.01.02.01.01', NULL, '01', '纵梁总成', 'Side member assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2639', '30.01.02.01.01.01', NULL, '01', '纵梁', 'side menmber', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('264', '10.06.02.03.14', NULL, '14', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2640', '30.01.02.01.01.02', NULL, '02', '纵梁加强板', 'side menmber inner linning member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2641', '30.01.02.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2642', '30.01.02.01.01.04', NULL, '04', '焊母', 'Nut', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2643', '30.01.02.01.02', NULL, '02', '横梁总成', 'first cross member assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2644', '30.01.02.01.02.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2645', '30.01.02.01.02.02', NULL, '02', '横梁加强板', 'Cross member reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2646', '30.01.02.01.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2647', '30.01.02.01.02.98', NULL, '98', '紧固件', 'fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2648', '30.01.02.01.03', NULL, '03', '连接座总成', 'Connecting seat assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2649', '30.01.02.01.03.01', NULL, '01', '连接座本体', 'Connecting seat', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('265', '10.06.02.03.15', NULL, '15', '过渡壳', 'Transitional housing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2650', '30.01.02.01.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2651', '30.01.02.01.04', NULL, '04', '螺母板总成', 'Nut plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2652', '30.01.02.01.04.01', NULL, '01', '螺母板本体', 'Nut plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2653', '30.01.02.01.04.02', NULL, '02', '螺母', 'Nut', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2654', '30.01.02.01.05', NULL, '05', '翻转座总成', 'Turn-over support assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2655', '30.01.02.01.05.01', NULL, '01', '翻转座本体', 'Turn-over seat', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2656', '30.01.02.01.05.02', NULL, '02', '轴套', 'Shaft sleeve', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2657', '30.01.02.01.06', NULL, '06', '货箱撑杆总成', 'Cargo support bar assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2658', '30.01.02.01.06.01', NULL, '01', '货箱撑杆', 'Cargo support bar', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2659', '30.01.02.01.06.02', NULL, '02', '轴套', 'Shaft sleeve', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('266', '10.06.02.03.16', NULL, '16', '变速器电控机构', 'Transmission electronic control mechanism', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2660', '30.01.02.01.07', NULL, '07', '货箱撑杆座总成', 'Support bar assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2661', '30.01.02.01.07.01', NULL, '01', '撑杆支架', 'Support bar Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2662', '30.01.02.01.07.02', NULL, '02', '撑杆支撑板', 'Support bar plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2663', '30.01.02.01.07.98', NULL, '98', '紧固件', 'fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2664', '30.01.02.01.08', NULL, '08', '换向阀支架总成', 'Reversing valve bracket assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2665', '30.01.02.01.08.01', NULL, '01', '换向阀支架', 'Reversing valve bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2666', '30.01.02.01.08.98', NULL, '98', '紧固件', 'fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2667', '30.01.02.01.09', NULL, '09', '拉杆座总成', 'pull rod seat assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2668', '30.01.02.01.09.01', NULL, '01', '拉杆座', 'pull rod seat', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2669', '30.01.02.01.09.02', NULL, '02', '限位块', 'Cargo limit plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('267', '10.06.02.03.17', NULL, '17', '变速器油箱', 'Transmission fluid tank', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2670', '30.01.02.01.09.03', NULL, '03', '轴套', 'Shaft sleeve', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2671', '30.01.02.01.10', NULL, '10', '油缸座总成', 'Oil cylinder seat assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2672', '30.01.02.01.10.01', NULL, '01', '油缸座', 'Oil cylinder seat', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2673', '30.01.02.01.10.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2674', '30.01.02.01.10.03', NULL, '03', '压板', 'pressure plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2675', '30.01.02.01.10.04', NULL, '04', '轴套', 'Shaft sleeve', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2676', '30.01.02.01.10.98', NULL, '98', '紧固件', 'fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2677', '30.01.02.01.11', NULL, '11', '货箱托架总成', 'Bracket weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2678', '30.01.02.01.11.01', NULL, '01', '限位板', 'Cargo limit plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2679', '30.01.02.01.11.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('268', '10.06.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2680', '30.01.02.01.11.98', NULL, '98', '紧固件', 'fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2681', '30.01.02.01.12', NULL, '12', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2682', '30.01.02.01.13', NULL, '13', '货箱限位板', 'Cargo limit plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2683', '30.01.02.01.14', NULL, '14', '翻转轴', 'turnover shaft', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2684', '30.01.02.01.15', NULL, '15', '连接板', 'connecting plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2685', '30.01.02.01.16', NULL, '16', '加强板', 'Reinforced plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2686', '30.01.02.02', NULL, '02', '骑马螺栓', 'U bolt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2687', '30.01.02.03', NULL, '03', '骑马螺栓压板', 'Pressure plate for U bolt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2688', '30.01.02.04', NULL, '04', '垫木', 'Skid', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2689', '30.01.02.05', NULL, '05', '垫木压板', 'Skid pressure block', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('269', '10.06.02.04', NULL, '04', '手动变速器总成', 'Transmission assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2690', '30.01.02.06', NULL, '06', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2691', '30.01.02.98', NULL, '98', '紧固件', 'fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2692', '30.02', NULL, '02', '悬架系统', 'Suspension system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2693', '30.02.01', NULL, '01', '前悬架', 'Front suspension', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2694', '30.02.01.01', NULL, '01', '钢板弹簧总成', 'Leaf spring assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2695', '30.02.01.01.01', NULL, '01', '钢板弹簧片', 'Spring leaf', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2696', '30.02.01.01.02', NULL, '02', '钢板弹簧附件', 'Leaf spring accessory', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2697', '30.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2698', '30.02.01.02', NULL, '02', '空气悬架总成', 'air suspension assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2699', '30.02.01.03', NULL, '03', '减振器总成', 'Shock absorber assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('26D833363E094A0CBC6', '10.03.01.38', '', '38', '密封圈', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('27', '10.01.03.01.02', NULL, '02', '防护罩吸音隔热层', 'Acoustic absorption and thermal insulation layer of protective cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('270', '10.06.02.04.01', NULL, '01', '变速器本体', 'Transmission body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2700', '30.02.01.03.01', NULL, '01', '减振器', 'Front shock absorber', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2701', '30.02.01.03.02', NULL, '02', '衬套', 'Lining', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2702', '30.02.01.03.03', NULL, '03', '垫片', 'Gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2703', '30.02.01.04', NULL, '04', '前螺旋弹簧', 'Front coil spring', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2704', '30.02.01.05', NULL, '05', '稳定杆总成', 'Stabilizer bar assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2705', '30.02.01.05.01', NULL, '01', '稳定杆', 'Stabilizer handle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2706', '30.02.01.05.02', NULL, '02', '衬套', 'Lining', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2707', '30.02.01.06', NULL, '06', '支座', 'Support', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2708', '30.02.01.07', NULL, '07', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2709', '30.02.01.08', NULL, '08', '吊杆', 'Hanging rod', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('271', '10.06.02.04.01.01', NULL, '01', '一轴总成', 'Input shaft assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2710', '30.02.01.09', NULL, '09', '吊杆底板', 'Hanging rod base plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2711', '30.02.01.10', NULL, '10', '衬套', 'Lining', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2712', '30.02.01.11', NULL, '11', '定位盖', 'Locating cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2713', '30.02.01.12', NULL, '12', '隔离套', 'Isolation cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2714', '30.02.01.13', NULL, '13', '防尘罩', 'Dust cap', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2715', '30.02.01.14', NULL, '14', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2716', '30.02.01.15', NULL, '15', '支撑盖', 'Integral type connecting plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2717', '30.02.01.16', NULL, '16', '吊杆总成', 'Hanger assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2718', '30.02.01.16.01', NULL, '01', '吊杆', 'Hanging rod', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2719', '30.02.01.16.02', NULL, '02', '吊杆底板', 'Hanging rod base plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('272', '10.06.02.04.01.02', NULL, '02', '二轴总成', 'Output shaft assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2720', '30.02.01.16.03', NULL, '03', '衬套', 'Lining', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2721', '30.02.01.17', NULL, '17', '压板', 'Pressure plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2722', '30.02.01.18', NULL, '18', '橡胶弹簧', 'Rubber spring', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2723', '30.02.01.19', NULL, '19', 'U型螺栓', 'U-bolt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2724', '30.02.01.20', NULL, '20', '板簧吊耳外板焊合总成', 'Leaf spring lifting lug outer plate weldment assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2725', '30.02.01.21', NULL, '21', '板簧吊耳内板', 'Leaf spring lifting lug inner plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2726', '30.02.01.22', NULL, '22', '板簧吊耳总成', 'Leaf spring lifting lug assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2727', '30.02.01.22.01', NULL, '01', '吊耳', 'Lifting lug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2728', '30.02.01.22.02', NULL, '02', '衬套', 'Lining', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2729', '30.02.01.23', NULL, '23', '板簧吊耳安装螺母', 'Leaf spring lifting lug installation nut', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('273', '10.06.02.04.01.03', NULL, '03', '中间轴总成', 'Intermediate shaft assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2730', '30.02.01.24', NULL, '24', '垫板', 'Lifting lug plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2731', '30.02.01.25', NULL, '25', '吊耳销', 'Lifting lug macro axis', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2732', '30.02.01.26', NULL, '26', '前板簧吊耳', 'Front leaf spring left lifting lug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2733', '30.02.01.27', NULL, '27', '销轴', 'Pin shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2734', '30.02.01.28', NULL, '28', '垫板定位销', 'Base plate locating pin', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2735', '30.02.01.29', NULL, '29', '楔形锁销', 'Small support', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2736', '30.02.01.30', NULL, '30', '前板簧盖板', 'Front leaf spring cover plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2737', '30.02.01.31', NULL, '31', '前稳定杆吊架', 'Front stabilizer bar hanging bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2738', '30.02.01.32', NULL, '32', '前稳定杆吊座', 'Front stabilizer bar hanger bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2739', '30.02.01.33', NULL, '33', '气囊上盖板', 'Airbag upper cover plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('274', '10.06.02.04.01.04', NULL, '04', '壳体', 'Housing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2740', '30.02.01.34', NULL, '34', '鞍型横梁', 'Saddle cross member', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2741', '30.02.01.35', NULL, '35', '元宝梁', 'Shoe-shaped gold ingot member', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2742', '30.02.01.36', NULL, '36', '空气弹簧带减振器总成', 'Air spring and shock absorber assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2743', '30.02.01.37', NULL, '37', 'U形连接板', 'U-connecting plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2744', '30.02.01.38', NULL, '38', '减振器接叉', 'Shock absorber fork', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2745', '30.02.01.39', NULL, '39', '稳定杆杆头连接件', 'Stabilizer bar head connecting part', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2746', '30.02.01.40', NULL, '40', '加强板', 'Reinforced plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2747', '30.02.01.41', NULL, '41', '垫板焊接总成', 'Base plate weldment assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2748', '30.02.01.42', NULL, '42', '共用连接轴', 'Common connection shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2749', '30.02.01.43', NULL, '43', '气囊', 'Airbag', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('275', '10.06.02.04.01.05', NULL, '05', '壳体杂件', 'Housing and miscellaneous accessories', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2750', '30.02.01.44', NULL, '44', '高度阀', 'Altitude valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2751', '30.02.01.45', NULL, '45', '高度阀调节杆总成', 'Height valve Adjusting rod assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2752', '30.02.01.46', NULL, '46', '尼龙管总成', 'Nylon pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2753', '30.02.01.47', NULL, '47', '接头式压注油杯', 'Angle hydraulic grease nipples', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2754', '30.02.01.48', NULL, '48', '上摆臂总成', 'Left upper swing arm assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2755', '30.02.01.48.01', NULL, '01', '轴', 'Upper swing arm', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2756', '30.02.01.48.02', NULL, '02', '球销', 'Ball pin', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2757', '30.02.01.48.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2758', '30.02.01.49', NULL, '49', '下摆臂总成', 'Lower swing arm assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2759', '30.02.01.49.01', NULL, '01', '轴', 'Lower swinng arm shaft', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('276', '10.06.02.04.01.06', NULL, '06', '操纵机构', 'Control mechanism', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2760', '30.02.01.49.02', NULL, '02', '凸轮', 'Cam', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2761', '30.02.01.49.03', NULL, '03', '球销', 'Ball pin', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2762', '30.02.01.49.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2763', '30.02.01.50', NULL, '50', '滑脂嘴', 'Oil tank', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2764', '30.02.01.51', NULL, '51', '连接轴', 'Connecting Shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2765', '30.02.01.52', NULL, '52', '复合材料板簧总成', 'Composite leaf spring assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2766', '30.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2767', '30.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2768', '30.02.02', NULL, '02', '后悬架', 'Rear suspension', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2769', '30.02.02.01', NULL, '01', '钢板弹簧总成', 'Leaf spring assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('277', '10.06.02.04.01.07', NULL, '07', '轴承', 'Bearing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2770', '30.02.02.01.01', NULL, '01', '钢板弹簧片', 'steel plate leaf spring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2771', '30.02.02.01.02', NULL, '02', '卷耳衬套', 'rolling lug bushing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2772', '30.02.02.01.03', NULL, '03', '卷耳衬套套管', 'rolling lug bushing casing pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2773', '30.02.02.01.04', NULL, '04', '中心螺栓', 'Center bolt', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2774', '30.02.02.01.05', NULL, '05', '板簧垫板', 'Leaf spring base plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2775', '30.02.02.01.06', NULL, '06', '片间摩擦垫', 'Sheet friction pad', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2776', '30.02.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2777', '30.02.02.02', NULL, '02', '板簧销轴', 'Leaf spring pin shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2778', '30.02.02.03', NULL, '03', '板簧吊耳总成', 'Leaf spring lifting lug assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2779', '30.02.02.03.01', NULL, '01', '吊耳', 'Lifting lug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('278', '10.06.02.04.01.08', NULL, '08', '油封', 'oil seal', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2780', '30.02.02.03.02', NULL, '02', '衬套', 'Lining', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2781', '30.02.02.04', NULL, '04', '板簧后吊耳安装螺母', 'Leaf spring rear lifting lug installation nut', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2782', '30.02.02.05', NULL, '05', '后吊耳外板', 'Rear lifting lug outer plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2783', '30.02.02.06', NULL, '06', '后吊耳内板', 'Rear lifting lug inner plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2784', '30.02.02.07', NULL, '07', '衬套', 'Lining', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2785', '30.02.02.08', NULL, '08', '板簧紧固板', 'Leaf spring fastening plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2786', '30.02.02.09', NULL, '09', '板簧紧固板衬板', 'Leaf spring fastening plate lining plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2787', '30.02.02.10', NULL, '10', '感载比例阀拉杆板', 'Load-sensing proportioning valve pulling rod plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2788', '30.02.02.11', NULL, '11', '板簧夹板', 'leaf spring clamping plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2789', '30.02.02.12', NULL, '12', '骑马螺栓', 'U bolt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('279', '10.06.02.04.02', NULL, '02', '外部结构', 'External structure', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2790', '30.02.02.13', NULL, '13', '缓成冲块总', 'buffer block assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2791', '30.02.02.14', NULL, '14', '限位块总成', 'Limit block assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2792', '30.02.02.15', NULL, '15', '后减振器总成', 'Rear shock absorber assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2793', '30.02.02.15.01', NULL, '01', '后减振器', 'Rear shock absorber', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2794', '30.02.02.15.02', NULL, '02', '后减吊耳衬套', 'Rear reducer lifting lug bushing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2795', '30.02.02.15.03', NULL, '03', '后减下垫片', 'Rear reducer lower gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2796', '30.02.02.15.04', NULL, '04', '后减上胶垫', 'Rear reducer Upper rubber cushion', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2797', '30.02.02.16', NULL, '16', '推力杆总成', 'Distance rod assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2798', '30.02.02.17', NULL, '17', '稳定杆', 'Stabilizer handle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2799', '30.02.02.18', NULL, '18', '橡胶弹簧', 'Rubber spring', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('27B507CB48604B67A70', '20.04.01.01.01.40', '', '40', '支座加强板衬套', '', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('28', '10.01.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('280', '10.06.02.04.02.01', NULL, '01', '离合操纵', 'Clutch control', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2800', '30.02.02.19', NULL, '19', '横臂总成', 'Cross arm assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2801', '30.02.02.20', NULL, '20', '后板簧压板', 'Rear leaf spring pressure plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2802', '30.02.02.21', NULL, '21', '气囊盖板', 'airbag cover plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2803', '30.02.02.22', NULL, '22', '平衡臂', 'Balance arm', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2804', '30.02.02.23', NULL, '23', '摆臂', 'Swing arm', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2805', '30.02.02.24', NULL, '24', '板簧座总成', 'Leaf spring seat assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2806', '30.02.02.24.01', NULL, '01', '板簧座', 'Leaf spring seat', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2807', '30.02.02.24.02', NULL, '02', '支承座', 'Support', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2808', '30.02.02.25', NULL, '25', '推力杆座', 'Distance rod seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2809', '30.02.02.26', NULL, '26', 'U型螺栓平垫', 'U-bolt flat pad', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('281', '10.06.02.04.02.02', NULL, '02', '变速器外部操纵', 'External transmission control', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2810', '30.02.02.27', NULL, '27', '橡胶支座', 'Rubber support', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2811', '30.02.02.28', NULL, '28', '横梁', 'Cross member', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2812', '30.02.02.29', NULL, '29', '吊杆底板', 'Hanging rod base plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2813', '30.02.02.30', NULL, '30', '稳定杆支座', 'Stabilizer rod mount', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2814', '30.02.02.31', NULL, '31', '卡箍衬套', 'Hoop bushing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2815', '30.02.02.32', NULL, '32', '销轴', 'Pin shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2816', '30.02.02.33', NULL, '33', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2817', '30.02.02.34', NULL, '34', '平衡轴总成', 'Balance shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2818', '30.02.02.35', NULL, '35', '端面衬圈', 'End face ring gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2819', '30.02.02.36', NULL, '36', '防尘附件', 'Dustproof accessory', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('282', '10.06.02.04.02.03', NULL, '03', '电器件', 'Electrical parts', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2820', '30.02.02.37', NULL, '37', '平衡轴', 'Balance shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2821', '30.02.02.38', NULL, '38', '平衡轴钢板弹簧座及其附件', 'Balance shaft leaf spring and its accessory', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2822', '30.02.02.39', NULL, '39', '平衡轴压盖及其附件', 'Balance shaft gland and its accessory', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2823', '30.02.02.40', NULL, '40', '接头体', 'Joint body', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2824', '30.02.02.41', NULL, '41', '整体式连接板', 'Nameplate of complete vehicle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2825', '30.02.02.42', NULL, '42', '气囊', 'Airbag', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2826', '30.02.02.43', NULL, '43', '高度阀调节杆总成', 'Height valve Adjusting rod assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2827', '30.02.02.44', NULL, '44', '高度阀', 'Altitude valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2828', '30.02.02.45', NULL, '45', '连杆总成', 'Support bar assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2829', '30.02.02.46', NULL, '46', '连杆随动平衡悬架总成', 'Connecting rod follow-up connecting rod suspension assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('283', '10.06.02.04.02.04', NULL, '04', '传动轴连接', 'Drive shaft connection', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2830', '30.02.02.47', NULL, '47', '支撑座', 'Rear leaf spring lower support seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2831', '30.02.02.48', NULL, '48', '均衡梁总成', 'Balance member assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2832', '30.02.02.49', NULL, '49', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2833', '30.02.02.50', NULL, '50', '油杯', 'Joint press cup', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2834', '30.02.02.51', NULL, '51', '衬板', 'Lining plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2835', '30.02.02.52', NULL, '52', '垫板', 'Lifting lug plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2836', '30.02.02.53', NULL, '53', '后稳定杆吊架', 'Rear stabilizer bar hanging bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2837', '30.02.02.54', NULL, '54', '吊杆总成', 'Hanging rod', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2838', '30.02.02.54.01', NULL, '01', '吊杆', 'Hanging rod', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2839', '30.02.02.54.02', NULL, '02', '吊杆底板', 'Hanging rod base plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('284', '10.06.02.04.02.05', NULL, '05', '变速器悬置', 'Transmission mount', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2840', '30.02.02.54.03', NULL, '03', '衬套', 'Lining', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2841', '30.02.02.55', NULL, '55', '板簧后支架及吊耳总成', 'Leaf spring Rear bracket and lifting lug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2842', '30.02.02.56', NULL, '56', 'X型推力杆总成', 'X rod assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2843', '30.02.02.57', NULL, '57', '空气悬架总成', 'air suspension assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2844', '30.02.02.58', NULL, '58', '横梁总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2845', '30.02.02.59', NULL, '59', '复合材料板簧总成', 'Composite leaf spring assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2846', '30.02.02.60', NULL, '60', '板簧紧固板带销轴焊合总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2847', '30.02.02.60.01', NULL, '01', '板簧紧固板加强板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2848', '30.02.02.60.02', NULL, '02', '板簧紧固板焊接销轴', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2849', '30.02.02.61', NULL, '61', 'U形连接板', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('284C45DF901F489BA83', '30.07.01.14.02', '', '02', '控制器总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('285', '10.06.02.04.02.06', NULL, '06', '其他附件', 'Accessories and others', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2850', '30.02.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2851', '30.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2852', '30.02.03', NULL, '03', '悬架控制系统', 'Suspension control system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2853', '30.02.03.01', NULL, '01', '高度调节阀', 'Height adjustment valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2854', '30.02.03.02', NULL, '02', 'ECU', 'ECU', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2855', '30.02.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2856', '30.02.03.04', NULL, '04', '电磁阀', 'Solenoid valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2857', '30.02.03.05', NULL, '05', '高度传感器', 'Height sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2858', '30.02.03.06', NULL, '06', '杆', 'Height sensor swing rod', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2859', '30.02.03.07', NULL, '07', '压力传感器', 'Gland nut', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('286', '10.06.02.04.02.07', NULL, '07', '取力器', 'Power take-off', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2860', '30.02.03.08', NULL, '08', '遥控器', 'Remote controller', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2861', '30.02.03.09', NULL, '09', '溢流阀', 'Overflow valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2862', '30.02.03.10', NULL, '10', '管路滤清器', 'Pipeline filter', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2863', '30.02.03.11', NULL, '11', '感载比例阀', 'Cross beam assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2864', '30.02.03.12', NULL, '12', '尼龙管总成', 'Nylon pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2865', '30.02.03.12.01', NULL, '01', '尼龙管', 'Nylon pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2866', '30.02.03.12.02', NULL, '02', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2867', '30.02.03.13', NULL, '13', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2868', '30.02.03.14', NULL, '14', '堵塞', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2869', '30.02.03.15', NULL, '15', '螺母座', 'Nut seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('287', '10.06.02.04.02.08', NULL, '08', '缓速器', 'Retarder', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2870', '30.02.03.16', NULL, '16', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2871', '30.02.03.17', NULL, '17', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2872', '30.02.03.18', NULL, '18', '手控滑阀', 'Manual slide valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2873', '30.02.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2874', '30.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2875', '30.03', NULL, '03', '车轮及轮胎', 'Wheel and tire', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2876', '30.03.01', NULL, '01', '车轮及轮胎', 'Wheel and tire', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2877', '30.03.01.01', NULL, '01', '车轮', 'Wheel', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2878', '30.03.01.02', NULL, '02', '轮胎', 'Tyre', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2879', '30.03.01.03', NULL, '03', '气门嘴延伸管', 'Tire valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('288', '10.06.02.05', NULL, '05', 'AMT变速器总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2880', '30.03.01.04', NULL, '04', '车轮装饰罩', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2881', '30.03.01.05', NULL, '05', '车轮螺母护罩', 'Wheel nut protection cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2882', '30.03.01.06', NULL, '06', '车轮总成', 'Wheel assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2883', '30.03.01.97', NULL, '97', '车轮总成安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2884', '30.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2885', '30.03.02', NULL, '02', '爆胎应急安全装置', 'Tire blow-out emergency safe device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2886', '30.03.02.01', NULL, '01', '爆胎应急安全装置', 'Tire blow-out emergency safe device', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2887', '30.03.02.02', NULL, '02', '爆胎应急安全装置安装工具', 'Tire blow-out emergency safe device tool', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2888', '30.03.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2889', '30.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('289', '10.06.02.05.01', NULL, '01', '分离拨叉', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2890', '30.04', NULL, '04', '转向系统', 'Steering system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2891', '30.04.01', NULL, '01', '转向器及附件', 'Steering gear and accessories', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2892', '30.04.01.01', NULL, '01', '转向油泵总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2893', '30.04.01.01.01', NULL, '01', '油泵', 'Steering gear oil pump', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2894', '30.04.01.01.02', NULL, '02', '传动件', 'Transmission parts', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2895', '30.04.01.02', NULL, '02', '转向油罐总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2896', '30.04.01.02.01', NULL, '01', '转向油罐', 'Steering oil pump support weldment assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2897', '30.04.01.02.02', NULL, '02', '油罐盖', 'Tank cap', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2898', '30.04.01.02.03', NULL, '03', '传感器', 'Sensor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2899', '30.04.01.03', NULL, '03', '油管接头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('28C83A025C5242BDA2C', '20.04.02.01.43', '', '43', '右后门拉手盒支架', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('29', '10.01.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('290', '10.06.02.05.02', NULL, '02', '分离摇臂', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2900', '30.04.01.04', NULL, '04', '密封垫', 'Sealing gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2901', '30.04.01.05', NULL, '05', '软管', 'Hose', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2902', '30.04.01.06', NULL, '06', '高压钢管总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2903', '30.04.01.06.01', NULL, '01', '钢管', 'Steel pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2904', '30.04.01.06.02', NULL, '02', '卡套', 'Ferrule', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2905', '30.04.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2906', '30.04.01.07', NULL, '07', '低压油管总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2907', '30.04.01.08', NULL, '08', '汽车传动带', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2908', '30.04.01.09', NULL, '09', '转向器总成', 'Steering gear assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2909', '30.04.01.09.01', NULL, '01', '转向器', 'Steering gear assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('291', '10.06.02.05.03', NULL, '03', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2910', '30.04.01.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2911', '30.04.01.10', NULL, '10', '转向器带摇臂总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2912', '30.04.01.11', NULL, '11', '转向摇臂', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2913', '30.04.01.12', NULL, '12', '转向器支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2914', '30.04.01.13', NULL, '13', '转向拉杆总成', 'Steering tie rod assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2915', '30.04.01.13.01', NULL, '01', '转向直拉杆', 'First steering drag link', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2916', '30.04.01.13.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2917', '30.04.01.14', NULL, '14', '张紧轮带支架总成', 'Tensioning pulley belt bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2918', '30.04.01.14.01', NULL, '01', '张紧轮', 'Turbocharger air intake hose', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2919', '30.04.01.14.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('292', '10.06.02.05.04', NULL, '04', '换挡拨块', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2920', '30.04.01.15', NULL, '15', '转向减速器总成', 'Steering reducer assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2921', '30.04.01.16', NULL, '16', '电动转向机ECU', 'Electric steering gear ECU', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2922', '30.04.01.17', NULL, '17', '转向泵驱动电机总成', 'Steering pump drive motor assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2923', '30.04.01.18', NULL, '18', '线束', 'wiring harness', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2924', '30.04.01.19', NULL, '19', '转向助力缸总成', 'Power-assisted steering cylinder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2925', '30.04.01.20', NULL, '20', '助力缸油管', 'Boost cylinder oil pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2926', '30.04.01.20.01', NULL, '01', '油管', 'Oil pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2927', '30.04.01.20.02', NULL, '02', '卡套', 'Ferrule', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2928', '30.04.01.20.03', NULL, '03', '卡套螺母', 'Ferrule nut', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2929', '30.04.01.21', NULL, '21', '摇臂总成', 'Intermediate arm assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('293', '10.06.02.05.05', NULL, '05', '脉冲轮', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2930', '30.04.01.21.01', NULL, '01', '摇臂', 'Rocker arm', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2931', '30.04.01.21.02', NULL, '02', '密封垫', 'Sealing gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2932', '30.04.01.21.03', NULL, '03', '直通式滑脂嘴', 'Straight grease nipple', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2933', '30.04.01.21.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2934', '30.04.01.22', NULL, '22', '摇臂轴', '2nd axle rocker arm shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2935', '30.04.01.23', NULL, '23', '中间拉杆总成', 'Center pull rod assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2936', '30.04.01.23.01', NULL, '01', '中间拉杆', 'Intermediate tie rod', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2937', '30.04.01.23.02', NULL, '02', '拉杆球销总成', 'Tie rod ball pin assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2938', '30.04.01.23.03', NULL, '03', '拉杆本体', 'Tie rod body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2939', '30.04.01.23.04', NULL, '04', '开口销', 'Split pin', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('294', '10.06.02.05.06', NULL, '06', '壳体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2940', '30.04.01.24', NULL, '24', '支架总成', 'Bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2941', '30.04.01.24.01', NULL, '01', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2942', '30.04.01.24.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2943', '30.04.01.25', NULL, '25', '转向DCAC控制器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2944', '30.04.01.97', NULL, '97', '转向器及附件安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2945', '30.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2946', '30.04.02', NULL, '02', '转向传动装置', 'Steering drive device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2947', '30.04.02.01', NULL, '01', '方向盘总成', 'Steering wheel assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2948', '30.04.02.01.01', NULL, '01', '方向盘骨架', 'Steering wheel installation bolt filting', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2949', '30.04.02.01.02', NULL, '02', '方向盘盖', 'Steering wheel body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('295', '10.06.02.05.07', NULL, '07', '换挡塔', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2950', '30.04.02.01.03', NULL, '03', '方向盘多功能按键', 'Multifunction steering wheel button', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2951', '30.04.02.02', NULL, '02', '转向管柱带传动轴总成', 'Steering column belt and drive shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2952', '30.04.02.02.01', NULL, '01', '转向管柱带可调机构总成', 'Steering column with adjustable mechanism', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2953', '30.04.02.02.01.01', NULL, '01', '轴', 'Axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2954', '30.04.02.02.01.02', NULL, '02', '管柱', 'Column', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2955', '30.04.02.02.01.03', NULL, '03', '手柄', 'Handle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2956', '30.04.02.02.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2957', '30.04.02.02.01.05', NULL, '05', '气阀', 'Air valve', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2958', '30.04.02.02.02', NULL, '02', '转向传动轴总成', 'Steering drive shaft assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2959', '30.04.02.02.02.01', NULL, '01', '转向传动轴', 'Steering drive shaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('296', '10.06.02.05.08', NULL, '08', '选挂档阀体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2960', '30.04.02.02.02.02', NULL, '02', '转向传动轴节叉', 'Steering drive shaft fork', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2961', '30.04.02.02.02.03', NULL, '03', '花键套', 'Spline bushing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2962', '30.04.02.02.02.04', NULL, '04', '保持架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2963', '30.04.02.02.02.05', NULL, '05', '滚珠轴', 'Ball bearing Axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2964', '30.04.02.02.02.06', NULL, '06', '套端焊接轴', 'Welding axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2965', '30.04.02.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2966', '30.04.02.03', NULL, '03', '包壳', 'Cladding', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2967', '30.04.02.03.01', NULL, '01', '护罩', 'Protection cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2968', '30.04.02.04', NULL, '04', '电动转向管柱带传动轴总成', 'Steering column and drive shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2969', '30.04.02.04.01', NULL, '01', '电动转向管柱本体', 'Steering column', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('297', '10.06.02.05.09', NULL, '09', '呼吸阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2970', '30.04.02.04.02', NULL, '02', '电动转向管柱ECU', 'Electric steering column ECU', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2971', '30.04.02.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2972', '30.04.02.04.04', NULL, '04', '传感器', 'Sensor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2973', '30.04.02.05', NULL, '05', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2974', '30.04.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2975', '30.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2976', '30.04.03', NULL, '03', '应急转向装置', 'Emergency steering gear', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2977', '30.04.03.01', NULL, '01', '应急转向阀组件', 'Emergency valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2978', '30.04.03.02', NULL, '02', '应急转向油泵总成', 'Emergency steering gear oil pump assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2979', '30.04.03.03', NULL, '03', '流量计', 'Flow meter assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('298', '10.06.02.05.10', NULL, '10', '传感器', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2980', '30.04.03.04', NULL, '04', '应急压力计', 'Emergency pressure gauge', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2981', '30.04.03.05', NULL, '05', '钢管总成', 'Steel pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2982', '30.04.03.05.01', NULL, '01', '钢管', 'Steel pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2983', '30.04.03.05.02', NULL, '02', '卡套', 'Ferrule', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2984', '30.04.03.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2985', '30.04.03.06', NULL, '06', '软管', 'Hose', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2986', '30.04.03.07', NULL, '07', '卡箍', 'Hoop', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2987', '30.04.03.08', NULL, '08', '应急转向回油钢管总成', 'Emergency pump oil steel pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2988', '30.04.03.08.01', NULL, '01', '钢管', 'Steel pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2989', '30.04.03.08.02', NULL, '02', '卡套', 'Ferrule', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('299', '10.06.02.05.11', NULL, '11', '线束', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2990', '30.04.03.08.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2991', '30.04.03.09', NULL, '09', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2992', '30.04.03.10', NULL, '10', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2993', '30.04.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2994', '30.05', NULL, '05', '制动系统', 'Brake system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2995', '30.05.01', NULL, '01', '辅助制动', 'Auxiliary brake', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2996', '30.05.01.01', NULL, '01', '排气制动阀总成', 'Exhaust brake valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2997', '30.05.01.02', NULL, '02', '阀', 'valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2998', '30.05.01.03', NULL, '03', '胶管', 'Rubber pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2999', '30.05.01.04', NULL, '04', '塑料管', 'Plastic pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('29E70DB37A7A4F8FAD5', '20.03.03.02.18', '', '18', '靠背发泡面套总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2A17F078047548B6BBE', '60.06.01.01.14.11.02', '', '02', '模组压条-23S', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2B26144F9DFA4731974', '30.07.01.14.05', '', '05', '线束总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2C5AD9AFF9354345A4D', '40.02.10.13', '', '13', '防偷油探测器', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2D3229920CAE4AEEBDD', '40.02.10.09', '', '09', '蓄电池传感器', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('2D380E416FDF4031990', '60.06.01.01.14.03.02', '', '02', '模组FPC-24S-右', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2D666DE812364DE6B72', '10.03.01.32.01', '', '01', '液压油箱紧固带', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2DDFC4B284BD43CF884', '30.06.07.05', '', '05', '脚踏板', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2DFB37A899E546A988F', '60.06.01.01.03.04', '', '04', '高压线束支架', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2E4695BE25274CB6A4C', '60.06.01.11.07', '', '07', '绝缘胶带', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2E9D8A47D7854F45975', '20.04.04.01.01.15', '', '15', '前舱盖气弹簧球头', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2F05C97371F444FA927', '30.06.07.01', '', '01', '简易驾驶平台焊合总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2F6CF263DD864B99932', '20.04.04.01.01.01.02.02', '', '02', '前舱盖外板支撑板', '', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('2F7863B9E8FE41DEBCB', '20.05.01.01.01.06.06', '', '06', '顶盖左中加强板', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('2F99ACE9574B4DD5AE2', '20.04.02.01.35', '', '35', '右后车门限位器加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('3', '10.01', NULL, '01', '发动机', 'Engine', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('30', '10.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('300', '10.06.02.05.12', NULL, '12', '油管', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3000', '30.05.01.05', NULL, '05', '钢管', 'Steel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3001', '30.05.01.06', NULL, '06', '尼龙管总成', 'Nylon pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3002', '30.05.01.06.01', NULL, '01', '尼龙管', 'Nylon pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3003', '30.05.01.06.02', NULL, '02', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3004', '30.05.01.07', NULL, '07', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3005', '30.05.01.08', NULL, '08', '缓速器总成', 'Retarder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3006', '30.05.01.09', NULL, '09', '缓速器组件总成', 'Retarder component assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3007', '30.05.01.10', NULL, '10', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3008', '30.05.01.11', NULL, '11', '缓速器ECU总成', 'Retarder ECU', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3009', '30.05.01.12', NULL, '12', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('301', '10.06.02.05.13', NULL, '13', '齿轮泵', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3010', '30.05.01.13', NULL, '13', '气压开关总成', 'Air pressure switch assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3011', '30.05.01.14', NULL, '14', '节温器', 'Outer suspension thermostat assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3012', '30.05.01.15', NULL, '15', '制动喷淋控制总成', 'Brake spray control assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3013', '30.05.01.16', NULL, '16', '气压淋水桶总成', 'Pressure sprinkling bottle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3014', '30.05.01.17', NULL, '17', '管路', 'Pipeline', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3015', '30.05.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3016', '30.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3017', '30.05.02', NULL, '02', '制动执行系统', 'Brake execution system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3018', '30.05.02.01', NULL, '01', '驻车制动器总成', 'Parking brake assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3019', '30.05.02.01.01', NULL, '01', '手制动拉线总成', 'Hand brake wire drawing assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('302', '10.06.02.05.14', NULL, '14', '电磁阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3020', '30.05.02.01.02', NULL, '02', '驻车制动器总成', 'Parking brake assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3021', '30.05.02.01.03', NULL, '03', '驻车制动鼓', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3022', '30.05.02.02', NULL, '02', '手制动拉线总成', 'Hand brake wire drawing assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3023', '30.05.03', NULL, '03', '制动操纵系统', 'Brake control system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3024', '30.05.03.01', NULL, '01', '隔热板', 'Insulation against heat plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3025', '30.05.03.02', NULL, '02', '支撑杆', 'Support rod', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3026', '30.05.03.03', NULL, '03', '驻车制动操纵手柄总成', 'Parking brake control handle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3027', '30.05.03.04', NULL, '04', '手制动阀总成', 'Hand brake valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3028', '30.05.03.04.01', NULL, '01', '手制动阀本体', 'Manual brake valve body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3029', '30.05.03.04.02', NULL, '02', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('303', '10.06.02.05.15', NULL, '15', '高、低压管接头卡板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3030', '30.05.03.05', NULL, '05', '管束总成', 'Pipe bundles assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3031', '30.05.03.05.01', NULL, '01', '管束', 'Pipe bundle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3032', '30.05.03.05.02', NULL, '02', '管束过地板模块', 'Pipe bundle module across floor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3033', '30.05.03.05.03', NULL, '03', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3034', '30.05.03.05.04', NULL, '04', '多通组件', 'Multi-way component', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3035', '30.05.03.05.04.01', NULL, '01', '接头', 'Joint', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3036', '30.05.03.05.04.02', NULL, '02', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3037', '30.05.03.05.04.03', NULL, '03', '密封垫', 'Sealing gasket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3038', '30.05.03.05.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3039', '30.05.03.06', NULL, '06', '护罩', 'Protection cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('304', '10.06.02.05.16', NULL, '16', '油壶总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3040', '30.05.03.07', NULL, '07', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3041', '30.05.03.08', NULL, '08', '杯托总成', 'Cup holder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3042', '30.05.03.09', NULL, '09', '密封件', 'Seals', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3043', '30.05.03.10', NULL, '10', '压板', 'Pressure plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3044', '30.05.03.11', NULL, '11', '开关总成', 'Switch assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3045', '30.05.03.12', NULL, '12', '盖板', 'Cover plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3046', '30.05.03.13', NULL, '13', '制动踏板总成', 'Brake disc fixing bolt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3047', '30.05.03.13.01', NULL, '01', '制动踏板底板焊合', 'Brake pedal base plate welding', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3048', '30.05.03.13.01.01', NULL, '01', '制动踏板底板', 'Brake pedal base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3049', '30.05.03.13.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('305', '10.06.02.05.17', NULL, '17', '电机盖总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3050', '30.05.03.13.01.03', NULL, '03', '支撑耳板', 'Support lug plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3051', '30.05.03.13.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3052', '30.05.03.13.02', NULL, '02', '脚踏组件', 'Pedal component', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3053', '30.05.03.13.02.01', NULL, '01', '踏板', 'Pedal', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3054', '30.05.03.13.02.02', NULL, '02', '槽型架', 'Slot-shaped frame', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3055', '30.05.03.13.02.03', NULL, '03', '摇臂连杆', 'Rocker link', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3056', '30.05.03.13.02.04', NULL, '04', '套筒', 'Sleeve', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3057', '30.05.03.13.03', NULL, '03', '脚踏支架组件', 'Pedal bracket component', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3058', '30.05.03.13.03.01', NULL, '01', '限位块', 'Limiting block', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3059', '30.05.03.13.03.02', NULL, '02', '支座', 'Support', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('306', '10.06.02.05.18', NULL, '18', '法兰本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3060', '30.05.03.13.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3061', '30.05.03.13.04', NULL, '04', '推杆组件', 'Push rod component', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3062', '30.05.03.13.04.01', NULL, '01', '接头', 'Joint', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3063', '30.05.03.13.04.02', NULL, '02', '连杆', 'Connecting rod', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3064', '30.05.03.13.04.03', NULL, '03', '关节球', 'Joint ball', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3065', '30.05.03.13.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3066', '30.05.03.13.05', NULL, '05', '轴', 'Axle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3067', '30.05.03.13.06', NULL, '06', '扭簧', 'Torsion spring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3068', '30.05.03.13.07', NULL, '07', '固定座', 'Fixing seat', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3069', '30.05.03.13.08', NULL, '08', '防尘罩', 'Dust cap', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('307', '10.06.02.05.19', NULL, '19', '蓄能罐', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3070', '30.05.03.13.09', NULL, '09', '护套', 'Protective boot', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3071', '30.05.03.13.10', NULL, '10', '密封垫', 'Sealing gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3072', '30.05.03.13.11', NULL, '11', '衬套', 'Lining', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3073', '30.05.03.13.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3074', '30.05.03.14', NULL, '14', '制动离合组合式踏板单元', 'Brake clutch combination pedal unit assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3075', '30.05.03.14.01', NULL, '01', '制动离合组合式踏板总成', 'Brake/clutch combination pedal assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3076', '30.05.03.14.02', NULL, '02', '制动阀总成', 'Brake valve assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3077', '30.05.03.14.02.01', NULL, '01', '制动总泵总成', 'Brake master cylinder assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3078', '30.05.03.14.02.02', NULL, '02', '微动开关总成', 'Igniting switch assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3079', '30.05.03.14.02.03', NULL, '03', '气控阀消音器', 'Pneumatic control valve muffler', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('308', '10.06.02.05.20', NULL, '20', '离合器执行机构', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3080', '30.05.03.14.03', NULL, '03', '卡簧', 'Snap spring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3081', '30.05.03.14.04', NULL, '04', '密封垫', 'Sealing gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3082', '30.05.03.14.05', NULL, '05', '离合总泵带油壶总成', 'Clutch master cylinder with oil can assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3083', '30.05.03.14.06', NULL, '06', '螺母座', 'Nut seat', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3084', '30.05.03.14.07', NULL, '07', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3085', '30.05.03.14.08', NULL, '08', '尼龙管总成', 'Nylon pipe assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3086', '30.05.03.14.09', NULL, '09', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3087', '30.05.03.14.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3088', '30.05.03.15', NULL, '15', '直踏式制动阀总成', 'Tread brake valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3089', '30.05.03.16', NULL, '16', '制动阀安装底板总成', 'Brake valve mounting plate assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('309', '10.06.02.05.21', NULL, '21', '离合器推杆', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3090', '30.05.03.16.01', NULL, '01', '密封垫', 'Sealing gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3091', '30.05.03.16.02', NULL, '02', '制动阀安装底板', 'Brake valve mounting plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3092', '30.05.03.17', NULL, '17', '制动阀总成', 'Brake valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3093', '30.05.03.18', NULL, '18', '管路', 'Pipeline', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3094', '30.05.03.19', NULL, '19', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3095', '30.05.03.20', NULL, '20', '螺母座', 'Nut seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3096', '30.05.03.21', NULL, '21', '助力器总成', 'Booster assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3097', '30.05.03.21.01', NULL, '01', '助力器', 'Vacuum booster', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3098', '30.05.03.21.02', NULL, '02', '制动总泵总成', 'Brake master cylinder assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3099', '30.05.03.21.03', NULL, '03', '储油杯总成', 'Oil storage cup assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('30C3F58175514934AB2', '30.06.07.03', '', '03', '支架', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('30D4DB619447465ABA3', '20.04.04.01.01.10', '', '10', '前舱盖撑杆固定夹', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('31', '10.01.04', NULL, '04', '散热系统防护装置', 'Protective device of heat radiation system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('310', '10.06.02.05.22', NULL, '22', '轴', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3100', '30.05.03.21.04', NULL, '04', '真空助力器带主缸总成', 'Vacuum Booster With Cylinder assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3101', '30.05.03.21.05', NULL, '05', '液压助力器带主缸总成', 'Hydraulic Booster With Cylinder assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3102', '30.05.03.22', NULL, '22', '钢管', 'Steel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3103', '30.05.03.23', NULL, '23', '胶管', 'Rubber pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3104', '30.05.03.24', NULL, '24', '胶管带单向阀总成', 'Rubber tube with check valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3105', '30.05.03.25', NULL, '25', '真空罐总成', 'Vacuum tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3106', '30.05.03.25.01', NULL, '01', '真空罐加强板', 'Vacuum tank reinforcing plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3107', '30.05.03.25.02', NULL, '02', '真空报警开关座', 'Vacuum warning switch holder', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3108', '30.05.03.25.03', NULL, '03', '真空报警开关', 'Vacuum warning switch', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3109', '30.05.03.25.04', NULL, '04', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('311', '10.06.02.05.23', NULL, '23', 'TCU本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3110', '30.05.03.25.05', NULL, '05', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3111', '30.05.03.25.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3112', '30.05.03.26', NULL, '26', '真空泵总成', 'Electric vacuum pump assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3113', '30.05.03.27', NULL, '27', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3114', '30.05.03.28', NULL, '28', '传感器', 'Sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3115', '30.05.03.29', NULL, '29', '尼龙管带钢管总成', 'Nylon tube with steel pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3116', '30.05.03.30', NULL, '30', '尼龙管带单向阀总成', 'Nylon tube with check valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3117', '30.05.03.31', NULL, '31', '储油杯总成', 'Oil storage cup assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3118', '30.05.03.32', NULL, '32', '制动油管隔热罩', 'Brake oil pipe heat shield', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3119', '30.05.03.33', NULL, '33', '转角传感器', 'Converter sensor assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('312', '10.06.02.05.24', NULL, '24', '紧固件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3120', '30.05.03.34', NULL, '34', '制动总阀', 'Brake master valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3121', '30.05.03.34.01', NULL, '01', '排气尾管', 'Exhaust tail pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3122', '30.05.03.34.02', NULL, '02', '消音器总成', 'Muffler assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3123', '30.05.03.35', NULL, '35', '尼龙管', 'Nylon pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3124', '30.05.03.36', NULL, '36', 'ECU总成', 'ECU assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3125', '30.05.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3126', '30.05.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3127', '30.05.04', NULL, '04', '制动储能系统', 'Brake energy storage system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3128', '30.05.04.01', NULL, '01', '储气筒总成', 'Air cylinder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3129', '30.05.04.01.01', NULL, '01', '端盖总成', 'Terminal cover assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('313', '10.06.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3130', '30.05.04.01.01.01', NULL, '01', '接头', 'Joint', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3131', '30.05.04.01.01.02', NULL, '02', '端盖', 'End cover', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3132', '30.05.04.01.02', NULL, '02', '筒身组件', 'Cylinder body assembly (aluminum alloy)', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3133', '30.05.04.01.02.01', NULL, '01', '接头', 'Joint', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3134', '30.05.04.01.02.02', NULL, '02', '筒体隔板', 'Cylinder body clapboard', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3135', '30.05.04.01.02.03', NULL, '03', '筒身', 'Cylinder body (aluminum alloy)', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3136', '30.05.04.01.03', NULL, '03', '箍带', 'Strap', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3137', '30.05.04.01.03.01', NULL, '01', '拉带头', 'Pull belt head', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3138', '30.05.04.01.03.02', NULL, '02', '储气筒箍带', 'Air cylinder strap', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3139', '30.05.04.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('314', '10.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3140', '30.05.04.02', NULL, '02', '螺母座', 'Nut seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3141', '30.05.04.03', NULL, '03', '密封垫', 'Sealing gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3142', '30.05.04.04', NULL, '04', '缓速器组件总成', 'Retarder component assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3143', '30.05.04.05', NULL, '05', '阀', 'valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3144', '30.05.04.05.01', NULL, '01', '阀体', 'Valve body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3145', '30.05.04.05.02', NULL, '02', '消音器', 'Muffler', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3146', '30.05.04.05.03', NULL, '03', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3147', '30.05.04.06', NULL, '06', '干燥器总成', 'Dryer assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3148', '30.05.04.06.01', NULL, '01', '干燥器本体', 'Dryer body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3149', '30.05.04.06.02', NULL, '02', '干燥罐', 'Drying tank', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('315', '10.06.03', NULL, '03', '分动器', 'Transfer case', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3150', '30.05.04.06.03', NULL, '03', '消音器', 'Muffler', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3151', '30.05.04.06.04', NULL, '04', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3152', '30.05.04.06.05', NULL, '05', '四回路保护阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3153', '30.05.04.07', NULL, '07', '气压传感器', 'Air pressure sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3154', '30.05.04.08', NULL, '08', '排气管及排气消声器', 'Exhaust pipe and exhaust muffler', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3155', '30.05.04.09', NULL, '09', '空气处理单元', 'Air conditioner unit', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3156', '30.05.04.09.01', NULL, '01', '空气处理单元本体', 'Air handling unit body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3157', '30.05.04.09.02', NULL, '02', '干燥罐', 'Drying tank', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3158', '30.05.04.09.03', NULL, '03', '消音器', 'Muffler', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3158E052DAB74FCAB6A', '20.04.04.01.01.01.02.05.01', '', '01', '前舱盖锁钩固定板', '', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3159', '30.05.04.09.04', NULL, '04', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('316', '10.06.03.01', NULL, '01', '分动器总成', 'Power divider assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3160', '30.05.04.10', NULL, '10', '空压机', 'Air compressor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3161', '30.05.04.11', NULL, '11', '电动液压泵', 'EHPS', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3162', '30.05.04.12', NULL, '12', '高压油管总成', 'High pressure oil pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3163', '30.05.04.13', NULL, '13', '低压油管总成', 'Low pressure oil pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3164', '30.05.04.14', NULL, '14', '管夹', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3165', '30.05.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3166', '30.05.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3167', '30.05.05', NULL, '05', '制动管路', 'Brake pipeline', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3168', '30.05.05.01', NULL, '01', '管束总成', 'Pipe bundles assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3169', '30.05.05.01.01', NULL, '01', '管束', 'Pipe bundle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('317', '10.06.03.01.01', NULL, '01', '分动器', 'Transfer case', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3170', '30.05.05.01.03', NULL, '03', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3171', '30.05.05.01.04', NULL, '04', '多通组件', 'Multi-way component', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3172', '30.05.05.01.04.01', NULL, '01', '接头', 'Joint', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3173', '30.05.05.01.04.02', NULL, '02', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3174', '30.05.05.01.04.03', NULL, '03', '密封垫', 'Sealing gasket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3175', '30.05.05.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3176', '30.05.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3177', '30.05.05.02', NULL, '02', '尼龙管总成', 'Nylon pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3178', '30.05.05.02.01', NULL, '01', '尼龙管', 'Nylon pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3179', '30.05.05.02.02', NULL, '02', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('318', '10.06.03.01.01.01', NULL, '01', '壳体', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3180', '30.05.05.03', NULL, '03', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3181', '30.05.05.04', NULL, '04', '阀', 'valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3182', '30.05.05.05', NULL, '05', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3183', '30.05.05.06', NULL, '06', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3184', '30.05.05.07', NULL, '07', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3185', '30.05.05.08', NULL, '08', '密封垫', 'Sealing gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3186', '30.05.05.09', NULL, '09', '钢管', 'Steel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3187', '30.05.05.09.01', NULL, '01', '钢管', 'Steel pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3188', '30.05.05.09.02', NULL, '02', '卡套', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3189', '30.05.05.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('319', '10.06.03.01.01.02', NULL, '02', '输入输出轴', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3190', '30.05.05.10', NULL, '10', '螺旋管', 'Helical pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3191', '30.05.05.11', NULL, '11', '胶管', 'Rubber pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3192', '30.05.05.12', NULL, '12', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3193', '30.05.05.13', NULL, '13', 'EPB模块阀', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3194', '30.05.05.14', NULL, '14', '高压钢管总成', 'High-pressure steel pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3195', '30.05.05.15', NULL, '15', '低压回油钢管总成', 'Low pressure oil return steel pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3196', '30.05.05.16', NULL, '16', '低压出油钢管总成', 'Low pressure oil pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3197', '30.05.05.17', NULL, '17', '低压软管总成', 'Low pressure hose assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3198', '30.05.05.18', NULL, '18', '高压软管总成', 'High-pressure hose assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3199', '30.05.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('31F144BA7A1B45ECABA', '30.05.06.09', '', '09', '差动阀总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('32', '10.01.04.01', NULL, '01', '防护栏', 'Guard rail', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('320', '10.06.03.01.01.03', NULL, '03', '行星机构', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3200', '30.05.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3201', '30.05.06', NULL, '06', '制动组件', 'Brake assembly', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3202', '30.05.06.01', NULL, '01', '阀', 'valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3203', '30.05.06.01.01', NULL, '01', '阀体', 'Valve body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3204', '30.05.06.01.02', NULL, '02', '消音器', 'Muffler', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3205', '30.05.06.01.03', NULL, '03', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3206', '30.05.06.02', NULL, '02', '拉丝总成', 'Pulling wire assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3207', '30.05.06.02.01', NULL, '01', '拉杆', 'Pull rod', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3208', '30.05.06.02.02', NULL, '02', '拉丝球头', 'Wire drawing ball pin', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3209', '30.05.06.02.03', NULL, '03', '钢丝绳', 'Steel wire rope', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('321', '10.06.03.01.01.04', NULL, '04', '换挡机构', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3210', '30.05.06.02.04', NULL, '04', '连接叉', 'Connecting fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3211', '30.05.06.03', NULL, '03', '尼龙管总成', 'Nylon pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3212', '30.05.06.03.01', NULL, '01', '尼龙管', 'Nylon pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3213', '30.05.06.03.02', NULL, '02', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('32134BA9B7BB4337A9F', '10.03.01.36', '', '36', '液压油管', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3214', '30.05.06.04', NULL, '04', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3215', '30.05.06.05', NULL, '05', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3216', '30.05.06.06', NULL, '06', '螺母座', 'Nut seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3217', '30.05.06.07', NULL, '07', '连杆', 'Linkage', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3218', '30.05.06.08', NULL, '08', '销轴', 'Pin shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3219', '30.05.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('322', '10.06.03.01.01.05', NULL, '05', '链条', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3220', '30.05.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3221', '30.05.07', NULL, '07', '电子控制系统', 'Electronic control system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3222', '30.05.07.01', NULL, '01', '阀', 'valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3223', '30.05.07.02', NULL, '02', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3224', '30.05.07.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3225', '30.05.07.04', NULL, '04', '螺母座', 'Nut seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3226', '30.05.07.05', NULL, '05', '前桥模块组件', 'Air axle module assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3227', '30.05.07.06', NULL, '06', '后桥模块总成', 'Rear axle module assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3228', '30.05.07.07', NULL, '07', 'ESP模块', 'ESP module', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3229', '30.05.07.08', NULL, '08', '传感器', 'Steering angle sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('323', '10.06.03.01.01.06', NULL, '06', '齿轮', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3230', '30.05.07.09', NULL, '09', 'AEBS雷达', 'AEBS radar', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3231', '30.05.07.11', NULL, '11', 'ESC模块', 'ESC module', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3232', '30.05.07.12', NULL, '12', 'EBS电控单元', 'EBS ECU', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3233', '30.05.07.13', NULL, '13', 'EPB电控单元', 'EPB ECU', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3234', '30.05.07.14', NULL, '14', 'EPB开关', 'EPB switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3235', '30.05.07.15', NULL, '15', '拉线式epb总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3236', '30.05.07.16', NULL, '16', 'ABS+ESC电控单元', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3237', '30.05.07.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3238', '30.05.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3239', '30.06', NULL, '06', '辅助装备', 'Auxiliary equipment', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('324', '10.06.03.01.01.07', NULL, '07', '电机', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3240', '30.06.01', NULL, '01', '工作走台', 'Work platform', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3241', '30.06.01.01', NULL, '01', '上车踏梯焊合总成', 'Get-up step ladder weldment assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3242', '30.06.01.02', NULL, '02', '扶手焊合总成', 'Handrail weldment assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3243', '30.06.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3244', '30.06.01.04', NULL, '04', '加强用夹箍', 'Reinforcing clamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3245', '30.06.01.05', NULL, '05', '固定板', 'Fixing plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3246', '30.06.01.06', NULL, '06', '工作走台盖板', 'Cover plate for work platform', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3247', '30.06.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3248', '30.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3249', '30.06.02', NULL, '02', '车轮护罩', 'Wheel cover', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('325', '10.06.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3250', '30.06.02.01', NULL, '01', '后护罩总成', 'Rear protective cover assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3251', '30.06.02.01.01', NULL, '01', '吸能式防飞溅装置', 'Energy-absorbing anti spatter device', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3252', '30.06.02.01.02', NULL, '02', '挡泥皮', 'Mudflap', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3253', '30.06.02.01.03', NULL, '03', '防飞溅', 'Anti-splash', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3254', '30.06.02.01.04', NULL, '04', '后护罩', 'Rear protective cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3255', '30.06.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3256', '30.06.02.02', NULL, '02', '护罩', 'Protection cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3257', '30.06.02.03', NULL, '03', '减振套', 'Damping sleeve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3258', '30.06.02.04', NULL, '04', '橡胶拉带', 'Rubber draw string', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3259', '30.06.02.05', NULL, '05', '翼子板总成', 'Rear wheel front fender assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('326', '10.06.03.02', NULL, '02', '四驱ECU', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3260', '30.06.02.06', NULL, '06', '中间盖板', 'Middle cover plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3261', '30.06.02.07', NULL, '07', '管梁总成', 'F. beam assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3262', '30.06.02.08', NULL, '08', '堵塞', 'Rubber plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3263', '30.06.02.09', NULL, '09', '下孔管', 'Lower hole pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3264', '30.06.02.10', NULL, '10', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3265', '30.06.02.11', NULL, '11', '垫块', 'Pad', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3266', '30.06.02.12', NULL, '12', '中间护罩焊和组件', 'Center cross support', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3267', '30.06.02.13', NULL, '13', '后牌照板总成', 'Rear license plate assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3268', '30.06.02.14', NULL, '14', '侧标志灯支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3269', '30.06.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('327', '10.06.03.03', NULL, '03', '分动器前壳体', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3270', '30.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3271', '30.06.03', NULL, '03', '备胎安装机构', 'Spare tire installation mechanism', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3272', '30.06.03.01', NULL, '01', '备胎升降器总成', 'Spare tire lifter assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3273', '30.06.03.02', NULL, '02', '备胎支架总成', 'Spare tire bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3274', '30.06.03.03', NULL, '03', '侧置备胎架总成', 'Laterally arranged spare tire bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3275', '30.06.03.04', NULL, '04', '备胎固定梁', 'Fixed beam for spare tire', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3276', '30.06.03.05', NULL, '05', '备胎横梁', 'Spare tire beam', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3277', '30.06.03.06', NULL, '06', '摇杆总成', 'Rocker arm assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3278', '30.06.03.07', NULL, '07', '垫板', 'Base plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3279', '30.06.03.08', NULL, '08', '衬套', 'Lining', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('328', '10.06.03.04', NULL, '04', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3280', '30.06.03.09', NULL, '09', '螺母套', 'Nut sleeve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3281', '30.06.03.10', NULL, '10', '备胎紧固器总成', 'Spare tire tightener assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3282', '30.06.03.11', NULL, '11', '橡胶板', 'Rubber plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3283', '30.06.03.12', NULL, '12', '吊杆套管', 'Hanging rod casing pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3284', '30.06.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3285', '30.06.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3286', '30.06.04', NULL, '04', '侧防护', 'Side protection', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3287', '30.06.04.01', NULL, '01', '侧防护总成', 'Side protection assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3288', '30.06.04.02', NULL, '02', '侧裙板总成', 'Side skirt board assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3289', '30.06.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('329', '10.06.03.05', NULL, '05', '管夹', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3290', '30.06.04.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3291', '30.06.04.05', NULL, '05', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3292', '30.06.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3293', '30.06.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3294', '30.06.05', NULL, '05', '随车工具及附件', 'Tool kit and accessories', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3295', '30.06.05.01', NULL, '01', '三角警告牌总成', 'Warning triangle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3296', '30.06.05.02', NULL, '02', '轴头套筒', 'Shaft head sleeve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3297', '30.06.05.02.01', NULL, '01', '轴头螺母套筒连接盘', 'Connecting disc for nut sleeve of shaft head', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3298', '30.06.05.02.02', NULL, '02', '轴头螺母套筒连接管', 'Connecting pipe for nut sleeve of shaft head', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3299', '30.06.05.03', NULL, '03', '备胎摇把总成', 'Spare tire rocker crank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('32F9A280188F476C943', '20.05.01.01.01.06.07', '', '07', '顶盖左后加强板', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('33', '10.01.04.02', NULL, '02', '底板', 'Base plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('330', '10.06.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3300', '30.06.05.04', NULL, '04', '轮胎撬杠', 'Tire crow bar', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3301', '30.06.05.05', NULL, '05', '套筒板手', 'Socket wrench', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3302', '30.06.05.06', NULL, '06', '千斤顶', 'Jack', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3303', '30.06.05.07', NULL, '07', '保险丝盒', 'Fuse box', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3304', '30.06.05.08', NULL, '08', '千斤顶摇杆', 'Jack handle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3305', '30.06.05.09', NULL, '09', '螺丝刀', 'Cross screwdriver', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3306', '30.06.05.10', NULL, '10', '工作灯', 'Working lamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3307', '30.06.05.11', NULL, '11', '黄油枪', 'Grease gun', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3308', '30.06.05.12', NULL, '12', '活扳手', 'Adjustable spanner', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3309', '30.06.05.13', NULL, '13', '鲤鱼钳', 'Slip joint pliers', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('331', '10.06.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3310', '30.06.05.14', NULL, '14', '车轮螺母套筒', 'Wheel nut sleeve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3311', '30.06.05.17', NULL, '17', '随车工具袋', 'Tools bag attached with the vehicle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3312', '30.06.05.18', NULL, '18', '专用扳手', 'Special spanner', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3313', '30.06.05.19', NULL, '19', '支架总成', 'Fire extinguisher bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3314', '30.06.05.19.01', NULL, '01', '支架', 'Fire extinguisher support', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3315', '30.06.05.19.02', NULL, '02', '固定板', 'Fixing plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3316', '30.06.05.20', NULL, '20', '灭火器', 'Fire extinguisher', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3317', '30.06.05.21', NULL, '21', '随车工具总成', 'Tools assembly attached with the vehicle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3318', '30.06.05.22', NULL, '22', '随车工具固定皮带', 'Driver\'s tools fixing belt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3319', '30.06.05.23', NULL, '23', '反光背心', 'Reflective vest', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('332', '10.06.04', NULL, '04', '传动轴', 'Drive shaft', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3320', '30.06.05.24', NULL, '24', '停车楔块', 'Parking wedge block', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3321', '30.06.05.25', NULL, '25', '防打起铅丝', 'Preventing overturning of lead wire', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3322', '30.06.05.26', NULL, '26', '装箱清单', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3323', '30.06.05.27', NULL, '27', '举升油泵摇杆', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3324', '30.06.05.28', NULL, '28', '滤芯', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3325', '30.06.05.29', NULL, '29', '油液', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3326', '30.06.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3327', '30.06.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3328', '30.06.06', NULL, '06', '工具箱', 'Tool box', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3329', '30.06.06.01', NULL, '01', '工具箱总成', 'Tool kit assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('333', '10.06.04.01', NULL, '01', '中间传动轴总成', 'Middle drive shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3330', '30.06.06.01.01', NULL, '01', '工具箱体', 'Toolbox body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3331', '30.06.06.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3332', '30.06.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3333', '30.07', NULL, '07', '燃油润滑剂及工作液', 'Fuel lubricant and working solution', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3334', '30.07.01', NULL, '01', '润滑剂及工作液', 'Lubricant and working solution', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3335', '30.07.01.01', NULL, '01', '轻柴油', 'Light diesel', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3336', '30.07.01.02', NULL, '02', '低温抗磨液压油', 'Low-temperature anti-wear hydraulic oil', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3337', '30.07.01.03', NULL, '03', '汽车通用锂基润滑脂', 'General purpose lithium lubricating grease for automobiles', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3338', '30.07.01.04', NULL, '04', '通用锂基润滑脂', 'General purpose lithium lubricating grease', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3339', '30.07.01.05', NULL, '05', '汽车发动机冷却液', 'Automobile engine coolant', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('334', '10.06.04.01.01', NULL, '01', '突缘叉', 'flange fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3340', '30.07.01.06', NULL, '06', '汽车自动传动油', 'Automobile automatic transmission oil', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3341', '30.07.01.07', NULL, '07', '制动液', 'Brake fluid', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3342', '30.07.01.08', NULL, '08', '齿轮油', 'Gear oil', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3343', '30.07.01.09', NULL, '09', '尿素溶液', 'Urea solution', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3344', '30.07.01.10', NULL, '10', '润滑油', 'Lubricating oil', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3345', '30.07.01.11', NULL, '11', '油液', 'Oil and solution', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3346', '30.07.01.12', NULL, '12', '空调用制冷剂', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3347', '30.07.01.13', NULL, '13', '玻璃洗涤剂', 'GLASS CLEANER', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3348', '30.08', NULL, '08', '牵引与防护装置', 'Traction and protective device', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3349', '30.08.01', NULL, '01', '防撞杠及牵引装置', 'Bumper and traction device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('335', '10.06.04.01.02', NULL, '02', '滑动叉', 'Slide fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3350', '30.08.01.01', NULL, '01', '前接梁', 'Left front connecting member', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3351', '30.08.01.02', NULL, '02', '连接外板焊合总成', 'Connecting outside plate welding assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3352', '30.08.01.02.01', NULL, '01', '连接外板', 'Connecting left outer plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3353', '30.08.01.02.02', NULL, '02', '连接槽', 'Connection slot', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3354', '30.08.01.02.03', NULL, '03', '中保险杠连接槽', 'Middle bumper connecting trough', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3355', '30.08.01.02.04', NULL, '04', '中保险杠连接板', 'Middle bumper connecting plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3356', '30.08.01.02.05', NULL, '05', '加强筋板', 'Reinforcing tendon-plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3357', '30.08.01.03', NULL, '03', '前连接横梁', 'Front lower connecting cross member', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3358', '30.08.01.04', NULL, '04', '前加强横梁总成', 'Front reinforced cross member assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3359', '30.08.01.04.01', NULL, '01', '前加强横梁', 'Front reinforced cross member', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('336', '10.06.04.01.03', NULL, '03', '防尘罩', 'Dust cap', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3360', '30.08.01.04.02', NULL, '02', '前横梁加强板', 'Front cross member reinforced plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3361', '30.08.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3362', '30.08.01.05', NULL, '05', '托架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3363', '30.08.01.06', NULL, '06', '前拖车钩', 'Front towing hook', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3364', '30.08.01.07', NULL, '07', '前牵引销', 'Front traction pin', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3365', '30.08.01.07.01', NULL, '01', '前牵引销连接板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3366', '30.08.01.07.02', NULL, '02', '前牵引销手柄', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3367', '30.08.01.08', NULL, '08', '前下部防护总成', 'Front lower protection piece assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3368', '30.08.01.08.01', NULL, '01', '前防撞杠总成', 'Front bumper assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3369', '30.08.01.08.01.01', NULL, '01', '连接座焊合', 'Connecting base welding', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('337', '10.06.04.01.04', NULL, '04', '十字轴总成', 'Cross shaft assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3370', '30.08.01.08.01.01.01', NULL, '01', '连接板', 'Connection plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3371', '30.08.01.08.01.01.02', NULL, '02', '槽钢', 'Channel steel', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3372', '30.08.01.08.01.01.03', NULL, '03', '槽型板', 'Channel plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3373', '30.08.01.08.01.02', NULL, '02', '槽钢', 'Channel steel', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3374', '30.08.01.08.01.03', NULL, '03', '前防撞杠', 'Front bumper', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3375', '30.08.01.08.02', NULL, '02', '端盖', 'End cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3376', '30.08.01.08.03', NULL, '03', '前接梁', 'connection plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3377', '30.08.01.08.04', NULL, '04', '连接外板', 'Connecting outside plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3378', '30.08.01.08.05', NULL, '05', '前加强横梁', 'Front reinforced cross member', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3379', '30.08.01.08.06', NULL, '06', '加强板', 'Reinforced plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('338', '10.06.04.01.05', NULL, '05', '焊接叉', 'Welding fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3380', '30.08.01.08.06.01', NULL, '01', '前下横梁连接板', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3381', '30.08.01.08.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3382', '30.08.01.09', NULL, '09', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3383', '30.08.01.09.01', NULL, '01', '筋板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3384', '30.08.01.09.02', NULL, '02', '托架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3385', '30.08.01.10', NULL, '10', '后牵引钩总成', 'Rear traction hook assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3386', '30.08.01.10.01', NULL, '01', '后牵引装置', 'Rear traction device', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3387', '30.08.01.10.02', NULL, '02', '后牵引钩销', 'Rear towing hook pin', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3388', '30.08.01.10.03', NULL, '03', '开口销', 'Split pin', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3389', '30.08.01.11', NULL, '11', '后下部防护总成', 'Rear under-run protection assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('339', '10.06.04.01.06', NULL, '06', '轴管', 'Shaft pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3390', '30.08.01.11.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3391', '30.08.01.11.02', NULL, '02', '加强槽板', 'Reinforcement groove board', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3392', '30.08.01.11.03', NULL, '03', '支臂', 'Right support arm', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3393', '30.08.01.11.04', NULL, '04', '加强块', 'Reinforcement block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3394', '30.08.01.11.05', NULL, '05', '定位块', 'Locating block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3395', '30.08.01.11.06', NULL, '06', '车身反光标识', 'Reflective sign on vehicle body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3396', '30.08.01.11.07', NULL, '07', '焊接式单头夹片', 'Weldable pipe clip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3397', '30.08.01.11.08', NULL, '08', '横梁焊合总成', 'Cross member welding assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3398', '30.08.01.11.08.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3399', '30.08.01.11.08.02', NULL, '02', '加强槽板', 'Reinforcement groove board', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('34', '10.01.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('340', '10.06.04.01.07', NULL, '07', '降噪纸', 'Noise reduction paper', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3400', '30.08.01.11.09', NULL, '09', '堵盖', 'Plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3401', '30.08.01.11.10', NULL, '10', '支撑杆', 'Support rod', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3402', '30.08.01.11.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3403', '30.08.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3404', '30.08.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('34044A11466E4025AC0', '20.02.06.10', '', '10', '后顶柜总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3405', '30.09', NULL, '09', '牵引装置', 'Traction device', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3406', '30.09.01', NULL, '01', '支撑连接装置', 'Support connection device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3407', '30.09.01.01', NULL, '01', '牵引座', 'Traction seats', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3408', '30.09.01.02', NULL, '02', '牵引座平垫板', 'Traction seats plat base plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3409', '30.09.01.03', NULL, '03', '牵引座波纹型垫板', 'Traction seats corrugated type base plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('341', '10.06.04.01.08', NULL, '08', '减震块', 'Damping block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3410', '30.09.01.03.01', NULL, '01', '垫板', 'Base plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3411', '30.09.01.03.02', NULL, '02', '加强板', 'Reinforcement board', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3412', '30.09.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3413', '30.09.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3414', '40', NULL, '40', '电子电器', 'Electronics & electrical appliances', '1', NULL, '1', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3415', '40.01', NULL, '01', '供暖、通风和空气调节系统(HVAC)', 'HVAC', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3416', '40.01.01', NULL, '01', '暖气装置', 'Heating installation', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3417', '40.01.01.01', NULL, '01', '空调箱总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3418', '40.01.01.01.01', NULL, '01', 'PTC加热器', 'PTC warmer', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3419', '40.01.01.01.02', NULL, '02', '空调箱壳体', 'A/C housing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('342', '10.06.04.01.09', NULL, '09', '中间轴', 'Countershaft', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3420', '40.01.01.01.03', NULL, '03', '鼓风电机', 'Blow motor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3421', '40.01.01.01.04', NULL, '04', '过滤器', 'Filter', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3422', '40.01.01.01.05', NULL, '05', '调速电阻', 'Speed regulation resistance', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3423', '40.01.01.01.06', NULL, '06', '调速模块', 'Speed regulation module', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3424', '40.01.01.01.07', NULL, '07', '伺服电机', 'servomotor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3425', '40.01.01.01.08', NULL, '08', '暖风芯体', 'Heater core', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3426', '40.01.01.01.09', NULL, '09', '温度传感器', 'Temperature sensor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3427', '40.01.01.01.10', NULL, '10', '蒸发器芯体', 'Evaporator core body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3428', '40.01.01.01.11', NULL, '11', '膨胀阀', 'Expansion valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3429', '40.01.01.01.12', NULL, '12', '线束', 'wiring harness', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('343', '10.06.04.01.10', NULL, '10', '传动轴中间支承', 'Drive shaft center bearing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3430', '40.01.01.01.13', NULL, '13', 'O型圈', 'Type O circle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3431', '40.01.01.01.14', NULL, '14', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3432', '40.01.01.01.16', NULL, '16', '密封垫', 'Gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3433', '40.01.01.01.17', NULL, '17', '排水软管', 'Drain Hose', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3434', '40.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3435', '40.01.01.02', NULL, '02', '鼓风机总成', 'Air blower assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3436', '40.01.01.02.01', NULL, '01', '鼓风电机', 'Blow motor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3437', '40.01.01.02.02', NULL, '02', '过滤器', 'Filter', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3438', '40.01.01.02.03', NULL, '03', '调速电阻', 'Speed regulation resistance', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3439', '40.01.01.02.04', NULL, '04', '调速模块', 'Speed regulation module', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('344', '10.06.04.01.11', NULL, '11', '中间凸缘', 'Intermediate flange', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3440', '40.01.01.02.05', NULL, '05', '伺服电机', 'servomotor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3441', '40.01.01.02.06', NULL, '06', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3442', '40.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3443', '40.01.01.03', NULL, '03', '空调控制器', 'A/C control', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3444', '40.01.01.03.02', NULL, '02', '装饰罩', 'Cover/Bezel/Housing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3445', '40.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3446', '40.01.01.04', NULL, '04', '风道', 'Air passage', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3447', '40.01.01.04.01', NULL, '01', '夹子', 'Clip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3448', '40.01.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3449', '40.01.01.05', NULL, '05', '暖风水管', 'Heater water pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('345', '10.06.04.01.12', NULL, '12', '挠性万向节', 'Flexible universal joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3450', '40.01.01.05.01', NULL, '01', '胶管', 'Rubber pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3451', '40.01.01.05.02', NULL, '02', '硬管', 'water outlet pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3452', '40.01.01.05.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3453', '40.01.01.05.04', NULL, '04', '暖风水阀', 'Heater water valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3454', '40.01.01.05.06', NULL, '06', '暖风附件', 'Heater accessory', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3455', '40.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3456', '40.01.01.06', NULL, '06', '暖风箱总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3457', '40.01.01.06.01', NULL, '01', 'PTC加热器', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3458', '40.01.01.06.02', NULL, '02', '暖风箱壳体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3459', '40.01.01.06.03', NULL, '03', '鼓风电机', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('346', '10.06.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3460', '40.01.01.06.04', NULL, '04', '过滤器', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3461', '40.01.01.06.05', NULL, '05', '调速电阻', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3462', '40.01.01.06.06', NULL, '06', '调速模块', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3463', '40.01.01.06.07', NULL, '07', '伺服电机', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3464', '40.01.01.06.08', NULL, '08', '暖风芯体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3465', '40.01.01.06.09', NULL, '09', '线束', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3466', '40.01.01.06.10', NULL, '10', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3467', '40.01.01.06.11', NULL, '11', '密封垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3468', '40.01.01.06.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3469', '40.01.01.07', NULL, '07', '暖风附件', 'Heater accessory', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('347', '10.06.04.02', NULL, '02', '后传动轴总成', 'Rear drive shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3470', '40.01.01.08', NULL, '08', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3471', '40.01.01.09', NULL, '09', '密封垫', 'Sealing gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3472', '40.01.01.10', NULL, '10', '暖风水阀', 'Heater water valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3473', '40.01.01.11', NULL, '11', '过滤器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3474', '40.01.01.12', NULL, '12', '防护网', 'Guard screen', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3475', '40.01.01.13', NULL, '13', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3476', '40.01.01.14', NULL, '14', '内外循环总成', 'Internal and outer circulation', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3477', '40.01.01.19', NULL, '19', '护套', 'Bush', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3478', '40.01.01.20', NULL, '20', '连块', 'Connector', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3479', '40.01.01.21', NULL, '21', '软垫', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('348', '10.06.04.02.01', NULL, '01', '突缘叉', 'flange fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3480', '40.01.01.22', NULL, '22', '暖风补水箱', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3481', '40.01.01.23', NULL, '23', 'PTC加热器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3482', '40.01.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3483', '40.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3484', '40.01.02', NULL, '02', '冷气装置', 'Cooling device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3485', '40.01.02.01', NULL, '01', '蒸发器总成', 'Evaporator assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3486', '40.01.02.01.01', NULL, '01', '排水软管', 'Drain Hose', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3487', '40.01.02.01.02', NULL, '02', '蒸发器壳体', 'Evaporator housing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3488', '40.01.02.01.03', NULL, '03', '保温阻尼胶', 'Thermal insulation damping rubber', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3489', '40.01.02.01.04', NULL, '04', '蒸发器芯体', 'Evaporator core body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('349', '10.06.04.02.02', NULL, '02', '十字轴总成', 'Cross shaft assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3490', '40.01.02.01.05', NULL, '05', '温度传感器', 'Temperature sensor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3491', '40.01.02.01.06', NULL, '06', '膨胀阀', 'Expansion valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3492', '40.01.02.01.07', NULL, '07', '线束', 'wiring harness', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3493', '40.01.02.01.08', NULL, '08', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3494', '40.01.02.01.10', NULL, '10', '过滤器', 'Filter', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3495', '40.01.02.01.11', NULL, '11', '密封垫片/密封/非O型圈', 'Gasket/Seal/Non O-Ring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3496', '40.01.02.01.12', NULL, '12', '隔热', 'Insulator', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3497', '40.01.02.01.13', NULL, '13', '风道叶片', 'Duct Baffle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3498', '40.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3499', '40.01.02.02', NULL, '02', '冷凝器总成', 'Condenser assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('35', '10.01.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('350', '10.06.04.02.03', NULL, '03', '滑动叉', 'Slide fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3500', '40.01.02.02.02', NULL, '02', '冷凝器芯体', 'Condenser core body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3501', '40.01.02.02.04', NULL, '04', '胶圈', 'Rubber ring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3502', '40.01.02.02.05', NULL, '05', '防护网', 'Guard screen', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3503', '40.01.02.02.06', NULL, '06', '风机', 'Condenser fan', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3504', '40.01.02.02.07', NULL, '07', '调速电阻', 'Speed regulation resistance', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3505', '40.01.02.02.08', NULL, '08', '风扇叶片', 'Blade', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3506', '40.01.02.02.09', NULL, '09', '护风罩', 'Fan cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3507', '40.01.02.02.10', NULL, '10', 'PWM控制器', 'PWM Control', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3508', '40.01.02.02.11', NULL, '11', '压力开关', 'Pressure switch', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3509', '40.01.02.02.12', NULL, '12', '线束', 'wiring harness', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('351', '10.06.04.02.04', NULL, '04', '滑动轴叉', 'Slide shaft fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3510', '40.01.02.02.13', NULL, '13', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3511', '40.01.02.02.14', NULL, '14', '制冷剂干燥包', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3512', '40.01.02.02.15', NULL, '15', '制冷剂滤器', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3513', '40.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3514', '40.01.02.03', NULL, '03', '压缩机', 'Compressor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3515', '40.01.02.03.01', NULL, '01', '压缩机壳体', 'Compressor Housing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3516', '40.01.02.03.02', NULL, '02', '压缩机驱动器', 'Compressor actuator', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3516C7FA462E4083B40', '20.04.04.01.01.06', '', '06', '前舱盖后部密封条', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3517', '40.01.02.03.03', NULL, '03', '压缩机离合器', 'Compressor Clutch', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3518', '40.01.02.04', NULL, '04', '皮带', 'Belt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3519', '40.01.02.05', NULL, '05', '储液器总成', 'Liquid storage device assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('352', '10.06.04.02.05', NULL, '05', '轴管', 'Shaft pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3520', '40.01.02.06', NULL, '06', '压缩机支架', 'Compressor bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3521', '40.01.02.07', NULL, '07', '涨紧轮', 'Idler gear', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3522', '40.01.02.08', NULL, '08', '涨紧机构', 'Tensioner mechanism', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3523', '40.01.02.09', NULL, '09', '空调管路', 'A/C Pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3524', '40.01.02.09.01', NULL, '01', '护套\\隔热套管', 'Sleeve/Insulator', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3525', '40.01.02.09.02', NULL, '02', 'O型圈', 'Type O circle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3526', '40.01.02.09.03', NULL, '03', '制冷剂充注阀', 'Refrigerant Valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3527', '40.01.02.09.04', NULL, '04', '电磁阀', 'Solenoid valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3528', '40.01.02.09.05', NULL, '05', '压力开关', 'Pressure switch', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3529', '40.01.02.09.06', NULL, '06', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('353', '10.06.04.02.06', NULL, '06', '降噪纸', 'Noise reduction paper', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3530', '40.01.02.09.08', NULL, '08', '管路', 'Pipeline', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3531', '40.01.02.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3532', '40.01.02.10', NULL, '10', '管夹', 'Pipe clamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3533', '40.01.02.11', NULL, '11', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3534', '40.01.02.12', NULL, '12', '空调开关', 'A/C switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3535', '40.01.02.13', NULL, '13', '排水软管', 'Drain Hose', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3536', '40.01.02.14', NULL, '14', '冷却器', 'Air Quality Sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3537', '40.01.02.15', NULL, '15', '板式换热器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3538', '40.01.02.15.01', NULL, '01', '电子膨胀阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3539', '40.01.02.15.02', NULL, '02', '电磁膨胀阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('354', '10.06.04.02.07', NULL, '07', '减震块', 'Damping block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3540', '40.01.02.15.03', NULL, '03', '板式换热器本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3541', '40.01.02.15.04', NULL, '04', '板式换热器支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3542', '40.01.02.16', NULL, '16', '空调警告标签', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3543', '40.01.02.28', NULL, '28', '空调警告标签', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3544', '40.01.02.29', NULL, '29', '空调总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3545', '40.01.02.30', NULL, '30', '负离子发生器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3546', '40.01.02.31', NULL, '31', '堵盖', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3547', '40.01.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3548', '40.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3549', '40.01.03', NULL, '03', '独立热源', 'Independent heat source', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('355', '10.06.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3550', '40.01.03.01', NULL, '01', '空气式燃油加热器', 'Air-type fuel heater', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3551', '40.01.03.01.01', NULL, '01', '加热器', 'Heater', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3552', '40.01.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3553', '40.01.03.02', NULL, '02', '水暖式燃油加热器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3554', '40.01.03.03', NULL, '03', '加热器油泵', 'Warmer oil pump', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3555', '40.01.03.05', NULL, '05', '加热器控制器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3556', '40.01.03.06', NULL, '06', '风道', 'Air passage', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3557', '40.01.03.07', NULL, '07', '水管', 'Water pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3558', '40.01.03.08', NULL, '08', '油管', 'Warmer oil pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3559', '40.01.03.09', NULL, '09', '气管', 'Air pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('356', '10.06.04.03', NULL, '03', '中后传动轴总成', 'Center rear drive shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3560', '40.01.03.10', NULL, '10', '警告标签', 'Heater warn label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3561', '40.01.03.11', NULL, '11', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3562', '40.01.03.12', NULL, '12', '水泵', 'Water pump', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3563', '40.01.03.13', NULL, '13', '水阀', 'Water valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3564', '40.01.03.14', NULL, '14', '线束', 'wiring harness', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3565', '40.01.03.15', NULL, '15', '空气式燃气加热器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3566', '40.01.03.16', NULL, '16', '水暖式燃气加热器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3567', '40.01.03.17', NULL, '17', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3568', '40.01.03.18', NULL, '18', '杂物盒', 'Sundries box', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3569', '40.01.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('357', '10.06.04.03.01', NULL, '01', '突缘叉', 'flange fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3570', '40.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3571', '40.01.04', NULL, '04', '驻车空调装置', 'Parking Cooler Assy', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3572', '40.01.04.01', NULL, '01', '空调遥控器', 'Cooler Remote', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3573', '40.01.04.02', NULL, '02', '驻车空调开关', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3574', '40.01.04.04', NULL, '04', '空调外罩', 'outer cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3575', '40.01.04.23', NULL, '23', '空调内饰件总成', 'Parking Cooler Inner Assy', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3576', '40.01.04.23.01', NULL, '01', '驾驶室内盖板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3577', '40.01.04.23.02', NULL, '02', '控制面板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3578', '40.01.04.23.03', NULL, '03', '过滤网', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3579', '40.01.04.24', NULL, '24', '空调外饰件总成', 'Parking Cooler Outer Assy', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('358', '10.06.04.03.02', NULL, '02', '滑动叉', 'Slide fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3580', '40.01.04.24.01', NULL, '01', '底座壳体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3581', '40.01.04.24.02', NULL, '02', '冷却风扇', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3582', '40.01.04.24.03', NULL, '03', '冷凝器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3583', '40.01.04.24.04', NULL, '04', '电子压缩机总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3584', '40.01.04.24.05', NULL, '05', '管路', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3585', '40.01.04.24.06', NULL, '06', '软垫', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3586', '40.01.04.24.07', NULL, '07', '鼓风蜗壳', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3587', '40.01.04.24.08', NULL, '08', '蒸发器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3588', '40.01.04.24.09', NULL, '09', '鼓风机总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3589', '40.01.04.24.10', NULL, '10', '调速模块', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('359', '10.06.04.03.03', NULL, '03', '防尘罩', 'Dust cap', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3590', '40.01.04.24.11', NULL, '11', '线束', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3591', '40.01.04.24.12', NULL, '12', '蒸发器温度传感器', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3592', '40.01.04.24.13', NULL, '13', '密封海绵', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3593', '40.01.04.24.14', NULL, '14', '防虫网', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3594', '40.01.04.24.15', NULL, '15', '空调用制冷剂', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3595', '40.01.04.24.16', NULL, '16', '空调使用维护警示标签', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3596', '40.01.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3597', '40.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3598', '40.02', NULL, '02', '电器系统', 'Electrical system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3599', '40.02.01', NULL, '01', '蓄电池', 'Battery', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('35B262D34A51495284C', '30.01.01.01.12', '', '12', '纵梁前段总成-左', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('36', '10.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('360', '10.06.04.03.04', NULL, '04', '十字轴总成', 'Cross shaft assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3600', '40.02.01.01', NULL, '01', '蓄电池箱盖', 'Battery box cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3601', '40.02.01.02', NULL, '02', '蓄电池', 'Battery assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3602', '40.02.01.03', NULL, '03', '蓄电池橡胶垫板', 'Battery shock absorption pad', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3603', '40.02.01.04', NULL, '04', '紧固拉杆', 'Battery tie rod', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3604', '40.02.01.05', NULL, '05', '蓄电池箱体总成', 'Battery body assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3605', '40.02.01.06', NULL, '06', '蓄电池压板', 'Battery clamping plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3606', '40.02.01.07', NULL, '07', '垫块', 'Pad', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3607', '40.02.01.08', NULL, '08', '蓄电池托盘', 'Battery pallet', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3608', '40.02.01.09', NULL, '09', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3609', '40.02.01.10', NULL, '10', '加强板', 'Reinforced plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('361', '10.06.04.03.05', NULL, '05', '焊接叉', 'Welding fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3610', '40.02.01.11', NULL, '11', '超级电容', 'super capacitor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3611', '40.02.01.12', NULL, '12', '电池均衡器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3612', '40.02.01.13', NULL, '13', '电源开关不干胶标示', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3613', '40.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3614', '40.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3615', '40.02.02', NULL, '02', '车身开关-底盘部分', 'switch – chassis part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3616', '40.02.02.01', NULL, '01', '组合开关', 'Combined switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3617', '40.02.02.02', NULL, '02', '操作手柄', 'Operating handle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3617AABA992642188A7', '20.04.04.01.01.05', '', '05', '前舱盖限位块', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3618', '40.02.02.03', NULL, '03', '点火开关总成', 'Igniting switch assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3619', '40.02.02.03.01', NULL, '01', '点火开关本体', 'Igniting switch assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('361AFBB23AFC4A71BB0', '60.06.01.01.07.04', '', '04', '通讯接插件', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('362', '10.06.04.03.06', NULL, '06', '轴管', 'Shaft pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3620', '40.02.02.03.02', NULL, '02', '点火锁芯', 'Ignition lock cylinder', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3621', '40.02.02.03.03', NULL, '03', '钥匙总成', 'Key assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3622', '40.02.02.03.04', NULL, '04', '防盗螺栓', 'Lock bolt', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3623', '40.02.02.03.05', NULL, '05', '点火开关匙圈', 'Ignition switch key ring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3624', '40.02.02.04', NULL, '04', '组合开关护罩', 'Combination switch shield', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3625', '40.02.02.05', NULL, '05', '刹车灯开关', 'Pedal stroke switch assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3626', '40.02.02.06', NULL, '06', '驻车制动开关', 'Hand brake switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3627', '40.02.02.07', NULL, '07', '离合开关', 'Clutch switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3628', '40.02.02.08', NULL, '08', '一键启动开关', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3629', '40.02.02.09', NULL, '09', '电子驻车制动开关', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('363', '10.06.04.03.07', NULL, '07', '降噪纸', 'Noise reduction paper', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3630', '40.02.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3631', '40.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3632', '40.02.03', NULL, '03', '底盘开关-底盘部分', 'Chassis switch-chassis part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3633', '40.02.03.01', NULL, '01', '电磁阀', 'Solenoid valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3634', '40.02.03.01.01', NULL, '01', '电磁阀阀体', 'Solenoid valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3635', '40.02.03.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3636', '40.02.03.02', NULL, '02', '副启动开关/副熄火开关', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3637', '40.02.03.03', NULL, '03', '驾驶室未锁止报警开关', 'Cab lock tell-tale', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3638', '40.02.03.04', NULL, '04', '电源总开关', 'Battery main switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3639', '40.02.03.05', NULL, '05', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('364', '10.06.04.03.08', NULL, '08', '减震块', 'Damping block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3640', '40.02.03.06', NULL, '06', '提示标识', 'Prompt identification', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3641', '40.02.03.07', NULL, '07', '预热继电器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3642', '40.02.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3643', '40.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3644', '40.02.04', NULL, '04', '信号装置-底盘部分', 'Signal device – chassis part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3645', '40.02.04.01', NULL, '01', '蜂鸣器', 'Buzzer', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3646', '40.02.04.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3647', '40.02.04.03', NULL, '03', '喇叭总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3648', '40.02.04.04', NULL, '04', '警示器', 'Waring device', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3649', '40.02.04.05', NULL, '05', '双音气喇叭总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('365', '10.06.04.03.09', NULL, '09', '中间轴', 'Countershaft', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3650', '40.02.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3651', '40.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3652', '40.02.05', NULL, '05', '信号装置-车身部分', 'Signal device-body part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3653', '40.02.05.01', NULL, '01', '气喇叭电磁阀', 'Air horn solenoid valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3654', '40.02.05.02', NULL, '02', '气喇叭', 'Air horn', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3655', '40.02.05.02.01', NULL, '01', '气喇叭', 'Air horn', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3656', '40.02.05.02.02', NULL, '02', '减震垫', 'Anti-vibration pad', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3657', '40.02.05.03', NULL, '03', '塑料螺母', 'Plastic nut', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3658', '40.02.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3659', '40.02.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('366', '10.06.04.03.10', NULL, '10', '传动轴中间支承', 'Drive shaft center bearing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3660', '40.02.06', NULL, '06', '电气附件', 'Electric accessory', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3661', '40.02.06.01', NULL, '01', '点烟器', 'Cigar lighter', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3662', '40.02.06.01.01', NULL, '01', '点烟器插头', 'Plug, cigarette lighter', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3663', '40.02.06.01.02', NULL, '02', '点烟器插座', 'Socket, cigarette lighter', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3664', '40.02.06.01.03', NULL, '03', '点烟器光圈', 'Light ring, cigarette lighter', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3665', '40.02.06.02', NULL, '02', '直流电源转换器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3666', '40.02.06.03', NULL, '03', '电源插座', 'Power socket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3667', '40.02.06.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3668', '40.02.06.05', NULL, '05', 'USB接口', 'USB', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3669', '40.02.06.06', NULL, '06', '手机无线充电', 'wireless charging', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('367', '10.06.04.03.11', NULL, '11', '连接叉', 'Connecting fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3670', '40.02.06.07', NULL, '07', '交流电源转换器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3671', '40.02.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3672', '40.02.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3673', '40.02.07', NULL, '07', '车载电器装置', 'refrigerator', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3674', '40.02.07.01', NULL, '01', '车载冰箱', 'On-board refrigerator', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3675', '40.02.07.02', NULL, '02', '制氧机', 'Oxygen generator', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3676', '40.02.07.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3677', '40.02.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3678', '40.02.08', NULL, '08', '继电器', 'Relay', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3679', '40.02.08.01', NULL, '01', '12V继电器', '12V relay', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('368', '10.06.04.03.12', NULL, '12', '滑动轴叉', 'Slide shaft fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3680', '40.02.08.02', NULL, '02', '24V继电器', '24V relay', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3681', '40.02.08.03', NULL, '03', '预热继电器', 'Preheating relay', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3682', '40.02.08.04', NULL, '04', '不干胶标签', 'Self-adhesive label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3683', '40.02.08.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3684', '40.02.08.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3685', '40.02.09', NULL, '09', '车身开关-车身部分', 'Body switch-Body part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3686', '40.02.09.01', NULL, '01', '小开关', 'Small switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3687', '40.02.09.02', NULL, '02', '门窗开关', 'Door window switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3688', '40.02.09.03', NULL, '03', '安装面板', 'Mounting panel', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3689', '40.02.09.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('369', '10.06.04.03.13', NULL, '13', '挠性万向节', 'Flexible universal joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3690', '40.02.09.05', NULL, '05', '多态开关', 'Multi state switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3691', '40.02.09.06', NULL, '06', '灯具开关', 'Lamp switch', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3692', '40.02.09.07', NULL, '07', '装饰灯开关', '1', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3693', '40.02.09.08', NULL, '08', '换挡开关', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3694', '40.02.09.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3695', '40.02.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3696', '40.02.10', NULL, '10', '传感器', 'Sensor', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3697', '40.02.10.01', NULL, '01', '加热式燃油传感器', 'Heating type fuel sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3698', '40.02.10.02', NULL, '02', '车速里程表传感器', 'Speedometer sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3699', '40.02.10.03', NULL, '03', '燃油传感器', 'Fuel sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('36DD9FB4544C4C6287A', '20.04.04.01.01.01.02.03.01', '', '01', '前舱盖左铰链加强板', '', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('37', '10.02', NULL, '02', '发动机冷却', 'Engine cooling', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('370', '10.06.04.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3700', '40.02.10.03.01', NULL, '01', '燃油传感器本体', 'Fuel sensor body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3701', '40.02.10.03.02', NULL, '02', '通气管', 'Breather pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3702', '40.02.10.03.03', NULL, '03', '固定油管螺母', 'Fixed oil pipe nut', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3703', '40.02.10.04', NULL, '04', '水温传感器', 'Water temperature sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3704', '40.02.10.05', NULL, '05', '机油压力传感器', 'Engine oil pressure sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3705', '40.02.10.06', NULL, '06', '发动机转速传感器', 'Engine speed sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3706', '40.02.10.07', NULL, '07', '气压传感器', 'Air pressure sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3707', '40.02.10.08', NULL, '08', '密封垫', 'Sealing gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3708', '40.02.10.09', NULL, '09', '蓄电池传感器', 'Battery sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3709', '40.02.10.10', NULL, '10', '雨量光线传感器', 'Rain Light Sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('371', '10.06.04.04', NULL, '04', '前传动轴总成', 'Front propeller shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3710', '40.02.10.11', NULL, '11', '阳光传感器', 'Sunlight sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3711', '40.02.10.12', NULL, '12', '环境温度传感器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3712', '40.02.10.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3713', '40.02.10.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3714', '40.02.11', NULL, '11', 'ECU标定文件', 'ECU calibration document', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3715', '40.02.11.01', NULL, '01', 'ECU软件及标定总成号', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3716', '40.02.11.02', NULL, '02', 'ECU标定数据号', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3717', '40.02.11.03', NULL, '03', 'ECU分层标定数据号', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3718', '40.02.11.04', NULL, '04', 'ECU应用层软件号', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3719', '40.02.12', NULL, '12', '网络数据', 'Network data', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('372', '10.06.04.04.01', NULL, '01', '突缘叉', 'flange fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3720', '40.02.12.01', NULL, '01', '数据', 'Data', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3721', '40.02.13', NULL, '13', '电器原理图', 'Schematic diagram for electrical equipment', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3722', '40.02.13.01', NULL, '01', '电器原理图', 'Schematic diagram for electrical equipment', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3723', '40.03', NULL, '03', '智能网联系统', 'Intelligent network system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3724', '40.03.01', NULL, '01', '行驶记录仪/车载终端', 'Tachographs / vehicle terminal', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3725', '40.03.01.01', NULL, '01', '行驶记录仪/车载终端', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3726', '40.03.01.02', NULL, '02', '行驶记录仪/车载终端附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3727', '40.03.01.03', NULL, '03', '天线', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3728', '40.03.01.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3729', '40.03.02', NULL, '02', '音响装置', 'Sound equipment', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('373', '10.06.04.04.02', NULL, '02', '十字轴总成', 'Cross shaft assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3730', '40.03.02.01', NULL, '01', '音响主机', 'Audio main machine', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3731', '40.03.02.01.07', NULL, '07', 'MIC', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3732', '40.03.02.01.08', NULL, '08', 'SD存储卡', 'SD memory card', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3733', '40.03.02.03', NULL, '03', '天线', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3734', '40.03.02.06', NULL, '06', '扬声器', 'Speaker', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3735', '40.03.02.07', NULL, '07', 'SD存储卡', 'SD memory card', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3736', '40.03.02.11', NULL, '11', '全景影像模块', 'Around View Monitoring', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3737', '40.03.02.13', NULL, '13', '显示屏总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3738', '40.03.02.14', NULL, '14', '堵盖', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3739', '40.03.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('374', '10.06.04.04.03', NULL, '03', '滑动叉', 'Slide fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3740', '40.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3741', '40.03.03', NULL, '03', '组合仪表', 'Instrument cluster', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3742', '40.03.03.01', NULL, '01', '组合仪表总成', 'Combination instrument assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3743', '40.03.03.02', NULL, '02', 'HUD主机', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3744', '40.03.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3745', '40.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3746', '40.03.04', NULL, '04', '雷达报警装置', 'Radar alarm device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3747', '40.03.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3748', '40.03.04.02', NULL, '02', '雷达控制器', 'Radar controller', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3749', '40.03.04.03', NULL, '03', '雷达探头总成', 'Radar probe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('375', '10.06.04.04.04', NULL, '04', '滑动轴叉', 'Slide shaft fork', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3750', '40.03.04.03.01', NULL, '01', '雷达探头本体', 'Radar probe body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3751', '40.03.04.03.02', NULL, '02', '雷达探头衬套', 'Radar probe bush', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3752', '40.03.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3753', '40.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3754', '40.03.05', NULL, '05', '车载无线控制器', 'Vehicle-mounted wireless service controller', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3755', '40.03.05.01', NULL, '01', 'T-BOX', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3756', '40.03.05.02', NULL, '02', '电子地平线总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3757', '40.03.05.03', NULL, '03', 'V2X总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3758', '40.03.05.05', NULL, '05', '车载无线控制器附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3759', '40.03.05.06', NULL, '06', '天线连接线束', 'Antenna connection', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('376', '10.06.04.04.05', NULL, '05', '轴管', 'Shaft pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3760', '40.03.05.07', NULL, '07', '微波天线模块', 'Microwave antenna', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3761', '40.03.05.09', NULL, '09', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3762', '40.03.05.10', NULL, '10', '天线', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3763', '40.03.05.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3764', '40.03.05.98', NULL, '98', '紧固件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3765', '40.03.07', NULL, '07', '智能驾驶装置', 'ADAS system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3766', '40.03.07.01', NULL, '01', '超声波雷达', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3767', '40.03.07.02', NULL, '02', '毫米波雷达', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3768', '40.03.07.03', NULL, '03', '激光雷达', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3769', '40.03.07.04', NULL, '04', '倒车摄像头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('377', '10.06.04.04.06', NULL, '06', '降噪纸', 'Noise reduction paper', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3770', '40.03.07.05', NULL, '05', 'AVM摄像头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3771', '40.03.07.06', NULL, '06', '监测摄像头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3772', '40.03.07.07', NULL, '07', 'ADAS摄像头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3773', '40.03.07.08', NULL, '08', '智能控制器总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3774', '40.03.07.09', NULL, '09', '智能驾驶装置附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3775', '40.03.07.10', NULL, '10', '倒车雷达控制器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3776', '40.03.07.11', NULL, '11', '超声波雷达总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3777', '40.03.07.12', NULL, '12', '护罩', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3778', '40.03.07.13', NULL, '13', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3779', '40.03.07.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('378', '10.06.04.04.07', NULL, '07', '减震块', 'Damping block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3780', '40.03.07.98', NULL, '98', '紧固件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3781', '40.03.08', NULL, '08', '车载不停车收费交易系统', '11', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3782', '40.03.08.01', NULL, '01', 'ETC主机', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3783', '40.03.08.02', NULL, '02', '车载不停车收费交易系统附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3784', '40.03.08.97', NULL, '97', 'ETC总成安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3785', '40.04', NULL, '04', '线束系统', 'Harness system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3786', '40.04.01', NULL, '01', '底盘线束', 'Chassis harness', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3787', '40.04.01.01', NULL, '01', '车架线束总成', 'Frame chassis assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3788', '40.04.01.01.01', NULL, '01', '线束', 'wiring harness', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3789', '40.04.01.01.02', NULL, '02', '保险丝盒本体', 'Fuse box body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('379', '10.06.04.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3790', '40.04.01.01.03', NULL, '03', '保险丝盒盒盖', 'Fuse box cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3791', '40.04.01.01.04', NULL, '04', '保险丝&断路器', 'Fuse & Breaker', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3792', '40.04.01.01.05', NULL, '05', '标识', 'Identification', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3793', '40.04.01.01.06', NULL, '06', '附属工具', 'Attachment Kit', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3794', '40.04.01.01.07', NULL, '07', '电阻', 'Resistance', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3795', '40.04.01.01.08', NULL, '08', '配电盒本体', 'Distribution box body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3796', '40.04.01.01.09', NULL, '09', '配电盒盒盖', 'Distribution box cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3797', '40.04.01.01.10', NULL, '10', '底座', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3798', '40.04.01.02', NULL, '02', '线束', 'wiring harness', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3799', '40.04.01.03', NULL, '03', '底盘配电盒', 'Chassis distribution box', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('38', '10.02.01', NULL, '01', '冷却系统', 'Cooling system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('380', '10.06.04.05', NULL, '05', '传动轴护圈', 'Drive shaft retainer', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3800', '40.04.01.03.01', NULL, '01', '底盘配电盒本体', 'Chassis distribution box body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3801', '40.04.01.03.02', NULL, '02', '保险丝&断路器', 'Fuse & Breaker', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3802', '40.04.01.03.03', NULL, '03', '底盘配电盒盒盖', 'Box Cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3803', '40.04.01.03.04', NULL, '04', '底盘配电盒盒支架', 'Box Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3804', '40.04.01.03.05', NULL, '05', '标识', 'Identification', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3805', '40.04.01.03.06', NULL, '06', '底座', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3806', '40.04.01.04', NULL, '04', '粘贴式固定件', 'Bonded fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3807', '40.04.01.05', NULL, '05', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3808', '40.04.01.06', NULL, '06', '海绵', 'Sponge', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3809', '40.04.01.07', NULL, '07', '标签', 'Label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('381', '10.06.04.06', NULL, '06', '传动轴护圈横梁', 'Drive shaft retainer cross beam', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3810', '40.04.01.08', NULL, '08', '护板', 'Shield plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3811', '40.04.01.09', NULL, '09', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3812', '40.04.01.10', NULL, '10', '龙骨条', 'Keel strip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3813', '40.04.01.11', NULL, '11', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3814', '40.04.01.12', NULL, '12', '锁扣', 'Buckle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3815', '40.04.01.13', NULL, '13', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3816', '40.04.01.14', NULL, '14', '电器盒盖', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3817', '40.04.01.15', NULL, '15', '底座', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3818', '40.04.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3819', '40.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('382', '10.06.04.07', NULL, '07', '传动轴中间支承支架', 'Drive shaft center bearing support', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3820', '40.04.02', NULL, '02', '车身线束', 'Body wiring harness', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3821', '40.04.02.01', NULL, '01', '车身主线束总成', 'Body main wiring harness assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3822', '40.04.02.01.01', NULL, '01', '线束', 'wiring harness', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3823', '40.04.02.01.02', NULL, '02', '车身过孔盒', 'Body through hole box', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3824', '40.04.02.01.03', NULL, '03', '车身过孔盒盒盖', 'Body through hole box cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3825', '40.04.02.01.04', NULL, '04', '保险丝盒', 'Fuse box', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3826', '40.04.02.01.05', NULL, '05', '保险丝&断路器', 'Fuse & Breaker', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3827', '40.04.02.01.06', NULL, '06', '标识', 'Identification', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3828', '40.04.02.01.07', NULL, '07', '附属工具', 'Attachment Kit', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3829', '40.04.02.01.08', NULL, '08', '电阻', 'Resistance', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('383', '10.06.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3830', '40.04.02.01.09', NULL, '09', '保险丝盒盒盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3831', '40.04.02.01.10', NULL, '10', '保险丝盒支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3832', '40.04.02.01.11', NULL, '11', '保险丝盒底座', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3833', '40.04.02.02', NULL, '02', '线束', 'wiring harness', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3834', '40.04.02.03', NULL, '03', '保险丝盒总成', 'Body Compartment Junction Box Assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3835', '40.04.02.03.01', NULL, '01', '保险丝盒本体', 'Fuse box body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3836', '40.04.02.03.02', NULL, '02', '接线板总成', 'Wiring board assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3837', '40.04.02.03.03', NULL, '03', '励磁电阻', 'Excitation resistance', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3838', '40.04.02.03.04', NULL, '04', '保险丝&断路器', 'Fuse & Breaker', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3839', '40.04.02.03.05', NULL, '05', '二极管', 'Diode', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('384', '10.06.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3840', '40.04.02.03.06', NULL, '06', '标识', 'Identification', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3841', '40.04.02.03.07', NULL, '07', '连接线', 'Connecting line', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3842', '40.04.02.03.08', NULL, '08', '附属工具', 'Attachment Kit', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3843', '40.04.02.03.09', NULL, '09', '保险丝盒盒盖', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3844', '40.04.02.03.10', NULL, '10', '保险丝盒支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3845', '40.04.02.03.11', NULL, '11', '保险丝盒底座', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3846', '40.04.02.04', NULL, '04', '保险丝盒固定附件', 'Fuse box fixing accessories', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3847', '40.04.02.05', NULL, '05', '保险丝盒盒盖', 'Fuse box cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3848', '40.04.02.06', NULL, '06', '粘贴式固定件', 'Bonded fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3849', '40.04.02.07', NULL, '07', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('385', '10.06.05', NULL, '05', 'TCU标定文件', 'TCU calibration document', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3850', '40.04.02.08', NULL, '08', '海绵', 'Sponge', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3851', '40.04.02.09', NULL, '09', '标签', 'Label', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3852', '40.04.02.10', NULL, '10', '护板', 'Shield plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3853', '40.04.02.11', NULL, '11', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3854', '40.04.02.12', NULL, '12', '龙骨条', 'Keel strip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3855', '40.04.02.13', NULL, '13', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3856', '40.04.02.14', NULL, '14', '车身过孔盒盒盖', 'Body through hole box cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3857', '40.04.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3858', '40.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3859', '40.04.03', NULL, '03', '制动系统线束', 'Brake system harness', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('386', '10.06.05.01', NULL, '01', 'TCU软件及标定总成号', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3860', '40.04.03.01', NULL, '01', '线束', 'wiring harness', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3861', '40.04.03.02', NULL, '02', '挂车制动接头插座', 'Trailer coupling head socket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3862', '40.04.03.03', NULL, '03', '螺旋线', 'Spiral line', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3863', '40.04.03.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3864', '40.04.03.05', NULL, '05', '钢管', 'Steel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3865', '40.04.03.06', NULL, '06', '胶管', 'Rubber pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3866', '40.04.03.07', NULL, '07', 'ABS总成', 'ABS assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3867', '40.04.03.08', NULL, '08', '尼龙管', 'Nylon pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3868', '40.04.03.09', NULL, '09', '消音器', 'Muffler', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3869', '40.04.03.10', NULL, '10', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('387', '10.06.05.02', NULL, '02', 'TCU标定数据号', 'TCU Calibration Data Number', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3870', '40.04.03.11', NULL, '11', '储油杯胶管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3871', '40.04.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3872', '40.04.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('387240CBA3324E559C6', '10.03.01.26', '', '26', '液压油箱总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3873', '40.04.04', NULL, '04', '悬架线束', 'Wiring harness of suspension', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3874', '40.04.04.01', NULL, '01', '线束', 'wiring harness', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3875', '40.04.04.02', NULL, '02', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3876', '40.04.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3877', '40.05', NULL, '05', '车身电子系统', 'Body electronic system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3878', '40.05.01', NULL, '01', '车身控制器', 'Body controller', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3879', '40.05.01.01', NULL, '01', '车身控制器', 'Body controller', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('388', '10.06.05.03', NULL, '03', 'TCU应用层软件号', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3880', '40.05.01.01.01', NULL, '01', '车身控制器本体', 'BCM', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3881', '40.05.01.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3882', '40.05.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3883', '40.05.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3884', '40.05.01.02.01', NULL, '01', '网关本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3885', '40.05.01.02.02', NULL, '02', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3886', '40.05.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3887', '40.05.01.03', NULL, '03', '挂车控制器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3888', '40.05.01.03.01', NULL, '01', '挂车控制器本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3889', '40.05.01.03.02', NULL, '02', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('389', '10.06.05.04', NULL, '04', 'TCU引导加载软件号', 'TCU Bootloader Software Number', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3890', '40.05.01.03.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3891', '40.05.01.04', NULL, '04', '网关', 'Net', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3892', '40.05.01.05', NULL, '05', 'LIN转CAN模块', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3893', '40.05.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3894', '40.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3895', '40.05.02', NULL, '02', '门控制器', 'Door controller', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3896', '40.05.02.01', NULL, '01', '门控制器', 'Door controller', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3897', '40.05.02.01.01', NULL, '01', '门控制器本体', 'DCM', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3898', '40.05.02.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3899', '40.05.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('39', '10.02.01.01', NULL, '01', '冷却模块总成', 'Cooling module assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('390', '10.06.05.05', NULL, '05', 'TCU底层软件号', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3900', '40.05.02.05', NULL, '05', '电动车窗防夹控制器', 'Power window anti-pinch controller', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3901', '40.05.02.06', NULL, '06', '射频接收器', 'Receiver', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3902', '40.05.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3903', '40.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3904', '40.05.03', NULL, '03', '防盗系统', 'Anti-theft system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3905', '40.05.03.01', NULL, '01', '防盗控制器', 'Anti-theft controller', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3906', '40.05.03.01.01', NULL, '01', '防盗控制器本体', 'IMMO简写?', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3907', '40.05.03.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3908', '40.05.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3909', '40.05.03.02', NULL, '02', '低频天线', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('391', '10.06.06', NULL, '06', '减速器', 'Reducer', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3910', '40.05.03.02.01', NULL, '01', '低频天线本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3911', '40.05.03.02.02', NULL, '02', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3912', '40.05.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3913', '40.05.03.03', NULL, '03', '电子转向锁', 'ESCL', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3914', '40.05.03.03.01', NULL, '01', '锁体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3915', '40.05.03.03.02', NULL, '02', '抱箍', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3916', '40.05.03.03.03', NULL, '03', '防盗螺钉', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3917', '40.05.03.04', NULL, '04', 'PEPS控制器', 'PS ECU', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3918', '40.05.03.04.01', NULL, '01', 'PEPS控制器本体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3919', '40.05.03.04.02', NULL, '02', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('392', '10.06.06.01', NULL, '01', '减速器总成', 'Reducer assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3920', '40.05.03.04.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3921', '40.05.03.05', NULL, '05', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3922', '40.05.03.06', NULL, '06', '堵盖', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3923', '40.05.03.07', NULL, '07', '智能钥匙', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3924', '40.05.03.09', NULL, '09', '防盗线圈', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3925', '40.05.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3926', '40.05.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3927', '40.05.04', NULL, '04', '安全电子装置', 'Safety electronic device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3928', '40.05.04.01', NULL, '01', '时钟弹簧总成', 'Clock spring assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3929', '40.05.04.01.01', NULL, '01', '时钟弹簧', 'Clock spring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('393', '10.06.06.02', NULL, '02', '减速器本体', 'Reducer', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3930', '40.05.04.01.02', NULL, '02', '转接线束', 'Adapter harness', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3931', '40.05.04.02', NULL, '02', '气囊电控单元总成', 'Airbag ECU', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3932', '40.05.04.03', NULL, '03', '传感器', 'Sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3933', '40.05.04.04', NULL, '04', '驾驶员气囊总成', 'Driver airbag assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3934', '40.05.04.05', NULL, '05', '乘员气囊总成', 'Passenger airbag assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3935', '40.05.04.05.01', NULL, '01', '乘员气囊', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3936', '40.05.04.05.02', NULL, '02', '乘员气囊转接线束', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3937', '40.05.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3937D59298334BA9A2B', '30.01.01.01.15', '', '15', '纵梁后段总成-左', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('3938', '40.05.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3939', '40.06', NULL, '06', '底盘电子系统', 'Chassis electronic system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('394', '10.06.06.03', NULL, '03', '轴', 'Alex', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3940', '40.06.01', NULL, '01', '胎压监测系统', 'Tire pressure monitoring system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3941', '40.06.01.01', NULL, '01', '胎压监测传感器', 'Tire pressure monitoring module', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3942', '40.06.01.02', NULL, '02', '胎压监测气管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3943', '40.06.01.03', NULL, '03', '前桥传感器平衡块', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3944', '40.06.01.04', NULL, '04', '接收模块', 'Receiving module', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3945', '40.06.01.05', NULL, '05', '显示模块', 'Display module', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3946', '40.06.01.06', NULL, '06', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3947', '40.06.01.97', NULL, '97', '安装图', 'Installition Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3948', '40.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3949', '40.07', NULL, '07', '智能驾驶系统', 'Intelligent vihecle', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('395', '10.06.06.04', NULL, '04', '齿轮', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3950', '40.07.02', NULL, '02', '夜视系统', '11', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3951', '40.07.02.01', NULL, '01', '夜视仪总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3952', '40.07.02.02', NULL, '02', '夜视摄像头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3953', '40.07.02.03', NULL, '03', '夜视系统附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3954', '40.07.02.04', NULL, '04', '安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3955', '50', NULL, '50', '货箱及上装装置', 'Cargo tank and loading device', '1', NULL, '1', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3956', '50.01', NULL, '01', '平板货箱', 'Cargo tank of flat-bed trailer', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3957', '50.01.01', NULL, '01', '平板货箱本体总成', 'Cargo body of flat-bed trailer', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3958', '50.01.01.01', NULL, '01', '货箱总成', 'Cargo tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3959', '50.01.01.01.01', NULL, '01', '底板', 'Base plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('396', '10.06.06.05', NULL, '05', '轴承', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3960', '50.01.01.01.02', NULL, '02', '边板', 'Side plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3961', '50.01.01.01.03', NULL, '03', '后板', 'Rear plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3962', '50.01.01.01.04', NULL, '04', '前板', 'Front plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3963', '50.01.01.01.05', NULL, '05', '货箱立柱', 'Cargo body stand column', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3964', '50.01.01.01.06', NULL, '06', '货箱总成支撑连接板', 'Cargo body assembly support connection plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3965', '50.01.01.01.07', NULL, '07', '锁柄', 'Lock handle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3966', '50.01.01.02', NULL, '02', '货箱安装附件', 'Cargo installation accessory', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3967', '50.01.01.02.01', NULL, '01', '骑马螺栓', 'U bolt', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3968', '50.01.01.02.02', NULL, '02', '压板', 'Pressure plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3969', '50.01.01.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('397', '10.06.06.06', NULL, '06', '油封', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3970', '50.01.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3971', '50.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3972', '50.01.02', NULL, '02', '货箱护栏及附件', 'Cargo guard rail and accessory', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3973', '50.01.02.01', NULL, '01', '货箱护栏', 'Cargo guard rail', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3974', '50.01.02.02', NULL, '02', '货箱侧护栏支撑', 'Cargo side guardrail support', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3975', '50.01.02.03', NULL, '03', '踏梯总成', 'ladder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('39753361B7A142A1B59', '50.01.01.08.01.01', '', '01', '球头支架', '', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('3976', '50.01.02.04', NULL, '04', '货箱安装附件', 'Cargo installation accessory', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3977', '50.01.02.05', NULL, '05', '侧防护栏', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3978', '50.01.02.06', NULL, '06', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3979', '50.01.02.07', NULL, '07', '垫木', 'Skid', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('397C0292DA834440A6B', '10.03.01.26.06', '', '06', '空气滤清器总成安装法兰', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('398', '10.06.06.07', NULL, '07', '壳体', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3980', '50.01.02.08', NULL, '08', '货箱护栏及附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3981', '50.01.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3982', '50.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3983', '50.02', NULL, '02', '厢式货箱', 'Cargo tank of van', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3984', '50.02.01', NULL, '01', '厢式货箱本体总成', 'Cargo body of van', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3985', '50.02.01.01', NULL, '01', '货箱总成', 'Cargo tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3986', '50.02.01.01.01', NULL, '01', '底板', 'Base plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3987', '50.02.01.01.02', NULL, '02', '前板', 'Front plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3988', '50.02.01.01.03', NULL, '03', '侧板', 'Side plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3989', '50.02.01.01.04', NULL, '04', '顶盖', 'Roof plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('399', '10.06.06.08', NULL, '08', '壳体附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3990', '50.02.01.01.05', NULL, '05', '侧门', 'Side door', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3991', '50.02.01.01.06', NULL, '06', '后门', 'rear door', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3992', '50.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3993', '50.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3994', '50.03', NULL, '03', '上装电器系统', 'Loading electrical system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3995', '50.03.01', NULL, '01', '上装电器装置', 'Loading electrical device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3996', '50.03.01.01', NULL, '01', '示廓灯线束总成', 'Outline marker lamp wiring harness assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3997', '50.03.01.02', NULL, '02', '示廓灯总成', 'clearance lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3998', '50.03.01.03', NULL, '03', '侧标志灯', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3999', '50.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('3B78779E0F67412685C', '10.03.01.28.03', '', '03', '空气滤清器滤芯', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4', '10.01.01', NULL, '01', '发动机总成', 'Engine Assembly', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('40', '10.02.01.01.01', NULL, '01', '散热器带护风罩总成', 'Radiator with fan cover assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('400', '10.06.06.09', NULL, '09', '外部结构', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4000', '50.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4001', '50.04', NULL, '04', '货箱倾斜系统', 'Loading electrical system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4002', '50.04.01', NULL, '01', '倾卸机构液压系统', 'Dumping mechanism hydraulic system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4003', '50.04.01.01', NULL, '01', '前置缸总成', 'Front hydraulic cylinder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4004', '50.04.01.02', NULL, '02', '齿轮泵总成', 'Gear pump', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4005', '50.04.01.03', NULL, '03', '换向阀组件总成', 'Distribution valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4006', '50.04.01.03.01', NULL, '01', '操纵杠杆', 'Actuating lever', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4007', '50.04.01.03.02', NULL, '02', '换向阀总成', 'Distribution valve assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4008', '50.04.01.04', NULL, '04', '液压油箱总成', 'Hydraulic oil tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4009', '50.04.01.04.01', NULL, '01', '液压油箱焊合总成', 'Welded hydraulic oil tank assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('401', '10.06.06.10', NULL, '10', '电器件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4010', '50.04.01.04.01.01', NULL, '01', '油箱本体', 'Oil tank ontology', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4011', '50.04.01.04.01.02', NULL, '02', '回油口接头', 'Oil return mouth', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4012', '50.04.01.04.01.03', NULL, '03', '油箱隔板', 'Oil tank barrier', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4013', '50.04.01.04.01.04', NULL, '04', '油箱侧板', 'Oil tank side plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4014', '50.04.01.04.01.05', NULL, '05', '放油塞支座', 'Oil drainage base', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('40144FFA95614447895', '10.03.01.34', '', '34', '球阀总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4015', '50.04.01.04.01.06', NULL, '06', '加油口接头座', 'Oil filler base', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4016', '50.04.01.04.01.07', NULL, '07', '吸油口接头座', 'Oil absorption base', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4017', '50.04.01.04.02', NULL, '02', '液压油箱盖总成', 'Filler cap assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4018', '50.04.01.04.03', NULL, '03', '液压油箱垫带', 'Hydraulic oil tank flap', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4019', '50.04.01.04.04', NULL, '04', '加油滤清器总成', 'Oil filler filter assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('402', '10.06.06.11', NULL, '11', '传动轴连接', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4020', '50.04.01.04.05', NULL, '05', '吸油滤清器总成', 'Oil filter assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4021', '50.04.01.04.05.01', NULL, '01', '滤网支座', 'Strainer base', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4022', '50.04.01.04.05.02', NULL, '02', '滤网', 'Strainer', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4023', '50.04.01.04.05.03', NULL, '03', '内滤芯', 'Inner fliter element', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4024', '50.04.01.04.05.04', NULL, '04', '外滤芯', 'Outer fliter element', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4025', '50.04.01.04.05.05', NULL, '05', '端盖', 'End cover', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4026', '50.04.01.04.05.06', NULL, '06', '出油口接头', 'Outlet opening', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4027', '50.04.01.04.06', NULL, '06', '回油过滤器总成', 'Oil return filter assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4028', '50.04.01.04.07', NULL, '07', '放油塞铜垫圈', 'Oil drainage copper washer', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4029', '50.04.01.04.08', NULL, '08', '油箱固定板', 'oil tank permanent plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('403', '10.06.06.12', NULL, '12', '变速器悬置', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4030', '50.04.01.05', NULL, '05', '套筒缸总成', 'sleeve hydraulic cylinder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4031', '50.04.01.06', NULL, '06', '液压油箱支架及拉带总成', 'Hydraulic oil tank bracket and Pull tap assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4032', '50.04.01.06.01', NULL, '01', '液压油箱支架总成', 'Hydraulic oil tank bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4033', '50.04.01.06.01.01', NULL, '01', '支撑板', 'Support plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4034', '50.04.01.06.01.02', NULL, '02', '连接板', 'Connecting plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4035', '50.04.01.06.01.03', NULL, '03', '支撑管', 'Support tube', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4036', '50.04.01.06.01.04', NULL, '04', '固定座', 'permanent seat', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4037', '50.04.01.06.01.05', NULL, '05', '立板', 'Vertical plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4038', '50.04.01.06.01.06', NULL, '06', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4039', '50.04.01.06.01.07', NULL, '07', '横板', 'Cross plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('404', '10.06.06.13', NULL, '13', '其它附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4040', '50.04.01.06.02', NULL, '02', '拉带总成', 'Pull tap assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4041', '50.04.01.06.02.01', NULL, '01', '拉带', 'Pull tap', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4042', '50.04.01.06.02.02', NULL, '02', '拉带螺栓', 'Joint screw', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4043', '50.04.01.07', NULL, '07', '液压油缸上支座', 'Upper support of hydraulic cylinder', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4044', '50.04.01.07.01', NULL, '01', '液压油缸上支座底座', 'Base support', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4045', '50.04.01.07.02', NULL, '02', '压盖', 'Gland', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4046', '50.04.01.07.03', NULL, '03', '减磨衬套', 'Antifriction bushing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4047', '50.04.01.08', NULL, '08', '液压油缸下支座', 'Lower support of hydraulic cylinder', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4048', '50.04.01.08.01', NULL, '01', '液压油缸下支座底座', 'Base support', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4049', '50.04.01.09', NULL, '09', '换向阀支架总成', 'Reversing valve bracket assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('405', '10.06.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4050', '50.04.01.09.01', NULL, '01', '换向阀支架', 'Reversing valve bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4051', '50.04.01.10', NULL, '10', '油缸与三角架组件总成', 'Oil tank and triangle bracket component assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4052', '50.04.01.10.01', NULL, '01', '三角架总成', 'Triangular support assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4053', '50.04.01.10.01.01', NULL, '01', '三角板焊合', 'Square plate welding joint', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4054', '50.04.01.10.01.01.01', NULL, '01', '三角板', 'Square plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4055', '50.04.01.10.01.01.02', NULL, '02', '减磨衬套', 'Antifriction bushing', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4056', '50.04.01.10.01.01.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4057', '50.04.01.10.01.02', NULL, '02', '上连接轴焊合', 'Upper connection shaft welding joint', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4058', '50.04.01.10.01.02.01', NULL, '01', '上连接轴', 'Upper connection shaft', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4059', '50.04.01.10.01.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('406', '10.06.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4060', '50.04.01.10.01.02.03', NULL, '03', '连接套', 'Adapter sleeve', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4061', '50.04.01.10.01.03', NULL, '03', '垫圈', 'Washer', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4062', '50.04.01.10.01.04', NULL, '04', '六角开槽螺母', 'Hexagong slotted nut', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4063', '50.04.01.10.02', NULL, '02', '活塞缸总成', 'Piston hydraulic cylinder assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4064', '50.04.01.10.03', NULL, '03', '拉杆总成', 'Pull rod assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4065', '50.04.01.10.03.01', NULL, '01', '拉杆', 'Pull rod', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4066', '50.04.01.10.03.02', NULL, '02', '连接板', 'Connecting plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4067', '50.04.01.10.03.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4068', '50.04.01.10.03.04', NULL, '04', '限位块', 'Limit block', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4069', '50.04.01.10.04', NULL, '04', '垫圈', 'Washer', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('407', '10.07', NULL, '07', '悬置系统', 'Mount system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4070', '50.04.01.10.05', NULL, '05', '销轴', 'Pin shaft', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4071', '50.04.01.11', NULL, '11', '成型低压油管', 'Low pressure fuel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4072', '50.04.01.12', NULL, '12', '高压油管总成', 'High pressure oil pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4073', '50.04.01.13', NULL, '13', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4074', '50.04.01.13.01', NULL, '01', '铰接头体', 'Articulated head body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4075', '50.04.01.13.02', NULL, '02', '油管接头', 'Oil connection', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4076', '50.04.01.14', NULL, '14', '空心螺栓', 'Hollow bolt', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4077', '50.04.01.15', NULL, '15', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4078', '50.04.01.16', NULL, '16', '液压油箱垫块', 'Hydraulic oil tank block', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4079', '50.04.01.17', NULL, '17', '高压钢管', 'High pressure steel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('408', '10.07.01', NULL, '01', '动力总成悬置', 'Power Assembly Suspension', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4080', '50.04.01.18', NULL, '18', '低压钢管', 'Low pressure steel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4081', '50.04.01.19', NULL, '19', '双作用油缸与铰接头组件总成', 'Double-acting hydraulic cylinder and articulated head unit', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4082', '50.04.01.19.01', NULL, '01', '双作用液压油缸', 'Double-acting hydraulic cylinder', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4083', '50.04.01.20', NULL, '20', '拉杆安装座总成', 'Rod mounting seat', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4084', '50.04.01.20.01', NULL, '01', '减磨衬套', 'Antifriction bushing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4085', '50.04.01.20.02', NULL, '02', '拉杆安装座', 'Dumping mechanism hydraulic system installation diagram', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4086', '50.04.01.20.03', NULL, '03', '限位块', 'Limit block', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4087', '50.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4088', '50.04.02', NULL, '02', '液压操纵机构', 'Hydraulic control mechanism installation', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4089', '50.04.02.01', NULL, '01', '控制器固定板', 'Controler retainer plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('409', '10.07.01.01', NULL, '01', '软垫总成', 'Rear vibration absorber cushion assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4090', '50.04.02.02', NULL, '02', '软轴中继固定板', 'Control flexible shaft bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4091', '50.04.02.03', NULL, '03', '尼龙压力管管束总成', 'Nylon pressure tube bundle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4092', '50.04.02.04', NULL, '04', '气管接头', 'Gas type fitting', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4093', '50.04.02.05', NULL, '05', '手动气阀', 'Manual air valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4094', '50.04.02.06', NULL, '06', '限位阀', 'Limit valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4095', '50.04.02.07', NULL, '07', '限位拉线总成', 'Limit cable assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4096', '50.04.02.08', NULL, '08', '控制器带推拉软轴总成', 'Controller belt push-pull soft shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4097', '50.04.02.09', NULL, '09', '转轮', 'Wheelie', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4098', '50.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4099', '50.05', NULL, '05', '自卸货箱', 'Cargo tank of tipper', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('41', '10.02.01.01.01.01', NULL, '01', '散热器', 'Radiator', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('410', '10.07.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4100', '50.05.01', NULL, '01', '自卸货箱本体总成', 'Cargo body of tipper', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4101', '50.05.01.01', NULL, '01', '货箱总成', 'Cargo tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4102', '50.05.01.01.01', NULL, '01', '底板', 'Base plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4103', '50.05.01.01.02', NULL, '02', '边板', 'Side plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4104', '50.05.01.01.03', NULL, '03', '后板', 'Rear plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4105', '50.05.01.01.04', NULL, '04', '前板', 'Front plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4106', '50.05.01.01.05', NULL, '05', '货箱立柱', 'Cargo body stand column', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4107', '50.05.01.01.06', NULL, '06', '货箱总成支撑连接板', 'Cargo body assembly support connection plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4108', '50.05.01.01.07', NULL, '07', '锁柄', 'Lock handle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4109', '50.05.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('411', '10.07.01.04', NULL, '04', '压盖', 'Gland', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4110', '50.06', NULL, '06', '液压尾板系统', '', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4111', '50.06.01', NULL, '01', '液压尾板', '', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4112', '50.06.01.01', NULL, '01', '液压尾板总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4113', '50.07', NULL, '07', '仓栅货箱', '11', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4114', '50.07.01', NULL, '01', '仓栅货箱本体总成', '11', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4115', '50.07.01.01', NULL, '01', '仓栅货箱总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4116', '50.07.01.01.01', NULL, '01', '地板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4117', '50.07.01.01.02', NULL, '02', '前板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4118', '50.07.01.01.03', NULL, '03', '边板', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4119', '50.07.01.01.04', NULL, '04', '棚杆', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('412', '10.07.01.07', NULL, '07', '悬置支撑梁', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4120', '50.07.01.01.05', NULL, '05', '花栏', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4121', '50.07.01.01.06', NULL, '06', '后门', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4122', '50.07.01.97', NULL, '97', '仓栅货箱安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4123', '50.07.01.98', NULL, '98', '仓栅货箱紧固件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4124', '60', NULL, '60', '新能源', 'New energy', '1', NULL, '1', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4125', '60.01', NULL, '01', '燃料存贮&输送', 'Fuel storage & transport', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4126', '60.01.01', NULL, '01', '燃气供给系统', 'Gas supply system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4127', '60.01.01.01', NULL, '01', 'LNG(HPDI)供气系统总成', 'LNG(HPDI) gas supply system assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4128', '60.01.01.01.01', NULL, '01', '供气系统总成', 'Gas supply system assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4129', '60.01.01.01.02', NULL, '02', '缓冲罐总成', 'Buffer tank assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('413', '10.07.01.09', NULL, '09', '隔热罩', 'Heat shield', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4130', '60.01.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4131', '60.01.01.01.04', NULL, '04', '液压系统总成', 'Hydraulic system assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4132', '60.01.01.01.05', NULL, '05', '液压油罐', 'Hydraulic oil tank', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4133', '60.01.01.01.06', NULL, '06', '液压油冷却风扇', 'Hydraulic oil cooling fan', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4134', '60.01.01.01.07', NULL, '07', '液压油控制阀', 'Hydraulic oil control valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4135', '60.01.01.01.08', NULL, '08', '液压油管', 'Hydraulic oil pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4136', '60.01.01.01.09', NULL, '09', '排气系统总成', 'Exhaust system assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4137', '60.01.01.01.10', NULL, '10', '排气管路', 'Exhaust line', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4138', '60.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4139', '60.01.01.02', NULL, '02', 'LNG供气系统总成', 'LNG gas supply system assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('414', '10.07.01.10', NULL, '10', '吊架', 'Transmission left upper cradle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4140', '60.01.01.03', NULL, '03', 'CNG供气系统总成', 'CNG gas supply system assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4141', '60.01.01.04', NULL, '04', '钢瓶总成', 'steel cylinder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4142', '60.01.01.04.01', NULL, '01', 'CNG燃气钢瓶总成', 'steel cylinder assemblySteering reversal hydraulic cylinder assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4143', '60.01.01.04.02', NULL, '02', 'LNG钢瓶总成', 'Proximity sensor assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4144', '60.01.01.04.04', NULL, '04', '钢瓶球阀总成', 'Steel cylinder ball valve assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4145', '60.01.01.05', NULL, '05', '燃气供气管路', 'Gas supply pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4146', '60.01.01.05.01', NULL, '01', '燃气供气管路', 'Gas supply pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4147', '60.01.01.05.02', NULL, '02', '减压器总成', 'Pressure reducer assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4148', '60.01.01.05.04', NULL, '04', '加热水管', 'Heating water pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4149', '60.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('415', '10.07.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4150', '60.01.01.07', NULL, '07', '控制面板', 'Control panel', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4151', '60.01.01.08', NULL, '08', '燃气钢瓶支架总成', 'Gas steel cylinder support assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4152', '60.01.01.09', NULL, '09', '汽化器总成', 'Vaporizer assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4153', '60.01.01.10', NULL, '10', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4154', '60.01.01.11', NULL, '11', '稳压罐总成', 'Regulator tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4155', '60.01.01.12', NULL, '12', '热交换器总成', 'Heat exchanger assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4156', '60.01.01.13', NULL, '13', '减压器、稳压器总成', 'Pressure regulator, voltage regulator assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4157', '60.01.01.14', NULL, '14', '燃气滤清器总成', 'Gas filter assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4158', '60.01.01.15', NULL, '15', '控制器、电磁阀', 'Controller, solenoid valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4159', '60.01.01.16', NULL, '16', '气管夹', 'Gas pipe clamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('416', '10.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4160', '60.01.01.17', NULL, '17', '液位传感器', 'Liquid level sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4161', '60.01.01.18', NULL, '18', '防护罩', 'Guard cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4162', '60.01.01.19', NULL, '19', '节流阀总成', 'Throttle valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4163', '60.01.01.20', NULL, '20', '高压电磁阀总成', 'High-pressure solenoid valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4164', '60.01.01.21', NULL, '21', '气量显示表总成', 'Gas volume display list assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4165', '60.01.01.22', NULL, '22', '手动截止阀总成', 'Manual check valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4166', '60.01.01.97', NULL, '97', '安装图', 'Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4167', '60.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4168', '60.01.02', NULL, '02', '氢系统', 'Hydrogen system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4169', '60.01.02.01', NULL, '01', '储气瓶', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('417', '10.07.02', NULL, '02', '变速器悬置', 'Transmission suspension', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4170', '60.01.02.02', NULL, '02', '管件总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4171', '60.01.02.03', NULL, '03', '加氢口', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4172', '60.01.02.05', NULL, '05', '阀', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4173', '60.01.02.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4174', '60.01.02.07', NULL, '07', '传感器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4175', '60.01.02.08', NULL, '08', '压力表', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4176', '60.01.02.09', NULL, '09', '线束', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4177', '60.01.02.10', NULL, '10', '氢系统控制器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4178', '60.01.02.11', NULL, '11', '软垫', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4179', '60.01.02.12', NULL, '12', '隔板', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('418', '10.07.02.01', NULL, '01', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4180', '60.01.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4181', '60.02', NULL, '02', '传动系统', 'Reducer', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4182', '60.03', NULL, '03', '动力系统', '11', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4183', '60.03.01', NULL, '01', '燃料电池系统', 'Fuel cell system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4184', '60.03.01.01', NULL, '01', '燃料电池主机总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4185', '60.03.01.02', NULL, '02', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4186', '60.03.01.03', NULL, '03', '减震垫', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4187', '60.03.01.05', NULL, '05', '散热管路', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4188', '60.03.01.06', NULL, '06', '空压机总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4189', '60.03.01.07', NULL, '07', '空滤器总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('419', '10.07.02.02', NULL, '02', '安装梁', 'Mounting beam', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4190', '60.03.01.08', NULL, '08', '进气管路', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('419045559D464EB4987', '20.04.04.01.01.11.01', '', '01', '前舱盖锁体总成', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4191', '60.03.01.09', NULL, '09', '排气管路', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4192', '60.03.01.10', NULL, '10', '线束', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4193', '60.03.01.11', NULL, '11', 'DCF', 'DCF', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4194', '60.03.01.12', NULL, '12', '燃料电池系统控制器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4195', '60.03.01.13', NULL, '13', '电堆', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4196', '60.03.01.14', NULL, '14', '中冷器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4197', '60.03.01.15', NULL, '15', '加湿器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4198', '60.03.01.16', NULL, '16', '节气门', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4199', '60.03.01.17', NULL, '17', '传感器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('42', '10.02.01.01.01.02', NULL, '02', '护风罩', 'Fan cover', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('420', '10.07.02.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4200', '60.03.01.18', NULL, '18', '氢气喷射器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4201', '60.03.01.19', NULL, '19', '氢气循环泵', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4202', '60.03.01.20', NULL, '20', '引射器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4203', '60.03.01.21', NULL, '21', '排氢加热器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4204', '60.03.01.22', NULL, '22', '气水分离器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4205', '60.03.01.23', NULL, '23', '水泵', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('42054066CCC043039E0', '10.03.01.27', '', '27', '液压油箱盖', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4206', '60.03.01.24', NULL, '24', '节温器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4207', '60.03.01.25', NULL, '25', 'PTC', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4208', '60.03.01.26', NULL, '26', '去离子罐', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4209', '60.03.01.28', NULL, '28', 'CVM', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('421', '10.07.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4210', '60.03.01.29', NULL, '29', '绝缘监测仪', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4211', '60.03.01.30', NULL, '30', '大电流电压监测模块', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4212', '60.03.01.31', NULL, '31', 'DC/DC', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4213', '60.03.01.32', NULL, '32', 'FCPDU', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4214', '60.03.01.33', NULL, '33', '线束', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4215', '60.03.01.34', NULL, '34', '转接头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4216', '60.03.01.35', NULL, '35', '三通', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4217', '60.03.01.36', NULL, '36', '电磁阀', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4218', '60.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4219', '60.03.02', NULL, '02', '混合动力附件', 'Hybrid accessories', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('422', '10.07.03', NULL, '03', '分动器悬置', 'Power divider suspension', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4220', '60.03.02.01', NULL, '01', '散热器带护风罩总成', 'Radiator with fan cover assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4221', '60.03.02.02', NULL, '02', '风扇', 'Fan', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4222', '60.03.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4223', '60.03.02.04', NULL, '04', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4224', '60.03.02.05', NULL, '05', '水泵', 'Water pump', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4225', '60.03.02.06', NULL, '06', '软管', 'Hose', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4226', '60.03.02.07', NULL, '07', '钢管', 'Steel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4227', '60.03.02.08', NULL, '08', '副水箱', 'Auxiliary water tank', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4228', '60.03.02.09', NULL, '09', '散热器防护网', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4229', '60.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('423', '10.07.03.01', NULL, '01', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4230', '60.04', NULL, '04', '电动汽车整车控制系统', '11', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4231', '60.04.01', NULL, '01', '整车控制系统', 'Vehicle Control system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4232', '60.04.01.01', NULL, '01', '整车控制器', 'Vehicle Control Unit', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4233', '60.04.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4234', '60.04.01.03', NULL, '03', '整车控制器上壳体', 'VCU upper cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4235', '60.04.01.04', NULL, '04', '整车控制器下壳体', 'VCU lower cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4236', '60.04.01.05', NULL, '05', '整车控制器PCBA总成', 'VCU PCBA', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4237', '60.04.01.06', NULL, '06', '整车控制器防水透气阀', 'VCU air permeable plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4238', '60.04.01.07', NULL, '07', '整车控制器附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4239', '60.04.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('424', '10.07.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4240', '60.05', NULL, '05', '电动汽车电驱动系统', '11', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4241', '60.05.01', NULL, '01', '电机系统', 'Generator system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4242', '60.05.01.01', NULL, '01', '电动机', 'Motor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4243', '60.05.01.01.01', NULL, '01', '电动机总装', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4244', '60.05.01.01.01.01', NULL, '01', '定子', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4245', '60.05.01.01.01.01.01', NULL, '01', '水嘴', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4246', '60.05.01.01.01.01.02', NULL, '02', '壳体', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4247', '60.05.01.01.01.01.03', NULL, '03', '有绕组定子铁芯', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4248', '60.05.01.01.01.01.04', NULL, '04', '热敏电阻', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4249', '60.05.01.01.01.01.05', NULL, '05', '接线端子', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('425', '10.07.03.04', NULL, '04', '安装板', 'Installation plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4250', '60.05.01.01.01.01.06', NULL, '06', '焊丝', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4251', '60.05.01.01.01.01.07', NULL, '07', '定子线圈', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4252', '60.05.01.01.01.01.08', NULL, '08', '定子铁芯', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4253', '60.05.01.01.01.01.08.01', NULL, '01', '定子冲片', '11', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4254', '60.05.01.01.01.01.09', NULL, '09', '槽楔', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4255', '60.05.01.01.01.01.10', NULL, '10', '绝缘纸', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4256', '60.05.01.01.01.01.11', NULL, '11', '玻璃纤维软管', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4257', '60.05.01.01.01.01.12', NULL, '12', '绑扎线', '111', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4258', '60.05.01.01.01.01.13', NULL, '13', '绑扎带', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4259', '60.05.01.01.01.01.14', NULL, '14', '热缩套管', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('425A824F98A446FA824', '20.04.06.01.45', '', '45', '右滑门外板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('425DACF4AA97425A9C7', '10.03.01.28.04', '', '04', '导管', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('426', '10.07.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4260', '60.05.01.01.01.02', NULL, '02', '法兰板', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4261', '60.05.01.01.01.03', NULL, '03', '防尘盖', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4262', '60.05.01.01.01.04', NULL, '04', '接线插头', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4263', '60.05.01.01.01.05', NULL, '05', '接线插针', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4264', '60.05.01.01.01.06', NULL, '06', '接线插座', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4265', '60.05.01.01.01.07', NULL, '07', '吊耳', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4266', '60.05.01.01.01.08', NULL, '08', '旋转变压器', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4267', '60.05.01.01.01.09', NULL, '09', '接线座', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4268', '60.05.01.01.01.10', NULL, '10', '接线盒', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4269', '60.05.01.01.01.11', NULL, '11', '接线盒盖', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('427', '10.08', NULL, '08', '驱动桥组', 'drive axle group', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4270', '60.05.01.01.01.12', NULL, '12', '绝缘堵头', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4271', '60.05.01.01.01.13', NULL, '13', '前端盖', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4272', '60.05.01.01.01.14', NULL, '14', '后端盖', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4273', '60.05.01.01.01.15', NULL, '15', '旋变定子压板', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4274', '60.05.01.01.01.16', NULL, '16', '旋变盖', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4275', '60.05.01.01.01.17', NULL, '17', '防护套', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4276', '60.05.01.01.01.18', NULL, '18', '铜排', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4277', '60.05.01.01.01.19', NULL, '19', '铭牌', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4278', '60.05.01.01.01.20', NULL, '20', '密封垫', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4279', '60.05.01.01.01.21', NULL, '21', '标识', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('428', '10.08.01', NULL, '01', '转向驱动桥', 'Steering drive axle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4280', '60.05.01.01.01.22', NULL, '22', '阀', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4281', '60.05.01.01.01.23', NULL, '23', '转子', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4282', '60.05.01.01.01.23.01', NULL, '01', '轴用弹性挡圈', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4283', '60.05.01.01.01.23.02', NULL, '02', '深沟球轴承', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4284', '60.05.01.01.01.23.03', NULL, '03', '轴承盖', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4285', '60.05.01.01.01.23.04', NULL, '04', '轴', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4286', '60.05.01.01.01.23.05', NULL, '05', '磁钢', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4287', '60.05.01.01.01.23.06', NULL, '06', '平衡端板', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4288', '60.05.01.01.01.23.07', NULL, '07', '旋变转子压板', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4289', '60.05.01.01.01.23.08', NULL, '08', '垫板', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('429', '10.08.01.01', NULL, '01', '前驱动桥总成', 'Front drive axle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4290', '60.05.01.01.01.23.09', NULL, '09', '转子铁芯', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4291', '60.05.01.01.01.23.09.01', NULL, '01', '转子冲片', '11', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4292', '60.05.01.01.01.23.10', NULL, '10', '软垫', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4293', '60.05.01.01.01.23.98', NULL, '98', '紧固件', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4294', '60.05.01.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4295', '60.05.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4296', '60.05.01.03', NULL, '03', '动力总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4297', '60.05.01.04', NULL, '04', '变速器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4298', '60.05.01.05', NULL, '05', '电机三相线', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4299', '60.05.01.06', NULL, '06', '自动变速器控制单元', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('42C50AFCA29D48B98D4', '20.03.03.01.20', '', '20', '滑轨总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('43', '10.02.01.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('430', '10.08.01.01.01', NULL, '01', '前桥桥壳转向总成', 'Front axle housing steering assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4300', '60.05.01.07', NULL, '07', '二合一电动总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4301', '60.05.01.08', NULL, '08', '三合一电动总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4302', '60.05.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4303', '60.05.02', NULL, '02', '电机控制系统', 'Motor control system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4304', '60.05.02.01', NULL, '01', '电力电子单元', 'Power electronic unit', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4305', '60.05.02.02', NULL, '02', '电机控制器MCU', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4306', '60.05.02.02.01', NULL, '01', '电机控制器壳体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4307', '60.05.02.03', NULL, '03', '主控多合一总成支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4308', '60.05.02.04', NULL, '04', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4309', '60.05.02.05', NULL, '05', '电力电子单元附件', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('431', '10.08.01.01.01.01', NULL, '01', '半轴', 'Half shaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4310', '60.05.02.06', NULL, '06', '变速器控制单元(TCU)', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4311', '60.05.02.07', NULL, '07', '电机控制器MCU支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4312', '60.05.02.08', NULL, '08', '电力电子单元附件支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4313', '60.05.02.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4314', '60.05.03', NULL, '03', '增程器系统', '11', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4315', '60.05.03.01', NULL, '01', '增程器总成', '111', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4316', '60.05.03.02', NULL, '02', '发电机', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4317', '60.05.03.03', NULL, '03', '发电机控制器(GCU)', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4318', '60.05.03.04', NULL, '04', '发动机', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4319', '60.05.03.05', NULL, '05', '发动机控制器(ECU)', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('432', '10.08.01.01.01.02', NULL, '02', '前桥壳总成', 'Front axle housing assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4320', '60.05.03.06', NULL, '06', '增程器控制器(RECU)', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4321', '60.05.03.07', NULL, '07', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4322', '60.05.03.08', NULL, '08', '增程器线束', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4323', '60.05.03.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4324', '60.05.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4325', '60.06', NULL, '06', '动力电池系统', '', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4326', '60.06.01', NULL, '01', '动力蓄电池', 'Power battery assembly', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4327', '60.06.01.01', NULL, '01', '电池包', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4328', '60.06.01.01.01', NULL, '01', '电池箱上盖', 'battery box component', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4329', '60.06.01.01.02', NULL, '02', '电池箱下壳', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('433', '10.08.01.01.01.03', NULL, '03', '十字轴框架', 'Cross axle frame', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4330', '60.06.01.01.03', NULL, '03', '支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4331', '60.06.01.01.04', NULL, '04', '熔断器总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4332', '60.06.01.01.05', NULL, '05', '高压线束', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4333', '60.06.01.01.06', NULL, '06', '低压线束', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4334', '60.06.01.01.07', NULL, '07', '接插件', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4335', '60.06.01.01.08', NULL, '08', '液冷装置', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4336', '60.06.01.01.09', NULL, '09', '高压连接排', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4337', '60.06.01.01.10', NULL, '10', '绝缘橡胶条', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('433757BBAFB8495FB94', '60.06.01.01.14.02', '', '02', '模组端板', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4338', '60.06.01.01.11', NULL, '11', '透气阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4339', '60.06.01.01.11.01', NULL, '01', '电芯', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('434', '10.08.01.01.01.04', NULL, '04', '万向节芯轴', 'Universal joint spindle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4340', '60.06.01.01.11.02', NULL, '02', '端板', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4341', '60.06.01.01.11.03', NULL, '03', '高压连接排', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4342', '60.06.01.01.11.04', NULL, '04', '加热片', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4343', '60.06.01.01.11.05', NULL, '05', 'FPC', 'FPC', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4344', '60.06.01.01.11.06', NULL, '06', '汇流排托板', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4345', '60.06.01.01.11.07', NULL, '07', '极柱保护盖', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4346', '60.06.01.01.11.08', NULL, '08', '极柱保护座', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4347', '60.06.01.01.11.09', NULL, '09', '模组上盖', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4348', '60.06.01.01.11.10', NULL, '10', 'PET', 'PET', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4349', '60.06.01.01.11.11', NULL, '11', '导热贴', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('435', '10.08.01.01.01.05', NULL, '05', '双万向节座壳', 'Double universal socket casing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4350', '60.06.01.01.11.12', NULL, '12', '轧带', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4351', '60.06.01.01.11.13', NULL, '13', '上绑带', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4352', '60.06.01.01.11.14', NULL, '14', '下绑带', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4353', '60.06.01.01.11.15', NULL, '15', 'CMU壳体', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4354', '60.06.01.01.11.16', NULL, '16', 'CMU支架', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4355', '60.06.01.01.11.17', NULL, '17', '加热膜', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4356', '60.06.01.01.11.18', NULL, '18', '端板与电芯之间支撑棉', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4357', '60.06.01.01.11.19', NULL, '19', '端板与电芯之间绝缘材料', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4358', '60.06.01.01.11.20', NULL, '20', '电芯底部绝缘材料', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4359', '60.06.01.01.11.21', NULL, '21', '结构胶', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('436', '10.08.01.01.01.06', NULL, '06', '转向节', 'Steering knuckle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4360', '60.06.01.01.11.22', NULL, '22', 'FPC支撑棉', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4361', '60.06.01.01.11.23', NULL, '23', '上盖支撑棉', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4362', '60.06.01.01.11.24', NULL, '24', '系统BUSBAR', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4363', '60.06.01.01.12', NULL, '12', '防爆阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4364', '60.06.01.01.13', NULL, '13', '上下箱体密封圈', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4365', '60.06.01.01.14', NULL, '14', '模组', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4366', '60.06.01.01.15', NULL, '15', '固定模组垫圈', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4367', '60.06.01.01.16', NULL, '16', '防爆阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4368', '60.06.01.01.17', NULL, '17', '绝缘橡胶条', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4369', '60.06.01.01.18', NULL, '18', '导热结构胶', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('437', '10.08.01.01.01.07', NULL, '07', '转向节销', 'Steering knuckle pin', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4370', '60.06.01.01.19', NULL, '19', '低压线束支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4371', '60.06.01.01.20', NULL, '20', 'MSD插座', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4372', '60.06.01.02', NULL, '02', 'MSD插头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4373', '60.06.01.03', NULL, '03', '电池管理系统', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4374', '60.06.01.03.01', NULL, '01', 'BMU总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4375', '60.06.01.03.02', NULL, '02', 'CMU48SA总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4376', '60.06.01.03.03', NULL, '03', 'CMU60SA总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4377', '60.06.01.03.04', NULL, '04', 'CMU48SB总成', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4378', '60.06.01.03.05', NULL, '05', '连接器', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4379', '60.06.01.04', NULL, '04', '电池护罩', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('438', '10.08.01.01.01.08', NULL, '08', '转向横拉杆臂', 'Steering tie rod arm', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4380', '60.06.01.05', NULL, '05', '电池系统支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4381', '60.06.01.05.01', NULL, '01', '电池支架主体', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4382', '60.06.01.05.04', NULL, '04', '电池防护梁支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4383', '60.06.01.05.05', NULL, '05', '电池托盘', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4384', '60.06.01.05.06', NULL, '06', '电池挡泥板支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4385', '60.06.01.05.07', NULL, '07', 'BDU支架', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4386', '60.06.01.05.08', NULL, '08', '电池支架矩形钢', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4387', '60.06.01.05.11', NULL, '11', '电池支架护罩', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4388', '60.06.01.05.14', NULL, '14', '骑马螺栓', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4389', '60.06.01.05.15', NULL, '15', '骑马螺栓垫块', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('439', '10.08.01.01.01.09', NULL, '09', '前轴叉', 'Front axle fork', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4390', '60.06.01.05.16', NULL, '16', '骑马螺栓', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4391', '60.06.01.06', NULL, '06', '电池灭火器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4392', '60.06.01.06.01', NULL, '01', '灭火器开关', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4393', '60.06.01.06.02', NULL, '02', '灭火器主机', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4394', '60.06.01.06.03', NULL, '03', '灭火器探测器', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4395', '60.06.01.06.04', NULL, '04', '灭火器软管', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4396', '60.06.01.06.05', NULL, '05', '灭火器分控阀', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4397', '60.06.01.06.06', NULL, '06', '灭火器三通', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4398', '60.06.01.06.07', NULL, '07', '灭火器堵头', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4399', '60.06.01.07', NULL, '07', 'BDU', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('44', '10.02.01.01.01.04', NULL, '04', '挡风板', 'Windshield', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('440', '10.08.01.01.01.10', NULL, '10', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4400', '60.06.01.08', NULL, '08', '搭铁线', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4401', '60.06.01.09', NULL, '09', '灭火器支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4402', '60.06.01.10', NULL, '10', '接地线', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4403', '60.06.01.11', NULL, '11', '辅料', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4404', '60.06.01.11.01', NULL, '01', '电池系统铭牌', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4405', '60.06.01.11.02', NULL, '02', '高压警示标识', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4406', '60.06.01.11.03', NULL, '03', '正负极标签', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4407', '60.06.01.11.04', NULL, '04', '防拆标签', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4408', '60.06.01.11.05', NULL, '05', '安全警示标签', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4409', '60.06.01.11.06', NULL, '06', '线束扎带', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('441', '10.08.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4410', '60.06.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4411', '60.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4412', '60.07', NULL, '07', '电力附件', 'Power accessories', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4413', '60.07.01', NULL, '01', '高压线束', 'High-voltage wiring harness', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4414', '60.07.01.02', NULL, '02', '高压线束总成', 'High-voltage wire harness assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4415', '60.07.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4415FC600DD64BA297E', '20.04.04.01.01.14', '', '14', '前舱盖气弹簧支架', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4416', '60.07.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4417', '60.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4418', '60.07.02', NULL, '02', '高压配电系统', 'High-voltage power distribution system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4419', '60.07.02.01', NULL, '01', 'PDU总成', 'PDU assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('442', '10.08.01.01.02', NULL, '02', '前桥主减总成', 'Final drive assembly of front axle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4420', '60.07.02.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4421', '60.07.02.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4422', '60.07.02.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4423', '60.07.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4424', '60.07.03', NULL, '03', '直流-直流转换系统', 'DC-DC transformation system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4425', '60.07.03.01', NULL, '01', 'DCDC总成', 'DC-DC assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4426', '60.07.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4427', '60.07.03.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4428', '60.07.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4429', '60.07.04', NULL, '04', '车载充电系统', 'Vehicle-mounted charging system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('443', '10.08.01.01.02.01', NULL, '01', '轴承座', 'Bearing seat', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4430', '60.07.04.01', NULL, '01', '车载充电机', 'Vehicle-mounted charger', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4431', '60.07.04.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4432', '60.07.04.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4433', '60.07.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4434', '60.08', NULL, '08', '燃料电池系统', 'fuel cell system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4435', '70', NULL, '70', '总布置图', 'General layout', '1', NULL, '1', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4436', '70.01', NULL, '01', '整车总布置图', 'General layout of the complete vehicle', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4437', '70.01.01', NULL, '01', '整车总布置图', 'General layout of the complete vehicle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4438', '70.01.01.01', NULL, '01', '整车总布置图', 'General layout of the complete vehicle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4439', '70.02', NULL, '02', '底盘总布置图', 'General layout of the chassis', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('444', '10.08.01.01.02.02', NULL, '02', '齿轮', 'Gear', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4440', '70.02.01', NULL, '01', '底盘总布置图', 'General layout of the chassis', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4441', '70.02.01.01', NULL, '01', '底盘总布置图', 'General layout of the chassis', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4442', '70.03', NULL, '03', '整车外形图', 'Outline diagram of the complete vehicle', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4443', '70.03.01', NULL, '01', '整车外形图', 'Outline diagram of the complete vehicle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4444', '70.03.01.01', NULL, '01', '整车外形图', 'Outline diagram of the complete vehicle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4445', '70.04', NULL, '04', '整车原理图', 'Schematic diagram of the complete vehicle', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4446', '70.04.01', NULL, '01', '整车原理图', 'Schematic diagram of the complete vehicle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4447', '70.04.01.01', NULL, '01', '整车原理图', 'Schematic diagram of the complete vehicle', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4448', '70.05', NULL, '05', '车身总装图', 'General assembly diagram of body', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4449', '70.05.01', NULL, '01', '车身总装图', 'General assembly diagram of body', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('445', '10.08.01.01.02.03', NULL, '03', '主减速器壳', 'Final drive housing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4450', '70.05.01.01', NULL, '01', '车身总装图', 'General assembly diagram of body', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4451', '70.06', NULL, '06', '车身布置图', 'General layout of the body', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4452', '70.06.01', NULL, '01', '车身布置图', 'General layout of the body', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4453', '70.06.01.01', NULL, '01', '车身布置图', 'General layout of the body', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4454', '70.07', NULL, '07', 'ECU相关整车配置参数表', 'ECU related complete vehicle configuration parameter table', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4455', '70.07.01', NULL, '01', 'ECU相关整车配置参数表', 'ECU related complete vehicle configuration parameter table', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4456', '70.07.01.01', NULL, '01', 'ECU相关整车配置参数表', 'ECU related complete vehicle configuration parameter table', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4457', '70.08', NULL, '08', '二类底盘外形图', 'Outline drawing of secondary chassis', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4458', '70.08.01', NULL, '01', '二类底盘外形图', 'Outline drawing of secondary chassis', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4459', '70.08.01.01', NULL, '01', '二类底盘外形图', 'Outline drawing of secondary chassis', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('446', '10.08.01.01.02.04', NULL, '04', '差速器壳', 'Differential case', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4460', '70.09', NULL, '09', '整车管线布置图', 'General layout of pipe line', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4461', '70.09.01', NULL, '01', '整车管线布置图', 'General layout of pipe line', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4462', '70.09.01.01', NULL, '01', '整车管线布置图', 'General layout of pipe line', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4463', 'Car', NULL, 'ar', '乘用类', '', '1', NULL, '0', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4464', '10', NULL, '10', '动力总成', 'Power Assembly', '1', NULL, '1', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4465', '10.01', NULL, '01', '发动机', 'Engine', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4466', '10.01.01', NULL, '01', '发动机总成', 'Engine Assembly', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4467', '10.01.01.01', NULL, '01', '发动机总成', 'Engine Assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4468', '10.01.01.02', NULL, '02', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4469', '10.01.01.03', NULL, '03', '传感器', 'Sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('447', '10.08.01.01.02.05', NULL, '05', '十字轴', 'Cross axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4470', '10.01.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4471', '10.01.01.05', NULL, '05', '发电机', 'Alternator', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4472', '10.01.01.06', NULL, '06', '起动机', 'Starter', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4473', '10.01.01.07', NULL, '07', '电子水泵', 'Electronic water pump', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4474', '10.01.01.08', NULL, '08', '防护罩', 'Passport', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4475', '10.01.01.09', NULL, '09', '皮带', 'Belt', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4476', '10.01.01.10', NULL, '10', '控制单元', 'Control unit', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4477', '10.01.01.11', NULL, '11', '软管', 'Hose', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4478', '10.01.01.12', NULL, '12', '机油滤清器', 'Oil filter assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4479', '10.01.01.16', NULL, '16', '发动机ECU护板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('447E6E9F6DD743D0B0F', '60.06.01.01.05.01', '', '01', '加热线束', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('448', '10.08.01.01.02.06', NULL, '06', '凸缘', 'Flange', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4480', '10.01.01.17', NULL, '17', 'ECU标定文件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4481', '10.01.01.18', NULL, '18', '飞轮', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4482', '10.01.01.19', NULL, '19', '接头', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4483', '10.01.01.20', NULL, '20', '管夹', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4484', '10.01.01.21', NULL, '21', '防喘振阀', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4485', '10.01.01.22', NULL, '22', '电子水泵总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4486', '10.01.01.23', NULL, '23', '风扇总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4487', '10.01.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4488', '10.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4489', '10.01.03', NULL, '03', '动力系统防护装置', 'Power System Guard Device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('449', '10.08.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4490', '10.01.03.01', NULL, '01', '防护罩', 'Guard cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4491', '10.01.03.01.01', NULL, '01', '防护罩骨架板', 'Frame plate of protective cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4492', '10.01.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4493', '10.01.03.03', NULL, '03', '发动机防护板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4494', '10.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4495', '10.02', NULL, '02', '发动机冷却', 'Engine cooling', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4496', '10.02.01', NULL, '01', '冷却系统', 'Cooling system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4497', '10.02.01.01', NULL, '01', '冷却模块总成', 'Cooling module assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4498', '10.02.01.01.01', NULL, '01', '散热器带护风罩总成', 'Radiator with fan cover assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4499', '10.02.01.01.01.01', NULL, '01', '散热器', 'Radiator', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('45', '10.02.01.01.01.06', NULL, '06', '管夹', 'Pipe clamp', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('450', '10.08.01.01.03', NULL, '03', '前桥轮毂ABS总成', 'Front axle hub ABS assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4500', '10.02.01.01.01.01.01', NULL, '01', '散热器本体', 'Radiator', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4501', '10.02.01.01.01.01.02', NULL, '02', '放气螺栓', 'Bleed bolt', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4502', '10.02.01.01.01.01.03', NULL, '03', '放水螺栓', 'Drain bolt', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4503', '10.02.01.01.01.01.04', NULL, '04', '软垫', 'Cushion', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4504', '10.02.01.01.01.02', NULL, '02', '护风罩', 'Fan cover', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4505', '10.02.01.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4506', '10.02.01.01.01.04', NULL, '04', '挡风板', 'Windshield', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4507', '10.02.01.01.01.05', NULL, '05', '水箱盖', 'Water tank cover', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4508', '10.02.01.01.01.06', NULL, '06', '管夹', 'Pipe clamp', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4509', '10.02.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('451', '10.08.01.01.03.01', NULL, '01', '轴头', 'Axle head', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4510', '10.02.01.01.02', NULL, '02', '电子风扇总成', 'Electronic fan assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4511', '10.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4512', '10.02.01.02', NULL, '02', '支撑拉杆', 'support pull rod', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4513', '10.02.01.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4514', '10.02.01.04', NULL, '04', '压板', 'Pressure plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4515', '10.02.01.05', NULL, '05', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4516', '10.02.01.06', NULL, '06', '钢管', 'Steel pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4517', '10.02.01.07', NULL, '07', '接头', 'Joint', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4518', '10.02.01.08', NULL, '08', '软管', 'Hose', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4519', '10.02.01.09', NULL, '09', '硬管', 'water outlet pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('452', '10.08.01.01.03.02', NULL, '02', '衬套', 'Lining', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4520', '10.02.01.10', NULL, '10', '水泵总成', 'Water pump assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4521', '10.02.01.11', NULL, '11', '副水箱总成', 'Auxiliary water tank assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4522', '10.02.01.11.01', NULL, '01', '传感器', 'Sensor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4523', '10.02.01.11.02', NULL, '02', '副水箱本体', 'Auxiliary water tank body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4524', '10.02.01.11.03', NULL, '03', '副水箱盖', 'Auxiliary water tank cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4525', '10.02.01.12', NULL, '12', '密封垫', 'Sealing gasket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4526', '10.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4527', '10.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4528', '10.03', NULL, '03', '燃料存贮&输送密封垫', 'Fuel storage & transport sealing gasket', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4529', '10.03.01', NULL, '01', '燃油系统', 'Fuel system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('453', '10.08.01.01.03.03', NULL, '03', '车轮螺栓', 'Wheel bolt', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4530', '10.03.01.01', NULL, '01', '燃油箱总成', 'Fuel tank assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4531', '10.03.01.01.01', NULL, '01', '传感器及支架', 'Fuel sensor and support assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4532', '10.03.01.02', NULL, '02', '燃油箱盖总成', 'Fuel tank cover assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4533', '10.03.01.02.01', NULL, '01', '油箱盖总成', 'Fuel tank cover assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4534', '10.03.01.03', NULL, '03', '电动燃油泵总成', 'Power fuel pump assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4535', '10.03.01.03.01', NULL, '01', '电动燃油泵总成', 'Power fuel pump assemblyPower-driven fuel pump ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4536', '10.03.01.03.02', NULL, '02', '油位传感器及支架总成', 'Oil-water separator assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4537', '10.03.01.04', NULL, '04', '输油管总成', 'Fuel pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4538', '10.03.01.05', NULL, '05', '燃油箱下防护罩', 'Fuel tank lower protective cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4539', '10.03.01.06', NULL, '06', '防护罩', 'Guard cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('454', '10.08.01.01.03.04', NULL, '04', '前轮毂', 'Front hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4540', '10.03.01.06.01', NULL, '01', '燃油管护套', 'Fuel pipe sheath', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4541', '10.03.01.06.02', NULL, '02', '堵盖', 'Plug', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4542', '10.03.01.07', NULL, '07', '碳罐总成', 'Canister assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4543', '10.03.01.07.01', NULL, '01', '灰滤与CVS阀及管路总成', 'Ash filter, CVS valve and pipe assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4544', '10.03.01.07.02', NULL, '02', '燃油泄漏诊断模块', 'Fuel leak diagnostic module', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4545', '10.03.01.07.03', NULL, '03', '碳罐总成', 'Canister assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4546', '10.03.01.07.04', NULL, '04', '碳罐通气管', 'Carbon tank air venting pipe ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4547', '10.03.01.08', NULL, '08', '加油管总成', 'Oil filling pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4548', '10.03.01.08.01', NULL, '01', '加油口橡胶座', 'Oil filler rubber seat', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4549', '10.03.01.08.02', NULL, '02', '橡胶底座', 'Rubber base', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('455', '10.08.01.01.03.05', NULL, '05', '行星轮', 'Planet wheel', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4550', '10.03.01.08.03', NULL, '03', '加油管本体', 'Fuel filler pipe body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4551', '10.03.01.08.04', NULL, '04', '加油管加油钢管', 'Steel filler pipe for fuel filler', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4552', '10.03.01.08.05', NULL, '05', '加油管排气钢管', 'Steel exhaust pipe for fuel filler ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4553', '10.03.01.08.06', NULL, '06', '加油软管', 'Fuel filler hose', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4554', '10.03.01.08.07', NULL, '07', '加油排气管支架', 'Bracket of fuel filler exhaust pipe', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4555', '10.03.01.08.08', NULL, '08', '隔热护套', 'Heat insulation sleeve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4556', '10.03.01.08.09', NULL, '09', '加油管卡箍', 'Fuel filler hose clamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4557', '10.03.01.09', NULL, '09', '拉带总成', 'Pull belt assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4558', '10.03.01.10', NULL, '10', '橡胶软管', 'Rubber hose', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4559', '10.03.01.11', NULL, '11', '柴油滤清器总成', 'Diesel filter assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('456', '10.08.01.01.03.06', NULL, '06', '行星轮轴', 'Planet wheel axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4560', '10.03.01.11.01', NULL, '01', '滤芯', 'Filter element', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4561', '10.03.01.11.02', NULL, '02', '滤座', 'Filter seat', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4562', '10.03.01.11.03', NULL, '03', '柴油滤清器总成', 'Diesel filter assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4563', '10.03.01.11.04', NULL, '04', '柴滤器护套', 'Diesel oil filter sheath', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4564', '10.03.01.11.05', NULL, '05', '柴油滤清器滤芯总成', 'Diesel filter element assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4565', '10.03.01.11.06', NULL, '06', '柴油滤清器滤座总成', 'Diesel filter seat assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4566', '10.03.01.11.07', NULL, '07', '柴滤器总成', 'Diesel filter assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4567', '10.03.01.11.08', NULL, '08', '下壳体', 'Lower housing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4568', '10.03.01.12', NULL, '12', '汽油滤清器总成', 'Gas filter assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4569', '10.03.01.12.01', NULL, '01', '汽油滤清器', 'Gas filter', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('457', '10.08.01.01.03.07', NULL, '07', '太阳轮', 'Sun gear', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4570', '10.03.01.12.02', NULL, '02', '汽滤器支架', 'Gas filter support', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4571', '10.03.01.13', NULL, '13', '燃油散热器总成', 'Fuel radiator assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4572', '10.03.01.14', NULL, '14', '管夹', 'Pipe clamp', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4573', '10.03.01.15', NULL, '15', '管路总成', 'Line assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4574', '10.03.01.15.01', NULL, '01', '文丘里管总成', 'Venturi tube assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4575', '10.03.01.16', NULL, '16', '加油口小门警告签', 'Refueling filler cap warning sign', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4576', '10.03.01.17', NULL, '17', '钢管', 'Steel pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4577', '10.03.01.18', NULL, '18', '销轴', 'Pin shaft', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4578', '10.03.01.19', NULL, '19', '回油管总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4579', '10.03.01.20', NULL, '20', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('458', '10.08.01.01.03.08', NULL, '08', '传感器', 'Sensor', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4580', '10.03.01.21', NULL, '21', '软垫', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4581', '10.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4582', '10.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4583', '10.04', NULL, '04', '进气系统', 'Air intake system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4584', '10.04.01', NULL, '01', '进气装置', 'Intake device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4585', '10.04.01.01', NULL, '01', '空滤器总成', 'Air filter assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4586', '10.04.01.01.01', NULL, '01', '空滤器壳体', 'Air filter case', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4587', '10.04.01.01.02', NULL, '02', '滤芯', 'Filter element', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4588', '10.04.01.02', NULL, '02', '空气流量计', 'Air flow meter', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4589', '10.04.01.03', NULL, '03', '进气温度传感器', 'Intake air temperature sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('459', '10.08.01.01.03.09', NULL, '09', '齿圈', 'Gear ring', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4590', '10.04.01.04', NULL, '04', '空滤器谐振箱', 'Air filter resonance box', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4591', '10.04.01.05', NULL, '05', '空压机降噪管', 'Air intake noise reduction pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4592', '10.04.01.06', NULL, '06', '进气消声器', 'Intake muffler', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4593', '10.04.01.07', NULL, '07', '进气温度压力传感器', 'Inlet temperature pressure sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4594', '10.04.01.08', NULL, '08', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4595', '10.04.01.09', NULL, '09', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4596', '10.04.01.10', NULL, '10', '波纹管', 'Bellows', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4597', '10.04.01.11', NULL, '11', '硬管', 'Steel pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4598', '10.04.01.13', NULL, '13', '中冷器总成', 'Intercooler assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4599', '10.04.01.13.01', NULL, '01', '气室', 'hot air chamber', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('46', '10.02.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('460', '10.08.01.01.03.10', NULL, '10', '传感器衬套', 'Sensor bushing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4600', '10.04.01.13.02', NULL, '02', '侧板', 'Side panel', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4601', '10.04.01.13.03', NULL, '03', '芯体', 'core', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4602', '10.04.01.13.03.01', NULL, '01', '冷却管', 'cooling pipe', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4603', '10.04.01.13.03.02', NULL, '02', '散热带', 'heat radiation belt', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4604', '10.04.01.13.03.03', NULL, '03', '紊流片', 'turbulent flow sheet', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4605', '10.04.01.14', NULL, '14', '衬套', 'Lining', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4606', '10.04.01.15', NULL, '15', '谐振腔总成', 'Resonant cavity fixing support', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4607', '10.04.01.16', NULL, '16', '1/4波长管', '1/4wavelength pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4608', '10.04.01.17', NULL, '17', '中冷器导风罩', 'Intercooler wind scooper', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4609', '10.04.01.18', NULL, '18', '进气整流管', 'Intake rectifier tube', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('461', '10.08.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4610', '10.04.01.19', NULL, '19', '软管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4611', '10.04.01.20', NULL, '20', '高位进气管总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4612', '10.04.01.20.01', NULL, '01', '进气道本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4613', '10.04.01.20.02', NULL, '02', '进气帽', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4614', '10.04.01.20.03', NULL, '03', '旋流管', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4615', '10.04.01.20.04', NULL, '04', '排尘袋', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4616', '10.04.01.21', NULL, '21', '前引气管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4617', '10.04.01.22', NULL, '22', '螺栓', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4618', '10.04.01.23', NULL, '23', '螺母', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4619', '10.04.01.24', NULL, '24', '垫片', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('462', '10.08.01.01.04', NULL, '04', '前桥轮毂非ABS总成', 'Non-ABS assembly of front axle hub', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4620', '10.04.01.25', NULL, '25', '卡箍', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4621', '10.04.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4622', '10.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4623', '10.05', NULL, '05', '排气及后处理', 'Exhaust and aftertreatment', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4624', '10.05.01', NULL, '01', '排气装置', 'Exhaust gear', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4625', '10.05.01.01', NULL, '01', '消声器总成', 'Muffler assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4626', '10.05.01.02', NULL, '02', '排气管', 'Exhaust pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4627', '10.05.01.03', NULL, '03', '橡胶吊耳', 'Rubber hanger ', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4628', '10.05.01.04', NULL, '04', '密封垫', 'Sealing gasket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4629', '10.05.01.05', NULL, '05', '隔热罩', 'Heat shield', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('463', '10.08.01.01.04.01', NULL, '01', '轴头', 'Axle head', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4630', '10.05.01.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4631', '10.05.01.08', NULL, '08', '衬套', 'Lining', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4632', '10.05.01.10', NULL, '10', '尾喉', 'Throat', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4633', '10.05.01.14', NULL, '14', '隔音罩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4634', '10.05.01.15', NULL, '15', '排气卡箍', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4635', '10.05.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4636', '10.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4637', '10.05.02', NULL, '02', '排气净化装置', 'Air exhaust purification device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4638', '10.05.02.01', NULL, '01', '催化器总成', 'Catalysis assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4639', '10.05.02.03', NULL, '03', 'SCR空气滤清器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('464', '10.08.01.01.04.02', NULL, '02', '衬套', 'Lining', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4640', '10.05.02.03.01', NULL, '01', 'SCR空气滤清器壳体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4641', '10.05.02.03.02', NULL, '02', 'SCR空气滤清器滤芯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4642', '10.05.02.04', NULL, '04', '尿素泵总成', 'Urea pump assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4643', '10.05.02.04.01', NULL, '01', '尿素泵', 'Urea pump', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4644', '10.05.02.04.02', NULL, '02', '尿素泵滤芯', 'Filter element', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4645', '10.05.02.05', NULL, '05', '尿素罐总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4646', '10.05.02.05.01', NULL, '01', '尿素罐盖总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4647', '10.05.02.05.02', NULL, '02', '尿素传感器', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4648', '10.05.02.05.03', NULL, '03', '通气阀', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4649', '10.05.02.05.04', NULL, '04', '尿素罐本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('465', '10.08.01.01.04.03', NULL, '03', '车轮螺栓', 'Wheel bolt', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4650', '10.05.02.05.06', NULL, '06', '支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4651', '10.05.02.05.07', NULL, '07', '尿素加注管路', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4652', '10.05.02.05.08', NULL, '08', '尿素罐下护板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4653', '10.05.02.06', NULL, '06', '尿素喷嘴', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4654', '10.05.02.07', NULL, '07', 'EGP总成', 'EGP assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4655', '10.05.02.08', NULL, '08', '尿素管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4656', '10.05.02.09', NULL, '09', '水管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4657', '10.05.02.10', NULL, '10', '电磁阀', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4658', '10.05.02.11', NULL, '11', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4659', '10.05.02.12', NULL, '12', '尿素罐防护盖', 'Urea tank shield cap', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('466', '10.08.01.01.04.04', NULL, '04', '前轮毂', 'Front hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4660', '10.05.02.13', NULL, '13', '尿素管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4661', '10.05.02.14', NULL, '14', '接头', 'Joint', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4662', '10.05.02.16', NULL, '16', '气管', 'Air pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4663', '10.05.02.17', NULL, '17', '后处理控制单元', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4664', '10.05.02.19', NULL, '19', '传感器', 'Sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4665', '10.05.02.23', NULL, '23', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4666', '10.05.02.24', NULL, '24', '拉带', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4667', '10.05.02.25', NULL, '25', 'DOC总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4668', '10.05.02.26', NULL, '26', 'SCR总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4669', '10.05.02.27', NULL, '27', 'DPF器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('467', '10.08.01.01.04.05', NULL, '05', '行星轮', 'Planet wheel', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4670', '10.05.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4671', '10.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4672', '10.06', NULL, '06', '传动系统', 'Drivetrain', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4673', '10.06.01', NULL, '01', '离合器装置', 'Clutch device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4674', '10.06.01.01', NULL, '01', '离合器压盘带盖总成', 'Clutch pressure plate and cover assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4675', '10.06.01.02', NULL, '02', '从动盘总成', 'Driven plate assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4676', '10.06.01.03', NULL, '03', '定位销', 'Location pin', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4677', '10.06.01.04', NULL, '04', '离合器分离轴承', 'Clutch release bearing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4678', '10.06.01.05', NULL, '05', '放气阀总成', 'Deflation valve assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4679', '10.06.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('468', '10.08.01.01.04.06', NULL, '06', '行星轮轴', 'Planet wheel axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4680', '10.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4681', '10.06.02', NULL, '02', '变速器', 'Transmission', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4682', '10.06.02.01', NULL, '01', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4683', '10.06.02.02', NULL, '02', '控制器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4684', '10.06.02.03', NULL, '03', '自动变速器总成', 'Automatic transmission assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4685', '10.06.02.04', NULL, '04', '手动变速器总成', 'Transmission assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4686', '10.06.02.06', NULL, '06', '通气管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4687', '10.06.02.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4688', '10.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4689', '10.06.03', NULL, '03', '四驱系统', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('469', '10.08.01.01.04.07', NULL, '07', '太阳轮', 'Sun gear', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4690', '10.06.03.01', NULL, '01', '分动器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4691', '10.06.03.05', NULL, '05', '控制单元', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4692', '10.06.03.06', NULL, '06', '过渡壳', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4693', '10.06.03.07', NULL, '07', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4694', '10.06.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4695', '10.06.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4696', '10.06.04', NULL, '04', '传动轴', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4697', '10.06.04.08', NULL, '08', '传动轴总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4698', '10.06.04.08.01', NULL, '01', '突缘叉', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4699', '10.06.04.08.02', NULL, '02', '十字轴总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('47', '10.02.01.01.02', NULL, '02', '中冷器总成', 'Intercooler assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('470', '10.08.01.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4700', '10.06.04.08.03', NULL, '03', '滑动叉', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4701', '10.06.04.08.04', NULL, '04', '滑动轴叉', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4702', '10.06.04.08.05', NULL, '05', '轴管', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4703', '10.06.04.08.06', NULL, '06', '降噪纸', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4704', '10.06.04.08.07', NULL, '07', '减震块', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4705', '10.06.04.08.08', NULL, '08', '防尘罩', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4706', '10.06.04.08.09', NULL, '09', '传动轴中间支承', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4707', '10.06.04.08.10', NULL, '10', '挠性万向节', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4708', '10.06.04.08.11', NULL, '11', '减震块', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4709', '10.06.04.09', NULL, '09', '传动轴螺栓', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('470E7580BA8246C4AFF', '40.04.03.12', '', '12', '储油杯总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('471', '10.08.01.01.05', NULL, '05', '前桥手调制动器总成', 'Front axle manual brake assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4710', '10.06.04.10', NULL, '10', '传动轴螺母', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4711', '10.06.04.11', NULL, '11', '传动轴防脱拉带', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4712', '10.06.04.12', NULL, '12', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4713', '10.06.04.13', NULL, '13', '扭转减震器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4714', '10.06.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4715', '10.06.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4716', '10.07', NULL, '07', '悬置系统', 'Mount system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4717', '10.07.01', NULL, '01', '动力总成悬置 ', 'Power Assembly Suspension', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4718', '10.07.01.01', NULL, '01', '软垫总成', 'Rear vibration absorber cushion assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4719', '10.07.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('472', '10.08.01.01.05.01', NULL, '01', '手动间隙调整臂', 'Manual clearance adjuster', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4720', '10.07.01.04', NULL, '04', '压盖', 'Gland', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4721', '10.07.01.07', NULL, '07', '悬置支撑梁', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4722', '10.07.01.09', NULL, '09', '隔热罩', 'Heat shield', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4723', '10.07.01.10', NULL, '10', '吊架', 'Transmission left upper cradle', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4724', '10.07.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4725', '10.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4726', '10.08', NULL, '08', '驱动桥组', 'drive axle group', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4727', '10.08.01', NULL, '01', '驱动前桥', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4728', '10.08.01.01', NULL, '01', '前驱动桥总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4729', '10.08.01.02', NULL, '02', '前轴总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('473', '10.08.01.01.05.02', NULL, '02', '膜片制动气缸', 'Diaphragm brake cylinder', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4730', '10.08.01.02.11', NULL, '11', '转向节油封', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4731', '10.08.01.02.15', NULL, '15', '前轮毂', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4732', '10.08.01.03', NULL, '03', '驱动半轴总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4733', '10.08.01.04', NULL, '04', '轴端防尘罩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4734', '10.08.01.97', NULL, '97', '前驱动桥安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4735', '10.08.01.98', NULL, '98', '紧固件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4736', '10.08.03', NULL, '03', '驱动后桥', 'Drive rear axle', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4737', '10.08.03.01', NULL, '01', '后桥总成', 'Rear axle assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4738', '10.08.03.01.02', NULL, '02', '后鼓式制动器带拉线总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4739', '10.08.03.01.02.01', NULL, '01', '后鼓式制动器总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('474', '10.08.01.01.05.03', NULL, '03', '制动底板', 'Brake base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4740', '10.08.03.01.02.01.01', NULL, '01', '制动蹄总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4741', '10.08.03.01.02.02', NULL, '02', '后驻车拉线总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4742', '10.08.03.01.06', NULL, '06', '后桥总成驱动部分', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4743', '10.08.03.01.07', NULL, '07', '后鼓式制动器总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4744', '10.08.03.01.07.01', NULL, '01', '制动蹄总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4745', '10.08.03.01.08', NULL, '08', '制动鼓', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4746', '10.08.03.01.09', NULL, '09', '后驻车拉线总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4747', '10.08.03.01.10', NULL, '10', '后盘式制动器总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4748', '10.08.03.01.11', NULL, '11', '驱动半轴总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4749', '10.08.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('475', '10.08.01.01.05.04', NULL, '04', '制动凸轮轴', 'Brake camshaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4750', '10.08.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4751', '10.09', NULL, '09', '非驱动桥组', 'Non-drive axle group', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4752', '10.09.01', NULL, '01', '前轴', 'Front shaft', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4753', '10.09.01.01', NULL, '01', '前轴总成', 'Front shaft assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4754', '10.09.01.01.01', NULL, '01', '转向节', 'steering knuckle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4755', '10.09.01.01.02', NULL, '02', '下承载臂', 'Lower bearing arm', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4756', '10.09.01.01.03', NULL, '03', '下承载臂固定螺栓', 'Lower bearing arm fixing bolt', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4757', '10.09.01.01.04', NULL, '04', '制动钳总成', 'Brake caliper assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4758', '10.09.01.01.04.01', NULL, '01', '制动衬片', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4759', '10.09.01.01.05', NULL, '05', '卡钳螺栓', 'Caliper bolt', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('476', '10.08.01.01.05.05', NULL, '05', '凸轮轴支座', 'Camshaft bearing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4760', '10.09.01.01.06', NULL, '06', '前制动盘', 'Front brake disc', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4761', '10.09.01.01.07', NULL, '07', '前轮毂', 'Front wheel hub', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4762', '10.09.01.01.08', NULL, '08', '轴承', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4763', '10.09.01.01.09', NULL, '09', '轴承固定螺栓', 'Bearing fixing bolt', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4764', '10.09.01.01.10', NULL, '10', '轴承油封', 'Bearing oil seal', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4765', '10.09.01.01.11', NULL, '11', '轮毂螺栓', 'Wheel hub nut', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4766', '10.09.01.01.12', NULL, '12', '轮毂端盖', 'Wheel hub end cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4767', '10.09.01.01.13', NULL, '13', '轮毂紧固螺母', 'Wheel hub fastening nut', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4768', '10.09.01.01.14', NULL, '14', 'ABS 齿圈', 'ABS gear rim', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4769', '10.09.01.01.15', NULL, '15', '固定齿圈环', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('477', '10.08.01.01.05.06', NULL, '06', '制动鼓', 'Brake drum', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4770', '10.09.01.01.16', NULL, '16', 'O型圈', 'Type O circle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4771', '10.09.01.01.17', NULL, '17', '防尘罩', 'dust cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4772', '10.09.01.01.20', NULL, '20', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4773', '10.09.01.02', NULL, '02', '转向拉杆带球头总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4774', '10.09.01.02.01', NULL, '01', '转向直拉杆总成(左)', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4775', '10.09.01.02.02', NULL, '02', '转向直拉杆总成(右)', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4776', '10.09.01.02.03', NULL, '03', '转向横拉杆总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4777', '10.09.01.02.04', NULL, '04', '转向拉杆支架总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4778', '10.09.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4779', '10.10', NULL, '10', '操纵系统', 'Control system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('478', '10.08.01.01.05.07', NULL, '07', '制动摩擦片', 'Brake friction plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4780', '10.10.01', NULL, '01', '加速传动装置-驾驶室部分', 'Acceleration Drive Device -Driver\'s Cab Part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4781', '10.10.01.01', NULL, '01', '电子油门踏板总成', 'Electronic accelerator pedal assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4782', '10.10.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4783', '10.10.01.04', NULL, '04', '机械油门踏板总成', 'Mechanical accelerator pedal assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4784', '10.10.01.97', NULL, '97', '安装图', 'Accelerator cable assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4785', '10.10.01.98', NULL, '98', '紧固件', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4786', '10.10.02', NULL, '02', '离合器操纵装置 ', 'Clutch control device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4787', '10.10.02.01', NULL, '01', '分泵油管总成', 'Slave cylinder oil pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4788', '10.10.02.02', NULL, '02', '连接软管总成', 'Connection hose assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4789', '10.10.02.02.03', NULL, '03', '空心螺栓', 'Hollow bolt', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('479', '10.08.01.01.05.08', NULL, '08', '制动蹄', 'Brake shoe', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4790', '10.10.02.03', NULL, '03', '离合分泵总成', 'Clutch slave cylinder assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4791', '10.10.02.05', NULL, '05', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4792', '10.10.02.10', NULL, '10', '缓冲阀总成', 'Buffer valve assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4793', '10.10.02.14', NULL, '14', '管夹组件', 'Pipe clamp components', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4794', '10.10.02.15', NULL, '15', '管路二通', 'Two-way joint for pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4795', '10.10.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4796', '10.10.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4797', '10.10.03', NULL, '03', '离合操纵机构', 'Clutch control mechanism', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4798', '10.10.03.01', NULL, '01', '真空助力器带总泵总成', 'Vacuum booster and master pump assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4799', '10.10.03.01.01', NULL, '01', '真空助力器带总泵总成', 'Vacuum booster and master pump assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('48', '10.02.01.01.03', NULL, '03', '防虫网', 'Fly net', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('480', '10.08.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4800', '10.10.03.01.02', NULL, '02', '离合总泵总成', 'Clutch master cylinder assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4801', '10.10.03.01.03', NULL, '03', '真空助力器总成', 'Vacuum booster assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4802', '10.10.03.03', NULL, '03', '离合总泵总成', 'Clutch master cylinder assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4803', '10.10.03.04', NULL, '04', '离合总泵油管总成', 'Clutch master cylinder oil pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4804', '10.10.03.06', NULL, '06', '软管', 'Hose', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4805', '10.10.03.08', NULL, '08', '离合踏板总成', 'Clutch pedal assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4806', '10.10.03.12', NULL, '12', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4807', '10.10.03.13', NULL, '13', '离合总泵进油软管', 'Clutch master cylinder inlet oil hose', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4808', '10.10.03.14', NULL, '14', '销轴', 'Pin shaft', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4809', '10.10.03.15', NULL, '15', '离合总泵出油管总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('481', '10.08.01.01.06', NULL, '06', '前桥自调制动器总成', 'Auto-adjusting brake assembly of front axle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4810', '10.10.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4811', '10.10.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4812', '10.10.04', NULL, '04', '变速器操纵机构', 'Transmission control mechanism', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4813', '10.10.04.04', NULL, '04', '软轴', 'Gear selector flexible shaft assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4814', '10.10.04.09', NULL, '09', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4815', '10.10.04.10', NULL, '10', '换挡摇臂总成', 'Gear shift rocker arm assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4816', '10.10.04.11', NULL, '11', 'P档解锁摇臂', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4817', '10.10.04.12', NULL, '12', 'P档解锁软轴总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4818', '10.10.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4819', '10.10.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('482', '10.08.01.01.06.01', NULL, '01', '自动间隙调整臂', 'Automatic clearance adjuster', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4820', '10.10.05', NULL, '05', '变速操纵机构 ', 'Gear shift control mechanism', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4821', '10.10.05.01', NULL, '01', '手柄球总成', 'Handle ball assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4822', '10.10.05.01.01', NULL, '01', '手柄球', 'Handle ball', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4823', '10.10.05.01.02', NULL, '02', '护套', 'Protective boot', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4824', '10.10.05.02', NULL, '02', '密封垫', 'Sealing gasket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4825', '10.10.05.03', NULL, '03', '压板', 'Pressure plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4826', '10.10.05.04', NULL, '04', '变速操纵护罩总成', 'Gear shift control protection cover assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4827', '10.10.05.05', NULL, '05', '变速操纵机构总成', 'Gear shift control mechanism assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4828', '10.10.05.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4829', '10.10.05.13', NULL, '13', '操纵器总成', 'Shifter assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('483', '10.08.01.01.06.02', NULL, '02', '膜片制动气缸', 'Diaphragm brake cylinder', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4830', '10.10.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4831', '10.10.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4832', '10.10.06', NULL, '06', '加速传动装置-底盘部分', 'Acceleration Drive Device -Driver\'s Cab Part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4833', '10.10.06.08', NULL, '08', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4834', '10.10.06.09', NULL, '09', '油门拉线总成', 'Accelerator cable assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4835', '10.10.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4836', '10.10.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4837', '10.11', NULL, '11', '变速器冷却', 'Transmission cooling device', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4838', '10.11.01', NULL, '01', '变速器冷却装置', 'Transmission cooling device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4839', '10.11.01.01', NULL, '01', '油冷器总成', 'Oil cooler assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('484', '10.08.01.01.06.03', NULL, '03', '制动底板', 'Brake base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4840', '10.11.01.02', NULL, '02', '软管总成', 'Hose assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4841', '10.11.01.03', NULL, '03', '硬管总成', 'Rigid pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4842', '10.11.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4843', '10.11.01.05', NULL, '05', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4844', '10.11.01.06', NULL, '06', '温控阀总成', 'Temperature control valve assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4845', '10.11.01.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4846', '10.11.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4847', '20', NULL, '20', '车身', 'Body', '1', NULL, '1', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4848', '20.01', NULL, '01', '车身外饰系统', 'Body exterior system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4849', '20.01.01', NULL, '01', '前部灯具-车身部分', 'Front lamps – body part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('484A85715B8F4FAD948', '10.02.01.29', '', '29', '挡风棉', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('485', '10.08.01.01.06.04', NULL, '04', '制动凸轮轴', 'Brake camshaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4850', '20.01.01.01', NULL, '01', '转向灯/转弯灯总成', 'L.Side steering lamp/turning lamp', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4851', '20.01.01.01.01', NULL, '01', '转向灯/转弯灯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4852', '20.01.01.01.02', NULL, '02', '灯泡', 'lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4853', '20.01.01.05', NULL, '05', '前组组合灯总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4854', '20.01.01.05.01', NULL, '01', '前组合灯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4855', '20.01.01.05.02', NULL, '02', '灯泡', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4856', '20.01.01.06', NULL, '06', '转向灯总成', 'Side steering lamp', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4857', '20.01.01.06.01', NULL, '01', '转向灯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4858', '20.01.01.06.02', NULL, '02', '灯泡', 'lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4859', '20.01.01.07', NULL, '07', '侧标志灯总成', 'Side marker lamp assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('486', '10.08.01.01.06.05', NULL, '05', '凸轮轴支座', 'Camshaft bearing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4860', '20.01.01.07.01', NULL, '01', '侧标志灯', 'side marker lamp assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4861', '20.01.01.07.02', NULL, '02', '灯泡', 'lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4862', '20.01.01.08', NULL, '08', '前位置灯', 'Front Position lamp', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4863', '20.01.01.09', NULL, '09', '前雾灯总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4864', '20.01.01.09.01', NULL, '01', '前雾灯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4865', '20.01.01.09.02', NULL, '02', '灯泡', 'lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4866', '20.01.01.10', NULL, '10', '昼行灯总成', 'Daytime running lamp assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4867', '20.01.01.10.01', NULL, '01', '昼行灯', 'Daytime running lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4868', '20.01.01.10.02', NULL, '02', '灯泡', 'lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4869', '20.01.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('487', '10.08.01.01.06.06', NULL, '06', '制动鼓', 'Brake drum', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4870', '20.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4871', '20.01.02', NULL, '02', '后部灯具-车身部分', 'Rear lamps - Body part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4872', '20.01.02.01', NULL, '01', '后组合灯总成', 'F. combination lamp assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4873', '20.01.02.01.01', NULL, '01', '后组合灯', 'Rear combination lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4874', '20.01.02.01.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4875', '20.01.02.01.03', NULL, '03', '密封垫', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4876', '20.01.02.02', NULL, '02', '后示廓灯总成', 'Rear clearance lamp assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4877', '20.01.02.02.01', NULL, '01', '后示廓灯', 'Rear clearance lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4878', '20.01.02.02.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4879', '20.01.02.03', NULL, '03', '牌照灯总成', 'License plate lamp assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('488', '10.08.01.01.06.07', NULL, '07', '制动摩擦片', 'Brake friction plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4880', '20.01.02.03.01', NULL, '01', '牌照灯', 'License plate lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4881', '20.01.02.03.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4882', '20.01.02.04', NULL, '04', '标志灯总成', 'L side marker lamp', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4883', '20.01.02.04.01', NULL, '01', '标志灯', 'Marker lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4884', '20.01.02.04.02', NULL, '02', '灯泡 ', 'Bulb ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4885', '20.01.02.05', NULL, '05', '高位制动灯总成', 'High-mounted brake lamp assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4886', '20.01.02.06', NULL, '06', '后雾灯总成', 'Rear fog lamp assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4887', '20.01.02.06.01', NULL, '01', '后雾灯', 'Rear fog lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4888', '20.01.02.06.02', NULL, '02', '灯泡 ', 'lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4889', '20.01.02.07', NULL, '07', '后回复反射器总成', 'Rear reflex reflector assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('489', '10.08.01.01.06.08', NULL, '08', '制动蹄', 'Brake shoe', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4890', '20.01.02.08', NULL, '08', '皮卡后组合灯上卡扣', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4891', '20.01.02.09', NULL, '09', '前保险杠定位支架卡座', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4892', '20.01.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4893', '20.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4894', '20.01.03', NULL, '03', '前后风挡', 'Front and rear windshield', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4895', '20.01.03.01', NULL, '01', '前风窗玻璃总成', 'Front windshield assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4896', '20.01.03.01.01', NULL, '01', '前风窗玻璃', 'Front windshield', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4897', '20.01.03.01.02', NULL, '02', '定位块', 'Locating block', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4898', '20.01.03.02', NULL, '02', '前风窗下装饰板密封条总成', 'Front windshield lower trim sealing strip assy.', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4899', '20.01.03.03', NULL, '03', '后风窗玻璃总成', 'Rear windshield assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('49', '10.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('490', '10.08.01.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4900', '20.01.03.04', NULL, '04', '前风窗外密封条', 'Front windshield seal out strip assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4901', '20.01.03.07', NULL, '07', '前风窗玻璃内装饰条', 'Front windshield inner trim strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4902', '20.01.03.08', NULL, '08', '后风窗玻璃密封条', 'Rear windshield seal strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4903', '20.01.03.09', NULL, '09', '蘑菇搭扣', 'Dual lock', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4904', '20.01.03.10', NULL, '10', '前风窗下饰板密封件', 'Front windshield lower trim seal', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4905', '20.01.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4906', '20.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4907', '20.01.04', NULL, '04', '保险杠-底盘部分', 'Bumper - Chassis part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4908', '20.01.04.01', NULL, '01', '保险杠总成', 'Bumper assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4909', '20.01.04.01.01', NULL, '01', '保险杠骨架', 'Bumper support assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('491', '10.08.02', NULL, '02', '驱动中桥', 'Drive middle axle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4910', '20.01.04.01.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4911', '20.01.04.01.02', NULL, '02', '保险杠', 'Bumper subassembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4912', '20.01.04.01.02.01', NULL, '01', '保险杠本体', 'Bumper body', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4913', '20.01.04.01.02.02', NULL, '02', '装饰板', 'Bumper left lower trim cover', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4914', '20.01.04.01.02.03', NULL, '03', '格栅', 'Grille', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4915', '20.01.04.01.02.04', NULL, '04', '脚踏板', 'bumper upper footplate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4916', '20.01.04.01.02.05', NULL, '05', '装饰板', 'left lamp trim cover', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4917', '20.01.04.01.02.06', NULL, '06', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4918', '20.01.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4919', '20.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('491D0B64A4724DAF99F', '10.03.01.33', '', '33', '液压油泵总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('492', '10.08.02.01', NULL, '01', '中桥总成', 'Middle axle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4920', '20.01.05', NULL, '05', '雨刮器及洗涤器', 'Wiper and washer', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4921', '20.01.05.01', NULL, '01', '雨刮连杆机构总成', 'wiper connecting mechanism assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4922', '20.01.05.02', NULL, '02', '刮臂刮片总成', 'Wiper arm blade assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4923', '20.01.05.02.01', NULL, '01', '刮臂总成', 'L. wiper assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4924', '20.01.05.02.02', NULL, '02', '刮片总成', 'L. blade assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4925', '20.01.05.02.03', NULL, '03', '雨刮堵盖', 'wiper plug cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4926', '20.01.05.03', NULL, '03', '密封圈', 'Sealing ring', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4927', '20.01.05.04', NULL, '04', '雨刮电机总成', 'wiper assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4928', '20.01.05.05', NULL, '05', '水管', 'Water pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4929', '20.01.05.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('493', '10.08.02.01.01', NULL, '01', '中桥桥壳总成', 'Intermediate axle housing assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4930', '20.01.05.07', NULL, '07', '洗涤壶总成', 'Washing pot assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4931', '20.01.05.07.01', NULL, '01', '壶体总成', 'Windshield washer', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4932', '20.01.05.07.02', NULL, '02', '洗涤壶电机总成', 'Windshield washer motor assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4933', '20.01.05.07.03', NULL, '03', '喷嘴总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4934', '20.01.05.08', NULL, '08', '接头', 'Joint', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4935', '20.01.05.09', NULL, '09', '雨刮电机及连杆总成', 'Front wiper and connecting mechanism assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4936', '20.01.05.10', NULL, '10', '后雨刮总成', 'wiper assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4937', '20.01.05.11', NULL, '11', '雨刮臂堵盖', 'Wiper arm lid', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4938', '20.01.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4939', '20.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('494', '10.08.02.01.01.01', NULL, '01', '中桥桥壳', 'Intermediate axle housing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4940', '20.01.06', NULL, '06', '前后围外饰件', 'Exterior trim parts for front/rear wall', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4941', '20.01.06.01', NULL, '01', '前围外饰件', 'Exterior trim parts for front wall', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4942', '20.01.06.01.02', NULL, '02', '前风窗下装饰板总成', 'Front windshield lower trim cover assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4943', '20.01.06.01.05', NULL, '05', '前围密封件', 'Front panel seal', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4944', '20.01.06.01.05.01', NULL, '01', '密封条', 'Seal strip', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4945', '20.01.06.01.05.02', NULL, '02', '格栅', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4946', '20.01.06.01.13', NULL, '13', '前围装饰件', 'Front panel trimming', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4947', '20.01.06.01.13.01', NULL, '01', '装饰件', 'Trimming', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4948', '20.01.06.01.15', NULL, '15', '后围外饰件', 'Exterior trim parts for rear wall', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4949', '20.01.06.01.15.01', NULL, '01', '后围出风口总成', 'Rear wall air outlet assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('495', '10.08.02.01.01.02', NULL, '02', '贯通轴(输出端)', 'Thru shaft (output end)', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4950', '20.01.06.01.16', NULL, '16', 'LOGO', 'LOGO', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4951', '20.01.06.01.19', NULL, '19', '堵盖', 'Plug', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4952', '20.01.06.01.21', NULL, '21', '导风板', 'Air deflector', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4953', '20.01.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4954', '20.01.06.02', NULL, '02', '前保险杠总成', 'Front bumper assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4955', '20.01.06.02.01', NULL, '01', '前保险杠本体', 'Front bumper body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4956', '20.01.06.02.02', NULL, '02', '前保险杠格栅', 'Front bumper grille', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4957', '20.01.06.02.03', NULL, '03', '雾灯装饰板', 'Trim board fog lamp', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4958', '20.01.06.02.04', NULL, '04', '前雾灯装饰圈', 'front fog lamp bezel', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4959', '20.01.06.02.05', NULL, '05', '保险杠装饰件安装座', 'Bumper trim mount', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('496', '10.08.02.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4960', '20.01.06.02.06', NULL, '06', '雷达盖板', 'Radar cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4961', '20.01.06.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4962', '20.01.06.04', NULL, '04', '前风窗下装饰件密封条', 'Front windshield lower trim cover ', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4963', '20.01.06.05', NULL, '05', '后保险杠总成', 'Rear bumper assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4964', '20.01.06.05.01', NULL, '01', '后保险杠骨架总成', 'Rear bumper flame assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4965', '20.01.06.05.02', NULL, '02', '后保险杠踏脚板', 'Rear bumper step pael ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4966', '20.01.06.05.03', NULL, '03', '后保险杠本体', 'Rear bumper body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4967', '20.01.06.05.05', NULL, '05', '后保险杠堵盖', 'Rear bumper plug cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4968', '20.01.06.06', NULL, '06', '前舱盖下挡板总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4969', '20.01.06.06.01', NULL, '01', '前舱盖下挡板本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('497', '10.08.02.01.01.04', NULL, '04', '弹簧滑板', 'Spring slide plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4970', '20.01.06.06.02', NULL, '02', '前舱盖下挡板密封条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4971', '20.01.06.07', NULL, '07', '前围导风罩', 'Front wall air deflector', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4972', '20.01.06.08', NULL, '08', '防撞泡沫', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4973', '20.01.06.09', NULL, '09', '格栅上盖板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4974', '20.01.06.10', NULL, '10', '备胎拆卸摇杆过孔护套', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4975', '20.01.06.11', NULL, '11', '后牌照灯罩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4976', '20.01.06.12', NULL, '12', '保险杠下扰流板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4977', '20.01.06.14', NULL, '14', '保险杠下护板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4978', '20.01.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4979', '20.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('498', '10.08.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4980', '20.01.07', NULL, '07', '侧围外饰', 'Exterior trim parts for side wall', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4981', '20.01.07.04', NULL, '04', '贴膜', ' wall film', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4982', '20.01.07.05', NULL, '05', '侧窗玻璃', 'Side window glass', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4983', '20.01.07.05.01', NULL, '01', '玻璃', 'Glass', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4984', '20.01.07.05.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4985', '20.01.07.05.03', NULL, '03', '铰链', 'Hinge', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4986', '20.01.07.06', NULL, '06', '侧窗密封条', 'Side window weather strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4987', '20.01.07.06.01', NULL, '01', '密封条', 'Seal strip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4988', '20.01.07.07', NULL, '07', '孔贴', 'Hole sticker', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4989', '20.01.07.08', NULL, '08', '轮眉', 'wheel eyebrow', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('499', '10.08.02.01.02', NULL, '02', '中桥主减总成', 'Final drive assembly of intermediate axle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4990', '20.01.07.09', NULL, '09', '左前侧窗总成', 'F.L. side window glass assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4991', '20.01.07.10', NULL, '10', '侧窗总成', 'side window glass assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4992', '20.01.07.11', NULL, '11', '后侧窗总成', 'R side window glass assy.', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4993', '20.01.07.12', NULL, '12', '后侧窗铰链', 'R side window hinge', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4994', '20.01.07.13', NULL, '13', '侧窗铰链', 'side window hinge', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4995', '20.01.07.17', NULL, '17', '前轮眉防擦条总成', 'F wheel eyebrow rubbing strip assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4996', '20.01.07.18', NULL, '18', 'B柱防擦条总成', 'B column rubbing strip assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4997', '20.01.07.19', NULL, '19', '前侧围防擦条总成', 'F side wall rubbing strip assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4998', '20.01.07.20', NULL, '20', '后侧围前防擦条总成', 'R side wall front rubbing strip assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4999', '20.01.07.21', NULL, '21', '后侧围后防擦条总成', 'R side wall Rear rubbing strip assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4A511D6A741D440F925', '10.03.01.28.01', '', '01', '空气滤清器盖', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4A952FA1D5CB4175BC6', '20.05.01.01.01.06.09', '', '09', '顶盖右前加强板', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4AEB3DC053864BA3A7B', '10.03.01.32.02', '', '02', '橡胶垫', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4B050E60B68546AD95F', '10.03.01.42', '', '42', '安装座', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4CE1A020126F40B8A7F', '30.07.01.14.07', '', '07', '分配器总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4CFA6D3A6DE441A88AB', '60.06.01.01.14.09.01', '', '01', '模组泡棉-压条', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4D39C2CF02064B3FA93', '30.05.04.16', '', '16', '制动助力油罐带支架总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('4D5E842F821648DCAC9', '20.05.01.01.01.03.01.03.02.02', '', '02', '右C柱上加强板', '', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('4EF4698550204DCD861', '20.04.06.01.46', '', '46', '右滑门前中加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5', '10.01.01.01', NULL, '01', '发动机总成', 'Engine Assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('50', '10.02.01.02', NULL, '02', '钢圈及支架总成', 'Steel ring and support assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('500', '10.08.02.01.02.01', NULL, '01', '凸缘(输入端)', 'Flange (input end)', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5000', '20.01.07.22', NULL, '22', '后保险杠防擦条总成', 'R bumper rubbing strip assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5001', '20.01.07.24', NULL, '24', '侧围外装饰件 ', 'Side molding trim', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5002', '20.01.07.25', NULL, '25', '出风口总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5003', '20.01.07.26', NULL, '26', '安全出口标识', 'Safety exit identification', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5004', '20.01.07.27', NULL, '27', '后轮轮眉总成', 'R wheel eyebrow assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5005', '20.01.07.28', NULL, '28', '翼子板堵风板', 'fender air board', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5006', '20.01.07.29', NULL, '29', '货箱后板装饰件', 'Trunk rear plate trim', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5007', '20.01.07.30', NULL, '30', '左侧围贴膜', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5008', '20.01.07.31', NULL, '31', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5009', '20.01.07.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('501', '10.08.02.01.02.02', NULL, '02', '贯通轴(输入端)', 'Thru shaft (input end)', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5010', '20.01.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5011', '20.01.08', NULL, '08', '车身车轮挡泥板', 'Body/wheel mudguard', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5012', '20.01.08.01', NULL, '01', '发动机上挡泥板', 'Upper fender of engine', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5013', '20.01.08.01.01', NULL, '01', '挡泥板', 'Left upper mudguard for engine', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5014', '20.01.08.02', NULL, '02', '前轮挡泥板', 'Front wheel mudguard', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5015', '20.01.08.02.01', NULL, '01', '挡泥板', 'F. wheel front mudguard', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5016', '20.01.08.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5017', '20.01.08.04', NULL, '04', '车轮挡泥板', 'mudguard ', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5018', '20.01.08.04.01', NULL, '01', '挡泥板', 'R. mudguard', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5019', '20.01.08.04.02', NULL, '02', '挡泥皮', 'Mudflap', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('502', '10.08.02.01.02.03', NULL, '03', '齿轮', 'Gear', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5020', '20.01.08.04.03', NULL, '03', '挡泥皮压板', 'Mudflap pressure plate', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5021', '20.01.08.05', NULL, '05', '防飞溅', 'Anti-splash', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5022', '20.01.08.05.01', NULL, '01', '防溅总成', 'Left upper anti spatter', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5023', '20.01.08.05.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5024', '20.01.08.06', NULL, '06', '前轮挡泥板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5025', '20.01.08.07', NULL, '07', '前轮轮罩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5026', '20.01.08.08', NULL, '08', '前挡泥板支架', 'R wheel rear mudguard Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5027', '20.01.08.09', NULL, '09', '后轮挡泥板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5028', '20.01.08.10', NULL, '10', '前轮挡泥裙', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5029', '20.01.08.11', NULL, '11', '后轮挡泥裙', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('503', '10.08.02.01.02.04', NULL, '04', '中桥主减速器壳', 'Final drive housing of intermediate axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5030', '20.01.08.12', NULL, '12', '后轮轮罩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5031', '20.01.08.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5032', '20.01.08.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5033', '20.01.09', NULL, '09', '车身脚踏板', 'Body pedal', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5034', '20.01.09.01', NULL, '01', '脚踏板支架', 'Pedal bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5035', '20.01.09.02', NULL, '02', '脚踏板总成', 'Pedal assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5036', '20.01.09.02.01', NULL, '01', '护罩', 'Protection cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5037', '20.01.09.02.02', NULL, '02', '装饰板', 'Trim panel', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5038', '20.01.09.02.03', NULL, '03', '脚踏板', 'Pedal', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5039', '20.01.09.02.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('504', '10.08.02.01.02.05', NULL, '05', '差速器壳', 'Differential case', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5040', '20.01.09.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5041', '20.01.09.03', NULL, '03', '左前门踏步总成', 'Left scratch pedal assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5042', '20.01.09.04', NULL, '04', '右前门踏步', 'right scratch pedal', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5043', '20.01.09.05', NULL, '05', '右前门踏步盖板', 'right scratch pedal plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5044', '20.01.09.06', NULL, '06', '右侧滑门踏步总成', 'Right scratch pedal assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5045', '20.01.09.07', NULL, '07', '右侧滑门踏步堵盖', 'Right scratch pedal cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5046', '20.01.09.08', NULL, '08', '右侧滑门电动踏步本体', 'Right scratch pedal body', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5047', '20.01.09.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5048', '20.01.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5049', '20.01.10', NULL, '10', '顶外饰件', 'Top exterior trim parts', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('505', '10.08.02.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5050', '20.01.10.01', NULL, '01', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5051', '20.01.10.02', NULL, '02', '遮阳罩', 'Sunshade', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5052', '20.01.10.02.01', NULL, '01', '堵盖', 'Plug', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5053', '20.01.10.02.02', NULL, '02', '胶套', 'Rubber sleeve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5054', '20.01.10.02.03', NULL, '03', '密封垫', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5055', '20.01.10.03', NULL, '03', '顶盖装饰条总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5056', '20.01.10.04', NULL, '04', '行李架总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5057', '20.01.10.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5058', '20.01.10.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5059', '20.01.11', NULL, '11', '后视镜', 'Rearview mirror', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('506', '10.08.02.01.03', NULL, '03', '中桥轮毂总成', 'Intermediate axle hub assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5060', '20.01.11.01', NULL, '01', '后视镜总成', 'R. view mirror assy.', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5061', '20.01.11.01.01', NULL, '01', '后视镜主体', 'R.view mirror main body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5062', '20.01.11.01.02', NULL, '02', '装饰罩', 'R.view mirror holder trim cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5063', '20.01.11.02', NULL, '02', '下视镜', 'Side-lower mirror assy.', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5064', '20.01.11.03', NULL, '03', '内后视镜总成', 'R. inner view mirror assy.', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5065', '20.01.11.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5066', '20.01.11.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5067', '20.02', NULL, '02', '车身内饰系统', 'BODY INTERIOR system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5068', '20.02.01', NULL, '01', '地板装饰件', 'Floor trim parts', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5068CB286641495DB21', '20.02.05.23', '', '23', '支架', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5069', '20.02.01.01', NULL, '01', '地毯总成', 'Carpet assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('507', '10.08.02.01.03.01', NULL, '01', '后轮毂', 'Rear hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5070', '20.02.01.02', NULL, '02', '压条', 'Trim strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5071', '20.02.01.07', NULL, '07', '歇脚板', 'Footrest plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5072', '20.02.01.08', NULL, '08', '门框装饰板', 'Door frame trim board', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5073', '20.02.01.09', NULL, '09', '地板挂钩', 'Floor latch', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5074', '20.02.01.10', NULL, '10', '地板', 'Floor board', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5075', '20.02.01.11', NULL, '11', '轮罩地毯总成', 'wheel cover carpet assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5076', '20.02.01.12', NULL, '12', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5077', '20.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5078', '20.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5079', '20.02.02', NULL, '02', '隔音隔热减振密封装置', 'Sound/heat insulation vibration reduction seal device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('508', '10.08.02.01.03.02', NULL, '02', '车轮螺栓', 'Wheel bolt', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5080', '20.02.02.01', NULL, '01', '隔热垫', 'Heat insulation pad', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5081', '20.02.02.02', NULL, '02', '隔音垫', 'Center channel left sound insulation plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5082', '20.02.02.04', NULL, '04', '孔贴', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5083', '20.02.02.05', NULL, '05', '搭扣总成', 'Buckle latch assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5084', '20.02.02.06', NULL, '06', '平衡弹簧总成', 'Balance spring assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5085', '20.02.02.07', NULL, '07', '密封条', 'Seal strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5086', '20.02.02.08', NULL, '08', '减震海绵', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5087', '20.02.02.09', NULL, '09', '孔塞', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5088', '20.02.02.10', NULL, '10', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5089', '20.02.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('509', '10.08.02.01.03.03', NULL, '03', '后车轮螺母(前/后)', 'Rear wheel nut (front/rear)', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5090', '20.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5091', '20.02.03', NULL, '03', '侧围内饰', 'Interior trim parts for front/rear wall', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5092', '20.02.03.01', NULL, '01', 'A柱护板', 'Left Acolumn shield', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5093', '20.02.03.02', NULL, '02', '堵盖', 'Plug', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5094', '20.02.03.03', NULL, '03', '扶手', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5095', '20.02.03.04', NULL, '04', '侧围护板总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5096', '20.02.03.05', NULL, '05', 'C柱护板', 'Left Ccolumn shield', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5097', '20.02.03.09', NULL, '09', 'B柱护板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5098', '20.02.03.10', NULL, '10', 'C柱护板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5099', '20.02.03.11', NULL, '11', '安全带滑板', 'Seat belt sliding plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('51', '10.02.01.02.01', NULL, '01', '钢圈', 'Steel ring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('510', '10.08.02.01.03.04', NULL, '04', '半轴', 'Half shaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5100', '20.02.03.12', NULL, '12', '喇叭罩', 'Horn cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5101', '20.02.03.13', NULL, '13', '侧围出风口', 'Side wall air outlet', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5102', '20.02.03.14', NULL, '14', '侧围挂钩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5103', '20.02.03.15', NULL, '15', '发动机盖铰链挂点', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5104', '20.02.03.16', NULL, '16', '中门踏板护罩总成', 'Middle door pedal guard assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5105', '20.02.03.17', NULL, '17', 'D柱护板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5106', '20.02.03.18', NULL, '18', '侧窗护板总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5107', '20.02.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5108', '20.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5109', '20.02.04', NULL, '04', '前后围内饰件', 'Inner trim parts for side wall', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('511', '10.08.02.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5110', '20.02.04.01', NULL, '01', '后围内护板总成', 'Rear wall inner guard plate assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5111', '20.02.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5112', '20.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5113', '20.02.05', NULL, '05', '顶盖内饰', 'Inner trim parts for roof', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5114', '20.02.05.01', NULL, '01', '遮阳板总成', 'Sunvisor assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('51147737A2DA46F4A77', '10.03.01.26.09', '', '09', '举升阀安装座', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5115', '20.02.05.02', NULL, '02', '遮阳板挂钩', 'Sunvisor hook', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5116', '20.02.05.03', NULL, '03', '吸能块', 'energy absorbing block', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5117', '20.02.05.04', NULL, '04', '天窗总成', 'Sun visor assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5118', '20.02.05.05', NULL, '05', '顶部逃生口总成', 'Top escape exit assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5119', '20.02.05.05.01', NULL, '01', '逃生口玻璃', 'Escape exit glass', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('512', '10.08.02.01.04', NULL, '04', '中桥制动器总成', 'Intermediate axle brake assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5120', '20.02.05.05.02', NULL, '02', '逃生口玻璃密封条', 'Escape exit glass seal', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5121', '20.02.05.06', NULL, '06', '顶部逃生口顶棚边框包条', 'Escape exit roof frame strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5122', '20.02.05.07', NULL, '07', '进气格栅总成', 'intake grille assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5123', '20.02.05.08', NULL, '08', '出风口总成', 'Air outlet assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5124', '20.02.05.09', NULL, '09', '顶棚隔热毡', 'Roof heat insulation felt', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5125', '20.02.05.10', NULL, '10', '空气净化器总成', 'Air cleaner assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5126', '20.02.05.11', NULL, '11', '顶棚垫块', 'Ceiling pad', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5127', '20.02.05.12', NULL, '12', '顶棚总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5128', '20.02.05.13', NULL, '13', '扶手', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5129', '20.02.05.14', NULL, '14', '软垫', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('513', '10.08.02.01.04.01', NULL, '01', '间隙调整臂', 'Clearance adjuster', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5130', '20.02.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5131', '20.02.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5132', '20.02.06', NULL, '06', '室内灯及内视镜', 'Interior lamp and interior mirror', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5133', '20.02.06.01', NULL, '01', '内视镜总成', 'Inner view mirror assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5134', '20.02.06.02', NULL, '02', '室内灯总成', 'Interior lamp assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5135', '20.02.06.03', NULL, '03', '踏步灯', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5136', '20.02.06.04', NULL, '04', '踏步灯总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5137', '20.02.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5138', '20.02.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5139', '20.02.07', NULL, '07', '其它内饰附件', 'Accessories for other inner trim parts', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('514', '10.08.02.01.04.02', NULL, '02', '后制动底板', 'Rear brake back plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5140', '20.02.07.01', NULL, '01', '安全锤总成', 'Part name assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5141', '20.02.07.02', NULL, '02', '顶盖护角', 'Top cover corner armor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5142', '20.02.07.03', NULL, '03', '司机后隔板总成', 'driver rear partition assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5143', '20.02.07.03.01', NULL, '01', '司机后隔板', 'driver rear partition', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5144', '20.02.07.03.02', NULL, '02', '隔板连接支架', 'partition', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5145', '20.02.07.04', NULL, '04', '司机护栏总成', 'Driver\'s guardrail assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5146', '20.02.07.05', NULL, '05', '驾驶员座椅后护帘', 'Driver seat rear curtain', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5147', '20.02.07.06', NULL, '06', '侧窗护栏总成', 'Side window guardrail assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5148', '20.02.07.07', NULL, '07', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5149', '20.02.07.08', NULL, '08', '隔离防护板密封条', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('515', '10.08.02.01.04.03', NULL, '03', '制动蹄总成', 'Brake cheek assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5150', '20.02.07.09', NULL, '09', '门窗玻璃', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5151', '20.02.07.10', NULL, '10', '玻璃密封条', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5152', '20.02.07.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5153', '20.02.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5154', '20.02.08', NULL, '08', '灭火器', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5155', '20.02.08.01', NULL, '01', '灭火器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5156', '20.03', NULL, '03', '座舱系统', 'Cab system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5157', '20.03.01', NULL, '01', '仪表板', 'Instrument panel', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5158', '20.03.01.01', NULL, '01', '仪表板总成', 'Instrument panel assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5159', '20.03.01.01.01', NULL, '01', '仪表板本体', 'Instrument panel body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('515DDA45F06F42ED8A1', '60.06.01.01.09.06', '', '06', '跨模组连接排-短', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('516', '10.08.02.01.04.04', NULL, '04', '后制动蹄铁', 'Rear brake shoe', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5160', '20.03.01.01.02', NULL, '02', '护板', 'Instrument panel body subassembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5161', '20.03.01.01.03', NULL, '03', '面板', 'vent assy subassembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5162', '20.03.01.01.04', NULL, '04', '盖板', 'trim cover subassembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5163', '20.03.01.01.05', NULL, '05', '吹面风道', 'Trimming strip subassembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5164', '20.03.01.01.06', NULL, '06', '除霜风道', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5165', '20.03.01.01.07', NULL, '07', '出风口', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5166', '20.03.01.01.08', NULL, '08', '除霜风口', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5167', '20.03.01.01.09', NULL, '09', '仪表罩', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5168', '20.03.01.01.10', NULL, '10', '装饰板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5169', '20.03.01.01.11', NULL, '11', '装饰条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('517', '10.08.02.01.04.05', NULL, '05', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5170', '20.03.01.01.12', NULL, '12', '手套箱', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5171', '20.03.01.01.13', NULL, '13', '杂物盒组件', 'Sundries box subassembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5172', '20.03.01.01.14', NULL, '14', '烟灰缸', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5173', '20.03.01.01.15', NULL, '15', '杯托', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5174', '20.03.01.01.16', NULL, '16', '卡槽', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5175', '20.03.01.01.17', NULL, '17', '抽屉', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5176', '20.03.01.01.18', NULL, '18', '桌板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5177', '20.03.01.01.19', NULL, '19', '踏板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5178', '20.03.01.01.20', NULL, '20', '扶手', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5179', '20.03.01.01.21', NULL, '21', '氛围灯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('518', '10.08.02.01.04.06', NULL, '06', '制动凸轮轴', 'Brake camshaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5180', '20.03.01.01.22', NULL, '22', '照明灯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5181', '20.03.01.01.23', NULL, '23', '堵盖', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5182', '20.03.01.01.24', NULL, '24', '软垫', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5183', '20.03.01.01.25', NULL, '25', '隔音件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5184', '20.03.01.01.26', NULL, '26', '隔热件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5185', '20.03.01.01.27', NULL, '27', '减震件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5186', '20.03.01.01.28', NULL, '28', '密封件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5187', '20.03.01.01.29', NULL, '29', '支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5188', '20.03.01.01.30', NULL, '30', '手柄', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5189', '20.03.01.01.31', NULL, '31', '笔架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('519', '10.08.02.01.04.07', NULL, '07', '后制动气室', 'Rear brake chamber', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5190', '20.03.01.01.32', NULL, '32', '挂钩', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5191', '20.03.01.01.33', NULL, '33', '副气囊托架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5192', '20.03.01.01.34', NULL, '34', '护套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5193', '20.03.01.01.35', NULL, '35', '杂物盒组件', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5194', '20.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5195', '20.03.01.02', NULL, '02', '副仪表板总成', 'Co-instrument panel assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5196', '20.03.01.02.01', NULL, '01', '副仪表板本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5197', '20.03.01.02.02', NULL, '02', '盖板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5198', '20.03.01.02.03', NULL, '03', '装饰条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5199', '20.03.01.02.04', NULL, '04', '吹面风道', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('51E8F141630F4541A3B', '30.05.05.21', '', '21', '干燥器', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('52', '10.02.01.02.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('520', '10.08.02.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5200', '20.03.01.02.05', NULL, '05', '杂物盒', 'Cup holder subassembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5201', '20.03.01.02.06', NULL, '06', '烟灰缸', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5202', '20.03.01.02.07', NULL, '07', '杯托', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5203', '20.03.01.02.08', NULL, '08', '扶手箱', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5204', '20.03.01.02.09', NULL, '09', '扶手', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5205', '20.03.01.02.10', NULL, '10', '卡槽', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5206', '20.03.01.02.11', NULL, '11', '堵盖', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5207', '20.03.01.02.12', NULL, '12', '软垫', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5208', '20.03.01.02.15', NULL, '15', '减震件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5209', '20.03.01.02.16', NULL, '16', '密封件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('521', '10.08.03', NULL, '03', '驱动后桥', 'Drive rear axle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5210', '20.03.01.02.17', NULL, '17', '手柄', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5211', '20.03.01.02.18', NULL, '18', '护套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5212', '20.03.01.02.19', NULL, '19', '氛围灯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5213', '20.03.01.02.20', NULL, '20', '照明灯', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5214', '20.03.01.02.21', NULL, '21', '支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5215', '20.03.01.02.22', NULL, '22', '软垫', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5216', '20.03.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('521644BF10534EFDB78', '60.06.01.01.03.01', '', '01', 'CMU支架', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5217', '20.03.01.03', NULL, '03', '管梁及支架', 'Beam and Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5218', '20.03.01.03.01', NULL, '01', '管梁焊接总成', 'Instrument panel beam ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5219', '20.03.01.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('522', '10.08.03.01', NULL, '01', '后桥总成', 'Rear axle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5220', '20.03.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5221', '20.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5222', '20.03.02', NULL, '02', '座椅', 'Seat', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5223', '20.03.02.01', NULL, '01', '座椅', 'Driver seat assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5224', '20.03.02.02', NULL, '02', '驾驶员座椅', 'Driver seat', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5225', '20.03.02.03', NULL, '03', '副驾驶员座椅', 'Co-driver seat', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5226', '20.03.02.04', NULL, '04', '乘客三人座椅(2+1)', 'Passenger three-person seat(2+1)', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5227', '20.03.02.05', NULL, '05', '装饰护罩', 'Trim cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5228', '20.03.02.06', NULL, '06', '中间座椅', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5229', '20.03.02.07', NULL, '07', '乘客单人座椅', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('523', '10.08.03.01.01', NULL, '01', '后桥桥壳总成', 'Rear axle housing assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5230', '20.03.02.08', NULL, '08', '乘客双人座椅(固定)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5231', '20.03.02.09', NULL, '09', '乘客三人座椅(固定)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5232', '20.03.02.10', NULL, '10', '乘客四人座椅(固定)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5233', '20.03.02.11', NULL, '11', '乘客四人座椅(3+1)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5234', '20.03.02.12', NULL, '12', '侧翻座椅', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5235', '20.03.02.13', NULL, '13', '前翻座椅', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5236', '20.03.02.14', NULL, '14', '四分座椅', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5237', '20.03.02.15', NULL, '15', '六分座椅', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5238', '20.03.02.16', NULL, '16', '四六分座椅(座垫连体)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5239', '20.03.02.17', NULL, '17', '四六分座椅(靠背连体)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('524', '10.08.03.01.01.01', NULL, '01', '后桥壳总成', 'Rear axle housing assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5240', '20.03.02.18', NULL, '18', '滑轨', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5241', '20.03.02.19', NULL, '19', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5242', '20.03.02.20', NULL, '20', '地脚装饰件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5243', '20.03.02.21', NULL, '21', '标签', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5244', '20.03.02.22', NULL, '22', '座椅靠背', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5245', '20.03.02.23', NULL, '23', '座椅座垫', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5246', '20.03.02.24', NULL, '24', '骨架焊接总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5247', '20.03.02.25', NULL, '25', '座椅挂钩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5248', '20.03.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5249', '20.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('525', '10.08.03.01.01.02', NULL, '02', '弹簧滑板', 'Spring slide plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5250', '20.03.03', NULL, '03', '约束系统', 'Restraint system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5251', '20.03.03.01', NULL, '01', '安全带总成', 'Seat belt assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5252', '20.03.03.01.01', NULL, '01', '卷收器', 'Retractor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5253', '20.03.03.01.02', NULL, '02', '锁扣', 'Buckle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5254', '20.03.03.01.03', NULL, '03', '高度调节器', 'Height adjuster', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5255', '20.03.03.02', NULL, '02', '装饰护罩', 'Trim cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5256', '20.03.03.03', NULL, '03', '卷收器', 'Retractor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5257', '20.03.03.04', NULL, '04', '高度调节器', 'Height adjuster', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5258', '20.03.03.05', NULL, '05', '锁舌锁扣', 'Lock cylinder and lock catch', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5259', '20.03.03.06', NULL, '06', '双锁扣', 'Double lock catch', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('526', '10.08.03.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5260', '20.03.03.07', NULL, '07', '锁扣', 'Buckle', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5261', '20.03.03.08', NULL, '08', '装饰护罩', 'Trim cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5262', '20.03.03.09', NULL, '09', '标签', 'Label', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5263', '20.03.03.10', NULL, '10', '织带锁舌', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5264', '20.03.03.11', NULL, '11', '双锁舌', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5265', '20.03.03.12', NULL, '12', '螺栓饰盖', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5266', '20.03.03.13', NULL, '13', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5267', '20.03.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5268', '20.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5269', '20.04', NULL, '04', '开闭件系统', 'Closure system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('527', '10.08.03.01.02', NULL, '02', '后桥主减总成', 'Final drive assembly of rear axle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5270', '20.04.01', NULL, '01', '前侧门 ', 'Front side door', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5271', '20.04.01.01', NULL, '01', '前门安装总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5272', '20.04.01.01.01', NULL, '01', '前门调整总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5273', '20.04.01.01.01.01', NULL, '01', '前门焊接总成', 'Front door welding assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5274', '20.04.01.01.01.01.01', NULL, '01', '前门外板', 'F. door outer plate ', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5275', '20.04.01.01.01.01.02', NULL, '02', '前门内板总成', 'F. door inner panel assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5276', '20.04.01.01.01.01.02.01', NULL, '01', '前门内板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5277', '20.04.01.01.01.01.02.01.01', NULL, '01', '前门内板本体', 'F. door inner plate body', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5278', '20.04.01.01.01.01.02.01.02', NULL, '02', '紧固件', 'Nut', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5279', '20.04.01.01.01.01.02.02', NULL, '02', '前门门锁加强板', 'F. door lock reinforced plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('528', '10.08.03.01.02.01', NULL, '01', '后桥主动锥齿轮凸缘总成', 'Flange assembly of driving bevel gear for rear axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5280', '20.04.01.01.01.01.02.03', NULL, '03', '螺母板总成', 'Nut plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5281', '20.04.01.01.01.01.02.03.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5282', '20.04.01.01.01.01.02.03.02', NULL, '02', '紧固件', 'Nut', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5283', '20.04.01.01.01.01.02.04', NULL, '04', '前门玻璃导轨总成', 'F. door glass front guide rail', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5284', '20.04.01.01.01.01.02.04.01', NULL, '01', '前门玻璃导轨', 'Front guide rail of front door glass', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5285', '20.04.01.01.01.01.02.04.02', NULL, '02', '玻璃导轨支架', 'Glass guide rail bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5286', '20.04.01.01.01.01.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5287', '20.04.01.01.01.01.02.05', NULL, '05', '前门加强板总成', 'F. door reinforced plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5288', '20.04.01.01.01.01.02.05.01', NULL, '01', '前门加强板', 'F. door reinforced plate ', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5289', '20.04.01.01.01.01.02.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('529', '10.08.03.01.02.02', NULL, '02', '齿轮', 'Gear', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5290', '20.04.01.01.01.01.02.06', NULL, '06', '前门防撞梁总成', 'F. door anti-collision member assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5291', '20.04.01.01.01.01.02.06.01', NULL, '01', '前门防撞梁', 'Front door impact beam', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5292', '20.04.01.01.01.01.02.06.02', NULL, '02', '防撞梁连接板', 'Impact beam connecting plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5293', '20.04.01.01.01.01.02.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5294', '20.04.01.01.01.01.02.07', NULL, '07', '前门铰链加强板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5295', '20.04.01.01.01.02', NULL, '02', '车门补强片', 'Door reinforced panel', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5296', '20.04.01.01.01.03', NULL, '03', '前门铰链总成', 'F. door upper hinge assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5297', '20.04.01.01.01.04', NULL, '04', '前门限位器总成', 'Front door stopper assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5298', '20.04.01.01.01.05', NULL, '05', '前门玻璃总成', 'F. door window glass assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5299', '20.04.01.01.01.06', NULL, '06', '前门玻璃泥槽', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('53', '10.02.01.02.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('530', '10.08.03.01.02.03', NULL, '03', '减速器壳', 'Reducer housing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5300', '20.04.01.01.01.07', NULL, '07', '前门外水切', 'F. door external weatherstrip', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5301', '20.04.01.01.01.08', NULL, '08', '前门内水切', 'F. door interior weatherstrip', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5302', '20.04.01.01.01.09', NULL, '09', '前门框密封条', 'F. doorframe seal strip', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5303', '20.04.01.01.01.10', NULL, '10', '前门密封条总成', 'F. door seal strip assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5304', '20.04.01.01.01.11', NULL, '11', '前门升降器总成', 'Front door lifter assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5305', '20.04.01.01.01.11.01', NULL, '01', '前门升降器分总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5306', '20.04.01.01.01.11.02', NULL, '02', '摇柄', 'Handle assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5307', '20.04.01.01.01.11.03', NULL, '03', '卡簧', 'Snap spring', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5308', '20.04.01.01.01.12', NULL, '12', '前门玻璃安装导轨总成', 'Left glass front guide rail ', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5309', '20.04.01.01.01.13', NULL, '13', '前门锁总成', 'F. door lock assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('531', '10.08.03.01.02.04', NULL, '04', '差速器壳', 'Differential case', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5310', '20.04.01.01.01.13.01', NULL, '01', '前门锁体总成', 'F. door lock body assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5311', '20.04.01.01.01.13.02', NULL, '02', '前门内锁止拉索(杆)', 'Front door inner lock cable', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5312', '20.04.01.01.01.13.03', NULL, '03', '前门内开启拉索(杆)', 'Front door inner unlock cable', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5313', '20.04.01.01.01.13.04', NULL, '04', '前门内把手', 'F. door inner handle', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5314', '20.04.01.01.01.13.05', NULL, '05', '前门外把手总成', 'F. door outer handle assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5315', '20.04.01.01.01.13.06', NULL, '06', '前门外把手拨叉', 'F. door outer handle fork', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5316', '20.04.01.01.01.13.07', NULL, '07', '前门外把手拉索(杆)', 'F. door outer lock cable', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5317', '20.04.01.01.01.13.08', NULL, '08', '前锁芯拉杆(线)', 'F. lock cylinder handle (wire)', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5318', '20.04.01.01.01.13.09', NULL, '09', '锁扣', 'Buckle', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5319', '20.04.01.01.01.13.10', NULL, '10', '无钥匙进入开关', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('532', '10.08.03.01.02.05', NULL, '05', '后桥主动锥齿轮轴承座', 'Bearing seat of driving bevel gear for rear axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5320', '20.04.01.01.01.14', NULL, '14', '全车锁芯及钥匙总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5321', '20.04.01.01.01.14.01', NULL, '01', '点火锁芯', 'Ignition lock cylinder', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5322', '20.04.01.01.01.14.02', NULL, '02', '车门锁芯', 'Door lock cylinder', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5323', '20.04.01.01.01.14.03', NULL, '03', '钥匙', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5324', '20.04.01.01.01.15', NULL, '15', '前门内护板总成', 'F. door inner shield assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5325', '20.04.01.01.01.15.01', NULL, '01', '前门内护板本体总成', 'F. door trim', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5326', '20.04.01.01.01.15.02', NULL, '02', '前门控制器面板总成', 'F. door controller cover plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5327', '20.04.01.01.01.15.03', NULL, '03', '前门内护板装饰件', 'F. door inner shield trim strip', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5328', '20.04.01.01.01.15.04', NULL, '04', '内护板堵盖', 'Inner guard plate plug', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5329', '20.04.01.01.01.15.05', NULL, '05', '前门内护板扣手盒', 'F. door inner shield buckle box', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('533', '10.08.03.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5330', '20.04.01.01.01.15.06', NULL, '06', '前门内护板防撞块', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5331', '20.04.01.01.01.15.07', NULL, '07', '前门内护板吸音棉', 'Front door sonnd absorption cotton', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5332', '20.04.01.01.01.15.08', NULL, '08', '前门内护板密封条', 'Inner shield seal strip', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5333', '20.04.01.01.01.15.09', NULL, '09', '肘托', 'Elbow support', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5334', '20.04.01.01.01.15.10', NULL, '10', '拉手盒垫片', 'Handle box gasket', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5335', '20.04.01.01.01.15.11', NULL, '11', '拉手盒', 'handle box', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5336', '20.04.01.01.01.15.12', NULL, '12', '地图袋', 'Retro-reflector', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5337', '20.04.01.01.01.15.13', NULL, '13', '氛围灯', 'Ambient lamp', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5338', '20.04.01.01.01.15.14', NULL, '14', '回复反射器', 'Retro-reflector', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5339', '20.04.01.01.01.16', NULL, '16', '前门三角板', 'F. door triangle trim cover assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('534', '10.08.03.01.03', NULL, '03', '后桥轮毂ABS总成', 'Rear axle hub ABS assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5340', '20.04.01.01.01.17', NULL, '17', '车门外装饰板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5341', '20.04.01.01.01.18', NULL, '18', '安装支架', 'bracket ', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5342', '20.04.01.01.01.19', NULL, '19', '前门防水膜', 'Front door waterproof membrane', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5343', '20.04.01.01.01.20', NULL, '20', '孔堵(贴)', 'Door rubber plug', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5344', '20.04.01.01.01.21', NULL, '21', '车门其他附件', 'Other door accessories', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5345', '20.04.01.01.01.22', NULL, '22', '三角窗密封条', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5346', '20.04.01.01.01.24', NULL, '24', '前门安装导轨总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5347', '20.04.01.01.01.26', NULL, '26', '前门铰链总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5348', '20.04.01.01.01.27', NULL, '27', '前门限位器总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5349', '20.04.01.01.01.28', NULL, '28', '前门门框密封条', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('535', '10.08.03.01.03.01', NULL, '01', '后轮毂', 'Rear hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5350', '20.04.01.01.01.31', NULL, '31', '前门三角窗', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5351', '20.04.01.01.01.37', NULL, '37', '前车门防水膜', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5352', '20.04.01.01.01.38', NULL, '38', '前门内护板扣手盒', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5353', '20.04.01.01.01.39', NULL, '39', '拉手盒垫片', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5354', '20.04.01.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5355', '20.04.01.01.02', NULL, '02', '前门控制器面板总成', 'F. door controller cover plate', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5356', '20.04.01.01.03', NULL, '03', '前门内护板拉手盒', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5357', '20.04.01.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5358', '20.04.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5359', '20.04.02', NULL, '02', '后侧门', 'Rear side door', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('536', '10.08.03.01.03.02', NULL, '02', '后车轮螺栓', 'Rear wheel bolt', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5360', '20.04.02.01', NULL, '01', '后门安装总成', 'R. door installation assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5361', '20.04.02.01.01', NULL, '01', '后门焊接总成', 'R. door weldment assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5362', '20.04.02.01.01.01', NULL, '01', '后门外板', 'R. door outer plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5363', '20.04.02.01.01.02', NULL, '02', '后门内板总成', 'R. door inner plate assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5364', '20.04.02.01.01.02.01', NULL, '01', '后门内板本体', 'R. door inner plate body', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5365', '20.04.02.01.01.02.03', NULL, '03', '后门门锁加强板', 'R. door lock reinforced plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5366', '20.04.02.01.01.02.04', NULL, '04', '后门铰链加强板', 'R. door hinge reinforced plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5367', '20.04.02.01.01.02.05', NULL, '05', '螺母板总成', ' nut plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5368', '20.04.02.01.01.02.05.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5369', '20.04.02.01.01.02.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('537', '10.08.03.01.03.03', NULL, '03', '半轴', 'Half shaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5370', '20.04.02.01.01.02.06', NULL, '06', '后门玻璃导轨总成', 'R. door glass front guide rail', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5371', '20.04.02.01.01.02.06.01', NULL, '01', '后门玻璃导轨', 'R. door glass front guide', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5372', '20.04.02.01.01.02.06.02', NULL, '02', '玻璃导轨支架', 'Glass guide rail bracket', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5373', '20.04.02.01.01.02.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5374', '20.04.02.01.01.02.09', NULL, '09', '后门防撞梁总成', 'R. door anti-collision member assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5375', '20.04.02.01.01.02.09.01', NULL, '01', '后门防撞梁', 'R. door anti-collision member', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5376', '20.04.02.01.01.02.09.02', NULL, '02', '防撞梁连接板', 'Impact beam connecting plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5377', '20.04.02.01.01.02.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5378', '20.04.02.01.01.03', NULL, '03', '车门补强片', 'Door reinforced panel', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5379', '20.04.02.01.02', NULL, '02', '后门铰链总成', 'R. door upper hinge assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('538', '10.08.03.01.03.04', NULL, '04', '后车轮螺母', 'Rear wheel nut', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5380', '20.04.02.01.04', NULL, '04', '后门玻璃安装导轨总成', 'Left glass front guide rail ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5381', '20.04.02.01.06', NULL, '06', '后门限位器总成', 'Rear door limiter assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5382', '20.04.02.01.07', NULL, '07', '后门玻璃总成', 'R. door window glass assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5383', '20.04.02.01.08', NULL, '08', '后门泥槽', 'R. door mud chute', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5384', '20.04.02.01.09', NULL, '09', '后门外水切', 'R. door external weatherstrip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5385', '20.04.02.01.10', NULL, '10', '后门内水切', 'R. door interior weatherstrip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5386', '20.04.02.01.11', NULL, '11', '后门框密封条', 'R. doorframe seal strip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5387', '20.04.02.01.12', NULL, '12', '后门密封条总成', 'R. door seal strip assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5388', '20.04.02.01.15', NULL, '15', '后门升降器总成', 'Rear door lifter assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5389', '20.04.02.01.15.01', NULL, '01', '后门升降器分总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('539', '10.08.03.01.03.05', NULL, '05', 'ABS探头总成', 'ABS probe assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5390', '20.04.02.01.15.02', NULL, '02', '摇柄', 'Handle assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5391', '20.04.02.01.16', NULL, '16', '后门锁总成', 'R. door lock assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5392', '20.04.02.01.16.01', NULL, '01', '后门锁体总成', 'R. door lock body assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5393', '20.04.02.01.16.02', NULL, '02', '后门内锁止拉索(杆)', 'Rear door inner lock cable', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5394', '20.04.02.01.16.03', NULL, '03', '后门内开启拉索(杆)', 'Rear door inner unlock cable', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5395', '20.04.02.01.16.04', NULL, '04', '后门内把手', 'R. door inner handle', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5396', '20.04.02.01.16.05', NULL, '05', '后门外把手总成', 'R.door outer handle assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5397', '20.04.02.01.16.06', NULL, '06', '后门外把手拨叉', 'R.door outer handle fork', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5398', '20.04.02.01.16.07', NULL, '07', '后门外把手拉索(杆)', 'R. door outer lock cable', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5399', '20.04.02.01.16.09', NULL, '09', '锁扣', 'Buckle', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('54', '10.02.01.03', NULL, '03', '支撑拉杆', 'support pull rod', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('540', '10.08.03.01.03.06', NULL, '06', 'ABS探头衬套', 'ABS probe bushing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5400', '20.04.02.01.17', NULL, '17', '后门内护板总成', 'R.door interior shield assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5401', '20.04.02.01.17.01', NULL, '01', '后门内护板本体总成', 'R.. door trim', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5402', '20.04.02.01.17.02', NULL, '02', '后门控制器面板总成', 'R. door controller cover plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5403', '20.04.02.01.17.04', NULL, '04', '后门内护板装饰件', 'R. door inner shield trim strip', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('540345D07AE145F7B2A', '20.04.01.01.09', '', '09', '右前门三角窗外装饰条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5404', '20.04.02.01.17.05', NULL, '05', '内护板堵盖', 'Inner guard plate plug', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5405', '20.04.02.01.17.06', NULL, '06', '后门内护板扣手盒', 'R.door interior shield buckle box', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5406', '20.04.02.01.17.07', NULL, '07', '后门内护板防撞块', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5407', '20.04.02.01.17.08', NULL, '08', '后门内护板吸音棉', 'Rear door sonnd absorption cotton', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5408', '20.04.02.01.17.09', NULL, '09', '后门内护板密封条', 'Inner shield seal strip', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5409', '20.04.02.01.17.10', NULL, '10', '肘托', 'Elbow support', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('541', '10.08.03.01.03.07', NULL, '07', 'ABS齿圈', 'ABS gear rim', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5410', '20.04.02.01.17.11', NULL, '11', '拉手盒垫片', 'Handle box gasket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5411', '20.04.02.01.17.12', NULL, '12', '拉手盒', ' handle box', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5412', '20.04.02.01.17.13', NULL, '13', '地图袋', 'Map bag', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5413', '20.04.02.01.17.14', NULL, '14', '氛围灯', 'Ambient lamp', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5413D660A12A4DDA94B', '20.04.06.01.51', '', '51', '右滑门下滑轮安装加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5414', '20.04.02.01.17.15', NULL, '15', '回复反射器', 'Retro-reflector', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5415', '20.04.02.01.20', NULL, '20', '后门防水膜', 'Rear door waterproof membrane', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5416', '20.04.02.01.22', NULL, '22', '安装支架', 'Mounting bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5417', '20.04.02.01.23', NULL, '23', '孔堵(贴)', 'Door rubber plug', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5418', '20.04.02.01.28', NULL, '28', '车门其他附件', 'Other door accessories', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5419', '20.04.02.01.29', NULL, '29', '内护板堵盖', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('542', '10.08.03.01.03.08', NULL, '08', '轴承', 'Bearing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5420', '20.04.02.01.31', NULL, '31', '后门下装饰板总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5421', '20.04.02.01.33', NULL, '33', '内把手固定螺钉盖板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5422', '20.04.02.01.97', NULL, '97', '安装图', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5423', '20.04.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5424', '20.04.03', NULL, '03', '加油口装置', 'Oil filler device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5425', '20.04.03.01', NULL, '01', '油箱门安装总成', 'Fuel tank door installation assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5426', '20.04.03.01.01', NULL, '01', '油箱门焊接总成', 'Fuel tank door weldmentment assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5427', '20.04.03.01.01.01', NULL, '01', '油箱门外板', 'Fuel tank door outer plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5428', '20.04.03.01.01.02', NULL, '02', '油箱门内板总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5429', '20.04.03.01.01.02.01', NULL, '01', '油箱门内板', 'Fuel tank door inner plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('543', '10.08.03.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5430', '20.04.03.01.01.02.02', NULL, '02', '油箱门安装板', 'Installation of fuel tank gate plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5431', '20.04.03.01.01.02.03', NULL, '03', '扭簧', 'Torsion spring', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5432', '20.04.03.01.01.02.04', NULL, '04', '油箱门销轴', 'Fuel tank door pin', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5433', '20.04.03.01.01.06', NULL, '06', '紧固件', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5434', '20.04.03.01.02', NULL, '02', '油箱门锁', 'fuel tank gate lock', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5435', '20.04.03.01.02.01', NULL, '01', '油箱门锁拉索', 'Fuel tank door lock cable', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5436', '20.04.03.01.02.02', NULL, '02', '油箱门开启手柄', 'Fuel tank door opening handle', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5437', '20.04.03.01.03', NULL, '03', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5438', '20.04.03.01.04', NULL, '04', '油箱门缓冲垫', 'Fuel tank door buffer cushion', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5439', '20.04.03.01.05', NULL, '05', '货箱锁总成', 'Trunk lock assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('543EB27B247D405C874', '60.06.01.01.02.01', '', '01', 'A箱下壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('544', '10.08.03.01.04', NULL, '04', '后桥轮毂非ABS总成', 'Non-ABS assembly of rear axle hub', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5440', '20.04.03.01.05.01', NULL, '01', '货箱锁开启手柄', 'Trunk unlocking handle', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5441', '20.04.03.01.05.02', NULL, '02', '货箱锁体', 'Trunk lock', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5442', '20.04.03.01.05.03', NULL, '03', '货箱锁体拉杆', 'Trunk lock lever', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5443', '20.04.03.01.05.05', NULL, '05', '货箱锁扣', 'Trunk lock', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5444', '20.04.03.01.05.06', NULL, '06', '货箱锁附件', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5445', '20.04.03.01.06', NULL, '06', '拉索总成', 'cable assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5446', '20.04.03.01.06.01', NULL, '01', '拉索', 'cable', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5447', '20.04.03.01.06.02', NULL, '02', '拉索固定支架', 'Cable fixing bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5448', '20.04.03.01.06.03', NULL, '03', '拉索固定螺栓', 'Cable fixing bolt', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5449', '20.04.03.01.06.04', NULL, '04', '大垫圈', 'Large washer', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('545', '10.08.03.01.04.01', NULL, '01', '后轮毂', 'Rear hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5450', '20.04.03.01.08', NULL, '08', '其他附件', 'Other accessories', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5451', '20.04.03.01.09', NULL, '09', '油箱门总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5452', '20.04.03.01.10', NULL, '10', '防水膜', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5453', '20.04.03.01.11', NULL, '11', '油箱门', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5454', '20.04.03.01.12', NULL, '12', '油箱门卡扣座', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5455', '20.04.03.02', NULL, '02', '软垫', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5456', '20.04.03.05', NULL, '05', '油箱门铰链弹片', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5457', '20.04.03.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5458', '20.04.04', NULL, '04', '发动机盖', 'Engine cover', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5459', '20.04.04.01', NULL, '01', '发动机盖安装总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('546', '10.08.03.01.04.02', NULL, '02', '后车轮螺栓', 'Rear wheel bolt', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5460', '20.04.04.01.01', NULL, '01', '发动机盖调整总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5461', '20.04.04.01.01.01', NULL, '01', '发动机盖焊接总成', 'Engine hood weldmentment assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5462', '20.04.04.01.01.01.01', NULL, '01', '发动机盖内板总成', 'Engine hood inner plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5463', '20.04.04.01.01.01.01.01', NULL, '01', '发动机盖内板本体', 'Engine hood inner plate body ', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5464', '20.04.04.01.01.01.01.02', NULL, '02', '发动机盖铰链螺母板总成', 'Engine hood hinge nut plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5465', '20.04.04.01.01.01.01.02.01', NULL, '01', '发动机盖铰链螺母板', 'Engine hood hinge nut plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5466', '20.04.04.01.01.01.01.02.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5467', '20.04.04.01.01.01.01.03', NULL, '03', '前舱盖缓冲块支架', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5468', '20.04.04.01.01.01.01.04', NULL, '04', '前舱盖支撑板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5469', '20.04.04.01.01.01.01.05', NULL, '05', '发动机盖锁扣焊接板总成', 'Engine hood buckle weldmentment plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('547', '10.08.03.01.04.03', NULL, '03', '半轴', 'Half shaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5470', '20.04.04.01.01.01.01.05.01', NULL, '01', '发动机盖锁扣焊接板', 'Engine hood buckle weldmentment plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5471', '20.04.04.01.01.01.01.05.02', NULL, '02', '发动机盖锁扣', 'Engine hood buckle', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5472', '20.04.04.01.01.01.01.05.03', NULL, '03', '发动机盖锁扣加强板', 'Engine hood buckle reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5473', '20.04.04.01.01.01.01.06', NULL, '06', '发动机盖气弹簧螺母板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5474', '20.04.04.01.01.01.01.06.01', NULL, '01', '发动机盖气弹簧螺母板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5475', '20.04.04.01.01.01.02', NULL, '02', '发动机盖外板', 'Engine hood outer plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5476', '20.04.04.01.01.02', NULL, '02', '发动机盖铰链总成', 'Installation of engine hood hinge assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5477', '20.04.04.01.01.03', NULL, '03', '发动机盖缓冲块', 'Engine hood buffer cushion', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5478', '20.04.04.01.01.05', NULL, '05', '发动机盖密封条', 'Engine hood seal strip assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5479', '20.04.04.01.01.06', NULL, '06', '发动机盖密封条本体', 'Engine hood seal strip body', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('548', '10.08.03.01.04.04', NULL, '04', '后车轮螺母', 'Rear wheel nut', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5480', '20.04.04.01.01.07', NULL, '07', '车门密封条卡扣', 'Engine hood seal strip assembly buckle', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5481', '20.04.04.01.01.08', NULL, '08', '发动机盖支撑杆', 'Installation of engine hood support rod', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5482', '20.04.04.01.01.09', NULL, '09', '发动机盖支撑杆固定夹', 'Engine cover strut retaining clip', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5483', '20.04.04.01.01.10', NULL, '10', '发动机盖支撑杆固定座', 'Engine hood support hood fixing seat', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5484', '20.04.04.01.01.11', NULL, '11', '发动机盖气弹簧总成', 'Engine hood air spring assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5485', '20.04.04.01.01.12', NULL, '12', '气弹簧球头', 'Air spring ball head', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5486', '20.04.04.01.01.13', NULL, '13', '气弹簧支架', 'Air spring bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5487', '20.04.04.01.01.14', NULL, '14', '发动机盖锁总成', 'Engine hood lock assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5488', '20.04.04.01.01.14.01', NULL, '01', '前舱盖锁体总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5489', '20.04.04.01.01.14.02', NULL, '02', '前舱盖开关拉手总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('549', '10.08.03.01.04.05', NULL, '05', '轴承', 'Bearing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5490', '20.04.04.01.01.14.03', NULL, '03', '前舱盖开关拉线总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5491', '20.04.04.01.01.15', NULL, '15', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5492', '20.04.04.01.01.16', NULL, '16', '发动机盖隔热垫', 'Engine cover heat insulation pad', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5493', '20.04.04.01.01.18', NULL, '18', '不干胶孔贴', 'Hole sticker', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5494', '20.04.04.01.01.19', NULL, '19', '无纺布补强片', 'Non-woven fabric reinforcing piece', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5495', '20.04.04.01.01.20', NULL, '20', '其他附件', 'Other accessories', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5496', '20.04.04.01.01.21', NULL, '21', '前舱盖进气口装饰件', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5497', '20.04.04.01.01.26', NULL, '26', '孔堵', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5498', '20.04.04.01.01.28', NULL, '28', '软垫', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5499', '20.04.04.01.01.97', NULL, '97', '安装图', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('54CA2C5B9F6E4C48895', '60.06.01.01.06.01', '', '01', '通讯线束', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('55', '10.02.01.04', NULL, '04', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('550', '10.08.03.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5500', '20.04.05', NULL, '05', '后背门', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5501', '20.04.05.01', NULL, '01', '后背门安装总成', 'Rear tailgate installation assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5502', '20.04.05.01.01', NULL, '01', '后背门调整总成', 'Rear Rear tailgate adjusting assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5503', '20.04.05.01.01.01', NULL, '01', '后背门焊接总成', 'Rear tailgate weldment assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5504', '20.04.05.01.01.01.01', NULL, '01', '后背门外板总成', 'Rear tailgate outer panel assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5505', '20.04.05.01.01.01.01.01', NULL, '01', '后背门外板', 'Rear tailgate outer plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5506', '20.04.05.01.01.01.01.02', NULL, '02', '平头铆螺母', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5507', '20.04.05.01.01.01.02', NULL, '02', '后背门内板焊接总成', 'Rear tailgate inner plate weldment assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5508', '20.04.05.01.01.01.02.01', NULL, '01', '后背门内板', 'Rear tailgate inner plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5509', '20.04.05.01.01.01.02.02', NULL, '02', '后背门加强板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('551', '10.08.03.01.05', NULL, '05', '后桥制动器总成', 'Rear axle brake assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5510', '20.04.05.01.01.01.02.02.01', NULL, '01', '后背门加强板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5511', '20.04.05.01.01.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5512', '20.04.05.01.01.01.02.03', NULL, '03', '后背门螺母板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5513', '20.04.05.01.01.01.02.03.01', NULL, '01', '后背门螺母板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5514', '20.04.05.01.01.01.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5515', '20.04.05.01.01.01.02.04', NULL, '04', '后背门加强件', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5516', '20.04.05.01.01.01.02.05', NULL, '05', '后背门上支撑板', 'Rear tailgate upper support plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5517', '20.04.05.01.01.01.02.06', NULL, '06', '后背门盲窗加强板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5518', '20.04.05.01.01.02', NULL, '02', '后背门铰链总成', 'Tailgate hinge assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5519', '20.04.05.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('551AB6BECC104F59889', '60.06.01.01.14.12', '', '12', '模组加热膜', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('552', '10.08.03.01.05.01', NULL, '01', '间隙调整臂', 'Clearance adjuster', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5520', '20.04.05.01.01.04', NULL, '04', '补强片', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5521', '20.04.05.01.01.05', NULL, '05', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5522', '20.04.05.01.02', NULL, '02', '后背门凹限位块总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5523', '20.04.05.01.03', NULL, '03', '后背门凸限位块总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5524', '20.04.05.01.04', NULL, '04', '后背门玻璃总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5525', '20.04.05.01.05', NULL, '05', '后背门门框密封条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5526', '20.04.05.01.06', NULL, '06', '后背门气弹簧总成', 'Tailgate gas spring assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5527', '20.04.05.01.06.01', NULL, '01', '后背门气弹簧本体', 'Tailgate gas spring body', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5528', '20.04.05.01.06.02', NULL, '02', '球头支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5529', '20.04.05.01.07', NULL, '07', '后背门锁总成', 'Tailgate lock assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('553', '10.08.03.01.05.02', NULL, '02', '后制动凸轮轴', 'Rear brake camshaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5530', '20.04.05.01.07.01', NULL, '01', '后背门外拉手总成', 'Tailgate outer handle assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5531', '20.04.05.01.07.02', NULL, '02', '后背门内拉手总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5532', '20.04.05.01.07.03', NULL, '03', '后背门锁体总成', 'Tailgate lock assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5533', '20.04.05.01.07.04', NULL, '04', '后背门锁扣', 'Tailgate buckle', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5534', '20.04.05.01.07.05', NULL, '05', '后背门锁控制机构总成', 'Tailgate lock control mechanism assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5535', '20.04.05.01.07.05.01', NULL, '01', '后背门锁控制机构', 'Tailgate lock control mechanism', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5536', '20.04.05.01.07.05.02', NULL, '02', '后背门锁闭锁器', 'Tailgate lock buckle', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5537', '20.04.05.01.08', NULL, '08', '后背门上护板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5538', '20.04.05.01.09', NULL, '09', '后背门下护板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5539', '20.04.05.01.10', NULL, '10', '后背门拉带', 'Tailgate pulling belt', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('554', '10.08.03.01.05.03', NULL, '03', '后制动气室', 'Rear brake chamber', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5540', '20.04.05.01.11', NULL, '11', '后背门牌照灯护板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5541', '20.04.05.01.11.01', NULL, '01', '牌照灯护板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5542', '20.04.05.01.11.02', NULL, '02', '牌照灯护板密封条', 'License plate lamp shield seal strip', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5543', '20.04.05.01.11.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5544', '20.04.05.01.12', NULL, '12', '后背门防水膜', 'Tailgate waterproof membrane', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5545', '20.04.05.01.13', NULL, '13', '后背门标识', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5545AB63CBAA4005B37', '30.05.07.17', '', '17', '电控制动数据', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5546', '20.04.05.01.14', NULL, '14', '软垫', 'Cushion', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5547', '20.04.05.01.16', NULL, '16', '安装图', 'Installation Drawing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5548', '20.04.05.02', NULL, '02', '对开门安装总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5549', '20.04.05.02.01', NULL, '01', '右对开门防擦条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('555', '10.08.03.01.05.04', NULL, '04', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5550', '20.04.05.02.02', NULL, '02', '对开门铰链总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5551', '20.04.05.02.02.01', NULL, '01', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5552', '20.04.05.02.04', NULL, '04', '软垫', 'Cushion', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5553', '20.04.05.02.05', NULL, '05', '对开门限位器总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5554', '20.04.05.02.05.01', NULL, '01', '对开门限位器臂', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5555', '20.04.05.02.05.02', NULL, '02', '对开门限位器座', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5556', '20.04.05.02.06', NULL, '06', '后对开门玻璃', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5557', '20.04.05.02.07', NULL, '07', '左对开门密封条', 'Left double doors seal strip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5558', '20.04.05.02.08', NULL, '08', '后对开门上端挡水密封条', 'Rear double doors upper end water retaining seal strip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5559', '20.04.05.02.09', NULL, '09', '后对开门锁总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('556', '10.08.03.01.05.05', NULL, '05', '制动蹄总成', 'Brake cheek assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5560', '20.04.05.02.09.01', NULL, '01', '后对开门上辅助锁锁体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5561', '20.04.05.02.09.02', NULL, '02', '后对开门上辅助锁锁扣', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5562', '20.04.05.02.09.03', NULL, '03', '后对开门锁拉线', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5563', '20.04.05.02.09.05', NULL, '05', '左后对开门内扣手总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5564', '20.04.05.02.09.06', NULL, '06', '后对开门下辅助锁扣垫片', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5564465857EB4FF5839', '20.04.04.01.01.01.02.03', '', '03', '前舱盖左铰链加强板组件', '', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5565', '20.04.05.02.09.07', NULL, '07', '后对开门中控锁锁扣', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5566', '20.04.05.02.10', NULL, '10', '后对开门内饰板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5567', '20.04.05.02.11', NULL, '11', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5568', '20.04.05.02.12', NULL, '12', '后对开门门框密封条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5569', '20.04.05.02.13', NULL, '13', '后对开门内饰板堵盖', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('557', '10.08.03.01.05.06', NULL, '06', '后制动蹄铁', 'Rear brake shoe', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5570', '20.04.05.02.14', NULL, '14', '后标志牌左装饰件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5571', '20.04.05.02.15', NULL, '15', '左后对开门防水膜', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5572', '20.04.05.02.16', NULL, '16', '对开门焊接总成', 'Rear tailgate weldment assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5573', '20.04.05.02.16.01', NULL, '01', '对开门内板焊接总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5574', '20.04.05.02.16.01.01', NULL, '01', '对开门内板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5575', '20.04.05.02.16.01.02', NULL, '02', '对开门铰链加强板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5576', '20.04.05.02.16.01.02.01', NULL, '01', '对开门铰链加强板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5577', '20.04.05.02.16.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5578', '20.04.05.02.16.01.03', NULL, '03', '支架总成', 'Bracket assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5579', '20.04.05.02.16.01.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('558', '10.08.03.01.05.07', NULL, '07', '后制动鼓', 'Rear brake drum', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5580', '20.04.05.02.16.01.03.02', NULL, '02', '对开门下铰链安装板总成', 'R.L. tailgate lower hinge installation plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5581', '20.04.05.02.16.01.03.02.01', NULL, '01', '对开门下铰链安装板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5582', '20.04.05.02.16.01.03.02.01.01', NULL, '01', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5583', '20.04.05.02.16.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5584', '20.04.05.02.16.01.05', NULL, '05', '对开门锁扣内加强板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5585', '20.04.05.02.16.01.06', NULL, '06', '支架', 'Bracket', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5586', '20.04.05.02.16.01.06.01', NULL, '01', '对开门锁扣外加强板', 'R.L. tailgate buckle outer reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5587', '20.04.05.02.16.01.06.02', NULL, '02', '锁扣限位板', 'Lock catch limiting plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5588', '20.04.05.02.16.01.06.03', NULL, '03', '锁扣螺母板总成', 'Buckle nut plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5589', '20.04.05.02.16.01.06.03.01', NULL, '01', '锁扣螺母板', 'Buckle nut plate body', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('559', '10.08.03.01.05.08', NULL, '08', '制动底板', 'Brake base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5590', '20.04.05.02.16.01.06.03.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5591', '20.04.05.02.16.01.07', NULL, '07', '对开门上辅助锁安装板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5592', '20.04.05.02.16.01.07.01', NULL, '01', '对开门上辅助锁安装板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5593', '20.04.05.02.16.01.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5594', '20.04.05.02.16.01.08', NULL, '08', '对开门下辅助锁外加强板', 'Lower assistant lock outer reinforcing plate of R.L. rear tailgate ', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5595', '20.04.05.02.16.01.09', NULL, '09', '对开门右加强板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5596', '20.04.05.02.16.01.09.01', NULL, '01', '对开门右加强板', 'R.L. tailgate right reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5597', '20.04.05.02.16.01.09.02', NULL, '02', '对开门下辅助锁内加强板总成', 'R.L. tailgate lower assistant lock inner reinforced plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5598', '20.04.05.02.16.01.09.02.01', NULL, '01', '对开门下辅助所内加强板', 'R.L. tailgate lower assistant lock inner reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5599', '20.04.05.02.16.01.09.02.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('56', '10.02.01.05', NULL, '05', '压板', 'Pressure plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('560', '10.08.03.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5600', '20.04.05.02.16.01.09.02.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5601', '20.04.05.02.16.01.09.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5602', '20.04.05.02.16.02', NULL, '02', '对开门外板焊接总成', 'R.L. tailgate outer plate weldment assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5603', '20.04.05.02.16.02.01', NULL, '01', '对开门外板', 'R.L. tailgate outer plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5604', '20.04.05.02.16.02.02', NULL, '02', '对开门外板加强板', 'R.L. tailgate outer plate reinforced plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5605', '20.04.05.02.17', NULL, '17', '软垫', 'Cushion', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5606', '20.04.05.02.17.01', NULL, '01', '右后对开门下限位柱', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5607', '20.04.05.02.17.02', NULL, '02', '右后对开门下限位座', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5608', '20.04.05.02.17.03', NULL, '03', '右后对开门外扣手锁芯连杆', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5609', '20.04.05.02.17.04', NULL, '04', '右后对开门外开启手柄', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('561', '10.08.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5610', '20.04.05.02.17.05', NULL, '05', '右后对开门内开启手柄', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5611', '20.04.05.02.17.06', NULL, '06', '右后对开门内开启手柄装饰件', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5612', '20.04.05.02.17.07', NULL, '07', '后对开门下辅助锁扣垫片', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5613', '20.04.05.02.17.08', NULL, '08', '后对开门锁体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5614', '20.04.05.02.17.08.01', NULL, '01', '对开门中加强板', 'R.R. tailgate center reinforced plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5615', '20.04.05.02.17.08.02', NULL, '02', '对开门所加强板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5616', '20.04.05.02.17.08.03', NULL, '03', '对开门导向销加强板总成', 'R.R. tailgate guide pin reinforced plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5617', '20.04.05.02.17.08.03.01', NULL, '01', '对开门导向销加强板', 'R.R. tailgate guide pin reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5618', '20.04.05.02.17.08.03.02', NULL, '02', '对开门导向销安装板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5619', '20.04.05.02.17.08.03.02.01', NULL, '01', '对开门导向销安装板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('562', '10.08.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5620', '20.04.05.02.17.08.03.02.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5621', '20.04.05.02.18', NULL, '18', '右对开门防擦条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5622', '20.04.05.02.19', NULL, '19', '后标志牌右装饰件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5623', '20.04.05.02.20', NULL, '20', '铰链缓冲块', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5624', '20.04.05.02.21', NULL, '21', '后牌照灯饰板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5625', '20.04.05.02.22', NULL, '22', '后对开门防水膜', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5626', '20.04.05.02.23', NULL, '23', '后对开门防撞缓冲块', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5627', '20.04.05.02.24', NULL, '24', '孔贴', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5628', '20.04.05.02.25', NULL, '25', '后标志牌装饰件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5629', '20.04.05.02.26', NULL, '26', '背门紧急出口标识', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('563', '10.09', NULL, '09', '非驱动桥组', 'Non-drive axle group', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5630', '20.04.05.02.27', NULL, '27', '右侧检修盖', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5631', '20.04.05.02.28', NULL, '28', '左对开门牌照灯装饰板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5632', '20.04.05.04', NULL, '04', '车门补强片', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5633', '20.04.05.05', NULL, '05', '盲窗加强板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5634', '20.04.05.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5635', '20.04.05.98', NULL, '98', '紧固件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5636', '20.04.06', NULL, '06', '侧滑门', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5637', '20.04.06.01', NULL, '01', '滑门安装总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5638', '20.04.06.01.01', NULL, '01', '滑门焊接总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5639', '20.04.06.01.01.01', NULL, '01', '滑门外板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('564', '10.09.01', NULL, '01', '转向桥', 'Steering axle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5640', '20.04.06.01.01.02', NULL, '02', '滑门内板焊接总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5641', '20.04.06.01.01.02.01', NULL, '01', '滑门内板分总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5642', '20.04.06.01.01.02.01.01', NULL, '01', '滑门内板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5643', '20.04.06.01.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5644', '20.04.06.01.01.02.02', NULL, '02', '滑门后上加强板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5645', '20.04.06.01.01.02.02.01', NULL, '01', '滑门后上加强件', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5646', '20.04.06.01.01.02.02.02', NULL, '02', '滑门后上拐角加强件', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5647', '20.04.06.01.01.02.03', NULL, '03', '滑门滑轮加强板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5648', '20.04.06.01.01.02.03.01', NULL, '01', '滑门滑轮加强板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5649', '20.04.06.01.01.02.03.01.01', NULL, '01', '滑门滑轮加强板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('565', '10.09.01.01', NULL, '01', '前桥总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5650', '20.04.06.01.01.02.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5651', '20.04.06.01.01.02.03.02', NULL, '02', '滑门滑轮加强板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5652', '20.04.06.01.01.02.03.02.01', NULL, '01', '滑门下滑轮安装板', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5653', '20.04.06.01.01.02.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5654', '20.04.06.01.01.02.03.03', NULL, '03', '滑门下滑轮安装板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5655', '20.04.06.01.01.02.04', NULL, '04', '滑门前中锁安装板总成', 'Lower body welding assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5656', '20.04.06.01.01.02.04.01', NULL, '01', '滑门后加强件', 'Front wall weldment assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5657', '20.04.06.01.01.02.04.02', NULL, '02', '滑门前中锁安装板', 'Front molding side plate welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5658', '20.04.06.01.01.02.04.03', NULL, '03', '缓冲块安装板', 'Fender assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5659', '20.04.06.01.01.02.04.04', NULL, '04', '滑门前中缓冲块安装板总成', 'Fender sub-assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('566', '10.09.01.01.01', NULL, '01', '前轴转向总成', 'Steering assembly, front axle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5660', '20.04.06.01.01.02.04.04.01', NULL, '01', '滑门前中缓冲块安装板', 'Left upper mudguard for engine', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5661', '20.04.06.01.01.02.04.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5662', '20.04.06.01.01.02.04.05', NULL, '05', '滑门中滑轮安装板总成', 'Front cabin gusset', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5663', '20.04.06.01.01.02.04.05.01', NULL, '01', '滑门中滑轮安装板', 'Bracket assembly ', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5664', '20.04.06.01.01.02.04.05.98', NULL, '98', '紧固件', 'Bracket assembly ', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5665', '20.04.06.01.01.02.05', NULL, '05', '滑门加强件', 'Bracket assembly ', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5666', '20.04.06.01.01.02.06', NULL, '06', '侧滑门前端加强板总成', 'Bracket', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5667', '20.04.06.01.01.02.06.01', NULL, '01', '侧滑门前端加强板本体总成', 'Bracket connecting plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5668', '20.04.06.01.01.02.06.02', NULL, '02', '侧滑门前端加强板本体', 'Bracket support plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5669', '20.04.06.01.01.02.06.03', NULL, '03', '滑门缓冲块上加强板总成', 'Reinforcing plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('567', '10.09.01.01.01.01', NULL, '01', '前轴', 'Front axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5670', '20.04.06.01.01.02.06.04', NULL, '04', '滑门缓冲块上加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5671', '20.04.06.01.01.02.07', NULL, '07', '滑门防撞梁', 'Reinforced plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5672', '20.04.06.01.01.02.08', NULL, '08', '侧滑门加强板总成', 'Front suspension mount assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5673', '20.04.06.01.01.02.08.01', NULL, '01', '侧滑门加强板本体', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5674', '20.04.06.01.01.02.08.98', NULL, '98', '紧固件', 'Bracket assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5675', '20.04.06.01.02', NULL, '02', '滑门锁总成', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5676', '20.04.06.01.02.01', NULL, '01', '滑门儿童锁', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5677', '20.04.06.01.02.02', NULL, '02', '滑门外扣手总成', 'Plate assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5678', '20.04.06.01.02.03', NULL, '03', '滑门内扣手', 'End plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5679', '20.04.06.01.02.04', NULL, '04', '滑门锁控制机构总成', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('568', '10.09.01.01.01.02', NULL, '02', '转向横拉杆臂', 'Steering tie rod arm', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5680', '20.04.06.01.02.05', NULL, '05', '滑门前锁总成', 'Fender welding sub-assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5681', '20.04.06.01.02.06', NULL, '06', '滑门后锁总成', 'Fender lower plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5682', '20.04.06.01.02.07', NULL, '07', '滑门下滑道限位锁总成', 'Reinforcing beam assembly component', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5683', '20.04.06.01.02.08', NULL, '08', '滑门锁扣', 'Reinforcing beam assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5684', '20.04.06.01.02.09', NULL, '09', '侧滑门内锁止拉线装饰件', 'Reinforcing beam sub-assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5685', '20.04.06.01.02.10', NULL, '10', '侧滑门内开手柄装饰盖', 'Reinforcing beam', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5686', '20.04.06.01.02.11', NULL, '11', '侧滑门拉线', 'Reinforcing piece', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5687', '20.04.06.01.02.12', NULL, '12', '侧滑门上辅助锁体', 'Reinforcing plate assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5688', '20.04.06.01.02.13', NULL, '13', '侧滑门上辅助锁栓', 'Reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5689', '20.04.06.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('569', '10.09.01.01.01.03', NULL, '03', '转向直拉杆臂', 'Steering drag link arm', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5690', '20.04.06.01.03', NULL, '03', '滑门上滑道后堵头总成', 'Front molding front lower plate assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5691', '20.04.06.01.03.01', NULL, '01', '支架', 'Front molding front lower plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5692', '20.04.06.01.03.02', NULL, '02', '滑门上滑道后堵头', 'Front fender reinforcing beam assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5693', '20.04.06.01.04', NULL, '04', '侧滑门滑道总成', 'Front fender reinforcing beam assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5694', '20.04.06.01.05', NULL, '05', '滑门防水膜', 'Front fender reinforcing beam sub-assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5695', '20.04.06.01.06', NULL, '06', '滑门内饰板', 'Front fender reinforcing beam', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5696', '20.04.06.01.07', NULL, '07', '滑门中滑道盖板', 'Front baffle assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5697', '20.04.06.01.08', NULL, '08', '滑门滑道滑轮机构总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5698', '20.04.06.01.09', NULL, '09', '滑门上滑道前堵', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5699', '20.04.06.01.10', NULL, '10', '滑门下滑道挡片', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('56A0C6A387494F0684A', '60.06.01.01.05.02', '', '02', '电压采集转接线束', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('57', '10.02.01.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('570', '10.09.01.01.01.04', NULL, '04', '转向节', 'Steering knuckle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5700', '20.04.06.01.11', NULL, '11', '滑门玻璃', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5701', '20.04.06.01.12', NULL, '12', '滑门框密封条', 'Sliding door frame seal strip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5702', '20.04.06.01.13', NULL, '13', '滑门上滑道密封条', 'Sliding door upper slide rail seal strip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5703', '20.04.06.01.14', NULL, '14', '滑门玻璃密封条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5704', '20.04.06.01.15', NULL, '15', '软垫', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5705', '20.04.06.01.16', NULL, '16', '滑门电控凸限位器总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5706', '20.04.06.01.17', NULL, '17', '滑门电控凹限位器总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5707', '20.04.06.01.18', NULL, '18', '滑门凸线束连接器孔堵', 'Sliding door convex wiring harness connector plug', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5708', '20.04.06.01.19', NULL, '19', '滑门凹线束连接器孔堵', 'Sliding door concave wiring harness connector plug', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5709', '20.04.06.01.20', NULL, '20', '车门补强片', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('571', '10.09.01.01.01.05', NULL, '05', '转向横拉杆总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5710', '20.04.06.01.21', NULL, '21', '车门安全标识', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5711', '20.04.06.01.22', NULL, '22', '侧滑门凹限位器', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5712', '20.04.06.01.23', NULL, '23', '侧滑门凸限位器', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5713', '20.04.06.01.24', NULL, '24', '滑门防脱钩总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5714', '20.04.06.01.24.01', NULL, '01', '滑门防脱钩装饰件', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5715', '20.04.06.01.24.02', NULL, '02', '滑门防脱钩座', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5716', '20.04.06.01.24.03', NULL, '03', '滑门防脱钩', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5717', '20.04.06.01.25', NULL, '25', '侧滑门限位弹片总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5718', '20.04.06.01.26', NULL, '26', '侧滑门防擦条', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5719', '20.04.06.01.27', NULL, '27', '中滑道端部装饰件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('572', '10.09.01.01.01.05.01', NULL, '01', '横拉杆杆身', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5720', '20.04.06.01.29', NULL, '29', '滑门滑轮机构', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5721', '20.04.06.01.30', NULL, '30', '孔贴', '12', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5722', '20.04.06.01.31', NULL, '31', '侧滑门限位器总成', '12', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5723', '20.04.06.01.32', NULL, '32', '侧滑门限位器安装总成', '13', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5724', '20.04.06.01.33', NULL, '33', '侧滑门挡水条', '13', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5725', '20.04.06.01.34', NULL, '34', '定位支架卡座', '14', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5726', '20.04.06.01.35', NULL, '35', '缓冲块', '14', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5727', '20.04.06.01.38', NULL, '38', '滑门线束开关', '16', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5728', '20.04.06.01.39', NULL, '39', '紧急出口标识', '16', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5729', '20.04.06.01.40', NULL, '40', '侧滑门其他附件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('573', '10.09.01.01.01.05.02', NULL, '02', '球头总成', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5730', '20.04.06.01.43', NULL, '43', '滑门玻璃升降器总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5731', '20.04.06.01.97', NULL, '97', '安装图', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5732', '20.04.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5733', '20.04.06.02', NULL, '02', '侧滑门盲窗加强板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5734', '20.05', NULL, '05', '车身本体', 'Body shell', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5735', '20.05.01', NULL, '01', '车身本体总成', 'Body shell assembly', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5736', '20.05.01.01', NULL, '01', '白车身调整总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5737', '20.05.01.01.01', NULL, '01', '白车身焊接总成', 'Body shell weldment assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5738', '20.05.01.01.01.01', NULL, '01', '下车体焊接总成', 'Lower body welding assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5739', '20.05.01.01.01.01.01', NULL, '01', '前围焊接总成', 'Front wall weldment assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('574', '10.09.01.01.01.05.03', NULL, '03', '直拉杆杆身', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5740', '20.05.01.01.01.01.01.01', NULL, '01', '前围侧板焊接总成', 'Front molding side plate welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5741', '20.05.01.01.01.01.01.01.01', NULL, '01', '挡泥板总成', 'Fender assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5742', '20.05.01.01.01.01.01.01.01.01', NULL, '01', '挡泥板分总成', 'Fender sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5743', '20.05.01.01.01.01.01.01.01.01.01', NULL, '01', '挡泥板', 'Left upper mudguard for engine', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5744', '20.05.01.01.01.01.01.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5745', '20.05.01.01.01.01.01.01.01.02', NULL, '02', '前机舱内角板', 'Front cabin gusset', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5746', '20.05.01.01.01.01.01.01.01.03', NULL, '03', '托架总成', 'Bracket assembly ', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5747', '20.05.01.01.01.01.01.01.01.03.01', NULL, '01', '托架分总成', 'Bracket assembly ', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5748', '20.05.01.01.01.01.01.01.01.03.01.01', NULL, '01', '托架小总成', 'Bracket assembly ', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5749', '20.05.01.01.01.01.01.01.01.03.01.01.01', NULL, '01', '托架', 'Bracket', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('575', '10.09.01.01.01.06', NULL, '06', '转向节主销', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5750', '20.05.01.01.01.01.01.01.01.03.01.02', NULL, '02', '托架连接板', 'Bracket connecting plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5751', '20.05.01.01.01.01.01.01.01.03.02', NULL, '02', '托架支撑板', 'Bracket support plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5752', '20.05.01.01.01.01.01.01.01.04', NULL, '04', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5753', '20.05.01.01.01.01.01.01.01.04.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5754', '20.05.01.01.01.01.01.01.01.05', NULL, '05', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5755', '20.05.01.01.01.01.01.01.01.06', NULL, '06', '前悬置安装座总成', 'Front suspension mount assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5756', '20.05.01.01.01.01.01.01.01.06.01', NULL, '01', '支架总成', 'Bracket assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5757', '20.05.01.01.01.01.01.01.01.06.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5758', '20.05.01.01.01.01.01.01.01.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5759', '20.05.01.01.01.01.01.01.01.06.02', NULL, '02', '端板总成', 'Plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('576', '10.09.01.01.01.07', NULL, '07', '止推轴承', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5760', '20.05.01.01.01.01.01.01.01.06.02.01', NULL, '01', '端板', 'End plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5761', '20.05.01.01.01.01.01.01.01.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5762', '20.05.01.01.01.01.01.01.01.06.03', NULL, '03', '挡泥板焊接分总成', 'Fender welding sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5763', '20.05.01.01.01.01.01.01.01.06.03.01', NULL, '01', '挡泥下板', 'Fender lower plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5764', '20.05.01.01.01.01.01.01.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5765', '20.05.01.01.01.01.01.01.02', NULL, '02', '加强梁总成组件', 'Reinforcing beam assembly component', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5766', '20.05.01.01.01.01.01.01.02.01', NULL, '01', '加强梁总成', 'Reinforcing beam assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5767', '20.05.01.01.01.01.01.01.02.01.01', NULL, '01', '加强梁分总成', 'Reinforcing beam sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5768', '20.05.01.01.01.01.01.01.02.01.01.01', NULL, '01', '加强梁', 'Reinforcing beam', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5769', '20.05.01.01.01.01.01.01.02.01.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('577', '10.09.01.01.01.08', NULL, '08', '转向节衬套', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5770', '20.05.01.01.01.01.01.01.02.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5771', '20.05.01.01.01.01.01.01.02.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5772', '20.05.01.01.01.01.01.01.02.02.02', NULL, '02', '前围前部下端板总成', 'Front molding front lower plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5773', '20.05.01.01.01.01.01.01.02.02.02.01', NULL, '01', '前围前部下端板', 'Front molding front lower plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5773221213104A55887', '30.05.05.23', '', '23', '传感器', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5774', '20.05.01.01.01.01.01.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5775', '20.05.01.01.01.01.01.01.03', NULL, '03', '前翼子板加强梁总成合件', 'Front fender reinforcing beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5776', '20.05.01.01.01.01.01.01.03.01', NULL, '01', '前翼子板加强梁总成', 'Front fender reinforcing beam assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5777', '20.05.01.01.01.01.01.01.03.01.01', NULL, '01', '前翼子板加强梁分总成', 'Front fender reinforcing beam sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5778', '20.05.01.01.01.01.01.01.03.01.01.01', NULL, '01', '前翼子板加强梁', 'Front fender reinforcing beam', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5779', '20.05.01.01.01.01.01.02', NULL, '02', '前围挡板总成', 'Front baffle assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('578', '10.09.01.01.01.09', NULL, '09', '滚针轴承', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5780', '20.05.01.01.01.01.01.02.01', NULL, '01', '前围挡板分总成', 'Front baffle sub-assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5781', '20.05.01.01.01.01.01.02.01.01', NULL, '01', '前围挡板分总成1', 'Front baffle sub-assembly 1', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5782', '20.05.01.01.01.01.01.02.01.01.01', NULL, '01', '前围挡板', 'Front baffle', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5783', '20.05.01.01.01.01.01.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5784', '20.05.01.01.01.01.01.02.01.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5785', '20.05.01.01.01.01.01.02.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5786', '20.05.01.01.01.01.01.02.01.04', NULL, '04', '前围上横梁总成', 'Upper beam assembly, front wall', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5787', '20.05.01.01.01.01.01.02.01.04.01', NULL, '01', '前围上横梁', 'Front upper beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5788', '20.05.01.01.01.01.01.02.01.05', NULL, '05', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5789', '20.05.01.01.01.01.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('579', '10.09.01.01.01.10', NULL, '10', '转向直拉杆总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5790', '20.05.01.01.01.01.01.02.02', NULL, '02', '前围下横梁总成', 'Front lower beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5791', '20.05.01.01.01.01.01.02.02.01', NULL, '01', '前围下横梁分总成', 'Front lower beam sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5792', '20.05.01.01.01.01.01.02.02.01.01', NULL, '01', '前围下横梁', 'Front lower beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5793', '20.05.01.01.01.01.01.02.02.02', NULL, '02', '中冷器安装板总成', 'Intercooler mounting plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5794', '20.05.01.01.01.01.01.02.02.02.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5795', '20.05.01.01.01.01.01.02.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5796', '20.05.01.01.01.01.01.02.03', NULL, '03', '前围上横梁总成', 'Upper beam assembly, front wall', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5797', '20.05.01.01.01.01.01.02.03.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5798', '20.05.01.01.01.01.01.02.03.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5799', '20.05.01.01.01.01.01.02.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('57D40660FE9041E9A6A', '60.06.01.01.10.01', '', '01', '绝缘橡胶条-长', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('58', '10.02.01.07', NULL, '07', '钢管', 'Steel pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('580', '10.09.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5800', '20.05.01.01.01.01.01.02.03.02', NULL, '02', '前围上横梁分总成', 'Front upper beam sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5801', '20.05.01.01.01.01.01.02.03.02.01', NULL, '01', '前围上横梁', 'Front upper beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5802', '20.05.01.01.01.01.01.02.04', NULL, '04', '前围挡板总成', 'Front baffle assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5803', '20.05.01.01.01.01.01.02.04.01', NULL, '01', '前围挡板总成1', 'Front baffle assembly 1', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5804', '20.05.01.01.01.01.01.02.04.01.01', NULL, '01', '前围挡板', 'Front baffle', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5805', '20.05.01.01.01.01.01.02.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5806', '20.05.01.01.01.01.01.02.04.02', NULL, '02', '挡板加强件', 'Baffle reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5807', '20.05.01.01.01.01.01.02.04.03', NULL, '03', '前围上横梁总成', 'Upper beam assembly, front wall', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5808', '20.05.01.01.01.01.01.02.04.03.01', NULL, '01', '前围上横梁', 'Front upper beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5809', '20.05.01.01.01.01.01.02.04.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('581', '10.09.01.01.02', NULL, '02', '前轴轮毂总成', 'Assembly of front axle hub', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5810', '20.05.01.01.01.01.01.02.04.05', NULL, '05', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5811', '20.05.01.01.01.01.01.02.04.05.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5812', '20.05.01.01.01.01.01.02.04.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5813', '20.05.01.01.01.01.01.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5814', '20.05.01.01.01.01.01.02.05', NULL, '05', '前围中间支撑梁总成', 'Front molding intermediate support beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5815', '20.05.01.01.01.01.01.02.05.01', NULL, '01', '前围中间支撑梁', 'Front molding intermediate support beam', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5816', '20.05.01.01.01.01.01.02.05.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5817', '20.05.01.01.01.01.01.02.05.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5818', '20.05.01.01.01.01.01.02.06', NULL, '06', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5819', '20.05.01.01.01.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('582', '10.09.01.01.02.01', NULL, '01', '前轮毂', 'Front hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5820', '20.05.01.01.01.01.01.03', NULL, '03', '前围板焊接总成', 'Front wall plate welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5821', '20.05.01.01.01.01.01.03.01', NULL, '01', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5822', '20.05.01.01.01.01.01.03.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5823', '20.05.01.01.01.01.01.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5824', '20.05.01.01.01.01.01.03.02', NULL, '02', '前围板中间纵梁总成', 'Front molding intermediate longitudinal beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5825', '20.05.01.01.01.01.01.03.02.01', NULL, '01', '前围板中间纵梁', 'Front molding intermediate longitudinal beam', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5826', '20.05.01.01.01.01.01.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5827', '20.05.01.01.01.01.01.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5828', '20.05.01.01.01.01.01.03.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5829', '20.05.01.01.01.01.01.03.05', NULL, '05', '前围板焊接分总成', 'Front wall plate weldment subassembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('583', '10.09.01.01.02.02', NULL, '02', '制动鼓', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5830', '20.05.01.01.01.01.01.03.05.01', NULL, '01', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5831', '20.05.01.01.01.01.01.03.05.02', NULL, '02', '前围板', 'Front panel', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5832', '20.05.01.01.01.01.02', NULL, '02', '后地板焊接总成', 'Rear floor weldment assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5833', '20.05.01.01.01.01.02.01', NULL, '01', '支架总成', 'Bracket assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5834', '20.05.01.01.01.01.02.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5835', '20.05.01.01.01.01.02.01.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5836', '20.05.01.01.01.01.02.02', NULL, '02', '后地板焊接分总成', 'Rear floor welding sub-assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5837', '20.05.01.01.01.01.02.02.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5838', '20.05.01.01.01.01.02.02.01.01', NULL, '01', '后座椅安装板总成', 'Rear seat mounting plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5839', '20.05.01.01.01.01.02.02.01.01.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('584', '10.09.01.01.02.03', NULL, '03', '制动盘', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5840', '20.05.01.01.01.01.02.02.01.01.02', NULL, '02', '后座椅安装锁钩', 'Rear seat mounting hook', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5841', '20.05.01.01.01.01.02.02.01.02', NULL, '02', '后地板上横挡板', 'Rear floor upper lateral baffle', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5842', '20.05.01.01.01.01.02.02.01.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5843', '20.05.01.01.01.01.02.02.01.04', NULL, '04', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5844', '20.05.01.01.01.01.02.02.01.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5845', '20.05.01.01.01.01.02.02.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5846', '20.05.01.01.01.01.02.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5847', '20.05.01.01.01.01.02.02.02', NULL, '02', '后地板焊接分总成1', 'Rear floor welding sub-assembly 1', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5848', '20.05.01.01.01.01.02.02.02.01', NULL, '01', '后地板', 'Rear floor', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5849', '20.05.01.01.01.01.02.02.02.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('585', '10.09.01.01.02.04', NULL, '04', '轮毂内轴承', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5850', '20.05.01.01.01.01.02.02.02.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5851', '20.05.01.01.01.01.02.02.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5852', '20.05.01.01.01.01.02.02.03', NULL, '03', '螺母板总成', 'Nut plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5853', '20.05.01.01.01.01.02.02.03.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5854', '20.05.01.01.01.01.02.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5855', '20.05.01.01.01.01.02.03', NULL, '03', '支撑板', 'Support plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5856', '20.05.01.01.01.01.02.04', NULL, '04', '地板后边纵梁总成', 'Floor rear beam assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5857', '20.05.01.01.01.01.02.04.01', NULL, '01', '后边纵梁', 'Rear beam', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5858', '20.05.01.01.01.01.02.04.02', NULL, '02', '后边纵梁后连接板', 'Rear beam member rear connecting plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5859', '20.05.01.01.01.01.02.05', NULL, '05', '地板后横梁总成', 'Floor rear cross member assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('586', '10.09.01.01.02.05', NULL, '05', '轮毂外轴承', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5860', '20.05.01.01.01.01.02.05.01', NULL, '01', '地板后横梁主梁总成', 'Floor rear beam main beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5861', '20.05.01.01.01.01.02.05.01.01', NULL, '01', '地板后横梁主梁分总成', 'Floor rear beam main beam sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5862', '20.05.01.01.01.01.02.05.01.01.01', NULL, '01', '地板后横梁主梁', 'Floor rear beam main beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5863', '20.05.01.01.01.01.02.05.01.02', NULL, '02', '地板后横梁衬板', 'Floor rear beam liner', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5864', '20.05.01.01.01.01.02.05.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5865', '20.05.01.01.01.01.02.05.02.01', NULL, '01', '后悬置中间支撑总成', 'Rear suspension intermediate support assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5866', '20.05.01.01.01.01.02.05.02.01.01', NULL, '01', '悬置孔支撑套', 'Suspension hole support bushing', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5867', '20.05.01.01.01.01.02.05.03', NULL, '03', '侧围后部连接板', 'Side molding rear connecting plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5868', '20.05.01.01.01.01.02.05.04', NULL, '04', '地板后纵梁总成', 'Floor rear beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5869', '20.05.01.01.01.01.02.05.04.01', NULL, '01', '地板后纵梁', 'Floor rear beam', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('587', '10.09.01.01.02.06', NULL, '06', '密封垫', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5870', '20.05.01.01.01.01.02.05.04.02', NULL, '02', '螺母板总成', 'Nut plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5871', '20.05.01.01.01.01.02.05.04.03', NULL, '03', '地板后纵梁分总成', 'Floor rear beam sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5872', '20.05.01.01.01.01.02.05.04.03.01', NULL, '01', '地板后纵梁', 'Floor rear beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5873', '20.05.01.01.01.01.03', NULL, '03', '前地板焊接总成', 'Front floor weldment assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5874', '20.05.01.01.01.01.03.01', NULL, '01', '前地板焊接分总成', 'Front floor welding sub-assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5875', '20.05.01.01.01.01.03.01.01', NULL, '01', '前地板总成', 'Front floor assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5876', '20.05.01.01.01.01.03.01.01.01', NULL, '01', '前地板', 'Front floor', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5877', '20.05.01.01.01.01.03.01.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5878', '20.05.01.01.01.01.03.01.02.01', NULL, '01', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5879', '20.05.01.01.01.01.03.01.02.01.01', NULL, '01', '端面凸焊螺栓', 'End face projection welding bolt', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('588', '10.09.01.01.02.07', NULL, '07', '车轮螺栓', 'Wheel bolt', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5880', '20.05.01.01.01.01.03.01.02.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5881', '20.05.01.01.01.01.03.01.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5882', '20.05.01.01.01.01.03.01.04', NULL, '04', '座椅安装梁总成', 'Seat mounting beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5883', '20.05.01.01.01.01.03.01.04.01', NULL, '01', '座椅安装梁分总成', 'Seat mounting beam sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5884', '20.05.01.01.01.01.03.01.04.01.01', NULL, '01', '座椅安装梁', 'Seat mounting beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5885', '20.05.01.01.01.01.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5886', '20.05.01.01.01.01.03.02', NULL, '02', '地板前悬置点加强梁总成', 'Floor front suspension point reinforcing beam assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5887', '20.05.01.01.01.01.03.02.01', NULL, '01', '前悬置纵梁总成', 'Front suspension longitudinal beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5888', '20.05.01.01.01.01.03.02.01.01', NULL, '01', '前悬置纵梁分总成', 'Front suspension longitudinal beam sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5889', '20.05.01.01.01.01.03.02.01.01.01', NULL, '01', '前悬置纵梁', 'Front suspension longitudinal beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('589', '10.09.01.01.02.08', NULL, '08', '车轮螺母', 'Wheel nut', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5890', '20.05.01.01.01.01.03.02.01.02', NULL, '02', '前边纵梁总成', 'Front longitudinal beam assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5891', '20.05.01.01.01.01.03.02.01.02.01', NULL, '01', '前边纵梁', 'Front longitudinal beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5892', '20.05.01.01.01.01.03.02.02', NULL, '02', '前悬置横梁总成', 'Front suspension beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5893', '20.05.01.01.01.01.03.02.02.01', NULL, '01', '前悬置横梁', 'Front suspension beam', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5894', '20.05.01.01.01.01.03.02.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5895', '20.05.01.01.01.01.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5896', '20.05.01.01.01.01.03.03', NULL, '03', '地板前部中间梁总成', 'Floor front intermediate beam assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5897', '20.05.01.01.01.01.03.03.01', NULL, '01', '地板第二横梁总成', 'Floor second beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5898', '20.05.01.01.01.01.03.03.01.01', NULL, '01', '地板第二横梁中间梁总成', 'Floor second beam intermediate beam assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5899', '20.05.01.01.01.01.03.03.01.01.01', NULL, '01', '地板第二横梁中间梁', 'Floor second beam intermediate beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('59', '10.02.01.08', NULL, '08', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('590', '10.09.01.01.02.09', NULL, '09', 'ABS 探头总成', 'ABS probe assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5900', '20.05.01.01.01.01.03.03.01.02', NULL, '02', '横梁连接梁总成', 'Beam connecting beam assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5901', '20.05.01.01.01.01.03.03.01.02.01', NULL, '01', '横梁连接梁', 'Beam connecting beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5902', '20.05.01.01.01.01.03.03.01.02.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5903', '20.05.01.01.01.01.03.03.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5904', '20.05.01.01.01.01.03.03.01.03', NULL, '03', '地板第二横梁中段加强板总成', 'Floor second beam middle section reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5905', '20.05.01.01.01.01.03.03.01.03.01', NULL, '01', '地板第二横梁衬板总成', 'Floor second beam liner assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5906', '20.05.01.01.01.01.03.03.01.03.01.01', NULL, '01', '地板第二横梁衬板', 'Floor second beam liner', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5907', '20.05.01.01.01.01.03.03.01.03.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5908', '20.05.01.01.01.01.03.03.01.03.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5909', '20.05.01.01.01.01.03.03.01.03.03', NULL, '03', '地板前纵梁', 'Floor front rail', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('591', '10.09.01.01.02.10', NULL, '10', 'ABS 衬套', 'ABS bushing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5910', '20.05.01.01.01.01.03.03.01.04', NULL, '04', '地板前纵梁后端部连接件', 'Floor front rail rear end connecting piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5911', '20.05.01.01.01.01.03.03.02', NULL, '02', '前地板纵梁总成', 'Front floor rail assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5912', '20.05.01.01.01.01.03.03.02.01', NULL, '01', '地板前纵梁总成', 'Floor front rail assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5913', '20.05.01.01.01.01.03.03.02.02', NULL, '02', '地板前纵梁后端部连接件', 'Floor front rail rear end connecting piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5914', '20.05.01.01.01.01.04', NULL, '04', '下车体焊接分总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5915', '20.05.01.01.01.01.04.01', NULL, '01', '下车体焊接前部总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5916', '20.05.01.01.01.01.04.01.01', NULL, '01', '前地板焊接总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5917', '20.05.01.01.01.01.04.01.01.01', NULL, '01', '发动机室前板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5918', '20.05.01.01.01.01.04.01.01.01.01', NULL, '01', '发动机室前板焊接总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5919', '20.05.01.01.01.01.04.01.01.01.01.01', NULL, '01', '发动机室前板组件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('592', '10.09.01.01.02.11', NULL, '11', 'ABS 齿圈', 'ABS gear ring', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5920', '20.05.01.01.01.01.04.01.01.01.01.01.01', NULL, '01', '发动机室前板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5921', '20.05.01.01.01.02', NULL, '02', '前风挡下横梁总成', 'Front windshield lower beam assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5922', '20.05.01.01.01.02.01', NULL, '01', '前风挡下横梁主件总成', 'Front windshield lower beam main part assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5923', '20.05.01.01.01.02.01.01', NULL, '01', '前风挡下横梁上板总成', 'Front windshield lower beam upper plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5924', '20.05.01.01.01.02.01.01.01', NULL, '01', '前风挡下横梁上板分总成', 'Front windshield lower beam upper plate sub-assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5925', '20.05.01.01.01.02.01.01.01.01', NULL, '01', '前风挡下横梁上板', 'Front windshield lower beam upper plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5926', '20.05.01.01.01.02.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5927', '20.05.01.01.01.02.01.01.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5928', '20.05.01.01.01.02.01.01.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5929', '20.05.01.01.01.02.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('593', '10.09.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5930', '20.05.01.01.01.02.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5931', '20.05.01.01.01.02.01.01.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5932', '20.05.01.01.01.02.01.02', NULL, '02', '前风挡下横梁下板总成', 'Front windshield lower beam lower plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5933', '20.05.01.01.01.02.01.02.01', NULL, '01', '前风挡下横梁下板分总成', 'Front windshield lower beam lower plate sub-assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5934', '20.05.01.01.01.02.01.02.01.01', NULL, '01', '前风挡下横梁下板', 'Front windshield lower beam lower plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5935', '20.05.01.01.01.02.01.02.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5936', '20.05.01.01.01.02.01.02.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5937', '20.05.01.01.01.02.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5938', '20.05.01.01.01.02.02', NULL, '02', '前风挡下横梁端板总成', 'Front windshield lower beam plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5939', '20.05.01.01.01.02.02.01', NULL, '01', '螺母板总成', 'Nut plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('594', '10.09.01.01.03', NULL, '03', '前轴制动器总成', 'Front axle brake assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5940', '20.05.01.01.01.02.02.01.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5941', '20.05.01.01.01.02.02.01.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5942', '20.05.01.01.01.02.02.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5943', '20.05.01.01.01.02.02.03', NULL, '03', '翼子板支架4总成', 'End plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5944', '20.05.01.01.01.02.02.04', NULL, '04', '端板', 'End plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5945', '20.05.01.01.01.03', NULL, '03', '侧围焊接总成', 'Side molding welding assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5946', '20.05.01.01.01.03.01', NULL, '01', '侧围外板焊接总成', 'Side molding outer plate welding assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5947', '20.05.01.01.01.03.01.01', NULL, '01', '支架总成', 'Bracket assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5948', '20.05.01.01.01.03.01.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5949', '20.05.01.01.01.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('595', '10.09.01.01.03.01', NULL, '01', '间隙调整臂', 'Clearance adjuster', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5950', '20.05.01.01.01.03.01.02', NULL, '02', '侧围外板', 'Side body outer plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5951', '20.05.01.01.01.03.01.03', NULL, '03', 'C柱内板与加强板焊接总成', 'C-pillar inner plate and reinforcing plate welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5952', '20.05.01.01.01.03.01.03.01', NULL, '01', 'C柱内板焊接总成', 'C-pillar inner plate welding assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5953', '20.05.01.01.01.03.01.03.01.01', NULL, '01', 'C柱内板总成', 'C-pillar inner plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5954', '20.05.01.01.01.03.01.03.01.01.01', NULL, '01', 'C柱内板', 'C-pillar inner plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5955', '20.05.01.01.01.03.01.03.01.02', NULL, '02', '后风挡下横梁', 'Lower beam for rear windshield', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5956', '20.05.01.01.01.03.01.03.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5957', '20.05.01.01.01.03.01.03.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5958', '20.05.01.01.01.03.01.03.02.01.01', NULL, '01', '螺母板总成', 'Nut plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5959', '20.05.01.01.01.03.01.03.02.01.01.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('596', '10.09.01.01.03.02', NULL, '02', '制动气室', 'Diaphragm brake cylinder', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5960', '20.05.01.01.01.03.01.03.02.01.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5961', '20.05.01.01.01.03.01.03.02.01.98', NULL, '98', '螺母板', 'Nut plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5962', '20.05.01.01.01.03.01.04', NULL, '04', 'C柱下封板', 'C-pillar lower sealing plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5963', '20.05.01.01.01.03.01.05', NULL, '05', '侧围前部加强板组件', 'Side molding front reinforcing plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5964', '20.05.01.01.01.03.01.05.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5965', '20.05.01.01.01.03.01.05.02', NULL, '02', '前风窗下横梁连接件', 'Front windshield lower beam connecting piece', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5966', '20.05.01.01.01.03.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5967', '20.05.01.01.01.03.01.06', NULL, '06', 'A柱加强板焊接总成', 'A-pillar reinforcing plate welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5968', '20.05.01.01.01.03.01.06.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5969', '20.05.01.01.01.03.01.06.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('597', '10.09.01.01.03.03', NULL, '03', '液压制动分泵', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5970', '20.05.01.01.01.03.01.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5971', '20.05.01.01.01.03.01.06.02', NULL, '02', '螺母板总成', 'Nut plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5972', '20.05.01.01.01.03.01.06.02.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5973', '20.05.01.01.01.03.01.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5974', '20.05.01.01.01.03.01.07', NULL, '07', 'B柱加强板与门槛加强梁焊接总成', 'B-pillar reinforcing plate and sill reinforcing beam welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5975', '20.05.01.01.01.03.01.07.01', NULL, '01', '门槛加强梁总成', 'Sill reinforcing beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5976', '20.05.01.01.01.03.01.07.01.01', NULL, '01', '门槛加强梁分总成', 'Sill reinforcing beam sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5977', '20.05.01.01.01.03.01.07.01.01.01', NULL, '01', '门槛加强梁', 'Sill reinforcing beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5978', '20.05.01.01.01.03.01.07.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5979', '20.05.01.01.01.03.01.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('598', '10.09.01.01.03.04', NULL, '04', '制动底板', 'Brake base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5980', '20.05.01.01.01.03.01.07.02', NULL, '02', '加强板焊接总成', 'Reinforcing plate welding assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5981', '20.05.01.01.01.03.01.07.02.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5982', '20.05.01.01.01.03.01.07.02.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5983', '20.05.01.01.01.03.01.07.02.01.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5984', '20.05.01.01.01.03.01.07.02.01.03', NULL, '03', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5985', '20.05.01.01.01.03.01.07.02.01.03.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5986', '20.05.01.01.01.03.02', NULL, '02', '侧围中间内板焊接总成', 'Side molding intermediate inner plate welding assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5987', '20.05.01.01.01.03.02.01', NULL, '01', '上门框内板焊接总成', 'Upper door frame inner panel welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5988', '20.05.01.01.01.03.02.01.01', NULL, '01', '上门框内板', 'Upper door frame inner panel', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5989', '20.05.01.01.01.03.02.02', NULL, '02', 'B柱下内板总成', 'B-pillar lower inner panel assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('599', '10.09.01.01.03.05', NULL, '05', '制动凸轮轴', 'Brake camshaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5990', '20.05.01.01.01.03.02.02.01', NULL, '01', 'B柱下内板', 'B-pillar lower inner panel', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5991', '20.05.01.01.01.03.02.03', NULL, '03', '门槛内板', 'Sill inner panel', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5992', '20.05.01.01.01.03.02.04', NULL, '04', '支架总成', 'Bracket assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5993', '20.05.01.01.01.03.02.05', NULL, '05', 'B柱上内板', 'B-pillar upper inner panel', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5994', '20.05.01.01.01.03.03', NULL, '03', 'A柱内板焊接总成', 'A-pillar inner plate welding assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5995', '20.05.01.01.01.03.03.01', NULL, '01', 'A柱上内板焊接总成', 'A-pillar upper inner plate welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5996', '20.05.01.01.01.03.03.01.01', NULL, '01', 'A柱上内板', 'A-pillar upper inner panel', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5997', '20.05.01.01.01.03.03.01.02', NULL, '02', '顶盖第一横梁段总成', 'First beam for roof cover assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5998', '20.05.01.01.01.03.03.01.02.01', NULL, '01', '顶盖第一横梁段', 'First beam for roof cover', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5999', '20.05.01.01.01.03.03.01.03', NULL, '03', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('5A1AD6521A6E4FB2B43', '30.06.07.06', '', '06', '方管', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5A773C61160A48958CE', '10.03.01.26.04', '', '04', '加油管', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5ADEE674D3974469A2F', '10.03.01.30', '', '30', '举升阀总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5B6C9E1CD0D1402DBDA', '60.06.01.03.01.03', '', '03', 'BMU PCB', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5CD14904E605401B8A7', '20.02.02.06', '', '06', '发动机前隔热垫', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5D3DC0DDCC3247528F1', '10.03.01.31.02', '', '02', '橡胶垫', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5DB5F98ED2434A2A911', '20.04.04.01.01.02', '', '02', '前舱盖左侧铰链总成', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5E353FDB63944BEC9D1', '20.04.04.01.01.01.01', '', '01', '前舱盖外板', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('5FAE03253C8C469D803', '30.06.07', '', '07', '简易驾驶平台', '', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6', '10.01.01.02', NULL, '02', '风扇', 'Main fan', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('60', '10.02.01.09', NULL, '09', '软管', 'Hose', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('600', '10.09.01.01.03.06', NULL, '06', '气室支架', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6000', '20.05.01.01.01.03.03.01.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6001', '20.05.01.01.01.03.03.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6002', '20.05.01.01.01.03.03.02', NULL, '02', 'A柱下内板焊接总成', 'A-pillar lower inner plate welding assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6003', '20.05.01.01.01.03.03.02.01', NULL, '01', 'A柱下内板总成', 'A-pillar lower inner plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6004', '20.05.01.01.01.03.03.02.01.01', NULL, '01', 'A柱下内板', 'A-pillar lower inner plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6005', '20.05.01.01.01.03.03.02.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6006', '20.05.01.01.01.03.03.02.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6007', '20.05.01.01.01.03.03.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6008', '20.05.01.01.01.03.03.02.03', NULL, '03', 'C柱内板焊接总成', 'C-pillar inner plate welding assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6009', '20.05.01.01.01.03.03.02.03.01', NULL, '01', 'C柱内板总成', 'C-pillar inner plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('601', '10.09.01.01.03.07', NULL, '07', '制动蹄总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6010', '20.05.01.01.01.03.03.02.03.01.01', NULL, '01', 'C柱内板', 'C-pillar inner plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6011', '20.05.01.01.01.03.03.02.03.02', NULL, '02', '后风挡下横梁', 'Lower beam for rear windshield', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6012', '20.05.01.01.01.03.03.02.04', NULL, '04', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6013', '20.05.01.01.01.03.03.02.04.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6014', '20.05.01.01.01.03.03.02.04.02', NULL, '02', '螺母板总成', 'Nut plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6015', '20.05.01.01.01.03.03.02.04.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6016', '20.05.01.01.01.03.03.02.04.03', NULL, '03', '螺母板总成', 'Nut plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6017', '20.05.01.01.01.03.03.02.04.03.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6018', '20.05.01.01.01.03.03.02.04.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6019', '20.05.01.01.01.03.03.02.05', NULL, '05', '前风窗下横梁连接件', 'Front windshield lower beam connecting piece', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('602', '10.09.01.01.03.07.01', NULL, '01', '制动摩擦片', 'Brake friction plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6020', '20.05.01.01.01.03.03.03', NULL, '03', '支架总成', 'Bracket assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6021', '20.05.01.01.01.03.03.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6022', '20.05.01.01.01.03.03.03.02', NULL, '02', '螺母板总成', 'Nut plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6023', '20.05.01.01.01.03.03.03.02.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6024', '20.05.01.01.01.03.03.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6025', '20.05.01.01.01.03.03.03.03', NULL, '03', '门槛加强梁总成', 'Sill reinforcing beam assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6026', '20.05.01.01.01.03.03.03.03.01', NULL, '01', '门槛加强梁总成1', 'Sill reinforcing beam', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6027', '20.05.01.01.01.03.03.03.03.01.01', NULL, '01', '门槛加强梁', 'Sill reinforcing beam', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6028', '20.05.01.01.01.03.03.03.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6029', '20.05.01.01.01.03.03.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('603', '10.09.01.01.03.07.02', NULL, '02', '制动蹄', 'Brake shoe', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6030', '20.05.01.01.01.03.03.03.04', NULL, '04', 'B柱加强板焊接总成', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6031', '20.05.01.01.01.03.03.03.04.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6032', '20.05.01.01.01.03.03.03.04.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6033', '20.05.01.01.01.03.03.03.04.01.02', NULL, '02', '螺母板总成', 'Nut plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6034', '20.05.01.01.01.03.03.03.04.01.02.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6035', '20.05.01.01.01.03.03.03.04.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6036', '20.05.01.01.01.03.03.03.04.01.03', NULL, '03', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6036B206B2544C82A01', '20.04.04.01.01.01.02.05.02', '', '02', '前舱盖锁钩', '', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6037', '20.05.01.01.01.03.03.03.04.01.03.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6038', '20.05.01.01.01.03.03.03.04.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6039', '20.05.01.01.01.03.03.03.04.01.04', NULL, '04', '螺母板总成', 'Nut plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('604', '10.09.01.01.03.08', NULL, '08', '蹄片磨损报警装置', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6040', '20.05.01.01.01.03.03.03.04.01.04.01', NULL, '01', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6041', '20.05.01.01.01.03.03.03.04.01.04.98', NULL, '98', '螺母板', 'Nut plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6042', '20.05.01.01.01.03.03.03.05', NULL, '05', '上门框内板', 'Upper door frame inner panel', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6043', '20.05.01.01.01.03.03.03.06', NULL, '06', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6044', '20.05.01.01.01.03.03.03.06.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6045', '20.05.01.01.01.03.03.03.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6046', '20.05.01.01.01.03.03.03.07', NULL, '07', 'B柱下内板', 'B-pillar lower inner panel', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6047', '20.05.01.01.01.03.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6048', '20.05.01.01.01.03.03.04', NULL, '04', '支架总成', 'Bracket assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6049', '20.05.01.01.01.03.03.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('605', '10.09.01.01.03.09', NULL, '09', '回位弹簧', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6050', '20.05.01.01.01.03.03.04.02', NULL, '02', 'A柱上内板', 'A-pillar upper inner panel', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6051', '20.05.01.01.01.03.03.04.03', NULL, '03', '顶盖第一横梁段总成', 'First beam for roof cover assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6052', '20.05.01.01.01.03.03.04.03.01', NULL, '01', '顶盖第一横梁段', 'First beam for roof cover', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6053', '20.05.01.01.01.03.03.04.04', NULL, '04', 'A柱下内板总成', 'A-pillar lower inner plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6054', '20.05.01.01.01.03.03.04.04.01', NULL, '01', 'A柱下内板', 'A-pillar lower inner plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6055', '20.05.01.01.01.03.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6056', '20.05.01.01.01.04', NULL, '04', '车身后围焊接总成', 'Body rear molding welding assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6057', '20.05.01.01.01.04.01', NULL, '01', '后围板', 'Rear wall plate ', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6058', '20.05.01.01.01.04.02', NULL, '02', '后风挡下横梁中段', 'Middle section of the lower beam for rear windshield', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6059', '20.05.01.01.01.04.03', NULL, '03', '后围板横梁', 'Rear panel beam', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('606', '10.09.01.01.03.10', NULL, '10', '回位弹簧定位销', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6060', '20.05.01.01.01.04.04', NULL, '04', '后座椅安装板总成', 'Rear seat mounting plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6061', '20.05.01.01.01.04.04.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6062', '20.05.01.01.01.04.04.02', NULL, '02', '座椅安装锁钩', 'Seat mounting hook', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6063', '20.05.01.01.01.04.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6064', '20.05.01.01.01.04.05', NULL, '05', '后围护板安装板总成', 'Rear guard mounting plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6065', '20.05.01.01.01.04.05.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6066', '20.05.01.01.01.04.05.02', NULL, '02', '护板安装锁钩', 'Guard plate mounting hook', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6067', '20.05.01.01.01.04.07', NULL, '07', '座椅安装锁钩', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6068', '20.05.01.01.01.04.08', NULL, '08', '后围加强板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6069', '20.05.01.01.01.04.09', NULL, '09', '后围窗框骨架', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('607', '10.09.01.01.03.11', NULL, '11', '防尘罩', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6070', '20.05.01.01.01.04.10', NULL, '10', '后围电机安装支架组件', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6071', '20.05.01.01.01.04.10.01', NULL, '01', '后围电机安装支架', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6072', '20.05.01.01.01.04.11', NULL, '11', '后围左支架组件', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6073', '20.05.01.01.01.04.11.01', NULL, '01', '后围左支架', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6074', '20.05.01.01.01.04.12', NULL, '12', '后围右支架组件', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6075', '20.05.01.01.01.04.12.01', NULL, '01', '后围右支架', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6076', '20.05.01.01.01.04.13', NULL, '13', '后围左加强板组件', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6077', '20.05.01.01.01.04.13.01', NULL, '01', '后围左加强板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6078', '20.05.01.01.01.04.14', NULL, '14', '后围右加强板组件', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6079', '20.05.01.01.01.04.14.01', NULL, '01', '后围右加强板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('608', '10.09.01.01.03.12', NULL, '12', '制动蹄销轴', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6080', '20.05.01.01.01.04.15', NULL, '15', '后围内板焊接总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6081', '20.05.01.01.01.05', NULL, '05', '顶盖第一横梁总成', 'Roof 1st cross member assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6082', '20.05.01.01.01.05.01', NULL, '01', '顶盖第一横梁中段', 'Middle section of the first beam for roof cover', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6083', '20.05.01.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6084', '20.05.01.01.01.06', NULL, '06', '顶盖总成', 'Roof cover assembly ', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6085', '20.05.01.01.01.06.01', NULL, '01', '顶盖外板', 'Roof outer plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6086', '20.05.01.01.01.06.02', NULL, '02', '顶盖第二横梁', 'Roof 2nd cross member', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6087', '20.05.01.01.01.06.03', NULL, '03', '顶盖第三横梁', 'Roof 3rd cross member', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6088', '20.05.01.01.01.07', NULL, '07', '顶盖第四横梁焊接总成', 'Roof fourth cross member weldment assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6089', '20.05.01.01.01.07.01', NULL, '01', '顶盖第四横梁总成', 'Roof 4# cross member assy.', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('609', '10.09.01.01.03.13', NULL, '13', '安装板', 'Brake friction plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6090', '20.05.01.01.01.07.01.01', NULL, '01', '顶盖第四横梁', 'Roof 4th cross member', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6091', '20.05.01.01.01.07.02', NULL, '02', '支架', 'Bracket', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6092', '20.05.01.01.01.08', NULL, '08', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6093', '20.05.01.01.02', NULL, '02', '驾驶室前端板', 'Cab front plate', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6094', '20.05.01.01.03', NULL, '03', '侧围前部高发泡填充材料', 'Side molding front high foam filling material', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6095', '20.05.01.01.04', NULL, '04', 'B柱带支架发泡材料', 'B-pillar with bracket foam material', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6096', '20.05.01.01.05', NULL, '05', '皮卡侧围后部高发泡填充材料', 'Pickup side molding high foam filling material', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6097', '20.05.01.01.06', NULL, '06', '皮卡C柱高发泡填充材料', 'Pickup C-pillar high foam filling material', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6098', '20.05.01.01.07', NULL, '07', '皮卡C柱带支架发泡材料', 'Pickup C-pillar with bracket foam material', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6099', '20.05.01.01.08', NULL, '08', '顶盖第一横梁高发泡填充材料', 'High foam filling material for first beam of roof cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('61', '10.02.01.10', NULL, '10', '硬管', 'water outlet pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('610', '10.09.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6100', '20.05.01.01.09', NULL, '09', '前保险杠安装支架组件', 'Mounting bracket components of front bumper', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6101', '20.05.01.01.09.01', NULL, '01', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6102', '20.05.01.01.09.01.01', NULL, '01', '车身下车体焊接总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6103', '20.05.01.01.09.01.01.01', NULL, '01', '下车体后端总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6104', '20.05.01.01.09.01.01.01.01', NULL, '01', '下车体后端分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6105', '20.05.01.01.09.01.01.01.01.01', NULL, '01', '第四地板本体总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6106', '20.05.01.01.09.01.01.01.01.01.01', NULL, '01', '第四地板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6107', '20.05.01.01.09.01.01.01.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6108', '20.05.01.01.09.01.01.01.01.02', NULL, '02', '后轮罩内板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6109', '20.05.01.01.09.01.01.01.01.02.01', NULL, '01', '后轮罩内板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('611', '10.09.01.02', NULL, '02', '护套', 'Protective boot', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6110', '20.05.01.01.09.01.01.01.01.02.02', NULL, '02', '后轮罩内板连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6111', '20.05.01.01.09.01.01.01.01.02.03', NULL, '03', '乘客座椅安装支架1总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6112', '20.05.01.01.09.01.01.01.01.02.03.01', NULL, '01', '乘客座椅安装支架1', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6113', '20.05.01.01.09.01.01.01.01.02.03.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6114', '20.05.01.01.09.01.01.01.01.02.04', NULL, '04', '乘客座椅安装支架2总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6115', '20.05.01.01.09.01.01.01.01.02.04.01', NULL, '01', '乘客座椅安装支架2', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6116', '20.05.01.01.09.01.01.01.01.02.04.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6117', '20.05.01.01.09.01.01.01.01.03', NULL, '03', '后纵梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6118', '20.05.01.01.09.01.01.01.01.03.01', NULL, '01', '后纵梁后段后部加强版总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6119', '20.05.01.01.09.01.01.01.01.03.01.01', NULL, '01', '后纵梁后段后部加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('612', '10.09.01.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6120', '20.05.01.01.09.01.01.01.01.03.01.02', NULL, '02', '板簧前支架安装螺母', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6121', '20.05.01.01.09.01.01.01.01.03.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6122', '20.05.01.01.09.01.01.01.01.03.02', NULL, '02', '车架后纵梁后段', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6123', '20.05.01.01.09.01.01.01.01.03.03', NULL, '03', '后纵梁中加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6124', '20.05.01.01.09.01.01.01.01.03.04', NULL, '04', '后减震安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6125', '20.05.01.01.09.01.01.01.01.03.04.01', NULL, '01', '安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6126', '20.05.01.01.09.01.01.01.01.03.04.02', NULL, '02', '连接套筒', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6127', '20.05.01.01.09.01.01.01.01.03.05', NULL, '05', '后副簧总成安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6128', '20.05.01.01.09.01.01.01.01.03.05.01', NULL, '01', '后副簧总成安装加强板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6129', '20.05.01.01.09.01.01.01.01.03.05.01.01', NULL, '01', '后副簧总成安装加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('613', '10.09.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6130', '20.05.01.01.09.01.01.01.01.03.05.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6131', '20.05.01.01.09.01.01.01.01.03.05.02', NULL, '02', '螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6132', '20.05.01.01.09.01.01.01.01.03.05.02.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6133', '20.05.01.01.09.01.01.01.01.03.05.02.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6134', '20.05.01.01.09.01.01.01.01.03.06', NULL, '06', '第五横梁连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6135', '20.05.01.01.09.01.01.01.01.03.07', NULL, '07', '后防撞梁安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6136', '20.05.01.01.09.01.01.01.01.03.07.01', NULL, '01', '安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6137', '20.05.01.01.09.01.01.01.01.03.07.02', NULL, '02', '加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6138', '20.05.01.01.09.01.01.01.01.03.07.02.01', NULL, '01', '加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6139', '20.05.01.01.09.01.01.01.01.03.07.02.02', NULL, '02', '后防撞梁安装套筒', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('614', '10.09.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6140', '20.05.01.01.09.01.01.01.01.03.08', NULL, '08', '加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6141', '20.05.01.01.09.01.01.01.01.03.08.01', NULL, '01', '加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6142', '20.05.01.01.09.01.01.01.01.03.08.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6143', '20.05.01.01.09.01.01.01.01.03.09', NULL, '09', '后纵梁中加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6144', '20.05.01.01.09.01.01.01.01.03.09.01', NULL, '01', '后减震安装板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6145', '20.05.01.01.09.01.01.01.01.03.09.01.01', NULL, '01', '后减震安装板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6146', '20.05.01.01.09.01.01.01.01.03.09.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6147', '20.05.01.01.09.01.01.01.01.03.09.02', NULL, '02', '后减震安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6148', '20.05.01.01.09.01.01.01.01.03.09.03', NULL, '03', '连接套筒', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6149', '20.05.01.01.09.01.01.01.01.03.09.04', NULL, '04', '后副簧总成安装加强板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('615', '10.09.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6150', '20.05.01.01.09.01.01.01.01.03.09.04.01', NULL, '01', '加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6151', '20.05.01.01.09.01.01.01.01.03.09.04.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6152', '20.05.01.01.09.01.01.01.01.03.09.05', NULL, '05', '螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6153', '20.05.01.01.09.01.01.01.01.03.09.05.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6154', '20.05.01.01.09.01.01.01.01.03.09.05.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6155', '20.05.01.01.09.01.01.01.01.03.10', NULL, '10', '后防撞梁安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6156', '20.05.01.01.09.01.01.01.01.03.10.01', NULL, '01', '后防撞梁安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6157', '20.05.01.01.09.01.01.01.01.03.10.02', NULL, '02', '加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6158', '20.05.01.01.09.01.01.01.01.03.10.02.01', NULL, '01', '加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6159', '20.05.01.01.09.01.01.01.01.03.10.02.02', NULL, '02', '后防撞梁安装套筒', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('616', '10.09.02', NULL, '02', '承载桥', 'Auxiliary axle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6160', '20.05.01.01.09.01.01.01.01.03.11', NULL, '11', '车架纵梁后段分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6161', '20.05.01.01.09.01.01.01.01.03.11.01', NULL, '01', '车架后纵梁后段', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6162', '20.05.01.01.09.01.01.01.01.03.11.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6163', '20.05.01.01.09.01.01.01.01.03.12', NULL, '12', '螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6164', '20.05.01.01.09.01.01.01.01.03.12.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6165', '20.05.01.01.09.01.01.01.01.03.12.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6166', '20.05.01.01.09.01.01.01.01.04', NULL, '04', '后地板下支撑总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6167', '20.05.01.01.09.01.01.01.01.04.01', NULL, '01', '后地板下支撑分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6168', '20.05.01.01.09.01.01.01.01.04.01.01', NULL, '01', '后地板下支撑板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6169', '20.05.01.01.09.01.01.01.01.04.01.01.01', NULL, '01', '后地板下支撑板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('617', '10.09.02.01', NULL, '01', '非转向支撑轴', 'Non-steering support shaft', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6170', '20.05.01.01.09.01.01.01.01.04.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6171', '20.05.01.01.09.01.01.01.01.04.01.02', NULL, '02', '加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6172', '20.05.01.01.09.01.01.01.01.04.01.02.01', NULL, '01', '加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6173', '20.05.01.01.09.01.01.01.01.04.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6174', '20.05.01.01.09.01.01.01.01.04.01.03', NULL, '03', '螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6175', '20.05.01.01.09.01.01.01.01.04.01.03.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6176', '20.05.01.01.09.01.01.01.01.04.01.03.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6177', '20.05.01.01.09.01.01.01.01.04.01.04', NULL, '04', '乘客座椅安装螺母板5总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6178', '20.05.01.01.09.01.01.01.01.04.01.04.01', NULL, '01', '乘客座椅安装螺母板5', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6179', '20.05.01.01.09.01.01.01.01.04.01.04.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('618', '10.09.02.01.01', NULL, '01', '支撑轴桥壳总成', 'Support shaft axle housing assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6180', '20.05.01.01.09.01.01.01.01.04.02', NULL, '02', '第四横梁总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6181', '20.05.01.01.09.01.01.01.01.04.02.01', NULL, '01', '第四横梁分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('61819D5BC880424CBE3', '60.06.01.01.10.02', '', '02', '绝缘橡胶条-短', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6182', '20.05.01.01.09.01.01.01.01.04.02.01.01', NULL, '01', '第四横梁', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6183', '20.05.01.01.09.01.01.01.01.04.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6184', '20.05.01.01.09.01.01.01.01.04.02.02', NULL, '02', '支架', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6185', '20.05.01.01.09.01.01.01.01.04.02.03', NULL, '03', '螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6186', '20.05.01.01.09.01.01.01.01.04.02.03.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6187', '20.05.01.01.09.01.01.01.01.04.02.03.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6188', '20.05.01.01.09.01.01.01.01.04.03', NULL, '03', '第四横梁连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6189', '20.05.01.01.09.01.01.01.01.05', NULL, '05', '纵梁后部横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('619', '10.09.02.01.01.01', NULL, '01', '轴管', 'Shaft pipe', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6190', '20.05.01.01.09.01.01.01.01.05.01', NULL, '01', '纵梁后部横梁分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6191', '20.05.01.01.09.01.01.01.01.05.01.01', NULL, '01', '纵梁后部横梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6192', '20.05.01.01.09.01.01.01.01.05.01.02', NULL, '02', '后门槛支撑梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6193', '20.05.01.01.09.01.01.01.01.05.02', NULL, '02', '乘客座椅安装螺母板3总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6194', '20.05.01.01.09.01.01.01.01.05.02.01', NULL, '01', '乘客座椅安装螺母板3', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6195', '20.05.01.01.09.01.01.01.01.05.02.02', NULL, '02', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6196', '20.05.01.01.09.01.01.01.01.05.03', NULL, '03', '加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6197', '20.05.01.01.09.01.01.01.01.06', NULL, '06', '第五横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6198', '20.05.01.01.09.01.01.01.01.06.01', NULL, '01', '第五横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6199', '20.05.01.01.09.01.01.01.01.06.02', NULL, '02', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('61CD2FEF961542C1AAA', '20.05.01.01.01.06.05', '', '05', '顶盖左前加强板', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('62', '10.02.01.11', NULL, '11', '水泵总成', 'Water pump assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('620', '10.09.02.01.01.02', NULL, '02', '板簧垫板', 'Leaf spring base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6200', '20.05.01.01.09.01.01.01.01.06.03', NULL, '03', '螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6201', '20.05.01.01.09.01.01.01.01.06.03.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6202', '20.05.01.01.09.01.01.01.01.06.03.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6203', '20.05.01.01.09.01.01.01.01.07', NULL, '07', '下车体后端分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6204', '20.05.01.01.09.01.01.01.01.07.01', NULL, '01', '后门槛加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6205', '20.05.01.01.09.01.01.01.01.07.01.01', NULL, '01', '加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6206', '20.05.01.01.09.01.01.01.01.07.01.01.01', NULL, '01', '加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6207', '20.05.01.01.09.01.01.01.01.07.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6208', '20.05.01.01.09.01.01.01.01.07.01.02', NULL, '02', '后门槛连接板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6209', '20.05.01.01.09.01.01.01.01.07.02', NULL, '02', '后尾板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('621', '10.09.02.01.01.03', NULL, '03', '板簧压板', 'Pressing plate of plate spring', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6210', '20.05.01.01.09.01.01.01.01.07.02.01', NULL, '01', '后尾板上板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6211', '20.05.01.01.09.01.01.01.01.07.02.02', NULL, '02', '后门槛总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6212', '20.05.01.01.09.01.01.01.01.07.02.02.01', NULL, '01', '后门槛', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6213', '20.05.01.01.09.01.01.01.01.07.02.02.02', NULL, '02', '后门锁钩安装板总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6214', '20.05.01.01.09.01.01.01.01.07.02.02.02.01', NULL, '01', '加强板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6215', '20.05.01.01.09.01.01.01.01.07.02.02.02.02', NULL, '02', '后门锁钩安装板总成', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6216', '20.05.01.01.09.01.01.01.01.07.02.02.02.02.01', NULL, '01', '后门锁钩安装板', '11', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6217', '20.05.01.01.09.01.01.01.01.07.02.02.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6218', '20.05.01.01.09.01.01.01.01.08', NULL, '08', '后轮罩后裙板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6219', '20.05.01.01.09.01.01.01.02', NULL, '02', '车架后纵梁前段分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('622', '10.09.02.01.02', NULL, '02', '支撑轴轮毂总成', 'Support shaft hub assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6220', '20.05.01.01.09.01.01.01.02.01', NULL, '01', '后纵梁前加强板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6221', '20.05.01.01.09.01.01.01.02.01.01', NULL, '01', '加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6222', '20.05.01.01.09.01.01.01.02.01.01.01', NULL, '01', '加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6223', '20.05.01.01.09.01.01.01.02.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6224', '20.05.01.01.09.01.01.01.02.01.02', NULL, '02', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6225', '20.05.01.01.09.01.01.01.02.02', NULL, '02', '后纵梁前段分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6226', '20.05.01.01.09.01.01.01.02.02.01', NULL, '01', '车架后纵梁前段', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6227', '20.05.01.01.09.01.01.01.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6228', '20.05.01.01.09.01.01.01.02.03', NULL, '03', '螺母板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6229', '20.05.01.01.09.01.01.01.02.03.01', NULL, '01', '螺母板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('623', '10.09.02.01.02.01', NULL, '01', '轮毂', 'Hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6230', '20.05.01.01.09.01.01.01.02.03.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6231', '20.05.01.01.09.01.01.01.03', NULL, '03', '车架后纵梁前段总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6232', '20.05.01.01.09.01.01.01.03.01', NULL, '01', '后纵梁前加强板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6233', '20.05.01.01.09.01.01.01.03.01.01', NULL, '01', '加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6234', '20.05.01.01.09.01.01.01.03.01.01.01', NULL, '01', '加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6235', '20.05.01.01.09.01.01.01.03.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6236', '20.05.01.01.09.01.01.01.03.01.02', NULL, '02', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6237', '20.05.01.01.09.01.01.01.03.02', NULL, '02', '后纵梁前段分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6238', '20.05.01.01.09.01.01.01.03.02.01', NULL, '01', '车架后纵梁前段', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6239', '20.05.01.01.09.01.01.01.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('624', '10.09.02.01.02.02', NULL, '02', '车轮螺栓', 'Wheel bolt', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6240', '20.05.01.01.09.01.01.01.03.03', NULL, '03', '螺母板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6241', '20.05.01.01.09.01.01.01.03.03.01', NULL, '01', '螺母板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6242', '20.05.01.01.09.01.01.01.03.03.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6243', '20.05.01.01.09.01.01.01.04', NULL, '04', '车架中部总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6244', '20.05.01.01.09.01.01.01.04.01', NULL, '01', '第三横梁总成1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6245', '20.05.01.01.09.01.01.01.04.01.01', NULL, '01', '第三横梁本体总成1', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6246', '20.05.01.01.09.01.01.01.04.01.01.01', NULL, '01', '第三横梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6247', '20.05.01.01.09.01.01.01.04.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6248', '20.05.01.01.09.01.01.01.04.01.02', NULL, '02', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6249', '20.05.01.01.09.01.01.01.04.01.03', NULL, '03', '螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('625', '10.09.02.01.02.03', NULL, '03', '轮毂', 'Hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6250', '20.05.01.01.09.01.01.01.04.01.03.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6251', '20.05.01.01.09.01.01.01.04.01.03.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6252', '20.05.01.01.09.01.01.01.04.02', NULL, '02', '传动轴前安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6253', '20.05.01.01.09.01.01.01.04.02.01', NULL, '01', '安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6254', '20.05.01.01.09.01.01.01.04.02.01.01', NULL, '01', '安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6255', '20.05.01.01.09.01.01.01.04.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6256', '20.05.01.01.09.01.01.01.04.02.02', NULL, '02', '螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6257', '20.05.01.01.09.01.01.01.04.02.02.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6258', '20.05.01.01.09.01.01.01.04.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6259', '20.05.01.01.09.01.01.01.04.03', NULL, '03', '传动轴后安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('626', '10.09.02.01.02.04', NULL, '04', '六角螺母-外', 'Hexagon nut - external', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6260', '20.05.01.01.09.01.01.01.04.03.01', NULL, '01', '安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6261', '20.05.01.01.09.01.01.01.04.03.01.01', NULL, '01', '安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6262', '20.05.01.01.09.01.01.01.04.03.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6263', '20.05.01.01.09.01.01.01.04.03.02', NULL, '02', '螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6264', '20.05.01.01.09.01.01.01.04.03.02.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6265', '20.05.01.01.09.01.01.01.04.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6266', '20.05.01.01.09.01.01.01.05', NULL, '05', '第三横梁总成2', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6267', '20.05.01.01.09.01.01.01.05.01', NULL, '01', '第三横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6268', '20.05.01.01.09.01.01.01.05.01.01', NULL, '01', '第三横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6269', '20.05.01.01.09.01.01.01.05.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('627', '10.09.02.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6270', '20.05.01.01.09.01.01.01.05.02', NULL, '02', '安装螺母板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6271', '20.05.01.01.09.01.01.01.05.02.01', NULL, '01', '螺母板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6272', '20.05.01.01.09.01.01.01.05.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6273', '20.05.01.01.09.01.01.01.06', NULL, '06', '第三横梁总成3', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6274', '20.05.01.01.09.01.01.01.06.01', NULL, '01', '第三横梁分总成1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6275', '20.05.01.01.09.01.01.01.06.01.01', NULL, '01', '第三横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6276', '20.05.01.01.09.01.01.01.06.01.02', NULL, '02', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6277', '20.05.01.01.09.01.01.01.06.02', NULL, '02', '安装螺母板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6278', '20.05.01.01.09.01.01.01.06.02.01', NULL, '01', '螺母板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6279', '20.05.01.01.09.01.01.01.06.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('628', '10.09.02.01.03', NULL, '03', '支撑轴手调制动器总成', 'Manual brake assembly of support shaft', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6280', '20.05.01.01.09.01.01.02', NULL, '02', '下车体前端总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6281', '20.05.01.01.09.01.01.02.01', NULL, '01', '前地板后板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6282', '20.05.01.01.09.01.01.02.01.01', NULL, '01', '前地板后板本体总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6283', '20.05.01.01.09.01.01.02.01.01.01', NULL, '01', '前地板后板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6284', '20.05.01.01.09.01.01.02.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6285', '20.05.01.01.09.01.01.02.01.02', NULL, '02', '前地板后板连接板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6286', '20.05.01.01.09.01.01.02.01.02.01', NULL, '01', '前地板后板连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6287', '20.05.01.01.09.01.01.02.01.02.02', NULL, '02', 'B柱下连接板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6288', '20.05.01.01.09.01.01.02.01.02.02.01', NULL, '01', 'B柱下连接板分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6289', '20.05.01.01.09.01.01.02.01.02.02.01.01', NULL, '01', 'B柱下连接板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('629', '10.09.02.01.03.01', NULL, '01', '手动间隙调整臂', 'Manual clearance adjuster', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6290', '20.05.01.01.09.01.01.02.01.02.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6291', '20.05.01.01.09.01.01.02.01.02.02.02', NULL, '02', '安全带安装螺母板1总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6292', '20.05.01.01.09.01.01.02.01.02.02.02.01', NULL, '01', '安全带安装螺母板1', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6293', '20.05.01.01.09.01.01.02.01.02.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6294', '20.05.01.01.09.01.01.02.02', NULL, '02', '前围总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6295', '20.05.01.01.09.01.01.02.02.01', NULL, '01', '前风窗下横梁加强板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6296', '20.05.01.01.09.01.01.02.02.01.01', NULL, '01', '加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6297', '20.05.01.01.09.01.01.02.02.01.01.01', NULL, '01', '加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6298', '20.05.01.01.09.01.01.02.02.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6299', '20.05.01.01.09.01.01.02.02.01.02', NULL, '02', '螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('63', '10.02.01.12', NULL, '12', '水泵接头', 'Water pump connecter', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('630', '10.09.02.01.03.02', NULL, '02', '弹簧制动气室', 'Spring brake chamber', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6300', '20.05.01.01.09.01.01.02.02.01.02.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6301', '20.05.01.01.09.01.01.02.02.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6302', '20.05.01.01.09.01.01.02.02.02', NULL, '02', '前围板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6303', '20.05.01.01.09.01.01.02.02.02.01', NULL, '01', '前围板本体总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6304', '20.05.01.01.09.01.01.02.02.02.01.01', NULL, '01', '前围板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6305', '20.05.01.01.09.01.01.02.02.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6306', '20.05.01.01.09.01.01.02.02.02.02', NULL, '02', '加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6307', '20.05.01.01.09.01.01.02.02.02.02.01', NULL, '01', '加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6308', '20.05.01.01.09.01.01.02.02.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6309', '20.05.01.01.09.01.01.02.03', NULL, '03', '前地板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('631', '10.09.02.01.03.03', NULL, '03', '制动鼓', 'Brake drum', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6310', '20.05.01.01.09.01.01.02.03.01', NULL, '01', '前地板本体总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6311', '20.05.01.01.09.01.01.02.03.01.01', NULL, '01', '前地板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6312', '20.05.01.01.09.01.01.02.03.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6313', '20.05.01.01.09.01.01.02.03.02', NULL, '02', '加强板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6314', '20.05.01.01.09.01.01.02.03.02.01', NULL, '01', '加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6315', '20.05.01.01.09.01.01.02.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6316', '20.05.01.01.09.01.01.02.03.03', NULL, '03', '支架总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6317', '20.05.01.01.09.01.01.02.03.03.01', NULL, '01', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6318', '20.05.01.01.09.01.01.02.03.03.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6319', '20.05.01.01.09.01.01.02.04', NULL, '04', '下车体前端总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('632', '10.09.02.01.03.04', NULL, '04', '凸轮轴', 'Camshaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6320', '20.05.01.01.09.01.01.02.04.01', NULL, '01', '前纵梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6321', '20.05.01.01.09.01.01.02.04.01.01', NULL, '01', '前纵梁前部安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6322', '20.05.01.01.09.01.01.02.04.01.01.01', NULL, '01', '安装板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6323', '20.05.01.01.09.01.01.02.04.01.01.01.01', NULL, '01', '安装板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6324', '20.05.01.01.09.01.01.02.04.01.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6325', '20.05.01.01.09.01.01.02.04.01.01.02', NULL, '02', '前拖车钩螺纹管', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6326', '20.05.01.01.09.01.01.02.04.01.02', NULL, '02', '前纵梁分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6327', '20.05.01.01.09.01.01.02.04.01.02.01', NULL, '01', '前纵梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6328', '20.05.01.01.09.01.01.02.04.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6329', '20.05.01.01.09.01.01.02.04.01.03', NULL, '03', '加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('633', '10.09.02.01.03.05', NULL, '05', '制动蹄铁', 'Brake shoe', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6330', '20.05.01.01.09.01.01.02.04.01.03.01', NULL, '01', '加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6331', '20.05.01.01.09.01.01.02.04.01.03.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6332', '20.05.01.01.09.01.01.02.04.02', NULL, '02', '中纵梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6333', '20.05.01.01.09.01.01.02.04.02.01', NULL, '01', '中纵梁组件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6334', '20.05.01.01.09.01.01.02.04.02.01.01', NULL, '01', '中纵梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6335', '20.05.01.01.09.01.01.02.04.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6336', '20.05.01.01.09.01.01.02.04.02.02', NULL, '02', '螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6337', '20.05.01.01.09.01.01.02.04.02.02.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6338', '20.05.01.01.09.01.01.02.04.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6339', '20.05.01.01.09.01.01.02.04.02.03', NULL, '03', '中纵梁加强板组件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('634', '10.09.02.01.03.06', NULL, '06', '制动衬布-凸轮端(制动衬布-固定端)', 'Brake lining - cam end (brake lining - fixed end)', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6340', '20.05.01.01.09.01.01.02.04.02.03.01', NULL, '01', '加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6341', '20.05.01.01.09.01.01.02.04.02.03.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6342', '20.05.01.01.09.01.01.02.04.02.04', NULL, '04', '螺母板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6343', '20.05.01.01.09.01.01.02.04.02.05', NULL, '05', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6344', '20.05.01.01.09.01.01.02.04.03', NULL, '03', '副车架后安装支架分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6345', '20.05.01.01.09.01.01.02.04.03.01', NULL, '01', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6346', '20.05.01.01.09.01.01.02.04.03.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6347', '20.05.01.01.09.01.01.02.04.04', NULL, '04', '前纵梁上盖板前部总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6348', '20.05.01.01.09.01.01.02.04.04.01', NULL, '01', '前纵梁上盖板前部分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6349', '20.05.01.01.09.01.01.02.04.04.01.01', NULL, '01', '前纵梁上盖板前部', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('635', '10.09.02.01.03.07', NULL, '07', '制动底板', 'Brake base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6350', '20.05.01.01.09.01.01.02.04.04.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6351', '20.05.01.01.09.01.01.02.04.04.02', NULL, '02', '副车架前安装点安装套筒', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6352', '20.05.01.01.09.01.01.02.04.05', NULL, '05', '前纵梁上盖板后部总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6353', '20.05.01.01.09.01.01.02.04.05.01', NULL, '01', '前纵梁上盖板后部', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6354', '20.05.01.01.09.01.01.02.04.05.02', NULL, '02', '副车架螺柱安装支架总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6355', '20.05.01.01.09.01.01.02.04.05.02.01', NULL, '01', '支架', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6356', '20.05.01.01.09.01.01.02.04.05.02.02', NULL, '02', '副车架安装螺柱', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6357', '20.05.01.01.09.01.01.02.04.05.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6358', '20.05.01.01.09.01.01.02.04.05.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6359', '20.05.01.01.09.01.01.02.04.06', NULL, '06', '前踏板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('636', '10.09.02.01.03.08', NULL, '08', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6360', '20.05.01.01.09.01.01.02.04.06.01', NULL, '01', '前踏板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6361', '20.05.01.01.09.01.01.02.04.06.02', NULL, '02', '前踏板内加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6362', '20.05.01.01.09.01.01.02.04.06.02.01', NULL, '01', '前踏板内加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6363', '20.05.01.01.09.01.01.02.04.06.02.02', NULL, '02', '副司机座椅安装加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6364', '20.05.01.01.09.01.01.02.04.06.02.02.01', NULL, '01', '副司机座椅安装加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6365', '20.05.01.01.09.01.01.02.04.06.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6366', '20.05.01.01.09.01.01.02.04.07', NULL, '07', '纵梁第一横梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6367', '20.05.01.01.09.01.01.02.04.08', NULL, '08', '纵梁第二横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6368', '20.05.01.01.09.01.01.02.04.08.01', NULL, '01', '纵梁第二横梁加强梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6369', '20.05.01.01.09.01.01.02.04.08.02', NULL, '02', '侧滑门电动踏步安装螺母板1总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('637', '10.09.02.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6370', '20.05.01.01.09.01.01.02.04.08.02.01', NULL, '01', '侧滑门电动踏步安装螺母板1', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6371', '20.05.01.01.09.01.01.02.04.08.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6372', '20.05.01.01.09.01.01.02.04.08.03', NULL, '03', '纵梁第二横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6373', '20.05.01.01.09.01.01.02.04.08.04', NULL, '04', '前轮罩板前段', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6374', '20.05.01.01.09.01.01.02.04.08.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6375', '20.05.01.01.09.01.01.02.05', NULL, '05', '纵梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6376', '20.05.01.01.09.01.01.02.05.01', NULL, '01', '副车架后安装支架加强板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6377', '20.05.01.01.09.01.01.02.05.02', NULL, '02', '螺母板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6378', '20.05.01.01.09.01.01.02.05.02.01', NULL, '01', '螺母板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6379', '20.05.01.01.09.01.01.02.05.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('638', '10.09.02.01.04', NULL, '04', '支撑轴自调制动器总成', 'Auto-adjusting brake assembly of support shaft', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6380', '20.05.01.01.09.01.01.02.06', NULL, '06', '前纵梁上盖板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6381', '20.05.01.01.09.01.01.02.06.01', NULL, '01', '前纵梁上盖板前部总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6382', '20.05.01.01.09.01.01.02.06.01.01', NULL, '01', '前纵梁上盖板前部', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6383', '20.05.01.01.09.01.01.02.06.01.02', NULL, '02', '副车架前安装点安装套筒', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6384', '20.05.01.01.09.01.01.02.07', NULL, '07', '前踏板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6385', '20.05.01.01.09.01.01.02.07.01', NULL, '01', '前踏板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6386', '20.05.01.01.09.01.01.02.07.01.01', NULL, '01', '前踏板本体总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6387', '20.05.01.01.09.01.01.02.07.01.01.01', NULL, '01', '前踏板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6388', '20.05.01.01.09.01.01.02.07.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6389', '20.05.01.01.09.01.01.02.07.01.02', NULL, '02', '前踏板内加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('639', '10.09.02.01.04.01', NULL, '01', '自动间隙调整臂', 'Automatic clearance adjuster', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6390', '20.05.01.01.09.01.01.02.07.02', NULL, '02', '纵梁第一横梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6391', '20.05.01.01.09.01.01.02.07.03', NULL, '03', '前踏板前支撑板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6392', '20.05.01.01.09.01.01.02.07.03.01', NULL, '01', '前踏板前支撑板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6393', '20.05.01.01.09.01.01.02.07.03.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6394', '20.05.01.01.09.01.01.02.07.04', NULL, '04', '前踏板后支撑板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6395', '20.05.01.01.09.01.01.02.07.04.01', NULL, '01', '前踏板后支撑板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6396', '20.05.01.01.09.01.01.02.07.04.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6397', '20.05.01.01.09.01.01.02.07.05', NULL, '05', '纵梁第二横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6398', '20.05.01.01.09.01.01.02.07.05.01', NULL, '01', '纵梁第二横梁加强梁分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6399', '20.05.01.01.09.01.01.02.07.05.01.01', NULL, '01', '纵梁第二横梁加强梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('64', '10.02.01.15', NULL, '15', '风扇导流板', 'Fan baffle plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('640', '10.09.02.01.04.02', NULL, '02', '弹簧制动气室', 'Spring brake chamber', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6400', '20.05.01.01.09.01.01.02.07.05.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6401', '20.05.01.01.09.01.01.02.07.05.02', NULL, '02', '纵梁第二横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6402', '20.05.01.01.09.01.01.02.08', NULL, '08', '前轮罩总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6403', '20.05.01.01.09.01.01.02.08.01', NULL, '01', '前轮罩板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6404', '20.05.01.01.09.01.01.02.08.02', NULL, '02', '前轮罩板前段总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6405', '20.05.01.01.09.01.01.02.08.02.01', NULL, '01', '前轮罩板前段', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6406', '20.05.01.01.09.01.01.02.08.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6407', '20.05.01.01.09.01.01.02.08.03', NULL, '03', '前减震器安装板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6408', '20.05.01.01.09.01.01.02.09', NULL, '09', '前地板下支撑总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6409', '20.05.01.01.09.01.01.02.09.01', NULL, '01', '前地板下支撑板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('641', '10.09.02.01.04.03', NULL, '03', '制动鼓', 'Brake drum', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6410', '20.05.01.01.09.01.01.02.09.01.01', NULL, '01', '前地板下支撑板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6411', '20.05.01.01.09.01.01.02.09.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6412', '20.05.01.01.09.01.01.02.09.02', NULL, '02', '前地板下支撑连接板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6413', '20.05.01.01.09.01.01.02.09.02.01', NULL, '01', '前地板下支撑连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6414', '20.05.01.01.09.01.01.02.09.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6415', '20.05.01.01.09.01.01.02.09.03', NULL, '03', '第二横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6416', '20.05.01.01.09.01.01.02.09.03.01', NULL, '01', '车架第二横梁组件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6417', '20.05.01.01.09.01.01.02.09.03.01.01', NULL, '01', '第二横梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6417903E0AEF4312AAE', '20.02.09', '', '09', '其他内饰附件', '', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6418', '20.05.01.01.09.01.01.02.09.03.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6419', '20.05.01.01.09.01.01.02.09.03.02', NULL, '02', '前排中间座椅安全带锁扣安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('642', '10.09.02.01.04.04', NULL, '04', '凸轮轴', 'Camshaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6420', '20.05.01.01.09.01.01.02.09.03.02.01', NULL, '01', '前排中间座椅安全带锁扣安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6421', '20.05.01.01.09.01.01.02.09.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6422', '20.05.01.01.09.01.01.02.10', NULL, '10', '第一横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6423', '20.05.01.01.09.01.01.02.10.01', NULL, '01', '第一横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6424', '20.05.01.01.09.01.01.02.10.01.01', NULL, '01', '第一横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6425', '20.05.01.01.09.01.01.02.10.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6426', '20.05.01.01.09.01.01.02.10.02', NULL, '02', '螺母板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6427', '20.05.01.01.09.01.01.02.10.02.01', NULL, '01', '螺母板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6428', '20.05.01.01.09.01.01.02.10.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6429', '20.05.01.01.09.01.01.02.11', NULL, '11', 'A柱内下板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('643', '10.09.02.01.04.05', NULL, '05', '制动蹄铁', 'Brake shoe', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6430', '20.05.01.01.09.01.01.02.11.01', NULL, '01', 'A柱内下板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6431', '20.05.01.01.09.01.01.02.11.01.01', NULL, '01', 'A柱内下板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6432', '20.05.01.01.09.01.01.02.11.01,98', NULL, '98', '紧固件', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6433', '20.05.01.01.09.01.01.02.11.02', NULL, '02', '机舱侧板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6434', '20.05.01.01.09.01.01.02.11.02.01', NULL, '01', '机舱侧板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6435', '20.05.01.01.09.01.01.02.11.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6436', '20.05.01.01.09.01.01.02.12', NULL, '12', '前门槛本体总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6437', '20.05.01.01.09.01.01.02.12.01', NULL, '01', '前门槛', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6438', '20.05.01.01.09.01.01.02.12.01.01', NULL, '01', 'A柱内下板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6439', '20.05.01.01.09.01.01.02.12.01.02', NULL, '02', '机舱侧板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('644', '10.09.02.01.04.06', NULL, '06', '制动衬布-凸轮端(制动衬布-固定端)', 'Brake lining - cam end (brake lining - fixed end)', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6440', '20.05.01.01.09.01.01.02.12.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6441', '20.05.01.01.09.01.01.02.12.02', NULL, '02', '紧固件', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6442', '20.05.01.01.09.01.01.02.13', NULL, '13', '前防撞梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6443', '20.05.01.01.09.01.01.02.13.01', NULL, '01', '前防撞梁本体总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6444', '20.05.01.01.09.01.01.02.13.01.01', NULL, '01', '前防撞梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6445', '20.05.01.01.09.01.01.02.13.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6446', '20.05.01.01.09.01.01.02.13.02', NULL, '02', '支架', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6447', '20.05.01.01.09.01.01.02.13.03', NULL, '03', '保险杠安装支架总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6448', '20.05.01.01.09.01.01.02.13.03.01', NULL, '01', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6449', '20.05.01.01.09.01.01.02.13.03.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('645', '10.09.02.01.04.07', NULL, '07', '制动底板', 'Brake base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6450', '20.05.01.01.09.01.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6451', '20.05.01.01.09.01.01.03', NULL, '03', '第三地板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6452', '20.05.01.01.09.01.01.04', NULL, '04', '第二地板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6453', '20.05.01.01.09.01.01.04.01', NULL, '01', '第二地板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6454', '20.05.01.01.09.01.01.04.98', NULL, '98', '紧固件', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6455', '20.05.01.01.09.01.01.05', NULL, '05', '翼子板支架总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6456', '20.05.01.01.09.01.01.05.01', NULL, '01', '支架', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6457', '20.05.01.01.09.01.01.05.98', NULL, '98', '紧固件', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6458', '20.05.01.01.09.01.01.06', NULL, '06', '车架中部总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6459', '20.05.01.01.09.01.01.06.01', NULL, '01', '裙板第三支撑板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('646', '10.09.02.01.04.08', NULL, '08', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6460', '20.05.01.01.09.01.01.06.01.01', NULL, '01', '第一排乘客座椅安装螺母板1总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6461', '20.05.01.01.09.01.01.06.01.01.01', NULL, '01', '第一排乘客座椅安装螺母板1', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6462', '20.05.01.01.09.01.01.06.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6463', '20.05.01.01.09.01.01.06.01.02', NULL, '02', '裙板支撑板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6464', '20.05.01.01.09.01.01.06.02', NULL, '02', '纵梁中部横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6465', '20.05.01.01.09.01.01.06.02.01', NULL, '01', '纵梁第三横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6466', '20.05.01.01.09.01.01.06.02.01.01', NULL, '01', '纵梁第三横梁本体总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6467', '20.05.01.01.09.01.01.06.02.01.01.01', NULL, '01', '纵梁第三横梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6468', '20.05.01.01.09.01.01.06.02.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6469', '20.05.01.01.09.01.01.06.02.01.02', NULL, '02', '裙板支撑角板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('647', '10.09.03', NULL, '03', '第二转向桥', 'Second Steering axle', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6470', '20.05.01.01.09.01.01.06.02.01.03', NULL, '03', '第二排乘客双人座椅安装螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6471', '20.05.01.01.09.01.01.06.02.01.03.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6472', '20.05.01.01.09.01.01.06.02.01.03.02', NULL, '02', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6473', '20.05.01.01.09.01.01.06.02.02', NULL, '02', '纵梁第五横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6474', '20.05.01.01.09.01.01.06.02.02.01', NULL, '01', '纵梁第五横梁分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6475', '20.05.01.01.09.01.01.06.02.02.01.01', NULL, '01', '纵梁第五横梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6476', '20.05.01.01.09.01.01.06.02.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6477', '20.05.01.01.09.01.01.06.02.02.02', NULL, '02', '裙板支撑角板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6478', '20.05.01.01.09.01.01.06.02.02.03', NULL, '03', '纵梁连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6479', '20.05.01.01.09.01.01.06.02.02.04', NULL, '04', '第一排乘客座椅安装螺母板1总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('648', '10.09.03.01', NULL, '01', '第二转向轴总成', 'Second Steering axle assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6480', '20.05.01.01.09.01.01.06.02.02.04.01', NULL, '01', '第一排乘客座椅安装螺母板1', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6481', '20.05.01.01.09.01.01.06.02.02.04.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6482', '20.05.01.01.09.01.01.06.02.02.05', NULL, '05', '乘客座椅安装螺母板4总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6483', '20.05.01.01.09.01.01.06.02.02.05.01', NULL, '01', '乘客座椅安装螺母板4', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6484', '20.05.01.01.09.01.01.06.02.02.05.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6485', '20.05.01.01.09.01.01.06.02.03', NULL, '03', '减震弹簧前安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6486', '20.05.01.01.09.01.01.06.02.03.01', NULL, '01', '减震弹簧前安装加强梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6487', '20.05.01.01.09.01.01.06.02.03.02', NULL, '02', '减震弹簧前安装板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6488', '20.05.01.01.09.01.01.06.02.03.02.01', NULL, '01', '减震弹簧前安装加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6489', '20.05.01.01.09.01.01.06.02.03.02.02', NULL, '02', '减震弹簧前安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('649', '10.09.03.01.01', NULL, '01', '第二轴转向总成', 'Steering assembly,Second axle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6490', '20.05.01.01.09.01.01.06.03', NULL, '03', '裙板支撑板总成1', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6491', '20.05.01.01.09.01.01.06.03.01', NULL, '01', '裙板支撑板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6492', '20.05.01.01.09.01.01.06.03.02', NULL, '02', '第一排乘客座椅安装螺母板1总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6493', '20.05.01.01.09.01.01.06.03.02.01', NULL, '01', '第一排乘客座椅安装螺母板1', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6494', '20.05.01.01.09.01.01.06.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6495', '20.05.01.01.09.01.01.06.04', NULL, '04', '侧中部裙板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6496', '20.05.01.01.09.01.01.06.04.01', NULL, '01', '裙板本体总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6497', '20.05.01.01.09.01.01.06.04.01.01', NULL, '01', '裙板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6498', '20.05.01.01.09.01.01.06.04.01.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6499', '20.05.01.01.09.01.01.06.04.02', NULL, '02', '后轮罩前裙板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('65', '10.02.01.16', NULL, '16', '副水箱总成', 'Auxiliary water tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('650', '10.09.03.01.01.01', NULL, '01', '前轴', 'Front axle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6500', '20.05.01.01.09.01.01.07', NULL, '07', '车架中部总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6501', '20.05.01.01.09.01.01.07.01', NULL, '01', '纵梁中部横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6502', '20.05.01.01.09.01.01.07.01.01', NULL, '01', '纵梁第四横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6503', '20.05.01.01.09.01.01.07.01.01.01', NULL, '01', '纵梁第四横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6504', '20.05.01.01.09.01.01.07.01.01.02', NULL, '02', '第二排乘客单人座椅安装螺母板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6505', '20.05.01.01.09.01.01.07.01.01.02.01', NULL, '01', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6506', '20.05.01.01.09.01.01.07.01.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6507', '20.05.01.01.09.01.01.07.01.01.03', NULL, '03', 'C柱内下板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6508', '20.05.01.01.09.01.01.07.01.01.03.01', NULL, '01', 'C柱内下板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6509', '20.05.01.01.09.01.01.07.01.01.03.02', NULL, '02', 'C柱内下板加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('651', '10.09.03.01.01.02', NULL, '02', '转向横拉杆臂', 'Steering tie rod arm', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6510', '20.05.01.01.09.01.01.07.01.02', NULL, '02', '纵梁第五横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6511', '20.05.01.01.09.01.01.07.01.02.01', NULL, '01', '纵梁第五横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6512', '20.05.01.01.09.01.01.07.01.02.02', NULL, '02', '乘客座椅安装螺母板2总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6513', '20.05.01.01.09.01.01.07.01.02.02.01', NULL, '01', '乘客座椅安装螺母板2', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6514', '20.05.01.01.09.01.01.07.01.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6515', '20.05.01.01.09.01.01.07.01.02.03', NULL, '03', '裙板支撑角板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6516', '20.05.01.01.09.01.01.07.01.02.04', NULL, '04', '纵梁连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6517', '20.05.01.01.09.01.01.07.01.03', NULL, '03', '减震弹簧前安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6518', '20.05.01.01.09.01.01.07.01.03.01', NULL, '01', '减震弹簧前安装加强梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6519', '20.05.01.01.09.01.01.07.01.03.02', NULL, '02', '减震弹簧前安装板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('652', '10.09.03.01.01.03', NULL, '03', '转向直拉杆臂', 'Steering drag link arm', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6520', '20.05.01.01.09.01.01.07.01.03.02.01', NULL, '01', '减震弹簧前安装加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6521', '20.05.01.01.09.01.01.07.01.03.02.02', NULL, '02', '减震弹簧前安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6522', '20.05.01.01.09.01.01.07.02', NULL, '02', '裙板补板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6523', '20.05.01.01.09.01.01.07.03', NULL, '03', '侧拉门踏板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6524', '20.05.01.01.09.01.01.07.03.01', NULL, '01', '侧拉门踏板支撑板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6525', '20.05.01.01.09.01.01.07.03.02', NULL, '02', '侧拉门踏板支撑板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6526', '20.05.01.01.09.01.01.07.03.02.01', NULL, '01', '侧拉门踏板支撑板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6527', '20.05.01.01.09.01.01.07.03.02.02', NULL, '02', '侧滑门电动踏步安装螺母板1总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6528', '20.05.01.01.09.01.01.07.03.02.02.01', NULL, '01', '侧滑门电动踏步安装螺母板1', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6529', '20.05.01.01.09.01.01.07.03.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('653', '10.09.03.01.01.04', NULL, '04', '转向节', 'Steering knuckle', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6530', '20.05.01.01.09.01.01.07.03.03', NULL, '03', '纵梁第三横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6531', '20.05.01.01.09.01.01.07.03.03.01', NULL, '01', '纵梁第三横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6532', '20.05.01.01.09.01.01.07.03.03.02', NULL, '02', '第二排乘客单人座椅安装螺母板1总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6533', '20.05.01.01.09.01.01.07.03.03.02.01', NULL, '01', '第二排乘客单人座椅安装螺母板1', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6534', '20.05.01.01.09.01.01.07.03.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6535', '20.05.01.01.09.01.01.07.03.03.03', NULL, '03', '横梁连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6536', '20.05.01.01.09.01.01.07.03.04', NULL, '04', '第二地板支撑板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6537', '20.05.01.01.09.01.01.07.03.05', NULL, '05', '侧拉门踏板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6538', '20.05.01.01.09.01.01.07.03.06', NULL, '06', '侧拉门下导轨总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6539', '20.05.01.01.09.01.01.07.03.06.01', NULL, '01', '侧拉门下导轨分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('654', '10.09.03.01.01.05', NULL, '05', '转向横拉杆', 'Steering tie rod', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6540', '20.05.01.01.09.01.01.07.03.06.01.01', NULL, '01', '侧拉门下导轨', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6541', '20.05.01.01.09.01.01.07.03.06.01.02', NULL, '02', '侧拉门下导轨后安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6542', '20.05.01.01.09.01.01.07.03.06.01.03', NULL, '03', '滑轮挡板安装支架总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6543', '20.05.01.01.09.01.01.07.03.06.01.03.01', NULL, '01', '支架', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6544', '20.05.01.01.09.01.01.07.03.06.01.03.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6545', '20.05.01.01.09.01.01.07.03.06.02', NULL, '02', '裙板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6546', '20.05.01.01.09.01.01.07.03.06.03', NULL, '03', '裙板连接板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6547', '20.05.01.01.09.01.01.07.03.06.03.01', NULL, '01', '裙板连接板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6548', '20.05.01.01.09.01.01.07.03.06.03.02', NULL, '02', '裙板连接板前段', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6549', '20.05.01.01.09.01.01.07.03.07', NULL, '07', '侧拉门门槛总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('655', '10.09.03.01.01.05.01', NULL, '01', '横拉杆', 'Tie rod', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6550', '20.05.01.01.09.01.01.07.03.07.01', NULL, '01', '侧拉门门槛', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6551', '20.05.01.01.09.01.01.07.03.07.02', NULL, '02', '侧滑门电动踏步安装螺母板2总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6552', '20.05.01.01.09.01.01.07.03.07.02.01', NULL, '01', '侧滑门电动踏步安装螺母板2', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6553', '20.05.01.01.09.01.01.07.03.07.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6554', '20.05.01.01.09.01.01.07.03.07.03', NULL, '03', '侧拉门下导轨前安装板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6555', '20.05.01.01.09.01.01.07.03.07.04', NULL, '04', '侧滑门电动踏步安装螺母板2总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6556', '20.05.01.01.09.01.01.07.03.07.04.01', NULL, '01', '侧拉门门槛后加强梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6557', '20.05.01.01.09.01.01.07.03.07.04.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6558', '20.05.01.01.09.01.01.07.03.08', NULL, '08', '后轮罩前裙板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6559', '20.05.01.01.09.01.01.08', NULL, '08', 'B柱内下板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('656', '10.09.03.01.01.05.02', NULL, '02', '球头总成', '11', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6560', '20.05.01.01.09.01.02', NULL, '02', '后尾板下板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6561', '20.05.01.01.09.01.02.01', NULL, '01', '后尾板下板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6562', '20.05.01.01.09.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6563', '20.05.01.01.09.01.03', NULL, '03', '前风窗下横梁总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6564', '20.05.01.01.09.01.03.01', NULL, '01', '前风窗下横梁分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6565', '20.05.01.01.09.01.03.01.01', NULL, '01', '前风窗下横梁', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6566', '20.05.01.01.09.01.03.01.98', NULL, '98', '紧固件', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('65664FBD79D14C338FD', '10.07.02.04', '', '04', '紧固件', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6567', '20.05.01.01.09.01.03.02', NULL, '02', '支架', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6568', '20.05.01.01.09.01.04', NULL, '04', '侧围总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6569', '20.05.01.01.09.01.04.01', NULL, '01', '侧围内板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('657', '10.09.03.01.01.06', NULL, '06', '转向节销', 'Steering knuckle pin', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6570', '20.05.01.01.09.01.04.01.01', NULL, '01', '中侧围上加强板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6571', '20.05.01.01.09.01.04.01.01.01', NULL, '01', '中侧围内板上加强板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6572', '20.05.01.01.09.01.04.01.01.02', NULL, '02', '后侧围内板上加强板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6573', '20.05.01.01.09.01.04.01.01.03', NULL, '03', '横梁连接件3', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6574', '20.05.01.01.09.01.04.01.01.04', NULL, '04', '横梁连接件3总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6575', '20.05.01.01.09.01.04.01.01.04.01', NULL, '01', '横梁连接件3', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6576', '20.05.01.01.09.01.04.01.01.04.98', NULL, '98', '紧固件', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6577', '20.05.01.01.09.01.04.01.02', NULL, '02', '中侧围内板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6578', '20.05.01.01.09.01.04.01.02.01', NULL, '01', '中侧围内板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6579', '20.05.01.01.09.01.04.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('658', '10.09.03.01.01.07', NULL, '07', '止推轴承', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6580', '20.05.01.01.09.01.04.01.03', NULL, '03', '后侧围内板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6581', '20.05.01.01.09.01.04.01.04', NULL, '04', '支架', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6582', '20.05.01.01.09.01.04.01.05', NULL, '05', '侧开启窗安装螺母板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6583', '20.05.01.01.09.01.04.01.05.01', NULL, '01', '螺母板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6584', '20.05.01.01.09.01.04.01.05.98', NULL, '98', '紧固件', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6585', '20.05.01.01.09.01.04.02', NULL, '02', '侧围分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6586', '20.05.01.01.09.01.04.02.01', NULL, '01', '前侧围内板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6587', '20.05.01.01.09.01.04.02.01.01', NULL, '01', 'A柱内上板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6588', '20.05.01.01.09.01.04.02.01.01.01', NULL, '01', 'A柱内上板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6589', '20.05.01.01.09.01.04.02.01.01.01.01', NULL, '01', 'A柱内上板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('659', '10.09.03.01.01.08', NULL, '08', '转向节衬套', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6590', '20.05.01.01.09.01.04.02.01.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6591', '20.05.01.01.09.01.04.02.01.02', NULL, '02', 'B柱内板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6592', '20.05.01.01.09.01.04.02.01.02.01', NULL, '01', 'B柱内板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6593', '20.05.01.01.09.01.04.02.01.02.01.01', NULL, '01', '安全带安装螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6594', '20.05.01.01.09.01.04.02.01.02.01.01.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6595', '20.05.01.01.09.01.04.02.01.02.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6596', '20.05.01.01.09.01.04.02.01.02.01.02', NULL, '02', 'B柱内板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6597', '20.05.01.01.09.01.04.02.01.02.01.02.01', NULL, '01', 'B柱内板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6598', '20.05.01.01.09.01.04.02.01.02.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6599', '20.05.01.01.09.01.04.02.01.02.01.03', NULL, '03', '司机安全带卷收器螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('66', '10.02.01.16.01', NULL, '01', '传感器', 'Sensor', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('660', '10.09.03.01.01.09', NULL, '09', '滚针轴承', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6600', '20.05.01.01.09.01.04.02.01.02.01.03.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6601', '20.05.01.01.09.01.04.02.01.02.01.03.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6602', '20.05.01.01.09.01.04.02.01.02.02', NULL, '02', 'B柱内上板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6603', '20.05.01.01.09.01.04.02.01.02.02.01', NULL, '01', 'B柱内上板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6604', '20.05.01.01.09.01.04.02.01.02.02.02', NULL, '02', '安全带安装螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6605', '20.05.01.01.09.01.04.02.01.02.02.02.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6606', '20.05.01.01.09.01.04.02.01.02.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6607', '20.05.01.01.09.01.04.02.01.02.03', NULL, '03', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6608', '20.05.01.01.09.01.04.02.01.02.04', NULL, '04', '横梁连接件1', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6609', '20.05.01.01.09.01.04.02.02', NULL, '02', '侧围外板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('661', '10.09.03.01.01.10', NULL, '10', '转向直拉杆总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6610', '20.05.01.01.09.01.04.02.02.01', NULL, '01', '前侧围外板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6611', '20.05.01.01.09.01.04.02.02.01.01', NULL, '01', '前侧围外上板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6612', '20.05.01.01.09.01.04.02.02.01.02', NULL, '02', '前侧围外板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6613', '20.05.01.01.09.01.04.02.02.01.02.01', NULL, '01', '翼子板加强梁总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6614', '20.05.01.01.09.01.04.02.02.01.02.01.01', NULL, '01', '翼子板加强梁本体总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6615', '20.05.01.01.09.01.04.02.02.01.02.01.01.01', NULL, '01', '翼子板加强梁', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6616', '20.05.01.01.09.01.04.02.02.01.02.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6617', '20.05.01.01.09.01.04.02.02.01.02.01.02', NULL, '02', '发动机罩铰链螺母板总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6618', '20.05.01.01.09.01.04.02.02.01.02.01.02.01', NULL, '01', '螺母板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6619', '20.05.01.01.09.01.04.02.02.01.02.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('662', '10.09.03.01.01.11', NULL, '11', '转向横拉杆总成', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6620', '20.05.01.01.09.01.04.02.02.01.02.02', NULL, '02', '前侧围后上加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6621', '20.05.01.01.09.01.04.02.02.01.02.03', NULL, '03', '前门限位器加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6622', '20.05.01.01.09.01.04.02.02.01.02.03.01', NULL, '01', '前门限位器加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6623', '20.05.01.01.09.01.04.02.02.01.02.03.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6624', '20.05.01.01.09.01.04.02.02.01.02.04', NULL, '04', '前侧围外板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6625', '20.05.01.01.09.01.04.02.02.01.02.04.01', NULL, '01', '前侧围外板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6626', '20.05.01.01.09.01.04.02.02.01.02.04.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6627', '20.05.01.01.09.01.04.02.02.01.02.05', NULL, '05', '前轮罩连接板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6628', '20.05.01.01.09.01.04.02.02.01.02.05.01', NULL, '01', '前轮罩连接板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6629', '20.05.01.01.09.01.04.02.02.01.02.05.02', NULL, '02', '前轮罩加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('663', '10.09.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6630', '20.05.01.01.09.01.04.02.02.01.02.06', NULL, '06', '前门锁扣支架总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6631', '20.05.01.01.09.01.04.02.02.01.02.06.01', NULL, '01', '支架', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6632', '20.05.01.01.09.01.04.02.02.01.02.06.02', NULL, '02', '锁扣安装板本体总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6633', '20.05.01.01.09.01.04.02.02.01.02.06.02.01', NULL, '01', '锁扣安装板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6634', '20.05.01.01.09.01.04.02.02.01.02.06.02.98', NULL, '98', '紧固件', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6635', '20.05.01.01.09.01.04.02.02.01.03', NULL, '03', 'A柱加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6636', '20.05.01.01.09.01.04.02.02.01.03.01', NULL, '01', 'A柱上加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6637', '20.05.01.01.09.01.04.02.02.01.03.01.01', NULL, '01', 'A柱上加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6638', '20.05.01.01.09.01.04.02.02.01.03.01.02', NULL, '02', '前门铰链加强板总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6639', '20.05.01.01.09.01.04.02.02.01.03.01.02.01', NULL, '01', '前门铰链加强板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('664', '10.09.03.01.02', NULL, '02', '前轴轮毂总成', 'Assembly of front axle hub', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6640', '20.05.01.01.09.01.04.02.02.01.03.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6641', '20.05.01.01.09.01.04.02.02.01.03.02', NULL, '02', 'A柱下加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6642', '20.05.01.01.09.01.04.02.02.01.03.02.01', NULL, '01', 'A柱下加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6643', '20.05.01.01.09.01.04.02.02.02', NULL, '02', '中侧围外板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6644', '20.05.01.01.09.01.04.02.02.02.01', NULL, '01', '中侧围外板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6645', '20.05.01.01.09.01.04.02.02.02.02', NULL, '02', '中顶边梁外板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6646', '20.05.01.01.09.01.04.02.02.02.03', NULL, '03', '中侧围板内下加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6647', '20.05.01.01.09.01.04.02.02.03', NULL, '03', '后侧围外板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6648', '20.05.01.01.09.01.04.02.02.03.01', NULL, '01', '后侧围外板后下加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6649', '20.05.01.01.09.01.04.02.02.03.02', NULL, '02', 'D柱内板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('665', '10.09.03.01.02.01', NULL, '01', '前轮毂', 'Front hub', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6650', '20.05.01.01.09.01.04.02.02.03.02.01', NULL, '01', 'D柱内上板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6651', '20.05.01.01.09.01.04.02.02.03.02.01.01', NULL, '01', 'D柱内上板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6652', '20.05.01.01.09.01.04.02.02.03.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6653', '20.05.01.01.09.01.04.02.02.03.02.02', NULL, '02', 'D柱内板分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6654', '20.05.01.01.09.01.04.02.02.03.02.02.01', NULL, '01', 'D柱内板本体总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6655', '20.05.01.01.09.01.04.02.02.03.02.02.01.01', NULL, '01', 'D柱内板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6656', '20.05.01.01.09.01.04.02.02.03.02.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6657', '20.05.01.01.09.01.04.02.02.03.02.02.02', NULL, '02', '后门限位器螺母板本体总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6658', '20.05.01.01.09.01.04.02.02.03.02.02.02.01', NULL, '01', '螺母板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6659', '20.05.01.01.09.01.04.02.02.03.02.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('666', '10.09.03.01.02.02', NULL, '02', '制动鼓', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6660', '20.05.01.01.09.01.04.02.02.03.02.03', NULL, '03', 'D柱内下板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6661', '20.05.01.01.09.01.04.02.02.03.02.04', NULL, '04', '裙板加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6662', '20.05.01.01.09.01.04.02.02.03.03', NULL, '03', '后侧围外板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6663', '20.05.01.01.09.01.04.02.02.03.04', NULL, '04', '后顶边梁外板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6664', '20.05.01.01.09.01.04.02.02.03.05', NULL, '05', '后轮罩加强板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6665', '20.05.01.01.09.01.04.02.02.03.05.01', NULL, '01', '后轮罩加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6666', '20.05.01.01.09.01.04.02.02.03.05.02', NULL, '02', '后轮罩前加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6667', '20.05.01.01.09.01.04.02.02.03.05.03', NULL, '03', '后轮罩后加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6668', '20.05.01.01.09.01.04.02.02.03.05.04', NULL, '04', '后侧围锁钩螺母板组件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6669', '20.05.01.01.09.01.04.02.02.03.05.04.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('667', '10.09.03.01.02.03', NULL, '03', '制动盘', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6670', '20.05.01.01.09.01.04.02.02.03.05.04.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6671', '20.05.01.01.09.01.04.02.02.03.06', NULL, '06', 'D柱外板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6672', '20.05.01.01.09.01.04.02.02.03.06.01', NULL, '01', '尾灯安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6673', '20.05.01.01.09.01.04.02.02.03.06.02', NULL, '02', '后门框板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6674', '20.05.01.01.09.01.04.02.02.03.06.02.01', NULL, '01', '后门框板分总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6675', '20.05.01.01.09.01.04.02.02.03.06.02.01.01', NULL, '01', '尾灯上堵板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6676', '20.05.01.01.09.01.04.02.02.03.06.02.01.02', NULL, '02', '后门框板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6677', '20.05.01.01.09.01.04.02.02.03.06.02.01.03', NULL, '03', '后门上铰链安装支架总成', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6678', '20.05.01.01.09.01.04.02.02.03.06.02.01.03.01', NULL, '01', '支架', '11', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6679', '20.05.01.01.09.01.04.02.02.03.06.02.01.03.02', NULL, '02', '后门上铰链限位板总成', '11', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('668', '10.09.03.01.02.04', NULL, '04', '轮毂内轴承', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6680', '20.05.01.01.09.01.04.02.02.03.06.02.01.03.02.01', NULL, '01', '后门上铰链限位板', '11', '1', NULL, '16', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6681', '20.05.01.01.09.01.04.02.02.03.06.02.01.03.02.02', NULL, '02', '后门上铰链螺母板总成', '11', '1', NULL, '16', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6682', '20.05.01.01.09.01.04.02.02.03.06.02.01.03.02.02.01', NULL, '01', '螺母板', '11', '1', NULL, '17', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6683', '20.05.01.01.09.01.04.02.02.03.06.02.01.03.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '17', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6684', '20.05.01.01.09.01.04.02.02.03.06.02.02', NULL, '02', 'D柱外板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6685', '20.05.01.01.09.01.04.02.02.03.06.02.03', NULL, '03', 'D柱外板上部', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6686', '20.05.01.01.09.01.04.02.02.03.06.02.04', NULL, '04', '尾板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6687', '20.05.01.01.09.01.04.02.02.03.06.02.05', NULL, '05', '尾板连接板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6688', '20.05.01.01.09.01.04.02.02.03.06.03', NULL, '03', '后门框板上加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6689', '20.05.01.01.09.01.04.02.02.03.06.04', NULL, '04', '尾板加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('669', '10.09.03.01.02.05', NULL, '05', '轮毂外轴承', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6690', '20.05.01.01.09.01.04.02.02.03.06.05', NULL, '05', '后门下铰链安装支架总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6691', '20.05.01.01.09.01.04.02.02.03.06.05.01', NULL, '01', '后门下铰链安装支架分总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6692', '20.05.01.01.09.01.04.02.02.03.06.05.01.01', NULL, '01', '支架', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6693', '20.05.01.01.09.01.04.02.02.03.06.05.01.02', NULL, '02', '后门下铰链加强板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6694', '20.05.01.01.09.01.04.02.02.03.06.05.02', NULL, '02', '后门下铰链限位板总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6695', '20.05.01.01.09.01.04.02.02.03.06.05.02.01', NULL, '01', '后门下铰链限位板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6696', '20.05.01.01.09.01.04.02.02.03.06.05.02.02', NULL, '02', '后门下铰链螺母板总成', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6697', '20.05.01.01.09.01.04.02.02.03.06.05.02.02.01', NULL, '01', '螺母板', '11', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6698', '20.05.01.01.09.01.04.02.02.03.06.05.02.02.98', NULL, '98', '紧固件', '11', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6699', '20.05.01.01.09.01.04.02.02.04', NULL, '04', 'C柱加强板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('66E7A06966504408AD5', '30.07.01.14.08', '', '08', '支架', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('67', '10.02.01.16.02', NULL, '02', '副水箱本体', 'Auxiliary water tank body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('670', '10.09.03.01.02.06', NULL, '06', '密封垫', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6700', '20.05.01.01.09.01.04.02.02.04.01', NULL, '01', 'C柱上加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6701', '20.05.01.01.09.01.04.02.02.04.02', NULL, '02', 'C柱加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6702', '20.05.01.01.09.01.04.02.02.04.03', NULL, '03', 'C柱内下撑板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6703', '20.05.01.01.09.01.04.02.02.04.04', NULL, '04', 'C柱下加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6704', '20.05.01.01.09.01.04.02.02.04.05', NULL, '05', 'C柱上加强板1', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6705', '20.05.01.01.09.01.04.03', NULL, '03', '后侧围外板前封板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6706', '20.05.01.01.09.01.04.03.01', NULL, '01', '后侧围内板上加强板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6707', '20.05.01.01.09.01.04.03.02', NULL, '02', 'C柱内板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6708', '20.05.01.01.09.01.04.03.03', NULL, '03', '横梁连接件3', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6709', '20.05.01.01.09.01.04.03.04', NULL, '04', '滑门后上补角', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('671', '10.09.03.01.02.07', NULL, '07', '车轮螺栓', 'Wheel', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6710', '20.05.01.01.09.01.04.03.05', NULL, '05', '侧开启窗安装螺母板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6711', '20.05.01.01.09.01.04.03.05.01', NULL, '01', '螺母板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6712', '20.05.01.01.09.01.04.03.05.01.01', NULL, '01', 'A柱扶手安装支架分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6713', '20.05.01.01.09.01.04.03.05.01.01.01', NULL, '01', '支架', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6714', '20.05.01.01.09.01.04.03.05.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6715', '20.05.01.01.09.01.04.03.05.01.02', NULL, '02', 'A柱下扶手安装支架分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6716', '20.05.01.01.09.01.04.03.05.01.02.01', NULL, '01', '支架', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6717', '20.05.01.01.09.01.04.03.05.01.02.02', NULL, '02', 'B柱内上板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6718', '20.05.01.01.09.01.04.03.05.01.02.03', NULL, '03', '横梁连接件2', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6719', '20.05.01.01.09.01.04.03.05.01.02.04', NULL, '04', '上滑道前堵板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('672', '10.09.03.01.02.08', NULL, '08', '车轮螺母', 'Wheel nut', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6720', '20.05.01.01.09.01.04.03.05.01.02.04.01', NULL, '01', '上滑道前堵板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6721', '20.05.01.01.09.01.04.03.05.01.02.04.02', NULL, '02', '上滑道前堵板加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6722', '20.05.01.01.09.01.04.03.05.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6723', '20.05.01.01.09.01.04.03.05.01.03', NULL, '03', 'B柱内板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6724', '20.05.01.01.09.01.04.03.05.01.03.01', NULL, '01', '安全带安装螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6725', '20.05.01.01.09.01.04.03.05.01.03.01.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6726', '20.05.01.01.09.01.04.03.05.01.03.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6727', '20.05.01.01.09.01.04.03.05.01.03.02', NULL, '02', 'B柱内扶手上安装支架分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6728', '20.05.01.01.09.01.04.03.05.01.03.02.01', NULL, '01', '支架', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6729', '20.05.01.01.09.01.04.03.05.01.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('673', '10.09.03.01.02.09', NULL, '09', 'ABS 探头总成', 'ABS probe assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6730', '20.05.01.01.09.01.04.03.05.01.03.03', NULL, '03', '司机安全带卷收器螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6731', '20.05.01.01.09.01.04.03.05.01.03.03.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6732', '20.05.01.01.09.01.04.03.05.01.03.03.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6733', '20.05.01.01.09.01.04.03.05.01.04', NULL, '04', '支架', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6734', '20.05.01.01.09.01.04.03.05.01.05', NULL, '05', '前顶边梁内板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6735', '20.05.01.01.09.01.04.03.05.02', NULL, '02', '前顶边梁加强板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6736', '20.05.01.01.09.01.04.03.05.02.01', NULL, '01', '前顶边梁加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6737', '20.05.01.01.09.01.04.03.05.02.02', NULL, '02', '横梁连接件3', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6738', '20.05.01.01.09.01.04.03.05.02.03', NULL, '03', '上滑道后堵板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6739', '20.05.01.01.09.01.04.03.05.02.03.01', NULL, '01', '前侧围外板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('674', '10.09.03.01.02.10', NULL, '10', 'ABS 衬套', 'ABS bushing', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6740', '20.05.01.01.09.01.04.03.05.02.03.01.01', NULL, '01', '前侧围外板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6741', '20.05.01.01.09.01.04.03.05.02.03.01.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6742', '20.05.01.01.09.01.04.03.05.02.03.02', NULL, '02', '滑门上限位器安装板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6743', '20.05.01.01.09.01.04.03.05.02.03.02.01', NULL, '01', '滑门上限位器安装板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6744', '20.05.01.01.09.01.04.03.05.02.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6745', '20.05.01.01.09.01.04.03.05.02.03.03', NULL, '03', '滑门下限位器安装板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6746', '20.05.01.01.09.01.04.03.05.02.03.03.01', NULL, '01', '滑门下限位器安装板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6747', '20.05.01.01.09.01.04.03.05.02.03.03.02', NULL, '02', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6748', '20.05.01.01.09.01.04.03.05.02.03.04', NULL, '04', '滑门防脱钩安装板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6749', '20.05.01.01.09.01.04.03.05.02.03.04.01', NULL, '01', '滑门防脱钩安装板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('675', '10.09.03.01.02.11', NULL, '11', 'ABS 齿圈', 'ABS gear ring', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6750', '20.05.01.01.09.01.04.03.05.02.03.04.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6751', '20.05.01.01.09.01.04.03.05.02.03.05', NULL, '05', '螺母板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6752', '20.05.01.01.09.01.04.03.05.02.03.06', NULL, '06', 'A柱上加强板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6753', '20.05.01.01.09.01.04.03.05.02.03.06.01', NULL, '01', 'A柱上加强板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6754', '20.05.01.01.09.01.04.03.05.03', NULL, '03', '踏步外板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6755', '20.05.01.01.09.01.04.03.05.04', NULL, '04', '中顶边梁外板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6756', '20.05.01.01.09.01.04.03.05.05', NULL, '05', 'C柱总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6757', '20.05.01.01.09.01.04.03.05.05.01', NULL, '01', 'C柱中下外板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6758', '20.05.01.01.09.01.04.03.05.05.02', NULL, '02', 'C柱中上外板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6759', '20.05.01.01.09.01.04.03.05.05.03', NULL, '03', 'C柱外下板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('676', '10.09.03.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6760', '20.05.01.01.09.01.04.03.05.05.04', NULL, '04', 'C柱外上板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6761', '20.05.01.01.09.01.04.03.05.05.04.01', NULL, '01', 'C柱外上板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6762', '20.05.01.01.09.01.04.03.05.05.04.02', NULL, '02', '滑门副锁加强板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6763', '20.05.01.01.09.01.04.03.05.05.04.03', NULL, '03', '滑门副锁安装螺母板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6764', '20.05.01.01.09.01.04.03.05.05.04.03.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6765', '20.05.01.01.09.01.04.03.05.05.04.03.98', NULL, '98', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6766', '20.05.01.01.09.01.04.03.05.05.05', NULL, '05', '中滑道前堵板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6767', '20.05.01.01.09.01.04.03.05.05.06', NULL, '06', '中滑道前安装板本体总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6768', '20.05.01.01.09.01.04.03.05.05.06.01', NULL, '01', '中滑道前安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6769', '20.05.01.01.09.01.04.03.05.05.06.98', NULL, '98', '紧固件', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('677', '10.09.03.01.03', NULL, '03', '前轴制动器总成', 'Front axle brake assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6770', '20.05.01.01.09.01.04.03.05.05.07', NULL, '07', '滑门锁扣安装支架总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6771', '20.05.01.01.09.01.04.03.05.05.07.01', NULL, '01', '支架', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6772', '20.05.01.01.09.01.04.03.05.05.07.02', NULL, '02', '滑门锁扣螺母板本体总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6773', '20.05.01.01.09.01.04.03.05.05.07.02.01', NULL, '01', '螺母板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6774', '20.05.01.01.09.01.04.03.05.05.07.02.02', NULL, '02', '紧固件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6775', '20.05.01.01.09.01.04.03.05.06', NULL, '06', '后侧围外板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6776', '20.05.01.01.09.01.04.03.05.06.01', NULL, '01', '后侧围外板后下加强板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6777', '20.05.01.01.09.01.04.03.05.98', NULL, '98', '紧固件', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6778', '20.05.01.01.09.01.05', NULL, '05', '顶盖总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6779', '20.05.01.01.09.01.05.01', NULL, '01', '顶盖前部', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('678', '10.09.03.01.03.01', NULL, '01', '间隙调整臂', 'Clearance adjuster', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6780', '20.05.01.01.09.01.05.02', NULL, '02', '顶盖中部', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6781', '20.05.01.01.09.01.05.03', NULL, '03', '顶盖后部', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6782', '20.05.01.01.09.01.05.04', NULL, '04', '顶盖横梁总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6783', '20.05.01.01.09.01.05.04.01', NULL, '01', '顶盖横梁', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6784', '20.05.01.01.09.01.05.04.98', NULL, '98', '紧固件', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6785', '20.05.01.01.09.01.06', NULL, '06', '顶盖第二横梁', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6786', '20.05.01.01.09.01.07', NULL, '07', '顶盖前横梁', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6787', '20.05.01.01.09.01.08', NULL, '08', '顶盖横梁', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6788', '20.05.01.01.09.01.09', NULL, '09', '顶蒸发器安装支架总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6789', '20.05.01.01.09.01.09.01', NULL, '01', '顶盖横梁', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('679', '10.09.03.01.03.02', NULL, '02', '制动气室', 'Diaphragm brake cylinder', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6790', '20.05.01.01.09.01.09.02', NULL, '02', '顶蒸安装支架总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6791', '20.05.01.01.09.01.09.02.01', NULL, '01', '支架', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6792', '20.05.01.01.09.01.09.02.98', NULL, '98', '紧固件', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6793', '20.05.01.01.09.01.10', NULL, '10', '顶盖后横梁总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6794', '20.05.01.01.09.01.10.01', NULL, '01', '顶蒸侧支架总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6795', '20.05.01.01.09.01.10.01.01', NULL, '01', '顶蒸安装板1总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6796', '20.05.01.01.09.01.10.01.01.01', NULL, '01', '顶蒸安装板1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6797', '20.05.01.01.09.01.10.01.01.98', NULL, '98', '紧固件', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6798', '20.05.01.01.09.01.10.01.02', NULL, '02', '支架', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6799', '20.05.01.01.09.01.10.01.03', NULL, '03', '顶蒸安装板2', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('68', '10.02.01.16.03', NULL, '03', '副水箱盖', 'Auxiliary water tank cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('680', '10.09.03.01.03.03', NULL, '03', '液压制动分泵', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6800', '20.05.01.01.09.01.10.02', NULL, '02', '顶蒸侧支架总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6801', '20.05.01.01.09.01.10.02.01', NULL, '01', '顶蒸安装板1总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6802', '20.05.01.01.09.01.10.02.01.01', NULL, '01', '顶蒸安装板1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6803', '20.05.01.01.09.01.10.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6804', '20.05.01.01.09.01.10.02.02', NULL, '02', '顶蒸安装板2', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6805', '20.05.01.01.09.01.10.03', NULL, '03', '顶盖后横梁', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6806', '20.05.01.01.09.01.10.04', NULL, '04', '后门上辅助锁扣限位板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6807', '20.05.01.01.09.01.10.04.01', NULL, '01', '后门上辅助锁扣限位板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6808', '20.05.01.01.09.01.10.04.02', NULL, '02', '后门上辅助锁扣螺母板本体总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6809', '20.05.01.01.09.01.10.04.02.01', NULL, '01', '螺母板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('681', '10.09.03.01.03.04', NULL, '04', '制动底板', 'Brake base plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6810', '20.05.01.01.09.01.10.04.02.98', NULL, '98', '紧固件', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6811', '20.05.01.01.09.01.11', NULL, '11', '顶盖尾部外板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6812', '20.05.01.01.09.01.12', NULL, '12', '紧固件', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6813', '20.05.01.01.09.02', NULL, '02', '后侧围外上板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6814', '20.05.01.01.09.02.01', NULL, '01', '后盲窗', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6815', '20.05.01.01.09.02.02', NULL, '02', '裙板支撑板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6816', '20.05.01.01.09.03', NULL, '03', '中盲窗', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6817', '20.05.01.01.09.04', NULL, '04', '车身下车体焊接总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6818', '20.05.01.01.09.04.01', NULL, '01', '车身前围前地板焊接总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6819', '20.05.01.01.09.04.01.01', NULL, '01', '前围焊接总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('682', '10.09.03.01.03.05', NULL, '05', '制动凸轮轴', 'Brake camshaft', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6820', '20.05.01.01.09.04.01.01.01', NULL, '01', '前围板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6821', '20.05.01.01.09.04.01.01.01.01', NULL, '01', '前围板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6822', '20.05.01.01.09.04.01.01.01.01.01', NULL, '01', '前围板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6823', '20.05.01.01.09.04.01.01.01.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6824', '20.05.01.01.09.04.01.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6825', '20.05.01.01.09.04.01.01.01.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6826', '20.05.01.01.09.04.01.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6827', '20.05.01.01.09.04.01.01.01.03.01', NULL, '01', '前地板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6828', '20.05.01.01.09.04.01.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6829', '20.05.01.01.09.04.01.01.01.04', NULL, '04', '前地板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('683', '10.09.03.01.03.06', NULL, '06', '气室支架', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6830', '20.05.01.01.09.04.01.01.01.05', NULL, '05', '真空助力器固定托板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6831', '20.05.01.01.09.04.01.01.01.05.01', NULL, '01', '真空助力器固定托板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6832', '20.05.01.01.09.04.01.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6833', '20.05.01.01.09.04.01.01.01.06', NULL, '06', '发动机主盖板锁钩', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6834', '20.05.01.01.09.04.01.01.01.07', NULL, '07', '安装板', 'Installation plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6835', '20.05.01.01.09.04.01.01.01.08', NULL, '08', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6836', '20.05.01.01.09.04.01.01.01.09', NULL, '09', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6837', '20.05.01.01.09.04.01.01.01.09.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6838', '20.05.01.01.09.04.01.01.01.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6839', '20.05.01.01.09.04.01.01.01.10', NULL, '10', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('683913D1C512436D888', '60.06.01.11.11', '', '11', 'PET扎带', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('684', '10.09.03.01.03.07', NULL, '07', '制动蹄总成', 'Brake shoe assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6840', '20.05.01.01.09.04.01.01.01.11', NULL, '11', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6841', '20.05.01.01.09.04.01.01.01.11.01', NULL, '01', '加强背板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6842', '20.05.01.01.09.04.01.01.01.11.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6843', '20.05.01.01.09.04.01.01.01.12', NULL, '12', '加强背板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6844', '20.05.01.01.09.04.01.01.01.13', NULL, '13', '前地板下横梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6845', '20.05.01.01.09.04.01.01.01.13.01', NULL, '01', '通道横梁分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6846', '20.05.01.01.09.04.01.01.01.13.01.01', NULL, '01', '通道横梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6847', '20.05.01.01.09.04.01.01.01.13.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6848', '20.05.01.01.09.04.01.01.01.13.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6849', '20.05.01.01.09.04.01.01.01.13.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('685', '10.09.03.01.03.07.01', NULL, '01', '制动摩擦片', 'Brake friction plate', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6850', '20.05.01.01.09.04.01.01.01.13.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6851', '20.05.01.01.09.04.01.01.01.14', NULL, '14', '安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6852', '20.05.01.01.09.04.01.01.01.14.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6853', '20.05.01.01.09.04.01.01.01.14.02', NULL, '02', '安装背板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6854', '20.05.01.01.09.04.01.01.01.14.02.01', NULL, '01', '安装背板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6855', '20.05.01.01.09.04.01.01.01.14.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6856', '20.05.01.01.09.04.01.01.01.14.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6857', '20.05.01.01.09.04.01.01.01.15', NULL, '15', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6858', '20.05.01.01.09.04.01.01.01.15.01', NULL, '01', '加强梁分总成', 'Reinforcing beam sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6859', '20.05.01.01.09.04.01.01.01.15.01.01', NULL, '01', '加强梁', 'Reinforcing beam', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('686', '10.09.03.01.03.07.02', NULL, '02', '制动蹄', 'Brake shoe', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6860', '20.05.01.01.09.04.01.01.01.15.01.02', NULL, '02', '焊接式单头夹片', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6861', '20.05.01.01.09.04.01.01.01.15.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6862', '20.05.01.01.09.04.01.01.01.15.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6863', '20.05.01.01.09.04.01.01.01.15.03', NULL, '03', '支架分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6864', '20.05.01.01.09.04.01.01.01.15.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6865', '20.05.01.01.09.04.01.01.01.15.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6866', '20.05.01.01.09.04.01.01.02', NULL, '02', '前围板横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6867', '20.05.01.01.09.04.01.01.02.01', NULL, '01', '前围板横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6868', '20.05.01.01.09.04.01.01.02.01.01', NULL, '01', '前围板横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6869', '20.05.01.01.09.04.01.01.02.01.02', NULL, '02', '发动机后立板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('687', '10.09.03.01.03.08', NULL, '08', '蹄片磨损报警装置', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6870', '20.05.01.01.09.04.01.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6871', '20.05.01.01.09.04.01.01.02.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6872', '20.05.01.01.09.04.01.01.02.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6873', '20.05.01.01.09.04.01.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6874', '20.05.01.01.09.04.01.01.02.03', NULL, '03', '加强梁', 'Reinforcing beam', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6875', '20.05.01.01.09.04.01.01.02.04', NULL, '04', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6876', '20.05.01.01.09.04.01.01.02.05', NULL, '05', '纵梁前段总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6877', '20.05.01.01.09.04.01.01.02.05.01', NULL, '01', '纵梁前段分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6878', '20.05.01.01.09.04.01.01.02.05.01.01', NULL, '01', '纵梁前段', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6879', '20.05.01.01.09.04.01.01.02.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('688', '10.09.03.01.03.09', NULL, '09', '回位弹簧', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6880', '20.05.01.01.09.04.01.01.02.05.02', NULL, '02', '纵梁前段前盖板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6881', '20.05.01.01.09.04.01.01.02.05.02.01', NULL, '01', '纵梁前段前盖板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6882', '20.05.01.01.09.04.01.01.02.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6883', '20.05.01.01.09.04.01.01.02.05.03', NULL, '03', '纵梁前段后盖板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6884', '20.05.01.01.09.04.01.01.02.05.04', NULL, '04', '纵梁前段上盖板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6885', '20.05.01.01.09.04.01.01.02.05.05', NULL, '05', '水箱横梁安装板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6886', '20.05.01.01.09.04.01.01.02.05.05.01', NULL, '01', '水箱横梁安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6887', '20.05.01.01.09.04.01.01.02.05.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6888', '20.05.01.01.09.04.01.01.02.05.06', NULL, '06', '前组合灯定位板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6889', '20.05.01.01.09.04.01.01.02.05.07', NULL, '07', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('689', '10.09.03.01.03.10', NULL, '10', '回位弹簧定位销', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6890', '20.05.01.01.09.04.01.01.02.05.08', NULL, '08', '前纵梁前段连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6891', '20.05.01.01.09.04.01.01.02.06', NULL, '06', '发动机后立板连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6892', '20.05.01.01.09.04.01.01.02.07', NULL, '07', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6893', '20.05.01.01.09.04.01.01.02.08', NULL, '08', '发动机后立板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6894', '20.05.01.01.09.04.01.01.03', NULL, '03', 'A柱内板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6895', '20.05.01.01.09.04.01.01.03.01', NULL, '01', 'A柱内板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6896', '20.05.01.01.09.04.01.01.03.01.01', NULL, '01', 'A柱内板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6897', '20.05.01.01.09.04.01.01.03.01.01.01', NULL, '01', '前地板纵梁后段', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6898', '20.05.01.01.09.04.01.01.03.01.01.02', NULL, '02', '支架分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6899', '20.05.01.01.09.04.01.01.03.01.01.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('68D1C77EF68940C1AA1', '30.01.01.09', '', '09', '后悬架支架总成-多连杆', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('69', '10.02.01.16.04', NULL, '04', '单向阀', 'One-way valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('690', '10.09.03.01.03.11', NULL, '11', '防尘罩', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6900', '20.05.01.01.09.04.01.01.03.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6901', '20.05.01.01.09.04.01.01.03.01.01.03', NULL, '03', '线束固定背板分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6902', '20.05.01.01.09.04.01.01.03.01.01.03.01', NULL, '01', '线束固定背板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6903', '20.05.01.01.09.04.01.01.03.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6904', '20.05.01.01.09.04.01.01.03.01.02', NULL, '02', '前地板纵梁前段', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6905', '20.05.01.01.09.04.01.01.03.01.03', NULL, '03', '机舱立板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6906', '20.05.01.01.09.04.01.01.03.01.03.01', NULL, '01', '机舱立板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6907', '20.05.01.01.09.04.01.01.03.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6908', '20.05.01.01.09.04.01.01.03.01.04', NULL, '04', '前地板纵梁后段总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6909', '20.05.01.01.09.04.01.01.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('691', '10.09.03.01.03.12', NULL, '12', '制动蹄销轴', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6910', '20.05.01.01.09.04.01.01.03.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6911', '20.05.01.01.09.04.01.01.03.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6912', '20.05.01.01.09.04.01.01.03.02.02', NULL, '02', '导向销', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6913', '20.05.01.01.09.04.01.01.03.02.02.01', NULL, '01', '前轮罩内板侧板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6914', '20.05.01.01.09.04.01.01.03.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6915', '20.05.01.01.09.04.01.01.03.02.03', NULL, '03', '前轮罩内板连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6916', '20.05.01.01.09.04.01.01.03.02.04', NULL, '04', '前轮罩内板侧板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6917', '20.05.01.01.09.04.01.01.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6918', '20.05.01.01.09.04.01.01.03.03', NULL, '03', '前轮罩内板后板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6919', '20.05.01.01.09.04.01.01.03.03.01', NULL, '01', '前翼子板侧挡板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('692', '10.09.03.01.03.13', NULL, '13', '安装板', '11', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6920', '20.05.01.01.09.04.01.01.03.03.01.01', NULL, '01', '前翼子板侧挡板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6921', '20.05.01.01.09.04.01.01.03.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6922', '20.05.01.01.09.04.01.01.03.03.02', NULL, '02', '支架分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6923', '20.05.01.01.09.04.01.01.03.03.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6924', '20.05.01.01.09.04.01.01.03.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6925', '20.05.01.01.09.04.01.01.03.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6926', '20.05.01.01.09.04.01.01.03.03.04', NULL, '04', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6927', '20.05.01.01.09.04.01.01.03.03.04.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6928', '20.05.01.01.09.04.01.01.03.03.04.02', NULL, '02', '焊接式单头夹片', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6929', '20.05.01.01.09.04.01.01.03.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('693', '10.09.03.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6930', '20.05.01.01.09.04.01.01.03.03.05', NULL, '05', '前翼子板挡板前段分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6931', '20.05.01.01.09.04.01.01.03.03.05.01', NULL, '01', '前翼子板挡板前段', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6932', '20.05.01.01.09.04.01.01.03.03.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6933', '20.05.01.01.09.04.01.01.03.04', NULL, '04', '前轮罩内板侧板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6934', '20.05.01.01.09.04.01.01.03.05', NULL, '05', '前地板纵梁总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6935', '20.05.01.01.09.04.01.01.04', NULL, '04', '雨刮护罩撑板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6936', '20.05.01.01.09.04.01.01.05', NULL, '05', '前风窗下横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6937', '20.05.01.01.09.04.01.01.05.01', NULL, '01', '前风窗下横梁外板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6938', '20.05.01.01.09.04.01.01.05.01.01', NULL, '01', '前风窗下横梁外板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6939', '20.05.01.01.09.04.01.01.05.01.01.01', NULL, '01', '前风窗下横梁外板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('694', '10.09.03.02', NULL, '02', '护套', 'Protective boot', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6940', '20.05.01.01.09.04.01.01.05.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6941', '20.05.01.01.09.04.01.01.05.01.02', NULL, '02', '风口挡板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6942', '20.05.01.01.09.04.01.01.05.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6943', '20.05.01.01.09.04.01.01.05.01.04', NULL, '04', '支架总成', 'Bracket assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6944', '20.05.01.01.09.04.01.01.05.01.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6945', '20.05.01.01.09.04.01.01.05.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6946', '20.05.01.01.09.04.01.01.05.02', NULL, '02', '前风窗下横梁内板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6947', '20.05.01.01.09.04.01.01.05.02.01', NULL, '01', '前风窗下横梁内板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6948', '20.05.01.01.09.04.01.01.05.02.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6949', '20.05.01.01.09.04.01.01.05.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('695', '10.09.03.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6950', '20.05.01.01.09.04.01.01.05.02.04', NULL, '04', '支架总成', 'Bracket assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6951', '20.05.01.01.09.04.01.01.05.02.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6952', '20.05.01.01.09.04.01.01.05.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6953', '20.05.01.01.09.04.01.01.06', NULL, '06', '地板连接板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6954', '20.05.01.01.09.04.01.01.07', NULL, '07', '前轮罩内板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6955', '20.05.01.01.09.04.01.01.08', NULL, '08', '前地板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6956', '20.05.01.01.09.04.01.02', NULL, '02', '前地板焊接总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6957', '20.05.01.01.09.04.02', NULL, '02', '后地板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6958', '20.05.01.01.09.04.02.01', NULL, '01', '支架总成', 'Bracket assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6959', '20.05.01.01.09.04.02.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('69595F4224FD4D80951', '50.01.01.08', '', '08', '气弹簧总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('696', '10.09.03.04', NULL, '04', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6960', '20.05.01.01.09.04.02.01.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6961', '20.05.01.01.09.04.02.02', NULL, '02', '支架', 'Bracket', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6962', '20.05.01.01.09.04.02.03', NULL, '03', '中地板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6963', '20.05.01.01.09.04.02.04', NULL, '04', '中地板连接板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6964', '20.05.01.01.09.04.02.05', NULL, '05', '后地板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6965', '20.05.01.01.09.04.02.06', NULL, '06', '加强件', 'Reinforcing piece', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6966', '20.05.01.01.09.04.02.07', NULL, '07', '发动机后隔热板卡板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6967', '20.05.01.01.09.04.03', NULL, '03', '后轮罩总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6968', '20.05.01.01.09.04.03.01', NULL, '01', '后轮罩', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6969', '20.05.01.01.09.04.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('697', '10.09.03.97', NULL, '97', '安装图', 'Installing Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6970', '20.05.01.01.09.04.04', NULL, '04', '侧围下内板前段总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6971', '20.05.01.01.09.04.04.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6972', '20.05.01.01.09.04.04.02', NULL, '02', '背板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6973', '20.05.01.01.09.04.04.02.01', NULL, '01', '背板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6974', '20.05.01.01.09.04.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6975', '20.05.01.01.09.04.05', NULL, '05', '侧围下内板中段总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6976', '20.05.01.01.09.04.05.01', NULL, '01', '中下裙板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6977', '20.05.01.01.09.04.05.02', NULL, '02', '安全带下背板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6978', '20.05.01.01.09.04.05.02.01', NULL, '01', '安全带下背板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6979', '20.05.01.01.09.04.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('698', '10.09.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6980', '20.05.01.01.09.04.05.03', NULL, '03', '加强件', 'Reinforcing piece', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6981', '20.05.01.01.09.04.05.04', NULL, '04', '安装板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6982', '20.05.01.01.09.04.05.04.01', NULL, '01', '前背板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6983', '20.05.01.01.09.04.05.04.01.01', NULL, '01', '前背板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6984', '20.05.01.01.09.04.05.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6985', '20.05.01.01.09.04.05.04.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6986', '20.05.01.01.09.04.06', NULL, '06', '侧围下内板后段总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6987', '20.05.01.01.09.04.06.01', NULL, '01', '后裙板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6988', '20.05.01.01.09.04.06.02', NULL, '02', '背板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6989', '20.05.01.01.09.04.06.02.01', NULL, '01', '背板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('699', '10.10', NULL, '10', '操纵系统', 'Control system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6990', '20.05.01.01.09.04.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6991', '20.05.01.01.09.04.07', NULL, '07', '侧围下内板前段总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6992', '20.05.01.01.09.04.07.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6993', '20.05.01.01.09.04.07.02', NULL, '02', '背板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6994', '20.05.01.01.09.04.07.02.01', NULL, '01', '背板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6995', '20.05.01.01.09.04.07.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6996', '20.05.01.01.09.04.08', NULL, '08', '侧围内板后段总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6997', '20.05.01.01.09.04.08.01', NULL, '01', '后裙板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6998', '20.05.01.01.09.04.08.02', NULL, '02', '背板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6999', '20.05.01.01.09.04.08.02.01', NULL, '01', '背板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('69C5ADB5FAD44149A2C', '30.07.01.14.97', '', '97', '安装图', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6AD875215E7C4D31BE4', '20.04.01.01.05', '', '05', '右前车门下挡水条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6ADA031FC14940C89DA', '60.06.01.01.14.13.01', '', '01', '电芯连接排-中间连接', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6AEE75248F394CDDBB7', '20.04.05.01.17', '', '17', '后背门玻璃下贴膜', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('6B6D41EAF2B74FCD989', '30.05.04.15', '', '15', '液压泵', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6B9EDE7BDBE649CF9C0', '20.04.03.01.01', '', '01', '充电口调整总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6D7F84AAF6874B59BE5', '20.02.09.06', '', '06', '焊接过孔大胶堵', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6DA128F7C2D54633B9C', '20.03.03.02.20', '', '20', '乘客座靠背骨架总成、', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6EEC1B23CAD54DFB99D', '10.03.01.41', '', '41', '快换接头', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6F40FA62850F4408A2A', '20.04.04.01.01.11.03', '', '03', '前舱盖开关拉线总成', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('6FB9C42EAF0E4887A38', '20.04.06.01.47', '', '47', '右滑门前上加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7', '10.01.01.03', NULL, '03', '风扇护风圈', 'Fan cover', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('70', '10.02.01.16.05', NULL, '05', '软管', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('700', '10.10.01', NULL, '01', '加速传动装置-驾驶室部分', 'Acceleration Drive Device -Driver\'s Cab Part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7000', '20.05.01.01.09.04.08.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7001', '20.05.01.01.09.04.09', NULL, '09', '前踏板盒内板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7002', '20.05.01.01.09.04.09.01', NULL, '01', '前踏板盒内板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7003', '20.05.01.01.09.04.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7004', '20.05.01.01.09.04.10', NULL, '10', '车架总成', 'Frame assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7005', '20.05.01.01.09.04.10.01', NULL, '01', '车架前部总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7006', '20.05.01.01.09.04.10.01.01', NULL, '01', '第四排双人座安装板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7007', '20.05.01.01.09.04.10.01.01.01', NULL, '01', '纵梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7008', '20.05.01.01.09.04.10.01.01.01.01', NULL, '01', '纵梁前段总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7009', '20.05.01.01.09.04.10.01.01.01.01.01', NULL, '01', '纵梁前段分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('701', '10.10.01.01', NULL, '01', '电子油门踏板总成', 'Electronic accelerator pedal assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7010', '20.05.01.01.09.04.10.01.01.01.01.01.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7011', '20.05.01.01.09.04.10.01.01.01.01.01.01.01', NULL, '01', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7012', '20.05.01.01.09.04.10.01.01.01.01.01.01.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7013', '20.05.01.01.09.04.10.01.01.01.01.01.01.01.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7014', '20.05.01.01.09.04.10.01.01.01.01.01.01.01.03', NULL, '03', '套筒Ⅰ', '11', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7015', '20.05.01.01.09.04.10.01.01.01.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7016', '20.05.01.01.09.04.10.01.01.01.01.01.02', NULL, '02', '纵梁分总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7017', '20.05.01.01.09.04.10.01.01.01.01.01.02.01', NULL, '01', '前纵梁', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7018', '20.05.01.01.09.04.10.01.01.01.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7019', '20.05.01.01.09.04.10.01.01.01.01.01.03', NULL, '03', '水箱下托架连接板分总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('702', '10.10.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7020', '20.05.01.01.09.04.10.01.01.01.01.01.03.01', NULL, '01', '水箱下托架连接板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7021', '20.05.01.01.09.04.10.01.01.01.01.01.03.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7022', '20.05.01.01.09.04.10.01.01.01.01.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7023', '20.05.01.01.09.04.10.01.01.01.01.01.05', NULL, '05', '安装板总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7024', '20.05.01.01.09.04.10.01.01.01.01.01.05.01', NULL, '01', '安装板分总成', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7025', '20.05.01.01.09.04.10.01.01.01.01.01.05.01.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7026', '20.05.01.01.09.04.10.01.01.01.01.01.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7027', '20.05.01.01.09.04.10.01.01.01.01.01.05.02', NULL, '02', '加强件分总成', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7028', '20.05.01.01.09.04.10.01.01.01.01.01.05.02.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7029', '20.05.01.01.09.04.10.01.01.01.01.01.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('703', '10.10.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7030', '20.05.01.01.09.04.10.01.01.01.01.01.05.03', NULL, '03', '前牵引钩固定块(内径Φ21.5)', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7031', '20.05.01.01.09.04.10.01.01.01.01.01.06', NULL, '06', '前门槛内板后支撑板总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7032', '20.05.01.01.09.04.10.01.01.01.01.01.06.01', NULL, '01', '安装板分总成', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7033', '20.05.01.01.09.04.10.01.01.01.01.01.06.01.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7034', '20.05.01.01.09.04.10.01.01.01.01.01.06.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7035', '20.05.01.01.09.04.10.01.01.01.01.01.06.03', NULL, '03', '支架', 'Bracket', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7036', '20.05.01.01.09.04.10.01.01.01.01.02', NULL, '02', '支架分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7037', '20.05.01.01.09.04.10.01.01.01.01.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7038', '20.05.01.01.09.04.10.01.01.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7039', '20.05.01.01.09.04.10.01.01.01.01.03', NULL, '03', '加强件总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('704', '10.10.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7040', '20.05.01.01.09.04.10.01.01.01.01.03.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7041', '20.05.01.01.09.04.10.01.01.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7042', '20.05.01.01.09.04.10.01.01.01.01.04', NULL, '04', '前纵梁上盖板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7043', '20.05.01.01.09.04.10.01.01.01.01.05', NULL, '05', '前门槛内板后支撑封板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7044', '20.05.01.01.09.04.10.01.01.01.01.06', NULL, '06', '前上纵梁后段总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7045', '20.05.01.01.09.04.10.01.01.01.01.06.01', NULL, '01', '前上纵梁后段分总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7046', '20.05.01.01.09.04.10.01.01.01.01.06.01.01', NULL, '01', '前上纵梁后段', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7047', '20.05.01.01.09.04.10.01.01.01.01.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7048', '20.05.01.01.09.04.10.01.01.01.01.06.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7049', '20.05.01.01.09.04.10.01.01.01.02', NULL, '02', '前纵梁中段总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('705', '10.10.02', NULL, '02', '离合器操纵装置', 'Clutch control device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7050', '20.05.01.01.09.04.10.01.01.01.02.01', NULL, '01', '第四横梁连接板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7051', '20.05.01.01.09.04.10.01.01.01.02.01.01', NULL, '01', '第四横梁连接板前板分总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7052', '20.05.01.01.09.04.10.01.01.01.02.01.01.01', NULL, '01', '车身第四横梁连接板前板', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7053', '20.05.01.01.09.04.10.01.01.01.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7054', '20.05.01.01.09.04.10.01.01.01.02.01.02', NULL, '02', '车身第四横梁连接板后板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7055', '20.05.01.01.09.04.10.01.01.01.02.02', NULL, '02', '车架第一横梁连接件总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7056', '20.05.01.01.09.04.10.01.01.01.02.02.01', NULL, '01', '车架第一横梁连接件分总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7057', '20.05.01.01.09.04.10.01.01.01.02.02.01.01', NULL, '01', '车架第一横梁连接件', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7058', '20.05.01.01.09.04.10.01.01.01.02.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7059', '20.05.01.01.09.04.10.01.01.01.02.02.02', NULL, '02', '发动机后隔热板卡板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('706', '10.10.02.01', NULL, '01', '分泵油管总成', 'Slave cylinder oil pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7060', '20.05.01.01.09.04.10.01.01.01.02.03', NULL, '03', '中纵梁分总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7061', '20.05.01.01.09.04.10.01.01.01.02.03.01', NULL, '01', '中纵梁', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7062', '20.05.01.01.09.04.10.01.01.01.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7063', '20.05.01.01.09.04.10.01.01.01.02.04', NULL, '04', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7064', '20.05.01.01.09.04.10.01.01.01.02.05', NULL, '05', '车架第三横梁连接件总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7065', '20.05.01.01.09.04.10.01.01.01.02.05.01', NULL, '01', '车架第三横梁连接件', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7066', '20.05.01.01.09.04.10.01.01.01.02.05.02', NULL, '02', '吊杆Ⅰ', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7067', '20.05.01.01.09.04.10.01.01.01.02.06', NULL, '06', '车架第二横梁连接板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7068', '20.05.01.01.09.04.10.01.01.01.03', NULL, '03', '侧门踏板总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7069', '20.05.01.01.09.04.10.01.01.01.03.01', NULL, '01', '侧门踏板总成', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('707', '10.10.02.01.01', NULL, '01', '分泵油管', 'Clutch cylinder oil pipe assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7070', '20.05.01.01.09.04.10.01.01.01.03.01.01', NULL, '01', '前侧支撑板前板总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7071', '20.05.01.01.09.04.10.01.01.01.03.01.01.01', NULL, '01', '前第一边支梁前件', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7072', '20.05.01.01.09.04.10.01.01.01.03.01.01.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7073', '20.05.01.01.09.04.10.01.01.01.03.01.01.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7074', '20.05.01.01.09.04.10.01.01.01.03.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7075', '20.05.01.01.09.04.10.01.01.01.03.01.01.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7076', '20.05.01.01.09.04.10.01.01.01.03.01.02', NULL, '02', '踏板盒前隔板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7077', '20.05.01.01.09.04.10.01.01.01.03.01.03', NULL, '03', '侧门下导轨总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7078', '20.05.01.01.09.04.10.01.01.01.03.01.03.01', NULL, '01', '拉门下滑道', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7079', '20.05.01.01.09.04.10.01.01.01.03.01.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('708', '10.10.02.01.02', NULL, '02', '管接头', '11', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7080', '20.05.01.01.09.04.10.01.01.01.03.01.03.03', NULL, '03', '支架总成', 'Bracket assembly', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7081', '20.05.01.01.09.04.10.01.01.01.03.01.03.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7082', '20.05.01.01.09.04.10.01.01.01.03.01.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '15', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7083', '20.05.01.01.09.04.10.01.01.01.03.01.03.04', NULL, '04', '拉门下滑道后堵片', '11', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7084', '20.05.01.01.09.04.10.01.01.01.03.01.03.05', NULL, '05', '加强板', 'Reinforced plate', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7085', '20.05.01.01.09.04.10.01.01.01.03.01.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7086', '20.05.01.01.09.04.10.01.01.01.03.01.05', NULL, '05', '踏板盒', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7087', '20.05.01.01.09.04.10.01.01.01.03.01.06', NULL, '06', '前侧支撑板后板连接板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7088', '20.05.01.01.09.04.10.01.01.01.03.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7089', '20.05.01.01.09.04.10.01.01.01.03.02.01', NULL, '01', '拉门下纵梁前内板', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('709', '10.10.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7090', '20.05.01.01.09.04.10.01.01.01.03.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7091', '20.05.01.01.09.04.10.01.01.01.03.02.03', NULL, '03', '顶举支撑板总成', '11', '1', NULL, '13', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7092', '20.05.01.01.09.04.10.01.01.01.03.02.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7093', '20.05.01.01.09.04.10.01.01.01.03.02.03.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '14', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7094', '20.05.01.01.09.04.10.01.01.01.04', NULL, '04', '车架第五横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7095', '20.05.01.01.09.04.10.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7096', '20.05.01.01.09.04.10.01.01.03', NULL, '03', '上摆臂安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7097', '20.05.01.01.09.04.10.01.01.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7098', '20.05.01.01.09.04.10.01.01.03.02', NULL, '02', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7099', '20.05.01.01.09.04.10.01.01.03.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('70D3C8034C184F86A50', '10.03.01.39', '', '39', '橡胶垫', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('71', '10.02.01.18', NULL, '18', '副水箱带单向阀总成', 'Auxiliary water tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('710', '10.10.02.02', NULL, '02', '连接软管总成', 'Connection hose assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7100', '20.05.01.01.09.04.10.01.01.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7101', '20.05.01.01.09.04.10.01.01.04', NULL, '04', '安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7102', '20.05.01.01.09.04.10.01.01.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7103', '20.05.01.01.09.04.10.01.01.04.02', NULL, '02', '安装板', 'Installation plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7104', '20.05.01.01.09.04.10.01.01.04.03', NULL, '03', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7105', '20.05.01.01.09.04.10.01.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7106', '20.05.01.01.09.04.10.01.01.05', NULL, '05', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7107', '20.05.01.01.09.04.10.01.01.06', NULL, '06', '中纵梁后盖板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7108', '20.05.01.01.09.04.10.01.01.06.02', NULL, '02', '中纵梁后盖板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7109', '20.05.01.01.09.04.10.01.01.06.03', NULL, '03', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('711', '10.10.02.02.01', NULL, '01', '连接软管', 'Connection hose', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7110', '20.05.01.01.09.04.10.01.01.07', NULL, '07', '支撑板连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7111', '20.05.01.01.09.04.10.01.01.08', NULL, '08', '中纵梁前盖板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7112', '20.05.01.01.09.04.10.01.01.09', NULL, '09', '车架第四横梁侧盖板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7113', '20.05.01.01.09.04.10.01.01.10', NULL, '10', '上支梁上盖板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7114', '20.05.01.01.09.04.10.01.01.11', NULL, '11', '车架第五横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7115', '20.05.01.01.09.04.10.01.01.12', NULL, '12', '前下纵梁预留板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7116', '20.05.01.01.09.04.10.01.01.13', NULL, '13', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7117', '20.05.01.01.09.04.10.01.01.14', NULL, '14', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7118', '20.05.01.01.09.04.10.01.01.15', NULL, '15', '安装板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7119', '20.05.01.01.09.04.10.01.02', NULL, '02', '水箱下横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('712', '10.10.02.02.02', NULL, '02', '软管接头', 'Hose coupler', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7120', '20.05.01.01.09.04.10.01.02.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7121', '20.05.01.01.09.04.10.01.02.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7122', '20.05.01.01.09.04.10.01.02.01.02', NULL, '02', '车架第五横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7123', '20.05.01.01.09.04.10.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7124', '20.05.01.01.09.04.10.01.02.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7125', '20.05.01.01.09.04.10.01.02.03', NULL, '03', '加强件分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7126', '20.05.01.01.09.04.10.01.02.03.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7127', '20.05.01.01.09.04.10.01.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7128', '20.05.01.01.09.04.10.01.02.04', NULL, '04', '车架第六横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7129', '20.05.01.01.09.04.10.01.02.05', NULL, '05', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('713', '10.10.02.02.03', NULL, '03', '空心螺栓', 'Hollow bolt', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7130', '20.05.01.01.09.04.10.01.03', NULL, '03', '车架第一横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7131', '20.05.01.01.09.04.10.01.03.01', NULL, '01', '发动机后隔热板卡板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7132', '20.05.01.01.09.04.10.01.03.02', NULL, '02', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7133', '20.05.01.01.09.04.10.01.03.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7134', '20.05.01.01.09.04.10.01.03.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7135', '20.05.01.01.09.04.10.01.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7136', '20.05.01.01.09.04.10.01.03.03', NULL, '03', '车架第一横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7137', '20.05.01.01.09.04.10.01.03.03.01', NULL, '01', '车架第一横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7138', '20.05.01.01.09.04.10.01.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7139', '20.05.01.01.09.04.10.01.03.04', NULL, '04', '备胎限位板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('714', '10.10.02.03', NULL, '03', '离合分泵总成', 'Clutch slave cylinder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7140', '20.05.01.01.09.04.10.01.03.04.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7141', '20.05.01.01.09.04.10.01.03.05', NULL, '05', '车架第七横梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7142', '20.05.01.01.09.04.10.01.03.06', NULL, '06', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7143', '20.05.01.01.09.04.10.01.03.07', NULL, '07', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7144', '20.05.01.01.09.04.10.01.04', NULL, '04', '安装板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7145', '20.05.01.01.09.04.10.01.04.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7146', '20.05.01.01.09.04.10.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7147', '20.05.01.01.09.04.10.01.05', NULL, '05', '车架第二横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7148', '20.05.01.01.09.04.10.01.05.01', NULL, '01', '后纵梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7149', '20.05.01.01.09.04.10.01.05.02', NULL, '02', '安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('715', '10.10.02.04', NULL, '04', '离合分泵支架总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7150', '20.05.01.01.09.04.10.01.05.02.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7151', '20.05.01.01.09.04.10.01.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7152', '20.05.01.01.09.04.10.01.05.03', NULL, '03', '后减振器总成', 'Rear shock absorber assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7153', '20.05.01.01.09.04.10.01.05.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7154', '20.05.01.01.09.04.10.01.05.03.02', NULL, '02', '后减振器安装杆', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7155', '20.05.01.01.09.04.10.01.05.03.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7156', '20.05.01.01.09.04.10.01.05.04', NULL, '04', '后轮罩后板连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7157', '20.05.01.01.09.04.10.01.05.05', NULL, '05', '板簧后安装轴套总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7158', '20.05.01.01.09.04.10.01.05.05.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7159', '20.05.01.01.09.04.10.01.05.05.02', NULL, '02', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('716', '10.10.02.05', NULL, '05', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7160', '20.05.01.01.09.04.10.01.05.05.03', NULL, '03', '弓片后安装套管', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7161', '20.05.01.01.09.04.10.01.05.06', NULL, '06', '后裙板支撑板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7162', '20.05.01.01.09.04.10.01.05.07', NULL, '07', '后轮罩后板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7163', '20.05.01.01.09.04.10.01.05.08', NULL, '08', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('716364FCD2F2458DB94', '30.01.01.06', '', '06', '车身悬置总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7164', '20.05.01.01.09.04.10.01.05.09', NULL, '09', '车架第二横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7165', '20.05.01.01.09.04.10.01.05.09.01', NULL, '01', '车架第二横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7166', '20.05.01.01.09.04.10.01.05.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7167', '20.05.01.01.09.04.10.01.06', NULL, '06', '车架第三横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7168', '20.05.01.01.09.04.10.01.06.01', NULL, '01', '纵梁尾部梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7169', '20.05.01.01.09.04.10.01.06.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('717', '10.10.02.06', NULL, '06', '管夹', 'Pipe clamp components', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7170', '20.05.01.01.09.04.10.01.06.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7171', '20.05.01.01.09.04.10.01.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7172', '20.05.01.01.09.04.10.01.06.03', NULL, '03', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7173', '20.05.01.01.09.04.10.01.06.03.01', NULL, '01', '后横梁连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7174', '20.05.01.01.09.04.10.01.06.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7175', '20.05.01.01.09.04.10.01.06.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7176', '20.05.01.01.09.04.10.01.06.05', NULL, '05', '排气管吊挂Ⅳ总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7177', '20.05.01.01.09.04.10.01.06.05.01', NULL, '01', '吊挂Ⅳ固定板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7178', '20.05.01.01.09.04.10.01.06.05.02', NULL, '02', '吊杆Ⅰ', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7179', '20.05.01.01.09.04.10.01.06.06', NULL, '06', '后门口下加强板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('718', '10.10.02.09', NULL, '09', '离合拔叉回位弹簧', 'Clutch shift fork return spring', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7180', '20.05.01.01.09.04.10.01.06.07', NULL, '07', '后地板后连接板固定板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7181', '20.05.01.01.09.04.10.01.06.08', NULL, '08', '后纵梁后段后连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7182', '20.05.01.01.09.04.10.01.06.09', NULL, '09', '车架第三横梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7183', '20.05.01.01.09.04.10.01.06.10', NULL, '10', '横梁连接板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7184', '20.05.01.01.09.04.10.01.06.11', NULL, '11', '后地板后连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7185', '20.05.01.01.09.04.10.01.06.12', NULL, '12', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7186', '20.05.01.01.09.04.10.01.06.13', NULL, '13', '后连接板加强板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7187', '20.05.01.01.09.04.10.01.07', NULL, '07', '车架第四横梁分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7188', '20.05.01.01.09.04.10.01.07.01', NULL, '01', '纵梁尾部梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7189', '20.05.01.01.09.04.10.01.07.02', NULL, '02', '后纵梁后段后连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('719', '10.10.02.10', NULL, '10', '缓冲阀总成', 'Buffer valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7190', '20.05.01.01.09.04.10.01.07.03', NULL, '03', '后横梁连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7191', '20.05.01.01.09.04.10.01.07.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7192', '20.05.01.01.09.04.10.01.07.05', NULL, '05', '后地板后连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7193', '20.05.01.01.09.04.10.01.07.06', NULL, '06', '后地板后连接板固定板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7194', '20.05.01.01.09.04.10.01.07.07', NULL, '07', '吊杆Ⅰ', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7195', '20.05.01.01.09.04.10.01.07.08', NULL, '08', '车架第四横梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7196', '20.05.01.01.09.04.10.01.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7197', '20.05.01.01.09.04.10.01.08', NULL, '08', '扭杆后固定板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7198', '20.05.01.01.09.04.10.01.08.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7199', '20.05.01.01.09.04.10.01.08.02', NULL, '02', '备胎拉杆支撑板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('72', '10.02.01.19', NULL, '19', '风扇', 'Fan', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('720', '10.10.02.11', NULL, '11', '密封垫', 'Sealing gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7200', '20.05.01.01.09.04.10.01.08.02.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7201', '20.05.01.01.09.04.10.01.08.02.02', NULL, '02', '备胎支架吊座', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7202', '20.05.01.01.09.04.10.01.08.02.03', NULL, '03', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7203', '20.05.01.01.09.04.10.01.08.03', NULL, '03', '后横梁分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7204', '20.05.01.01.09.04.10.01.08.03.01', NULL, '01', '后横梁', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7205', '20.05.01.01.09.04.10.01.08.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7206', '20.05.01.01.09.04.10.01.09', NULL, '09', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7207', '20.05.01.01.09.04.10.01.09.01', NULL, '01', '后防撞梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7208', '20.05.01.01.09.04.10.01.09.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7209', '20.05.01.01.09.04.10.01.09.02.01', NULL, '01', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('721', '10.10.02.12', NULL, '12', '密封圈', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7210', '20.05.01.01.09.04.10.01.09.02.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7211', '20.05.01.01.09.04.10.01.09.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7212', '20.05.01.01.09.04.10.01.09.02.02', NULL, '02', '后门锁安装板分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7213', '20.05.01.01.09.04.10.01.09.02.02.01', NULL, '01', '后门锁安装板', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7214', '20.05.01.01.09.04.10.01.09.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7215', '20.05.01.01.09.04.10.01.09.03', NULL, '03', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7216', '20.05.01.01.09.04.10.01.09.04', NULL, '04', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7217', '20.05.01.01.09.04.10.01.10', NULL, '10', '车架第四横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7218', '20.05.01.01.09.04.10.01.10.01', NULL, '01', '车架第四横梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7219', '20.05.01.01.09.04.10.01.10.02', NULL, '02', '安装板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('722', '10.10.02.13', NULL, '13', '卡套式接头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7220', '20.05.01.01.09.04.10.01.10.02.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7221', '20.05.01.01.09.04.10.01.10.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7222', '20.05.01.01.09.04.10.01.10.03', NULL, '03', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7223', '20.05.01.01.09.04.10.01.10.03.01', NULL, '01', '支架分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7224', '20.05.01.01.09.04.10.01.10.03.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7225', '20.05.01.01.09.04.10.01.10.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7226', '20.05.01.01.09.04.10.01.10.03.02', NULL, '02', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7227', '20.05.01.01.09.04.10.01.10.03.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7228', '20.05.01.01.09.04.10.01.10.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7229', '20.05.01.01.09.04.10.01.10.03.03', NULL, '03', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('723', '10.10.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7230', '20.05.01.01.09.04.10.01.10.03.03.01', NULL, '01', '吊杆Ⅱ', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7231', '20.05.01.01.09.04.10.01.11', NULL, '11', '车架第五横梁连接板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7232', '20.05.01.01.09.04.10.01.11.01', NULL, '01', '车架第五横梁连接前板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7233', '20.05.01.01.09.04.10.01.11.02', NULL, '02', '车架第五横梁连接下板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7234', '20.05.01.01.09.04.10.01.11.03', NULL, '03', '车架第四横梁侧盖板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7235', '20.05.01.01.09.04.10.01.11.04', NULL, '04', '车架第五横梁连接后板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7236', '20.05.01.01.09.04.10.01.11.05', NULL, '05', '后轮罩前板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7237', '20.05.01.01.09.04.10.01.11.05.01', NULL, '01', '支架分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7238', '20.05.01.01.09.04.10.01.11.05.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7239', '20.05.01.01.09.04.10.01.11.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('724', '10.10.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7240', '20.05.01.01.09.04.10.01.11.05.02', NULL, '02', '板簧前安装板外板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7241', '20.05.01.01.09.04.10.01.11.05.03', NULL, '03', '加强件', 'Reinforcing piece', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7242', '20.05.01.01.09.04.10.01.11.05.04', NULL, '04', '安装板', 'Installation plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7243', '20.05.01.01.09.04.10.01.11.05.05', NULL, '05', '后轮罩前挡泥板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7244', '20.05.01.01.09.04.10.01.11.06', NULL, '06', '安装板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7245', '20.05.01.01.09.04.10.01.11.06.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7246', '20.05.01.01.09.04.10.01.11.06.02', NULL, '02', '后板簧安装前支撑梁分总成', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7247', '20.05.01.01.09.04.10.01.11.06.02.01', NULL, '01', '后板簧安装前支撑梁', '11', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7248', '20.05.01.01.09.04.10.01.11.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7249', '20.05.01.01.09.04.10.01.12', NULL, '12', '后纵梁前段', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('725', '10.10.03', NULL, '03', '离合操纵机构', 'Clutch control mechanism', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7250', '20.05.01.01.09.04.10.01.13', NULL, '13', '安装板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7251', '20.05.01.01.09.04.10.01.13.01', NULL, '01', '安装板', 'Installation plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7252', '20.05.01.01.09.04.10.01.13.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7253', '20.05.01.01.09.04.10.01.14', NULL, '14', '排气管吊挂总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7254', '20.05.01.01.09.04.10.01.14.01', NULL, '01', '吊杆', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7255', '20.05.01.01.09.04.10.01.14.02', NULL, '02', '吊杆Ⅲ固定板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7256', '20.05.01.01.09.04.10.01.15', NULL, '15', '后防撞梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7257', '20.05.01.01.09.04.10.01.16', NULL, '16', '后横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7258', '20.05.01.01.09.04.10.01.17', NULL, '17', '后纵梁后段总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7259', '20.05.01.01.09.04.10.01.18', NULL, '18', '后纵梁后段总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('726', '10.10.03.01', NULL, '01', '真空助力器带总泵总成', 'Vacuum booster and master pump assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7260', '20.05.01.01.09.04.10.01.19', NULL, '19', '车架第五横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7261', '20.05.01.01.09.04.10.01.20', NULL, '20', '车架第六横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7262', '20.05.01.01.09.04.10.01.21', NULL, '21', '车架第七横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7263', '20.05.01.01.09.04.10.01.22', NULL, '22', '后纵梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7264', '20.05.01.01.09.04.10.01.23', NULL, '23', '纵梁总成', 'Left side member assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7265', '20.05.01.01.09.04.10.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7266', '20.05.01.01.09.04.10.02', NULL, '02', '车架后部总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7267', '20.05.01.01.09.04.10.03', NULL, '03', '第四排双人座安装板分总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7268', '20.05.01.01.09.05', NULL, '05', '侧围焊接总成', 'Side molding welding assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7269', '20.05.01.01.09.05.01', NULL, '01', '侧围外板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('727', '10.10.03.02', NULL, '02', '真空助力器总成', 'Vacuum booster assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7270', '20.05.01.01.09.05.01.01', NULL, '01', '侧围外板总成1', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7271', '20.05.01.01.09.05.01.01.01', NULL, '01', '前门框总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7272', '20.05.01.01.09.05.01.01.01.01', NULL, '01', '前门框', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7273', '20.05.01.01.09.05.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7274', '20.05.01.01.09.05.01.01.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7275', '20.05.01.01.09.05.01.01.02.01', NULL, '01', '加强板总成1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7276', '20.05.01.01.09.05.01.01.02.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7277', '20.05.01.01.09.05.01.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7278', '20.05.01.01.09.05.01.01.03', NULL, '03', '机舱盖铰链安装板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7279', '20.05.01.01.09.05.01.01.03.01', NULL, '01', '机舱盖铰链安装板总成1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('728', '10.10.03.03', NULL, '03', '离合总泵总成', 'Clutch master cylinder assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7280', '20.05.01.01.09.05.01.01.03.01.01', NULL, '01', '机舱盖铰链安装板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7281', '20.05.01.01.09.05.01.01.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7282', '20.05.01.01.09.05.01.01.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7283', '20.05.01.01.09.05.01.01.04', NULL, '04', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7284', '20.05.01.01.09.05.01.01.04.01', NULL, '01', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7285', '20.05.01.01.09.05.01.01.04.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7286', '20.05.01.01.09.05.01.01.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7287', '20.05.01.01.09.05.01.01.04.02', NULL, '02', '加强板1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7288', '20.05.01.01.09.05.01.01.05', NULL, '05', '前门踏板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7289', '20.05.01.01.09.05.01.01.05.01', NULL, '01', '前踏板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('729', '10.10.03.04', NULL, '04', '离合总泵油管总成', 'Clutch master cylinder oil pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7290', '20.05.01.01.09.05.01.01.05.02', NULL, '02', '前踏板下托板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7291', '20.05.01.01.09.05.01.01.05.03', NULL, '03', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7292', '20.05.01.01.09.05.01.02', NULL, '02', '前轮罩外挡板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7293', '20.05.01.01.09.05.01.02.01', NULL, '01', '前轮罩外挡板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7294', '20.05.01.01.09.05.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7295', '20.05.01.01.09.05.01.03', NULL, '03', '加油口盒总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7296', '20.05.01.01.09.05.01.03.01', NULL, '01', '加油口盒', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7297', '20.05.01.01.09.05.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7298', '20.05.01.01.09.05.01.04', NULL, '04', '前窗中下加强立柱', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7299', '20.05.01.01.09.05.01.05', NULL, '05', '围后外板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('73', '10.02.01.20', NULL, '20', '油泵总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('730', '10.10.03.05', NULL, '05', '管接头', 'Pipe joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7300', '20.05.01.01.09.05.01.05.01', NULL, '01', '侧围后外板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7301', '20.05.01.01.09.05.01.05.01.01', NULL, '01', '侧围后外板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7302', '20.05.01.01.09.05.01.05.01.02', NULL, '02', '侧围中外板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7303', '20.05.01.01.09.05.01.05.01.02.01', NULL, '01', '侧围中外板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7304', '20.05.01.01.09.05.01.05.01.02.02', NULL, '02', 'D柱下连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7305', '20.05.01.01.09.05.01.05.01.02.03', NULL, '03', 'C柱下连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7306', '20.05.01.01.09.05.01.05.01.03', NULL, '03', '侧围前外板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7307', '20.05.01.01.09.05.01.05.01.04', NULL, '04', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7308', '20.05.01.01.09.05.01.05.01.05', NULL, '05', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7309', '20.05.01.01.09.05.01.05.02', NULL, '02', '后轮罩外板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('731', '10.10.03.06', NULL, '06', '软管', 'Hose', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7310', '20.05.01.01.09.05.01.05.02.01', NULL, '01', '后轮罩外板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7311', '20.05.01.01.09.05.01.05.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7312', '20.05.01.01.09.05.01.05.02.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7313', '20.05.01.01.09.05.01.05.02.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7314', '20.05.01.01.09.05.01.05.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7315', '20.05.01.01.09.05.01.05.02.03', NULL, '03', '窗前下加强立柱总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7316', '20.05.01.01.09.05.01.05.02.03.01', NULL, '01', '窗前下加强立柱', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7317', '20.05.01.01.09.05.01.05.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7318', '20.05.01.01.09.05.01.05.02.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7319', '20.05.01.01.09.05.01.05.03', NULL, '03', 'D柱外板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('732', '10.10.03.07', NULL, '07', '储油杯总成', 'Oil storage cup assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7320', '20.05.01.01.09.05.01.05.03.01', NULL, '01', 'D柱外板上段总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7321', '20.05.01.01.09.05.01.05.03.01.01', NULL, '01', 'D柱外板上段', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7322', '20.05.01.01.09.05.01.05.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7323', '20.05.01.01.09.05.01.05.03.02', NULL, '02', '后尾灯安装板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7324', '20.05.01.01.09.05.01.05.03.03', NULL, '03', '地板后横梁连接板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7325', '20.05.01.01.09.05.01.05.03.03.01', NULL, '01', '地板后横梁连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7326', '20.05.01.01.09.05.01.05.03.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '12', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7327', '20.05.01.01.09.05.01.06', NULL, '06', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7328', '20.05.01.01.09.05.01.06.01', NULL, '01', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7329', '20.05.01.01.09.05.01.06.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('733', '10.10.03.08', NULL, '08', '离合踏板总成', 'Clutch pedal assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7330', '20.05.01.01.09.05.01.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7331', '20.05.01.01.09.05.01.06.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7332', '20.05.01.01.09.05.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7333', '20.05.01.01.09.05.01.07', NULL, '07', '前窗后下加强立柱', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7334', '20.05.01.01.09.05.01.08', NULL, '08', '前窗前下加强立柱', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7335', '20.05.01.01.09.05.02', NULL, '02', '流水槽总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7336', '20.05.01.01.09.05.02.01', NULL, '01', '流水槽', 'drain channel', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7337', '20.05.01.01.09.05.02.02', NULL, '02', '加强件', 'Reinforcing piece', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7338', '20.05.01.01.09.05.03', NULL, '03', '侧围内板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7339', '20.05.01.01.09.05.03.01', NULL, '01', 'A柱上内板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('733A4B62E395425EA85', '30.01.01.01.13', '', '13', '纵梁前段总成-右', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('734', '10.10.03.09', NULL, '09', '离合踏板安装支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7340', '20.05.01.01.09.05.03.01.01', NULL, '01', 'A柱上内板总成1', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7341', '20.05.01.01.09.05.03.01.01.01', NULL, '01', 'A柱上内板', 'A-pillar upper inner panel', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7342', '20.05.01.01.09.05.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7343', '20.05.01.01.09.05.03.01.02', NULL, '02', '顶盖前横梁连接板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7344', '20.05.01.01.09.05.03.01.02.01', NULL, '01', '顶盖前横梁连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7345', '20.05.01.01.09.05.03.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7346', '20.05.01.01.09.05.03.01.03', NULL, '03', '支架', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7347', '20.05.01.01.09.05.03.01.04', NULL, '04', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7348', '20.05.01.01.09.05.03.01.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7349', '20.05.01.01.09.05.03.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('735', '10.10.03.10', NULL, '10', '真空管', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7350', '20.05.01.01.09.05.03.02', NULL, '02', '侧围后内板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7351', '20.05.01.01.09.05.03.02.01', NULL, '01', '侧围前内板1分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7352', '20.05.01.01.09.05.03.02.01.01', NULL, '01', '侧围后内板1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7353', '20.05.01.01.09.05.03.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7354', '20.05.01.01.09.05.03.02.02', NULL, '02', '侧围中内板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7355', '20.05.01.01.09.05.03.02.02.01', NULL, '01', '侧围中内板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7356', '20.05.01.01.09.05.03.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7357', '20.05.01.01.09.05.03.02.03', NULL, '03', '侧围后内板2分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7358', '20.05.01.01.09.05.03.02.03.01', NULL, '01', '侧围后内板2', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7359', '20.05.01.01.09.05.03.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('735E6E5DE8724091941', '20.04.02.01.37', '', '37', '右后玻璃后导轨', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('736', '10.10.03.11', NULL, '11', '管夹', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7360', '20.05.01.01.09.05.03.02.04', NULL, '04', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7361', '20.05.01.01.09.05.03.02.04.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7362', '20.05.01.01.09.05.03.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7363', '20.05.01.01.09.05.03.02.05', NULL, '05', '第四排乘客座椅上安装板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7364', '20.05.01.01.09.05.03.02.05.01', NULL, '01', '第四排乘客座椅上安装板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7365', '20.05.01.01.09.05.03.02.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7366', '20.05.01.01.09.05.03.02.06', NULL, '06', '顶盖后横梁连接板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7367', '20.05.01.01.09.05.03.02.06.01', NULL, '01', '顶盖后横梁连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7368', '20.05.01.01.09.05.03.02.06.02', NULL, '02', '背板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7369', '20.05.01.01.09.05.03.02.06.02.01', NULL, '01', '背板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('737', '10.10.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7370', '20.05.01.01.09.05.03.02.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7371', '20.05.01.01.09.05.03.02.07', NULL, '07', '第五排安全带卷收器安装板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7372', '20.05.01.01.09.05.03.02.07.01', NULL, '01', '第五排安全带卷收器安装板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7373', '20.05.01.01.09.05.03.02.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7374', '20.05.01.01.09.05.03.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7375', '20.05.01.01.09.05.03.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7376', '20.05.01.01.09.05.03.05', NULL, '05', 'D柱下内板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7377', '20.05.01.01.09.05.03.06', NULL, '06', '后窗后下加强立柱', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7378', '20.05.01.01.09.05.03.07', NULL, '07', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7379', '20.05.01.01.09.05.03.07.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('738', '10.10.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7380', '20.05.01.01.09.05.03.08', NULL, '08', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7381', '20.05.01.01.09.05.03.08.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7382', '20.05.01.01.09.05.03.08.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7383', '20.05.01.01.09.06', NULL, '06', '侧围焊接总成', 'Side molding welding assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7384', '20.05.01.01.09.06.01', NULL, '01', '侧围外板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7385', '20.05.01.01.09.06.01.01', NULL, '01', '侧围外板总成1', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7386', '20.05.01.01.09.06.01.01.01', NULL, '01', '前门框总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7387', '20.05.01.01.09.06.01.01.01.01', NULL, '01', '前门框', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7388', '20.05.01.01.09.06.01.01.01.02', NULL, '02', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7389', '20.05.01.01.09.06.01.01.01.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('739', '10.10.04', NULL, '04', '变速器操纵机构', 'Transmission control mechanism', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7390', '20.05.01.01.09.06.01.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7391', '20.05.01.01.09.06.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7392', '20.05.01.01.09.06.01.01.02', NULL, '02', '机舱盖铰链安装板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7393', '20.05.01.01.09.06.01.01.02.01', NULL, '01', '机舱盖铰链安装板总成1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7394', '20.05.01.01.09.06.01.01.02.01.01', NULL, '01', '机舱盖铰链安装板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7395', '20.05.01.01.09.06.01.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7396', '20.05.01.01.09.06.01.01.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7397', '20.05.01.01.09.06.01.01.03', NULL, '03', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7398', '20.05.01.01.09.06.01.01.03.01', NULL, '01', '加强板1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7399', '20.05.01.01.09.06.01.01.03.02', NULL, '02', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('73EA8B9B59BB45D0A57', '60.06.01.01.14.03.04', '', '04', '模组FPC-23S-右', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('74', '10.02.01.21', NULL, '21', '电子扇控制器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('740', '10.10.04.01', NULL, '01', '支架总成', 'Bracket assemble', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7400', '20.05.01.01.09.06.01.01.03.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7401', '20.05.01.01.09.06.01.01.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7402', '20.05.01.01.09.06.01.01.04', NULL, '04', '前门踏板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7403', '20.05.01.01.09.06.01.01.04.01', NULL, '01', '前踏板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7404', '20.05.01.01.09.06.01.01.04.02', NULL, '02', '前踏板下托板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7405', '20.05.01.01.09.06.01.01.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7406', '20.05.01.01.09.06.01.01.05', NULL, '05', '前轮罩外后挡板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7407', '20.05.01.01.09.06.01.01.05.01', NULL, '01', '前轮罩外后挡板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7408', '20.05.01.01.09.06.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7409', '20.05.01.01.09.06.01.02', NULL, '02', '侧门框上横梁外板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('741', '10.10.04.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7410', '20.05.01.01.09.06.01.02.01', NULL, '01', '侧门框上横梁总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7411', '20.05.01.01.09.06.01.02.01.01', NULL, '01', '侧门框上横梁', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7412', '20.05.01.01.09.06.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7413', '20.05.01.01.09.06.01.02.02', NULL, '02', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7414', '20.05.01.01.09.06.01.02.03', NULL, '03', '侧门上导轨前安装板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7415', '20.05.01.01.09.06.01.02.03.01', NULL, '01', '侧门上滑道前下堵板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7416', '20.05.01.01.09.06.01.02.03.98', NULL, '98', '侧门上滑道前上堵板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7417', '20.05.01.01.09.06.01.02.04', NULL, '04', '侧门上导轨总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7418', '20.05.01.01.09.06.01.02.04.01', NULL, '01', '侧门上滑道', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7419', '20.05.01.01.09.06.01.02.04.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('742', '10.10.04.01.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7420', '20.05.01.01.09.06.01.02.04.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7421', '20.05.01.01.09.06.01.02.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7422', '20.05.01.01.09.06.01.02.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7423', '20.05.01.01.09.06.01.03', NULL, '03', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7424', '20.05.01.01.09.06.01.03.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7425', '20.05.01.01.09.06.01.03.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7426', '20.05.01.01.09.06.01.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7427', '20.05.01.01.09.06.01.04', NULL, '04', '侧门下门槛外板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7428', '20.05.01.01.09.06.01.04.01', NULL, '01', '加强件', 'Reinforcing piece', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7429', '20.05.01.01.09.06.01.04.02', NULL, '02', '侧门下门槛外板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('743', '10.10.04.02', NULL, '02', '锁片', 'Locking plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7430', '20.05.01.01.09.06.01.04.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7431', '20.05.01.01.09.06.01.05', NULL, '05', '侧围后外板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7432', '20.05.01.01.09.06.01.05.01', NULL, '01', '侧围后外板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7433', '20.05.01.01.09.06.01.05.01.01', NULL, '01', '侧围后外板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7434', '20.05.01.01.09.06.01.05.01.02', NULL, '02', 'D柱下连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7435', '20.05.01.01.09.06.01.05.01.03', NULL, '03', '加强件', 'Reinforcing piece', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7436', '20.05.01.01.09.06.01.05.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7437', '20.05.01.01.09.06.01.05.02', NULL, '02', '滑门中导轨后安装板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7438', '20.05.01.01.09.06.01.05.03', NULL, '03', '后轮罩外板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7439', '20.05.01.01.09.06.01.05.03.01', NULL, '01', '后轮罩外板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('744', '10.10.04.03', NULL, '03', '橡胶护套', 'Rubber lining', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7440', '20.05.01.01.09.06.01.05.03.02', NULL, '02', '后窗前下加强立柱', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7441', '20.05.01.01.09.06.01.05.03.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7442', '20.05.01.01.09.06.01.05.04', NULL, '04', 'D柱外板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7443', '20.05.01.01.09.06.01.05.04.01', NULL, '01', 'D柱外板上段总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7444', '20.05.01.01.09.06.01.05.04.01.01', NULL, '01', 'D柱外板上段', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7445', '20.05.01.01.09.06.01.05.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7446', '20.05.01.01.09.06.01.05.04.02', NULL, '02', '后尾灯安装板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7447', '20.05.01.01.09.06.01.05.04.03', NULL, '03', '地板后横梁连接板总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7448', '20.05.01.01.09.06.01.05.04.03.01', NULL, '01', '地板后横梁连接板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7449', '20.05.01.01.09.06.01.05.04.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('744B8E35EB684C8983F', '60.06.01.04.01', '', '01', '电池挡泥板', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('745', '10.10.04.04', NULL, '04', '软轴', 'Gear selector flexible shaft assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7450', '20.05.01.01.09.06.01.06', NULL, '06', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7451', '20.05.01.01.09.06.01.06.01', NULL, '01', '加强板总成1', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7452', '20.05.01.01.09.06.01.06.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7453', '20.05.01.01.09.06.01.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7454', '20.05.01.01.09.06.01.06.02', NULL, '02', 'B柱上加强板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7455', '20.05.01.01.09.06.01.06.03', NULL, '03', 'B柱中加强板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7456', '20.05.01.01.09.06.01.06.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7457', '20.05.01.01.09.06.02', NULL, '02', '流水槽总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7458', '20.05.01.01.09.06.02.01', NULL, '01', '流水槽', 'drain channel', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7459', '20.05.01.01.09.06.02.02', NULL, '02', '流水槽导向板', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('746', '10.10.04.04.01', NULL, '01', '选档软轴总成', 'Gear selector flexible shaft assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7460', '20.05.01.01.09.06.02.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7461', '20.05.01.01.09.06.03', NULL, '03', '侧围内板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7462', '20.05.01.01.09.06.03.01', NULL, '01', 'A柱上内板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7463', '20.05.01.01.09.06.03.01.01', NULL, '01', 'A柱上内板总成1', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7464', '20.05.01.01.09.06.03.01.01.01', NULL, '01', 'A柱上内板', 'A-pillar upper inner panel', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7465', '20.05.01.01.09.06.03.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7466', '20.05.01.01.09.06.03.01.02', NULL, '02', '顶盖前横梁连接板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7467', '20.05.01.01.09.06.03.01.02.01', NULL, '01', '顶盖前横梁连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7468', '20.05.01.01.09.06.03.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7469', '20.05.01.01.09.06.03.01.03', NULL, '03', '支架总成', 'Bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('747', '10.10.04.04.02', NULL, '02', '换挡软轴总成', 'Gear shift flexible shaft assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7470', '20.05.01.01.09.06.03.01.03.01', NULL, '01', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7471', '20.05.01.01.09.06.03.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7472', '20.05.01.01.09.06.03.02', NULL, '02', '侧围前内板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7473', '20.05.01.01.09.06.03.02.01', NULL, '01', 'B柱上内板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7474', '20.05.01.01.09.06.03.02.01.01', NULL, '01', 'B柱上内板总成1', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7475', '20.05.01.01.09.06.03.02.01.01.01', NULL, '01', 'B柱上内板', 'B-pillar upper inner panel', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7476', '20.05.01.01.09.06.03.02.01.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7477', '20.05.01.01.09.06.03.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7478', '20.05.01.01.09.06.03.02.01.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7479', '20.05.01.01.09.06.03.02.02', NULL, '02', '侧门框上横梁内板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('748', '10.10.04.04.03', NULL, '03', '软轴总成', 'Flexible shaft assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7480', '20.05.01.01.09.06.03.02.02.01', NULL, '01', '侧门框上横梁内板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7481', '20.05.01.01.09.06.03.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7482', '20.05.01.01.09.06.03.02.03', NULL, '03', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7483', '20.05.01.01.09.06.03.02.03.01', NULL, '01', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7484', '20.05.01.01.09.06.03.02.03.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7485', '20.05.01.01.09.06.03.02.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7486', '20.05.01.01.09.06.03.02.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7487', '20.05.01.01.09.06.03.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7488', '20.05.01.01.09.06.03.04', NULL, '04', 'D柱下内板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7489', '20.05.01.01.09.06.03.04.01', NULL, '01', 'D柱下内板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('749', '10.10.04.05', NULL, '05', '拉杆总成', 'Gear selector lever assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7490', '20.05.01.01.09.06.03.04.02', NULL, '02', 'D柱下内板补强板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7491', '20.05.01.01.09.06.03.05', NULL, '05', '侧围后内板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7492', '20.05.01.01.09.06.03.05.01', NULL, '01', '顶盖后横梁连接板分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7493', '20.05.01.01.09.06.03.05.01.01', NULL, '01', '顶盖后横梁连接板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7494', '20.05.01.01.09.06.03.05.01.02', NULL, '02', '背板分总成', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7495', '20.05.01.01.09.06.03.05.01.02.01', NULL, '01', '背板', '11', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7496', '20.05.01.01.09.06.03.05.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7497', '20.05.01.01.09.06.03.05.02', NULL, '02', '侧围后内板1分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7498', '20.05.01.01.09.06.03.05.02.01', NULL, '01', '侧围后内板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7499', '20.05.01.01.09.06.03.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('74BCBF0259924F828F4', '30.01.01.03', '', '03', '后车架总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('75', '10.02.01.25', NULL, '25', '节流阀', 'Throttle Valve', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('750', '10.10.04.05.01', NULL, '01', '选档拉杆', 'Selector lever', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7500', '20.05.01.01.09.06.03.05.03', NULL, '03', '侧围中内板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7501', '20.05.01.01.09.06.03.05.04', NULL, '04', '侧围后内板2分总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7502', '20.05.01.01.09.06.03.05.04.01', NULL, '01', '侧围后内板2', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7503', '20.05.01.01.09.06.03.05.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7504', '20.05.01.01.09.06.03.05.05', NULL, '05', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7505', '20.05.01.01.09.06.03.05.05.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7506', '20.05.01.01.09.06.03.05.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7507', '20.05.01.01.09.06.03.05.06', NULL, '06', '第五排安全带卷收器安装板总成', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7508', '20.05.01.01.09.06.03.05.06.01', NULL, '01', '第五排安全带卷收器安装板', '11', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7509', '20.05.01.01.09.06.03.05.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('751', '10.10.04.05.02', NULL, '02', '换档拉杆', 'Shift lever', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7510', '20.05.01.01.09.06.03.05.07', NULL, '07', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7511', '20.05.01.01.09.06.03.05.07.01', NULL, '01', '加强板分总成', 'Reinforcing plate sub-assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7512', '20.05.01.01.09.06.03.05.07.01.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7513', '20.05.01.01.09.06.03.05.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7514', '20.05.01.01.09.06.03.05.07.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7515', '20.05.01.01.09.06.03.06', NULL, '06', '后窗后下加强立柱', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7516', '20.05.01.01.09.06.03.07', NULL, '07', '强板总成', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7517', '20.05.01.01.09.06.03.07.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7518', '20.05.01.01.09.07', NULL, '07', '顶盖前横梁总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7519', '20.05.01.01.09.07.01', NULL, '01', '顶盖前横梁分总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('752', '10.10.04.05.03', NULL, '03', '球节', 'Ball joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7520', '20.05.01.01.09.07.01.01', NULL, '01', '顶盖前横梁', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7521', '20.05.01.01.09.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7522', '20.05.01.01.09.07.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7523', '20.05.01.01.09.07.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7524', '20.05.01.01.09.07.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7525', '20.05.01.01.09.08', NULL, '08', '顶盖后横梁总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7526', '20.05.01.01.09.08.01', NULL, '01', '顶盖后横梁', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7527', '20.05.01.01.09.08.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7528', '20.05.01.01.09.09', NULL, '09', '顶盖第三横梁总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7529', '20.05.01.01.09.09.01', NULL, '01', '顶盖第三横梁分总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('753', '10.10.04.06', NULL, '06', '选换挡摇臂总成', 'Gear shift rocker arm assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7530', '20.05.01.01.09.09.01.01', NULL, '01', '顶盖第三横梁', 'Roof 3rd cross member', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7531', '20.05.01.01.09.09.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7532', '20.05.01.01.09.09.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7533', '20.05.01.01.09.09.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7534', '20.05.01.01.09.09.02.02', NULL, '02', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7535', '20.05.01.01.09.09.03', NULL, '03', '顶盖第二横梁分总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7536', '20.05.01.01.09.09.04', NULL, '04', '顶盖第二横梁', 'Roof 2nd cross member', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7537', '20.05.01.01.09.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7538', '20.05.01.01.09.10', NULL, '10', '顶盖总成', 'Roof cover assembly ', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7539', '20.05.01.01.09.10.01', NULL, '01', '前顶盖', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('754', '10.10.04.06.01', NULL, '01', '选档摇臂', 'Selector rocker arm', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7540', '20.05.01.01.09.10.02', NULL, '02', '中顶盖', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7541', '20.05.01.01.09.10.03', NULL, '03', '后顶盖', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7542', '20.05.01.01.09.10.04', NULL, '04', '顶盖第一横梁分总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7543', '20.05.01.01.09.10.04.01', NULL, '01', '顶盖第一横梁', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7544', '20.05.01.01.09.10.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7545', '20.05.01.01.09.10.05', NULL, '05', '顶盖第二横梁分总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7546', '20.05.01.01.09.10.05.01', NULL, '01', '顶盖第二横梁', 'Roof 2nd cross member', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7547', '20.05.01.01.09.10.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7548', '20.05.01.01.09.11', NULL, '11', '前侧围外上板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7549', '20.05.01.01.09.11.01', NULL, '01', '前盲窗', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('755', '10.10.04.06.02', NULL, '02', '换挡摇臂', 'Shift rocker arm', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7550', '20.05.01.01.09.11.02', NULL, '02', '裙板支撑板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7551', '20.05.01.01.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7552', '20.05.01.01.19', NULL, '19', '前保险杠上横梁连接件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7553', '20.05.01.01.20', NULL, '20', '下纵梁侧连接板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7554', '20.05.01.01.21', NULL, '21', '空滤器盖板总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7555', '20.05.01.01.21.01', NULL, '01', '空滤器盖板 ', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7556', '20.05.01.01.21.02', NULL, '02', '空滤器盖板卡板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7557', '20.05.01.01.22', NULL, '22', '发动机ECU下挡板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7558', '20.05.01.01.23', NULL, '23', '发动机维修盖板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7559', '20.05.01.01.24', NULL, '24', '前保险杠加强梁', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('756', '10.10.04.06.03', NULL, '03', '铜衬套', 'Copper bush', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7560', '20.05.01.01.25', NULL, '25', '前翼子板总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7561', '20.05.01.01.25.01', NULL, '01', '前翼子板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7562', '20.05.01.01.25.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7563', '20.05.01.01.25.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7564', '20.05.01.01.25.04', NULL, '04', '前翼子板支撑板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7565', '20.05.01.01.26', NULL, '26', '前保险杠上横梁总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7566', '20.05.01.01.26.01', NULL, '01', '前保险杠上横梁总成1', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7567', '20.05.01.01.26.01.01', NULL, '01', '前保险杠上横梁', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7568', '20.05.01.01.26.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7569', '20.05.01.01.26.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('757', '10.10.04.07', NULL, '07', '伸缩杆总成', 'Expansion link assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7570', '20.05.01.01.27', NULL, '27', '水箱上横梁总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7571', '20.05.01.01.27.01', NULL, '01', '水箱上横梁', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7572', '20.05.01.01.27.02', NULL, '02', '支架总成', 'Bracket assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7573', '20.05.01.01.27.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7574', '20.05.01.01.27.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7575', '20.05.01.01.27.03', NULL, '03', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7576', '20.05.01.01.27.04', NULL, '04', '加强板', 'Reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7577', '20.05.01.01.28', NULL, '28', '发动机主盖板总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7578', '20.05.01.01.28.01', NULL, '01', '发动机主盖板总成1', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7579', '20.05.01.01.28.01.01', NULL, '01', '发动机主盖板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('758', '10.10.04.07.01', NULL, '01', '球节', 'Ball joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7580', '20.05.01.01.28.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7581', '20.05.01.01.28.02', NULL, '02', '发动机主盖板摇臂总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7582', '20.05.01.01.28.02.01', NULL, '01', '发动机主盖板摇臂', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7583', '20.05.01.01.28.02.02', NULL, '02', '座椅安装板总成', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7584', '20.05.01.01.28.02.02.01', NULL, '01', '座椅安装板总成1', '11', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7585', '20.05.01.01.28.02.02.01.01', NULL, '01', '座椅安装板', '11', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7586', '20.05.01.01.28.02.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7587', '20.05.01.01.28.02.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7588', '20.05.01.01.28.02.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7589', '20.05.01.01.28.02.04', NULL, '04', '支架总成', 'Bracket assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('759', '10.10.04.07.02', NULL, '02', '脱钩油缸总成', 'Coupler release cylinder assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7590', '20.05.01.01.28.02.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7591', '20.05.01.01.28.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7592', '20.05.01.01.28.03', NULL, '03', '发动机主盖板铰链总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7593', '20.05.01.01.28.04', NULL, '04', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7594', '20.05.01.01.28.04.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7595', '20.05.01.01.28.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7596', '20.05.01.01.28.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7597', '20.05.01.01.29', NULL, '29', '发动机副盖板总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7598', '20.05.01.01.29.01', NULL, '01', '发动机副盖板总成1', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7599', '20.05.01.01.29.01.01', NULL, '01', '发动机副盖板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('75C13121F1F94487AF1', '30.02.03.19', '', '19', 'ECAS标定程序', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('76', '10.02.01.26', NULL, '26', '水温传感器', 'Coolant Temperature Sensor', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('760', '10.10.04.07.03', NULL, '03', '拉杆总成', 'Pull rod assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7600', '20.05.01.01.29.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7601', '20.05.01.01.29.02', NULL, '02', '加强板总成', 'Reinforcing plate assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7602', '20.05.01.01.29.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7603', '20.05.01.01.29.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7604', '20.05.01.01.29.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7605', '20.05.01.01.30', NULL, '30', '圆管梁右安装支架总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7606', '20.05.01.01.31', NULL, '31', '后排座椅安装支架总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7607', '20.05.01.01.32', NULL, '32', '左翼子板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7608', '20.05.01.01.33', NULL, '33', '右翼子板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7609', '20.05.01.01.34', NULL, '34', '副仪表板安装支架组件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('761', '10.10.04.08', NULL, '08', '支撑杆总成', 'Support bar assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7610', '20.05.01.01.35', NULL, '35', '二排座椅安装支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7611', '20.05.01.01.36', NULL, '36', '前地板中通道前加强板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7612', '20.05.01.01.37', NULL, '37', '通道中支架组件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7613', '20.05.01.01.38', NULL, '38', '通道门框焊接总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7614', '20.05.01.01.38.01', NULL, '01', '通道门框上本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7615', '20.05.01.01.38.02', NULL, '02', '通道门框上加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7616', '20.05.01.01.38.03', NULL, '03', '通道门框下本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7617', '20.05.01.01.38.04', NULL, '04', '通道门框下加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7618', '20.05.01.01.38.05', NULL, '05', '通道门框左上本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7619', '20.05.01.01.38.06', NULL, '06', '通道门框左上加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('762', '10.10.04.08.01', NULL, '01', '选档后支撑杆', 'Rear support rod for shifting', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7620', '20.05.01.01.38.07', NULL, '07', '通道门框左上支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7621', '20.05.01.01.38.08', NULL, '08', '通道门框左下本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7622', '20.05.01.01.38.09', NULL, '09', '通道门框左下加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7623', '20.05.01.01.38.10', NULL, '10', '通道门框左下支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7624', '20.05.01.01.38.11', NULL, '11', '通道门框右上本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7625', '20.05.01.01.38.12', NULL, '12', '通道门框右上加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7626', '20.05.01.01.38.13', NULL, '13', '通道门框右上支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7627', '20.05.01.01.38.14', NULL, '14', '通道门框右下本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7628', '20.05.01.01.38.15', NULL, '15', '通道门框右下加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7629', '20.05.01.01.38.16', NULL, '16', '通道门框右下支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('763', '10.10.04.08.02', NULL, '02', '球节', 'Ball joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7630', '20.05.01.01.38.17', NULL, '17', '通道门框加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7631', '20.05.01.01.38.18', NULL, '18', '通道门框支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7632', '20.05.01.01.97', NULL, '97', '安装图', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7633', '20.05.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7634', '20.05.01.02', NULL, '02', '车身外护面', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7635', '20.05.02', NULL, '02', '白车身喷涂及密封', 'Body shell painting and sealing', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7636', '20.05.02.01', NULL, '01', '阻尼垫', 'damping cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7637', '20.05.02.02', NULL, '02', '胶堵', 'Rubber plug', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7638', '20.05.02.03', NULL, '03', '白车身焊接总成焊缝密封胶', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7639', '20.05.02.04', NULL, '04', 'PVC胶', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('764', '10.10.04.09', NULL, '09', '球接头总成', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7640', '20.05.02.05', NULL, '05', '补强片', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7641', '20.05.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7642', '20.05.03', NULL, '03', '车身NVH降噪', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7643', '20.05.03.01', NULL, '01', '卡扣', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7644', '20.05.03.02', NULL, '02', '发泡材料', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7645', '20.05.03.03', NULL, '03', '隔断', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7646', '20.05.03.04', NULL, '04', '胶堵', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7647', '20.05.03.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7648', '20.06', NULL, '06', '车身悬置、翻转及锁止系统', 'Body mount, overturn and locking system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7649', '20.06.01', NULL, '01', '车身悬置系统', 'Body suspension system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('764FD5F4EF5C45FA88D', '30.07.01.14.06', '', '06', '管线束总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('765', '10.10.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7650', '20.06.01.01', NULL, '01', '驾驶室悬置总成', 'Cab suspension assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7651', '20.06.01.01.01', NULL, '01', '悬置上体', 'suspension upper body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7652', '20.06.01.01.02', NULL, '02', '悬置下体', 'suspension lower body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7653', '20.06.01.01.03', NULL, '03', '悬置内管', 'Suspension inner tube', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7654', '20.06.01.01.04', NULL, '04', '悬置本体', 'suspension body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7655', '20.06.01.02', NULL, '02', '悬置套管', 'Suspended casing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7656', '20.06.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7657', '20.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7658', '20.07', NULL, '07', '标志和铭牌', 'Sign and nameplate', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7659', '20.07.01', NULL, '01', '车身外包装 ', 'Outer packing of body', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('766', '10.10.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7660', '20.07.01.01', NULL, '01', '钻石标', 'Identification', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7661', '20.07.01.02', NULL, '02', '后标', 'Brand rear emblem', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7662', '20.07.01.03', NULL, '03', '车身后标', 'Rear emblem on the body', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7663', '20.07.01.04', NULL, '04', '呼叫提示牌', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7664', '20.07.01.05', NULL, '05', '彩条', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7665', '20.07.01.06', NULL, '06', '车侧标识', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7666', '20.07.01.07', NULL, '07', '反光标识', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7667', '20.07.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7668', '20.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7669', '20.07.02', NULL, '02', '货箱外包装', 'Outer packing of cargo body', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('767', '10.10.05', NULL, '05', '变速操纵机构', 'Gear shift control mechanism', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7670', '20.07.02.01', NULL, '01', '车后标牌', 'Body rear nameplate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7671', '20.07.02.02', NULL, '02', '驱动标牌', 'Drive emblem', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7672', '20.07.02.03', NULL, '03', '车侧标志', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7673', '20.07.02.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7674', '20.07.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7675', '30', NULL, '30', '底盘', 'Chassis', '1', NULL, '1', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7676', '30.01', NULL, '01', '车架', 'Frame', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7677', '30.01.01', NULL, '01', '车架', 'Frame assembly', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7678', '30.01.01.01', NULL, '01', '车架总成', 'Frame assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7679', '30.01.01.01.01', NULL, '01', '纵梁总成', 'Left side member assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('768', '10.10.05.01', NULL, '01', '手柄球总成', 'Handle ball assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7680', '30.01.01.01.01.01', NULL, '01', '纵梁', 'Side member', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7681', '30.01.01.01.01.02', NULL, '02', '纵梁加强板', 'Side member inner lining member ', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7682', '30.01.01.01.01.03', NULL, '03', '焊母', 'Welding base metal', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7683', '30.01.01.01.01.04', NULL, '04', '纵梁焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7684', '30.01.01.01.01.05', NULL, '05', '主梁后段', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7685', '30.01.01.01.01.06', NULL, '06', '主梁后段焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7686', '30.01.01.01.01.07', NULL, '07', '主梁前段', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7687', '30.01.01.01.01.08', NULL, '08', '主梁前段焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7688', '30.01.01.01.01.09', NULL, '09', '主梁中段', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7689', '30.01.01.01.01.10', NULL, '10', '主梁中段焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('769', '10.10.05.02', NULL, '02', '密封垫', 'Sealing gasket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7690', '30.01.01.01.01.11', NULL, '11', '副梁总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7691', '30.01.01.01.01.12', NULL, '12', '副梁', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7692', '30.01.01.01.01.13', NULL, '13', '副梁前段', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7693', '30.01.01.01.01.14', NULL, '14', '副梁前段焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7694', '30.01.01.01.01.15', NULL, '15', '副梁后段', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7695', '30.01.01.01.01.16', NULL, '16', '副梁后段焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7696', '30.01.01.01.01.17', NULL, '17', '副梁中段', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7697', '30.01.01.01.01.18', NULL, '18', '副梁中段焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7698', '30.01.01.01.01.19', NULL, '19', '副梁加强版', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7699', '30.01.01.01.01.20', NULL, '20', '副梁加强版焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('77', '10.02.01.27', NULL, '27', '热交换器', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('770', '10.10.05.03', NULL, '03', '压板', 'Pressure plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7700', '30.01.01.01.01.21', NULL, '21', '碰撞吸能盒总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7701', '30.01.01.01.01.21.01', NULL, '01', '碰撞吸能盒', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7702', '30.01.01.01.01.21.02', NULL, '02', '碰撞吸能盒上板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7703', '30.01.01.01.01.21.03', NULL, '03', '碰撞吸能盒下板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7704', '30.01.01.01.01.22', NULL, '22', '上板焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7705', '30.01.01.01.01.23', NULL, '23', '下板焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7706', '30.01.01.01.02', NULL, '02', '横梁总成', 'First cross member assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7707', '30.01.01.01.02.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7708', '30.01.01.01.02.02', NULL, '02', '横梁连接板', 'Cross member connecting plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7709', '30.01.01.01.02.03', NULL, '03', '横梁加强板', 'cross member reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('771', '10.10.05.04', NULL, '04', '变速操纵护罩总成', 'Gear shift control protection cover assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7710', '30.01.01.01.02.04', NULL, '04', '支架', 'Bracket', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7711', '30.01.01.01.02.05', NULL, '05', '横梁连接板焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7712', '30.01.01.01.02.06', NULL, '06', '横梁上板焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7713', '30.01.01.01.02.07', NULL, '07', '横梁下板焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7714', '30.01.01.01.02.08', NULL, '08', '横梁下板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7715', '30.01.01.01.02.09', NULL, '09', '横梁上板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7716', '30.01.01.01.02.10', NULL, '10', '横梁加强衬板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7717', '30.01.01.01.02.10.01', NULL, '01', '支架焊合', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7718', '30.01.01.01.02.11', NULL, '11', '横梁垫板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7719', '30.01.01.01.02.12', NULL, '12', '加强筋', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('772', '10.10.05.04.01', NULL, '01', '操纵杆护套', 'Control lever jacket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7720', '30.01.01.01.02.12.01', NULL, '01', '横梁加强筋', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7721', '30.01.01.01.02.13', NULL, '13', '横梁上片', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7722', '30.01.01.01.02.13.01', NULL, '01', '横梁上片焊合', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7723', '30.01.01.01.02.14', NULL, '14', '横梁下片', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7724', '30.01.01.01.02.14.01', NULL, '01', '横梁下片焊合', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7725', '30.01.01.01.02.15', NULL, '15', '横梁上连接板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7726', '30.01.01.01.02.15.01', NULL, '01', '横梁上连接板焊合', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7727', '30.01.01.01.02.16', NULL, '16', '横梁下连接板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7728', '30.01.01.01.02.16.01', NULL, '01', '横梁下连接板焊合', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7729', '30.01.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('773', '10.10.05.04.02', NULL, '02', '操纵护壳', 'Control casing', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7730', '30.01.01.01.03', NULL, '03', '支架总成', 'Powertrain mount bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7731', '30.01.01.01.03.01', NULL, '01', '支架本体', 'Bracket body', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7732', '30.01.01.01.03.02', NULL, '02', '支架加强板', 'Bracket connecting plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7733', '30.01.01.01.03.03', NULL, '03', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7734', '30.01.01.01.03.04', NULL, '04', '支架焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7735', '30.01.01.01.03.05', NULL, '05', '支架上板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7736', '30.01.01.01.03.06', NULL, '06', '支架下板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7737', '30.01.01.01.03.07', NULL, '07', '支架内板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7738', '30.01.01.01.03.08', NULL, '08', '支架外板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7739', '30.01.01.01.04', NULL, '04', '拖车钩', 'Towing hook', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('774', '10.10.05.04.03', NULL, '03', '护套卡环', 'Jack snap ring', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7740', '30.01.01.01.05', NULL, '05', '排气吊钩', 'Exhaust hook', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7741', '30.01.01.01.06', NULL, '06', '加强板', 'Reinforced plate', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7742', '30.01.01.01.07', NULL, '07', '支撑总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7743', '30.01.01.01.07.01', NULL, '01', '支撑', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7744', '30.01.01.01.07.02', NULL, '02', '支撑焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7745', '30.01.01.01.07.03', NULL, '03', '支撑连接板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7746', '30.01.01.01.07.04', NULL, '04', '支撑加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7747', '30.01.01.01.08', NULL, '08', '套管总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7748', '30.01.01.01.08.01', NULL, '01', '套管', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7749', '30.01.01.01.08.02', NULL, '02', '套管焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('775', '10.10.05.04.04', NULL, '04', '防尘罩固定套', 'Fixing sleeve for dust cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7750', '30.01.01.01.08.03', NULL, '03', '套管焊接板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7751', '30.01.01.01.09', NULL, '09', '销轴焊合', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7752', '30.01.01.01.09.01', NULL, '01', '销轴', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7753', '30.01.01.01.09.02', NULL, '02', '支座', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7754', '30.01.01.01.09.03', NULL, '03', '支座外板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7755', '30.01.01.01.09.04', NULL, '04', '支座内板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7756', '30.01.01.01.10', NULL, '10', '撞击板总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7757', '30.01.01.01.10.01', NULL, '01', '撞击板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7758', '30.01.01.01.10.02', NULL, '02', '撞击板限位支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7759', '30.01.01.01.10.03', NULL, '03', '排气吊钩焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('776', '10.10.05.05', NULL, '05', '变速操纵机构总成', 'Gear shift control mechanism assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7760', '30.01.01.01.10.04', NULL, '04', '卡环', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7761', '30.01.01.01.11', NULL, '11', '悬置筋板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7762', '30.01.01.01.11.01', NULL, '01', '悬置支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7763', '30.01.01.01.11.02', NULL, '02', '悬置焊合', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7764', '30.01.01.01.11.03', NULL, '03', '悬置上板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7765', '30.01.01.01.97', NULL, '97', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7766', '30.01.02', NULL, '02', '副车架', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7767', '30.01.02.01', NULL, '01', '副车架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7768', '30.01.02.02', NULL, '02', '控制器支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7769', '30.01.02.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('777', '10.10.05.05.01', NULL, '01', '变速操纵机构总成', 'Gear shift control mechanism assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7770', '30.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7771', '30.02', NULL, '02', '悬架系统', 'Suspension system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7772', '30.02.01', NULL, '01', '前悬架 ', 'Front suspension', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7773', '30.02.01.02', NULL, '02', '空气悬架总成', ' air suspension assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7774', '30.02.01.03', NULL, '03', '减振器总成', 'Shock absorber assembly ', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7775', '30.02.01.03.01', NULL, '01', '减振器', 'Front shock absorber', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7776', '30.02.01.03.02', NULL, '02', '衬套', 'Lining', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7777', '30.02.01.03.03', NULL, '03', '垫片', 'Gasket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7777056AAE6D450681B', '20.04.01.01.06', '', '06', '左前门B柱副密封条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7778', '30.02.01.04', NULL, '04', '前螺旋弹簧', 'Front coil spring', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7779', '30.02.01.05', NULL, '05', '前稳定杆总成', 'Stabilizer bar assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('778', '10.10.05.05.02', NULL, '02', '电控操纵器总成', 'Electronic controller assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7780', '30.02.01.05.01', NULL, '01', '前横向稳定杆', 'Stabilizer handle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7781', '30.02.01.05.02', NULL, '02', '稳定杆支座', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7782', '30.02.01.05.03', NULL, '03', '稳定杆卡箍', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7783', '30.02.01.05.04', NULL, '04', '稳定杆衬套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7784', '30.02.01.05.05', NULL, '05', '立柱连杆', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7785', '30.02.01.05.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7786', '30.02.01.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7787', '30.02.01.07', NULL, '07', '前悬架总成', 'Hanging rod', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7788', '30.02.01.08', NULL, '08', '销轴', 'Pin shaft', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7789', '30.02.01.09', NULL, '09', '空气弹簧带减振器总成', 'Air spring and shock absorber assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('779', '10.10.05.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7790', '30.02.01.10', NULL, '10', '气囊', 'Airbag', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7791', '30.02.01.11', NULL, '11', '高度阀', 'Altitude valve', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7792', '30.02.01.12', NULL, '12', '高度阀调节杆总成', 'Height valve Adjusting rod assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7793', '30.02.01.13', NULL, '13', '尼龙管总成', 'Nylon pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7794', '30.02.01.14', NULL, '14', '接头式压注油杯', 'Angle hydraulic grease nipples', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7795', '30.02.01.15', NULL, '15', '上摆臂总成', 'Left upper swing arm assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7796', '30.02.01.15.02', NULL, '02', '球销', 'Ball pin', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7797', '30.02.01.15.03', NULL, '03', '摆臂本体', 'swing arm body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7798', '30.02.01.15.04', NULL, '04', '摆臂轴', ' swing arm', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7799', '30.02.01.15.05', NULL, '05', '摆臂衬套', 'swing arm bushing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('77BBAEB26FE140E6A62', '20.08.04.03', '', '03', '排放标', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('77F4073E82F24A8284F', '20.05.01.01.01.06.08', '', '08', '顶盖右加强板', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('78', '10.02.01.28', NULL, '28', '冷暖机组', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('780', '10.10.05.07', NULL, '07', '堵盖', 'Plug', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7800', '30.02.01.15.06', NULL, '06', '垫片', 'Gasket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7801', '30.02.01.15.07', NULL, '07', '防尘套', 'Dust sleeve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7802', '30.02.01.15.08', NULL, '08', '开槽螺母', 'slotted nut', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7803', '30.02.01.15.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7804', '30.02.01.16', NULL, '16', '下摆臂总成', 'Lower swing arm assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7805', '30.02.01.16.01', NULL, '01', '轴', 'Lower swinng arm shaft', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7805DA60C9D84FE5B99', '50.01.01.01.09', '', '09', '货箱后门左铰链总成', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7806', '30.02.01.16.03', NULL, '03', '球销', 'Ball pin', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7807', '30.02.01.16.04', NULL, '04', '摆臂本体', 'swing arm body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7808', '30.02.01.16.05', NULL, '05', '摆臂衬套', 'swing arm bushing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7809', '30.02.01.16.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('781', '10.10.05.08', NULL, '08', '手柄带气阀总成', 'Handle with gas valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7810', '30.02.01.17', NULL, '17', '扭力杆总成', 'Torsion bar assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7811', '30.02.01.17.01', NULL, '01', '扭力杆', 'Torsion bar', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7812', '30.02.01.17.02', NULL, '02', '扭力杆座', 'Torsion bar', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7813', '30.02.01.17.03', NULL, '03', '调节臂', 'Adjusting arm ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7814', '30.02.01.17.04', NULL, '04', '调节垫块', 'adjusting cushion block', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7815', '30.02.01.17.05', NULL, '05', '防尘套', 'Dust sleeve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7816', '30.02.01.17.06', NULL, '06', '调节螺栓', 'adjusting bolt', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7817', '30.02.01.17.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7818', '30.02.01.18', NULL, '18', '推力杆总成', 'Distance rod assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7819', '30.02.01.18.01', NULL, '01', '推力杆', 'Distance handle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('782', '10.10.05.08.01', NULL, '01', '手柄', 'Handle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7820', '30.02.01.18.02', NULL, '02', '推力杆衬套', 'Lining', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7821', '30.02.01.18.03', NULL, '03', '齿套', 'Tooth sleeve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7822', '30.02.01.18.04', NULL, '04', '垫片', 'Gasket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7823', '30.02.01.18.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7824', '30.02.01.19', NULL, '19', '前横向稳定杆', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7825', '30.02.01.20', NULL, '20', '调节凸轮', 'Adjusting cam', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7826', '30.02.01.21', NULL, '21', '前滑柱总成', 'Front sliding column assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7827', '30.02.01.21.01', NULL, '01', '前减振器总成', 'Front shock absorber assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7828', '30.02.01.21.02', NULL, '02', '螺旋弹簧', 'Spiral spring', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7829', '30.02.01.21.03', NULL, '03', '前减振器组件衬套总成', 'Front damper set bushing assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('783', '10.10.05.08.02', NULL, '02', '气阀', 'Air valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7830', '30.02.01.21.04', NULL, '04', '隔离套', 'Isolation cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7831', '30.02.01.21.05', NULL, '05', '上安装垫片', 'Upper installation gasket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7832', '30.02.01.21.06', NULL, '06', '上安装软垫', 'Upper rubber cushion ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7833', '30.02.01.21.07', NULL, '07', '内垫圈', 'Inner gasket ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7834', '30.02.01.21.08', NULL, '08', '内橡胶胶垫', 'Inner rubber pad', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7835', '30.02.01.21.09', NULL, '09', '连接板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7836', '30.02.01.21.10', NULL, '10', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7837', '30.02.01.21.11', NULL, '11', '弹簧座', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7838', '30.02.01.21.12', NULL, '12', '轴承', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7839', '30.02.01.21.13', NULL, '13', '缓冲块', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('784', '10.10.05.08.03', NULL, '03', '气管', 'Air pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7840', '30.02.01.21.14', NULL, '14', '防尘罩', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7841', '30.02.01.22', NULL, '22', '稳定杆支座', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7842', '30.02.01.23', NULL, '23', '衬套', 'Lining', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7843', '30.02.01.24', NULL, '24', '定位盖', 'Locating cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7844', '30.02.01.25', NULL, '25', '隔离套', 'Isolation cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7845', '30.02.01.26', NULL, '26', '防尘罩', 'Dust cap', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7846', '30.02.01.27', NULL, '27', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7847', '30.02.01.28', NULL, '28', '支撑盖', 'Integral type connecting plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7848', '30.02.01.29', NULL, '29', '立柱连杆', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7849', '30.02.01.29.01', NULL, '01', '连杆', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('785', '10.10.05.08.04', NULL, '04', '接头', 'Joint', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7850', '30.02.01.29.02', NULL, '02', '立柱连杆垫圈', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7851', '30.02.01.29.03', NULL, '03', '立柱连杆衬套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7852', '30.02.01.29.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7853', '30.02.01.30', NULL, '30', '稳定杆卡箍', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7854', '30.02.01.31', NULL, '31', '前缓冲块总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7855', '30.02.01.32', NULL, '32', '传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7856', '30.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7857', '30.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7858', '30.02.02', NULL, '02', '后悬架', 'Rear suspension', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7859', '30.02.02.01', NULL, '01', '钢板弹簧总成', 'Leaf spring assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('786', '10.10.05.09', NULL, '09', '换挡器总成', 'Shifter assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7860', '30.02.02.01.01', NULL, '01', '簧片', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7861', '30.02.02.01.02', NULL, '02', '卷耳衬套', ' rolling lug bushing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7862', '30.02.02.01.03', NULL, '03', '板簧卡', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7863', '30.02.02.02', NULL, '02', '板簧销轴', 'Leaf spring pin shaft', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7864', '30.02.02.03', NULL, '03', '板簧吊耳总成', 'Leaf spring lifting lug assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7865', '30.02.02.03.01', NULL, '01', '吊耳', 'Lifting lug', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7866', '30.02.02.03.02', NULL, '02', '衬套', 'Lining', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7867', '30.02.02.04', NULL, '04', '板簧后吊耳安装螺母', 'Leaf spring rear lifting lug installation nut', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7868', '30.02.02.05', NULL, '05', '后吊耳外板', 'Rear lifting lug outer plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7869', '30.02.02.06', NULL, '06', '后吊耳内板', 'Rear lifting lug inner plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('787', '10.10.05.09.01', NULL, '01', '换挡器总成', 'Shifter assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7870', '30.02.02.07', NULL, '07', '衬套', 'Lining', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7871', '30.02.02.08', NULL, '08', '板簧紧固板', 'Leaf spring fastening plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7872', '30.02.02.11', NULL, '11', '骑马螺栓', 'U bolt', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7873', '30.02.02.12', NULL, '12', '缓冲块总成', 'buffer block assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7874', '30.02.02.13', NULL, '13', '后减振器总成', 'Rear shock absorber assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7875', '30.02.02.13.01', NULL, '01', '后减振器', 'Rear shock absorber', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7876', '30.02.02.13.02', NULL, '02', '后减吊耳衬套', 'Rear reducer lifting lug bushing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7877', '30.02.02.13.03', NULL, '03', '后减下垫片', 'Rear reducer lower gasket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7878', '30.02.02.13.04', NULL, '04', '后减上胶垫', 'Rear reducer Upper rubber cushion ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7879', '30.02.02.13.05', NULL, '05', '后减上垫片', 'Rear reducer Upper gasket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('788', '10.10.05.09.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7880', '30.02.02.13.06', NULL, '06', '后减下胶垫', 'Rear reducer lower rubber cushion ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7881', '30.02.02.15', NULL, '15', '后板簧压板', 'Rear leaf spring pressure plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7882', '30.02.02.16', NULL, '16', '气囊盖板', 'airbag cover plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7883', '30.02.02.19', NULL, '19', '气囊', 'Airbag', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7884', '30.02.02.20', NULL, '20', '高度阀调节杆总成', 'Height valve Adjusting rod assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7885', '30.02.02.21', NULL, '21', '高度阀', 'Altitude valve', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7886', '30.02.02.22', NULL, '22', '吊杆总成', 'Hanger assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7887', '30.02.02.23', NULL, '23', '托臂总成', 'Support arm assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7888', '30.02.02.24', NULL, '24', '螺旋弹簧', 'Spiral spring', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7889', '30.02.02.25', NULL, '25', '螺旋弹簧胶垫', 'Spiral spring pad', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('789', '10.10.05.10', NULL, '10', '操纵杆', 'Joystick', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7890', '30.02.02.26', NULL, '26', '防尘罩', 'Dust cap', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7891', '30.02.02.27', NULL, '27', '调节凸轮', 'Adjusting cam', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7892', '30.02.02.28', NULL, '28', '后稳定杆总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7893', '30.02.02.28.01', NULL, '01', '后横向稳定杆', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7894', '30.02.02.28.02', NULL, '02', '立柱连杆', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7895', '30.02.02.28.03', NULL, '03', '卡箍', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7896', '30.02.02.28.04', NULL, '04', '衬套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7897', '30.02.02.28.05', NULL, '05', '稳定杆支座', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7898', '30.02.02.28.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7899', '30.02.02.29', NULL, '29', '后横向稳定杆', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('78B955E56A8E4467894', '20.04.02.01.39', '', '39', '右后车门防撞梁', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('78DA7837B8F444FA8A6', '60.06.01.01.09.03', '', '03', 'B箱连接排-模组到输出正', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('79', '10.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('790', '10.10.05.11', NULL, '11', '过线胶套', 'Rubber ring', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7900', '30.02.02.30', NULL, '30', '衬套', 'Lining', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7901', '30.02.02.30.01', NULL, '01', '卡箍', 'Hoop', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7902', '30.02.02.30.02', NULL, '02', '立柱连杆', 'Stand column connecting rod', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7903', '30.02.02.30.03', NULL, '03', '衬套', 'Lining', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7904', '30.02.02.30.04', NULL, '04', '垫片', 'Gasket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7905', '30.02.02.30.05', NULL, '05', '后稳定杆总成', 'Install transverse stabilizer bar assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7906', '30.02.02.31', NULL, '31', '后悬架总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7907', '30.02.02.32', NULL, '32', '稳定杆支座', 'Stabilizer rod mount', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7908', '30.02.02.33', NULL, '33', '横梁总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7909', '30.02.02.34', NULL, '34', '板簧座', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('791', '10.10.05.12', NULL, '12', '防尘罩', 'Dust cap', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7910', '30.02.02.35', NULL, '35', '后空气悬架总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7911', '30.02.02.36', NULL, '36', '后气囊', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7912', '30.02.02.37', NULL, '37', '后气囊上盖板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7913', '30.02.02.38', NULL, '38', '高度阀上支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7914', '30.02.02.39', NULL, '39', '高度阀下支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7915', '30.02.02.40', NULL, '40', '后轴电磁阀支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7916', '30.02.02.41', NULL, '41', '高度阀调节杆总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7917', '30.02.02.42', NULL, '42', '高度阀', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7918', '30.02.02.43', NULL, '43', '连杆总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7919', '30.02.02.44', NULL, '44', '传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('792', '10.10.05.13', NULL, '13', '快插接头', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7920', '30.02.02.45', NULL, '45', '摆臂总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7921', '30.02.02.45.01', NULL, '01', '轴', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7922', '30.02.02.45.02', NULL, '02', '凸轮', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7923', '30.02.02.45.03', NULL, '03', '球销', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7924', '30.02.02.45.04', NULL, '04', '摆臂本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7925', '30.02.02.45.05', NULL, '05', '摆臂衬套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7926', '30.02.02.45.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7927', '30.02.02.46', NULL, '46', '纵臂总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7928', '30.02.02.46.01', NULL, '01', '纵臂', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7929', '30.02.02.46.02', NULL, '02', '纵臂衬套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('793', '10.10.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7930', '30.02.02.46.03', NULL, '03', '纵臂衬套套管', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7931', '30.02.02.46.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7932', '30.02.02.47', NULL, '47', '横拉杆总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7933', '30.02.02.47.01', NULL, '01', '横拉杆', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7934', '30.02.02.47.02', NULL, '02', '横拉杆衬套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7935', '30.02.02.47.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7936', '30.02.02.48', NULL, '48', '推力杆总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7937', '30.02.02.48.01', NULL, '01', '推力杆', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7938', '30.02.02.48.02', NULL, '02', '推力杆支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7939', '30.02.02.48.03', NULL, '03', '推力杆衬套', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('794', '10.10.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7940', '30.02.02.48.04', NULL, '04', '推力杆前防撞垫', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7941', '30.02.02.48.05', NULL, '05', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7942', '30.02.02.49', NULL, '49', '螺旋弹簧', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7943', '30.02.02.50', NULL, '50', '螺簧上胶座', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7944', '30.02.02.51', NULL, '51', '螺簧下胶座', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7945', '30.02.02.52', NULL, '52', '后减振器带螺簧总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7946', '30.02.02.53', NULL, '53', '立柱连杆', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7947', '30.02.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7948', '30.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7949', '30.03', NULL, '03', '车轮及轮胎', 'Wheel and tire', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('795', '10.10.06', NULL, '06', '加速传动装置-底盘部分', 'Acceleration Drive Device -Chassis part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7950', '30.03.01', NULL, '01', '车轮及轮胎', 'Wheel and tire', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7951', '30.03.01.01', NULL, '01', '车轮总成', 'Wheel assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7952', '30.03.01.01.01', NULL, '01', '车轮', 'Wheel', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7953', '30.03.01.01.02', NULL, '02', '气门嘴总成', 'Tire valve assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7954', '30.03.01.01.03', NULL, '03', '轮胎', 'Tyre', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7955', '30.03.01.01.04', NULL, '04', '钢轮', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7956', '30.03.01.01.05', NULL, '05', '胎压监测模块', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7957', '30.03.01.03', NULL, '03', '轴头盖', 'axle head cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7958', '30.03.01.04', NULL, '04', '车轮螺母', 'Wheel nut', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7959', '30.03.01.05', NULL, '05', '胎压接收模块', 'Tire pressure receiving module', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('796', '10.10.06.01', NULL, '01', '加速传动装置', 'Acceleration drive device', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7960', '30.03.01.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7961', '30.03.01.07', NULL, '07', '气门嘴延伸管带护帽', 'Valve extension tube with protective cap', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7962', '30.03.01.08', NULL, '08', '轮辋面罩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7963', '30.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7964', '30.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7965', '30.04', NULL, '04', '转向系统', 'Steering system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7966', '30.04.01', NULL, '01', '转向器及附件', 'Steering gear and accessories', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7967', '30.04.01.01', NULL, '01', '油泵总成', 'Oil pump assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7968', '30.04.01.01.01', NULL, '01', '油泵', 'Steering gear oil pump ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7969', '30.04.01.01.02', NULL, '02', '传动件', 'Transmission parts', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('797', '10.10.06.02', NULL, '02', '油门拉线', 'Accelerator cable', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7970', '30.04.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7971', '30.04.01.01.04', NULL, '04', '转向油罐', 'Steering oil pump support weldment assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7972', '30.04.01.01.05', NULL, '05', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7973', '30.04.01.02', NULL, '02', '转向油泵带油罐总成', 'Steering oil pump belt oil tank assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7974', '30.04.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7975', '30.04.01.04', NULL, '04', '油罐总成', 'Steering oil pump support weldment assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7976', '30.04.01.04.01', NULL, '01', '转向油罐', 'Steering oil pump support weldment assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7977', '30.04.01.04.02', NULL, '02', '油罐盖', 'Tank cap', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7978', '30.04.01.04.03', NULL, '03', '传感器', 'Sensor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7979', '30.04.01.04.04', NULL, '04', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('798', '10.10.06.03', NULL, '03', '熄火拉线', 'Flameout cable', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7980', '30.04.01.04.05', NULL, '05', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7981', '30.04.01.05', NULL, '05', '接头', 'Joint', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7982', '30.04.01.06', NULL, '06', '胶管', 'Hose', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7983', '30.04.01.07', NULL, '07', '管路总成', 'Line assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7984', '30.04.01.07.01', NULL, '01', '管路总成', 'Line assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7985', '30.04.01.07.02', NULL, '02', '胶管', 'Hose', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7986', '30.04.01.07.03', NULL, '03', '铝管', 'Aluminum tube', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7987', '30.04.01.07.04', NULL, '04', '钢管', 'Steel pipe', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7988', '30.04.01.07.05', NULL, '05', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7989', '30.04.01.07.06', NULL, '06', '护套', 'sheath', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('799', '10.10.06.04', NULL, '04', '远程电控油门', 'Remote electronic power accelerator', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7990', '30.04.01.08', NULL, '08', '皮带', 'Belt', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7991', '30.04.01.09', NULL, '09', '转向器总成', 'Steering gear assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7992', '30.04.01.10', NULL, '10', '张紧轮总成', 'Tensioning pulley belt bracket assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7993', '30.04.01.10.01', NULL, '01', '张紧轮', 'Turbocharger air intake hose', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7994', '30.04.01.10.02', NULL, '02', '轴承', 'Shaft bearing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7995', '30.04.01.10.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7996', '30.04.01.11', NULL, '11', '转向减速器总成', 'Steering reducer assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7997', '30.04.01.12', NULL, '12', '电动转向机ECU', 'Electric steering gear ECU', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7998', '30.04.01.13', NULL, '13', '转向泵带驱动电机总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7999', '30.04.01.14', NULL, '14', '橡胶套', 'Rubber sleeve', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7A44CC3D4C574133916', '20.04.03', '', '03', '充电口装置', '', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7A49EEAFCF7B440186C', '20.02.04.01.04', '', '04', '后围下护板', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7B33279329D34361A56', '20.04.04.01.01.08', '', '08', '前舱盖撑杆', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7C5BD3CD2B11434EBAF', '20.04.06.01.52', '', '52', '右滑门缓冲块下加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('7C71E7034948454A893', '20.02.09.02', '', '02', '地板孔塞', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7CFDE3245352402989C', '20.04.04.01.01.11.02', '', '02', '前舱盖开关拉手总成', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('7D4BC46C208C4F5390F', '50.01.01.01.12', '', '12', '货箱后门右铰链总成', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8', '10.01.01.04', NULL, '04', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('80', '10.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('800', '10.10.06.05', NULL, '05', '阻风门拉线', 'Choke valve cable', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8000', '30.04.01.15', NULL, '15', '转向泵罐带支架总成', 'Steering pump can with bracket assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8001', '30.04.01.16', NULL, '16', '空心螺栓', 'Hollow bolt', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8002', '30.04.01.17', NULL, '17', 'EPS(齿轮齿条电动转向器总成)', 'EPS', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8003', '30.04.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8004', '30.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8005', '30.04.02', NULL, '02', '转向传动装置 ', 'Steering drive device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8006', '30.04.02.01', NULL, '01', '方向盘总成', 'Steering wheel assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8007', '30.04.02.01.01', NULL, '01', '方向盘骨架', 'Steering wheel installation bolt filting', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8008', '30.04.02.01.02', NULL, '02', '方向盘盖', 'Steering wheel body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8009', '30.04.02.01.03', NULL, '03', '方向盘多功能按键', 'Multifunction steering wheel button', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('801', '10.10.06.06', NULL, '06', '阻风门按钮', 'Choke valve button', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8010', '30.04.02.01.04', NULL, '04', '方向盘滑环座', 'Steering wheel slip ring seat', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8011', '30.04.02.02', NULL, '02', '转向管柱带传动轴总成', 'Steering column belt and drive shaft assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8012', '30.04.02.02.01', NULL, '01', '转向管柱总成', 'Steering column assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8013', '30.04.02.02.02', NULL, '02', '挠性联轴器', 'Flexible coupling', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8014', '30.04.02.02.03', NULL, '03', '转向传动轴总成', 'Steering drive shaft assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8015', '30.04.02.02.03.01', NULL, '01', '转向传动轴', 'Steering drive shaft', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8016', '30.04.02.02.03.02', NULL, '02', '转向万向节', 'Steering upper shaft assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8017', '30.04.02.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8018', '30.04.02.02.04', NULL, '04', '转向管柱带可调机构总成', 'Steering column with adjustable mechanism', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8019', '30.04.02.02.04.01', NULL, '01', '转向管柱带上传动轴总成', 'Steering column belt and front drive shaft assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('802', '10.10.06.07', NULL, '07', '加速操纵执行器', 'Acceleration control actuator', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8020', '30.04.02.02.04.01.01', NULL, '01', '套管', 'Casing', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8021', '30.04.02.02.04.01.02', NULL, '02', '防撞管', 'Anti-collision tube', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8022', '30.04.02.02.04.01.03', NULL, '03', '固定轴栓', 'Fixing shaft bolt', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8023', '30.04.02.02.04.01.04', NULL, '04', '弹性线束卡', 'Elastic harness clamp', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8024', '30.04.02.02.04.01.05', NULL, '05', '橡胶轴承', 'Rubber bearing', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8025', '30.04.02.02.04.01.06', NULL, '06', '滚子轴承', 'Roller bearing', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8026', '30.04.02.02.04.01.07', NULL, '07', '转向管柱', 'Steering column assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8027', '30.04.02.02.04.01.08', NULL, '08', '转向上传动轴', 'Upper steering drive shaft', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8028', '30.04.02.02.04.01.09', NULL, '09', '支架', 'Bracket', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8029', '30.04.02.02.04.01.10', NULL, '10', '限位板', 'Limit plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('803', '10.10.06.08', NULL, '08', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8030', '30.04.02.02.04.01.11', NULL, '11', '锁止套', 'Locking sleeve', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8031', '30.04.02.02.04.01.12', NULL, '12', '调整手柄', 'Adjusting lever', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8032', '30.04.02.02.04.01.13', NULL, '13', '内调整块', 'Inner adjusting block', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8033', '30.04.02.02.04.01.14', NULL, '14', '防撞衬圈', 'Anti-collision liner', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8034', '30.04.02.02.04.01.15', NULL, '15', '轴承内挡圈', 'Bearing inner ring', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8035', '30.04.02.02.04.01.16', NULL, '16', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8036', '30.04.02.02.04.02', NULL, '02', '中传动轴总成', 'Middle drive assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8037', '30.04.02.02.04.02.01', NULL, '01', '中传动轴', 'middle steering column assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8038', '30.04.02.02.04.02.02', NULL, '02', '中传动轴套', 'Middle drive bushing', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8039', '30.04.02.02.04.02.03', NULL, '03', '联轴片', 'Coupling piece', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('804', '10.10.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8040', '30.04.02.02.04.02.04', NULL, '04', '橡胶垫', 'Rubber cushion', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8041', '30.04.02.02.04.02.05', NULL, '05', '万向节叉', 'Universal yoke', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8042', '30.04.02.02.04.02.06', NULL, '06', '柳钉', 'Rivet', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8043', '30.04.02.02.04.02.07', NULL, '07', '垫圈', 'Washer', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8044', '30.04.02.02.04.02.08', NULL, '08', '十字轴总成', 'Cross shaft assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8045', '30.04.02.02.04.02.09', NULL, '09', '定位轴', 'Locating shaft', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8046', '30.04.02.02.04.02.10', NULL, '10', '定位套总成', 'Locating sleeve assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8047', '30.04.02.02.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8048', '30.04.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8049', '30.04.02.04', NULL, '04', '护套', 'Protective boot', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('805', '10.11', NULL, '11', '变速器冷却', 'Transmission cooling device', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8050', '30.04.02.05', NULL, '05', '电动转向管柱带传动轴总成', 'Steering column and drive shaft assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8051', '30.04.02.05.01', NULL, '01', '电动转向管柱本体', 'Steering column ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8052', '30.04.02.05.02', NULL, '02', '电动转向管柱ECU', 'Electric steering column ECU', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8053', '30.04.02.05.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8054', '30.04.02.05.04', NULL, '04', '传感器', 'Sensor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8055', '30.04.02.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8056', '30.04.02.08', NULL, '08', '转向传动轴总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8057', '30.04.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8058', '30.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8059', '30.05', NULL, '05', '制动系统', 'Brake system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('806', '10.11.01', NULL, '01', '变速器冷却装置', 'Transmission cooling device', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8060', '30.05.01', NULL, '01', '制动操纵系统', 'Brake control system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8061', '30.05.01.01', NULL, '01', '驻车制动操纵手柄总成', 'Parking brake control handle assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8062', '30.05.01.02', NULL, '02', '驻车制动主拉线总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8063', '30.05.01.03', NULL, '03', '拉线固定卡', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8064', '30.05.01.04', NULL, '04', '手刹护罩', 'Hand brake shield', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8065', '30.05.01.05', NULL, '05', '驻车拉杆总成', 'Parking pull rod assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8066', '30.05.01.05.01', NULL, '01', '驻车拉杆', 'Parking pull rod', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8067', '30.05.01.05.02', NULL, '02', '平衡架', 'Balancing bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8068', '30.05.01.06', NULL, '06', '驻车制动操纵手柄带主拉线总成', 'Parking brake control handle with wire drawing assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8069', '30.05.01.06.01', NULL, '01', '驻车制动操纵手柄总成', 'Parking brake control handle assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('807', '10.11.01.01', NULL, '01', '油冷器总成', 'Oil cooler assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8070', '30.05.01.06.02', NULL, '02', '驻车制动主拉线总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8071', '30.05.01.06.09', NULL, '09', '主拉线隔热板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8072', '30.05.01.07', NULL, '07', '电子驻车控制器', 'Electronic parking controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8073', '30.05.01.08', NULL, '08', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8074', '30.05.01.09', NULL, '09', '驻车制动器(带拉线)总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8075', '30.05.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8076', '30.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8077', '30.05.02', NULL, '02', '踏板及吊挂', 'Pedal and suspension', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8078', '30.05.02.01', NULL, '01', '液刹制动踏板总成', 'Hydraulic brake brake pedal device', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8079', '30.05.02.01.01', NULL, '01', '制动踏板臂', 'brake pedal arm assembly ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('808', '10.11.01.02', NULL, '02', '软管总成', 'Hose assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8080', '30.05.02.01.02', NULL, '02', '轴套', 'shaft sleeve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8081', '30.05.02.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8082', '30.05.02.03', NULL, '03', '制动离合组合式踏板总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8083', '30.05.02.04', NULL, '04', '胶堵', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8084', '30.05.02.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8085', '30.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8086', '30.05.03', NULL, '03', '真空助力器及制动总泵', 'Vacuum booste and Brake assembly', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8087', '30.05.03.01', NULL, '01', '真空助力器带制动总泵及储油杯总成', 'Vacuum booster and brake master cylinder, oil storage cup assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8088', '30.05.03.01.01', NULL, '01', '真空助力器', 'Vacuum booste', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8089', '30.05.03.01.02', NULL, '02', '制动总泵', 'Brake assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('809', '10.11.01.03', NULL, '03', '硬管总成', 'Rigid pipe assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8090', '30.05.03.01.03', NULL, '03', '储油杯', 'Oil storage cup assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8091', '30.05.03.02', NULL, '02', '真空钢管总成', 'Vacuum nylon pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8092', '30.05.03.03', NULL, '03', '真空罐总成', 'Vacuum tank assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8093', '30.05.03.04', NULL, '04', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8094', '30.05.03.05', NULL, '05', '电动真空泵总成', 'Electric vacuum pump assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8095', '30.05.03.06', NULL, '06', '真空尼龙管总成', 'Vacuum nylon pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8096', '30.05.03.07', NULL, '07', '压力传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8097', '30.05.03.08', NULL, '08', '液压助力器及制动总泵', 'Vacuum booster and brake master pump', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8098', '30.05.03.09', NULL, '09', '单向阀', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8099', '30.05.03.10', NULL, '10', '管路总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('80A8A9AE90BE459C89F', '20.03.01.01.36', '', '36', '手机支架', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('80C38AD0951E45ABBA3', '30.06.04.18', '', '18', '非全尺寸备胎标签', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('80D5E5933ECD46A7B4E', '20.03.04.01.02', '', '02', '前排左侧卷收器总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('81', '10.03', NULL, '03', '燃料存贮&输送密封垫', 'Fuel storage & transport sealing gasket', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('810', '10.11.01.04', NULL, '04', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8100', '30.05.03.11', NULL, '11', '真空软管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8101', '30.05.03.12', NULL, '12', '管夹', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8102', '30.05.03.13', NULL, '13', '真空软管带单向阀总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8103', '30.05.03.14', NULL, '14', 'EHB总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8104', '30.05.03.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8105', '30.05.03.98', NULL, '98', '紧固件', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8106', '30.05.05', NULL, '05', '制动管路', 'Brake pipeline', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8107', '30.05.05.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8108', '30.05.05.04', NULL, '04', '钢管', 'Steel pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8109', '30.05.05.05', NULL, '05', '传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('811', '10.11.01.05', NULL, '05', '软垫', 'Cushion', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8110', '30.05.05.07', NULL, '07', '护套', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8111', '30.05.05.08', NULL, '08', 'ABS总成', 'ABS assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8112', '30.05.05.09', NULL, '09', 'ESC总成', 'ESC assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8113', '30.05.05.10', NULL, '10', '液压制动硬管总成', 'Hydraulic brake rigid pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8114', '30.05.05.11', NULL, '11', '偏横率传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8115', '30.05.05.13', NULL, '13', '制动软管总成', 'Brake hose assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8116', '30.05.05.18', NULL, '18', '二通', 'Two-way', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8117', '30.05.05.20', NULL, '20', '垫片', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8118', '30.05.05.21', NULL, '21', '锁片', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8119', '30.05.05.22', NULL, '22', '管夹', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('812', '10.11.01.06', NULL, '06', '温控阀总成', 'Temperature control valve assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8120', '30.05.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8121', '30.05.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8122', '30.05.06', NULL, '06', '制动管路-车身部分', 'Hydraulic brake pipeline - body', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8123', '30.05.06.01', NULL, '01', 'ABS总成', 'ABS assembly ', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8124', '30.05.06.02', NULL, '02', 'ESC总成', 'ESC assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8125', '30.05.06.03', NULL, '03', '软垫', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8126', '30.05.06.04', NULL, '04', '转角传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8127', '30.05.06.05', NULL, '05', 'G-Sensor传感器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8128', '30.05.06.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8129', '30.05.06.07', NULL, '07', '液压制动硬管总成', 'Hydraulic brake rigid pipe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('813', '10.11.01.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8130', '30.05.06.08', NULL, '08', '管夹带支架总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8131', '30.05.06.08.01', NULL, '01', '管夹', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8132', '30.05.06.08.02', NULL, '02', '支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8133', '30.05.06.09', NULL, '09', 'ABS中心销', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8134', '30.05.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8135', '30.05.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8136', '30.06', NULL, '06', '辅助装备', 'Auxiliary equipment', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8136EBDA3F144D6ABB1', '60.06.01.01.14.01', '', '01', '电芯', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8137', '30.06.01', NULL, '01', '备胎安装机构 ', 'Spare tire installation mechanism', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8138', '30.06.01.01', NULL, '01', '备胎升降器总成', 'Spare tire lifter assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8139', '30.06.01.02', NULL, '02', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('814', '10.11.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8140', '30.06.01.03', NULL, '03', '备胎托架总成', 'Spare tire support assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8141', '30.06.01.04', NULL, '04', '备胎吊挂总成', 'Spare tire hanging assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8142', '30.06.01.04.01', NULL, '01', '吊钩', 'Hanging hook', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8143', '30.06.01.04.02', NULL, '02', '软垫', 'Cushion', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8144', '30.06.01.04.03', NULL, '03', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8145', '30.06.01.04.04', NULL, '04', '吊杆套管', 'Hanging rod casing pipe', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8146', '30.06.01.04.05', NULL, '05', '车轮总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8147', '30.06.01.05', NULL, '05', '隔热板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8148', '30.06.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8149', '30.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('815', '20', NULL, '20', '车身', 'Body', '1', NULL, '1', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8150', '30.06.02', NULL, '02', '随车工具及附件', 'Tool kit and accessories', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8151', '30.06.02.01', NULL, '01', '三角警告牌总成', 'Warning triangle assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8152', '30.06.02.02', NULL, '02', '千斤顶', 'Jack', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8153', '30.06.02.03', NULL, '03', '鲤鱼钳', 'Slip joint pliers', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8154', '30.06.02.04', NULL, '04', '随车工具袋', 'Tools bag attached with the vehicle', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8155', '30.06.02.05', NULL, '05', '支架总成', 'Fire extinguisher bracket assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8156', '30.06.02.05.01', NULL, '01', '支架', 'Fire extinguisher support', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8157', '30.06.02.05.02', NULL, '02', '固定板', 'Fixing plate', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8158', '30.06.02.05.03', NULL, '03', '轮胎扳手', 'Tire wrench', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8159', '30.06.02.05.04', NULL, '04', '千斤顶摇杆', 'Jack handle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('816', '20.01', NULL, '01', '车身外饰系统', 'Body exterior system', '1', NULL, '2', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8160', '30.06.02.05.04.01', NULL, '01', '前节摇杆', 'Front rocker', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8161', '30.06.02.05.04.02', NULL, '02', '后节摇杆', 'Rear rocker', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8162', '30.06.02.05.05', NULL, '05', '摇手柄总成', 'Rocker handle assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8163', '30.06.02.05.05.01', NULL, '01', '摇杆头', 'Rocker head', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8164', '30.06.02.05.05.02', NULL, '02', '摇杆臂', 'Rocker arm', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8165', '30.06.02.05.06', NULL, '06', '双头扳手', 'Double-head wrench', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8166', '30.06.02.05.07', NULL, '07', '旋具总成', 'Screwdriver assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8167', '30.06.02.06', NULL, '06', '随车工具固定皮带', 'Driver\'s tools fixing belt', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8168', '30.06.02.07', NULL, '07', '工具包拉带', 'Tool kit pulling strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8169', '30.06.02.07.01', NULL, '01', '挂钩', 'Hook', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('817', '20.01.01', NULL, '01', '前部灯具-车身部分', 'Front lamps – body part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8170', '30.06.02.07.02', NULL, '02', '环形拉带', 'Ring pulling strip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8171', '30.06.02.08', NULL, '08', '反光背心', 'Reflective vest', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8172', '30.06.02.09', NULL, '09', '前拖车钩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8173', '30.06.02.10', NULL, '10', '千斤顶安装盒', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8174', '30.06.02.11', NULL, '11', '备胎摇把总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8175', '30.06.02.12', NULL, '12', '灭火器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8176', '30.06.02.13', NULL, '13', '灭火开关', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8177', '30.06.02.14', NULL, '14', '随车工具包总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8178', '30.06.02.15', NULL, '15', '千斤顶摇杆', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8179', '30.06.02.16', NULL, '16', '呆扳手', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('818', '20.01.01.01', NULL, '01', '前示廓灯总成', 'F. clearance lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8180', '30.06.02.17', NULL, '17', '螺丝刀', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8181', '30.06.02.18', NULL, '18', '轮胎扳手', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8182', '30.06.02.19', NULL, '19', '停车楔', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8183', '30.06.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8184', '30.06.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8185', '30.06.03', NULL, '03', '铭牌', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8186', '30.06.03.01', NULL, '01', '铭牌', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8187', '30.06.03.02', NULL, '02', '扁圆头抽芯铆钉', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8188', '30.06.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8189', '30.06.04', NULL, '04', '标志牌', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('819', '20.01.01.01.01', NULL, '01', '前示廓灯', 'Front clearance lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8190', '30.06.04.01', NULL, '01', 'VIN识别标牌', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8191', '30.06.04.02', NULL, '02', '安全气囊警告标签', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8192', '30.06.04.03', NULL, '03', '空调警告标签', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8193', '30.06.04.04', NULL, '04', '发动机保养警示牌', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8194', '30.06.04.05', NULL, '05', '轮胎气压标签', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8195', '30.06.04.06', NULL, '06', '排放标志', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8196', '30.06.04.07', NULL, '07', '儿童锁标签', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8197', '30.06.04.08', NULL, '08', '加油小门警告标签', 'Fuel opening warning label', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8198', '30.06.04.09', NULL, '09', '分动器使用说明标签', 'Power driver instructions label', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8199', '30.06.04.10', NULL, '10', 'DPF标签', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('81999028C76C427DBB0', '20.03.05.01.04', '', '04', '空调类分装总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('81A01D852BD742F9804', '20.03.03.02.19', '', '19', '座垫发泡面套总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('81B1CC1211E44A819A4', '30.01.01.01.02.17', '', '17', '前悬稳定杆支架-左', '', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('82', '10.03.01', NULL, '01', '燃油系统', 'Fuel system', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('820', '20.01.01.01.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8200', '30.06.04.11', NULL, '11', 'VIN标志牌', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8201', '30.06.04.12', NULL, '12', 'DPF后处理警示牌', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8202', '30.06.04.13', NULL, '13', '禁止携带易燃易爆物品标识', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8203', '30.06.04.14', NULL, '14', '安全标识—“系好安全带”', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8204', '30.06.04.15', NULL, '15', '安全标识—“禁止吸烟”', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8205', '30.06.04.16', NULL, '16', '灭火器标识', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8206', '30.06.04.17', NULL, '17', '限速标识标签', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8207', '30.06.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8208', '40', NULL, '40', '电子电器', 'Electronics & electrical appliances', '1', NULL, '1', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8209', '40.01', NULL, '01', '供暖、通风和空气调节系统(HVAC)', 'HVAC', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('821', '20.01.01.02', NULL, '02', '车速灯总成', 'Speed lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8210', '40.01.01', NULL, '01', '暖气装置', 'Heating installation', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8211', '40.01.01.01', NULL, '01', '空调箱总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8212', '40.01.01.01.01', NULL, '01', 'PTC加热器', 'PTC warmer', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8213', '40.01.01.01.02', NULL, '02', '空调箱壳体', 'A、C housing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8214', '40.01.01.01.03', NULL, '03', '鼓风电机', 'Blow motor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8215', '40.01.01.01.04', NULL, '04', '过滤器', 'Filter', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8216', '40.01.01.01.05', NULL, '05', '调速电阻', 'Speed regulation resistance', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8217', '40.01.01.01.06', NULL, '06', '调速模块', 'Speed regulation module', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8218', '40.01.01.01.07', NULL, '07', '伺服电机', 'servomotor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8219', '40.01.01.01.08', NULL, '08', '暖风芯体', 'Heater core', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('822', '20.01.01.02.01', NULL, '01', '车速灯', 'Speed lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8220', '40.01.01.01.09', NULL, '09', '温度传感器', 'Temperature sensor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8221', '40.01.01.01.10', NULL, '10', '蒸发器芯体', 'Evaporator core body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8222', '40.01.01.01.11', NULL, '11', '膨胀阀', 'Expansion valve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8223', '40.01.01.01.12', NULL, '12', '线束', 'wiring harness', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8224', '40.01.01.01.13', NULL, '13', 'O型圈', 'Type O circle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8225', '40.01.01.01.14', NULL, '14', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8226', '40.01.01.01.16', NULL, '16', '密封垫', 'Gasket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8227', '40.01.01.01.17', NULL, '17', '排水软管', 'Drain Hose', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8228', '40.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8229', '40.01.01.02', NULL, '02', '鼓风机总成', 'Air blower assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('823', '20.01.01.02.02', NULL, '02', '车速灯灯泡', 'Speed lamp bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8230', '40.01.01.02.01', NULL, '01', '鼓风电机', 'Blow motor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8231', '40.01.01.02.02', NULL, '02', '过滤器', 'Filter', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8232', '40.01.01.02.03', NULL, '03', '调速电阻', 'Speed regulation resistance', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8233', '40.01.01.02.04', NULL, '04', '调速模块', 'Speed regulation module', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8234', '40.01.01.02.05', NULL, '05', '伺服电机', 'servomotor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8235', '40.01.01.02.06', NULL, '06', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8236', '40.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8237', '40.01.01.03', NULL, '03', '空调控制器', 'A、C control', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8238', '40.01.01.03.02', NULL, '02', '装饰罩', 'Cover、Bezel、Housing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8239', '40.01.01.03.05', NULL, '05', '显示屏', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('824', '20.01.01.03', NULL, '03', '踏步灯总成', 'Courtesy lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8240', '40.01.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8241', '40.01.01.04', NULL, '04', '风道', 'Air passage', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8242', '40.01.01.04.01', NULL, '01', '夹子', 'Clip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8243', '40.01.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8244', '40.01.01.05', NULL, '05', '暖风水管', 'Heater water pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8245', '40.01.01.05.01', NULL, '01', '胶管', 'Rubber pipe', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8246', '40.01.01.05.02', NULL, '02', '硬管', 'water outlet pipe', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8247', '40.01.01.05.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8248', '40.01.01.05.04', NULL, '04', '暖风水阀', 'Heater water valve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8249', '40.01.01.05.06', NULL, '06', '暖风附件', 'Heater accessory', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('825', '20.01.01.03.01', NULL, '01', '踏步灯', 'Courtesy lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8250', '40.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8251', '40.01.01.06', NULL, '06', '暖风箱总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8252', '40.01.01.06.01', NULL, '01', 'PTC加热器', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8253', '40.01.01.06.02', NULL, '02', '暖风箱壳体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8254', '40.01.01.06.03', NULL, '03', '鼓风电机', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8255', '40.01.01.06.04', NULL, '04', '过滤器', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8256', '40.01.01.06.05', NULL, '05', '调速电阻', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8257', '40.01.01.06.06', NULL, '06', '调速模块', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8258', '40.01.01.06.07', NULL, '07', '伺服电机', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8259', '40.01.01.06.08', NULL, '08', '暖风芯体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('826', '20.01.01.03.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8260', '40.01.01.06.09', NULL, '09', '线束', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8261', '40.01.01.06.10', NULL, '10', '支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8262', '40.01.01.06.11', NULL, '11', '密封垫', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8263', '40.01.01.06.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8264', '40.01.01.07', NULL, '07', '暖风附件', 'Heater accessory', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8265', '40.01.01.08', NULL, '08', '堵盖', 'Plug', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8266', '40.01.01.09', NULL, '09', '密封垫', 'Sealing gasket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8267', '40.01.01.10', NULL, '10', '暖风水阀', 'Heater water valve', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8268', '40.01.01.22', NULL, '22', '暖风补水箱', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8269', '40.01.01.23', NULL, '23', 'PTC加热器', 'PTC heater', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('827', '20.01.01.04', NULL, '04', '转向灯/转弯灯总成', 'L.Side steering lamp/turning lamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8270', '40.01.01.23.01', NULL, '01', '搭铁线', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8271', '40.01.01.24', NULL, '24', '水泵', 'water pump', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8272', '40.01.01.25', NULL, '25', '空调警告标签', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8273', '40.01.01.26', NULL, '26', '室内温度传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8274', '40.01.01.27', NULL, '27', '滴水管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8275', '40.01.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8276', '40.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8277', '40.01.02', NULL, '02', '冷气装置', 'Cooling device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8278', '40.01.02.01', NULL, '01', '蒸发器总成', 'Evaporator assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8279', '40.01.02.01.01', NULL, '01', '排水软管', 'Drain Hose', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('828', '20.01.01.04.01', NULL, '01', '转向灯/转弯灯', 'Turn signal lamp/cornering lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8280', '40.01.02.01.02', NULL, '02', '蒸发器壳体', 'Evaporator housing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8281', '40.01.02.01.03', NULL, '03', '保温阻尼胶', 'Thermal insulation damping rubber', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8282', '40.01.02.01.04', NULL, '04', '蒸发器芯体', 'Evaporator core body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8283', '40.01.02.01.05', NULL, '05', '温度传感器', 'Temperature sensor', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8284', '40.01.02.01.06', NULL, '06', '膨胀阀', 'Expansion valve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8285', '40.01.02.01.07', NULL, '07', '线束', 'wiring harness', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8286', '40.01.02.01.08', NULL, '08', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8287', '40.01.02.01.09', NULL, '09', '夹子', 'Clip', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8288', '40.01.02.01.10', NULL, '10', '过滤器', 'Filter', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8289', '40.01.02.01.11', NULL, '11', '密封垫片、密封、非O型圈', 'Gasket、Seal、Non O-Ring', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('829', '20.01.01.04.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8290', '40.01.02.01.12', NULL, '12', '隔热', 'Insulator', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8291', '40.01.02.01.13', NULL, '13', '风道叶片', 'Duct Baffle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8292', '40.01.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8293', '40.01.02.02', NULL, '02', '冷凝器总成', 'Condenser assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8294', '40.01.02.02.01', NULL, '01', '制冷剂滤器', 'Refrigerant filter', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8295', '40.01.02.02.02', NULL, '02', '冷凝器芯体', 'Condenser core body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8296', '40.01.02.02.03', NULL, '03', '制冷剂干燥包', 'Refrigerating fluid dry bag', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8297', '40.01.02.02.04', NULL, '04', '胶圈', 'Rubber ring', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8298', '40.01.02.02.05', NULL, '05', '防护网', 'Guard screen', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8299', '40.01.02.02.06', NULL, '06', '风机', 'Condenser fan', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('82BCBC9BD8174D11AEA', '20.03.03.02.21', '', '21', '中间靠背骨架总成、', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('83', '10.03.01.01', NULL, '01', '燃油箱总成', 'Fuel tank assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('830', '20.01.01.05', NULL, '05', '前组组合灯总成', 'F. combination lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8300', '40.01.02.02.07', NULL, '07', '调速电阻', 'Speed regulation resistance', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8301', '40.01.02.02.08', NULL, '08', '风扇叶片', 'Blade', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8302', '40.01.02.02.09', NULL, '09', '护风罩', 'Fan cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8303', '40.01.02.02.10', NULL, '10', 'PWM控制器', 'PWM Control', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8303037E792141E9A0F', '60.06.01.01.09.04', '', '04', 'B箱连接排-模组到输出负', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8304', '40.01.02.02.11', NULL, '11', '压力开关', 'Pressure switch', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8305', '40.01.02.02.12', NULL, '12', '线束', 'wiring harness', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8306', '40.01.02.02.13', NULL, '13', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8307', '40.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8308', '40.01.02.03', NULL, '03', '压缩机', 'Compressor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8309', '40.01.02.03.01', NULL, '01', '压缩机壳体', 'Compressor Housing', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('831', '20.01.01.05.01', NULL, '01', '前组合灯', 'Front combination lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8310', '40.01.02.03.02', NULL, '02', '压缩机驱动器', 'Compressor actuator', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8311', '40.01.02.03.03', NULL, '03', '压缩机离合器', 'Compressor Clutch', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8312', '40.01.02.04', NULL, '04', '皮带', 'Belt', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8313', '40.01.02.05', NULL, '05', '储液器总成', 'Liquid storage device assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8314', '40.01.02.06', NULL, '06', '压缩机支架', 'Compressor bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8315', '40.01.02.07', NULL, '07', '涨紧轮', 'Idler gear', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8316', '40.01.02.08', NULL, '08', '涨紧机构', 'Tensioner mechanism', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8317', '40.01.02.09', NULL, '09', '空调管路', 'A、C Pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8318', '40.01.02.09.01', NULL, '01', '护套\\隔热套管', 'Sleeve、Insulator', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8319', '40.01.02.09.02', NULL, '02', 'O型圈', 'Type O circle', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('832', '20.01.01.05.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8320', '40.01.02.09.03', NULL, '03', '制冷剂充注阀', 'Refrigerant Valve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8321', '40.01.02.09.04', NULL, '04', '电磁阀', 'Solenoid valve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8322', '40.01.02.09.05', NULL, '05', '压力开关', 'Pressure switch', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8323', '40.01.02.09.06', NULL, '06', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8324', '40.01.02.09.08', NULL, '08', '管路', 'Pipeline', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8325', '40.01.02.09.09', NULL, '09', '膨胀阀', 'Expansion valve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8326', '40.01.02.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8327', '40.01.02.10', NULL, '10', '管夹', 'Pipe clamp', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8328', '40.01.02.11', NULL, '11', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8329', '40.01.02.12', NULL, '12', '空调开关', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('833', '20.01.01.05.03', NULL, '03', 'LED昼行灯', 'LED daytime running lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8330', '40.01.02.13', NULL, '13', '排水软管', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8331', '40.01.02.14', NULL, '14', '空气质量传感器', 'Air Quality Sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8332', '40.01.02.15', NULL, '15', '湿度传感器', 'Humidity sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8333', '40.01.02.16', NULL, '16', '进风过滤器压力传感器', 'Cabin Filter Pressure Sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8334', '40.01.02.17', NULL, '17', '温度传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8335', '40.01.02.18', NULL, '18', '阳光传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8336', '40.01.02.19', NULL, '19', '空调总成', 'A、C assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8337', '40.01.02.20', NULL, '20', '换热器', 'Heat exchager', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8338', '40.01.02.21', NULL, '21', '密封垫', 'Gasket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8339', '40.01.02.22', NULL, '22', '空调附件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('833DCC54B47546D9B32', '60.06.01.03.01.02', '', '02', 'BMU下壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('834', '20.01.01.06', NULL, '06', '转向灯总成', 'Side steering lamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8340', '40.01.02.23', NULL, '23', '冷凝器安装螺栓', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8341', '40.01.02.24', NULL, '24', '板式换热器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8342', '40.01.02.24.01', NULL, '01', '电子膨胀阀', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8343', '40.01.02.24.02', NULL, '02', '电磁膨胀阀', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8344', '40.01.02.24.03', NULL, '03', '板式换热器本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8345', '40.01.02.24.04', NULL, '04', '板式换热器支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8346', '40.01.02.25', NULL, '25', '顶置蒸发器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8347', '40.01.02.25.01', NULL, '01', '风机', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8348', '40.01.02.25.02', NULL, '02', '调速电阻', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8349', '40.01.02.25.03', NULL, '03', '调整模块', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('835', '20.01.01.06.01', NULL, '01', '转向灯', 'Turn signal lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8350', '40.01.02.25.04', NULL, '04', '风道', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8351', '40.01.02.25.05', NULL, '05', '蒸发器壳体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8352', '40.01.02.26', NULL, '26', '后蒸发器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8353', '40.01.02.27', NULL, '27', '温压传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8354', '40.01.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8355', '40.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8356', '40.01.03', NULL, '03', '独立热源', 'Independent heat source', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8357', '40.01.03.01', NULL, '01', '空气式燃油加热器', 'Air-type fuel heater', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8358', '40.01.03.01.01', NULL, '01', '加热器', 'Heater', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8359', '40.01.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('836', '20.01.01.06.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8360', '40.01.03.02', NULL, '02', '水暖式燃油加热器', 'Water-heated fuel heating', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8361', '40.01.03.03', NULL, '03', '加热器油泵', 'Warmer oil pump', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8362', '40.01.03.05', NULL, '05', '加热器控制器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8363', '40.01.03.06', NULL, '06', '风道', 'Air passage', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8364', '40.01.03.07', NULL, '07', '水管', 'Water pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8365', '40.01.03.08', NULL, '08', '油管', 'Warmer oil pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8366', '40.01.03.09', NULL, '09', '气管', 'Air pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8367', '40.01.03.10', NULL, '10', '警告标签', 'Heater warn label', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8368', '40.01.03.11', NULL, '11', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8369', '40.01.03.12', NULL, '12', '水泵', 'Water pump', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('837', '20.01.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8370', '40.01.03.13', NULL, '13', '水阀', 'Water valve', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8371', '40.01.03.14', NULL, '14', '线束', 'wiring harness', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8372', '40.01.03.17', NULL, '17', '堵盖', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8373', '40.01.03.18', NULL, '18', '杂物盒', 'Sundries box', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8374', '40.01.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8375', '40.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8376', '40.02', NULL, '02', '电器系统', 'Electrical system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8377', '40.02.01', NULL, '01', '蓄电池', 'Battery', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8378', '40.02.01.01', NULL, '01', '蓄电池箱盖', 'Battery box cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8379', '40.02.01.02', NULL, '02', '蓄电池', 'Battery assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('838', '20.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8380', '40.02.01.03', NULL, '03', '蓄电池橡胶垫板', 'Battery shock absorption pad', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8381', '40.02.01.06', NULL, '06', '蓄电池压板', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8382', '40.02.01.08', NULL, '08', '蓄电池托盘', 'Battery pallet', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8383', '40.02.01.13', NULL, '13', '蓄电池拉杆', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8384', '40.02.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8385', '40.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8386', '40.02.02', NULL, '02', '车身开关-底盘部分', 'switch – chassis part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8387', '40.02.02.01', NULL, '01', '组合开关', 'Combined switch', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8388', '40.02.02.01.01', NULL, '01', '灯光开关总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8389', '40.02.02.01.02', NULL, '02', '雨刮开关总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('839', '20.01.02', NULL, '02', '后部灯具-车身部分', 'Rear lamps - Body part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8390', '40.02.02.03', NULL, '03', '点火开关总成', 'Igniting switch assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8391', '40.02.02.03.01', NULL, '01', '点火开关本体', 'Igniting switch assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8392', '40.02.02.03.02', NULL, '02', '点火锁芯', 'Ignition lock cylinder', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8393', '40.02.02.03.03', NULL, '03', '钥匙总成', 'Key assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8394', '40.02.02.03.04', NULL, '04', '防盗螺栓', 'Lock bolt', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8395', '40.02.02.03.05', NULL, '05', '点火开关匙圈', 'Ignition switch key ring', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8396', '40.02.02.04', NULL, '04', '组合开关护罩', 'Combination switch shield', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8397', '40.02.02.04.01', NULL, '01', '上护罩', 'Protection cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8398', '40.02.02.04.02', NULL, '02', '下护罩', 'Protection cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8399', '40.02.02.04.03', NULL, '03', '护罩', 'Protection cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('83D5E213970C444AB61', '30.02.01.35.02', '', '02', '元宝梁二级件-后', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('83E49952CF164E1A98F', '30.01.01.02', '', '02', '前车架总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('84', '10.03.01.01.01', NULL, '01', '传感器及支架', 'Fuel sensor and support assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('840', '20.01.02.01', NULL, '01', '后组合灯总成', 'F. combination lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8400', '40.02.02.05', NULL, '05', '刹车灯开关', 'Pedal stroke switch assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8401', '40.02.02.07', NULL, '07', '离合开关', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8402', '40.02.02.08', NULL, '08', '一键启动开关', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8403', '40.02.02.09', NULL, '09', '电子驻车制动开关', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8404', '40.02.02.10', NULL, '10', '手制动灯开关', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8405', '40.02.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8406', '40.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8407', '40.02.04', NULL, '04', '信号装置-底盘部分', 'Signal device – chassis part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8408', '40.02.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8409', '40.02.04.02', NULL, '02', '行人警示器', 'Pedestrian warning device', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('841', '20.01.02.01.01', NULL, '01', '后组合灯', 'Rear combination lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8410', '40.02.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8411', '40.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8412', '40.02.05', NULL, '05', '信号装置-车身部分', 'Signal device-body part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8413', '40.02.05.04', NULL, '04', '电喇叭', 'electric horn', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8414', '40.02.05.04.01', NULL, '01', '高音喇叭', 'High tone horn', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8415', '40.02.05.04.02', NULL, '02', '低音喇叭', 'Low-tone horn', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8416', '40.02.05.04.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8417', '40.02.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8418', '40.02.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8419', '40.02.06', NULL, '06', '电气附件', 'Electric accessory', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('842', '20.01.02.01.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8420', '40.02.06.01', NULL, '01', '点烟器', 'Cigar lighter', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8421', '40.02.06.02', NULL, '02', '直流电源转换器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8422', '40.02.06.03', NULL, '03', '电源插座', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8423', '40.02.06.04', NULL, '04', '堵盖', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8424', '40.02.06.05', NULL, '05', 'USB接口', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8425', '40.02.06.06', NULL, '06', '手机无线充电', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8426', '40.02.06.07', NULL, '07', '交流电源转换器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8427', '40.02.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8427685D80A04FED9B3', '20.01.13.04', '', '04', '前下视镜总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8428', '40.02.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8429', '40.02.08', NULL, '08', '继电器', 'Relay', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('843', '20.01.02.02', NULL, '02', '后示廓灯总成', 'Rear clearance lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8430', '40.02.08.01', NULL, '01', '12V继电器', '12V relay', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8431', '40.02.08.02', NULL, '02', '24V继电器', '24V relay', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8432', '40.02.08.03', NULL, '03', '预热继电器', 'Preheating relay', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8433', '40.02.08.04', NULL, '04', '不干胶标签', 'Self-adhesive label', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8434', '40.02.08.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8435', '40.02.08.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8436', '40.02.09', NULL, '09', '车身开关-车身部分', 'Body switch-Body part', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8437', '40.02.09.01', NULL, '01', '小开关', 'Small switch', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8438', '40.02.09.02', NULL, '02', '门窗开关', 'Door window switch', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8439', '40.02.09.03', NULL, '03', '安装面板', 'Mounting panel', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('843E41C50FC643E299F', '20.02.04.01.03', '', '03', '后围上护板', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('844', '20.01.02.02.01', NULL, '01', '后示廓灯', 'Rear clearance lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8440', '40.02.09.04', NULL, '04', '堵盖', 'Plug', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8441', '40.02.09.05', NULL, '05', '多态开关', 'Multi state switch', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8442', '40.02.09.06', NULL, '06', '灯具开关', 'Lamp switch', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8443', '40.02.09.08', NULL, '08', '换挡开关', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8444', '40.02.09.09', NULL, '09', '左部开关组合件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8445', '40.02.09.10', NULL, '10', '中部开关组合件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8446', '40.02.09.11', NULL, '11', '副仪表台开关总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8447', '40.02.09.12', NULL, '12', '接地螺栓', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8448', '40.02.09.13', NULL, '13', '门灯开关', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8449', '40.02.09.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('845', '20.01.02.02.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8450', '40.02.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8451', '40.02.10', NULL, '10', '传感器', 'Sensor', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8452', '40.02.10.01', NULL, '01', '车速里程表传感器', 'Speedometer sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8453', '40.02.10.02', NULL, '02', '燃油传感器', 'Fuel sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8454', '40.02.10.03', NULL, '03', '雨量光线传感器', 'Rain Light Sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8455', '40.02.10.04', NULL, '04', '阳光传感器', 'Sunlight sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8456', '40.02.10.05', NULL, '05', '室外温度传感器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8457', '40.02.10.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8458', '40.02.10.07', NULL, '07', '软垫', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8459', '40.02.10.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('846', '20.01.02.03', NULL, '03', '牌照灯总成', 'License plate lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8460', '40.02.10.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8461', '40.02.11', NULL, '11', '电器原理图', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8462', '40.02.11.01', NULL, '01', '电器原理图', 'Schematic diagram for electrical equipment', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8463', '40.02.12', NULL, '12', 'ECU标定文件', 'calibration document', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8464', '40.02.12.01', NULL, '01', 'ECU软件及标定总成号', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8465', '40.02.12.02', NULL, '02', 'ECU标定数据号', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8466', '40.02.12.03', NULL, '03', 'ECU分层标定数据号', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8467', '40.02.12.04', NULL, '04', 'ECU应用层软件号', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8468', '40.03', NULL, '03', '智能网联系统', 'Intelligent network system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8469', '40.03.01', NULL, '01', '行驶记录仪、车载终端', 'Tachographs 、 vehicle terminal', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('847', '20.01.02.03.01', NULL, '01', '牌照灯', 'License plate lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8470', '40.03.01.01', NULL, '01', '行驶记录仪、车载终端', 'Tachographs 、 vehicle terminal', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8471', '40.03.01.01.01', NULL, '01', '行驶记录仪', 'Drive recorder', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8472', '40.03.01.02', NULL, '02', '导航天线', 'Navigation antenna', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8473', '40.03.01.03', NULL, '03', '通讯天线', 'Communication antenna', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8474', '40.03.01.04', NULL, '04', 'SD存储卡', 'SD memory card', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8475', '40.03.01.05', NULL, '05', '转接线', 'Adapter harness', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8476', '40.03.01.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8477', '40.03.01.07', NULL, '07', '支架带储物盒总成', 'Bracket&Storage box', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8478', '40.03.01.08', NULL, '08', '堵盖', 'Plug', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8479', '40.03.01.09', NULL, '09', '天线', 'antenna', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('847B472CB3774DEABAE', '60.06.01.01.14.03.01', '', '01', '模组FPC-24S-左', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('848', '20.01.02.03.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8480', '40.03.01.10', NULL, '10', '行驶记录仪/车载终端附件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8481', '40.03.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8482', '40.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8483', '40.03.02', NULL, '02', '音响装置', 'Sound equipment', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8484', '40.03.02.01', NULL, '01', '音响主机', 'Audio main machine', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8485', '40.03.02.01.08', NULL, '08', 'SD存储卡', 'SD memory card', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8486', '40.03.02.01.09', NULL, '09', '音响显示屏', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8487', '40.03.02.02', NULL, '02', '摄像头', 'Camera', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8488', '40.03.02.03', NULL, '03', '天线', 'Antenna', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8489', '40.03.02.06', NULL, '06', '扬声器', 'Speaker', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('848A5B71E6954160A74', '50.01.01.01.12.01', '', '01', '货箱后门右铰链', '', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('849', '20.01.02.04', NULL, '04', '标志灯总成', 'L side marker lamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8490', '40.03.02.07', NULL, '07', 'SD存储卡', 'SD memory card', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8491', '40.03.02.12', NULL, '12', '音响附件', 'Audio accessory', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8492', '40.03.02.13', NULL, '13', '显示屏总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8493', '40.03.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8494', '40.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8495', '40.03.03', NULL, '03', '组合仪表', 'Instrument cluster', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8496', '40.03.03.01', NULL, '01', '组合仪表总成', 'Combination instrument assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8497', '40.03.03.02', NULL, '02', 'HUD主机', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8498', '40.03.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8499', '40.03.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('85', '10.03.01.01.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('850', '20.01.02.04.01', NULL, '01', '标志灯', 'Marker lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8500', '40.03.04', NULL, '04', '雷达报警装置', 'Radar alarm device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8501', '40.03.04.01', NULL, '01', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8502', '40.03.04.02', NULL, '02', '雷达控制器', 'Radar controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8503', '40.03.04.03', NULL, '03', '雷达探头总成', 'Radar probe assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8504', '40.03.04.03.01', NULL, '01', '雷达探头本体', 'Radar probe body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8505', '40.03.04.03.02', NULL, '02', '雷达探头衬套', 'Radar probe bush', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8506', '40.03.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8507', '40.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8508', '40.03.05', NULL, '05', '车载无线服务控制器', 'Vehicle-mounted wireless service controller', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8509', '40.03.05.01', NULL, '01', '车载无线服务控制器', 'Vehicle-mounted wireless service controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('851', '20.01.02.04.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8510', '40.03.05.03', NULL, '03', 'V2X模块总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8511', '40.03.05.07', NULL, '07', '电子地平线总成', 'electronic horizon assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8512', '40.03.05.08', NULL, '08', 'ETC主机', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8513', '40.03.05.09', NULL, '09', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8514', '40.03.05.10', NULL, '10', '天线', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8515', '40.03.05.11', NULL, '11', '存储卡', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8516', '40.03.05.12', NULL, '12', '麦克风', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8517', '40.03.05.13', NULL, '13', '附件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8518', '40.03.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8519', '40.03.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('852', '20.01.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8520', '40.03.06', NULL, '06', '全景环视系统', 'panoramic view system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8521', '40.03.06.01', NULL, '01', '摄像头', 'camera smart device', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8522', '40.03.06.02', NULL, '02', '控制器总成', 'controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8523', '40.03.07', NULL, '07', 'ADAS智能装置', 'ADAS ', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8524', '40.03.07.01', NULL, '01', '超声波雷达', 'ultrasonic radar', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8525', '40.03.07.02', NULL, '02', '毫米波雷达', 'millimeter wave radar', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8526', '40.03.07.03', NULL, '03', '激光雷达', 'laser ladar', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8527', '40.03.07.04', NULL, '04', '倒车摄像头', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8528', '40.03.07.05', NULL, '05', '摄像头总成', 'camera assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8528664C4C614081A88', '60.06.01.01.03.03', '', '03', '水冷管支架', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8529', '40.03.07.06', NULL, '06', '智能控制器', 'intelligent controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('853', '20.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8530', '40.03.07.07', NULL, '07', 'ADAS摄像头', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8531', '40.03.07.09', NULL, '09', '智能驾驶装置附件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8532', '40.03.07.10', NULL, '10', '倒车雷达控制器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8533', '40.03.07.11', NULL, '11', '超声波雷达总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8534', '40.03.07.12', NULL, '12', '护罩', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8535', '40.03.07.13', NULL, '13', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8536', '40.03.07.14', NULL, '14', '监测摄像头', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8537', '40.03.07.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8538', '40.03.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8539', '40.04', NULL, '04', '线束系统', 'Harness system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('854', '20.01.03', NULL, '03', '后部灯具-底盘部分', 'Rear lamps - Chassis part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8540', '40.04.01', NULL, '01', '底盘线束', 'Chassis harness', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8541', '40.04.01.01', NULL, '01', '车架线束总成', 'Frame chassis assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8542', '40.04.01.01.01', NULL, '01', '线束', 'wiring harness', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8543', '40.04.01.01.02', NULL, '02', '保险丝盒本体', 'Fuse box body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8544', '40.04.01.01.03', NULL, '03', '保险丝盒盒盖', 'Fuse box cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8545', '40.04.01.01.04', NULL, '04', '保险丝&断路器', 'Fuse & Breaker', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8546', '40.04.01.01.05', NULL, '05', '标识', 'Identification', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8547', '40.04.01.01.06', NULL, '06', '附属工具', 'Attachment Kit', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8548', '40.04.01.01.07', NULL, '07', '电阻', 'Resistance', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8549', '40.04.01.01.08', NULL, '08', '配电盒本体', 'Distribution box body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('855', '20.01.03.01', NULL, '01', '后组合灯总成', 'R. combination lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8550', '40.04.01.01.09', NULL, '09', '配电盒盒盖', 'Distribution box cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8551', '40.04.01.01.10', NULL, '10', '底座', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8552', '40.04.01.02', NULL, '02', '线束', 'wiring harness', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8553', '40.04.01.03', NULL, '03', '底盘配电盒', 'Chassis distribution box', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8554', '40.04.01.03.01', NULL, '01', '底盘配电盒本体', 'Chassis distribution box body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8555', '40.04.01.03.02', NULL, '02', '保险丝&断路器', 'Fuse & Breaker', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8556', '40.04.01.03.03', NULL, '03', '底盘配电盒盒盖', ' Box Cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8557', '40.04.01.03.04', NULL, '04', '底盘配电盒盒支架', ' Box Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8558', '40.04.01.03.05', NULL, '05', '标识', 'Identification', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8559', '40.04.01.03.06', NULL, '06', '底座', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('856', '20.01.03.01.01', NULL, '01', '后组合灯', 'Rear combination lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8560', '40.04.01.04', NULL, '04', '粘贴式固定件', 'Bonded fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8561', '40.04.01.05', NULL, '05', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8562', '40.04.01.06', NULL, '06', '海绵', 'Sponge', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8563', '40.04.01.07', NULL, '07', '标签', 'Label', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8564', '40.04.01.08', NULL, '08', '护板', 'Shield plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8565', '40.04.01.09', NULL, '09', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8566', '40.04.01.10', NULL, '10', '龙骨条', 'Keel strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8567', '40.04.01.11', NULL, '11', '堵盖', 'Plug', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8568', '40.04.01.12', NULL, '12', '锁扣', 'Buckle', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8569', '40.04.01.13', NULL, '13', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('857', '20.01.03.01.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8570', '40.04.01.14', NULL, '14', '电器盒盖', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8571', '40.04.01.15', NULL, '15', '底座', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8572', '40.04.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8573', '40.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8574', '40.04.02', NULL, '02', '车身线束', 'Body wiring harness', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8575', '40.04.02.01', NULL, '01', '车身主线束总成', 'Body main wiring harness assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8576', '40.04.02.01.01', NULL, '01', '线束', 'wiring harness', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8577', '40.04.02.01.02', NULL, '02', '车身过孔盒', 'Body through hole box', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8578', '40.04.02.01.03', NULL, '03', '车身过孔盒盒盖', 'Body through hole box cover', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8579', '40.04.02.01.04', NULL, '04', '保险丝盒', 'Fuse box', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('858', '20.01.03.01.03', NULL, '03', '回复反射器', 'Reflex reflector', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8580', '40.04.02.01.05', NULL, '05', '保险丝&断路器', 'Fuse & Breaker', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8581', '40.04.02.01.06', NULL, '06', '标识', 'Identification', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8582', '40.04.02.01.07', NULL, '07', '附属工具', 'Attachment Kit', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8583', '40.04.02.01.08', NULL, '08', '电阻', 'Resistance', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8584', '40.04.02.01.09', NULL, '09', '保险丝盒盒盖', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8585', '40.04.02.01.10', NULL, '10', '保险丝盒支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8586', '40.04.02.01.11', NULL, '11', '保险丝盒底座', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8587', '40.04.02.02', NULL, '02', '线束', 'wiring harness', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8588', '40.04.02.03', NULL, '03', '保险丝盒总成', 'Body Compartment Junction Box Assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8589', '40.04.02.03.01', NULL, '01', '保险丝盒本体', 'Fuse box body', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('859', '20.01.03.02', NULL, '02', '侧标志灯总成', 'Side marker lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8590', '40.04.02.03.02', NULL, '02', '接线板总成', 'Wiring board assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8591', '40.04.02.03.03', NULL, '03', '励磁电阻', 'Excitation resistance', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8592', '40.04.02.03.04', NULL, '04', '保险丝&断路器', 'Fuse & Breaker', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8593', '40.04.02.03.05', NULL, '05', '二极管', 'Diode', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8594', '40.04.02.03.06', NULL, '06', '标识', 'Identification', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8595', '40.04.02.03.07', NULL, '07', '连接线', 'Connecting line', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8596', '40.04.02.03.08', NULL, '08', '附属工具', 'Attachment Kit', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8597', '40.04.02.03.09', NULL, '09', '保险丝盒盒盖', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8598', '40.04.02.03.10', NULL, '10', '保险丝盒支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8599', '40.04.02.03.11', NULL, '11', '保险丝盒底座', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('86', '10.03.01.01.03', NULL, '03', '通气软管', 'Venting hose', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('860', '20.01.03.02.01', NULL, '01', '侧标志灯', 'Side marker lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8600', '40.04.02.04', NULL, '04', '保险丝盒固定附件', 'Fuse box fixing accessories', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8601', '40.04.02.05', NULL, '05', '保险丝盒盒盖', 'Fuse box cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8602', '40.04.02.06', NULL, '06', '粘贴式固定件', 'Bonded fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8603', '40.04.02.07', NULL, '07', '穿线护套', 'Wire shield bush', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8604', '40.04.02.08', NULL, '08', '海绵', 'Sponge', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8605', '40.04.02.09', NULL, '09', '标签', 'Label', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8606', '40.04.02.10', NULL, '10', '护板', 'Shield plate', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8607', '40.04.02.11', NULL, '11', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8608', '40.04.02.12', NULL, '12', '龙骨条', 'Keel strip', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8609', '40.04.02.13', NULL, '13', '堵盖', 'Plug', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('861', '20.01.03.02.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8610', '40.04.02.14', NULL, '14', '车身过孔盒盒盖', 'Body through hole box cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8611', '40.04.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8612', '40.04.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8613', '40.05', NULL, '05', '车身电子系统', 'Body electronic system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8614', '40.05.01', NULL, '01', '车身控制器', 'Body controller', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8615', '40.05.01.01', NULL, '01', '车身控制器', 'Body controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8616', '40.05.01.01.01', NULL, '01', '车身控制器本体', 'BCM', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8617', '40.05.01.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8618', '40.05.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8619', '40.05.01.02', NULL, '02', '网关', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8619EEB1363B4F2CBEF', '20.04.01.01.01.30', '', '30', '右前车门玻璃后导轨支架总成', '', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('862', '20.01.03.03', NULL, '03', '后照灯总成', 'Rear lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8620', '40.05.01.02.01', NULL, '01', ' 网关本体', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8621', '40.05.01.02.02', NULL, '02', ' 支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8622', '40.05.01.02.98', NULL, '98', ' 紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8623', '40.05.01.03', NULL, '03', '挂车控制器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8624', '40.05.01.03.01', NULL, '01', '挂车控制器本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8625', '40.05.01.03.02', NULL, '02', '支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8626', '40.05.01.03.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8627', '40.05.01.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8628', '40.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8629', '40.05.02', NULL, '02', '门控制器', 'Door controller', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('863', '20.01.03.03.01', NULL, '01', '后照灯', 'Rear headlamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8630', '40.05.02.01', NULL, '01', '门控制器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8631', '40.05.02.01.01', NULL, '01', '门控制器本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8632', '40.05.02.01.02', NULL, '02', '支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8633', '40.05.02.01.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8634', '40.05.02.02', NULL, '02', '遥控钥匙', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8635', '40.05.02.02.01', NULL, '01', '电路板', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8636', '40.05.02.02.02', NULL, '02', '壳体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8637', '40.05.02.02.03', NULL, '03', '转发器', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8638', '40.05.02.03', NULL, '03', '射频接收器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8639', '40.05.02.03.01', NULL, '01', '射频接收器本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('864', '20.01.03.03.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8640', '40.05.02.03.02', NULL, '02', '支架', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8641', '40.05.02.03.98', NULL, '98', ' 紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8642', '40.05.02.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8643', '40.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8644', '40.05.03', NULL, '03', '防盗系统', 'Anti-theft system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8645', '40.05.03.01', NULL, '01', '防盗控制器', 'Anti-theft controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8646', '40.05.03.01.01', NULL, '01', '防盗控制器本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8647', '40.05.03.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8648', '40.05.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8649', '40.05.03.02', NULL, '02', '低频天线', 'LF Antenna', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('865', '20.01.03.04', NULL, '04', '回复反射器', 'Side revert deflector', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8650', '40.05.03.02.01', NULL, '01', '低频天线本体', 'LF Antenna', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8651', '40.05.03.02.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8652', '40.05.03.02.98', NULL, '98', '紧固件', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8653', '40.05.03.03', NULL, '03', '电子转向锁', 'ESCL', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8654', '40.05.03.03.01', NULL, '01', '锁体', 'ESCL ', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8655', '40.05.03.03.02', NULL, '02', '抱箍', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8656', '40.05.03.03.03', NULL, '03', '防盗螺钉', 'Break off screw', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8657', '40.05.03.04', NULL, '04', '一键启动控制器', 'PS ECU', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8658', '40.05.03.04.01', NULL, '01', 'PEPS控制器本体', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8659', '40.05.03.04.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('866', '20.01.03.05', NULL, '05', '后组合灯支架总成', 'R. combination lamp support assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8660', '40.05.03.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8661', '40.05.03.07', NULL, '07', '智能钥匙', 'Fob', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8662', '40.05.03.08', NULL, '08', '蜂鸣器', 'PEPS Buzzer', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8663', '40.05.03.08.01', NULL, '01', '蜂鸣器本体', 'Buzzer', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8664', '40.05.03.08.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8665', '40.05.03.08.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8666', '40.05.03.09', NULL, '09', '防盗线圈', 'Anti-theft coil', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8667', '40.05.03.10', NULL, '10', '点火锁堵盖', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8668', '40.05.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8669', '40.05.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('867', '20.01.03.06', NULL, '06', '牌照板', 'License plate', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8670', '40.05.04', NULL, '04', '安全电子装置', 'Safety electronic device', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8671', '40.05.04.01', NULL, '01', '时钟弹簧总成', 'Clock spring assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8672', '40.05.04.01.01', NULL, '01', '时钟弹簧', 'Clock spring', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8673', '40.05.04.01.02', NULL, '02', '转接线束', 'Adapter harness', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8674', '40.05.04.02', NULL, '02', '气囊电控单元总成', 'Airbag ECU ', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8675', '40.05.04.03', NULL, '03', '传感器', 'Sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8676', '40.05.04.04', NULL, '04', '驾驶员气囊总成', 'Driver airbag assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8677', '40.05.04.05', NULL, '05', '乘员气囊总成', 'Passenger airbag assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8678', '40.05.04.05.01', NULL, '01', '乘员气囊', 'Passenger airbag', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8679', '40.05.04.05.02', NULL, '02', '乘员气囊转接线束', 'Passenger airbag Adapter harness', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('868', '20.01.03.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8680', '40.05.04.06', NULL, '06', '前排侧气囊总成', 'airbag assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8681', '40.05.04.06.01', NULL, '01', '前排侧气囊', 'airbag assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8682', '40.05.04.06.02', NULL, '02', '前排侧气囊转接线束', 'airbag Adapter harness', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8683', '40.05.04.07', NULL, '07', '侧气帘总成', 'curtain airbag assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8684', '40.05.04.07.01', NULL, '01', '侧气帘', 'curtain airbag', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8685', '40.05.04.07.02', NULL, '02', '导向架', ' bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8686', '40.05.04.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8687', '40.05.04.08', NULL, '08', 'ACU支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8688', '40.05.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8689', '40.05.04.98', NULL, '98', '紧固件', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('869', '20.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8690', '40.06', NULL, '06', '底盘电子系统', 'Chassis electronic system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8691', '40.06.01', NULL, '01', '胎压监测系统', 'Tire pressure monitoring system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8692', '40.06.01.01', NULL, '01', '胎压监测模块', 'Tire pressure monitoring module', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8693', '40.06.01.02', NULL, '02', '接收模块', 'Receiving module', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8694', '40.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8695', '50', NULL, '50', '货箱及上装装置', 'Cargo tank and loading device', '1', NULL, '1', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8696', '50.01', NULL, '01', '货箱', 'Cargo tank of van', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8697', '50.01.01', NULL, '01', '货箱', 'Cargo tank of van', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8698', '50.01.01.01', NULL, '01', '货箱总成(双层边板)', 'Double row cargo body assembly ( double-layer edge plate )', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8699', '50.01.01.01.01', NULL, '01', '货箱焊接总成', 'Double cab cargo weldmentment assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('87', '10.03.01.01.04', NULL, '04', '油箱体', 'Oil tank front fixing hanging belt assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('870', '20.01.04', NULL, '04', '前部灯具-底盘部分', 'Front lamps - Chassis part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8700', '50.01.01.01.01.01', NULL, '01', '货箱底板总成', 'Trunk floor assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8701', '50.01.01.01.01.01.01', NULL, '01', '底板', 'Base plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8702', '50.01.01.01.01.01.02', NULL, '02', '第一横梁焊接总成', 'cross member weldment assembly ', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8703', '50.01.01.01.01.01.02.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8704', '50.01.01.01.01.01.02.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8705', '50.01.01.01.01.01.02.03', NULL, '03', '横梁悬置加强板总成', 'Front cross member suspension reinforced plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8706', '50.01.01.01.01.01.02.03.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8707', '50.01.01.01.01.01.03', NULL, '03', '第二横梁焊接总成', 'Second beam welding assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8708', '50.01.01.01.01.01.03.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8709', '50.01.01.01.01.01.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('871', '20.01.04.01', NULL, '01', '前组组合灯总成', 'F. combination lamp assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8710', '50.01.01.01.01.01.04', NULL, '04', '第四、五横梁焊接总成', 'Fourth and fifth beams welding assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8711', '50.01.01.01.01.01.04.01', NULL, '01', '第四、五横梁焊接总成1', 'Fourth and fifth beams welding assembly 1', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8712', '50.01.01.01.01.01.04.01.01', NULL, '01', '第四、五横梁焊接组件', 'Fourth and fifth beams welding component', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8713', '50.01.01.01.01.01.04.01.01.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8714', '50.01.01.01.01.01.04.01.01.02', NULL, '02', '第四、五横梁悬置内加强板总成', 'Fourth and fifth beam suspension inner reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8715', '50.01.01.01.01.01.04.01.01.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8716', '50.01.01.01.01.01.04.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8717', '50.01.01.01.01.01.04.01.01.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8718', '50.01.01.01.01.01.04.01.02', NULL, '02', '垫板', 'Cushion plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8719', '50.01.01.01.01.01.04.02', NULL, '02', '纵梁', 'side member assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('872', '20.01.04.01.01', NULL, '01', '前组合灯', 'Front combination lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8720', '50.01.01.01.01.01.05', NULL, '05', '后围下横梁总成', 'Rear wall lower cross member assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8721', '50.01.01.01.01.01.05.01', NULL, '01', '后围下横梁总成1', 'Rear lower beam assembly 1', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8722', '50.01.01.01.01.01.05.01.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8723', '50.01.01.01.01.01.05.01.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8724', '50.01.01.01.01.01.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8725', '50.01.01.01.01.01.05.02', NULL, '02', '后围下横梁加强板1总成', 'Rear molding lower beam reinforcing plate 1 assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8726', '50.01.01.01.01.01.05.03', NULL, '03', '后门铰链加强板总成', 'Rear door hinge reinforced plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8727', '50.01.01.01.01.01.05.03.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8728', '50.01.01.01.01.01.05.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8729', '50.01.01.01.01.02', NULL, '02', '货箱前板总成', 'Trunk front panel assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('873', '20.01.04.01.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8730', '50.01.01.01.01.02.01', NULL, '01', '货箱前板', 'Trunk front panel', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8731', '50.01.01.01.01.02.02', NULL, '02', '横梁', 'Cross member', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8732', '50.01.01.01.01.02.03', NULL, '03', '连接板', 'Connection plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8733', '50.01.01.01.01.03', NULL, '03', '边板总成', ' plate assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8734', '50.01.01.01.01.03.01', NULL, '01', '边板外侧总成', 'Left side plate outside assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8735', '50.01.01.01.01.03.01.01', NULL, '01', '后柱总成', 'pillar assembly ', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8736', '50.01.01.01.01.03.01.01.01', NULL, '01', '后柱内板总成', 'column inner plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8737', '50.01.01.01.01.03.01.01.01.01', NULL, '01', '后柱内板总成1', 'column inner plate assembly 1', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8738', '50.01.01.01.01.03.01.01.01.01.01', NULL, '01', '内板', 'inner plate assembly', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8739', '50.01.01.01.01.03.01.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('874', '20.01.04.01.03', NULL, '03', '昼行灯', 'Daytime running lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8740', '50.01.01.01.01.03.01.01.01.02', NULL, '02', '绳扣左加强板总成', 'Rope buckle left reinforcing plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8741', '50.01.01.01.01.03.01.01.01.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8742', '50.01.01.01.01.03.01.01.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8743', '50.01.01.01.01.03.01.01.01.03', NULL, '03', '连接板', 'Connection plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8744', '50.01.01.01.01.03.01.01.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8745', '50.01.01.01.01.03.01.01.03', NULL, '03', '后柱外板连接板总成', 'Rear pillar outer panel connecting plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8746', '50.01.01.01.01.03.01.01.03.01', NULL, '01', '连接板', 'Connection plate', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8747', '50.01.01.01.01.03.01.01.04', NULL, '04', '补角板', 'compensatory angle plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8748', '50.01.01.01.01.03.01.02', NULL, '02', '边板外板总成', 'side plate outer plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8749', '50.01.01.01.01.03.01.02.01', NULL, '01', '货箱边板前立柱总成', 'Trunk side panel front column assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('875', '20.01.04.02', NULL, '02', '前雾灯总成', 'F. fog lamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8750', '50.01.01.01.01.03.01.02.01.01', NULL, '01', '挂钩螺母板总成', 'Hook nut plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8751', '50.01.01.01.01.03.01.02.01.01.01', NULL, '01', '螺母板', 'Nut plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8752', '50.01.01.01.01.03.01.02.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8753', '50.01.01.01.01.03.01.02.01.02', NULL, '02', '货箱边板前立柱连接板总成', 'Trunk side panel front column connecting plate assembly', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8754', '50.01.01.01.01.03.01.02.01.02.01', NULL, '01', '货箱边板前立柱连接板', 'Trunk side panel front column connecting plate', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8755', '50.01.01.01.01.03.01.02.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8756', '50.01.01.01.01.03.01.02.01.03', NULL, '03', '货箱边板前立柱总成1', 'Trunk side panel front column assembly 1', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8757', '50.01.01.01.01.03.01.02.01.03.01', NULL, '01', '货箱边板前立柱', 'Trunk side panel front column', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8758', '50.01.01.01.01.03.01.02.01.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8759', '50.01.01.01.01.03.01.02.02', NULL, '02', '货箱外板支撑板总成', 'Trunk outer plate support plate assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('876', '20.01.04.02.01', NULL, '01', '前雾灯', 'Front fog lamp', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8760', '50.01.01.01.01.03.01.02.02.01', NULL, '01', '货箱外板支撑板1', 'Trunk outer plate support plate 1', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8761', '50.01.01.01.01.03.01.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('876159681C8D45B683D', '60.06.01.01.14.11', '', '11', '模组压条', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8762', '50.01.01.01.01.03.01.02.03', NULL, '03', '后柱内板加强板', 'Rear pillar inner panel reinforcing plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8763', '50.01.01.01.01.03.01.02.04', NULL, '04', '加油口盖板总成', 'Mounting bracket components of front bumper', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8764', '50.01.01.01.01.03.01.02.04.01', NULL, '01', '加油口盖板', 'Mounting bracket components of front bumper', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8765', '50.01.01.01.01.03.01.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8766', '50.01.01.01.01.03.01.02.05', NULL, '05', '边板本体', 'side plate body', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8767', '50.01.01.01.01.03.02', NULL, '02', '边板内侧总成', 'side plate inside assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8768', '50.01.01.01.01.03.02.01', NULL, '01', '货箱底板总成', 'Trunk floor assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8769', '50.01.01.01.01.03.02.01.01', NULL, '01', '货箱底板', 'Trunk floor', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('877', '20.01.04.02.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8770', '50.01.01.01.01.03.02.01.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8771', '50.01.01.01.01.03.02.01.03', NULL, '03', '第四、五横梁支架总成', 'Fourth and fifth beams bracket assembly', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8772', '50.01.01.01.01.03.02.01.03.01', NULL, '01', '第四、五横梁支架总成1', 'Fourth and fifth beams bracket assembly 1', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8773', '50.01.01.01.01.03.02.01.03.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8774', '50.01.01.01.01.03.02.01.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '11', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8775', '50.01.01.01.01.03.02.01.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '10', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8776', '50.01.01.01.01.03.02.02', NULL, '02', '支撑板', 'Support plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8777', '50.01.01.01.01.03.02.03', NULL, '03', '货箱轮罩总成', 'Trunk wheel cover assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8778', '50.01.01.01.01.03.02.03.01', NULL, '01', '货箱轮罩', 'Trunk wheel cover', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8779', '50.01.01.01.01.03.02.03.02', NULL, '02', '货箱横梁连接板2', 'Trunk beam connecting plate 2', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('878', '20.01.04.03', NULL, '03', '前雾/转弯组合灯', 'F. fog / turning combination lamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8780', '50.01.01.01.01.03.02.03.03', NULL, '03', '支架', 'Bracket', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8781', '50.01.01.01.01.03.02.04', NULL, '04', '外板加强板总成', 'Outer plate reinforcing plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8782', '50.01.01.01.01.03.02.04.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8783', '50.01.01.01.01.03.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8784', '50.01.01.01.01.03.02.05', NULL, '05', '货箱边板内板总成', 'plate inner plate assembly', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8785', '50.01.01.01.01.03.02.05.01', NULL, '01', '内板', 'inner plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8786', '50.01.01.01.01.03.02.05.02', NULL, '02', '连接板', 'Connection plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8787', '50.01.01.01.01.03.02.05.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8788', '50.01.01.01.01.03.02.05.04', NULL, '04', '支撑板', 'Support plate', '1', NULL, '9', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8789', '50.01.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('879', '20.01.04.03.01', NULL, '01', 'LED光源', 'LED light source', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8790', '50.01.01.01.02', NULL, '02', '货箱后板总成', 'Trunk rear panel assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8791', '50.01.01.01.02.01', NULL, '01', '外板', 'outer plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8792', '50.01.01.01.02.01.01', NULL, '01', '支撑板', 'Support plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8793', '50.01.01.01.02.02', NULL, '02', '货箱后门内板总成', 'Trunk rear door inner panel assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8794', '50.01.01.01.02.02.01', NULL, '01', '横梁', 'Cross member', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8795', '50.01.01.01.02.02.02', NULL, '02', '货箱后门左内板加强板总成', 'Trunk rear door left inner panel reinforcing plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8796', '50.01.01.01.02.02.02.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8797', '50.01.01.01.02.02.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8798', '50.01.01.01.02.02.03', NULL, '03', '货箱后门右内板加强板总成', 'Trunk rear door right inner panel reinforcing plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8799', '50.01.01.01.02.02.03.01', NULL, '01', '货箱后门右内板加强板', 'Trunk rear door right inner panel reinforcing plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('88', '10.03.01.01.05', NULL, '05', '燃油箱加油口', 'Fuel tank oil filler', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('880', '20.01.04.03.02', NULL, '02', '灯泡', 'Bulb', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8800', '50.01.01.01.02.02.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8801', '50.01.01.01.02.02.04', NULL, '04', '货箱后门下加强板总成', 'Trunk rear door lower reinforcing plate assembly', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8802', '50.01.01.01.02.02.04.01', NULL, '01', '加强板', 'Reinforced plate', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8803', '50.01.01.01.02.02.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '8', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8804', '50.01.01.01.02.02.05', NULL, '05', '内板', 'inner plate', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8805', '50.01.01.01.02.03', NULL, '03', '胶垫', 'pad assembly', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8806', '50.01.01.01.02.04', NULL, '04', '后板外板总成', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8807', '50.01.01.01.02.04.01', NULL, '01', '后板外板左加强板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8808', '50.01.01.01.02.04.02', NULL, '02', '后板外板右加强板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8809', '50.01.01.01.02.04.03', NULL, '03', '后板外板加强板', '11', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('881', '20.01.04.04', NULL, '04', '侧转向灯', 'Side steering lamp', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8810', '50.01.01.01.03', NULL, '03', '货箱左外板支撑板连接板总成', 'Trunk left outer plate support plate connecting plate assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8811', '50.01.01.01.03.01', NULL, '01', '连接板', 'Connection plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8812', '50.01.01.01.03.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8813', '50.01.01.01.04', NULL, '04', '货箱右外板支撑板连接板总成', 'Trunk right outer plate support plate connecting plate assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8814', '50.01.01.01.04.01', NULL, '01', '连接板', 'Connection plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8815', '50.01.01.01.04.02', NULL, '02', '加强板', 'Reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8816', '50.01.01.01.05', NULL, '05', '货箱后门铰链总成', 'Cargo rear door hinge assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8817', '50.01.01.01.05.01', NULL, '01', '铰链', 'hinge ', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8818', '50.01.01.01.05.02', NULL, '02', '销轴', 'Pin shaft', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8819', '50.01.01.01.05.03', NULL, '03', '加强板', 'Reinforced plate', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('882', '20.01.04.05', NULL, '05', '支架', '11', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8820', '50.01.01.01.06', NULL, '06', '盖板', 'Cover plate', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8821', '50.01.01.01.07', NULL, '07', '堵板', 'Stop plate', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8822', '50.01.01.01.08', NULL, '08', '胶垫', 'pad assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8823', '50.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8824', '50.01.01.02', NULL, '02', '后防护总成', 'Rear guard rail mounting assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8825', '50.01.01.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8826', '50.01.01.04', NULL, '04', '护厢宝', 'Guard kit', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8827', '50.01.01.05', NULL, '05', '货箱绳扣', 'hook of cargo', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8828', '50.01.01.06', NULL, '06', '限位块', 'Limiting block', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8829', '50.01.01.07', NULL, '07', '绳钩', 'cargo', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('883', '20.01.04.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8830', '50.01.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8831', '50.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8832', '50.01.02', NULL, '02', '货箱护栏及附件', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8833', '50.01.02.01', NULL, '01', '后防护栏总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8834', '50.01.02.01.01', NULL, '01', '前护栏总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8835', '50.01.02.01.01.01', NULL, '01', '前护栏本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8836', '50.01.02.01.01.02', NULL, '02', '前护栏外板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8837', '50.01.02.01.01.03', NULL, '03', '前护栏内板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8838', '50.01.02.01.01.04', NULL, '04', '前护栏加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8839', '50.01.02.01.01.05', NULL, '05', '前护栏连接板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('884', '20.01.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8840', '50.01.02.01.01.06', NULL, '06', '前护栏连接支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8841', '50.01.02.01.01.07', NULL, '07', '高位制动灯安装板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8842', '50.01.02.01.02', NULL, '02', '左侧防护栏总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8843', '50.01.02.01.02.01', NULL, '01', '左侧防护栏本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8844', '50.01.02.01.02.02', NULL, '02', '左侧防护栏外板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8845', '50.01.02.01.02.03', NULL, '03', '左侧防护栏内板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8846', '50.01.02.01.02.04', NULL, '04', '左侧防护栏加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8847', '50.01.02.01.02.05', NULL, '05', '左侧防护栏连接支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8848', '50.01.02.01.03', NULL, '03', '右侧防护栏总成', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8849', '50.01.02.01.03.01', NULL, '01', '右侧防护栏本体', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('885', '20.01.05', NULL, '05', '前后风挡', 'Front and rear windshield', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8850', '50.01.02.01.03.02', NULL, '02', '右侧防护栏外板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8851', '50.01.02.01.03.03', NULL, '03', '右侧防护栏内板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8852', '50.01.02.01.03.04', NULL, '04', '右侧防护栏加强板', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8853', '50.01.02.01.03.05', NULL, '05', '右侧防护栏连接支架', '11', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8854', '50.01.02.01.04', NULL, '04', '软垫', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8855', '50.01.02.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8856', '50.01.02.98', NULL, '98', '紧固件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8857', '60', NULL, '60', '新能源', 'New energy', '1', NULL, '1', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8858', '60.01', NULL, '01', '燃料存贮&输送', 'Fuel storage & transport', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8859', '60.01.01', NULL, '01', '燃气供给系统', 'Gas supply system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('886', '20.01.05.01', NULL, '01', '前风窗玻璃', 'Front windshield assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8860', '60.01.01.01', NULL, '01', 'LNG(HPDI)供气系统总成', 'LNG(HPDI) gas supply system assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8861', '60.01.01.01.01', NULL, '01', '供气系统总成', 'Gas supply system assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8862', '60.01.01.01.02', NULL, '02', '缓冲罐总成', 'Buffer tank assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8863', '60.01.01.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8864', '60.01.01.01.04', NULL, '04', '液压系统总成', 'Hydraulic system assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8865', '60.01.01.01.05', NULL, '05', '液压油罐', 'Hydraulic oil tank', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8866', '60.01.01.01.06', NULL, '06', '液压油冷却风扇', 'Hydraulic oil cooling fan', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8867', '60.01.01.01.07', NULL, '07', '液压油控制阀', 'Hydraulic oil control valve', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8868', '60.01.01.01.08', NULL, '08', '液压油管', 'Hydraulic oil pipe', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8869', '60.01.01.01.09', NULL, '09', '排气系统总成', 'Exhaust system assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('887', '20.01.05.02', NULL, '02', '前风窗玻璃密封条', 'Front windshield seal strip assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8870', '60.01.01.01.10', NULL, '10', '排气管路', 'Exhaust line', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8871', '60.01.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8872', '60.01.01.02', NULL, '02', 'LNG供气系统总成', 'LNG gas supply system assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8873', '60.01.01.03', NULL, '03', 'CNG供气系统总成', 'CNG gas supply system assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8874', '60.01.01.04', NULL, '04', '钢瓶总成', 'steel cylinder assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8875', '60.01.01.04.01', NULL, '01', 'CNG燃气钢瓶总成', 'steel cylinder assemblySteering reversal hydraulic cylinder assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8876', '60.01.01.04.02', NULL, '02', 'LNG钢瓶总成', 'Proximity sensor assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8877', '60.01.01.04.03', NULL, '03', '缠绕瓶总成', 'Winding cylinder assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8878', '60.01.01.04.04', NULL, '04', '钢瓶球阀总成', 'Steel cylinder ball valve assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8879', '60.01.01.05', NULL, '05', '燃气供气管路', 'Gas supply pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('888', '20.01.05.03', NULL, '03', '前风窗玻璃内装饰条', 'Front windshield inner trim strip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8880', '60.01.01.05.01', NULL, '01', '燃气供气管路', 'Gas supply pipe', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8881', '60.01.01.05.02', NULL, '02', '减压器总成', 'Pressure reducer assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8882', '60.01.01.05.03', NULL, '03', '管路总成', 'Line assembly', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8883', '60.01.01.05.04', NULL, '04', '加热水管', 'Heating water pipe', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8884', '60.01.01.05.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8885', '60.01.01.06', NULL, '06', '供气管', 'High-pressure air supply pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8886', '60.01.01.07', NULL, '07', '控制面板', 'Control panel', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8887', '60.01.01.08', NULL, '08', '燃气钢瓶支架总成', 'Gas steel cylinder support assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8888', '60.01.01.09', NULL, '09', '汽化器总成', 'Vaporizer assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8889', '60.01.01.10', NULL, '10', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('889', '20.01.05.04', NULL, '04', '后风窗玻璃', 'Rear windshield assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8890', '60.01.01.11', NULL, '11', '稳压罐总成', 'Regulator tank assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8891', '60.01.01.12', NULL, '12', '热交换器总成', 'Heat exchanger assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8892', '60.01.01.13', NULL, '13', '减压器、稳压器总成', 'Pressure regulator, voltage regulator assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8893', '60.01.01.14', NULL, '14', '燃气滤清器总成', 'Gas filter assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8894', '60.01.01.15', NULL, '15', '控制器、电磁阀', 'Controller, solenoid valve', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8895', '60.01.01.16', NULL, '16', '气管夹', 'Gas pipe clamp', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8896', '60.01.01.17', NULL, '17', '液位传感器', 'Liquid level sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8897', '60.01.01.18', NULL, '18', '防护罩', 'Guard cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8898', '60.01.01.19', NULL, '19', '节流阀总成', 'Throttle valve assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8899', '60.01.01.20', NULL, '20', '高压电磁阀总成', 'High-pressure solenoid valve assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('89', '10.03.01.01.07', NULL, '07', '端板', 'End plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('890', '20.01.05.05', NULL, '05', '后风窗玻璃密封条', 'Rear windshield seal strip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8900', '60.01.01.21', NULL, '21', '气量显示表总成', 'Gas volume display list assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8901', '60.01.01.22', NULL, '22', '手动截止阀总成', 'Manual check valve assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8902', '60.01.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8903', '60.01.02', NULL, '02', '氢系统', 'Hydrogen system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8904', '60.01.02.01', NULL, '01', '储气瓶', 'Cylinder', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8905', '60.01.02.02', NULL, '02', '管件总成', 'Fitting assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8906', '60.01.02.03', NULL, '03', '加氢口', 'Hydrogen filler', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8907', '60.01.02.04', NULL, '04', '安全栅', 'Safety barrier', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8908', '60.01.02.05', NULL, '05', '阀', 'Valve', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8909', '60.01.02.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('891', '20.01.05.06', NULL, '06', '蘑菇搭扣', 'Dual lock', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8910', '60.01.02.07', NULL, '07', '传感器', 'Sensor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8911', '60.01.02.08', NULL, '08', '压力表', 'Pressure gauge', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8912', '60.01.02.09', NULL, '09', '线束', 'wiring harness', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8913', '60.01.02.10', NULL, '10', '氢系统控制器', 'Hydrogen system controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8914', '60.01.02.11', NULL, '11', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8915', '60.01.02.12', NULL, '12', '隔板', 'Clapboard', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8916', '60.01.02.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8917', '60.01.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8918', '60.02', NULL, '02', '传动系统', 'Drivetrain', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8919', '60.02.01', NULL, '01', '减速器', 'Reducer', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('892', '20.01.05.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8920', '60.02.01.01', NULL, '01', '减速器', 'Reducer', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8921', '60.02.01.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8922', '60.02.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8923', '60.03', NULL, '03', '动力系统', 'Power system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8924', '60.03.01', NULL, '01', '燃料电池系统', 'Fuel cell system ', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8925', '60.03.01.01', NULL, '01', '燃料电池主机', 'Fuel cell main unit', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8926', '60.03.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8927', '60.03.01.03', NULL, '03', '减震垫', 'Anti-vibration pad', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8928', '60.03.01.04', NULL, '04', '散热总成', 'heat dissipation assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8929', '60.03.01.05', NULL, '05', '散热管路', 'heat dissipation line', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('892C08E1E6A5462DA45', '20.05.01.01.01.06.10', '', '10', '顶盖右中加强板', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('893', '20.01.06', NULL, '06', '保险杠-底盘部分', 'Bumper - Chassis part', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8930', '60.03.01.06', NULL, '06', '空压机总成', 'air compressor assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8931', '60.03.01.07', NULL, '07', '空滤器总成', 'Air filter assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8932', '60.03.01.08', NULL, '08', '进气管路', 'intake line', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8933', '60.03.01.09', NULL, '09', '排气管路', 'exhaust line', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8934', '60.03.01.10', NULL, '10', '线束', 'wiring harness', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8935', '60.03.01.11', NULL, '11', 'DCF', 'DCF', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8936', '60.03.01.12', NULL, '12', '燃料电池系统控制器', 'Fuel battery system controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8937', '60.03.01.13', NULL, '13', '数据采集总成', 'Data acquisition assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8938', '60.03.01.14', NULL, '14', '高压线束', 'High-voltage wire harness', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8939', '60.03.01.15', NULL, '15', 'DCDC', 'DC-DC', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('894', '20.01.06.01', NULL, '01', '保险杠总成', 'Bumper assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8940', '60.03.01.16', NULL, '16', '防护罩', 'Guard cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8941', '60.03.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8942', '60.03.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8943', '60.03.02', NULL, '02', '混合动力附件', 'Hybrid accessories', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8944', '60.03.02.01', NULL, '01', '散热器带护风罩总成', 'Radiator with fan cover assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8945', '60.03.02.02', NULL, '02', '风扇', 'Fan', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8946', '60.03.02.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8947', '60.03.02.04', NULL, '04', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8948', '60.03.02.05', NULL, '05', '水泵', 'Water pump', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8949', '60.03.02.06', NULL, '06', '软管', 'Hose', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('895', '20.01.06.01.01', NULL, '01', '保险杠骨架', 'Bumper support assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8950', '60.03.02.07', NULL, '07', '钢管', 'Steel pipe', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8951', '60.03.02.08', NULL, '08', '副水箱', 'Auxiliary water tank', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8952', '60.03.02.09', NULL, '09', '散热器防护网', 'Radiator protection net', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8953', '60.03.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8954', '60.04', NULL, '04', '电动汽车整车控制系统', 'Electric vehicle control system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8955', '60.04.01', NULL, '01', '整车控制系统', 'Complete vehicle control system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8956', '60.04.01.01', NULL, '01', '整车控制器', 'Complete vehicle controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8957', '60.04.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8958', '60.04.01.03', NULL, '03', '整车控制器上壳体', 'VCU upper cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8959', '60.04.01.04', NULL, '04', '整车控制器下壳体', 'VCU lower cover', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('896', '20.01.06.01.01.01', NULL, '01', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8960', '60.04.01.05', NULL, '05', '整车控制器PCBA总成', 'VCU PCBA', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8961', '60.04.01.06', NULL, '06', '整车控制器防水透气阀', 'VCU air permeable plug', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8962', '60.04.01.07', NULL, '07', '整车控制器附件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8963', '60.04.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8964', '60.04.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8965', '60.05', NULL, '05', '电动汽车电驱动系统', 'Electric vehicle electric drive system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8966', '60.05.01', NULL, '01', '电机系统', 'Generator system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8967', '60.05.01.01', NULL, '01', '电动机', 'Motor', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8968', '60.05.01.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8969', '60.05.01.03', NULL, '03', '动力总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('897', '20.01.06.01.02', NULL, '02', '保险杠', 'Bumper subassembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8970', '60.05.01.04', NULL, '04', '变速器', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8971', '60.05.01.05', NULL, '05', '电机三相线', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8972', '60.05.01.07', NULL, '07', '二合一电动总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8973', '60.05.01.08', NULL, '08', '三合一电动总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8974', '60.05.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8975', '60.05.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8976', '60.05.02', NULL, '02', '电机控制系统', 'Motor control system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8977', '60.05.02.01', NULL, '01', '电力电子单元', 'Power electronic unit', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8978', '60.05.02.02', NULL, '02', '电机控制器', 'Motor controller', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8979', '60.05.02.03', NULL, '03', '主控多合一总成支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('898', '20.01.06.01.02.01', NULL, '01', '保险杠本体', 'Bumper body', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8980', '60.05.02.04', NULL, '04', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8981', '60.05.02.05', NULL, '05', '电力电子单元附件', '11 ', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8982', '60.05.02.06', NULL, '06', '变速器控制单元(TCU)', '11 ', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8983', '60.05.02.07', NULL, '07', '电机控制器MCU支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8984', '60.05.02.08', NULL, '08', '电力电子单元附件支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8985', '60.05.02.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8986', '60.05.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8987', '60.05.03', NULL, '03', '增程器系统', '11', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8988', '60.05.03.01', NULL, '01', '增程器总成', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8989', '60.05.03.02', NULL, '02', '发电机', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('899', '20.01.06.01.02.02', NULL, '02', '装饰板', 'Bumper left lower trim cover', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8990', '60.05.03.03', NULL, '03', '发电机控制器(GCU)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8991', '60.05.03.04', NULL, '04', '发动机', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8992', '60.05.03.05', NULL, '05', '发动机控制器(ECU)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8993', '60.05.03.06', NULL, '06', '增程器控制器(RECU)', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8994', '60.05.03.07', NULL, '07', '支架', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8995', '60.05.03.08', NULL, '08', '增程器线束', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8996', '60.05.03.97', NULL, '97', '安装图', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8997', '60.05.03.98', NULL, '98', '紧固件', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8998', '60.06', NULL, '06', '动力电池系统', 'Power battery system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8999', '60.06.01', NULL, '01', '动力蓄电池', 'Power battery assembly', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('89C10F13C4624BC5970', '30.06.02.20', '', '20', '交通锥', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('89E891D5B20A4BC8BDE', '50.01.01.09', '', '09', '储物盒总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('8B4D81716B7D472F8D6', '60.06.01.01.14.08', '', '08', '模组绝缘材料', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8BC04BAE1C564700A30', '60.06.01.01.07.02', '', '02', '多合一接插件-无保险', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8BFBF9900FA34DDAB2D', '20.04.04.01.01.01.02.05', '', '05', '前舱盖锁钩固定板分总成', '', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8C1ABEA78D96403986F', '20.02.09.10', '', '10', '胶贴', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8CFDA05CFCDC4A54B56', '30.05.06.10', '', '10', '继动阀总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8D0090360F0F4EFA997', '60.06.01.01.14.12.01', '', '01', '模组加热膜-24S', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8D2F29E8468B43B6ABF', '10.03.01.29.05', '', '05', '弹簧', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8E41004640B346AD81A', '30.04.01.31', '', '31', '球头销锁紧螺母', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('8F2163B1DBFB48FC8BD', '30.05.04.17', '', '17', '支架', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9', '10.01.01.05', NULL, '05', '安装盒', 'Storage box', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('90', '10.03.01.01.08', NULL, '08', '油管', 'Oil outlet pipe', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('900', '20.01.06.01.02.03', NULL, '03', '格栅', 'Grille', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9000', '60.06.01.01', NULL, '01', '电池箱部件', 'battery box component', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9001', '60.06.01.01.01', NULL, '01', '模组', 'cell cluster', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9002', '60.06.01.01.02', NULL, '02', '电池箱附件', 'Battery box', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9003', '60.06.01.01.03', NULL, '03', '高压箱', 'High voltage box', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9004', '60.06.01.01.04', NULL, '04', 'MSD-手动维修开关', 'MSD-manual maintenance switch', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9005', '60.06.01.01.05', NULL, '05', '电池管理系统(BMS)', 'Battery Management System (BMS)', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9006', '60.06.01.01.06', NULL, '06', '支架', 'Bracket', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9007', '60.06.01.01.12', NULL, '12', '高压线束', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9008', '60.06.01.01.13', NULL, '13', '线束扎带', '11', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9009', '60.06.01.07', NULL, '07', 'BDU', '11', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('901', '20.01.06.01.02.04', NULL, '04', '脚踏板', 'bumper upper footplate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9010', '60.06.01.13', NULL, '13', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9010C8AB59644B9F9BA', '20.04.06.01.44', '', '44', '侧滑门玻璃后端密封条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9011', '60.06.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9012', '60.06.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9013', '60.07', NULL, '07', '电力附件', 'Power accessories', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9014', '60.07.01', NULL, '01', '高压线束', 'High-voltage wiring harness', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9015', '60.07.01.02', NULL, '02', '高压线束总成', 'High-voltage wire harness assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9016', '60.07.01.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9017', '60.07.01.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9018', '60.07.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9019', '60.07.02', NULL, '02', '高压配电系统', 'High-voltage power distribution system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('902', '20.01.06.01.02.06', NULL, '06', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9020', '60.07.02.01', NULL, '01', 'PDU总成', 'PDU assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9021', '60.07.02.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9022', '60.07.02.03', NULL, '03', '软垫', 'Cushion', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9023', '60.07.02.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9024', '60.07.02.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9025', '60.07.03', NULL, '03', '直流-直流转换系统', 'DC-DC transformation system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9026', '60.07.03.01', NULL, '01', 'DCDC总成', 'DC-DC assembly', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9027', '60.07.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9028', '60.07.03.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9029', '60.07.03.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('903', '20.01.06.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9030', '60.07.04', NULL, '04', '车载充电系统', 'Vehicle-mounted charging system', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9031', '60.07.04.01', NULL, '01', '车载充电机', 'Vehicle-mounted charger', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9032', '60.07.04.02', NULL, '02', '支架', 'Bracket', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9033', '60.07.04.97', NULL, '97', '安装图', 'Installation diagram', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9034', '60.07.04.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9035', '60.08', NULL, '08', '燃料电池系统', 'fuel cell system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9036', '60.09', NULL, '09', '氢系统', 'Hydrogen system', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9037', '70', NULL, '70', '总布置图', 'General layout', '1', NULL, '1', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9038', '70.01', NULL, '01', '整车总布置图', 'General layout of the complete vehicle', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9039', '70.01.01', NULL, '01', '整车总布置图', 'General layout of the complete vehicle', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('904', '20.01.06.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9040', '70.02', NULL, '02', '底盘总布置图', 'General layout of the chassis', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9041', '70.02.01', NULL, '01', '底盘总布置图', 'General layout of the chassis', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9042', '70.03', NULL, '03', '整车外形图', 'Outline diagram of the complete vehicle', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9043', '70.03.01', NULL, '01', '整车外形图', 'Outline diagram of the complete vehicle', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9044', '70.04', NULL, '04', '整车原理图', 'Schematic diagram of the complete vehicle', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9045', '70.04.01', NULL, '01', '整车原理图', 'Schematic diagram of the complete vehicle', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9046', '70.05', NULL, '05', '车身总装图', 'General assembly diagram of body', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9047', '70.05.01', NULL, '01', '车身总装图', 'General assembly diagram of body', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9048', '70.06', NULL, '06', '车身布置图', 'General layout of the body', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9049', '70.06.01', NULL, '01', '车身布置图', 'General layout of the body', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('905', '20.01.07', NULL, '07', '雨刮器及洗涤器', 'Wiper and washer', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9050', '70.07', NULL, '07', 'ECU相关整车配置参数表', 'ECU related complete vehicle configuration parameter table', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9051', '70.07.01', NULL, '01', 'ECU相关整车配置参数表', 'ECU related complete vehicle configuration parameter table', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9052', '70.08', NULL, '08', '二类底盘外形图', 'Outline drawing of secondary chassis', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9053', '70.08.01', NULL, '01', '二类底盘外形图', 'Outline drawing of secondary chassis', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9054', '70.09', NULL, '09', '整车管线布置图', 'General layout of pipe line', '1', NULL, '2', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9055', '70.09.01', NULL, '01', '整车管线布置图', 'General layout of pipe line', '1', NULL, '3', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('906', '20.01.07.01', NULL, '01', '雨刮连杆机构总成', 'wiper connecting mechanism assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('907', '20.01.07.02', NULL, '02', '刮臂刮片总成', 'Wiper arm blade assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('908', '20.01.07.02.01', NULL, '01', '刮臂总成', 'L. wiper assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('909', '20.01.07.02.02', NULL, '02', '刮片总成', 'L. blade assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('91', '10.03.01.01.09', NULL, '09', '二路止回阀安装座焊合', 'Double-way check valve installation seat weldment', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('910', '20.01.07.02.03', NULL, '03', '雨刮堵盖', 'wiper plug cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('911', '20.01.07.03', NULL, '03', '密封圈', 'Sealing ring', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('912', '20.01.07.04', NULL, '04', '雨刮电机总成', 'wiper assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('913', '20.01.07.05', NULL, '05', '水管', 'Water pipe', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('914', '20.01.07.06', NULL, '06', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('915', '20.01.07.07', NULL, '07', '洗涤壶总成', 'Washing pot assembly', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('916', '20.01.07.07.01', NULL, '01', '壶体总成', 'Windshield washer', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('917', '20.01.07.07.02', NULL, '02', '洗涤壶电机总成', 'Windshield washer motor assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('918', '20.01.07.08', NULL, '08', '接头', 'Joint', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('919', '20.01.07.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('92', '10.03.01.01.10', NULL, '10', '放油塞', 'Water drain plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('920', '20.01.07.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('921', '20.01.08', NULL, '08', '前后围外饰件', 'Exterior trim parts for front/rear wall', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('922', '20.01.08.01', NULL, '01', '前围外饰件', 'Exterior trim parts for front wall', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('923', '20.01.08.01.01', NULL, '01', '前面板总成', 'Front panel assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('924', '20.01.08.01.02', NULL, '02', '前风窗下装饰板总成', 'Front windshield lower trim cover assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('925', '20.01.08.01.03', NULL, '03', '角板总成', 'Corner plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('926', '20.01.08.01.03.01', NULL, '01', '角板', 'Angle plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('927', '20.01.08.01.04', NULL, '04', '前围密封件', 'Front panel seal', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('928', '20.01.08.01.04.01', NULL, '01', '密封条', 'Seal strip', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('929', '20.01.08.01.05', NULL, '05', '前围格栅', 'Front panel grille', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('93', '10.03.01.01.11', NULL, '11', '隔板', 'Clapboard', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('930', '20.01.08.01.05.01', NULL, '01', '格栅', 'Grille', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('931', '20.01.08.01.06', NULL, '06', '锁扣', 'Buckle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('932', '20.01.08.01.07', NULL, '07', '前围锁体', 'Front panel lock body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('933', '20.01.08.01.07.01', NULL, '01', '锁体', 'Lock body', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('934', '20.01.08.01.08', NULL, '08', '拉丝总成', 'Pulling wire assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('935', '20.01.08.01.09', NULL, '09', '前围铰链', 'Front wall hinge', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('936', '20.01.08.01.10', NULL, '10', '软垫', 'Cushion', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('937', '20.01.08.01.11', NULL, '11', '撑杆总成', 'Support handle assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('938', '20.01.08.01.12', NULL, '12', '前围装饰件', 'Front panel trimming', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('939', '20.01.08.01.12.01', NULL, '01', '装饰件', 'Trimming', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('93D32B59580E4D6181E', '10.03.01.31', '', '31', '液压油箱托架总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('94', '10.03.01.01.12', NULL, '12', '三通阀', 'Tee valve', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('940', '20.01.08.01.13', NULL, '13', '前围扶手总成', 'Front wall handle assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('941', '20.01.08.01.13.01', NULL, '01', '扶手', 'Armrest', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('942', '20.01.08.01.14', NULL, '14', '后围外饰件', 'Exterior trim parts for rear wall', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('943', '20.01.08.01.14.01', NULL, '01', '后围出风口总成', 'Rear wall air outlet assembly', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('944', '20.01.08.01.14.02', NULL, '02', '装饰件', 'Trimming', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('945', '20.01.08.01.15', NULL, '15', 'LOGO', 'LOGO', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('946', '20.01.08.01.15.01', NULL, '01', 'LOGO标识', 'LOGO', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('946C908E2F2B47EABEC', '60.06.01.11.09', '', '09', '胶水-电芯', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('947', '20.01.08.01.16', NULL, '16', '扶手支座', 'Handrail support', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('948', '20.01.08.01.17', NULL, '17', '支架', 'Support', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('949', '20.01.08.01.18', NULL, '18', '堵盖', 'Plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('94A0AADF76934FECBD9', '20.04.03.01.02', '', '02', '充电口焊接总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('94BA402EC50246FA928', '30.02.03.20', '', '20', '高度阀组件', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('95', '10.03.01.01.13', NULL, '13', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('950', '20.01.08.01.19', NULL, '19', '拉丝内扣手', 'Pulling wire inner buckle', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('951', '20.01.08.01.20', NULL, '20', '导风板', 'Air deflector', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('952', '20.01.08.01.21', NULL, '21', '拉带', 'Draw string', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('953', '20.01.08.01.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('954', '20.01.08.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('955', '20.01.08.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('95500FA4B14A497C888', '20.04.01.01.34', '', '34', '右前门防虫网', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('956', '20.01.09', NULL, '09', '侧围外饰', 'Exterior trim parts for side wall', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('957', '20.01.09.01', NULL, '01', '流水槽', 'drain channel', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('958', '20.01.09.01.01', NULL, '01', '装饰件', 'Left upper drain channel trim cover', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('959', '20.01.09.01.02', NULL, '02', '流水槽', 'Left upper drain channel', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('95C89657A1CA4BB3BC3', '60.06.01.03.02.01', '', '01', 'CMU48SA上壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('96', '10.03.01.01.14', NULL, '14', '密封垫', 'Sealing gasket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('960', '20.01.09.01.03', NULL, '03', '堵盖', 'Plug', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('960D1C94A02B48A1908', '10.03.01.33.01', '', '01', '齿轮泵', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('961', '20.01.09.02', NULL, '02', '工具箱', 'Upper tool box', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('962', '20.01.09.02.01', NULL, '01', '工具箱铰链总成', 'tool box hinge assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('963', '20.01.09.02.01.01', NULL, '01', '铰链', 'Hinge', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('964', '20.01.09.02.02', NULL, '02', '工具箱盖板总成', 'tool box cover plate assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('965', '20.01.09.02.02.01', NULL, '01', '盖板', 'Cover plate', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('966', '20.01.09.02.03', NULL, '03', '工具箱锁体', 'Tool box lock body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('967', '20.01.09.02.04', NULL, '04', '工具箱拉线', 'Tool box lock body', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('968', '20.01.09.02.05', NULL, '05', '工具箱锁销', 'Upper tool box lock pin', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('969', '20.01.09.02.06', NULL, '06', '工具箱扳手', 'Right Upper tool box wire spanner', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('97', '10.03.01.01.15', NULL, '15', '法兰盘', 'Flange disc', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('970', '20.01.09.02.07', NULL, '07', '工具箱本体', 'Left lower tool box assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('971', '20.01.09.02.08', NULL, '08', '工具箱支撑机构', 'Left lower tool box support bar assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('972', '20.01.09.02.09', NULL, '09', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9729688885CD4E42842', '60.06.01.05.10', '', '10', '高压盒支架', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('973', '20.01.09.03', NULL, '03', '翼子板', 'Fender', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('974', '20.01.09.03.01', NULL, '01', '翼子板', 'Left fender assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('975', '20.01.09.03.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('976', '20.01.09.03.02.01', NULL, '01', '支架', 'Bracket', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('977', '20.01.09.03.02.02', NULL, '02', '密封条', 'Seal strip', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('977D13BEA0CA4153977', '60.06.01.01.09.05', '', '05', '跨模组连接排-长', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('977EDD7A86F745EEA6E', '20.04.01.01.08', '', '08', '左前门三角窗外装饰条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('978', '20.01.09.04', NULL, '04', '贴膜', 'wall film', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('978149F4FF4348D6BFD', '10.03.01.32', '', '32', '液压油箱紧固带总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('979', '20.01.09.04.01', NULL, '01', '贴膜', 'Left side wall film', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('97B717868AD643C98A9', '10.03.01.26.03', '', '03', '隔板', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('97F260A08616475AB36', '20.05.01.01.01.06.04', '', '04', '顶盖左加强板', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('98', '10.03.01.01.16', NULL, '16', '过滤网', 'Filter screen', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('980', '20.01.09.05', NULL, '05', '侧窗玻璃', 'Side window glass', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('981', '20.01.09.05.01', NULL, '01', '玻璃', 'Glass', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('981864AEFFBA4E1BA26', '20.02.09.04', '', '04', '单向排水阀', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('982', '20.01.09.05.02', NULL, '02', '支架', 'Bracket', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('983', '20.01.09.05.03', NULL, '03', '铰链', 'Hinge', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('984', '20.01.09.06', NULL, '06', '侧窗密封条', 'Side window weather strip', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('985', '20.01.09.06.01', NULL, '01', '密封条', 'Seal strip', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('986', '20.01.09.07', NULL, '07', '孔贴', 'Hole sticker', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9868EA7D0B9041E6890', '30.07.01.14', '', '14', '集中润滑装置', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('987', '20.01.09.08', NULL, '08', '轮眉', 'wheel eyebrow', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('988', '20.01.09.97', NULL, '97', '安装图', 'Installation Drawing', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('989', '20.01.09.98', NULL, '98', '紧固件', 'Fastener', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('98C952BF14A848F5A2E', '30.01.01.08', '', '08', '后悬支架总成-板簧', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('99', '10.03.01.01.17', NULL, '17', '通气阀总成', 'Air vent valve assembly', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('990', '20.01.10', NULL, '10', '车身车轮挡泥板', 'Body/wheel mudguard', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('991', '20.01.10.01', NULL, '01', '发动机上挡泥板', 'Upper fender of engine', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('992', '20.01.10.01.01', NULL, '01', '挡泥板', 'Left upper mudguard for engine', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('993', '20.01.10.02', NULL, '02', '前轮挡泥板', 'Front wheel mudguard', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('994', '20.01.10.02.01', NULL, '01', '挡泥板', 'F. wheel front mudguard', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('995', '20.01.10.03', NULL, '03', '支架', 'Bracket', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('996', '20.01.10.04', NULL, '04', '车轮挡泥板', 'mudguard', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('996018818A8E4C96B25', '10.03.01.29.02', '', '02', '回油滤清器壳体座', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('997', '20.01.10.04.01', NULL, '01', '挡泥板', 'R. mudguard', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('998', '20.01.10.04.02', NULL, '02', '挡泥皮', 'Mudflap', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('999', '20.01.10.04.03', NULL, '03', '挡泥皮压板', 'Mudflap pressure plate', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('99D7D077279444C0878', '30.01.01.01.14', '', '14', '纵梁后段总成-右', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9B567D4CA8B54AD9A36', '30.07.01.14.03', '', '03', '油泵总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9B86515AE88A42F2806', '20.02.09.09', '', '09', '堵盖(Φ22)', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9CD0D35BFBED471D93F', '30.05.05.22', '', '22', '储气筒', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9CFEE733F39D421ABAB', '60.06.01.01.14.13.04', '', '04', '电芯连接排-23S输出正', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9DE789FF031048B28CB', '20.02.03.10', '', '10', 'B柱扶手', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('9E3683D08D0741E2A36', '20.04.02.01.41', '', '41', '左后门拉手盒支架', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9F21E968F50E41A7B6E', '30.01.01.07', '', '07', '货箱悬置总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('9FF6D7D0DFAB4ACCB5E', '40.05.04.09', '', '09', '膝部气囊总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('A0D5E064CFF44B17B8E', '50.01.01.10', '', '10', '踏步总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('A11026EDE8E84CAE965', '10.03.01.33.02', '', '02', '柱塞泵', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A259FB48A7874D0DB28', '20.03.04.01.01', '', '01', '前排左侧安全带总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A26B8BF4426F4CB0AC7', '60.06.01.11.08', '', '08', '胶水-下壳', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A35938F935E04AF4B3A', '30.05.05.20', '', '20', '后桥模块', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A3962BF1C25648F6A07', '60.06.01.03.01.01', '', '01', 'BMU上壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A41822E813814668A13', '20.04.04.01.01.16', '', '16', '前舱盖其它附件', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A496D94910884275980', '20.03.03.06.18', '', '18', '后排座椅靠背发泡面套总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A54F7F2600F148E0B7C', '20.04.04', '', '04', '前舱盖装置', '', '1', NULL, '3', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A6F114F5A27147458CF', '10.09.02.02', '', '02', '后转向桥总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('A88E3FE652F54297812', '20.04.03.01.04', '', '04', '充电口锁开启扣手', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('AA0FA312930E40A4A7D', '20.04.01.01.04', '', '04', '左前车门下挡水条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('AB033C1CB60F464580E', '60.06.01.05.02', '', '02', '电池支架纵梁', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('AB28155F4AEA4D3C92B', '30.04.01.30', '', '30', '后桥转向油缸', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('AB335C632629412A918', '20.04.02.01.38', '', '38', '左后车门防撞梁', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('ACDEDCAE4D8B43D5A42', '40.03.04.04', '', '04', '雷达蜂鸣器总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('ADA3F3F7F1B145C09F8', '20.03.03.02.23', '', '23', '中间靠背发泡面套总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B11347A46EBF4BDD9AE', '30.02.02.62', '', '62', '后缓冲块组件', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B1BF83D47F3342F9875', '60.06.01.03.02.02', '', '02', 'CMU48SA下壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B4A82CED6F1F4C848C7', '20.04.02.01.40', '', '40', '左后门拉手盒支架总成', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('B4D8C39213F44F1C8C4', '60.06.01.01.14.07', '', '07', '模组上盖', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B6E2E526664641A78F6', '20.04.03.01.01.04', '', '04', '充电口扭簧', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B7AB03126C06446D8EC', '30.02.01.35.01', '', '01', '元宝梁二级件-前', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B8D28D1E6321481F930', '30.07.01.14.98', '', '98', '紧固件', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B9A3376790A84820915', '20.03.02.10', '', '10', '卧铺储物箱', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B9B31C3AE9AE4990ABA', '30.07.01.14.04', '', '04', '管束总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('B9B85CAB0BAB46F98E1', '60.06.01.01.14.09.02', '', '02', '模组泡棉-FPC', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('BAD6B97158864187B5C', '60.06.01.01.07.06', '', '06', '高压负接插件', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('BAE996123A384F68839', '20.04.04.01.01.01.02.01', '', '01', '前舱盖内板', '', '1', NULL, '8', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('BB7AF99C04FC43D695A', '30.04.01.29', '', '29', '后桥转向动力单元', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('BBD0380EED0A4C62BC7', '60.06.01.03.03.03', '', '03', 'CMU60SA PCB', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('BE1B669D5C8848BDA2B', '20.04.03.01', '', '01', '充电口安装总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('BF9A6C7CE3EF4EAF8FA', '20.04.04.01.01.01.02', '', '02', '前舱盖内板焊接总成', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('BFE3A15728CE4D62958', '60.06.01.01.14.10', '', '10', '模组扎带', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('C1D34C3963D54A7F820', '20.01.02.10', '', '10', '货箱照明灯总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('C289AC961EAA4E9DA24', '20.03.03.01.17', '', '17', '靠背发泡面套总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('C46BCEE947424300900', '20.04.03.01.01.02', '', '02', '充电口内板', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('C4EB50C57AB247229A2', '10.03.01.26.07', '', '07', '液压油箱加高法兰总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('C514AFE136A24368894', '60.06.01.01.07.05', '', '05', '高压正接插件', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('C679CAA259844D17A8A', '60.06.01.03.04.03', '', '03', 'CMU48SB PCB', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('C692A9DDFBAB4893910', '20.04.02.01.36', '', '36', '左后玻璃后导轨', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('C6F665D239AC4A7E9F2', '50.01.01.01.11', '', '11', '衬套', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('C9E98002F27247D3A1C', '60.06.01.01.14.03', '', '03', '模组FPC', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('CA3C6D6B1B26429BA30', '20.04.06.01.49', '', '49', '右滑门后上加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('CB35FB0C22244EB68D5', '30.01.01.04', '', '04', '纵梁中段总成-左', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('CBD66BEBCD8A4EA893B', '20.04.06.01.50', '', '50', '右滑门中滑轮安装加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('CD26C925137248B689E', '60.06.01.01.04.01', '', '01', '熔断器', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('CD2963785F9C4308A75', '30.04.01.27', '', '27', '第二桥拉杆总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('CD56939E809640B7A1D', '20.04.02.01.42', '', '42', '右后门拉手盒支架总成', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('CF86B8B1B31B40B3A2F', '20.04.04.01.01.13', '', '13', '前舱盖气弹簧总成', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D15E03AF2BD648DD956', '60.06.01.01.14.05', '', '05', '模组输出保护盖', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D1914322E7554568AD6', '20.04.04.01.01', '', '01', '前舱盖调整总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D1B19C2208914C1EB67', '60.06.01.03.02.03', '', '03', 'CMU48SA PCB', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D1E691105F0A471699A', '20.02.03.11', '', '11', 'B柱下护板', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D41158B8E5BA44C0BDD', '20.01.01.11', '', '11', '前位置灯总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('D4B13CCB7C2D4AAAA99', '60.06.01.01.14.12.02', '', '02', '模组加热膜-23S', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D515DD0172354BF2902', '20.03.03.02.17', '', '17', '副驾驶员座椅骨架', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D5A7375BC7794287ADF', '60.06.01.01.14.08.01', '', '01', '模组绝缘材料-端板电芯间', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D5C43CDD82F440C6B8C', '10.03.01.26.05', '', '05', '过滤网', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D75135AF9E5F4E92BD2', '10.04.01.29', '', '29', '空滤器堵塞报警器总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('D9F5B7067970472E8BC', '60.06.01.01.14.13.03', '', '03', '电芯连接排-24S输出负', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DA3010244403477DA50', '20.03.05.01.05', '', '05', '独立热源类分装总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DA54D51B2F344ED59EE', '60.06.01.03.03.02', '', '02', 'CMU60SA下壳', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DAAA58C50B564B97B73', '60.06.01.01.04.02', '', '02', '熔断器底座', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DB10184FD33147439B4', '10.03.01.26.02', '', '02', '端盖', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DD6D7AF29B104D958CA', '20.04.06.01.48', '', '48', '右滑门后中加强板', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('DE88D112FF9E4785BB7', '30.04.01.26', '', '26', '第一桥拉杆总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DE9F1FBE95F64E069BB', '20.02.09.08', '', '08', '侧围胶片', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DEDFCBA6139640238F8', '20.04.01.01.10', '', '10', '左前门三角窗内装饰条', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('DF7DF22778A6482AA40', '60.06.01.01.14.10.01', '', '01', '模组扎带-24S', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DF97B62D309448F7932', '60.06.01.01.14.03.03', '', '03', '模组FPC-23S-左', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('DF9BD40C821E4669974', '10.03.01.31.01', '', '01', '液压油箱托架', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E0B157DC0FEF4281AFB', '60.06.01.01.14.11.01', '', '01', '模组压条-24S', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E0BF45B9B1D74016BE5', '20.04.03.01.05', '', '05', '充电口缓冲块', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E0D79D7EE15E4A11858', '20.02.09.07', '', '07', '侧围堵盖', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E1F975A8D3D847CDA82', '60.06.01.01.14.13.05', '', '05', '电芯连接排-23S输出负', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E29AA9D368B349F3A27', '20.04.04.01.01.03', '', '03', '前舱盖右侧铰链总成', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E2B643F8FD154E5299C', '40.05.02.04', '', '04', '软件', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E39995FC312F4240847', '60.06.01.01.14.06', '', '06', '模组输出保护座', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E3A07B754032433EB90', '10.05.02.28', '', '28', '防护板', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('E40990726177476A89E', '20.04.04.01.01.01', '', '01', '前舱盖焊接总成', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E485012BE55245AD9A5', '60.06.01.01.07.07', '', '07', 'MSD底座', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E51E71E2524642AB843', '60.06.01.05.12', '', '12', '骑马螺栓垫板', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E53A6014301B47198F9', '60.06.01.11.10', '', '10', '胶水-温感', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E59464D340EF44D49C7', '10.03.01.28', '', '28', '空气滤清器总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('E95C41F06DBD4A7F903', '20.02.09.11', '', '11', '2型胶堵', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('EA701F5E8A204967955', '20.04.01.01.01.29', '', '29', '左前车门玻璃后导轨支架总成', '', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('EA81A417ACDB4BBA89F', '20.01.02.12', '', '12', '后转向灯总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('EB2B7D9EC1434F96AF9', '30.02.01.33', '', '33', '前桥总成', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('EBE32DBA145D4D4DA53', '30.04.01.32', '', '32', '动力单元支架', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('EC799EFE17FA48D5BE3', '10.03.01.29.01', '', '01', '回油滤清器上盖', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('ECCED1D4E1FB41878B1', '20.03.03.02.24', '', '24', '座垫总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('ED1BD35D0317496B914', '20.03.02.10.01', '', '01', '卧铺储物箱总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('EE4D2D617181455EA27', '10.03.01.40', '', '40', '联接器', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('EEAF2D93A2934EB8BA5', '20.04.04.01.01.12', '', '12', '前舱盖隔音隔热垫', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('EF9D1F48293844BDB75', '10.03.01.30.01', '', '01', '液压阀', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F2447687989C412099D', '60.06.01.01.07.03', '', '03', '加热接插件', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F3A05CB1B1E24C74BEE', '30.01.01.01.02.18', '', '18', '前悬稳定杆支架-右', '', '1', NULL, '6', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('F3A892900553497EA66', '10.03.01.29.04', '', '04', '回油滤清器滤芯', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F4AB53A3F32546F0A52', '20.04.04.01.01.01.02.04.01', '', '01', '前舱盖右铰链加强板', '', '1', NULL, '9', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F4DF22920FD84873956', '10.03.01.26.08', '', '08', '液压油回油滤清器安装法兰', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F5237E2053B147FEA23', '20.04.04.01.01.11', '', '11', '前舱盖锁总成', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F57D735558F54918849', '20.08.04.04', '', '04', '车门标', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F67C5E50E71F41D998D', '10.08.03.01.12', '', '12', '电控锁ECU', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('F6A32DFBA54F4285965', '60.06.01.01.09.01', '', '01', 'A箱连接排-模组到输出正', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F6FBDBE9C772497A8A4', '60.06.01.01.03.05', '', '05', '低压线束支架', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F73195D38C414534A22', '20.03.03.01.19', '', '19', '驾驶员座椅骨架', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F76FA8FC0A9B4EF2AB9', '20.04.04.01.01.04', '', '04', '前舱盖缓冲块', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F79011E8A92F487084F', '20.03.03.06.17', '', '17', '后排座椅坐垫发泡面套总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F7BA78B8551646D08BC', '60.06.01.01.14.09', '', '09', '模组泡棉', '', '1', NULL, '6', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F894FED5069340F28C7', '20.02.09.03', '', '03', '大灯胶堵', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F8ED8F000F9444A58C9', '30.07.01.14.01', '', '01', '集中润滑系统总成', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F93E038D158642F7A4D', '60.06.01.01.14.09.03', '', '03', '模组泡棉-端板电芯间', '', '1', NULL, '7', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('F979965FD5E14E08B0B', '20.04.04.01', '', '01', '前舱盖安装总成', '', '1', NULL, '4', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('FA17F7654C5547929C7', '20.02.08.97', '', '97', '安装图', '', '1', NULL, '4', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('FAED3C3D22A6469CB94', '10.03.01.29.03', '', '03', '回油滤清器壳体', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('FAF26876E8474B48835', '30.02.01.33.01', '', '01', '前横梁总成', '', '1', NULL, '5', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('FB2A217AF5654B7EBC7', '20.04.03.01.03', '', '03', '充电口锁开启拉索', '', '1', NULL, '5', 'truck'); +INSERT INTO `sar_vpps_tree` VALUES ('FD9350EA83684DD6828', '20.05.01.01.01.06.11', '', '11', '顶盖右后加强板', '', '1', NULL, '7', 'car'); +INSERT INTO `sar_vpps_tree` VALUES ('FF5F9275023C423EA86', '20.02.09.01', '', '01', '空调管路过孔胶塞', '', '1', NULL, '4', 'truck'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/doc/sql/news_feed_动态消息表更新表结构.sql b/doc/sql/news_feed_动态消息表更新表结构.sql new file mode 100644 index 00000000..1741f4d0 --- /dev/null +++ b/doc/sql/news_feed_动态消息表更新表结构.sql @@ -0,0 +1,33 @@ +/* +Navicat MySQL Data Transfer + +Source Server : 123.56.177.15_new_测试 +Source Server Version : 50736 +Source Host : 123.56.177.15:3306 +Source Database : foton_slrs_test2 + +Target Server Type : MYSQL +Target Server Version : 50736 +File Encoding : 65001 + +Date: 2022-06-02 12:17:37 +*/ + +SET FOREIGN_KEY_CHECKS=0; + +-- ---------------------------- +-- Table structure for news_feed +-- ---------------------------- +DROP TABLE IF EXISTS `news_feed`; +CREATE TABLE `news_feed` ( + `ID` varchar(50) CHARACTER SET utf8mb4 NOT NULL COMMENT 'ID', + `RESOURCE_TYPE` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '资源类型', + `MESSAGE_TYPE` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '消息类型', + `STANDARD_ID` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '标准类型', + `STANDARD` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '标准号', + `STANDARD_NAME` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '标准名称', + `RELEASE_DATE` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '发布日期', + `TEXT_STATE` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '文本状态', + `RENEW_TIME` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='动态消息表'; diff --git a/doc/sql/tb_task.sql b/doc/sql/tb_task.sql new file mode 100644 index 00000000..6ceec9d7 --- /dev/null +++ b/doc/sql/tb_task.sql @@ -0,0 +1,24 @@ +-- 定时器动态执行任务表 +-- ---------------------------- +-- Table structure for tb_task +-- ---------------------------- +CREATE TABLE `tb_task` ( + `id` varchar(255) NOT NULL COMMENT '定时任务id', + `task_name` varchar(255) DEFAULT NULL COMMENT '定时任务名称', + `task_desc` varchar(255) DEFAULT NULL COMMENT '定时任务描述', + `task_exp` varchar(255) DEFAULT NULL COMMENT '定时任务Cron表达式', + `task_status` int(1) DEFAULT NULL COMMENT '定时任务状态,0停用 1启用', + `task_class` varchar(255) DEFAULT NULL COMMENT '定时任务的Runnable任务类完整路径', + `update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='动态定时任务表'; + +-- ---------------------------- +-- Records of tb_task +-- ---------------------------- +INSERT INTO `tb_task` VALUES ('1', 'task1', '重置ES7天内标准数据', '0 1 0 * * ?', '0', 'com.adc.da.search.sync.restSearchSync', '2022-05-27 05:21:55', '2022-05-27 10:51:34'); +INSERT INTO `tb_task` VALUES ('2', 'task2', '企标标准文本状态被代替逻辑 自动变更作废状态', '0 1 0 * * ?', '1', 'com.adc.da.scheduledState.server.UpdateStateBussSyncFz', '2022-05-27 07:02:27', '2022-05-27 10:51:34'); +INSERT INTO `tb_task` VALUES ('3', 'task3', '企标标准文本状态 即将实施和现行有效状态自动变更逻辑', '0 1 0 * * ?', '0', 'com.adc.da.scheduledState.server.UpdateStateBussSyncSsAndYx', '2022-05-27 05:21:55', '2022-05-27 10:51:34'); +INSERT INTO `tb_task` VALUES ('4', 'task4', '国内标准文本状态被代替逻辑 标准自动变更废止', '0 1 0 * * ?', '0', 'com.adc.da.scheduledState.server.UpdateStateStandSyncFz', '2022-05-27 05:21:55', '2022-05-27 10:51:34'); +INSERT INTO `tb_task` VALUES ('5', 'task5', '国内标准文本状态 即将实施和现行有效状态自动变更逻辑', '0 1 0 * * ?', '0', 'com.adc.da.scheduledState.server.UpdateStateStandSyncSsAndYx', '2022-05-27 05:21:55', '2022-05-27 10:51:34'); diff --git a/doc/sql/企业标准关联表更新.sql b/doc/sql/企业标准关联表更新.sql new file mode 100644 index 00000000..877f856b --- /dev/null +++ b/doc/sql/企业标准关联表更新.sql @@ -0,0 +1,3 @@ +ALTER TABLE sar_buss_stand_val MODIFY COLUMN stand_id varchar(64) + +ALTER TABLE `sar_buss_stand_attr_info` MODIFY COLUMN `BARQ` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL AFTER `CYBZ`; \ No newline at end of file diff --git a/doc/sql/数据库改动.sql b/doc/sql/数据库改动.sql new file mode 100644 index 00000000..b214ee22 --- /dev/null +++ b/doc/sql/数据库改动.sql @@ -0,0 +1,15 @@ +4.13------------------ +INSERT INTO `foton_slrs_test2`.`sar_menu`(`ID`, `SOR_DIVIDE`, `MENU_NAME`, `PARENT_ID`, `PARENT_IDS`, `LEVEL`, `DISPLAY_SEQ`, `HREF`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `REMARKS`) VALUES ('asdzcfgk', NULL, '政策法规库', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL); + +5-7 -----新增文本状态 +INSERT INTO `foton_slrs`.`ts_dictype`(`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('gycree7258tly7fhrs1n', 'd1c9oygu5yvrtj8qt6w2', '发布', 'hc99551723c', '', 10, NULL, NULL, NULL, 'WY8J26MH23', '0', '2022-05-7 08:08:48', '2022-05-7 08:08:48'); + +5.12------------------- 新增企标文本状态 发布、即将实施 +INSERT INTO `foton_slrs`.`ts_dictype` (`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('yxje11vu7hngvakm6xor', 'qybmpmpvykzpwy511xai', '发布', '6jnqba2mby', '', '7', NULL, NULL, NULL, 'chenchunmei', '0', '2022-05-12 01:45:21', '2022-05-12 01:45:21'); +INSERT INTO `foton_slrs`.`ts_dictype` (`ID`, `DIC_ID`, `DIC_TYPE_NAME`, `DIC_TYPE_CODE`, `DESCRIBES`, `SHOW_INDEX`, `PARENT_ID`, `TREE_PID`, `OTHERS`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`) VALUES ('n4wyayhkmbhc58wi21rs', 'qybmpmpvykzpwy511xai', '即将实施', 'rpvoxsvr60', '', '8', NULL, NULL, NULL, 'chenchunmei', '0', '2022-05-12 01:45:56', '2022-05-12 01:45:56'); + + + +2022.07.19 ---- 模块结构单元变型号(乘用车) 模块结构单元名称(乘用车) +INSERT INTO `foton_slrs`.`sar_stand_attr_details` (`ID`, `ATTR_FIELD`, `ATTR_NAME`, `ATTR_TYPE`, `ATTR_LEN`, `ORDER_NUM`, `IS_EDIT`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `IS_MUST`, `IS_SHOW_IMP`, `SHOW_REGION_ID`, `SEL_VAL`, `SAR_TYPE`, `IS_SEARCH`, `IS_WARN`, `IS_JANSUO`) VALUES ('gkwa6r4bfyjush9zbdyb1', 'CYCDYBXHBUSS', '模块结构单元变型号(乘用车)', 'INPUT_STR', '200', '18', '0', 'chenchunmei', '0', '2021-12-15 16:00:00', '2022-07-19 09:46:13', '1', '0', '2YVQYFS332W5XWAAY25F', '', 'BUSS', '1', '1', NULL); +INSERT INTO `foton_slrs`.`sar_stand_attr_details` (`ID`, `ATTR_FIELD`, `ATTR_NAME`, `ATTR_TYPE`, `ATTR_LEN`, `ORDER_NUM`, `IS_EDIT`, `CREATION_USER`, `VALID_FLAG`, `CREATION_TIME`, `MODIFY_TIME`, `IS_MUST`, `IS_SHOW_IMP`, `SHOW_REGION_ID`, `SEL_VAL`, `SAR_TYPE`, `IS_SEARCH`, `IS_WARN`, `IS_JANSUO`) VALUES ('gkwa6r4bfyjush9zbdyb2', 'CYCDYMCBUSS', '模块结构单元名称(乘用车)', 'INPUT_STR', '200', '19', '0', 'chenchunmei', '0', '2021-12-15 16:00:00', '2022-07-19 09:46:13', '1', '0', '2YVQYFS332W5XWAAY25F', '', 'BUSS', '1', '1', NULL); diff --git a/doc/sql/模块单元数据-220123版本.sql b/doc/sql/模块单元数据-220123版本.sql new file mode 100644 index 00000000..6f101c69 --- /dev/null +++ b/doc/sql/模块单元数据-220123版本.sql @@ -0,0 +1,1542 @@ +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('000177f8aaaf4ebc9d0', '后风挡玻璃', '风挡玻璃', '后风挡玻璃', 'VPP', '1', NULL, '1', 'TRUCK', '46751977e5244023a3a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('001b3c0c68c94c4cb76', '挂车及上装线束', '底盘线束', '挂车及上装线束', 'VPP;VPA', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('001c7602ddc74c0d9b6', '双工况开关', '仪表台小开关1', '双工况开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('00313b90a28742e8a76', '高压油管总成及支架', '转向管路', '高压油管总成及支架', 'VPP;VFD;VPA;CZT;CZP;PEF', '1', NULL, '1', 'TRUCK', '8284e34665ad415a974', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('00946b6eab4147e39b2', '发动机燃料', '燃油系统', '发动机燃料', '', '1', NULL, '1', 'CAR', '4a5710964c7a489788e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('00de3aefa0834e9b9da', '尿素供储装置', '后处理系统', '尿素供储装置', '', '1', NULL, '1', 'CAR', '91fc6dda38a94326988', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('00dfdd6460a540f89d4', '变速器冷却装置', '变速模块团队', '变速器冷却装置', '', '1', NULL, '1', 'CAR', '9e1af5d72d5b449ca29', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('010ad996c8d048c6952', '驾驶室开关', '电控模块团队', '驾驶室开关', '', '1', NULL, '1', 'CAR', '2ae611e7d78e4d35b99', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0113ada8b7df42738f4', '油门踏板', '油门踏板', '油门踏板', 'VPP;VFD;PES;PTA;', '1', NULL, '1', 'CAR', '2170d941e2784fc59dc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('014ab846fd3e41479c8', '加油口附件', '车门附件', '加油口附件', '', '1', NULL, '1', 'CAR', '8fcbbab3923e4c8ca11', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0159b7390d2547d9b2b', '分动器', '分动器及安装件', '分动器', 'PTA;PTD;PTB;PTC;PTT;', '1', NULL, '1', 'CAR', '819a4fb585fd4755b38', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('01af52e1bb6240c7ab2', '挂车阀', '底盘控制系统', '挂车阀', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('020a55e4188f42bbaac', '冷凝器总成', '冷气装置', '冷凝器总成', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '165c97fe0d484ec3845', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('022539a12ebb4370af4', '变速操纵机构安装图', '变速操纵机构安装图', '变速操纵机构安装图', 'VPP;VFD;PTC', '1', NULL, '1', 'CAR', 'b13b0ae7bc894a56b0d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0237c132c12e4a4cae4', '变速器', '变速模块团队', '变速器', '', '1', NULL, '1', 'CAR', '9e1af5d72d5b449ca29', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0259efb6318f44ae8d4', '彩条', '外包装', '彩条', '', '1', NULL, '1', 'CAR', '93ed477b415547748f5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('02674cf63e63467589e', 'HUD系统', '信息娱乐显示模块', 'HUD系统', '', '1', NULL, '1', 'CAR', '0913953554a6445fbab', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0269afe6a2de4ad696c', '排气制动阀气管', '辅助用气管', '排气制动阀气管', 'VPP;MAA;VFW', '1', NULL, '1', 'TRUCK', '9cde6e5e71784ab6adf', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0276acad36bf4082ab4', '车身前悬', '车身悬置', '车身前悬', '', '1', NULL, '1', 'TRUCK', '299058b2f9cb4d1ab03', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('02b0d14ee2ae4485b62', '驻车制动操纵机构', '驻车制动操纵机构', '驻车制动操纵机构', 'VPP;VPA;MBK', '1', NULL, '1', 'TRUCK', '5a6da5ceb7fc4ae6b4e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('02c9ab34f62d4be58f6', '悬架模块团队', '底盘系统', 'MTC3 悬架模块团队', '', '1', NULL, '1', 'CAR', '96179a631abf41ee90c', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('02e43f7c6f81446eb34', '加注除气装置', '副水箱', '加注除气装置', 'BBF', '1', NULL, '1', 'TRUCK', '0957f7c6fb184e9597d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('02e9d53a008f41a0839', 'ESC模块传感器', '底盘控制系统', 'ESC模块传感器', '', '1', NULL, '1', 'CAR', '61afcfeb75be4df2a84', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('02f46d3aa7ef41eb890', '倒车影像', 'ADAS模块', '倒车影像', 'VPT;VPP;MWV', '1', NULL, '1', 'TRUCK', 'bf94e2d3b8c0458fa4d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('02fb2f04f8f74a5490b', '转向器及附件装置图', '转向器及附件装置图', '转向器及附件装置图', '', '1', NULL, '1', 'CAR', 'f6a6e166114d42728e3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0310bbbfe4984c74906', '驻车及辅助储气筒', '储气筒及附件', '驻车及辅助储气筒', 'VPP;VPA;MAA;MAE;MBA', '1', NULL, '1', 'TRUCK', 'a869c1271fd84651b96', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('03648c155c5b42858d3', '转向动力源', '转向动力装置', '转向动力源', '', '1', NULL, '1', 'TRUCK', '132a74498ec34b99bd1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('037e459f90254b42879', '电磁阀', '阀和传感器', '电磁阀', '', '1', NULL, '1', 'CAR', '5b57ff60f1734d8f957', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0389181e247944cfaf7', '标牌及标识', '车架模块团队', '标牌及标识', '', '1', NULL, '1', 'TRUCK', '983a32bc04154356aba', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('039dea45df694fafb6b', '燃油箱及附件', '燃油系统', '燃油箱及附件', '', '1', NULL, '1', 'TRUCK', 'c43830c7eda24f03a6e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('03a5920176ce4eb4970', '白车身总成', '白车身模块团队', '白车身总成', '', '1', NULL, '1', 'CAR', 'e62950fdbf664a2e8ac', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('03bce670df384912b68', '白车身模块团队', '车身系统', 'MTB1 白车身模块团队', '', '1', NULL, '1', 'TRUCK', 'd68f61afae4d4b51bf9', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('03da2eb22d2442bd9d9', '摆臂', '前悬架导向机构', '摆臂', '', '1', NULL, '1', 'CAR', '231ea4c032694a8092e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('03fe48a91dbe4604bf3', '环境温度传感器', '环境温度传感器', '环境温度传感器', 'PEE;VFT;VFE', '1', NULL, '1', 'TRUCK', '0b13e751b7694271bb7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0414affc73c04833a4e', '辅控多合一总成', '高压辅控模块', '辅控多合一总成', '', '1', NULL, '1', 'CAR', '467e3c1376804153888', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('04397513a66f47b2a19', '拉手总成', '车身悬置及翻转锁止机构', '拉手总成', '', '1', NULL, '1', 'TRUCK', '54ca4ce84d1d4773b6b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('043e85bea30a454ebd5', 'PTC加热器', '暖气装置', 'PTC加热器', '', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('04aa42823b1c47a5824', '高压线束', '高压线束总成', '高压线束', '', '1', NULL, '1', 'CAR', '95c67db9846e49db839', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('04e524241a6e4ce78a8', '扬声器', '音响装置', '扬声器', '', '1', NULL, '1', 'CAR', 'a6e58f1372404e4abe5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0510942ad77b47b580e', '工具箱', '侧围外饰附件', '工具箱', 'VPT;VPP;VPA;BBF;BBR;BBL;BOK;GMR', '1', NULL, '1', 'TRUCK', '23985514affb49d5aa5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('054a18a1851b4680b9c', '中冷管路装置', '中冷系统', '中冷管路装置', 'VPP;VPA;PEF;BBL;VFF', '1', NULL, '1', 'CAR', 'eb83696300164138a99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('056409d0b8ea416f86c', '中冷器装置', '进气', '中冷器装置', '', '1', NULL, '1', 'TRUCK', '989c37142c78401c824', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('056955ac6f87460abd3', '电子电控系统', '根节点', '电子电控系统', '', '1', NULL, '1', 'CAR', '10000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('056b4be0cdc340db9bd', '储油杯', '伺服系统', '储油杯', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('05a6825dfad146d294b', '标志灯总成', '外部照明', '标志灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('064c18ba6e94424a834', '传感器模块', '传感器模块', '传感器模块', '', '1', NULL, '1', 'TRUCK', 'd246dc99237b488da63', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('06777a62dc2e44ae87b', '天线模块', '信息娱乐显示模块', '天线模块', '', '1', NULL, '1', 'TRUCK', '9b2e4a83cbf448c9af9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('06ae0ebcd014483ebf1', '随车工具', '车架模块团队', '随车工具', '', '1', NULL, '1', 'CAR', '8fe4a83b845e48a89ab', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('06b699553be6464685e', '顶外饰附件', '顶盖外饰', '顶外饰附件', '', '1', NULL, '1', 'TRUCK', 'cf14dce1e2ef4832bfd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('06d01b0539dc4a4eb48', 'NG气瓶总成', 'NG气瓶总成及连接支架', 'NG气瓶总成', '', '1', NULL, '1', 'TRUCK', 'b7ef4703e38247fcaef', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('06e6b7e6ebaa45d1b02', '后暖风控制器', '暖气装置', '后暖风控制器', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('06ed902667044f0695a', '底盘控制系统', '制动模块团队', '底盘控制系统', '', '1', NULL, '1', 'TRUCK', '39f42fade11a450abdf', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0721a29cf0a3487eae0', '顶置天线', '天线模块', '顶置天线', '', '1', NULL, '1', 'CAR', 'e548cfcad2e04accb51', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('072ec567a43c4009a30', '泊车辅助', 'ADAS模块', '泊车辅助', '', '1', NULL, '1', 'TRUCK', 'bf94e2d3b8c0458fa4d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('074e10e810f3464cafc', '底盘管束', '制动模块团队', '底盘管束', '', '1', NULL, '1', 'TRUCK', '39f42fade11a450abdf', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('07690486230846fc9da', '前桥总成', '前桥总成', '前桥总成', '', '1', NULL, '1', 'TRUCK', '9d3953e57c9647849f1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('077260d889a941bd96d', '电源转换模块', '电器标准部件', '电源转换模块', '', '1', NULL, '1', 'TRUCK', '9c8d99bbe2c8467c9ff', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('07c8195e81d54ae7aec', '内饰系统模块团队', '车身系统', 'MTB4 内饰系统模块团队', '', '1', NULL, '1', 'TRUCK', 'd68f61afae4d4b51bf9', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('07e127eb6da14ae1ae3', '行程开关', '行程开关', '行程开关', 'VPP', '1', NULL, '1', 'CAR', '29fd5fceb39d4e0abc2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('07eb0b2243624610bf7', '发动机远程PTO数据', '发动机标定数据', '发动机远程PTO数据', 'PEF;MAO', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('07ecb5c89ab249cc947', '智能座舱及车联网模块团队', '电子电控系统', 'MTE1 智能座舱及车联网模块团队', '', '1', NULL, '1', 'CAR', '056955ac6f87460abd3', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('07fb25cec82b4c5fab4', '后雾灯开关', '仪表台小开关1', '后雾灯开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('085eafe6137947ac8a7', '空滤器出气管路装置', '空滤系统', '空滤器出气管路装置', 'VPP;CAA;VPA;PEF;BBL', '1', NULL, '1', 'CAR', '844e4f4c4ea6430d9a7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0872b8d750e9426080a', '发动机模块团队', '动传系统', 'MTT1 发动机模块团队', '', '1', NULL, '1', 'CAR', '6a020b61a2d145c1ad2', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('087ed51289b748bebb8', '车身电器盒总成', '电器盒总成', '车身电器盒总成', 'VPP', '1', NULL, '1', 'TRUCK', '2f72cda2b85a4a9eaa1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0894b2d4022b48c1998', '撑杆总成', '车身悬置及翻转锁止机构', '撑杆总成', '', '1', NULL, '1', 'TRUCK', '54ca4ce84d1d4773b6b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('089e327e045048cb8ab', '离合器', '离合器', '离合器', 'PEP;PTT;PTB;PTA;PES', '1', NULL, '1', 'TRUCK', '198b2cb84dcd45f5a23', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('090c0e6dd0b04edd8c5', '后悬架安装图', '后悬架安装图', '后悬架安装图', 'VPP;VPA;VPW;VPR;VFG;VFW;CSR', '1', NULL, '1', 'TRUCK', '53300ea0e68140e1973', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0913953554a6445fbab', '信息娱乐显示模块', '智能座舱及车联网模块团队', '信息娱乐显示模块', '', '1', NULL, '1', 'CAR', '07ecb5c89ab249cc947', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('093d46bef8ac43239b8', '继电器', '继电器', '继电器', '', '1', NULL, '1', 'CAR', 'b36f5fd8e82146618af', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0955e0d9f5624633b75', '挡泥板管梁总成', '挡泥板防护罩总成', '挡泥板管梁总成', 'VPW;CCM;VPR', '1', NULL, '1', 'TRUCK', '5011e0d9dcba4289909', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0957f7c6fb184e9597d', '副水箱', '冷却系统', '副水箱', '', '1', NULL, '1', 'TRUCK', '56551d656f954829ad1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0960f600e1ae4877aee', '独立热源单元', '独立热源装置', '独立热源单元', 'VPT;VPP;MIH;BBF', '1', NULL, '1', 'TRUCK', '85ed436787944e7f885', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('09836dc6783740da8ca', '标牌及标识', '车架模块团队', '标牌及标识', '', '1', NULL, '1', 'CAR', '8fe4a83b845e48a89ab', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0989760269454768b92', '真空管路单元', '伺服系统模块', '真空管路单元', '', '1', NULL, '1', 'CAR', '9a45e856bc2d4cdda72', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('09993cd0a23045f0ab5', '超声波雷达', '雷达模块', '超声波雷达', '', '1', NULL, '1', 'CAR', '26ea0c409b2e4c04b41', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('099dfdb210c845c7977', '电力电子单元总成', '电驱动控制总成', '电力电子单元总成', '', '1', NULL, '1', 'TRUCK', 'b72aa0987dc24badad0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('09c0dc1cc7534fbf94d', 'LKA开关', '仪表台开关', 'LKA开关', 'MAK', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0a4312eb00d64d468f5', '前雾灯总成', '外部照明', '前雾灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0a46672794cf46de866', '软轴', '变速器操纵机构', '软轴', 'VPP;VFD;PTB;PTC', '1', NULL, '1', 'CAR', '954c378761894541a59', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0a628a2fc4b5476db32', '车身翻转系统', '悬置模块团队', '车身翻转系统', '', '1', NULL, '1', 'TRUCK', '5bad2bad520a46ea9b7', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0ac9286c1951409a941', '气喇叭气管', '辅助用气管', '气喇叭气管', 'VFW;MAA;MAE', '1', NULL, '1', 'TRUCK', '9cde6e5e71784ab6adf', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0b13e751b7694271bb7', '环境温度传感器', '后处理系统', '环境温度传感器', '', '1', NULL, '1', 'TRUCK', '933cbb6576cc4fc887d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0b3c0e87c9244a0ca0a', '自动变速器基础数据', '自动变速器基础数据', '自动变速器基础数据', 'VPP;VPA;VFG;PTT;PEE;PES;PTR;PEP;PEF;PRR', '1', NULL, '1', 'TRUCK', '168954b3a8954b59ae6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0b9d27af336b430ebbc', '指示灯开关', '仪表台小开关1', '指示灯开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0ba026439ae041368be', '前桥总成附件', '前桥总成附件', '前桥总成附件', '', '1', NULL, '1', 'TRUCK', '92221d557a014107aee', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0be4442753a44d819da', '撑杆总成', '撑杆总成', '撑杆总成', '', '1', NULL, '1', 'TRUCK', '0894b2d4022b48c1998', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0be58fea63b14a7a93f', '窗帘及导轨', '内饰附件', '窗帘及导轨', '', '1', NULL, '1', 'TRUCK', 'ee2dca6104f54db0b58', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0be7b780188e4b6ab7c', '地毯装饰件', '顶盖地板附件', '地毯装饰件', '', '1', NULL, '1', 'CAR', '233a3f1dc1fb4fde91e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0be96667e0d84cd590e', '电机控制器总成', '电驱动控制总成', '电机控制器总成', '', '1', NULL, '1', 'CAR', '9676f570affe4600a7d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0beb849301bb45da900', '驾驶室管束', '底盘管束', '驾驶室管束', '', '1', NULL, '1', 'TRUCK', '074e10e810f3464cafc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0c14d7ae660e44f6898', '转向管柱带可调机构', '转向管柱带可调机构', '转向管柱带可调机构', 'VPP;CZA;PFP', '1', NULL, '1', 'TRUCK', 'f0ad14ff788e4945bb4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0cc8c1371c37481b8f2', '锁止机构总成', '车身悬置及翻转锁止机构', '锁止机构总成', '', '1', NULL, '1', 'TRUCK', '54ca4ce84d1d4773b6b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0ccf1bb2802e4618a16', '变速操纵器装置', '变速操纵机构', '变速操纵器装置', 'VPP;BBF;PTT;PTA;PTC', '1', NULL, '1', 'TRUCK', 'd70f4fc1d6de4595b9f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0d12a730dc9a4760b2a', '车载智能终端模块', '车载智能终端模块', '车载智能终端模块', '', '1', NULL, '1', 'TRUCK', 'd0f78121fb744356b88', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0d1cafefd2134b89a8e', '冷气装置', '暖风/空调', '冷气装置', '', '1', NULL, '1', 'CAR', '380b124f855f463a8dc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0d53a50ec98c41fc8c9', '气喇叭', '信号装置', '气喇叭', 'VPT;VPP;MHH', '1', NULL, '1', 'TRUCK', '7866b048e70d4713a99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0d561067cf554ee58d6', '底盘主管束', '底盘管束', '底盘主管束', '', '1', NULL, '1', 'TRUCK', '074e10e810f3464cafc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0d8f13a5a46a4bcc870', '门控制器', '系统级控制模块', '门控制器', '', '1', NULL, '1', 'TRUCK', 'a22e83f4e6d047fb8bd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0e5110219a8f4ad3a85', '底盘制动线束总成', '底盘线束', '底盘制动线束总成', 'VPP;VPL;VPW;VPR;VFD;VFW;BBF;MAA;MAS;MAE;MAP', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0e5f8d913f024276808', '空滤器装置', '进气', '空滤器装置', 'VPP;CAA;VPA;PEF;BBL', '1', NULL, '1', 'TRUCK', '989c37142c78401c824', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0f6473b41cce430eb36', '控制机构', '空气悬架控制机构', '控制机构', '', '1', NULL, '1', 'TRUCK', '905ce7dd67024993897', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0f9ae941098849c3b89', '电池冷却管路系统', '冷却管路系统', '电池冷却管路系统', '', '1', NULL, '1', 'CAR', '44befe63b8a7436d943', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0fd87c32e5914f549d3', '独悬轮边总成', '前桥总成', '独悬轮边总成', '', '1', NULL, '1', 'TRUCK', '07690486230846fc9da', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('0ffbd46bf5a14c39a43', '底盘电器盒总成', '电器盒总成', '底盘电器盒总成', 'VPP;VFT;VFE;MPV;MCP;PES;PED', '1', NULL, '1', 'TRUCK', '2f72cda2b85a4a9eaa1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1000', '根节点', NULL, '根节点(卡车类)', NULL, '1', NULL, '1', 'TRUCK', NULL, NULL); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('10000', '根节点', NULL, '根节点(乘用车类)', NULL, '1', NULL, '1', 'CAR', NULL, NULL); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('10083f14514c4fe78ce', '翻转机构总成', '翻转机构总成', '翻转机构总成', '', '1', NULL, '1', 'TRUCK', '7a0fa703a52145b79c0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('100ba21a02c344ce9f7', '系统级控制模块', '控制模块', '系统级控制模块', '', '1', NULL, '1', 'CAR', '42274397c7d3482d9ad', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('105f9bede3f84eb4ac6', '低气压报警指示灯开关', '仪表台小开关2', '低气压报警指示灯开关', 'VPT;VPP;MAA', '1', NULL, '1', 'TRUCK', '570113ccfa494a5bb0f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('107eb38a60d5490f866', '轮胎(备)', '轮胎', '轮胎(备)', 'CTT;CTZ;CTQ;CTP', '1', NULL, '1', 'TRUCK', '26fc9b0957ec404fb99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('108b7b97d56a4fe492a', '转向灯/转弯灯总成', '外部照明', '转向灯/转弯灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('10904305f50447e2942', '电驱动总成', '电驱动系统模块', '电驱动总成', '', '1', NULL, '1', 'CAR', 'eadd01c5a1e94ec9b2f', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('10a0e63df5b64a94959', '扬声器', '音响装置', '扬声器', 'VPT;VPP;VPL;MMM;BBR', '1', NULL, '1', 'TRUCK', '4a85d03236424d8facd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1111674bbc83469ca26', '传动轴系统', '驱动桥模块团队', '传动轴系统', '', '1', NULL, '1', 'CAR', 'cca8963dfa6a47078db', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1166b1f16ef94dcbaf2', '货箱踏步', '皮卡货箱附件', '货箱踏步', '', '1', NULL, '1', 'CAR', 'e5343b891d9a40b9b97', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1183d8b7941b4af3a43', '多态开关', '仪表台开关', '多态开关', 'MOD;BMH;BMO', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('119b9a165409487392a', '封装', '封装', '封装', '', '1', NULL, '1', 'TRUCK', '8ac1523e63f24fa1b42', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('11c266f3e1394cdfb94', '非驱动前轴模块团队', '底盘系统', 'MTC6 非驱动前轴模块团队', '', '1', NULL, '1', 'TRUCK', 'de5ff69d07d349e6aa0', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1239c42684564d3790b', '后组合灯', '外部照明', '后组合灯', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1246469a78a745a1a37', '灭火器', '灭火器', '灭火器', '', '1', NULL, '1', 'CAR', 'ecea24019200438d977', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('12953b3a274d4391a45', 'EPB开关', '仪表台开关', 'EPB开关', 'BBR', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('12f9bb4d18b04c10a89', 'SOS开关', '仪表台开关', 'SOS开关', 'VPA', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('132a74498ec34b99bd1', '转向动力装置', '转向模块团队', '转向动力装置', '', '1', NULL, '1', 'TRUCK', '5e5f98d47fd846318e1', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('138fcbc2083c4a198b1', '整车控制器', '整车级控制模块', '整车控制器', '', '1', NULL, '1', 'TRUCK', '986b9aec1f224f47bde', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('13ab2cff97f94091b7a', '前接梁总成', '车架模块团队', '前接梁总成', '', '1', NULL, '1', 'CAR', '8fe4a83b845e48a89ab', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('13b55f5cc34248e2886', '信息显示系统', '信息显示系统', '信息显示系统', '', '1', NULL, '1', 'TRUCK', '2cb43e7d50524ec3a1b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('13c88454a219437e9c7', '后牵引装置', '牵引装置系统', '后牵引装置', '', '1', NULL, '1', 'TRUCK', 'c822e2dfe0fb491b8d9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('13d05940ae5c44abb32', '驾驶室制动踏板', '制动模块团队', '驾驶室制动踏板', '', '1', NULL, '1', 'TRUCK', '39f42fade11a450abdf', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('13dbb092513d47bb82a', '标识', '标牌及标识', '标识', '', '1', NULL, '1', 'CAR', '09836dc6783740da8ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('14040b2b00ed4315918', '鼓风机总成', '暖气装置', '鼓风机总成', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('144121f332034137bc1', '踏步灯', '内部照明', '踏步灯', '', '1', NULL, '1', 'CAR', '8d1e8c3a6d8a4e0db81', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('145701be62f6450ba45', '电力供应', '电控模块团队', '电力供应', '', '1', NULL, '1', 'CAR', '2ae611e7d78e4d35b99', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('14584ab163e544ef8e6', '直流直流变换器总成', '高压辅控模块', '直流直流变换器总成', '', '1', NULL, '1', 'TRUCK', '65019ff0beac4539921', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('147e876d0aa649beaee', '管梁及支架', '仪表板', '管梁及支架', '', '1', NULL, '1', 'CAR', 'e41dd5c910f44909a04', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('148e1b2617b847d3875', '侧后围内饰', '内饰装饰', '侧后围内饰', '', '1', NULL, '1', 'CAR', '1523a304c37f48ff92a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('14919b7103974be88b3', '进气模块团队', '动传系统', 'MTT6 进气模块团队', '', '1', NULL, '1', 'CAR', '6a020b61a2d145c1ad2', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('14d352e0c25645f2b11', '下卧铺', '卧铺', '下卧铺', 'VPP;VFD;VPL;BBW;BBL;BDB', '1', NULL, '1', 'TRUCK', '2da3c449da164a14ae2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('14deadeab37e413c9c4', '制动液压软管', '底盘液压管路', '制动液压软管', '', '1', NULL, '1', 'TRUCK', '7e0d38e7d6a0425cbf6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('14ef1ccbd7ad41f9972', '转向器支架', '转向执行元件', '转向器支架', 'VPP;VPA;VFD;VFF;CZT', '1', NULL, '1', 'TRUCK', '46479e02a6274b379e0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('151e7c05744042c7866', '点火开关', '驾驶室开关', '点火开关', '', '1', NULL, '1', 'CAR', '010ad996c8d048c6952', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1523a304c37f48ff92a', '内饰装饰', '内饰模块团队', '内饰装饰', '', '1', NULL, '1', 'CAR', '79a4d1abd8cb4d00b9e', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1548b39d21e242feb16', '遮阳系统', '遮阳装置', '遮阳系统', 'BES', '1', NULL, '1', 'TRUCK', '1c0e7d84f00544f2be4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('15a3bfa426d642a6a81', '保杠', '前/后围外饰', '保杠', '', '1', NULL, '1', 'TRUCK', '5e8b098493f74414a86', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('15abba06b18f4e2abdb', '直流直流变换器', '直流直流变换器总成', '直流直流变换器', '', '1', NULL, '1', 'CAR', 'fe1c0289e04247ebad0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('15bee05d48e64c9d91b', '防护', '车架模块团队', '防护', '', '1', NULL, '1', 'CAR', '8fe4a83b845e48a89ab', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('15c6de6d5cc2417682f', '发动机防盗', '系统级控制模块', '发动机防盗', '', '1', NULL, '1', 'TRUCK', 'a22e83f4e6d047fb8bd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('15de8e53c38345e0a49', '制动踏板单元', '行车操纵模块', '制动踏板单元', '', '1', NULL, '1', 'CAR', '3140f2425e45479e959', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1616a516c8eb400cbf2', '后空调管路', '冷气装置', '后空调管路', '', '1', NULL, '1', 'CAR', '0d1cafefd2134b89a8e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('165a8954f3144c61b59', '电源插座', '电源转换模块', '电源插座', 'VPT;VPP;MPD', '1', NULL, '1', 'TRUCK', '077260d889a941bd96d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('165c97fe0d484ec3845', '冷气装置', '暖风/空调', '冷气装置', '', '1', NULL, '1', 'TRUCK', '9ee5a4c5b4d44c0dab3', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('168954b3a8954b59ae6', '自动变速器基础数据', '变速器数据', '自动变速器基础数据', '', '1', NULL, '1', 'TRUCK', 'e813a974e78448078fc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('16ac5d6ce95d4ff6a85', '座椅', '内饰系统模块团队', '座椅', '', '1', NULL, '1', 'TRUCK', '07c8195e81d54ae7aec', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('16bd205a0b514cd6b9e', '电源总开关(驾驶室)', '仪表台小开关1', '电源总开关(驾驶室)', 'VPT;VPP;VPA', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1704f572ddbf4aeda23', '控制器支架', '系统级控制模块', '控制器支架', 'VFD', '1', NULL, '1', 'CAR', '100ba21a02c344ce9f7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('174e1586b74a44f2810', '备胎紧固装置', '备胎紧固装置', '备胎紧固装置', 'CTT;CTX', '1', NULL, '1', 'CAR', '38af941544ac4990967', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('175f6fc8256e4719ad8', '彩条', '外包装', '彩条', 'VPT;VPP;PTA;VPA;CST;GMS;PES;VFT;VFE;PEE', '1', NULL, '1', 'TRUCK', 'd0403762029546b285c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('177addadb9f5449884d', '发动机冷却管路系统', '冷却管路系统', '发动机冷却管路系统', '', '1', NULL, '1', 'CAR', '44befe63b8a7436d943', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('17a490ed841447b1969', '多合一动力总成', '电驱动总成', '多合一动力总成', '', '1', NULL, '1', 'CAR', '10904305f50447e2942', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('17af1289685d45b5a22', '前雨刮器/洗涤器', '雨刮器/洗涤器', '前雨刮器/洗涤器', 'VFD', '1', NULL, '1', 'TRUCK', '1f761aa7941143d4963', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('17d8efa51f354f38869', '发动机燃料', '发动机燃料', '发动机燃料', '', '1', NULL, '1', 'TRUCK', 'ebd8a27658fe43f1a37', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('17fca6b55b02496ab08', '传动轴总成', '传动轴总成', '传动轴总成', 'VFW;VFF;PEF;PEP;PTT;PRM', '1', NULL, '1', 'CAR', '2053469db7434ec8b42', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('18424eeeda174c558ec', '防擦条及轮眉', '侧围外饰附件', '防擦条及轮眉', '', '1', NULL, '1', 'CAR', 'b6a0894d6159479cbb8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('184ee66c056e41788cd', '后处理装置', '后处理装置', '后处理装置', 'PEF;PEE;VPA;VPW;VFG;VPP ', '1', NULL, '1', 'CAR', '24d651fc047c45b1b50', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1851416a70394b158c4', '后暖风机及风道', '暖气装置', '后暖风机及风道', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1879bd4cb84744ab92f', '货箱外包装', '货厢模块团队', '货箱外包装', '', '1', NULL, '1', 'TRUCK', '73edb351d582494885f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1885cd17321a494ab4d', '后悬架气囊组件', '后悬架弹性元件', '后悬架气囊组件', 'VPW;CSR;VFG', '1', NULL, '1', 'TRUCK', 'fd4b2eb8f51647f5a2b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('18ae11145f9c43869c4', '蓄电池紧固件', '电力供应', '蓄电池紧固件', '', '1', NULL, '1', 'CAR', '145701be62f6450ba45', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1908dd932e4d40a8bee', '发动机总成', '发动机总成', '发动机总成', '', '1', NULL, '1', 'TRUCK', '936a553379c24f53b38', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('195e3f4e1fe74505983', '车门调整总成', '车门结构', '车门调整总成', '', '1', NULL, '1', 'CAR', 'c7a1d2a04d69437697c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('198b2cb84dcd45f5a23', '离合器', '离合系统', '离合器', '', '1', NULL, '1', 'TRUCK', '9db17e9517e143b2a18', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1a1163a0832647b78e7', '发动机智能EP数据', '发动机标定数据', '发动机智能EP数据', 'PEF;PEE', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1a2f256d8f734d46ba7', '蒸发器总成', '冷气装置', '蒸发器总成', '', '1', NULL, '1', 'TRUCK', '165c97fe0d484ec3845', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1a36f753272044bda5b', '转向管路', '转向模块团队', '转向管路', '', '1', NULL, '1', 'TRUCK', '5e5f98d47fd846318e1', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1a49d8c3112c4902999', '仪表台小开关1', '驾驶室开关', '仪表台小开关1', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1ae45477b8314286b12', '平衡轴', '后悬架支架', '平衡轴', '', '1', NULL, '1', 'CAR', 'ee9c99b30602473bb7b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1b0e6d58288440a6807', '动传系统', '根节点', '动传系统', '', '1', NULL, '1', 'TRUCK', '1000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1b39a9b3a34e4ac7a63', '前悬架', '悬架模块团队', '前悬架', '', '1', NULL, '1', 'CAR', '02c9ab34f62d4be58f6', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1b416c71d8fb4c91ba5', '白车身总成', '白车身模块团队', '白车身总成', '', '1', NULL, '1', 'TRUCK', '03bce670df384912b68', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1b42c2eaecf94dd8b87', '随车工具总成', '随车工具', '随车工具总成', '', '1', NULL, '1', 'CAR', '06ae0ebcd014483ebf1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1bad001205314647b33', '发动机防盗', '系统级控制模块', '发动机防盗', '', '1', NULL, '1', 'CAR', '100ba21a02c344ce9f7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1bad51d0be4f49068e4', '支架类', '阀和传感器', '支架类', '', '1', NULL, '1', 'CAR', '5b57ff60f1734d8f957', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1bb0df7e942f469791a', '继电器', '线束', '继电器', '', '1', NULL, '1', 'TRUCK', '2afcde230efb451180b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1be9ec911dfc4d23b8f', '进气模块团队', '动传系统', 'MTT6 进气模块团队', '', '1', NULL, '1', 'TRUCK', '1b0e6d58288440a6807', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1c0e7d84f00544f2be4', '遮阳装置', '内饰附件', '遮阳装置', '', '1', NULL, '1', 'TRUCK', 'ee2dca6104f54db0b58', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1c5744a41e834c22abe', '后悬架板簧支架', '后悬架支架', '后悬架板簧支架', '', '1', NULL, '1', 'CAR', 'ee9c99b30602473bb7b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1c5d59d83d2f46a5bad', '冷却管路', '冷却系统', '冷却管路', '', '1', NULL, '1', 'TRUCK', '56551d656f954829ad1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1c8ea77ceee4429ba3b', '真空助力器', '真空助力器', '真空助力器', '', '1', NULL, '1', 'TRUCK', '8963de1b1120471faad', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1ccb38e5ffc4483ea05', '后防护总成', '后防护总成', '后防护总成', 'VPP;VPA', '1', NULL, '1', 'CAR', '7e974c78530e41ae88b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1d6913beb07c4b3ea32', '音响系统', '音响装置', '音响系统', 'VPT;VPP;MMM;MPI;MAN;MWV;BBR', '1', NULL, '1', 'TRUCK', '4a85d03236424d8facd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1e899728ae184978b1d', '传动轴总成', '传动轴系统', '传动轴总成', '', '1', NULL, '1', 'TRUCK', '83df5179313e4694a77', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1e9d704ecedc4dd0a56', '控制器', 'ADAS模块', '控制器', '', '1', NULL, '1', 'CAR', '51c16fd01c4f42b790d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1ed365147e0f445f808', '隔热罩', '隔热罩', '隔热罩', 'PEF;PEE;VPA;VPW;VPP ', '1', NULL, '1', 'CAR', '225fbe4ae2dd49c78d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1ed6cc9166e24f00a2c', '散热防护装置', '封装', '散热防护装置', '', '1', NULL, '1', 'CAR', 'b85d751b575d4d0cad6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1f01b0f643b642d0b42', '整车级控制模块', '控制模块', '整车级控制模块', '', '1', NULL, '1', 'CAR', '42274397c7d3482d9ad', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1f405e83dd7c44fcb35', '冷却模块团队', '动传系统', 'MTT7 冷却模块团队', '', '1', NULL, '1', 'CAR', '6a020b61a2d145c1ad2', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1f505f791fc34d1c81e', '座椅', '内饰模块团队', '座椅', '', '1', NULL, '1', 'CAR', '79a4d1abd8cb4d00b9e', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1f757738eccb4fa9a49', '排气管', '排气系统', '排气管', '', '1', NULL, '1', 'CAR', 'b98e750ba0af48d2ad8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1f761aa7941143d4963', '雨刮器/洗涤器', '车身电器', '雨刮器/洗涤器', '', '1', NULL, '1', 'TRUCK', '2a91bfd0489f419cb82', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1f85dc26f3ef4e3ca8b', '底盘管路', '制动模块团队', '底盘管路', '', '1', NULL, '1', 'CAR', '77efdfad20654812a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('1feb10dd9c5e4548b20', 'HDC开关', '仪表台开关', 'HDC开关', 'CFL;CFR', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('200f86d9a5fd456ba59', '档位开关', '驾驶室开关', '档位开关', '', '1', NULL, '1', 'CAR', '010ad996c8d048c6952', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('203ab4100a4448ef841', '车身系统', '根节点', '车身系统', '', '1', NULL, '1', 'CAR', '10000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('20406a382c9d41c6bf7', '车载充电机总成', '车载充电机总成', '车载充电机总成', '', '1', NULL, '1', 'CAR', '64bde279dc5b45dd976', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('20470c631c55488f828', '辅控多合一总成', '辅控多合一总成', '辅控多合一总成', '', '1', NULL, '1', 'TRUCK', 'b3142b08d23041abb14', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2053469db7434ec8b42', '传动轴总成', '传动轴系统', '传动轴总成', '', '1', NULL, '1', 'CAR', '1111674bbc83469ca26', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('207ad7b7f68d4f04bf2', '伺服系统', '制动模块团队', '伺服系统', '', '1', NULL, '1', 'TRUCK', '39f42fade11a450abdf', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('20f0e96840d54a858ca', '后悬架', '悬架模块团队', '后悬架', '', '1', NULL, '1', 'CAR', '02c9ab34f62d4be58f6', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('20f4ef28b1ab42178d1', '发动机标定数据', '发动机数据', '发动机标定数据', '', '1', NULL, '1', 'TRUCK', 'e163aaee779c429ca8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2170d941e2784fc59dc', '油门踏板', '加速传动装置', '油门踏板', '', '1', NULL, '1', 'CAR', 'd736e813fc034505828', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('21795d817dcd4d9ea3f', '电驱动控制系统模块', '电力驱动模块团队', '电驱动控制系统模块', '', '1', NULL, '1', 'CAR', 'e570b0e173b04264941', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('21bc60ffe53747488da', '前暖风管路', '暖气装置', '前暖风管路', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('224886c8c6f44569851', '储物盒', '内饰系统模块团队', '储物盒', '', '1', NULL, '1', 'TRUCK', '07c8195e81d54ae7aec', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('225d6049c6af4b94964', '进气', '进气模块团队', '进气', '', '1', NULL, '1', 'TRUCK', '1be9ec911dfc4d23b8f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('225fbe4ae2dd49c78d1', '隔热罩', '排气系统', '隔热罩', '', '1', NULL, '1', 'CAR', 'b98e750ba0af48d2ad8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('22b1d49dd7fb4067946', '组合开关', '组合开关', '组合开关', 'VPP;MAR;PTR;PTA', '1', NULL, '1', 'TRUCK', 'c1298c8a7ab945cb879', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('22cdb7067bb0465198f', '冬季暖机开关', '仪表台小开关2', '冬季暖机开关', '', '1', NULL, '1', 'TRUCK', '570113ccfa494a5bb0f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('22cf9cbcf78f4eaaa8d', '车架总成', '车架结构', '车架总成', '', '1', NULL, '1', 'CAR', '3fffa45be1bf4b18ab7', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('22d21f5ad4cd45e7b1a', '发动机搭铁线', '底盘线束', '发动机搭铁线', '', '1', NULL, '1', 'CAR', '8cf61a8ed9aa4a70b17', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('22f8b8daf63a4fd09fe', '车标', '前后围外饰附件', '车标', '', '1', NULL, '1', 'CAR', '37ac40b71a0743368c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2304a71573a74c7591b', '承载轴', '驱动桥模块团队', '承载轴', '', '1', NULL, '1', 'TRUCK', '2e7835c63d0c4d70874', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('231ea4c032694a8092e', '前悬架导向机构', '前悬架', '前悬架导向机构', '', '1', NULL, '1', 'CAR', '1b39a9b3a34e4ac7a63', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('232c165b614e459488a', '牌照固定板总成', '货箱附件', '牌照固定板总成', '', '1', NULL, '1', 'TRUCK', 'a70a05370ec64436bca', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2334a101e6704f15837', '电源交流逆变器线束', '车身线束', '电源交流逆变器线束', 'VPT;VPP;MPV', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('233a3f1dc1fb4fde91e', '顶盖地板附件', '内饰装饰', '顶盖地板附件', '', '1', NULL, '1', 'CAR', '1523a304c37f48ff92a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('233d3ae429f44492b02', '车身挡泥板', '侧围外饰附件', '车身挡泥板', '', '1', NULL, '1', 'CAR', 'b6a0894d6159479cbb8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('23985514affb49d5aa5', '侧围外饰附件', '侧围外饰', '侧围外饰附件', '', '1', NULL, '1', 'TRUCK', '73444730a92e4edf98b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('23bcef2b4ab64967aa4', '前桥制动软管', '底盘管束', '前桥制动软管', '', '1', NULL, '1', 'TRUCK', '074e10e810f3464cafc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('240009c8cd8849928b5', '动力悬置模块团队', '动传系统', 'MTT8 动力悬置模块团队', '', '1', NULL, '1', 'TRUCK', '1b0e6d58288440a6807', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('242b4e65c57a4241ad7', '门控制器', '系统级控制模块', '门控制器', '', '1', NULL, '1', 'CAR', '100ba21a02c344ce9f7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2480c7a0c2ae4b2181d', '中冷器装置', '中冷系统', '中冷器装置', 'VPP;VPA;PEF', '1', NULL, '1', 'CAR', 'eb83696300164138a99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2481b28808cb4dbd93c', '冷却液', '冷却系统', '冷却液', '', '1', NULL, '1', 'TRUCK', '56551d656f954829ad1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('24a694b8a7604616aac', '地毯总成', '内饰装饰', '地毯总成', 'VFD;BBF;PTA;BDC;BBL', '1', NULL, '1', 'TRUCK', '9689796dc055457ca55', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('24d651fc047c45b1b50', '后处理装置', '后处理系统', '后处理装置', '', '1', NULL, '1', 'CAR', '91fc6dda38a94326988', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('24ecfcc7b2064ee2ad9', '反光标识', '反光标识', '反光标识', '', '1', NULL, '1', 'CAR', 'e78811bb691347eaa9a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('256c4f365e494e369e9', '鲨鱼鳍天线', '天线模块', '鲨鱼鳍天线', '', '1', NULL, '1', 'CAR', 'e548cfcad2e04accb51', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('25899e0ab6da4780a41', '新能源整车控制模块', '整车控制模块团队', '新能源整车控制模块', '', '1', NULL, '1', 'TRUCK', 'd31c584b3f5847b8818', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('25a058adf1c647f485f', '后悬架高度调整组件', '后悬架弹性元件', '后悬架高度调整组件', 'VPP;VPA;CSR', '1', NULL, '1', 'TRUCK', 'fd4b2eb8f51647f5a2b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('25e9b189ded74a6ea99', '发动机线束总成', '底盘线束', '发动机线束总成', '', '1', NULL, '1', 'CAR', '8cf61a8ed9aa4a70b17', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('25fd207423384047874', '后防护总成', '后防护总成', '后防护总成', 'VPP;VPA', '1', NULL, '1', 'TRUCK', '645e0606686941feafb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('26334c0a6b1e46cfb58', 'EHB模块', 'EHB模块', 'EHB模块', '', '1', NULL, '1', 'CAR', 'aa0895cde12a41faa47', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('26b3ec78e1804f26a1c', '暖气装置', '暖风/空调', '暖气装置', '', '1', NULL, '1', 'TRUCK', '9ee5a4c5b4d44c0dab3', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('26ea0c409b2e4c04b41', '雷达模块', 'ADAS模块', '雷达模块', '', '1', NULL, '1', 'CAR', '51c16fd01c4f42b790d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('26fc9b0957ec404fb99', '轮胎', '轮胎/车轮', '轮胎', '', '1', NULL, '1', 'TRUCK', 'b56fdab597f14ea8a99', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('273b4d6653f241dcbc1', '电子后视镜显示屏', '电子后视镜', '电子后视镜显示屏', '', '1', NULL, '1', 'CAR', '297abaecc51043fea3f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('27546dcf76f64b90b90', '冷却模块团队', '动传系统', 'MTT7 冷却模块团队', '', '1', NULL, '1', 'TRUCK', '1b0e6d58288440a6807', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2757928d5faf4c41883', '摄像头', 'ADAS模块', '摄像头', '', '1', NULL, '1', 'CAR', '51c16fd01c4f42b790d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('279821b83ba94f42955', '后桥制动模块', '行车制动阀', '后桥制动模块', 'VPP;VPA;VPW;MAA;MAP;MAE;MAS', '1', NULL, '1', 'TRUCK', '6891d6cd1aae49dfbfe', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('27afa5e9cc34471f888', '车轮轮胎总成安装图', '车轮轮胎总成安装图', '车轮轮胎总成安装图', 'VPW', '1', NULL, '1', 'TRUCK', 'a68cb614023345a4861', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('27c06cb9fb54453489a', '后悬架弹性元件', '后悬架', '后悬架弹性元件', '', '1', NULL, '1', 'CAR', '20f0e96840d54a858ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('27dab5c04190481eaab', '标牌', '货箱外包装', '标牌', '', '1', NULL, '1', 'TRUCK', '461071106d35430cb8f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2866b51eb98143c1be5', '前板簧支架(含横梁)', '前悬架支架', '前板簧支架(含横梁)', '', '1', NULL, '1', 'CAR', '51e0a5ea19a540f3a2d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('28715ac600a3498f9e9', 'A柱侧围内饰', '侧后围内饰', 'A柱侧围内饰', '', '1', NULL, '1', 'CAR', '148e1b2617b847d3875', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('28aff81c108b488f8e5', '上车踏板', '侧围外饰', '上车踏板', '', '1', NULL, '1', 'TRUCK', '73444730a92e4edf98b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('28b43a5a9d244443b41', '皮卡货箱附件', '白车身模块团队', '皮卡货箱附件', '', '1', NULL, '1', 'CAR', 'e62950fdbf664a2e8ac', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('28d278b841b24efd889', 'HUD', 'HUD系统', 'HUD', '', '1', NULL, '1', 'TRUCK', '58cde1f16ee34e1ba55', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2924ed821c5d42f8b9d', '空调开关', '仪表台小开关1', '空调开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('294088c2cd8348e4b85', '供油系安装图', '供油系安装图', '供油系安装图', '', '1', NULL, '1', 'CAR', '8792f61d320042aab16', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('294a1ccb620d453cbbc', '燃料电池冷却附件', '冷却系统及附件模块', '燃料电池冷却附件', '', '1', NULL, '1', 'CAR', 'fe538cb2548147d7923', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2959a389e13045ee890', '变速器操纵机构安装图', '变速器控制机构', '变速器操纵机构安装图', '', '1', NULL, '1', 'CAR', '30deff18d6024c63820', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('296049fd99424191945', '传感器', '电控模块团队', '传感器', '', '1', NULL, '1', 'CAR', '2ae611e7d78e4d35b99', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('297abaecc51043fea3f', '电子后视镜', 'ADAS模块', '电子后视镜', '', '1', NULL, '1', 'CAR', '51c16fd01c4f42b790d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('299058b2f9cb4d1ab03', '车身悬置', '悬置模块团队', '车身悬置', '', '1', NULL, '1', 'TRUCK', '5bad2bad520a46ea9b7', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('29a48c9aef7142b7ba1', '氢系统模块', '氢系统模块', '氢系统模块', '', '1', NULL, '1', 'CAR', 'db1bbd629d3a4defab2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('29abd1770db048559a1', '电力驱动模块团队', '新能源系统', 'MTN2 电力驱动模块团队', '', '1', NULL, '1', 'TRUCK', 'db4b6e80b2554c79a82', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('29c20f9b63844790a15', '前悬架支架', '前悬架', '前悬架支架', '', '1', NULL, '1', 'TRUCK', 'f56ab73a05494773bb6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('29cc027c9bd4411fb5c', '电池管理系统', '动力电池总成', '电池管理系统', '', '1', NULL, '1', 'TRUCK', 'f64f617f75244a8e910', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('29fd5fceb39d4e0abc2', '行程开关', '驾驶室开关', '行程开关', '', '1', NULL, '1', 'CAR', '010ad996c8d048c6952', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2a06cae321cf459f89c', '离合器操纵油管', '离合器操纵装置', '离合器操纵油管', 'PTT;PTB;VPA', '1', NULL, '1', 'CAR', '93061bb632774641927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2a15ae799da94eab863', '雨量传感器', '传感器', '雨量传感器', '', '1', NULL, '1', 'CAR', '296049fd99424191945', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2a30df3298374ef1803', '油泵', '独立热源装置', '油泵', '', '1', NULL, '1', 'TRUCK', '85ed436787944e7f885', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2a5d62203f7a4a3ebd0', '尿素供储装置', '后处理系统', '尿素供储装置', '', '1', NULL, '1', 'TRUCK', '933cbb6576cc4fc887d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2a6895cde81e4ff3ad8', '发动机远程油门数据', '发动机标定数据', '发动机远程油门数据', 'PEF;MPR', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2a91bfd0489f419cb82', '车身电器', '外饰系统模块团队', '车身电器', '', '1', NULL, '1', 'TRUCK', 'ae239020b49d40e49a2', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2a970f00618a4219b2b', '后桥安装螺栓', '后悬架弹性元件', '后桥安装螺栓', 'VPW;VPR;VFG;CSR;VPO', '1', NULL, '1', 'TRUCK', 'fd4b2eb8f51647f5a2b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2ae0739714e1495db96', '车轮(前)', '车轮', '车轮(前)', 'CTF;CTB;CTW;CTO;VPW', '1', NULL, '1', 'TRUCK', '4116db6a55b142e8bc0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2ae611e7d78e4d35b99', '电控模块团队', '电子电控系统', 'MTE3 电控模块团队', '', '1', NULL, '1', 'CAR', '056955ac6f87460abd3', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2afcde230efb451180b', '线束', '电器模块团队', '线束', '', '1', NULL, '1', 'TRUCK', 'c68152bab33c47faa19', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2b15d691d732466db85', '转向护罩总成', '转向控制装置', '转向护罩总成', '', '1', NULL, '1', 'CAR', 'b8a58865a7f54495882', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2b6083b87c7d48748a7', '变速器冷却装置', '变速器冷却装置', '变速器冷却装置', '', '1', NULL, '1', 'CAR', '00dfdd6460a540f89d4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2be2d187a2c34b928e9', '储油杯', '储油杯', '储油杯', '', '1', NULL, '1', 'TRUCK', '056b4be0cdc340db9bd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2bfc7b7ba59142c3883', '地毯装饰件', '内饰装饰', '地毯装饰件', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '9689796dc055457ca55', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2c3e844ea9484a01a0b', '发动机下防护', '发动机总成', '发动机下防护', '', '1', NULL, '1', 'CAR', 'dc8b5cf5f65b47ea95d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2c5c054b110446bc80c', '遮阳系统', '遮阳系统', '遮阳系统', '', '1', NULL, '1', 'CAR', '5b7142593d9a4af6a35', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2c9ec5c84f384588807', '发动机匹配变速箱数据', '发动机标定数据', '发动机匹配变速箱数据', 'PEF;PEE;PTB;PTT;PTD;PTR', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2cb43e7d50524ec3a1b', '信息显示系统', '信息娱乐显示模块', '信息显示系统', '', '1', NULL, '1', 'TRUCK', '9b2e4a83cbf448c9af9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2d11be82096f4c619a2', '后除霜开关总成、外后视镜除霜开关', '仪表台开关', '后除霜开关总成、外后视镜除霜开关', 'MOS', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2d4aff2be616425e89f', '顶柜', '储物盒', '顶柜', 'VPP;VFD;BBR;BBW;BES', '1', NULL, '1', 'TRUCK', '70b165ff3b784e67b8d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2d630d8badea4388be5', '后板簧下支撑座', '后悬架弹性元件', '后板簧下支撑座', '', '1', NULL, '1', 'CAR', '27c06cb9fb54453489a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2da3c449da164a14ae2', '卧铺', '卧铺', '卧铺', '', '1', NULL, '1', 'TRUCK', '46da86fb2b344e21907', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e06adfdf10d47db8ec', '轮胎(备)', '轮胎', '轮胎(备)', 'CTT;CTZ;备胎轮胎滚动系数;CTP', '1', NULL, '1', 'CAR', '5cbc70c6dd3a4f87ab0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e0c2dae21a14cf1814', '灭火器总成', '动力电池系统模块', '灭火器总成', '', '1', NULL, '1', 'TRUCK', 'bfe2f65fccca45be9eb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e10c449e00944ac817', '雨量传感器', '传感器模块', '雨量传感器', 'VPT;VPP;MAR', '1', NULL, '1', 'TRUCK', '064c18ba6e94424a834', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e51f7d45b684e4999c', '后减振器支架', '后悬架阻尼系统', '后减振器支架', 'VPW;VPR', '1', NULL, '1', 'TRUCK', '8287fa75d6e44f0c89f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e5d8e96f9004b52927', '前悬架弹性元件', '前悬架', '前悬架弹性元件', '', '1', NULL, '1', 'CAR', '1b39a9b3a34e4ac7a63', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e75040576f04f76812', '加油装置', '燃油管路及附件', '加油装置', '', '1', NULL, '1', 'TRUCK', 'f3e6824d388245c1aa6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e7835c63d0c4d70874', '驱动桥模块团队', '动传系统', 'MTT4 驱动桥模块团队', '', '1', NULL, '1', 'TRUCK', '1b0e6d58288440a6807', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e787ababd9d42e2ba7', '卧铺储物箱', '储物盒', '卧铺储物箱', 'VPP;VFD;BBF;BBW;BBL;BOB', '1', NULL, '1', 'TRUCK', '70b165ff3b784e67b8d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2e8dd69796534751b1c', '前板簧支架(含横梁)', '前悬架支架', '前板簧支架(含横梁)', 'VPP;VPA;VPW;PAF', '1', NULL, '1', 'TRUCK', '29c20f9b63844790a15', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2f0add54cd454f5299e', '隔音隔热', '内饰附件', '隔音隔热', '', '1', NULL, '1', 'TRUCK', 'ee2dca6104f54db0b58', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2f65759471b04094933', '爆胎应急装置', '轮胎/车轮', '爆胎应急装置', '', '1', NULL, '1', 'TRUCK', 'b56fdab597f14ea8a99', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2f72cda2b85a4a9eaa1', '电器盒总成', '线束', '电器盒总成', '', '1', NULL, '1', 'TRUCK', '2afcde230efb451180b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2f9be37fb3204a64ac3', '车载充电机总成', '高压辅控模块', '车载充电机总成', '', '1', NULL, '1', 'TRUCK', '65019ff0beac4539921', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2fd643a7431f4096855', '后悬架安装图', '后悬架安装图', '后悬架安装图', 'VPP;VPW;VPR;VFG;VFW', '1', NULL, '1', 'CAR', 'bcf9616b30e646999d2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('2ff34570f8414ed3b21', '液压助力器', '液压助力器', '液压助力器', '', '1', NULL, '1', 'TRUCK', '937f26bb44694f89935', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3004d15231c24cd9b77', '后板簧导向板', '后悬架弹性元件', '后板簧导向板', 'VFG', '1', NULL, '1', 'CAR', '27c06cb9fb54453489a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('301b74ef4a4a4534b72', '一键启动系统', '系统级控制模块', '一键启动系统', 'VPP;PFP;VFD', '1', NULL, '1', 'TRUCK', 'a22e83f4e6d047fb8bd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3027a407cc3f46b2b8d', '车标', '前/后围外饰附件', '车标', 'VPA;PES;PEF;PEE', '1', NULL, '1', 'TRUCK', '5373de1924e44c52bd4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3040f3e2f9f34fd7aee', '发动机PTO开关', '仪表台小开关1', '发动机PTO开关', 'VPT;VPP;VPA', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('30411cf4cfe34f7a82c', '轮胎(前)', '轮胎', '轮胎(前)', 'CTG;CTQ;CTA;VPW', '1', NULL, '1', 'TRUCK', '26fc9b0957ec404fb99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('30557842667f49e3adf', '前接梁总成', '前接梁总成', '前接梁总成', '', '1', NULL, '1', 'CAR', '13ab2cff97f94091b7a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('30665ad284454b9a8c9', '冷凝器总成', '冷气装置', '冷凝器总成', '', '1', NULL, '1', 'CAR', '0d1cafefd2134b89a8e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('309d81895426449bb9d', '变速操纵机构总成', '变速操纵机构', '变速操纵机构总成', 'VPP;PTT;PTA;PTC', '1', NULL, '1', 'CAR', 'b6734099820f4e8e905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('30c2b07a671840c9b5a', '独立热源堵盖', '独立热源装置', '独立热源堵盖', '', '1', NULL, '1', 'CAR', 'eb2042bcdd84453ea9f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('30deff18d6024c63820', '变速器控制机构', '变速模块团队', '变速器控制机构', '', '1', NULL, '1', 'CAR', '9e1af5d72d5b449ca29', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3140f2425e45479e959', '行车操纵模块', '制动模块团队', '行车操纵模块', '', '1', NULL, '1', 'CAR', '77efdfad20654812a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('314a7f18c8064dcb8ff', '发动机总成', '发动机总成', '发动机总成', 'VPP;VPA;VFT;PEE;PES;PEF;PEP;PTR;PPP;PEM;PEO;BBL;PTB;PTA;VFS', '1', NULL, '1', 'TRUCK', '1908dd932e4d40a8bee', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3167324a7c4143d3841', '后暖风管路', '暖气装置', '后暖风管路', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('316b582d90094e35815', '后悬置总成', '后悬置总成', '后悬置总成', '', '1', NULL, '1', 'TRUCK', '89cc96d2e55e4b31aa9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('319274aaf398405684d', '机舱盖附件', '车门附件', '机舱盖附件', '', '1', NULL, '1', 'CAR', '8fcbbab3923e4c8ca11', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('319712f116464fd191e', '独立热源堵盖', '独立热源装置', '独立热源堵盖', 'VPT;VPP;MIH;BBF', '1', NULL, '1', 'TRUCK', '85ed436787944e7f885', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('31b6f32dc8d9496d83e', '前轴安装螺栓', '前悬架弹性元件', '前轴安装螺栓', 'VPP;VPW;PAF;CSF;PFB;VPR', '1', NULL, '1', 'TRUCK', 'c5dbe9ac533e4cd19c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('31f39a1f39974b7b956', '转向摇臂', '转向执行元件', '转向摇臂', 'VFD;VFW;CZT', '1', NULL, '1', 'TRUCK', '46479e02a6274b379e0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3231d21f48ff4fb4a5b', 'ESP开关', '仪表台开关', 'ESP开关', 'MAR;PTR;PTA;', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3244d7faa0c648eb8fa', '高压部件外壳搭铁线', '底盘线束', '高压部件外壳搭铁线', '', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('32ab6592200e462a8f1', '智能驾驶模块团队', '电子电控系统', 'MTE2 智能驾驶模块团队', '', '1', NULL, '1', 'TRUCK', '5b93d25b300f414782f', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('32d3f888e58c4b1a8ff', '阀类装置', '阀类装置', '阀类装置', '', '1', NULL, '1', 'TRUCK', '53d8149efe8743df94c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('32e68465d9904284bd5', '电控制动系统数据', '底盘控制系统', '电控制动系统数据', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('32f353e55748410bbe6', '整车总布置图', '车架模块团队', '整车总布置图', '', '1', NULL, '1', 'CAR', '8fe4a83b845e48a89ab', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3316bfbe3fa340519d4', '水泵', '暖气装置', '水泵', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3335774e1ba742bb8f0', '车轮(后)', '车轮', '车轮(后)', 'CTR;CTJ;CTK;CTC;VPW', '1', NULL, '1', 'CAR', '34f26c73337147cb941', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('333c49c29f5c430e968', '制动液压钢管', '制动液压钢管', '制动液压钢管', '', '1', NULL, '1', 'TRUCK', 'fb50185d5e4645a5987', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('333e41b30c114875a39', '车门外饰', '车门附件', '车门外饰', '', '1', NULL, '1', 'CAR', '8fcbbab3923e4c8ca11', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3380c1907ca644acb3b', '固定电机支架', '转向动力源', '固定电机支架', 'VPP', '1', NULL, '1', 'CAR', '90bfdd3497cc441ebb3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('33860efd4c60492f984', '驻车空调装置', '暖风/空调', '驻车空调装置', '', '1', NULL, '1', 'TRUCK', '9ee5a4c5b4d44c0dab3', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('33a3e1a8d7364fcb80e', '前格栅', '前/后围外饰附件', '前格栅', 'VPT;VPP;VPA;MWV;VPL', '1', NULL, '1', 'TRUCK', '5373de1924e44c52bd4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('345432fca46146df96c', '电器盒总成', '线束', '电器盒总成', '', '1', NULL, '1', 'CAR', '5191d54e1a8c47ad967', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('34a1ce55554c4611956', '桥箱传动轴总成', '传动轴总成', '桥箱传动轴总成', 'VPA;VFG;VPO;VFW;VFF;PEF;PEP;PTT;PRM', '1', NULL, '1', 'TRUCK', '1e899728ae184978b1d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('34b1c3ca7152479c952', '点火开关', '点火开关', '点火开关', '', '1', NULL, '1', 'CAR', '151e7c05744042c7866', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('34c23953f3fb4a4eb57', '机舱制动管路及支架', '机舱管路', '机舱制动管路及支架', 'ABS/EBS;MAP;MAE', '1', NULL, '1', 'CAR', 'e655ac8d2528400083e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('34d566e09ba04c5f91f', '转向传动轴总成', '转向控制装置', '转向传动轴总成', '', '1', NULL, '1', 'CAR', 'b8a58865a7f54495882', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('34f26c73337147cb941', '车轮', '轮胎/车轮', '车轮', '', '1', NULL, '1', 'CAR', 'dc60eac059094ddcb22', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3583551e8c3f4ccab04', '整车管线布置图', '整车管线布置图', '整车管线布置图', 'VPA;VFW;MAA;BBF;MBK;PTA;VPR;PRM;MBR;PAF;MBF', '1', NULL, '1', 'TRUCK', 'a72a31d0542f4ea6b36', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('359c8ca702eb48f4a26', '雨刮器洗涤器 ', '车身电器', '雨刮器洗涤器 ', '', '1', NULL, '1', 'CAR', 'b9feb9bbee8c4c82adc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('359df73823de4c35b60', '高压附件模块团队', '新能源系统', 'MTN3 高压附件模块团队', '', '1', NULL, '1', 'CAR', 'b093de0c2d844ecdb25', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('35c2adfcb1364f5180d', '全景环视', 'ADAS模块', '全景环视', 'VPT;VPP;VPA;MAM;MAF;MWV', '1', NULL, '1', 'TRUCK', 'bf94e2d3b8c0458fa4d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('365a5f973a594853b0d', '前轮轮速传感器', '轮速传感器', '前轮轮速传感器', 'VPW;ABS/EBS', '1', NULL, '1', 'CAR', '48f4d9ab7a2746de877', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('36e97dcf2434496482d', '伺服真空软管', '伺服系统', '伺服真空软管', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('36f0cc89d5904b7e86e', '弹簧减振器模块', '车身前悬', '弹簧减振器模块', 'VPP;VPL;BSM;BBR;BBL', '1', NULL, '1', 'TRUCK', '0276acad36bf4082ab4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('36fb4d62cda94eb2ac4', '尼龙管', '车身后悬', '尼龙管', 'VPP;BSM', '1', NULL, '1', 'TRUCK', '7ffc4929b9034337878', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('372b1a8ce8ce4316804', '燃油系统管路', '燃油管路及附件', '燃油系统管路', '', '1', NULL, '1', 'CAR', '96125fda78a040528ed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('37ac40b71a0743368c7', '前后围外饰附件', '前后围外饰', '前后围外饰附件', '', '1', NULL, '1', 'CAR', '89f44cae5a3f4c93b70', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('37b9018d85e3431cb23', '制动盘', '轮边制动模块', '制动盘', 'VPA;ABS/EBS;VFW;BBF;PTA;MBK', '1', NULL, '1', 'CAR', 'e1aeaa792dca4c4080c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('37c3c587ea2942d9aec', '电喇叭', '信号装置', '电喇叭', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '7866b048e70d4713a99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('37f31b2897b143d9876', '变速器及安装件', '变速器', '变速器及安装件', '', '1', NULL, '1', 'TRUCK', 'c38639320c9049e2a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('380b124f855f463a8dc', '暖风/空调', '电器模块团队', '暖风/空调', '', '1', NULL, '1', 'CAR', '9ecd673fae234c7a932', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('382f82de4b2e4b7d8aa', 'HUD', 'HUD系统', 'HUD', '', '1', NULL, '1', 'CAR', '02674cf63e63467589e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('385dda41286e4e09a74', '后视镜', '后视镜', '后视镜', 'BMH;BMO;MWV;MAM;BLV', '1', NULL, '1', 'TRUCK', 'ac6c338880354b8bbd6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3869906de9254fc4815', '翻转机构线束总成', '底盘线束', '翻转机构线束总成', 'VPP;VPL;VPA;VFT;VFE;BLW;BBF;MWV;PES;PED;GMS;GMR', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('38701b48555644fca7c', '挂车功能开关', '仪表台小开关1', '挂车功能开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('387259d83bf2449486c', '车前线束总成', '车身线束', '车前线束总成', 'VPP;VFE;VFD;MAA;MAE;MWV', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('38a336461273426180b', '车身悬置总成', '车身悬置', '车身悬置总成', '', '1', NULL, '1', 'CAR', 'a92d99a3be4e4ef79b1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('38af941544ac4990967', '备胎紧固装置', '底盘组件', '备胎紧固装置', '', '1', NULL, '1', 'CAR', 'bc9f08b1804d4bf58da', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('398da21662e244fdbfd', '车速传感器', '传感器模块', '车速传感器', 'VPT;VPP;PTB', '1', NULL, '1', 'TRUCK', '064c18ba6e94424a834', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('39973d4db07d499bb1c', '皮卡货箱总成', '皮卡货箱总成', '皮卡货箱总成', '', '1', NULL, '1', 'CAR', '688713a2676d479cb08', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('39c12f9fd6e74b33a02', '整车类标示牌', '标识', '整车类标示牌', 'VPP', '1', NULL, '1', 'TRUCK', '7d980a6035ae4665897', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('39f42fade11a450abdf', '制动模块团队', '底盘系统', 'MTC2 制动模块团队', '', '1', NULL, '1', 'TRUCK', 'de5ff69d07d349e6aa0', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3a06ce362b3740088f8', 'ASR模块', '底盘控制系统', 'ASR模块', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3a0eef56c52d4408adc', '前减振器', '前悬架阻尼系统', '前减振器', 'VPP;VPW;CSF;VPR;VPL', '1', NULL, '1', 'TRUCK', '788f16bc210145a3877', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3a5b2b788f4b4ca2832', '后雾灯总成', '外部照明', '后雾灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3a8e329a393747e39f2', '加速系统安装图', '加速传动装置', '加速系统安装图', '', '1', NULL, '1', 'CAR', 'd736e813fc034505828', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3ab487815bed45bf9a5', '前板簧盖板', '前悬架弹性元件', '前板簧盖板', '', '1', NULL, '1', 'CAR', '2e5d8e96f9004b52927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3ae4fe30c91e4987960', '驻车操纵模块', '制动模块团队', '驻车操纵模块', '', '1', NULL, '1', 'CAR', '77efdfad20654812a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3ae93e5e14c348cd814', '前围装饰件', '前/后围外饰附件', '前围装饰件', 'VPT;VPP;VPA;BBW', '1', NULL, '1', 'TRUCK', '5373de1924e44c52bd4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3aeedb07158e40e38b9', '驾驶室悬置气管', '辅助用气管', '驾驶室悬置气管', 'VPP;BSM;VFW;MAA;MAE', '1', NULL, '1', 'TRUCK', '9cde6e5e71784ab6adf', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3b6163f35d3246d3832', '驻车制动操纵手柄总成', '驻车手柄单元', '驻车制动操纵手柄总成', 'VPA;MBK;ABS/EBS', '1', NULL, '1', 'CAR', '94afcfb18dcd4d3ead5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3b61f72a46d24984a0d', '整车控制模块团队', '新能源系统', 'MTN4 整车控制模块团队', '', '1', NULL, '1', 'CAR', 'b093de0c2d844ecdb25', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3b9935829c754201bbd', '电池包总成', '动力电池总成', '电池包总成', '', '1', NULL, '1', 'TRUCK', 'f64f617f75244a8e910', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3bf9be3e55874924b7f', '(电动)真空泵', '伺服系统', '(电动)真空泵', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3c5795620a634649b2e', '车身主线束总成', '车身线束', '车身主线束总成', 'VPP;VPA;VPR;VFT;VFE;VFD;VFS;BLT;BLI;BLA;BES;BMF;BMH;BMO;BOR;BOA;BDF;BDH;CTM;MPR;MAA;MAE;MAP;MBK;CZW;MPD;MPO;MPV;MPC;MPI;MPW;MIH;MMM;MAH;MAO;MAF;MAL;MAW;MAC;MAB;MAR;MAT;MAD;MAK;MAM;MAI;MCP;MVC;MWV;MOA;PTB;PTR;PTA;PPM;PFP', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3c5ea3a0700c429a8cf', '前位置灯', '外部照明', '前位置灯', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3c771546fdb64da69ee', '悬架控制系统安装图', '悬架控制系统安装图', '悬架控制系统安装图', 'VPW;VPR;VFW', '1', NULL, '1', 'CAR', '6e888ba7f9074b27a78', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3cda214ff65a4e7ab75', '前围装饰件', '前后围外饰附件', '前围装饰件', '', '1', NULL, '1', 'CAR', '37ac40b71a0743368c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3cf6308b50c0410fad1', '后桥制动管路及支架', '后桥制动管路', '后桥制动管路及支架', 'PTA;VPR;ABS/EBS', '1', NULL, '1', 'CAR', '5abf9fc03f7d41a8ab4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3d35f058078d47b7b6d', '变速箱线束总成', '底盘线束', '变速箱线束总成', '', '1', NULL, '1', 'CAR', '8cf61a8ed9aa4a70b17', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3d3ac3a2622441f4b73', '驻车制动拉线', '驻车制动拉线', '驻车制动拉线', '', '1', NULL, '1', 'TRUCK', '82dbdfda90714281876', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3d6280ec515448d88cb', '离合系统', '变速模块团队', '离合系统', '', '1', NULL, '1', 'CAR', '9e1af5d72d5b449ca29', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3d7f1ae5dbfa44f299d', '制动离合踏板单元', '驾驶室制动踏板', '制动离合踏板单元', '', '1', NULL, '1', 'TRUCK', '13d05940ae5c44abb32', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3da56fcb6b35473380a', '燃油箱及附件', '燃油箱及附件', '燃油箱及附件', '', '1', NULL, '1', 'CAR', '809a628f9753435b849', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3dc51316989c4a94b0d', 'ECAS开关', '仪表台小开关1', 'ECAS开关', 'VPT;VPP;VPR', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3dda9098eeab4474b07', '变速器冷却管路系统', '冷却管路系统', '变速器冷却管路系统', '', '1', NULL, '1', 'CAR', '44befe63b8a7436d943', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3e2a4a4300934c2bb05', '安全电子装置', '电控模块团队', '安全电子装置', '', '1', NULL, '1', 'TRUCK', '5278f7a6bb904ae9bda', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3e53a87863e2491a889', '后悬架缓冲块', '后悬架', '后悬架缓冲块', '', '1', NULL, '1', 'TRUCK', '664320104d6e4072a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3e641ec30b414688b7e', '轮胎(前)', '轮胎', '轮胎(前)', 'CTG;CTV;CTA;VPW', '1', NULL, '1', 'CAR', '5cbc70c6dd3a4f87ab0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3e982735fad74762b0b', '电动空压机', '底盘空气管理', '电动空压机', '', '1', NULL, '1', 'TRUCK', 'f439e48f3e624193abf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3ea765c2322746c4827', '转向油罐总成及支架', '转向动力源', '转向油罐总成及支架', 'VPA;VPW', '1', NULL, '1', 'CAR', '90bfdd3497cc441ebb3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3eba48649d074f9e8c9', '后处理固定装置', '后处理装置', '后处理固定装置', 'VFE;PEE;VPA;VPW;VFG;VPP;VFF', '1', NULL, '1', 'TRUCK', 'b01f4d5f5a7c431c88d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3ece59adff894817a01', '电源直流变流器', '电源转换模块', '电源直流变流器', 'VPT;VPP;MPC;MPS;MPI', '1', NULL, '1', 'TRUCK', '077260d889a941bd96d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3f68c4376de1432b845', '方向盘总成', '方向盘总成', '方向盘总成', 'VPP;VPA;CZW;MAC', '1', NULL, '1', 'CAR', '563e3eec3c1e4f09981', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3f6b966d25cf4968a3b', '动力蓄电池模块团队', '新能源系统', 'MTN1 动力蓄电池模块团队', '', '1', NULL, '1', 'CAR', 'b093de0c2d844ecdb25', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3fc81ccdb3a2403bafb', '后桥总成', '驱动桥总成', '后桥总成', '', '1', NULL, '1', 'CAR', '77a5724dabb64417a74', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3fd02adf6aba4c13a1b', '后回复反射器总成', '外部照明', '后回复反射器总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('3fffa45be1bf4b18ab7', '车架结构', '车架模块团队', '车架结构', '', '1', NULL, '1', 'CAR', '8fe4a83b845e48a89ab', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('40029f8d05e440619f9', '液力缓速器冷却管路系统', '冷却管路', '液力缓速器冷却管路系统', 'PTT;PTR', '1', NULL, '1', 'TRUCK', '1c5d59d83d2f46a5bad', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4052ccfdfa544908a38', '蓄电池紧固件', '蓄电池', '蓄电池紧固件', 'VPT;VPP;MVB;MVC', '1', NULL, '1', 'TRUCK', 'e70c3c23692d4034af9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4088b75a9d3e4ed59c0', '传动轴防护装置', '传动轴附件', '传动轴防护装置', '', '1', NULL, '1', 'TRUCK', 'fe331d0848ee49b08a8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('40b3231f3ae4419ab4e', '后稳定杆', '后悬架稳定杆', '后稳定杆', '', '1', NULL, '1', 'CAR', 'b61a01774ae64f27812', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('40ca018b5b8b4e2ab12', '离合器操纵管路系统变速箱部分', '离合器操纵装置', '离合器操纵管路系统变速箱部分', 'PTT;PTB;VPA', '1', NULL, '1', 'CAR', '93061bb632774641927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('40fba99c36614d7eb24', '转向传动装置图', '转向传动装置图', '转向传动装置图', 'VPP;BBF;CZA', '1', NULL, '1', 'CAR', 'eb5a813074ce4d1dbd0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4116db6a55b142e8bc0', '车轮', '轮胎/车轮', '车轮', '', '1', NULL, '1', 'TRUCK', 'b56fdab597f14ea8a99', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4122e9e91e28437b8b0', 'A柱侧围内饰', '内饰装饰', 'A柱侧围内饰', 'MAF;VPL', '1', NULL, '1', 'TRUCK', '9689796dc055457ca55', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4182c56fd48c42579d0', '正负极-电源线束总成', '底盘线束', '正负极-电源线束总成', 'VPP;VFW;PES;PEF;MVC;MVB;MAT', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('42274397c7d3482d9ad', '控制模块', '电控模块团队', '控制模块', '', '1', NULL, '1', 'CAR', '2ae611e7d78e4d35b99', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('423d47bd729b4ccb9c1', '前悬架推力杆支架', '前悬架支架', '前悬架推力杆支架', '', '1', NULL, '1', 'CAR', '51e0a5ea19a540f3a2d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('427bf929a0fd4dcea38', '导流板', '导流装置', '导流板', '', '1', NULL, '1', 'CAR', 'f97ccd153d0743be95b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('42cab0b6f31d49efabf', '门控开关', '门控开关', '门控开关', 'MAR', '1', NULL, '1', 'CAR', 'f5c2e6c5beeb41bc9ed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('42fb49ee9e9e4eb4951', '车身翻转系统', '车身翻转系统', '车身翻转系统', '', '1', NULL, '1', 'TRUCK', '0a628a2fc4b5476db32', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4312aa124ec24d6b871', '工作走台', '走台', '工作走台', 'VPP;VPA', '1', NULL, '1', 'TRUCK', '98d2d07cbe1143259aa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('431e44b36efa41d69c3', '负离子发生装置', '暖风/空调', '负离子发生装置', '', '1', NULL, '1', 'TRUCK', '9ee5a4c5b4d44c0dab3', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('43227b37b3cf4e75af6', '车轮及轮胎模块团队', '底盘系统', 'MTC5 车轮及轮胎模块团队', '', '1', NULL, '1', 'CAR', '96179a631abf41ee90c', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('43528418c8284347abd', '前排气管', '排气管', '前排气管', 'PEF;PEE;BBL;VPA;VPW;VPP;VFG ', '1', NULL, '1', 'CAR', '1f757738eccb4fa9a49', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4376e855466c4987a51', '货箱防溅板', '货箱外包装', '货箱防溅板', '', '1', NULL, '1', 'TRUCK', '461071106d35430cb8f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('437b15bdad8a49329aa', '燃料电池排气系统模块', '燃料电池系统模块', '燃料电池排气系统模块', '', '1', NULL, '1', 'TRUCK', 'eec72978959146e38a4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('441fa0d59c2b44f7861', '副仪表板总成', '仪表板', '副仪表板总成', 'BBF;BOA;MPW', '1', NULL, '1', 'TRUCK', '484a1ec503c645faaf6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4442fa4262a748fdbc8', '真空罐', '真空罐', '真空罐', '', '1', NULL, '1', 'TRUCK', '488ca4dac5ca49bc8d5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('44497e48dffd404b95c', '底盘暖风管路', '暖气装置', '底盘暖风管路', 'VPT;VPP;VPA;VFE;BBF', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('44befe63b8a7436d943', '冷却管路系统', '冷却系统', '冷却管路系统', '', '1', NULL, '1', 'CAR', 'd4849a07c5c346df909', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('450e28960c394a00b4a', '后围内饰及风罩', '侧后围内饰', '后围内饰及风罩', '', '1', NULL, '1', 'CAR', '148e1b2617b847d3875', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('450f789723a24029950', '电喇叭', '信号装置', '电喇叭', 'VPP', '1', NULL, '1', 'CAR', 'efd359f1da5040198f2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('451133bfb035407fa1c', 'ABS HECU', 'ABS HECU', 'ABS HECU', '', '1', NULL, '1', 'TRUCK', 'c448d49530724f03bf9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('452ceeee8bfd40ae929', '电驱动系统模块', '电力驱动模块团队', '电驱动系统模块', '', '1', NULL, '1', 'TRUCK', '29abd1770db048559a1', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('45427c0c1bae4727924', '灭火器', '灭火器', '灭火器', 'VPT;VPP', '1', NULL, '1', 'TRUCK', 'ce0301630c9a4aeab41', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('454a02d7b5204629a21', '前横梁线束总成', '底盘线束', '前横梁线束总成', 'VPP;VFD;BBF;BEB', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('456f16d060ff48b3937', '空气处理单元', '空气处理单元', '空气处理单元', 'VPP;VPA;MBD;VPL;MAA;PTA;VPR', '1', NULL, '1', 'TRUCK', 'fd17d6e07a584597829', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('460804aaba4940fba34', '组合开关', '驾驶室开关', '组合开关', '', '1', NULL, '1', 'CAR', '010ad996c8d048c6952', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('461071106d35430cb8f', '货箱外包装', '货箱外包装', '货箱外包装', '', '1', NULL, '1', 'TRUCK', '1879bd4cb84744ab92f', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('46479e02a6274b379e0', '转向执行元件', '转向动力装置', '转向执行元件', '', '1', NULL, '1', 'TRUCK', '132a74498ec34b99bd1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4660d7f3424a42a588a', '液压介质', '转向动力装置', '液压介质', '', '1', NULL, '1', 'CAR', '97073dda2a19415aa11', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('46751977e5244023a3a', '风挡玻璃', '前/后围外饰', '风挡玻璃', '', '1', NULL, '1', 'TRUCK', '5e8b098493f74414a86', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('467e3c1376804153888', '高压辅控模块', '高压附件模块团队', '高压辅控模块', '', '1', NULL, '1', 'CAR', '359df73823de4c35b60', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('46c7ddb28ce049859cf', 'PTC加热器', '暖气装置', 'PTC加热器', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('46d811f1884e4203b89', '中冷器管路装置', '进气', '中冷器管路装置', 'VPP;VPA;PEF', '1', NULL, '1', 'TRUCK', '989c37142c78401c824', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('46da86fb2b344e21907', '卧铺', '内饰系统模块团队', '卧铺', '', '1', NULL, '1', 'TRUCK', '07c8195e81d54ae7aec', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('47881de51b964384a45', '前牵引装置', '牵引装置系统', '前牵引装置', '', '1', NULL, '1', 'TRUCK', 'c822e2dfe0fb491b8d9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('47a06dcd029b46e3af4', '燃气滤清器装置', '燃气滤清器装置', '燃气滤清器装置', '', '1', NULL, '1', 'TRUCK', 'c9a2579d2c634393aac', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('47ab5788e9844fadbe8', '后悬架阻尼系统', '后悬架', '后悬架阻尼系统', '', '1', NULL, '1', 'CAR', '20f0e96840d54a858ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('47e109950fb34bde957', '动力电池系统模块', '动力蓄电池模块团队', '动力电池系统模块', '', '1', NULL, '1', 'CAR', '3f6b966d25cf4968a3b', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('47ecb9db4fc34c3da0a', '隔音垫', '隔音隔热', '隔音垫', '', '1', NULL, '1', 'CAR', '9111c491c968413a9c9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4809992a187c4947818', '开闭件系统', '开闭件模块团队', '开闭件系统', '', '1', NULL, '1', 'TRUCK', '8a589654f62f448a957', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('48113e03794d457ea60', 'ETC总成', '车载智能终端模块', 'ETC总成', 'VPT;VPP;MAT', '1', NULL, '1', 'TRUCK', '0d12a730dc9a4760b2a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('484a1ec503c645faaf6', '仪表板', '仪表板', '仪表板', '', '1', NULL, '1', 'TRUCK', '50abc3dec92846f3b6b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('484ff8a0a97c430585b', '固定电机支架', '转向动力源', '固定电机支架', 'VFT', '1', NULL, '1', 'TRUCK', '03648c155c5b42858d3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('488b5cdd78bd4d1887b', '环视摄像头', '摄像头', '环视摄像头', '', '1', NULL, '1', 'CAR', '2757928d5faf4c41883', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('488ca4dac5ca49bc8d5', '真空罐', '伺服系统', '真空罐', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4891d6efe2e743f89cb', '收音天线', '天线模块', '收音天线', '', '1', NULL, '1', 'CAR', 'e548cfcad2e04accb51', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('48ae90fe95df48ab825', '密封胶及PVC胶', '白车身喷涂及密封', '密封胶及PVC胶', '', '1', NULL, '1', 'CAR', 'c5066c84aabe4c2084c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('48cafa507c3f4b46a45', '行车储气筒', '储气筒及附件', '行车储气筒', 'VPP;VPA;MAA;VPW;MVB;MVC;MBA;MAE', '1', NULL, '1', 'TRUCK', 'a869c1271fd84651b96', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('48f4d9ab7a2746de877', '轮速传感器', '底盘控制系统', '轮速传感器', '', '1', NULL, '1', 'CAR', '61afcfeb75be4df2a84', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('491c2fd9855a45af84a', '氢系统', '氢系统模块', '氢系统', '', '1', NULL, '1', 'TRUCK', 'e1c254d88da0420dab2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('49729aa1a6ef462bbff', 'ADAS模块', '智能驾驶模块团队', 'ADAS模块', '', '1', NULL, '1', 'TRUCK', '32ab6592200e462a8f1', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('49a2209e2e7d4774a2c', '承载轴', '承载轴', '承载轴', 'VPW;VPR;PAR;MBR;PRW', '1', NULL, '1', 'TRUCK', 'e67502d5cccc4ea8a86', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4a16033362a14a65b03', '侧窗玻璃', '侧围外饰附件', '侧窗玻璃', '', '1', NULL, '1', 'CAR', 'b6a0894d6159479cbb8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4a233a6d696348308e5', '后鼓风机前开关总成', '仪表台开关', '后鼓风机前开关总成', 'BLW', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4a5710964c7a489788e', '燃油系统', '燃油系统模块团队', '燃油系统', '', '1', NULL, '1', 'CAR', '9222ddb094e64eaabec', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4a5815ab1ef74fb9913', '变速箱线束总成', '底盘线束', '变速箱线束总成', 'VPP;VPL;PTB;PTR;PTA;PPM;PTT', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4a5e30470bbf4ac783d', '车载智能终端模块', '车载智能终端模块', '车载智能终端模块', '', '1', NULL, '1', 'CAR', 'a7da8f667ed1470da3b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4a85d03236424d8facd', '音响装置', '信息娱乐显示模块', '音响装置', '', '1', NULL, '1', 'TRUCK', '9b2e4a83cbf448c9af9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4aaef2796d374e59878', '前稳定杆', '前悬架稳定杆', '前稳定杆', '', '1', NULL, '1', 'CAR', 'a60dcfc67ebc4f14acc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4aba6713a0f34c6bb5a', '底盘脚踏板', '上车踏板', '底盘脚踏板', 'VPA;VPP;BEB', '1', NULL, '1', 'TRUCK', '28aff81c108b488f8e5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4ad95ea061f54ba0a0e', '高压盒', '动力电池总成', '高压盒', '', '1', NULL, '1', 'CAR', '9f5a23f272fa421f854', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4b741ed571424e5f869', '副水箱', '加注除气装置', '副水箱', 'BBF', '1', NULL, '1', 'CAR', 'cd5f67cd26094171be7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4bce8a6d06524b739cd', '管线布置图', '管线布置图', '管线布置图', '', '1', NULL, '1', 'CAR', 'd7dda1cecad14e45800', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4bdb28e1991e4cf380f', '离合操纵管路', '离合操纵机构', '离合操纵管路', '', '1', NULL, '1', 'TRUCK', 'a4702d7b7f6f4c6ba0a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4cdcbe1656764ab28d5', '后钢板弹簧', '后悬架弹性元件', '后钢板弹簧', 'VPP;VPO;VPW;VPR;VFG;CSR;VFW', '1', NULL, '1', 'CAR', '27c06cb9fb54453489a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4cefae5e095d4d36a49', 'V2X总成', '车载智能终端模块', 'V2X总成', '', '1', NULL, '1', 'CAR', '4a5e30470bbf4ac783d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4cf6584801d34064b16', '挡风板', '冷却系统', '挡风板', '', '1', NULL, '1', 'TRUCK', '56551d656f954829ad1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4cfd942c6b374d8787c', '环境温度传感器', '排气系统', '环境温度传感器', '', '1', NULL, '1', 'CAR', 'b98e750ba0af48d2ad8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4d09e72ea5db45e9b20', '内饰装饰', '内饰系统模块团队', '内饰装饰', '', '1', NULL, '1', 'TRUCK', '07c8195e81d54ae7aec', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4d2aa9eed2f54939bf6', '顶盖隔音隔热垫', '隔音隔热', '顶盖隔音隔热垫', 'BBL;BBR;VPL', '1', NULL, '1', 'TRUCK', '2f0add54cd454f5299e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4d5277bd28c442cdb28', '方向盘总成', '转向控制装置', '方向盘总成', '', '1', NULL, '1', 'TRUCK', '5cf119ed01404776800', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4dcd36aa74064d08bfc', '出风口总成', '前/后围外饰附件', '出风口总成', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '5373de1924e44c52bd4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4dd547baf0094427a93', '发动机总成', '发动机总成', '发动机总成', '', '1', NULL, '1', 'CAR', 'dc8b5cf5f65b47ea95d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4e0a7152b33d4e3a9ce', '辅助制动模块', '底盘控制系统', '辅助制动模块', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4e57ef1d71454c398c3', '天窗开关', '仪表台小开关1', '天窗开关', 'VPT;VPP;BOR', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4e5d8fb69c254970b63', '尿素罐过渡支架', '尿素罐装置', '尿素罐过渡支架', 'VPP;CFU;VPA;VPW', '1', NULL, '1', 'TRUCK', '844eb9cd21184d00948', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4e7aae348d9a4f29b84', '缓速器介入开关', '仪表台小开关1', '缓速器介入开关', 'VPT;VPP;PTR;MAA', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4ea16b335ef849628e8', '传动轴安装图', '传动轴系统', '传动轴安装图', '', '1', NULL, '1', 'CAR', '1111674bbc83469ca26', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4ea9a15cf6a54e75aff', '昼行灯总成', '外部照明', '昼行灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4efbccd05f3841e7969', 'BSD/LCA开关', '仪表台小开关1', 'BSD/LCA开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4f021f0570e5448bac2', '后桥总成', '驱动桥总成', '后桥总成', '', '1', NULL, '1', 'TRUCK', 'dd04a2f55cbf48a9bd7', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4f0b404b74954ac19df', '驾驶室管束', '驾驶室管束', '驾驶室管束', 'VPP;VPA;MBK;VFD;BBF', '1', NULL, '1', 'TRUCK', '0beb849301bb45da900', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4f2e788fcb57400c9ac', '电器原理图', '电器原理图', '电器原理图', 'VPP;VFT;VFE;PES;PED', '1', NULL, '1', 'TRUCK', '81c8edd96a8c4dac896', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4ff0e6778f6346508df', 'ETC总成', '车载智能终端模块', 'ETC总成', '', '1', NULL, '1', 'CAR', '4a5e30470bbf4ac783d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('4ff7134deb054d6ca67', '前排安全带', '安全带', '前排安全带', '', '1', NULL, '1', 'CAR', '8eb2ca98602b4a858b5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5005bb543d444fc199d', '电动机', '电驱动总成', '电动机', '', '1', NULL, '1', 'TRUCK', 'd16aba83b0ba4da19ec', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5011e0d9dcba4289909', '挡泥板防护罩总成', '底盘组件', '挡泥板防护罩总成', '', '1', NULL, '1', 'TRUCK', '63b3ba6cbdeb4984962', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5024d280b7ba493a804', '挂车供气组件', '底盘管束', '挂车供气组件', '', '1', NULL, '1', 'TRUCK', '074e10e810f3464cafc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('503ff4dcc568452cbe3', 'ASR模块', 'ASR模块', 'ASR模块', 'MAS', '1', NULL, '1', 'TRUCK', '3a06ce362b3740088f8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('505c5223ad1f460b951', '螺旋弹簧支座', '前悬架支架', '螺旋弹簧支座', '', '1', NULL, '1', 'CAR', '51e0a5ea19a540f3a2d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5082d85d5f8f4b96ac3', '后悬摆臂', '后悬架导向机构', '后悬摆臂', '', '1', NULL, '1', 'CAR', '6d026b21e7b943a9aa4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('508d1ff3782e4ecf8ea', '后处理+排气模块团队', '动传系统', 'MTT2 后处理+排气模块团队', '', '1', NULL, '1', 'CAR', '6a020b61a2d145c1ad2', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5098e9d5f3254f0e9ef', '板式换热器', '冷气装置', '板式换热器', '', '1', NULL, '1', 'CAR', '0d1cafefd2134b89a8e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('50a455c8173c4226850', '正负极-电源线束总成', '底盘线束', '正负极-电源线束总成', '', '1', NULL, '1', 'CAR', '8cf61a8ed9aa4a70b17', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('50abc3dec92846f3b6b', '仪表板', '内饰系统模块团队', '仪表板', '', '1', NULL, '1', 'TRUCK', '07c8195e81d54ae7aec', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('50ae81ee251c4024ba9', '脱钩油缸油管', '车身翻转系统', '脱钩油缸油管', '', '1', NULL, '1', 'TRUCK', '42fb49ee9e9e4eb4951', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('50d653e4784d4dff878', '加速传动装置', '变速模块团队', '加速传动装置', '', '1', NULL, '1', 'TRUCK', 'a288929ee4994034a6f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('50e3e8d1d2294ff6b94', '后驱动桥总成', '后桥总成', '后驱动桥总成', 'VPW;VPA;VPR;VPK;PRM;PAR;PRR;MBR;PRW;CTJ', '1', NULL, '1', 'TRUCK', '4f021f0570e5448bac2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('51028cbdeab54cd49a7', '牵引力辅助开关', '仪表台开关', '牵引力辅助开关', 'VPW;VPR', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5125a57bbf474e539a7', '排气尾管', '排气管', '排气尾管', 'VFE;PEE;VPA;VPW;VFS;VPP', '1', NULL, '1', 'TRUCK', '6b5a7037486f4617afa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('513ca87a8b5344c881e', '油管过线支架', '车身翻转系统', '油管过线支架', 'VPP', '1', NULL, '1', 'TRUCK', '42fb49ee9e9e4eb4951', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('514e946465ef4ffabeb', '暖气装置', '暖风/空调', '暖气装置', '', '1', NULL, '1', 'CAR', '380b124f855f463a8dc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('51872778c8b04d96af7', '行程开关', '行程开关', '行程开关', '', '1', NULL, '1', 'TRUCK', '854f7ebf0ac946cb9a2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5191d54e1a8c47ad967', '线束', '电器模块团队', '线束', '', '1', NULL, '1', 'CAR', '9ecd673fae234c7a932', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('51976409921441ec81a', '冷却系统安装图', '冷却系统安装图', '冷却系统安装图', 'VPA;PEF;PEP;BBF;PTR', '1', NULL, '1', 'TRUCK', 'ed3d0b0230874b93aac', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('51a9022707df4b75b68', '车架总成', '车架结构', '车架总成', '', '1', NULL, '1', 'TRUCK', '615bfca2310b405f8a1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('51c16fd01c4f42b790d', 'ADAS模块', '智能驾驶模块团队', 'ADAS模块', '', '1', NULL, '1', 'CAR', 'b7cd746a652f43b8828', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('51e0a5ea19a540f3a2d', '前悬架支架', '前悬架', '前悬架支架', '', '1', NULL, '1', 'CAR', '1b39a9b3a34e4ac7a63', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('51eff6dd264d4125a8a', '分动器安装图', '分动器', '分动器安装图', '', '1', NULL, '1', 'CAR', 'c65c74fd5fd84f2d978', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('523070b2ef7e4bf6994', '座椅', '座椅', '座椅', '', '1', NULL, '1', 'CAR', '1f505f791fc34d1c81e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('523371ef53174f42bec', '离合操纵管路及固定', '离合操纵装置', '离合操纵管路及固定', 'PTT;PTB;VPA', '1', NULL, '1', 'CAR', '6045a25aa91549cf95e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5278f7a6bb904ae9bda', '电控模块团队', '电子电控系统', 'MTE3 电控模块团队', '', '1', NULL, '1', 'TRUCK', '5b93d25b300f414782f', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('527d5e0536f640db87b', '转向管路安装图', '转向管路', '转向管路安装图', 'VFD;CZT;VPW;VPA;VPP;CZP;PEF', '1', NULL, '1', 'TRUCK', '8284e34665ad415a974', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('52c75bc0745743b2939', '压力传感器', '阀和传感器', '压力传感器', '', '1', NULL, '1', 'CAR', '5b57ff60f1734d8f957', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('52f58a4be9ce4097abb', '一键启动开关', '仪表台开关', '一键启动开关', 'PFP', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('52fac50403364ba7929', '多态开关', '仪表台小开关1', '多态开关', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5306543f79cd4c4da58', '空压机管路', '空压机管路', '空压机管路', 'VPP;VPA;VPL;VFT;PEF;VFW;MBD', '1', NULL, '1', 'TRUCK', 'f66ef81d76c24930b75', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5307f944d34b488bbd9', 'USB', '电器附件', 'USB', 'VPP', '1', NULL, '1', 'CAR', 'f420e6eee0214018b9a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('53300ea0e68140e1973', '后悬架安装图', '后悬架', '后悬架安装图', '', '1', NULL, '1', 'TRUCK', '664320104d6e4072a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('533ad36dd17545478c6', '拉手总成', '拉手总成', '拉手总成', '', '1', NULL, '1', 'TRUCK', '04397513a66f47b2a19', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5373de1924e44c52bd4', '前/后围外饰附件', '前/后围外饰', '前/后围外饰附件', '', '1', NULL, '1', 'TRUCK', '5e8b098493f74414a86', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('539a333af21b41a3906', '连接件-燃油箱与车架', '燃油管路及附件', '连接件-燃油箱与车架', '', '1', NULL, '1', 'CAR', '96125fda78a040528ed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('53c7b70627184bf39d3', '螺旋弹簧', '后悬架弹性元件', '螺旋弹簧', 'VPW;VPR', '1', NULL, '1', 'CAR', '27c06cb9fb54453489a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('53d8149efe8743df94c', '阀类装置', 'NG供给系统', '阀类装置', '', '1', NULL, '1', 'TRUCK', '95233216c66947379cf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('53f72d38fda44013a3c', 'T-BOX', '车载智能终端模块', 'T-BOX', 'VPT;VPP;GMR;VFT;MAH', '1', NULL, '1', 'TRUCK', '0d12a730dc9a4760b2a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('540992ec15544ead818', '副启动、副熄火开关', '底盘开关', '副启动、副熄火开关', 'VPT;VPP;MOS', '1', NULL, '1', 'TRUCK', '66d9ae7e531c4e179e8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('541937ecd7074ba5b8f', '整车总布置图', '车架模块团队', '整车总布置图', '', '1', NULL, '1', 'TRUCK', '983a32bc04154356aba', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('543e9154e8bb4ef6b77', '点烟器', '电源转换模块', '点烟器', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '077260d889a941bd96d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5449f464fd564528b9d', '发动机PTO数据', '发动机标定数据', '发动机PTO数据', 'PEF;PEE;PPP', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5452228109c641f58b7', '蒸发装置', '燃油管路及附件', '蒸发装置', '', '1', NULL, '1', 'CAR', '96125fda78a040528ed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('549d8f1e9784408c9bc', '车身中悬', '车身悬置及翻转锁止机构', '车身中悬', '', '1', NULL, '1', 'TRUCK', '54ca4ce84d1d4773b6b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('54ca4ce84d1d4773b6b', '车身悬置及翻转锁止机构', '悬置模块团队', '车身悬置及翻转锁止机构', '', '1', NULL, '1', 'TRUCK', '5bad2bad520a46ea9b7', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('55059d6aa45c4d0f850', '燃油箱与车架连接件', '燃油箱及附件', '燃油箱与车架连接件', 'CFL;CFR;VPP;VPA;VFW;VFG;PTT', '1', NULL, '1', 'TRUCK', '039dea45df694fafb6b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('550b845bccc349fa947', '车架线束总成', '底盘线束', '车架线束总成', '', '1', NULL, '1', 'CAR', '8cf61a8ed9aa4a70b17', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('551cf1e27e5746fbaf4', '燃料电池排气系统', '燃料电池排气系统模块', '燃料电池排气系统', '', '1', NULL, '1', 'TRUCK', '437b15bdad8a49329aa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5544342340504c4997a', '阳光环境光传感器', '传感器模块', '阳光环境光传感器', 'VPT;VPP;BLA;MCA', '1', NULL, '1', 'TRUCK', '064c18ba6e94424a834', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('559f0c5472a74bc5963', '变速操纵密封装置', '变速操纵机构', '变速操纵密封装置', 'VPP;BBF;VFD;PTC', '1', NULL, '1', 'TRUCK', 'd70f4fc1d6de4595b9f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('55f1f852a35f4d9d839', '前板簧盖板及缓冲块', '前悬架弹性元件', '前板簧盖板及缓冲块', 'VPW;PAF', '1', NULL, '1', 'TRUCK', 'c5dbe9ac533e4cd19c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('55fa93fd119543f89f8', '信息显示系统', '信息显示系统', '信息显示系统', '', '1', NULL, '1', 'CAR', '7f15ca7097b74e2ca0b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('563e3eec3c1e4f09981', '方向盘总成', '转向控制装置', '方向盘总成', '', '1', NULL, '1', 'CAR', 'b8a58865a7f54495882', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('56551d656f954829ad1', '冷却系统', '冷却模块团队', '冷却系统', '', '1', NULL, '1', 'TRUCK', '27546dcf76f64b90b90', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('566ef4a069b6487eb9d', '后照灯开关', '仪表台小开关1', '后照灯开关', 'VPT;VPP;BLW', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5673beb0a2944d3e9ed', '电驱动控制系统模块', '电力驱动模块团队', '电驱动控制系统模块', '', '1', NULL, '1', 'TRUCK', '29abd1770db048559a1', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('56be67a9ad0847a5ab9', '驻车拉线附件', '驻车操纵模块', '驻车拉线附件', '', '1', NULL, '1', 'CAR', '3ae4fe30c91e4987960', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('56efdd514d1e4c5e949', '整车总布置图', '整车总布置图', '整车总布置图', '', '1', NULL, '1', 'CAR', '32f353e55748410bbe6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('570113ccfa494a5bb0f', '仪表台小开关2', '驾驶室开关', '仪表台小开关2', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('57166259901f47d7810', '智能座舱及车联网模块', '电子电控系统', 'MTE1 智能座舱及车联网模块', '', '1', NULL, '1', 'TRUCK', '5b93d25b300f414782f', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5727da27554d4f72b88', 'ESC模块', 'ESC模块', 'ESC模块', 'VPP;VPA;MAP;MAE', '1', NULL, '1', 'TRUCK', 'ae9b0855c94748ff972', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('577fdace6bc24985a2a', '油泵模块', '车身翻转系统', '油泵模块', 'VPP;VPL;VPA;BSG', '1', NULL, '1', 'TRUCK', '42fb49ee9e9e4eb4951', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('57a2d1529fd44d2da40', '后悬架高度调整组件', '后悬架弹性元件', '后悬架高度调整组件', 'VPW;VPK;CSR', '1', NULL, '1', 'CAR', '27c06cb9fb54453489a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('57cd43d2d92c4b8b9a7', '发动机巡航数据', '发动机标定数据', '发动机巡航数据', 'PEF;MAC', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('57de5f243eb44211b42', '前排气管', '排气管', '前排气管', 'VFE;PEE;BBL;VPA;VPW;VPP;VFG', '1', NULL, '1', 'TRUCK', '6b5a7037486f4617afa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('57e655340ba94c85963', '制动液压软管', '制动液压软管', '制动液压软管', '', '1', NULL, '1', 'TRUCK', '14deadeab37e413c9c4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('57e83a8b614546c6998', '液力缓速器冷却管路系统', '冷却管路系统', '液力缓速器冷却管路系统', '', '1', NULL, '1', 'CAR', '44befe63b8a7436d943', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5809d411c6bd473d8df', '后排安全带', '安全带', '后排安全带', '', '1', NULL, '1', 'CAR', '8eb2ca98602b4a858b5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5813fce5267b429fb62', '前悬架气囊组件', '前悬架弹性元件', '前悬架气囊组件', 'VPP;CSF;PAF', '1', NULL, '1', 'TRUCK', 'c5dbe9ac533e4cd19c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5823a4a2aaab45138ba', '轮间差速锁开关', '仪表台开关', '轮间差速锁开关', 'VPW', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5829fbdc267845a3aa8', '独立热源管路(车身部分)', '独立热源装置', '独立热源管路(车身部分)', 'VPT;VPP;MIH;VPA;BBF', '1', NULL, '1', 'TRUCK', '85ed436787944e7f885', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5843dbfe3aa44711943', '油门总成', '油门踏板', '油门总成', 'VPP;PTA;VFE', '1', NULL, '1', 'TRUCK', '7d153ce02647425587a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('584f5967394e421ca19', '盲点监测', 'ADAS模块', '盲点监测', 'VPT;VPP;MAG', '1', NULL, '1', 'TRUCK', 'bf94e2d3b8c0458fa4d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('585c06a7dba541f78cb', '中段制动管路及支架', '中段制动管路', '中段制动管路及支架', 'PEF', '1', NULL, '1', 'CAR', '88225e0a1b5046878b0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('58cde1f16ee34e1ba55', 'HUD系统', '信息娱乐显示模块', 'HUD系统', '', '1', NULL, '1', 'TRUCK', '9b2e4a83cbf448c9af9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('59096f56a30245569fa', '车载冰箱', '车载电器', '车载冰箱', 'VPT;VPP;MPO', '1', NULL, '1', 'TRUCK', 'c5bd831e2d4f415ab28', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('59366efa0bba4054b44', '导流装置', '顶盖外饰', '导流装置', '', '1', NULL, '1', 'TRUCK', 'cf14dce1e2ef4832bfd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('596d93383e6a4cb49ff', '冷却系统安装图', '冷却系统安装图', '冷却系统安装图', '', '1', NULL, '1', 'CAR', 'e9d4b512b72f47449ea', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('597bf629250b48b9bea', 'DPF(GPF)后处理警示牌', 'DPF后处理警示牌', 'DPF(GPF)后处理警示牌', 'VFE', '1', NULL, '1', 'TRUCK', 'c6930980868f496999c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5998a1dfcf894eae8df', '地板线束总成', '车身线束', '地板线束总成', '', '1', NULL, '1', 'CAR', 'ece47900c0894a21a3b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('599dbad403c148bd872', '尿素供储装置', '尿素供储装置', '尿素供储装置', 'PEF;PEE;CFU;VPP ', '1', NULL, '1', 'CAR', '00de3aefa0834e9b9da', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('59a4cad2662a48cb936', '前雨刮器洗涤器', '雨刮器洗涤器 ', '前雨刮器洗涤器', '', '1', NULL, '1', 'CAR', '359c8ca702eb48f4a26', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('59cf81034e1548849e8', '总布置图', '整车总布置图', '总布置图', 'VPP;VPA;VPW;VPR;VPK', '1', NULL, '1', 'CAR', '56efdd514d1e4c5e949', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('59da237dae694a3887c', '电机控制器总成', '电驱动控制总成', '电机控制器总成', '', '1', NULL, '1', 'TRUCK', 'b72aa0987dc24badad0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5a4727a80c9c4622a83', '诊断开关总成', '仪表台开关', '诊断开关总成', 'VPA', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5a6da5ceb7fc4ae6b4e', '驻车制动操纵机构', '驾驶室驻车操纵', '驻车制动操纵机构', '', '1', NULL, '1', 'TRUCK', 'cb93231b2e9240a4a23', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5a851615102341a0b8b', '侧围外饰', '外饰模块团队', '侧围外饰', '', '1', NULL, '1', 'CAR', 'ccdf928c99274854a9f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5a8b674918fd4393a79', '动力总成悬置', '动力悬置', '动力总成悬置', '', '1', NULL, '1', 'TRUCK', 'e47668067e6343d6bfe', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5abb7c69071c476e994', '胎压监测', '胎压监测', '胎压监测', 'CTM;CTF;VPW', '1', NULL, '1', 'TRUCK', '96a2570c8d3c438f83b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5abf9fc03f7d41a8ab4', '后桥制动管路', '底盘管路', '后桥制动管路', '', '1', NULL, '1', 'CAR', '1f85dc26f3ef4e3ca8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5ac1e8f6fa714931b42', '前组合灯', '外部照明', '前组合灯', 'BEB;BLD;BLH', '1', NULL, '1', 'TRUCK', 'a9f4acff30af44f0963', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5ad393dcd3de433eaa0', '蓄电池传感器', '传感器模块', '蓄电池传感器', 'VPT;VPP;MVC', '1', NULL, '1', 'TRUCK', '064c18ba6e94424a834', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5ae60f10b1cb4c149b2', '随车工具总成', '随车工具总成', '随车工具总成', 'VPP;VPA', '1', NULL, '1', 'CAR', '1b42c2eaecf94dd8b87', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5b2512cb79724b0a98b', '提升轴开关', '仪表台开关', '提升轴开关', 'VPW', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5b257328ece14aa28c5', '变速器辅助悬置', '变速器辅助悬置', '变速器辅助悬置', 'VPP;VPA;PTA;PTB;VFF;VPW', '1', NULL, '1', 'TRUCK', '8e58753de18545e3be0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5b452e376e394cb7adc', '电子后视镜控制器', '电子后视镜', '电子后视镜控制器', '', '1', NULL, '1', 'CAR', '297abaecc51043fea3f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5b57ff60f1734d8f957', '阀和传感器', '空气悬架控制机构', '阀和传感器', '', '1', NULL, '1', 'CAR', '9833f378529f4908ab8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5b7142593d9a4af6a35', '遮阳系统', '内饰装饰', '遮阳系统', '', '1', NULL, '1', 'CAR', '1523a304c37f48ff92a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5b93d25b300f414782f', '电子电控系统', '根节点', '电子电控系统', '', '1', NULL, '1', 'TRUCK', '1000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5baba0982cef41c08a4', '前/后桥总成', '驱动桥总成', '前/后桥总成', '', '1', NULL, '1', 'CAR', '77a5724dabb64417a74', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5bad2bad520a46ea9b7', '悬置模块团队', '车身系统', 'MTB2 悬置模块团队', '', '1', NULL, '1', 'TRUCK', 'd68f61afae4d4b51bf9', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5c33afc944b642eeaf9', '制动系统控制单元', '制动系统控制单元', '制动系统控制单元', 'VPP;VPA;MAA;MAP;MAE', '1', NULL, '1', 'TRUCK', 'cdb3016855974b2791e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5c501c3a7ef141b7bb3', '摇臂', '变速器操纵机构', '摇臂', 'VPP;PTT;PTC', '1', NULL, '1', 'CAR', '954c378761894541a59', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5c5da955fac944b68c4', '管梁及支架', '仪表板', '管梁及支架', 'BBF;VPL', '1', NULL, '1', 'TRUCK', '484a1ec503c645faaf6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5c7a2b158f3f4860a95', '车轮轮胎总成安装图', '轮胎/车轮', '车轮轮胎总成安装图', '', '1', NULL, '1', 'CAR', 'dc60eac059094ddcb22', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5cbc70c6dd3a4f87ab0', '轮胎', '轮胎/车轮', '轮胎', '', '1', NULL, '1', 'CAR', 'dc60eac059094ddcb22', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5cf119ed01404776800', '转向控制装置', '转向模块团队', '转向控制装置', '', '1', NULL, '1', 'TRUCK', '5e5f98d47fd846318e1', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5cf2b77bc7994e9f8f2', '白车身总成', '白车身总成', '白车身总成', '', '1', NULL, '1', 'TRUCK', '1b416c71d8fb4c91ba5', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5d00881fd0cd494b9e7', '前悬架高度调整组件', '前悬架弹性元件', '前悬架高度调整组件', 'VPP;VPA;VPW;VPR;PFB', '1', NULL, '1', 'TRUCK', 'c5dbe9ac533e4cd19c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5d18464f5b6b4f10a48', '12V电源开关', '仪表台小开关1', '12V电源开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5d22dedc07be48afbfe', '收音天线', '天线模块', '收音天线', 'VPT;VPP;VFD;BBR;MMM', '1', NULL, '1', 'TRUCK', '06777a62dc2e44ae87b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5d743b49201f438e8ed', '离合操纵装置安装说明', '离合操纵装置安装图', '离合操纵装置安装说明', 'PTT;PTB;VPP;VPA', '1', NULL, '1', 'CAR', 'b3afd8d3b0c4490da50', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5d7e4c627ddd4f29b29', '安全带', '内饰模块团队', '安全带', '', '1', NULL, '1', 'CAR', '79a4d1abd8cb4d00b9e', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5d977c75a63e45f6b0f', '前排安全带', '安全带', '前排安全带', 'VFD;BDK', '1', NULL, '1', 'TRUCK', 'ea31c0b8337845b6bc9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5da1dfcad22b409e874', '点烟器', '电器附件', '点烟器', 'VPP', '1', NULL, '1', 'CAR', 'f420e6eee0214018b9a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5da6991ebc7e46efaad', '空调箱总成', '暖气装置', '空调箱总成', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5db0a15b661d46c2a2f', '水泵', '暖气装置', '水泵', '', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5e5f98d47fd846318e1', '转向模块团队', '底盘系统', 'MTC4 转向模块团队', '', '1', NULL, '1', 'TRUCK', 'de5ff69d07d349e6aa0', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5e73227d286b4829882', '滤清器装置', '滤清器装置', '滤清器装置', '', '1', NULL, '1', 'CAR', 'c921b13f8f8c4a12b7d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5e7ab6d56f9e4248a1d', 'ASR系统开关', '仪表台开关', 'ASR系统开关', 'ABS/EBS', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5e811b708d524304adb', '货箱总成', '货箱总成', '货箱总成', '', '1', NULL, '1', 'TRUCK', 'b5395ef1d357470f9ae', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5e8b098493f74414a86', '前/后围外饰', '外饰系统模块团队', '前/后围外饰', '', '1', NULL, '1', 'TRUCK', 'ae239020b49d40e49a2', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5e8e07f61d164b9b872', '扭杆弹簧', '前悬架弹性元件', '扭杆弹簧', '', '1', NULL, '1', 'CAR', '2e5d8e96f9004b52927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5eaae3346d9e44da920', '货箱总成', '货箱总成', '货箱总成', '', '1', NULL, '1', 'TRUCK', '5e811b708d524304adb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5eec74d01af0480cb3a', '制动离合踏板单元', '制动离合踏板单元', '制动离合踏板单元', 'VPP;VPA;PTA;MAA;MAE', '1', NULL, '1', 'TRUCK', '3d7f1ae5dbfa44f299d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5ef432b8d5ed412b91f', '真空管路单元', '真空管路单元', '真空管路单元', 'VPA;ABS/EBS;VFW;VPR;MVB;MVU;MVC;MBA', '1', NULL, '1', 'CAR', '0989760269454768b92', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5f7b846b63e3425f992', '转向器及附件装置图', '转向器及附件装置图', '转向器及附件装置图', 'VFD;CZT;VFW;VPA;VFF;VPP;PAF', '1', NULL, '1', 'TRUCK', '9bda7bbfe65a4609af8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5fa00eea71954ab0833', '一键启动系统', '系统级控制模块', '一键启动系统', 'VFD;PFP', '1', NULL, '1', 'CAR', '100ba21a02c344ce9f7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5faa6875dbf84f3e9f4', '新能源整车控制器', '新能源整车控制模块', '新能源整车控制器', '', '1', NULL, '1', 'TRUCK', '25899e0ab6da4780a41', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5fc63814760340ef93a', '真空助力器及主缸', '真空助力器及主缸', '真空助力器及主缸', 'VPA;ABS/EBS;PTA;VPR', '1', NULL, '1', 'CAR', '92320d32b6dd49da948', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5fd3a1fc9cea4892bb1', '变速器冷却装置安装图', '变速器冷却装置安装图', '变速器冷却装置安装图', 'PTA;PTD;PTB;PTC;PTT;', '1', NULL, '1', 'CAR', 'b1e8512a09a049148e0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('5ff78444be4448f89fc', '转向模块团队', '底盘系统', 'MTC4 转向模块团队', '', '1', NULL, '1', 'CAR', '96179a631abf41ee90c', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6029bc325d1a4c7c965', '转向器总成', '转向执行元件', '转向器总成', 'VFD;CZT;VPW', '1', NULL, '1', 'CAR', '7223a2b05e7647a18a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('604347f1579f486582e', '燃气机水管路带附件', '发动机总成', '燃气机水管路带附件', 'VPP;VPA;VFT;PES', '1', NULL, '1', 'TRUCK', '1908dd932e4d40a8bee', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6045a25aa91549cf95e', '离合操纵装置', '离合系统', '离合操纵装置', '', '1', NULL, '1', 'CAR', '3d6280ec515448d88cb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('60547a970192433e841', '后悬固定支架模块', '车身后悬', '后悬固定支架模块', 'VPP;VPA;BBL;BBF', '1', NULL, '1', 'TRUCK', '7ffc4929b9034337878', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('609777e40a844e06b89', '开关底座', '驾驶室开关', '开关底座', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('615bfca2310b405f8a1', '车架结构', '车架模块团队', '车架结构', '', '1', NULL, '1', 'TRUCK', '983a32bc04154356aba', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('616009976af94222988', '冷却模块', '冷却系统', '冷却模块', '', '1', NULL, '1', 'TRUCK', '56551d656f954829ad1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('617c2f4915f44711acb', '白车身调整总成', '白车身总成', '白车身调整总成', '', '1', NULL, '1', 'CAR', 'd1c61f98297e4603a4f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('61865e7fd8014486997', 'DPF(GPF)后处理警示牌', 'DPF后处理警示牌', 'DPF(GPF)后处理警示牌', 'PEF ', '1', NULL, '1', 'CAR', '7c18fb9c1a49476d811', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('61afcfeb75be4df2a84', '底盘控制系统', '制动模块团队', '底盘控制系统', '', '1', NULL, '1', 'CAR', '77efdfad20654812a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('61b110222c484c66ab4', '不干胶标签', '车身线束', '不干胶标签', 'VPP;VFT;VFE;PEE;PES;PED', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('62324977ad2340cca69', '前桥制动管路及支架', '前桥制动管路', '前桥制动管路及支架', 'VPA;ABS/EBS;MAE', '1', NULL, '1', 'CAR', 'cf0774c1cc4f420daa1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('628891d0983e4bca902', '动力总成悬置', '动力悬置', '动力总成悬置', '', '1', NULL, '1', 'CAR', '9f7c6bf25fad4760bf6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('62a80cc6e1f54e9581e', '空气悬架控制器', '控制机构', '空气悬架控制器', 'VPP;VPW', '1', NULL, '1', 'TRUCK', '0f6473b41cce430eb36', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6363cc8203f14ae2b06', '不干胶标签', '车身线束', '不干胶标签', '', '1', NULL, '1', 'CAR', 'ece47900c0894a21a3b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('63946865b7a1455db15', '隔热罩', '隔热罩', '隔热罩', 'VFE;PEE;VPA;VPW;VPP', '1', NULL, '1', 'TRUCK', 'f19be43ff9fb48ecb5f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('63b3ba6cbdeb4984962', '底盘组件', '车轮及轮胎模块团队', '底盘组件', '', '1', NULL, '1', 'TRUCK', 'a0d32456e1e3418eb97', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('63fda879106d4fa9816', '室内灯开关', '仪表台小开关1', '室内灯开关', 'VPT;VPP;BBR;BBL', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('64005ce529cd465f800', '地板线束总成', '车身线束', '地板线束总成', '', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('640df9eea56f4a81946', '二合一动力总成', '电驱动总成', '二合一动力总成', '', '1', NULL, '1', 'TRUCK', 'd16aba83b0ba4da19ec', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('64413d0431854bc5947', '地板隔音隔热垫', '隔音隔热', '地板隔音隔热垫', 'BBF;BBL;PTA', '1', NULL, '1', 'TRUCK', '2f0add54cd454f5299e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('64470723803c495a815', '回油管总成及支架', '转向管路', '回油管总成及支架', 'VPP;VFD;VPA;CZT', '1', NULL, '1', 'TRUCK', '8284e34665ad415a974', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('645e0606686941feafb', '后防护总成', '防护', '后防护总成', '', '1', NULL, '1', 'TRUCK', 'feddba635b9d45b7baa', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6475049b13904b63855', '电池包总成', '动力电池总成', '电池包总成', '', '1', NULL, '1', 'CAR', '9f5a23f272fa421f854', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6486c5888b504b2ea14', '换挡传动装置', '换挡传动装置', '换挡传动装置', 'VPP;BBF;VFD;VFF;PTB;PTC;VFE;PTT', '1', NULL, '1', 'TRUCK', '7bf4f91511cf447cbdf', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('64bde279dc5b45dd976', '车载充电机总成', '高压辅控模块', '车载充电机总成', '', '1', NULL, '1', 'CAR', '467e3c1376804153888', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('64fe16de63ff4c7cb1e', '冷却模块', '冷却系统', '冷却模块', '', '1', NULL, '1', 'CAR', 'd4849a07c5c346df909', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('65019ff0beac4539921', '高压辅控模块', '高压附件模块团队', '高压辅控模块', '', '1', NULL, '1', 'TRUCK', 'c80052ef63c54aa1a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('651a676f9f374a3198c', '发动机匹配轮胎数据', '发动机标定数据', '发动机匹配轮胎数据', 'PEF;PEE;CTS', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6557d29c1bb94a32a8e', '档位模式选择开关', '仪表台开关', '档位模式选择开关', 'MAL;MAW;MAB', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6566803f18ae4473a8d', '车桥润滑油', '车桥润滑油', '车桥润滑油', 'VPO;PRM', '1', NULL, '1', 'CAR', 'bc90f503f98940f7a3d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('65a5adf3208d4d8dab6', 'B柱侧围内饰', '侧后围内饰', 'B柱侧围内饰', '', '1', NULL, '1', 'CAR', '148e1b2617b847d3875', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('65ae0ce3b4324d668b6', '中部开关组合件', '仪表台开关', '中部开关组合件', 'VPR', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('662f179fde9c4f3596a', '制动原理图', '管线布置图', '制动原理图', '', '1', NULL, '1', 'TRUCK', 'e622091310b54bd895a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('664320104d6e4072a75', '后悬架', '悬架模块团队', '后悬架', '', '1', NULL, '1', 'TRUCK', '83969ce9ff3d4614b5f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('66a1a2e22ea643a5a73', '后悬架板簧支架', '后悬架支架', '后悬架板簧支架', 'VPP;VFG;VPO', '1', NULL, '1', 'TRUCK', 'f90d3ea928074f788a4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('66b0a7da16b74b97935', '空滤器进气管路装置', '进气', '空滤器进气管路装置', 'VPP;CAA;VPA;BBF;PEF;BBL', '1', NULL, '1', 'TRUCK', '989c37142c78401c824', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('66d9ae7e531c4e179e8', '底盘开关', '底盘开关', '底盘开关', '', '1', NULL, '1', 'TRUCK', 'b5dced88684641bd8a5', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('677f4c74866a4ae1875', '空气悬架ECU', '控制机构', '空气悬架ECU', '', '1', NULL, '1', 'CAR', '9001b62c22c344049e9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('67961727e73b48caa1b', '外部小灯', '外部照明', '外部小灯', 'VPA;BBR', '1', NULL, '1', 'TRUCK', 'a9f4acff30af44f0963', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('67e971c566cf4d2ca0e', '远程踏板', '加速传动装置', '远程踏板', '', '1', NULL, '1', 'TRUCK', '50d653e4784d4dff878', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('685c0df6b92140d5903', '前悬架推力杆', '前悬架导向机构', '前悬架推力杆', 'VPP;CSF;PAF', '1', NULL, '1', 'TRUCK', 'a8ef061caf734e8da7f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('688713a2676d479cb08', '皮卡货箱总成', '白车身模块团队', '皮卡货箱总成', '', '1', NULL, '1', 'CAR', 'e62950fdbf664a2e8ac', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6891d6cd1aae49dfbfe', '行车制动阀', '底盘控制系统', '行车制动阀', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('691143286c8548a7913', '组合仪表', '组合仪表', '组合仪表', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '83ef773d910442f7952', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('69686072344844fe977', '车身悬置', '白车身模块团队', '车身悬置', '', '1', NULL, '1', 'CAR', 'e62950fdbf664a2e8ac', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('69a1668a9dc948b7bd8', '液压锁进油管', '车身翻转系统', '液压锁进油管', 'VPP;BBL;BBF', '1', NULL, '1', 'TRUCK', '42fb49ee9e9e4eb4951', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('69bada305608430d90a', 'ESC HECU', 'ESC HECU', 'ESC HECU', '', '1', NULL, '1', 'TRUCK', '77d8c9fd58fe446082a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6a020b61a2d145c1ad2', '动传系统', '根节点', '动传系统', '', '1', NULL, '1', 'CAR', '10000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6a87171bbcd64debac9', '前悬架安装图', '前悬架', '前悬架安装图', '', '1', NULL, '1', 'TRUCK', 'f56ab73a05494773bb6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6aa0c636ad2a449fb8a', '驻车继动阀', '底盘控制系统', '驻车继动阀', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6b01ed45532a4f7ba58', '网关', '整车级控制模块', '网关', 'VPP', '1', NULL, '1', 'TRUCK', '986b9aec1f224f47bde', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6b56aab0228541fca0e', '车轮(备)', '车轮', '车轮(备)', 'VPA;CTX;CTL;CTD;CTN', '1', NULL, '1', 'CAR', '34f26c73337147cb941', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6b5a7037486f4617afa', '排气管', '排气系统', '排气管', '', '1', NULL, '1', 'TRUCK', 'c61b7f6308894c1ab17', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6bc9f538d0964a2e999', '组合开关', '组合开关', '组合开关', 'PTT', '1', NULL, '1', 'CAR', '460804aaba4940fba34', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6c1ef14587c949a6b8c', '灭火器总成', '灭火器总成', '灭火器总成', '', '1', NULL, '1', 'TRUCK', '2e0c2dae21a14cf1814', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6c295a1c752b4d8eadb', '燃料电池进气系统模块', '燃料电池系统模块', '燃料电池进气系统模块', '', '1', NULL, '1', 'CAR', 'af18c09592ef40dfa76', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6c4d905ce9cc4b38988', '发动机总成', '发动机模块团队', '发动机总成', '', '1', NULL, '1', 'CAR', '0872b8d750e9426080a', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6ca8c054f44f4365916', '低速行人警示器', '信号装置', '低速行人警示器', 'VPP', '1', NULL, '1', 'CAR', 'efd359f1da5040198f2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6d026b21e7b943a9aa4', '后悬架导向机构', '后悬架', '后悬架导向机构', '', '1', NULL, '1', 'CAR', '20f0e96840d54a858ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6df6c66cf53949df960', '环境温度传感器', '环境温度传感器', '环境温度传感器', 'MPS;MPI', '1', NULL, '1', 'CAR', '85b01f99ad2349559b0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6e12603c93e346d2992', '多合一动力总成', '电驱动总成', '多合一动力总成', '', '1', NULL, '1', 'TRUCK', 'd16aba83b0ba4da19ec', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6e79bc0b65724ac19da', '独立热源管路(底盘部分)', '独立热源装置', '独立热源管路(底盘部分)', 'VPT;VPP;MIH;VPA;CFL;CFR', '1', NULL, '1', 'TRUCK', '85ed436787944e7f885', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6e87ef6137c24309b06', '发动机风扇数据', '发动机标定数据', '发动机风扇数据', 'PEF;PEO', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6e888ba7f9074b27a78', '悬架控制系统安装图', '空气悬架控制机构', '悬架控制系统安装图', '', '1', NULL, '1', 'CAR', '9833f378529f4908ab8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6f2064a0a9a4496ab56', '安全气囊组件', '安全电子装置', '安全气囊组件', '', '1', NULL, '1', 'TRUCK', 'd0f329a1b1f848989b5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6f6cad1eb5f740889f4', '后桥安装螺栓', '后悬架弹性元件', '后桥安装螺栓', 'VPW;VPR;VPK', '1', NULL, '1', 'CAR', '27c06cb9fb54453489a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6fb7cefea5af442f9fa', '转向管柱带可调机构', '转向控制装置', '转向管柱带可调机构', '', '1', NULL, '1', 'CAR', 'b8a58865a7f54495882', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6fc558b40c0440969ca', '变速器润滑油', '变速器润滑油', '变速器润滑油', 'PTB;PTT;PTA;PTR', '1', NULL, '1', 'TRUCK', 'd211659dd10646d9be0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6fd746ed48c34c45afb', '轮边制动模块', '制动模块团队', '轮边制动模块', '', '1', NULL, '1', 'CAR', '77efdfad20654812a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6fdb2eb34bac413c865', '新能源整车控制器', '新能源整车控制器', '新能源整车控制器', '', '1', NULL, '1', 'CAR', 'f11574f801b74d81b14', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('6ffbf28eb75f47b1af6', '车门密封', '车门附件', '车门密封', '', '1', NULL, '1', 'CAR', '8fcbbab3923e4c8ca11', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('704c0839beb74b00bac', '空气悬架标定数据', '控制机构', '空气悬架标定数据', '', '1', NULL, '1', 'CAR', '9001b62c22c344049e9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('709919b116f147cb927', '转向管柱带可调机构', '转向管柱带可调机构', '转向管柱带可调机构', 'VPP;CZA;MAP', '1', NULL, '1', 'CAR', '6fb7cefea5af442f9fa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('70a8efdcad17426a93c', 'EPB模块', 'EPB模块', 'EPB模块', 'VPW;MBK', '1', NULL, '1', 'CAR', '94b749dd1c2347c784b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('70b165ff3b784e67b8d', '储物盒', '储物盒', '储物盒', '', '1', NULL, '1', 'TRUCK', '224886c8c6f44569851', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('70c0285fb94a4159a06', '室内灯总成', '内部照明', '室内灯总成', '', '1', NULL, '1', 'CAR', '8d1e8c3a6d8a4e0db81', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('70cf10adbbbc4331bc5', '发动机模块团队', '动传系统', 'MTT1 发动机模块团队', '', '1', NULL, '1', 'TRUCK', '1b0e6d58288440a6807', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('70de3190fcb74c92977', '后排座椅', '座椅', '后排座椅', '', '1', NULL, '1', 'CAR', '523070b2ef7e4bf6994', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('70f526d38d1e4a899f1', '差速气管', '辅助用气管', '差速气管', 'VPP;VFW;PRM;MAA;MAE', '1', NULL, '1', 'TRUCK', '9cde6e5e71784ab6adf', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('71193b88b6104c5ab56', '取力器开关', '仪表台开关', '取力器开关', 'PPM', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7119fc5e664941c3b3f', '蓄电池附件', '电力供应', '蓄电池附件', '', '1', NULL, '1', 'CAR', '145701be62f6450ba45', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('71407f89854d44e6aaa', '燃油转换开关', '仪表台小开关1', '燃油转换开关', 'VPT;VPP;CFT', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('714fbde5a42a41d5857', '车前线束总成', '车身线束', '车前线束总成', '', '1', NULL, '1', 'CAR', 'ece47900c0894a21a3b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('71a2d3d194d34118a5b', '前驱动桥总成', '前/后桥总成', '前驱动桥总成', 'VPW;VPR;PAR;MBR;PRW;ABS/EBS', '1', NULL, '1', 'CAR', '5baba0982cef41c08a4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('71b50ae164aa4569bcd', '变速器', '变速器及安装件', '变速器', 'PTA;PTD;PTB;PTC;PTT;', '1', NULL, '1', 'CAR', '7ece4aad73e5424ea93', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('71f0a5529d834f56a9c', '螺旋弹簧', '前悬架弹性元件', '螺旋弹簧', '', '1', NULL, '1', 'TRUCK', 'c5dbe9ac533e4cd19c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('71f8485ed00248f5a51', '无线充电', '电器附件', '无线充电', 'MPD', '1', NULL, '1', 'CAR', 'f420e6eee0214018b9a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7208b7dfaf07484ca28', '变速器冷却装置', '变速器冷却装置', '变速器冷却装置', 'PTA;PTD;PTB;PTC;PTT;', '1', NULL, '1', 'CAR', '2b6083b87c7d48748a7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('72144ae6c19b41dcbc3', '变速器润滑油', '变速器', '变速器润滑油', '', '1', NULL, '1', 'CAR', '0237c132c12e4a4cae4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7223a2b05e7647a18a5', '转向执行元件', '转向动力装置', '转向执行元件', '', '1', NULL, '1', 'CAR', '97073dda2a19415aa11', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('72cc136bbe894597996', '空气悬架均衡梁', '后悬架支架', '空气悬架均衡梁', '', '1', NULL, '1', 'CAR', 'ee9c99b30602473bb7b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('72ed1024f33f4ad286a', '底盘线束', '线束', '底盘线束', '', '1', NULL, '1', 'TRUCK', '2afcde230efb451180b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7343b323a7d5400dabc', '导流罩', '导流装置', '导流罩', 'VPT;VPP;VPW;BEA;VPA;BBR;BBF;BBL;BBW', '1', NULL, '1', 'TRUCK', '59366efa0bba4054b44', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('73444730a92e4edf98b', '侧围外饰', '外饰系统模块团队', '侧围外饰', '', '1', NULL, '1', 'TRUCK', 'ae239020b49d40e49a2', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7361418594ba4eb9b38', '负离子发生器', '负离子发生装置', '负离子发生器', 'VPT;VPP;MOA;BBR', '1', NULL, '1', 'TRUCK', '431e44b36efa41d69c3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('736b894a062e45afb5f', '反光标识', '侧围外饰', '反光标识', '', '1', NULL, '1', 'TRUCK', '73444730a92e4edf98b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7397b79c74b24af7a87', '车门内饰', '车门附件', '车门内饰', 'VPP;VPA;BOA', '1', NULL, '1', 'TRUCK', 'fa589893b31646768a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('73c5fddfbd834a79a30', '后悬架缓冲块', '后悬架', '后悬架缓冲块', '', '1', NULL, '1', 'CAR', '20f0e96840d54a858ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('73edb351d582494885f', '货厢模块团队', '车身系统', 'MTB3 货厢模块团队', '', '1', NULL, '1', 'TRUCK', 'd68f61afae4d4b51bf9', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7411cb5850814962ba4', '灭火器总成', '灭火器总成', '灭火器总成', '', '1', NULL, '1', 'CAR', '8399b5fe2fb64e0cbed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('744700d134b74f899a6', '副车架', '前悬架支架', '副车架', '', '1', NULL, '1', 'TRUCK', '29c20f9b63844790a15', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7450d8c234c34a0aa9f', '管路装置', '燃油管路及附件', '管路装置', '', '1', NULL, '1', 'TRUCK', 'f3e6824d388245c1aa6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('748fe2866bf04938979', '传动轴安装图', '传动轴系统', '传动轴安装图', '', '1', NULL, '1', 'TRUCK', '83df5179313e4694a77', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('749ba3f502554748bd1', '动力总成前悬置', '动力总成悬置', '动力总成前悬置', 'VPP;VPA;PEF;VFF;PTT;VPL', '1', NULL, '1', 'TRUCK', '5a8b674918fd4393a79', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('74a15cb13c844dde9a1', '前防护总成', '前防护总成', '前防护总成', 'VPP;VPA', '1', NULL, '1', 'CAR', 'ae9a2710d9a841fe854', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('74bd659e3a49470d830', '前排座椅', '座椅', '前排座椅', 'VPP;VFD;BDP;BDA;BDE;BDF;BDG;BDH;BDJ;BDL;BDM;BDS;BDW;BDK;BDN;BDC', '1', NULL, '1', 'TRUCK', '807f79cf8ee848a2b66', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('74d77c71e6464d4d89e', '护厢宝', '皮卡货箱附件', '护厢宝', '', '1', NULL, '1', 'CAR', 'e5343b891d9a40b9b97', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('75001bcf64fa45e4b29', 'ABS模块', 'ABS模块', 'ABS模块', 'VPW;ABS/EBS;MAE', '1', NULL, '1', 'CAR', 'ed304b1bfab8413fbf8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('752e8e33d26d490cb97', '真空罐单元', '真空管路单元', '真空罐单元', '', '1', NULL, '1', 'CAR', '0989760269454768b92', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('75724f0f1fd74eb5a00', '气瓶与车架连接件', 'NG供给系统', '气瓶与车架连接件', '', '1', NULL, '1', 'TRUCK', '95233216c66947379cf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('75f5a2debc6e49ffba2', '空气悬架管束', '空气悬架管束', '空气悬架管束', 'VPP;VPA;VPW;VFW', '1', NULL, '1', 'TRUCK', 'a111cf00d371463cbd5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('760a7076058d4404b8a', '氢燃料电池模块团队', '新能源系统', 'MTN5 氢燃料电池模块团队', '', '1', NULL, '1', 'CAR', 'b093de0c2d844ecdb25', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('766aa5bc484942e48e2', '发动机PTO开关', '仪表台开关', '发动机PTO开关', 'PPP', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('76b73defda7a412ca45', '货箱附件', '货厢模块团队', '货箱附件', '', '1', NULL, '1', 'TRUCK', '73edb351d582494885f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('76de56b76e0d4931971', '车身控制器', '系统级控制模块', '车身控制器', 'VPP;MKK;PFP', '1', NULL, '1', 'TRUCK', 'a22e83f4e6d047fb8bd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('772c4f573260436ea05', '前桥总成', '前桥总成', '前桥总成', 'VPW;VFS;VPO;VFD;VFW;MBF;PFM;PFW;PFB', '1', NULL, '1', 'TRUCK', '07690486230846fc9da', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('773084a078af45a28f4', '空滤器出气管路装置', '进气', '空滤器出气管路装置', 'VPP;CAA;VPA;PEF;BBL', '1', NULL, '1', 'TRUCK', '989c37142c78401c824', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('774f6a305f6343cc997', '车轮轮胎总成安装图', '车轮轮胎总成安装图', '车轮轮胎总成安装图', '', '1', NULL, '1', 'CAR', '5c7a2b158f3f4860a95', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('776680355ac34feb941', '内后视镜', '后视镜', '内后视镜', '', '1', NULL, '1', 'CAR', 'e55894493a3e4809bd3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('77a5724dabb64417a74', '驱动桥总成', '驱动桥模块团队', '驱动桥总成', '', '1', NULL, '1', 'CAR', 'cca8963dfa6a47078db', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('77bce814782c455ba40', '侧围贴膜', '侧围外饰附件', '侧围贴膜', 'VPT;VPP;VPL', '1', NULL, '1', 'TRUCK', '23985514affb49d5aa5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('77c2574441a14d81a57', '发动机燃料', '发动机燃料', '发动机燃料', '', '1', NULL, '1', 'CAR', '00946b6eab4147e39b2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('77d8c9fd58fe446082a', 'ESC HECU', '底盘控制系统', 'ESC HECU', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('77efdfad20654812a55', '制动模块团队', '底盘系统', 'MTC2 制动模块团队', '', '1', NULL, '1', 'CAR', '96179a631abf41ee90c', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7812b7226b0b42f4a6a', '上车扶手', '走台', '上车扶手', 'VPP;VPA;MVB', '1', NULL, '1', 'TRUCK', '98d2d07cbe1143259aa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7866b048e70d4713a99', '信号装置', '电器标准部件', '信号装置', '', '1', NULL, '1', 'TRUCK', '9c8d99bbe2c8467c9ff', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('786dc9eefcbb44cfb2a', '锁止机构总成', '锁止机构总成', '锁止机构总成', '', '1', NULL, '1', 'TRUCK', '0cc8c1371c37481b8f2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('788f16bc210145a3877', '前悬架阻尼系统', '前悬架', '前悬架阻尼系统', '', '1', NULL, '1', 'TRUCK', 'f56ab73a05494773bb6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('78d7d2a9bb5942f5b7e', '车身制动线束总成', '车身线束', '车身制动线束总成', 'VPP;VFD;MAA;MAP;MAS;MAE', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7903f54759d44756be8', '驻车空调', '驻车空调装置', '驻车空调', 'VPT;VPP;MCP;BBR', '1', NULL, '1', 'TRUCK', '33860efd4c60492f984', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('794422f084664251a6e', '标志标识', '外包装', '标志标识', '', '1', NULL, '1', 'CAR', '93ed477b415547748f5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7969ca76c80c4a6c973', '空气悬架均衡梁', '后悬架支架', '空气悬架均衡梁', 'VPW;CSR;VFG', '1', NULL, '1', 'TRUCK', 'f90d3ea928074f788a4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('799f66d5a1794bdd87d', '转向换向器总成', '转向执行元件', '转向换向器总成', '', '1', NULL, '1', 'TRUCK', '46479e02a6274b379e0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('79a4d1abd8cb4d00b9e', '内饰模块团队', '车身系统', 'MTB4 内饰模块团队', '', '1', NULL, '1', 'CAR', '203ab4100a4448ef841', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('79e0dcfc0bcf46a9aea', '桥间传动轴总成', '传动轴总成', '桥间传动轴总成', 'VFW;PRM', '1', NULL, '1', 'TRUCK', '1e899728ae184978b1d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('79e51564a85e4ad2bac', '标牌', '标牌及标识', '标牌', '', '1', NULL, '1', 'TRUCK', '0389181e247944cfaf7', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7a0fa703a52145b79c0', '翻转机构总成', '车身悬置及翻转锁止机构', '翻转机构总成', '', '1', NULL, '1', 'TRUCK', '54ca4ce84d1d4773b6b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7a9ab483454346f6a32', '电源交流逆变器', '电源转换模块', '电源交流逆变器', 'VPT;VPP;MPV', '1', NULL, '1', 'TRUCK', '077260d889a941bd96d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7aa2842653254ad689e', '发动机开关', '仪表台小开关1', '发动机开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7aa3c2154dda4092952', '阀和传感器', '空气悬架控制机构', '阀和传感器', '', '1', NULL, '1', 'TRUCK', '905ce7dd67024993897', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7ad6072a68ef414c948', '前钢板弹簧', '前悬架弹性元件', '前钢板弹簧', 'VPP;VPA;VPW;PAF;CSF', '1', NULL, '1', 'TRUCK', 'c5dbe9ac533e4cd19c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7b2c6fdff03e492bb5f', '前悬架推力杆支架', '前悬架支架', '前悬架推力杆支架', 'VPP;CSF;PAF', '1', NULL, '1', 'TRUCK', '29c20f9b63844790a15', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7b51ae72978b4068ab5', '前保杠', '保杠', '前保杠', '', '1', NULL, '1', 'CAR', '9c5c9c62061e4a07a00', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7bf4f91511cf447cbdf', '换挡传动装置', '变速器控制机构', '换挡传动装置', '', '1', NULL, '1', 'TRUCK', 'b884804a0907480d9b8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7c18fb9c1a49476d811', 'DPF后处理警示牌', '排气系统', 'DPF后处理警示牌', '', '1', NULL, '1', 'CAR', 'b98e750ba0af48d2ad8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7c9b85d5e0814775976', '独立热源管路(底盘部分)', '独立热源装置', '独立热源管路(底盘部分)', '', '1', NULL, '1', 'CAR', 'eb2042bcdd84453ea9f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7d153ce02647425587a', '油门踏板', '加速传动装置', '油门踏板', '', '1', NULL, '1', 'TRUCK', '50d653e4784d4dff878', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7d3ae85793124635b97', '中悬固定支架', '车身中悬', '中悬固定支架', '', '1', NULL, '1', 'TRUCK', '549d8f1e9784408c9bc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7d70e0833cb54a4b8aa', 'ESC模块传感器', 'ESC模块传感器', 'ESC模块传感器', 'MAP;MAE', '1', NULL, '1', 'CAR', '02e9d53a008f41a0839', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7d980a6035ae4665897', '标识', '标牌及标识', '标识', '', '1', NULL, '1', 'TRUCK', '0389181e247944cfaf7', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7dc032ac581044d79bd', '传动轴附件', '传动轴附件', '传动轴附件', 'VFW;PRM', '1', NULL, '1', 'CAR', 'a4faf1118b094c179dd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7e0d38e7d6a0425cbf6', '底盘液压管路', '制动模块团队', '底盘液压管路', '', '1', NULL, '1', 'TRUCK', '39f42fade11a450abdf', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7e30f4bdd16f451786c', '发动机结构类附件', '发动机总成', '发动机结构类附件', 'VPP;VPA;BBF;PED;PES', '1', NULL, '1', 'TRUCK', '1908dd932e4d40a8bee', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7e422aa4866141af9f4', '发动机搭铁线', '底盘线束', '发动机搭铁线', 'VPP;VFT;VFE;PES;PED', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7e4d9bd443a040d3b76', '散热防护装置', '封装', '散热防护装置', 'VPP;VPA', '1', NULL, '1', 'TRUCK', '119b9a165409487392a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7e717124cd0c4ff496f', '发动机风扇', '发动机总成', '发动机风扇', 'VPP;VPA;PEF;PEP;PEO', '1', NULL, '1', 'TRUCK', '1908dd932e4d40a8bee', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7e974c78530e41ae88b', '后防护总成', '防护', '后防护总成', '', '1', NULL, '1', 'CAR', '15bee05d48e64c9d91b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7ece4aad73e5424ea93', '变速器及安装件', '变速器', '变速器及安装件', '', '1', NULL, '1', 'CAR', '0237c132c12e4a4cae4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7ef4bcd291fa4b0e985', '转向灯总成', '外部照明', '转向灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7f15ca7097b74e2ca0b', '信息显示系统', '信息娱乐显示模块', '信息显示系统', '', '1', NULL, '1', 'CAR', '0913953554a6445fbab', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7f380eb0dc514875b46', '转向传动轴总成', '转向传动轴总成', '转向传动轴总成', 'VPP;BBF;CZA', '1', NULL, '1', 'CAR', '34d566e09ba04c5f91f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7f5a8cd58cdd4e55b62', '车架主线束总成', '底盘线束', '车架主线束总成', 'VPP;VPL;VPW;VPA;VFT;VFE;VFD;VFS;VFW;BBF;BBL;BLW;BLT;CTM;MPR;CFU;CFL;CFR;CFT;MBK;MPV;MAO;MAW;MAC;MAB;MCP;MVC;MVB;MWV;MOS;PTB;PTR;PTA;PPM;PPP;PEE;PES;PED;PRM;GMS;GMR;MAA;MAE', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7fa1fd9a929d468fb26', '车身脚踏板', '上车踏板', '车身脚踏板', '', '1', NULL, '1', 'CAR', '92c2ca5580d14d19b2a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('7ffc4929b9034337878', '车身后悬', '车身悬置', '车身后悬', '', '1', NULL, '1', 'TRUCK', '299058b2f9cb4d1ab03', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('80157f12cb404bce8eb', '驾驶员监测', 'ADAS模块', '驾驶员监测', 'VPT;VPP;MAF', '1', NULL, '1', 'TRUCK', 'bf94e2d3b8c0458fa4d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('804661b6223f4496ab5', '角毫米波雷达', '雷达模块', '角毫米波雷达', '', '1', NULL, '1', 'CAR', '26ea0c409b2e4c04b41', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('80577849d47d418bbde', '前悬架稳定杆', '前悬架', '前悬架稳定杆', '', '1', NULL, '1', 'TRUCK', 'f56ab73a05494773bb6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('805be245acbb4fd290c', '车身NVH降噪', '白车身附件', '车身NVH降噪', '', '1', NULL, '1', 'CAR', '9ca01e18532e415e812', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('807f79cf8ee848a2b66', '座椅', '座椅', '座椅', '', '1', NULL, '1', 'TRUCK', '16ac5d6ce95d4ff6a85', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('808f8fdff3dc4125a5b', '挂车连接头及螺旋管', '挂车供气组件', '挂车连接头及螺旋管', 'VPA', '1', NULL, '1', 'TRUCK', '5024d280b7ba493a804', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('809a628f9753435b849', '燃油箱及附件', '燃油系统', '燃油箱及附件', '', '1', NULL, '1', 'CAR', '4a5710964c7a489788e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('80bae733f4f74539aef', '安全电子装置', '安全电子装置', '安全电子装置', '', '1', NULL, '1', 'CAR', '8c8976106c7b4db984f', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('80e051ac95fe4430b3b', '手动再生开关', '仪表台开关', '手动再生开关', 'VPW;PPM', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('80e9ae3299d84bc3b56', '高位进气道装置', '进气', '高位进气道装置', 'VPP;VPA;BBL;PEF', '1', NULL, '1', 'TRUCK', '989c37142c78401c824', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('81374beca2034977b85', '转向传动轴总成', '转向传动轴总成', '转向传动轴总成', 'VPP;VPA;BBF;CZA', '1', NULL, '1', 'TRUCK', 'a3e856149f264700bd1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('818e8aad90924b70ac5', '后稳定杆', '后稳定杆', '后稳定杆', 'VPP;VPW;VPR;VFG', '1', NULL, '1', 'TRUCK', 'a6c40fbb6dd24c2e88b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('81982726b60e4d0eb4a', '控制模块', '电控模块团队', '控制模块', '', '1', NULL, '1', 'TRUCK', '5278f7a6bb904ae9bda', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('819a4fb585fd4755b38', '分动器及安装件', '分动器', '分动器及安装件', '', '1', NULL, '1', 'CAR', 'c65c74fd5fd84f2d978', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('81c8edd96a8c4dac896', '电器原理图', '线束', '电器原理图', '', '1', NULL, '1', 'TRUCK', '2afcde230efb451180b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('81c943e5abfb4ee9b6f', '二合一动力总成', '电驱动总成', '二合一动力总成', '', '1', NULL, '1', 'CAR', '10904305f50447e2942', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8284e34665ad415a974', '转向管路', '转向管路', '转向管路', '', '1', NULL, '1', 'TRUCK', '1a36f753272044bda5b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8287fa75d6e44f0c89f', '后悬架阻尼系统', '后悬架', '后悬架阻尼系统', '', '1', NULL, '1', 'TRUCK', '664320104d6e4072a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('829f524170d84c3282d', '电力供应', '电控模块团队', '电力供应', '', '1', NULL, '1', 'TRUCK', '5278f7a6bb904ae9bda', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('82dbdfda90714281876', '驻车制动拉线', '底盘控制系统', '驻车制动拉线', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('830f7e6f36e843d9a25', '取力器开关', '仪表台小开关1', '取力器开关', 'VPT;VPP;PPM;PTB', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('832f80a91265421cbfe', '新能源整车控制器', '新能源整车控制器', '新能源整车控制器', '', '1', NULL, '1', 'TRUCK', '5faa6875dbf84f3e9f4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8381b25bec984205a19', '高压线束', '高压线束总成', '高压线束', '', '1', NULL, '1', 'TRUCK', '8dbd64119cf94540af6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('83969ce9ff3d4614b5f', '悬架模块团队', '底盘系统', 'MTC3 悬架模块团队', '', '1', NULL, '1', 'TRUCK', 'de5ff69d07d349e6aa0', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8399b5fe2fb64e0cbed', '灭火器总成', '动力电池系统模块', '灭火器总成', '', '1', NULL, '1', 'CAR', '47e109950fb34bde957', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('83df5179313e4694a77', '传动轴系统', '驱动桥模块团队', '传动轴系统', '', '1', NULL, '1', 'TRUCK', '2e7835c63d0c4d70874', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('83ef773d910442f7952', '组合仪表', '信息娱乐显示模块', '组合仪表', '', '1', NULL, '1', 'TRUCK', '9b2e4a83cbf448c9af9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('844e4f4c4ea6430d9a7', '空滤系统', '进气', '空滤系统', '', '1', NULL, '1', 'CAR', 'c062ea2dda37495682e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('844eb9cd21184d00948', '尿素罐装置', '后处理系统', '尿素罐装置', '', '1', NULL, '1', 'TRUCK', '933cbb6576cc4fc887d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('845f372237834def87e', '后空气悬架提升机构', '后空气悬架提升机构', '后空气悬架提升机构', 'VPW', '1', NULL, '1', 'TRUCK', 'b13e2a6bd28e4994816', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('84745220c27249f1b04', 'HSA系统开关', '仪表台小开关1', 'HSA系统开关', 'VPT;VPP;MAU;MBK', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('84a342a77925454ca1c', '前滑柱组件', '前悬架弹性元件', '前滑柱组件', '', '1', NULL, '1', 'CAR', '2e5d8e96f9004b52927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('84bc69b24fef4722bf2', '离合器油', '离合系统', '离合器油', '', '1', NULL, '1', 'TRUCK', '9db17e9517e143b2a18', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('84ca5a67e3504dbdb69', '挡泥板防护罩总成', '挡泥板防护罩总成', '挡泥板防护罩总成', 'VPW;CCM', '1', NULL, '1', 'TRUCK', '5011e0d9dcba4289909', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('84e366750c5e4d409fc', '空调箱总成', '暖气装置', '空调箱总成', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8519e3cc4da94b0a8df', '侧防护总成', '货箱附件', '侧防护总成', '', '1', NULL, '1', 'TRUCK', 'a70a05370ec64436bca', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('854f7ebf0ac946cb9a2', '行程开关', '驾驶室开关', '行程开关', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('85741ba04d964c82b46', '阳光环境光传感器', '传感器', '阳光环境光传感器', '', '1', NULL, '1', 'CAR', '296049fd99424191945', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('858e774b18b54d80858', '后轮挡泥板总成', '货箱附件', '后轮挡泥板总成', '', '1', NULL, '1', 'TRUCK', 'a70a05370ec64436bca', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('85b01f99ad2349559b0', '环境温度传感器', '传感器', '环境温度传感器', '', '1', NULL, '1', 'CAR', '296049fd99424191945', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('85d488c38b14462388e', '驻车继动阀', '驻车继动阀', '驻车继动阀', 'VPA;VPW;MBK;MAA;MAE', '1', NULL, '1', 'TRUCK', '6aa0c636ad2a449fb8a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('85ed436787944e7f885', '独立热源装置', '暖风/空调', '独立热源装置', '', '1', NULL, '1', 'TRUCK', '9ee5a4c5b4d44c0dab3', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8717cf8cabf64422842', '随车工具总成', '随车工具', '随车工具总成', '', '1', NULL, '1', 'TRUCK', 'f524fdba85e8476484a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('875ea2c6e85b46a9b96', '顶棚线束总成', '车身线束', '顶棚线束总成', '', '1', NULL, '1', 'CAR', 'ece47900c0894a21a3b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8777d6a77b354b6fac6', '轮胎(后)', '轮胎', '轮胎(后)', 'CTS;CTQ;CTH;VPW', '1', NULL, '1', 'TRUCK', '26fc9b0957ec404fb99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('877aea1aec8548889ec', '预热继电器', '继电器', '预热继电器', 'VPP;VFT;VFE;PES;PED', '1', NULL, '1', 'TRUCK', '1bb0df7e942f469791a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8792f61d320042aab16', '供油系安装图', '燃油系统', '供油系安装图', '', '1', NULL, '1', 'CAR', '4a5710964c7a489788e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('87cb5c04287149deb56', '变速器润滑油', '变速器润滑油', '变速器润滑油', 'PTB;PTT;PTA;', '1', NULL, '1', 'CAR', '72144ae6c19b41dcbc3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('881987e7d1a04cc5a94', '拖地静电带', '底盘线束', '拖地静电带', 'VPP;VFT;PED;GMS', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('88225e0a1b5046878b0', '中段制动管路', '底盘管路', '中段制动管路', '', '1', NULL, '1', 'CAR', '1f85dc26f3ef4e3ca8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('88386c221ea04653927', '电力电子单元总成', '电驱动控制总成', '电力电子单元总成', '', '1', NULL, '1', 'CAR', '9676f570affe4600a7d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('88401f99ea9e4b51979', '四驱开关', '仪表台开关', '四驱开关', 'VPR', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('88662ceff31e42f7b9d', 'DMS控制器', '控制器', 'DMS控制器', '', '1', NULL, '1', 'CAR', '1e9d704ecedc4dd0a56', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8877a5f77ef3461aabc', '定位天线', '天线模块', '定位天线', '', '1', NULL, '1', 'CAR', 'e548cfcad2e04accb51', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('888cbdc9e1d34528a81', '顶柜开关底座', '开关底座', '顶柜开关底座', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '609777e40a844e06b89', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('88d5f46f5f4945c88f3', '行李架', '顶外饰附件', '行李架', '', '1', NULL, '1', 'CAR', '94a0b0da737f4aa0b39', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('88e700c0c64d496bab4', '后板簧盖板', '后悬架弹性元件', '后板簧盖板', 'VPW;VFG;VPO', '1', NULL, '1', 'TRUCK', 'fd4b2eb8f51647f5a2b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('88f84f4c689f4d5790f', '空调控制器', '暖气装置', '空调控制器', 'VPT;VPP;MIH', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8907ea97516d47ad8b6', '回油管总成及支架', '转向管路', '回油管总成及支架', 'VFD;VPA;CZT', '1', NULL, '1', 'CAR', 'e3e32526c1674a02bfa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('894c92a0d70c43c5b69', '发动机润滑油', '发动机总成', '发动机润滑油', 'VFT;PEE;PES;VFE', '1', NULL, '1', 'TRUCK', '1908dd932e4d40a8bee', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8963de1b1120471faad', '真空助力器', '伺服系统', '真空助力器', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('89a2465043e24c1d8d5', '螺旋弹簧支座', '前悬架支架', '螺旋弹簧支座', '', '1', NULL, '1', 'TRUCK', '29c20f9b63844790a15', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('89cc96d2e55e4b31aa9', '后悬置总成', '车身悬置及翻转锁止机构', '后悬置总成', '', '1', NULL, '1', 'TRUCK', '54ca4ce84d1d4773b6b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('89f44cae5a3f4c93b70', '前后围外饰', '外饰模块团队', '前后围外饰', '', '1', NULL, '1', 'CAR', 'ccdf928c99274854a9f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8a0e7c8fa5f44a04b2d', '前桥总成线束安装图', '非驱动前轴模块团队', '前桥总成线束安装图', '', '1', NULL, '1', 'TRUCK', '11c266f3e1394cdfb94', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8a1237d1a7554802991', '前空调管路', '冷气装置', '前空调管路', '', '1', NULL, '1', 'CAR', '0d1cafefd2134b89a8e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8a304a99d3d5465cb8f', '燃料电池排气系统', '燃料电池排气系统模块', '燃料电池排气系统', '', '1', NULL, '1', 'CAR', 'df0091e1f59c433790c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8a32739dd6f24bdd909', '后车架线束总成', '底盘线束', '后车架线束总成', 'VPP;VPL;VPW;VPA;VFW;BLW;PES;PRM;MAA;MAE', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8a423513397b49d09a0', '动力总成后悬置', '动力总成悬置', '动力总成后悬置', 'VPP;VPA;PEF;VFF;PTT;VPL;VPW', '1', NULL, '1', 'TRUCK', '5a8b674918fd4393a79', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8a589654f62f448a957', '开闭件模块团队', '车身系统', 'MTB6 开闭件模块团队', '', '1', NULL, '1', 'TRUCK', 'd68f61afae4d4b51bf9', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8ac1523e63f24fa1b42', '封装', '进气模块团队', '封装', '', '1', NULL, '1', 'TRUCK', '1be9ec911dfc4d23b8f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8b0e4a06213d4206a8a', '外后视镜', '后视镜', '外后视镜', '', '1', NULL, '1', 'CAR', 'e55894493a3e4809bd3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8b52f3749989498899d', '尿素供给装置', '尿素供储装置', '尿素供给装置', 'CFL;CFR;CFU;VFE;PEE;VPA;VPW;VFG;VPP;VFF', '1', NULL, '1', 'TRUCK', '2a5d62203f7a4a3ebd0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8b58dc1ebc994ba7a83', '后牵引装置', '后牵引装置', '后牵引装置', 'VPP;VPA', '1', NULL, '1', 'TRUCK', '13c88454a219437e9c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8b93bca8a918458ab88', '仪表板总成', '仪表板', '仪表板总成', 'PTA;MMM;BOT;BBF', '1', NULL, '1', 'TRUCK', '484a1ec503c645faaf6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8bc0d5846e8f4082b03', '前格栅', '前后围外饰附件', '前格栅', '', '1', NULL, '1', 'CAR', '37ac40b71a0743368c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8bc348e8a606477790f', '新能源整车控制模块', '整车控制模块团队', '新能源整车控制模块', '', '1', NULL, '1', 'CAR', '3b61f72a46d24984a0d', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8c1e1bbb62c14fa8b5f', '燃料电池冷却附件', '冷却系统及附件模块', '燃料电池冷却附件', '', '1', NULL, '1', 'TRUCK', '9d15b26d3f62418a821', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8c52c269226d489298e', '出风口总成', '前后围外饰附件', '出风口总成', '', '1', NULL, '1', 'CAR', '37ac40b71a0743368c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8c714ac13e184a6f9be', '后排安全带', '安全带', '后排安全带', '', '1', NULL, '1', 'TRUCK', 'ea31c0b8337845b6bc9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8c8976106c7b4db984f', '安全电子装置', '电控模块团队', '安全电子装置', '', '1', NULL, '1', 'CAR', '2ae611e7d78e4d35b99', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8c90ba8150034a60b5e', '压缩机及管路', '冷气装置', '压缩机及管路', '', '1', NULL, '1', 'CAR', '0d1cafefd2134b89a8e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8ca5f23ec619434cabc', '车门通用附件', '车门结构', '车门通用附件', 'VPP', '1', NULL, '1', 'TRUCK', 'e76aa6733baa4ac8a64', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8cb1f2a2faa143b0b52', '后排座椅', '座椅', '后排座椅', '', '1', NULL, '1', 'TRUCK', '807f79cf8ee848a2b66', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8cdadb841b8f4957936', '发动机燃料', '发动机燃料', '发动机燃料', 'PED;PEE', '1', NULL, '1', 'TRUCK', '17d8efa51f354f38869', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8cf61a8ed9aa4a70b17', '底盘线束', '线束', '底盘线束', '', '1', NULL, '1', 'CAR', '5191d54e1a8c47ad967', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8d194e4cea3f4ea381b', '顶棚线束总成', '车身线束', '顶棚线束总成', 'VPP;VFD;BBR;MAF;GMS;GMR;MAB', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8d1e8c3a6d8a4e0db81', '内部照明', '车身电器', '内部照明', '', '1', NULL, '1', 'CAR', 'b9feb9bbee8c4c82adc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8db70eeca8e84faf976', '燃油滤清器', '燃油系统', '燃油滤清器', '', '1', NULL, '1', 'TRUCK', 'c43830c7eda24f03a6e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8dbd64119cf94540af6', '高压线束总成', '高压线束模块', '高压线束总成', '', '1', NULL, '1', 'TRUCK', 'e1b5add6b26e458da07', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8e1e55426d4e452b830', '加油装置', '燃油管路及附件', '加油装置', '', '1', NULL, '1', 'CAR', '96125fda78a040528ed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8e4321e99cc745448e3', '自动变速器基础数据', '自动变速器基础数据', '自动变速器基础数据', 'VPP;PTB;PTT;PTA;', '1', NULL, '1', 'CAR', 'b837d4c9ea934ba7be4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8e53eb0d162444b3b0d', '气压传感器', '传感器模块', '气压传感器', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '064c18ba6e94424a834', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8e58753de18545e3be0', '变速器辅助悬置', '动力悬置', '变速器辅助悬置', '', '1', NULL, '1', 'TRUCK', 'e47668067e6343d6bfe', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8e74bfab3c91489ca76', '后悬推力杆支架', '后悬架支架', '后悬推力杆支架', '', '1', NULL, '1', 'CAR', 'ee9c99b30602473bb7b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8eb2ca98602b4a858b5', '安全带', '安全带', '安全带', '', '1', NULL, '1', 'CAR', '5d7e4c627ddd4f29b29', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8ec679e2d0344d63a08', '燃油箱及附件', '燃油箱及附件', '燃油箱及附件', 'CFL;CFR;VPP;VPA;VFE', '1', NULL, '1', 'TRUCK', '039dea45df694fafb6b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8eeeb3e1832740e38dd', '负离子发生器', '负离子发生装置', '负离子发生器', '', '1', NULL, '1', 'CAR', 'a52a6cc0725d4ee6aa2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8f3cd1d779a94a72b12', '离合器油', '离合系统', '离合器油', '', '1', NULL, '1', 'CAR', '3d6280ec515448d88cb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8f5806063e014a6fab8', '空调控制器', '暖气装置', '空调控制器', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8fa041951cb24a84ac4', '整车控制器', '整车级控制模块', '整车控制器', 'MKK;PFP;MOD', '1', NULL, '1', 'CAR', '1f01b0f643b642d0b42', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8fcbbab3923e4c8ca11', '车门附件', '开闭件系统', '车门附件', '', '1', NULL, '1', 'CAR', 'c5dd66898cff4528983', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('8fe4a83b845e48a89ab', '车架模块团队', '底盘系统', 'MTC1 车架模块团队', '', '1', NULL, '1', 'CAR', '96179a631abf41ee90c', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9001b62c22c344049e9', '控制机构', '空气悬架控制机构', '控制机构', '', '1', NULL, '1', 'CAR', '9833f378529f4908ab8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('90234341680a40ca98f', '倒车蜂鸣器', '信号装置', '倒车蜂鸣器', 'VPT;GMR', '1', NULL, '1', 'TRUCK', '7866b048e70d4713a99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('90270246ed0c40efab7', '氢系统模块', '氢燃料电池模块团队', '氢系统模块', '', '1', NULL, '1', 'TRUCK', '9b174da6ff4d447ca4e', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('905ce7dd67024993897', '空气悬架控制机构', '悬架模块团队', '空气悬架控制机构', '', '1', NULL, '1', 'TRUCK', '83969ce9ff3d4614b5f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('90bfdd3497cc441ebb3', '转向动力源', '转向动力装置', '转向动力源', '', '1', NULL, '1', 'CAR', '97073dda2a19415aa11', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('90ec1895ea5446dab84', '伺服真空软管', '伺服真空软管', '伺服真空软管', '', '1', NULL, '1', 'TRUCK', '36e97dcf2434496482d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9111c491c968413a9c9', '隔音隔热', '内饰装饰', '隔音隔热', '', '1', NULL, '1', 'CAR', '1523a304c37f48ff92a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('91a54ac344004f9fa59', '前钢板弹簧', '前悬架弹性元件', '前钢板弹簧', '', '1', NULL, '1', 'CAR', '2e5d8e96f9004b52927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('91b9970cd86f4990b8e', '转向杆系', '转向执行元件', '转向杆系', 'VPP;VFD;VPA;VFW;PAF', '1', NULL, '1', 'TRUCK', '46479e02a6274b379e0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('91fc6dda38a94326988', '后处理系统', '后处理+排气模块团队', '后处理系统', '', '1', NULL, '1', 'CAR', '508d1ff3782e4ecf8ea', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('92221d557a014107aee', '前桥总成附件', '非驱动前轴模块团队', '前桥总成附件', '', '1', NULL, '1', 'TRUCK', '11c266f3e1394cdfb94', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9222ddb094e64eaabec', '燃油系统模块团队', '动传系统', 'MTT5 燃油系统模块团队', '', '1', NULL, '1', 'CAR', '6a020b61a2d145c1ad2', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('92320d32b6dd49da948', '真空助力器及主缸', '伺服系统模块', '真空助力器及主缸', '', '1', NULL, '1', 'CAR', '9a45e856bc2d4cdda72', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('925d22ecff0d4bddb0c', '后钢板弹簧', '后悬架弹性元件', '后钢板弹簧', 'VPP;VPA;VPW;VPO;VFG;CSR;VFW', '1', NULL, '1', 'TRUCK', 'fd4b2eb8f51647f5a2b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('926ade2e2cb44b26bb1', '车架总成', '车架总成', '车架总成', 'VPT;VPP;VPA;VPW;VPR;VPK;VFG;VFW;VFT', '1', NULL, '1', 'CAR', '22cf9cbcf78f4eaaa8d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('929700bbeac44c7c9a9', '鞍式牵引装置', '鞍式牵引装置', '鞍式牵引装置', 'VPA;CCF', '1', NULL, '1', 'TRUCK', 'd31b40fb40cf4da4a36', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('92a42933664842528be', '蓄电池', '蓄电池', '蓄电池', 'VPT;VPP;MVU;MVC', '1', NULL, '1', 'TRUCK', 'e70c3c23692d4034af9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('92c2ca5580d14d19b2a', '上车踏板', '侧围外饰', '上车踏板', '', '1', NULL, '1', 'CAR', '5a851615102341a0b8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('92e2e597bb354171960', '前接梁总成', '前接梁总成', '前接梁总成', 'VPP;VPA', '1', NULL, '1', 'CAR', '30557842667f49e3adf', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('93061bb632774641927', '离合器操纵装置', '离合系统', '离合器操纵装置', '', '1', NULL, '1', 'CAR', '3d6280ec515448d88cb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('933cbb6576cc4fc887d', '后处理系统', '后处理+排气模块团队', '后处理系统', '', '1', NULL, '1', 'TRUCK', 'b53c8a991388420187e', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('935192c8aec74295a2a', '组合仪表', '信息娱乐显示模块', '组合仪表', '', '1', NULL, '1', 'CAR', '0913953554a6445fbab', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('936a553379c24f53b38', '发动机总成', '发动机模块团队', '发动机总成', '', '1', NULL, '1', 'TRUCK', '70cf10adbbbc4331bc5', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('937f26bb44694f89935', '液压助力器', '伺服系统', '液压助力器', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('93aa175bc6634c988c9', '车身前悬置总成模块', '车身前悬', '车身前悬置总成模块', 'VPP;VPL;BSM', '1', NULL, '1', 'TRUCK', '0276acad36bf4082ab4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('93bd57e9dbca46158b9', '电池护罩', '动力电池总成', '电池护罩', '', '1', NULL, '1', 'TRUCK', 'f64f617f75244a8e910', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('93ce2ca1619f4dcb8db', '转向油泵', '转向动力源', '转向油泵', 'CZP;CZT;PEF', '1', NULL, '1', 'CAR', '90bfdd3497cc441ebb3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('93d1eb7c7f3b48fc9bf', '顶盖外饰', '外饰模块团队', '顶盖外饰', '', '1', NULL, '1', 'CAR', 'ccdf928c99274854a9f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('93ed477b415547748f5', '外包装', '侧围外饰', '外包装', '', '1', NULL, '1', 'CAR', '5a851615102341a0b8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('93ff09e25c5e49c38f3', '(电动)液压泵', '(电动)液压泵', '(电动)液压泵', '', '1', NULL, '1', 'TRUCK', 'bf12b3861b914862a84', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('94a0b0da737f4aa0b39', '顶外饰附件', '顶盖外饰', '顶外饰附件', '', '1', NULL, '1', 'CAR', '93d1eb7c7f3b48fc9bf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('94acfc8361ba48fc9f8', '车载电器', '电器附件', '车载电器', '', '1', NULL, '1', 'CAR', 'bb13bd67db9746e0848', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('94afcfb18dcd4d3ead5', '驻车手柄单元', '驻车操纵模块', '驻车手柄单元', '', '1', NULL, '1', 'CAR', '3ae4fe30c91e4987960', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('94b749dd1c2347c784b', 'EPB模块', '底盘控制系统', 'EPB模块', '', '1', NULL, '1', 'CAR', '61afcfeb75be4df2a84', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('94de00ce022048d6a7b', '后雨刮器洗涤器', '雨刮器洗涤器 ', '后雨刮器洗涤器', '', '1', NULL, '1', 'CAR', '359c8ca702eb48f4a26', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('94e510f7b06b483bb93', '前风挡玻璃', '风挡玻璃', '前风挡玻璃', '', '1', NULL, '1', 'CAR', 'e5db2ca2e66f4fe5aed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('95233216c66947379cf', 'NG供给系统', '燃油系统模块团队', 'NG供给系统', '', '1', NULL, '1', 'TRUCK', 'a114a51feb2443cfb19', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9540b379b6ad4a22b59', '前悬架高度调整组件', '前悬架弹性元件', '前悬架高度调整组件', '', '1', NULL, '1', 'CAR', '2e5d8e96f9004b52927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('954c378761894541a59', '变速器操纵机构', '变速器控制机构', '变速器操纵机构', '', '1', NULL, '1', 'CAR', '30deff18d6024c63820', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('95859b420632446c9f0', '动力蓄电池模块团队', '新能源系统', 'MTN1 动力蓄电池模块团队', '', '1', NULL, '1', 'TRUCK', 'db4b6e80b2554c79a82', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('95c67db9846e49db839', '高压线束总成', '高压线束模块', '高压线束总成', '', '1', NULL, '1', 'CAR', 'e2a80a327c264114be9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9602520153c242dc85f', '驻车制动器总成', '底盘控制系统', '驻车制动器总成', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('96056b13989244a2a37', '智能控制器总成', 'ADAS模块', '智能控制器总成', '', '1', NULL, '1', 'TRUCK', 'bf94e2d3b8c0458fa4d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('96125fda78a040528ed', '燃油管路及附件', '燃油系统', '燃油管路及附件', '', '1', NULL, '1', 'CAR', '4a5710964c7a489788e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('96153bb6a7604d10a18', '转向器支架', '转向执行元件', '转向器支架', 'VFD;VFF;CZT', '1', NULL, '1', 'CAR', '7223a2b05e7647a18a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('96179a631abf41ee90c', '底盘系统', '根节点', '底盘系统', '', '1', NULL, '1', 'CAR', '10000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9664adc4c86a4b59ace', '前减振器', '前悬阻尼系统', '前减振器', '', '1', NULL, '1', 'CAR', 'b871112d1c414d029d6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9667d2984bdf4de1a38', '蓄电池紧固件', '蓄电池紧固件', '蓄电池紧固件', 'MVB;VFF;VFG', '1', NULL, '1', 'CAR', '18ae11145f9c43869c4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9676f570affe4600a7d', '电驱动控制总成', '电驱动控制系统模块', '电驱动控制总成', '', '1', NULL, '1', 'CAR', '21795d817dcd4d9ea3f', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9689796dc055457ca55', '内饰装饰', '内饰装饰', '内饰装饰', '', '1', NULL, '1', 'TRUCK', '4d09e72ea5db45e9b20', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('96a2570c8d3c438f83b', '胎压监测', '轮胎/车轮', '胎压监测', '', '1', NULL, '1', 'TRUCK', 'b56fdab597f14ea8a99', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('96ad9a864e6c4b8b86e', '调压模块', '调压模块', '调压模块', 'PTA;VPR;MAA;MAE', '1', NULL, '1', 'TRUCK', 'e57ea899ba214e72870', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9706c48819914408861', '射频接收器', '系统级控制模块', '射频接收器', '', '1', NULL, '1', 'CAR', '100ba21a02c344ce9f7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('97073dda2a19415aa11', '转向动力装置', '转向模块团队', '转向动力装置', '', '1', NULL, '1', 'CAR', '5ff78444be4448f89fc', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9708f98039654b198dd', '驾驶室开关', '电控模块团队', '驾驶室开关', '', '1', NULL, '1', 'TRUCK', '5278f7a6bb904ae9bda', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9791c8a01d284a4fa88', '转向护罩总成', '转向护罩总成', '转向护罩总成', 'VPP;CZA;PFP', '1', NULL, '1', 'TRUCK', 'e45be7eb7e144a55980', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9808e6484b244b29bc1', '皮卡货箱总成', '皮卡货箱总成', '皮卡货箱总成', '', '1', NULL, '1', 'CAR', '39973d4db07d499bb1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('981789e15e2646d0bc2', '倒车雷达控制器', '控制器', '倒车雷达控制器', '', '1', NULL, '1', 'CAR', '1e9d704ecedc4dd0a56', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9833f378529f4908ab8', '空气悬架控制机构', '悬架模块团队', '空气悬架控制机构', '', '1', NULL, '1', 'CAR', '02c9ab34f62d4be58f6', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('983a32bc04154356aba', '车架模块团队', '底盘系统', 'MTC1 车架模块团队', '', '1', NULL, '1', 'TRUCK', 'de5ff69d07d349e6aa0', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('984d9ba38a224e809d7', '后视镜除霜开关', '仪表台小开关1', '后视镜除霜开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9855df2c12634315832', '离合器操纵装置安装图', '离合器操纵装置安装图', '离合器操纵装置安装图', 'PTT;PTB;VPA', '1', NULL, '1', 'CAR', 'a03f561f69e24623b3f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('986b9aec1f224f47bde', '整车级控制模块', '控制模块', '整车级控制模块', '', '1', NULL, '1', 'TRUCK', '81982726b60e4d0eb4a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('989c37142c78401c824', '进气', '进气', '进气', '', '1', NULL, '1', 'TRUCK', '225d6049c6af4b94964', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('98bfad9c8d234190965', '底盘挡泥板', '挡泥板', '底盘挡泥板', 'VPP;VPA;BBL;BEB', '1', NULL, '1', 'TRUCK', '9f3ec91af9ea45cea0a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('98d09b8ffb254b7fa76', '驻车拉线附件', '驻车拉线附件', '驻车拉线附件', 'VPA;PTA;ABS/EBS;MAE', '1', NULL, '1', 'CAR', '56be67a9ad0847a5ab9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('98d2d07cbe1143259aa', '走台', '牵引装置系统', '走台', '', '1', NULL, '1', 'TRUCK', 'c822e2dfe0fb491b8d9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('996eebca59514f02b7f', '制动原理图及管线布置图', '制动模块团队', '制动原理图及管线布置图', '', '1', NULL, '1', 'CAR', '77efdfad20654812a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9975068bcad7486f8ad', '白车身喷涂及密封', '白车身总成', '白车身喷涂及密封', 'VFD', '1', NULL, '1', 'TRUCK', '5cf2b77bc7994e9f8f2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('998a2305ac4747a29dc', '定位控制器', '控制器', '定位控制器', '', '1', NULL, '1', 'CAR', '1e9d704ecedc4dd0a56', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('99a5222c3d354aa5ba4', '远程油门操纵装置', '远程踏板', '远程油门操纵装置', 'MPR;VFE', '1', NULL, '1', 'TRUCK', '67e971c566cf4d2ca0e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('99c8e53cf93646f28ee', '前桥总成线束安装图', '前桥总成线束安装图', '前桥总成线束安装图', '', '1', NULL, '1', 'TRUCK', 'bfee232ded044847818', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9a405631dcca4326861', '前驱动桥总成', '后桥总成', '前驱动桥总成', 'VPW;VPO;VPR;PRT;PRM;PAR;PRR;MBR;PRW;MAA', '1', NULL, '1', 'TRUCK', '4f021f0570e5448bac2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9a45e856bc2d4cdda72', '伺服系统模块', '制动模块团队', '伺服系统模块', '', '1', NULL, '1', 'CAR', '77efdfad20654812a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9acb8bcedf8f4fbeafe', '空气悬架控制器', '控制机构', '空气悬架控制器', '', '1', NULL, '1', 'CAR', '9001b62c22c344049e9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9acd050b5700477d974', '高压油管总成及支架', '转向管路', '高压油管总成及支架', 'VFD;VPA;CZT', '1', NULL, '1', 'CAR', 'e3e32526c1674a02bfa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9b174da6ff4d447ca4e', '氢燃料电池模块团队', '新能源系统', 'MTN5 氢燃料电池模块团队', '', '1', NULL, '1', 'TRUCK', 'db4b6e80b2554c79a82', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9b2e4a83cbf448c9af9', '信息娱乐显示模块', '智能座舱及车联网模块', '信息娱乐显示模块', '', '1', NULL, '1', 'TRUCK', '57166259901f47d7810', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9b763b53998045a9a33', '仪表板总成', '仪表板', '仪表板总成', '', '1', NULL, '1', 'CAR', 'e41dd5c910f44909a04', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9bd4894462c0485b963', 'EPB开关', '仪表台小开关1', 'EPB开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9bda7bbfe65a4609af8', '转向器及附件装置图', '转向动力装置', '转向器及附件装置图', '', '1', NULL, '1', 'TRUCK', '132a74498ec34b99bd1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9c2dd41746d043ae8fe', '暖风箱总成', '暖气装置', '暖风箱总成', '', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9c5c9c62061e4a07a00', '保杠', '前后围外饰', '保杠', '', '1', NULL, '1', 'CAR', '89f44cae5a3f4c93b70', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9c892533ad1a418abd0', '转向换向器', '转向执行元件', '转向换向器', 'VPW;PAF', '1', NULL, '1', 'CAR', '7223a2b05e7647a18a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9c8d99bbe2c8467c9ff', '电器标准部件', '电控模块团队', '电器标准部件', '', '1', NULL, '1', 'TRUCK', '5278f7a6bb904ae9bda', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9ca01e18532e415e812', '白车身附件', '白车身模块团队', '白车身附件', '', '1', NULL, '1', 'CAR', 'e62950fdbf664a2e8ac', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9cde6e5e71784ab6adf', '辅助用气管', '底盘管束', '辅助用气管', '', '1', NULL, '1', 'TRUCK', '074e10e810f3464cafc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9cfc32fa3fb14b0d9e1', '时钟弹簧总成', '安全电子装置', '时钟弹簧总成', 'VPP', '1', NULL, '1', 'TRUCK', 'd0f329a1b1f848989b5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9d0ebdec80ed4356adf', '燃气管路装置', '燃气管路装置', '燃气管路装置', '', '1', NULL, '1', 'TRUCK', 'bb17458f5b73411ebcf', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9d15b26d3f62418a821', '冷却系统及附件模块', '燃料电池系统模块', '冷却系统及附件模块', '', '1', NULL, '1', 'TRUCK', 'eec72978959146e38a4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9d3953e57c9647849f1', '前桥总成', '非驱动前轴模块团队', '前桥总成', '', '1', NULL, '1', 'TRUCK', '11c266f3e1394cdfb94', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9d7465750529489abed', '转向传动装置图', '转向控制装置', '转向传动装置图', '', '1', NULL, '1', 'TRUCK', '5cf119ed01404776800', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9db17e9517e143b2a18', '离合系统', '变速模块团队', '离合系统', '', '1', NULL, '1', 'TRUCK', 'a288929ee4994034a6f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9dfb937bea434b6c8e1', 'ESC模块', 'ESC模块', 'ESC模块', 'VPW;ABS/EBS;MAE', '1', NULL, '1', 'CAR', 'dc65beeaf7664adb97c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9e1af5d72d5b449ca29', '变速模块团队', '动传系统', 'MTT3 变速模块团队', '', '1', NULL, '1', 'CAR', '6a020b61a2d145c1ad2', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9e6394e76c52485d90f', '尿素罐装置', '后处理系统', '尿素罐装置', '', '1', NULL, '1', 'CAR', '91fc6dda38a94326988', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9e7d822cef8c4f378aa', '蓄电池', '电力供应', '蓄电池', '', '1', NULL, '1', 'CAR', '145701be62f6450ba45', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9e7e825f666040daa65', '动力悬置模块团队', '动传系统', 'MTT8 动力悬置模块团队', '', '1', NULL, '1', 'CAR', '6a020b61a2d145c1ad2', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9e8a4ba4c7944e68a35', '发动机匹配后桥数据', '发动机标定数据', '发动机匹配后桥数据', 'PEF;PEP;PRR', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9e8ee6c4c05d4ee1b81', '天线附件(天线线缆总成)', '天线模块', '天线附件(天线线缆总成)', '', '1', NULL, '1', 'CAR', 'e548cfcad2e04accb51', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9ea54d8420354ab692d', '后悬架缓冲块', '后悬架缓冲块', '后悬架缓冲块', 'VPW;VPR;VFG;CSR', '1', NULL, '1', 'TRUCK', '3e53a87863e2491a889', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9ecd673fae234c7a932', '电器模块团队', '电子电控系统', 'MTE4 电器模块团队', '', '1', NULL, '1', 'CAR', '056955ac6f87460abd3', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9ecf9cb1dbaf43b2830', '内部小灯', '内部照明', '内部小灯', 'BBR;BBL', '1', NULL, '1', 'TRUCK', 'c3c6f1014dc041b081c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9ed0f12a7e744b5d83d', '车身控制器', '系统级控制模块', '车身控制器', 'MKK;PFP;MOD', '1', NULL, '1', 'CAR', '100ba21a02c344ce9f7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9ee5a4c5b4d44c0dab3', '暖风/空调', '电器模块团队', '暖风/空调', '', '1', NULL, '1', 'TRUCK', 'c68152bab33c47faa19', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9f3ec91af9ea45cea0a', '挡泥板', '侧围外饰', '挡泥板', '', '1', NULL, '1', 'TRUCK', '73444730a92e4edf98b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9f5a23f272fa421f854', '动力电池总成', '动力电池系统模块', '动力电池总成', '', '1', NULL, '1', 'CAR', '47e109950fb34bde957', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9f7c6bf25fad4760bf6', '动力悬置', '动力悬置模块团队', '动力悬置', '', '1', NULL, '1', 'CAR', '9e7e825f666040daa65', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9fca26e060aa4071b81', '后板簧盖板', '后悬架弹性元件', '后板簧盖板', 'VPW;VFG;VPO', '1', NULL, '1', 'CAR', '27c06cb9fb54453489a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9fda46d59edf4629b05', '差速锁开关', '仪表台小开关1', '差速锁开关', 'VPT;VPP;VPA;VPW;PRM', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('9ff2be0e1f79493485c', '氢系统', '氢系统模块', '氢系统', '', '1', NULL, '1', 'CAR', '29a48c9aef7142b7ba1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a00e6b3208df42e39bf', '蓄电池附件', '蓄电池附件', '蓄电池附件', 'MVB', '1', NULL, '1', 'CAR', '7119fc5e664941c3b3f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a029d12a06d342158ef', '分动器安装图', '分动器安装图', '分动器安装图', 'PTW;PTB;PTT;PTA;', '1', NULL, '1', 'CAR', '51eff6dd264d4125a8a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a03f561f69e24623b3f', '离合器操纵装置安装图', '离合系统', '离合器操纵装置安装图', '', '1', NULL, '1', 'CAR', '3d6280ec515448d88cb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a074aa955d7547948f6', 'T-BOX', '车载智能终端模块', 'T-BOX', '', '1', NULL, '1', 'CAR', '4a5e30470bbf4ac783d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a0d32456e1e3418eb97', '车轮及轮胎模块团队', '底盘系统', 'MTC5 车轮及轮胎模块团队', '', '1', NULL, '1', 'TRUCK', 'de5ff69d07d349e6aa0', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a0e0649912d44538ab6', '仪表台通用开关', '驾驶室开关', '仪表台通用开关', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a111cf00d371463cbd5', '空气悬架管束', '空气悬架控制机构', '空气悬架管束', '', '1', NULL, '1', 'TRUCK', '905ce7dd67024993897', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a114a51feb2443cfb19', '燃油系统模块团队', '动传系统', 'MTT5 燃油系统模块团队', '', '1', NULL, '1', 'TRUCK', '1b0e6d58288440a6807', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a11e600916dc4de3a19', '电池管理系统', '动力电池总成', '电池管理系统', '', '1', NULL, '1', 'CAR', '9f5a23f272fa421f854', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a13301df0fb24658a85', '助力缸油管总成及支架', '转向管路', '助力缸油管总成及支架', 'VPP;VFD;VPW;VPA;CZT', '1', NULL, '1', 'TRUCK', '8284e34665ad415a974', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a16da4ddbf664542905', '仪表台开关', '驾驶室开关', '仪表台开关', '', '1', NULL, '1', 'CAR', '010ad996c8d048c6952', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a17440ac4cbf4686b65', '翻转警示牌', '车身翻转系统', '翻转警示牌', 'VPP', '1', NULL, '1', 'TRUCK', '42fb49ee9e9e4eb4951', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a18b2a3cdb2346a0af2', '车门调整总成', '车门结构', '车门调整总成', 'VPP;BED', '1', NULL, '1', 'TRUCK', 'e76aa6733baa4ac8a64', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a18d24f455424e3f871', '离合器', '离合器', '离合器', 'PEP;PTT;PTB;PTA;PES;VPA', '1', NULL, '1', 'CAR', 'e1d6c6711d0d4e988f1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a19c0b9482e94a809f1', '离合器操纵装置', '离合器操纵装置', '离合器操纵装置', 'PTT;PTB;VPA;VPL;BBF', '1', NULL, '1', 'TRUCK', 'dea5ebfb97ef4aa2bbc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a22e83f4e6d047fb8bd', '系统级控制模块', '控制模块', '系统级控制模块', '', '1', NULL, '1', 'TRUCK', '81982726b60e4d0eb4a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a2628d008f874c86997', '新风风道', '暖气装置', '新风风道', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a277de8bc9074b22948', '电器原理图', '线束', '电器原理图', '', '1', NULL, '1', 'CAR', '5191d54e1a8c47ad967', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a288929ee4994034a6f', '变速模块团队', '动传系统', 'MTT3 变速模块团队', '', '1', NULL, '1', 'TRUCK', '1b0e6d58288440a6807', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a2c6ccad0928497e9c8', '座椅开关', '仪表台小开关2', '座椅开关', '', '1', NULL, '1', 'TRUCK', '570113ccfa494a5bb0f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a32e154c7f6b42718d6', '油底壳防护装置', '封装', '油底壳防护装置', 'VPP;COO;VPA;PEF', '1', NULL, '1', 'TRUCK', '119b9a165409487392a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a32eb0f09cbf4c9ab9a', '变速器安装紧固件', '变速器及安装件', '变速器安装紧固件', 'PTW;PTB;PTT;PTA', '1', NULL, '1', 'TRUCK', '37f31b2897b143d9876', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a365fce9b65349af989', '尿素溶液', '尿素溶液', '尿素溶液', 'PEE;VFT;CFU', '1', NULL, '1', 'TRUCK', 'd0ec646b1ded4934a8f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a381e662f08b48ddbf7', '燃料电池进气系统模块', '燃料电池系统模块', '燃料电池进气系统模块', '', '1', NULL, '1', 'TRUCK', 'eec72978959146e38a4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a38e92135f7344759c2', '内后视镜', '后视镜', '内后视镜', '', '1', NULL, '1', 'TRUCK', 'ac6c338880354b8bbd6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a3931a39657740a38bd', '后轮轮速传感器', '轮速传感器', '后轮轮速传感器', 'VPW;ABS/EBS', '1', NULL, '1', 'CAR', '48f4d9ab7a2746de877', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a3d105f9e9e34407865', '前桥制动软管', '前桥制动软管', '前桥制动软管', 'VPW;PFM;MBF', '1', NULL, '1', 'TRUCK', '23bcef2b4ab64967aa4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a3e856149f264700bd1', '转向传动轴总成', '转向控制装置', '转向传动轴总成', '', '1', NULL, '1', 'TRUCK', '5cf119ed01404776800', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a40a93e438e84e99996', '龙门架', '走台', '龙门架', 'VPP;VPA', '1', NULL, '1', 'TRUCK', '98d2d07cbe1143259aa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a4106ca0e9b04735a5b', '驻车空调线束', '车身线束', '驻车空调线束', 'VPT;VPP;BBL;MCP', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a42dfe2cf8494e77875', '顶灯开关总成', '仪表台开关', '顶灯开关总成', 'VFT', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a4702d7b7f6f4c6ba0a', '离合操纵机构', '离合系统', '离合操纵机构', '', '1', NULL, '1', 'TRUCK', '9db17e9517e143b2a18', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a4ac1bae6361424ca9e', '汽化器、缓冲罐总成', 'NG供给系统', '汽化器、缓冲罐总成', '', '1', NULL, '1', 'TRUCK', '95233216c66947379cf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a4faf1118b094c179dd', '传动轴附件', '传动轴系统', '传动轴附件', '', '1', NULL, '1', 'CAR', '1111674bbc83469ca26', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a52a6cc0725d4ee6aa2', '负离子发生装置', '暖风/空调', '负离子发生装置', '', '1', NULL, '1', 'CAR', '380b124f855f463a8dc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a532470777c84b67a1f', '后桥管束', '底盘管束', '后桥管束', '', '1', NULL, '1', 'TRUCK', '074e10e810f3464cafc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a58c8e0061c64f60b7d', '轴间差速开关', '仪表台开关', '轴间差速开关', 'VPW', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a5e80c0f7e0f4434bea', '后围内饰及风罩', '内饰装饰', '后围内饰及风罩', 'BBL;BBR;VPL', '1', NULL, '1', 'TRUCK', '9689796dc055457ca55', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a60dcfc67ebc4f14acc', '前悬架稳定杆', '前悬架', '前悬架稳定杆', '', '1', NULL, '1', 'CAR', '1b39a9b3a34e4ac7a63', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a64525027a7e49d0921', '离合踏板总成', '离合操纵装置', '离合踏板总成', 'PTT;PTB', '1', NULL, '1', 'CAR', '6045a25aa91549cf95e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a667677e8f74496d81d', '变速器冷却管路系统', '冷却管路', '变速器冷却管路系统', '', '1', NULL, '1', 'TRUCK', '1c5d59d83d2f46a5bad', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a6861aeb3b874bb894c', '电动机', '电驱动总成', '电动机', '', '1', NULL, '1', 'CAR', '10904305f50447e2942', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a68cb614023345a4861', '车轮轮胎总成安装图', '轮胎/车轮', '车轮轮胎总成安装图', '', '1', NULL, '1', 'TRUCK', 'b56fdab597f14ea8a99', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a6c40fbb6dd24c2e88b', '后稳定杆', '后悬架', '后稳定杆', '', '1', NULL, '1', 'TRUCK', '664320104d6e4072a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a6e58f1372404e4abe5', '音响装置', '信息娱乐显示模块', '音响装置', '', '1', NULL, '1', 'CAR', '0913953554a6445fbab', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a70a05370ec64436bca', '货箱附件', '货箱附件', '货箱附件', '', '1', NULL, '1', 'TRUCK', '76b73defda7a412ca45', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a71b32376c244def978', 'LKA开关', '仪表台小开关1', 'LKA开关', 'VPT;VPP;MAK', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a72a31d0542f4ea6b36', '整车管线布置图', '管线布置图', '整车管线布置图', '', '1', NULL, '1', 'TRUCK', 'e622091310b54bd895a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a77095e606494c88ae6', '前减振器支架', '前悬架阻尼系统', '前减振器支架', 'VPP;VPA;VPW', '1', NULL, '1', 'TRUCK', '788f16bc210145a3877', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a78a44f94fc742ba8d0', '通用开关', '仪表台通用开关', '通用开关', 'VPT;VPP;BLA', '1', NULL, '1', 'TRUCK', 'a0e0649912d44538ab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a793afed98224ea894c', '发动机PCC数据', '发动机标定数据', '发动机PCC数据', 'PEE;PEF;MAH', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a7b296ad7d7f4f808be', '燃料电池进气系统', '燃料电池进气系统模块', '燃料电池进气系统', '', '1', NULL, '1', 'TRUCK', 'a381e662f08b48ddbf7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a7da8f667ed1470da3b', '车载智能终端模块', '智能座舱及车联网模块团队', '车载智能终端模块', '', '1', NULL, '1', 'CAR', '07ecb5c89ab249cc947', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a7e542bbdfe6405bbce', '伺服液压钢管', '伺服液压钢管', '伺服液压钢管', '', '1', NULL, '1', 'TRUCK', 'fdc380d8d3f04a29a29', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a807b5259b5c4ec1868', '制动原理图', '制动原理图', '制动原理图', '', '1', NULL, '1', 'TRUCK', '662f179fde9c4f3596a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a809d6b813fa4803b5a', '蓄电池', '蓄电池', '蓄电池', 'MVU;MVC;MVB', '1', NULL, '1', 'CAR', '9e7d822cef8c4f378aa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a81ff957ab6d458abc7', '后处理装置', '排气系统', '后处理装置', '', '1', NULL, '1', 'CAR', 'b98e750ba0af48d2ad8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a869c1271fd84651b96', '储气筒及附件', '底盘空气管理', '储气筒及附件', '', '1', NULL, '1', 'TRUCK', 'f439e48f3e624193abf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a8caa6b391304faeac6', '手柄球', '变速操纵机构', '手柄球', 'PTT;PTC', '1', NULL, '1', 'CAR', 'b6734099820f4e8e905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a8ef061caf734e8da7f', '前悬架导向机构', '前悬架', '前悬架导向机构', '', '1', NULL, '1', 'TRUCK', 'f56ab73a05494773bb6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a927bb47652d405e9c6', '前悬架安装图', '前悬架安装图', '前悬架安装图', 'VPP;VPA;VPW;VPR;PAF;CSF;PFB;VPL', '1', NULL, '1', 'TRUCK', '6a87171bbcd64debac9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a92d99a3be4e4ef79b1', '车身悬置', '车身悬置', '车身悬置', '', '1', NULL, '1', 'CAR', '69686072344844fe977', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a972af5eee3543769b1', '空气悬架ECU', '控制机构', '空气悬架ECU', 'VPP;VPW', '1', NULL, '1', 'TRUCK', '0f6473b41cce430eb36', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a9b632908bd94b679f8', '360开关', '仪表台开关', '360开关', 'CFL;CFR', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('a9f4acff30af44f0963', '外部照明', '车身电器', '外部照明', '', '1', NULL, '1', 'TRUCK', '2a91bfd0489f419cb82', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('aa0895cde12a41faa47', 'EHB模块', '伺服系统模块', 'EHB模块', '', '1', NULL, '1', 'CAR', '9a45e856bc2d4cdda72', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('aa4c7938d6fb4fba881', '发动机匹配缓速器数据', '发动机标定数据', '发动机匹配缓速器数据', 'PEF;PTR', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('aa8d2025cc7c48e49f4', '前减振器支架', '前悬阻尼系统', '前减振器支架', '', '1', NULL, '1', 'CAR', 'b871112d1c414d029d6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('aac0495634ad4773ac0', '仪表板开关底座', '开关底座', '仪表板开关底座', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '609777e40a844e06b89', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('aadf3e152d3f479b92f', '后处理固定装置', '后处理装置', '后处理固定装置', 'PEF', '1', NULL, '1', 'CAR', 'a81ff957ab6d458abc7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ab12ce8e4fb5480e8a2', '分动器安装紧固件', '分动器及安装件', '分动器安装紧固件', 'PTW;PTB;PTT;PTA;', '1', NULL, '1', 'CAR', '819a4fb585fd4755b38', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ab69cb34b53e46378a3', '离合器油', '离合器油', '离合器油', 'VPP;PTA', '1', NULL, '1', 'TRUCK', '84bc69b24fef4722bf2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ab6a27ab1d014ca883b', '蓄电池箱体', '电力供应', '蓄电池箱体', '', '1', NULL, '1', 'CAR', '145701be62f6450ba45', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('abaa1d35ecfc4abea9e', '遮阳罩', '顶外饰附件', '遮阳罩', 'VPT;VPP;VPA;BBR', '1', NULL, '1', 'TRUCK', '06b699553be6464685e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ac251b5c68a44409b18', '远程油门开关', '仪表台小开关1', '远程油门开关', 'VPT;VPP;MPR', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ac3a4b57567b492ab46', '卧铺开关底座', '开关底座', '卧铺开关底座', 'VPT;VPP;BBL', '1', NULL, '1', 'TRUCK', '609777e40a844e06b89', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ac5c988466784d36b0f', '发动机线束总成', '底盘线束', '发动机线束总成', 'VPP;VFT;VFE;PES;PED', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ac6c338880354b8bbd6', '后视镜', '车身电器', '后视镜', '', '1', NULL, '1', 'TRUCK', '2a91bfd0489f419cb82', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('acb95a9ae17d4eb5b77', '前悬架安装图', '安装图', '前悬架安装图', 'VPP;VPW;CST;PAF;VFF', '1', NULL, '1', 'CAR', 'b924d362dd6743a0bd0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('acda2ff5e4504505b7f', 'B柱侧围内饰', '内饰装饰', 'B柱侧围内饰', 'BBL;VPL', '1', NULL, '1', 'TRUCK', '9689796dc055457ca55', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('acfe73e396d4400a998', '上卧铺', '卧铺', '上卧铺', 'VPP;VFD;VPL;BBR;BBW;BBL;BDU', '1', NULL, '1', 'TRUCK', '2da3c449da164a14ae2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ad0d83177e834fc0851', '后保杠', '保杠', '后保杠', '', '1', NULL, '1', 'CAR', '9c5c9c62061e4a07a00', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ad32c2fe7cd84e759cb', '直流直流变换器', '直流直流变换器总成', '直流直流变换器', '', '1', NULL, '1', 'TRUCK', '14584ab163e544ef8e6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ad5b4a08a8a64e2c9c2', '开闭件模块团队', '车身系统', 'MTB6 开闭件模块团队', '', '1', NULL, '1', 'CAR', '203ab4100a4448ef841', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ad7a27e1c5644d7ba5c', '示廓灯护罩总成', '货箱附件', '示廓灯护罩总成', '', '1', NULL, '1', 'TRUCK', 'a70a05370ec64436bca', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ad914fc954c14f4ba6b', '离合分泵助力器', '离合器操纵装置', '离合分泵助力器', 'PTT;PTB;PTR;VPP;VPA;VPL;BBF', '1', NULL, '1', 'TRUCK', 'dea5ebfb97ef4aa2bbc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ae239020b49d40e49a2', '外饰系统模块团队', '车身系统', 'MTB5 外饰系统模块团队', '', '1', NULL, '1', 'TRUCK', 'd68f61afae4d4b51bf9', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ae9a2710d9a841fe854', '前防护总成', '防护', '前防护总成', '', '1', NULL, '1', 'CAR', '15bee05d48e64c9d91b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ae9b0855c94748ff972', 'ESC模块', '底盘控制系统', 'ESC模块', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ae9b42377f5844f5868', '侧防护总成', '防护', '侧防护总成', '', '1', NULL, '1', 'CAR', '15bee05d48e64c9d91b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('aeb6a446c57b4bb8ba0', '车身主线束总成', '车身线束', '车身主线束总成', '', '1', NULL, '1', 'CAR', 'ece47900c0894a21a3b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('af18c09592ef40dfa76', '燃料电池系统模块', '氢燃料电池模块团队', '燃料电池系统模块', '', '1', NULL, '1', 'CAR', '760a7076058d4404b8a', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('af5d8f531e084f6ab08', '变速器安装图', '变速器', '变速器安装图', '', '1', NULL, '1', 'CAR', '0237c132c12e4a4cae4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b01f4d5f5a7c431c88d', '后处理装置', '排气系统', '后处理装置', '', '1', NULL, '1', 'TRUCK', 'c61b7f6308894c1ab17', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b08279bf7b414abfa6c', '车轮(后)', '车轮', '车轮(后)', 'CTR;CTJ;CTK;CTC;VPW', '1', NULL, '1', 'TRUCK', '4116db6a55b142e8bc0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b093de0c2d844ecdb25', '新能源系统', '根节点', '新能源系统', '', '1', NULL, '1', 'CAR', '10000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b0a79deeed1b46f9aca', '档位开关', '档位开关', '档位开关', '', '1', NULL, '1', 'TRUCK', 'd228258439134dfa800', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b0c3737df8254d908e6', '顶盖内饰', '内饰装饰', '顶盖内饰', 'BBR;BBL;BOR;VPL;MCP', '1', NULL, '1', 'TRUCK', '9689796dc055457ca55', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b13b0ae7bc894a56b0d', '变速操纵机构安装图', '变速器控制机构', '变速操纵机构安装图', '', '1', NULL, '1', 'CAR', '30deff18d6024c63820', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b13e2a6bd28e4994816', '后空气悬架提升机构', '后悬架', '后空气悬架提升机构', '', '1', NULL, '1', 'TRUCK', '664320104d6e4072a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b1cbbe8e9d904aafa47', '预热继电器', '继电器', '预热继电器', '', '1', NULL, '1', 'CAR', 'b36f5fd8e82146618af', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b1d20f0ab7eb499b9c0', '货箱照明灯总成', '外部照明', '货箱照明灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b1e8512a09a049148e0', '变速器冷却装置安装图', '变速器冷却装置', '变速器冷却装置安装图', '', '1', NULL, '1', 'CAR', '00dfdd6460a540f89d4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b2104a958e644107826', '挂车阀至连接头气管', '挂车供气组件', '挂车阀至连接头气管', 'MAA;MAE;BBF', '1', NULL, '1', 'TRUCK', '5024d280b7ba493a804', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b2828aa3070443edb5b', '侧窗玻璃', '侧围外饰附件', '侧窗玻璃', '', '1', NULL, '1', 'TRUCK', '23985514affb49d5aa5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b2ac3a77527d4f3085c', '车轮(前)', '车轮', '车轮(前)', 'CTF;CTB;CTW;CTO;VPW', '1', NULL, '1', 'CAR', '34f26c73337147cb941', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b2b942a2112e4effbcf', '加热燃油开关', '仪表台小开关1', '加热燃油开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b2e00f08658e47679d2', '(电动)真空泵', '(电动)真空泵', '(电动)真空泵', '', '1', NULL, '1', 'TRUCK', '3bf9be3e55874924b7f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b2fea936958f4e4cbfd', '标牌', '标牌及标识', '标牌', '', '1', NULL, '1', 'CAR', '09836dc6783740da8ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b312585357f34a97a78', '底盘线束总成', '底盘线束', '底盘线束总成', '', '1', NULL, '1', 'CAR', '8cf61a8ed9aa4a70b17', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b3142b08d23041abb14', '辅控多合一总成', '高压辅控模块', '辅控多合一总成', '', '1', NULL, '1', 'TRUCK', '65019ff0beac4539921', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b3271c9116b944f795d', '后悬架缓冲块', '后悬架缓冲块', '后悬架缓冲块', '', '1', NULL, '1', 'CAR', '73c5fddfbd834a79a30', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b34ccb2b9a88492eb9a', '车门内饰', '车门附件', '车门内饰', '', '1', NULL, '1', 'CAR', '8fcbbab3923e4c8ca11', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b3532b0599a94998911', '转向传动装置图', '转向传动装置图', '转向传动装置图', 'VPP;BBF;CZA', '1', NULL, '1', 'TRUCK', '9d7465750529489abed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b36f5fd8e82146618af', '继电器', '线束', '继电器', '', '1', NULL, '1', 'CAR', '5191d54e1a8c47ad967', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b39fbbfc109c474d895', '阻尼垫及补强片', '白车身喷涂及密封', '阻尼垫及补强片', '', '1', NULL, '1', 'CAR', 'c5066c84aabe4c2084c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b3afd8d3b0c4490da50', '离合操纵装置安装图', '离合系统', '离合操纵装置安装图', '', '1', NULL, '1', 'CAR', '3d6280ec515448d88cb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b3dee9c8f0444341b69', 'AHB开关', '仪表台开关', 'AHB开关', 'VPR', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b408c3373c364fb5814', '冷却液', '冷却液', '冷却液', '', '1', NULL, '1', 'CAR', 'ebcb3dd2a78246e4a1b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b459eb43cb584e428ea', '传动轴吊架', '传动轴附件', '传动轴吊架', 'VPA;VFW;VFF;PEF;PTT;PRM', '1', NULL, '1', 'TRUCK', 'fe331d0848ee49b08a8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b4d1d33b7e654fad9e3', '前保杠', '保杠', '前保杠', 'VPA;VPP;BBF;BEB', '1', NULL, '1', 'TRUCK', '15a3bfa426d642a6a81', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b51dfc38bd18447c86e', '转向油泵进油管及支架', '转向管路', '转向油泵进油管及支架', 'VPA;CZP;PEF', '1', NULL, '1', 'TRUCK', '8284e34665ad415a974', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b5348f83d2af4ac083e', '常规制动阀(无ABS)', '底盘控制系统', '常规制动阀(无ABS)', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b5395ef1d357470f9ae', '货箱总成', '货厢模块团队', '货箱总成', '', '1', NULL, '1', 'TRUCK', '73edb351d582494885f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b53c8a991388420187e', '后处理+排气模块团队', '动传系统', 'MTT2 后处理+排气模块团队', '', '1', NULL, '1', 'TRUCK', '1b0e6d58288440a6807', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b53da0e31ca54e398cc', '尿素溶液', '排气系统', '尿素溶液', '', '1', NULL, '1', 'CAR', 'b98e750ba0af48d2ad8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b56fdab597f14ea8a99', '轮胎/车轮', '车轮及轮胎模块团队', '轮胎/车轮', '', '1', NULL, '1', 'TRUCK', 'a0d32456e1e3418eb97', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b584517da82143208cb', '常规制动阀(无ABS)', '常规制动阀(无ABS)', '常规制动阀(无ABS)', '', '1', NULL, '1', 'TRUCK', 'b5348f83d2af4ac083e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b5dced88684641bd8a5', '底盘开关', '电控模块团队', '底盘开关', '', '1', NULL, '1', 'TRUCK', '5278f7a6bb904ae9bda', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b61a01774ae64f27812', '后悬架稳定杆', '后悬架', '后悬架稳定杆', '', '1', NULL, '1', 'CAR', '20f0e96840d54a858ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b6418a4b3a154740804', '地毯总成', '顶盖地板附件', '地毯总成', '', '1', NULL, '1', 'CAR', '233a3f1dc1fb4fde91e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b6734099820f4e8e905', '变速操纵机构', '变速器控制机构', '变速操纵机构', '', '1', NULL, '1', 'CAR', '30deff18d6024c63820', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b6a0894d6159479cbb8', '侧围外饰附件', '侧围外饰', '侧围外饰附件', '', '1', NULL, '1', 'CAR', '5a851615102341a0b8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b6a1ce379d1d47c0a81', '车桥润滑油', '车桥润滑油', '车桥润滑油', 'VPL;VPA;PRM;PRW', '1', NULL, '1', 'TRUCK', 'd35098c165d2470a817', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b6d5dfff125743e3b28', '货箱其它附件', '皮卡货箱附件', '货箱其它附件', '', '1', NULL, '1', 'CAR', 'e5343b891d9a40b9b97', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b72aa0987dc24badad0', '电驱动控制总成', '电驱动控制系统模块', '电驱动控制总成', '', '1', NULL, '1', 'TRUCK', '5673beb0a2944d3e9ed', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b72aa1085ec54b1c855', '电力驱动总成冷却管路系统', '冷却管路系统', '电力驱动总成冷却管路系统', '', '1', NULL, '1', 'CAR', '44befe63b8a7436d943', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b751142931544e1c9e2', '传动轴安装图', '传动轴安装图', '传动轴安装图', 'VPW;VFW;VFF;PEF;PTT;PRM', '1', NULL, '1', 'CAR', '4ea16b335ef849628e8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b773d1e9afcb43f480c', '高度阀组件', '阀和传感器', '高度阀组件', '', '1', NULL, '1', 'CAR', '5b57ff60f1734d8f957', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b77d11c251b8475a99a', 'FCW/LDW/AEBS/ACC开关', '仪表台小开关1', 'FCW/LDW/AEBS/ACC开关', 'VPT;VPP;MAL', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b7a3e2f97e1f4e9cbb3', '蓄电池附件', '蓄电池', '蓄电池附件', 'MVB', '1', NULL, '1', 'TRUCK', 'e70c3c23692d4034af9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b7cd746a652f43b8828', '智能驾驶模块团队', '电子电控系统', 'MTE2 智能驾驶模块团队', '', '1', NULL, '1', 'CAR', '056955ac6f87460abd3', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b7ef4703e38247fcaef', 'NG气瓶总成及连接支架', 'NG供给系统', 'NG气瓶总成及连接支架', '', '1', NULL, '1', 'TRUCK', '95233216c66947379cf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b837d4c9ea934ba7be4', '自动变速器基础数据', '变速器', '自动变速器基础数据', '', '1', NULL, '1', 'CAR', '0237c132c12e4a4cae4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b83e07c046a34f4f957', '安全带', '内饰系统模块团队', '安全带', '', '1', NULL, '1', 'TRUCK', '07c8195e81d54ae7aec', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b85d751b575d4d0cad6', '封装', '冷却系统', '封装', '', '1', NULL, '1', 'CAR', 'd4849a07c5c346df909', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b871112d1c414d029d6', '前悬阻尼系统', '前悬架', '前悬阻尼系统', '', '1', NULL, '1', 'CAR', '1b39a9b3a34e4ac7a63', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b8842455bb7c4750849', '底盘主管束', '底盘主管束', '底盘主管束', 'VPP;VPA;VFW;BBF;MAA;MAE;MBK;VPR;MVB;VFE;MBD;VPL', '1', NULL, '1', 'TRUCK', '0d561067cf554ee58d6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b884804a0907480d9b8', '变速器控制机构', '变速模块团队', '变速器控制机构', '', '1', NULL, '1', 'TRUCK', 'a288929ee4994034a6f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b8a58865a7f54495882', '转向控制装置', '转向模块团队', '转向控制装置', '', '1', NULL, '1', 'CAR', '5ff78444be4448f89fc', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b8dbab576fea40bf9b4', '变速器', '变速器及安装件', '变速器', 'PTA;PTD;PTB;PTC;PTT;PTW;PTR;PPM;PEP', '1', NULL, '1', 'TRUCK', '37f31b2897b143d9876', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b90602a02a664312ac3', '前排座椅', '座椅', '前排座椅', '', '1', NULL, '1', 'CAR', '523070b2ef7e4bf6994', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b914f40acca1482baee', 'ADAS摄像头', '摄像头', 'ADAS摄像头', '', '1', NULL, '1', 'CAR', '2757928d5faf4c41883', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b924d362dd6743a0bd0', '安装图', '前悬架', '安装图', '', '1', NULL, '1', 'CAR', '1b39a9b3a34e4ac7a63', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b95b549bc55b418b8b0', '踏步灯总成', '内部照明', '踏步灯总成', '', '1', NULL, '1', 'CAR', '8d1e8c3a6d8a4e0db81', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b98e750ba0af48d2ad8', '排气系统', '后处理+排气模块团队', '排气系统', '', '1', NULL, '1', 'CAR', '508d1ff3782e4ecf8ea', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b9d25c00edcf4289a2c', '倒车摄像头', '摄像头', '倒车摄像头', '', '1', NULL, '1', 'CAR', '2757928d5faf4c41883', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('b9feb9bbee8c4c82adc', '车身电器', '外饰模块团队', '车身电器', '', '1', NULL, '1', 'CAR', 'ccdf928c99274854a9f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ba21c618956c4baf994', '前风窗下饰板', '前后围外饰附件', '前风窗下饰板', '', '1', NULL, '1', 'CAR', '37ac40b71a0743368c7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ba7d87137bfb4d758ad', '隔音隔热板装置', '封装', '隔音隔热板装置', '', '1', NULL, '1', 'CAR', 'b85d751b575d4d0cad6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bb13bd67db9746e0848', '电器附件', '电控模块团队', '电器附件', '', '1', NULL, '1', 'CAR', '2ae611e7d78e4d35b99', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bb17458f5b73411ebcf', '燃气管路装置', 'NG供给系统', '燃气管路装置', '', '1', NULL, '1', 'TRUCK', '95233216c66947379cf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bb63c518a2f34c66a35', '转向油泵总成', '转向动力源', '转向油泵总成', 'CZP;CZT;VPW;PEF', '1', NULL, '1', 'TRUCK', '03648c155c5b42858d3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bbc71f8f25e340ad911', '驻车制动器总成', '驻车制动器总成', '驻车制动器总成', '', '1', NULL, '1', 'TRUCK', '9602520153c242dc85f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bc1ce1f92ce1452d8ea', '点火开关', '点火开关', '点火开关', '', '1', NULL, '1', 'TRUCK', 'cb132a8dd3db4f0b868', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bc4b5b56e27545ebaf9', '蒸发装置', '燃油管路及附件', '蒸发装置', '', '1', NULL, '1', 'TRUCK', 'f3e6824d388245c1aa6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bc6f34e338ae481b902', '侧裙板', '侧围外饰附件', '侧裙板', '', '1', NULL, '1', 'TRUCK', '23985514affb49d5aa5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bc90f503f98940f7a3d', '车桥润滑油', '驱动桥总成', '车桥润滑油', '', '1', NULL, '1', 'CAR', '77a5724dabb64417a74', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bc9f08b1804d4bf58da', '底盘组件', '车轮及轮胎模块团队', '底盘组件', '', '1', NULL, '1', 'CAR', '43227b37b3cf4e75af6', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bcc04339e0244c19860', '离合器安装图', '离合器安装图', '离合器安装图', 'PEP;PTT;PTB;PTA;PES;VPA', '1', NULL, '1', 'CAR', 'dd184c0546a948769f4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bcda75f9236f41c291e', '前稳定杆', '前悬架稳定杆', '前稳定杆', 'VPP;VPA;VPW', '1', NULL, '1', 'TRUCK', '80577849d47d418bbde', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bcf9616b30e646999d2', '后悬架安装图', '后悬架', '后悬架安装图', '', '1', NULL, '1', 'CAR', '20f0e96840d54a858ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bd6c283464c54c5785b', '电堆冷却管路系统', '冷却管路系统', '电堆冷却管路系统', '', '1', NULL, '1', 'CAR', '44befe63b8a7436d943', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bda5e08cf53b4654ae3', '全车锁芯及钥匙总成', '车门附件', '全车锁芯及钥匙总成', '', '1', NULL, '1', 'CAR', '8fcbbab3923e4c8ca11', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('be3967c1762e4983a4e', '玻璃升降系统', '车门附件', '玻璃升降系统', 'VPP', '1', NULL, '1', 'TRUCK', 'fa589893b31646768a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('be6c830c343942c386a', '强制纯电运行开关', '仪表台小开关2', '强制纯电运行开关', '', '1', NULL, '1', 'TRUCK', '570113ccfa494a5bb0f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('be73b5a678294434ac7', '侧导流板', '导流装置', '侧导流板', 'VPT;VPP;VPW;BEA;VPA;BBR;BBF;BBL;BBW', '1', NULL, '1', 'TRUCK', '59366efa0bba4054b44', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bf12b3861b914862a84', '(电动)液压泵', '伺服系统', '(电动)液压泵', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bf94e2d3b8c0458fa4d', 'ADAS模块', 'ADAS模块', 'ADAS模块', '', '1', NULL, '1', 'TRUCK', '49729aa1a6ef462bbff', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bfa4e14f9cfe438c934', '燃料电池发动机', '燃料电池系统模块', '燃料电池发动机', '', '1', NULL, '1', 'TRUCK', 'c7133c23a1e645de9d8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bfdf8d746e3a4487bdd', '低速行人警示器', '信号装置', '低速行人警示器', 'VPT;VPP;VFT', '1', NULL, '1', 'TRUCK', '7866b048e70d4713a99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bfe2f65fccca45be9eb', '动力电池系统模块', '动力蓄电池模块团队', '动力电池系统模块', '', '1', NULL, '1', 'TRUCK', '95859b420632446c9f0', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('bfee232ded044847818', '前桥总成线束安装图', '前桥总成线束安装图', '前桥总成线束安装图', '', '1', NULL, '1', 'TRUCK', '8a0e7c8fa5f44a04b2d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c00e0b73cdd9404eba2', '转向器总成', '转向执行元件', '转向器总成', 'VFD;CZT;VPW;VPA', '1', NULL, '1', 'TRUCK', '46479e02a6274b379e0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c062ea2dda37495682e', '进气', '进气模块团队', '进气', '', '1', NULL, '1', 'CAR', '14919b7103974be88b3', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c0ed66af66b543019a8', '发动机冷却管路系统', '冷却管路', '发动机冷却管路系统', 'VPA;PEP;PTR;VFE', '1', NULL, '1', 'TRUCK', '1c5d59d83d2f46a5bad', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c0fca45796f94bb7891', '辅控多合一总成', '辅控多合一总成', '辅控多合一总成', '', '1', NULL, '1', 'CAR', '0414affc73c04833a4e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c1298c8a7ab945cb879', '组合开关', '驾驶室开关', '组合开关', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c12bbadd5ce54ac59a7', '阳光环境光传感器', '阳光环境光传感器', '阳光环境光传感器', 'MPO', '1', NULL, '1', 'CAR', '85741ba04d964c82b46', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c13aa73a8a1243439d4', '转向管路', '转向模块团队', '转向管路', '', '1', NULL, '1', 'CAR', '5ff78444be4448f89fc', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c1500685bae94cfdb09', '右转弯提示装置', '信号装置', '右转弯提示装置', 'VPT;VPP;GMR', '1', NULL, '1', 'TRUCK', '7866b048e70d4713a99', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c18b14d00c43438b973', '门灯开关', '仪表台开关', '门灯开关', 'VPP', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c1919044975f4e50ba5', 'ESP/ASR开关', '仪表台小开关1', 'ESP/ASR开关', 'VPT;VPP;MAP;MAS', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c268c75326a1499bbb0', '分动器开关', '仪表台小开关1', '分动器开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c2d87820428e47dfbcd', '横梁总成', '后悬架支架', '横梁总成', '', '1', NULL, '1', 'CAR', 'ee9c99b30602473bb7b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c38639320c9049e2a75', '变速器', '变速模块团队', '变速器', '', '1', NULL, '1', 'TRUCK', 'a288929ee4994034a6f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c3c6f1014dc041b081c', '内部照明', '车身电器', '内部照明', '', '1', NULL, '1', 'TRUCK', '2a91bfd0489f419cb82', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c3d8d789a33a4ad8af8', '仪表板', '内饰模块团队', '仪表板', '', '1', NULL, '1', 'CAR', '79a4d1abd8cb4d00b9e', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c4138bf35bf6441b91f', '后围线束总成', '车身线束', '后围线束总成', 'VPP;VFD;BBF;BBR;BBL;BDF;BDH;MPV;MPS;MIH;MCP;PFP', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c4382505b32d404bb42', '气瓶与车架连接件', '气瓶与车架连接件', '气瓶与车架连接件', '', '1', NULL, '1', 'TRUCK', '75724f0f1fd74eb5a00', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c43830c7eda24f03a6e', '燃油系统', '燃油系统模块团队', '燃油系统', '', '1', NULL, '1', 'TRUCK', 'a114a51feb2443cfb19', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c4482cff5dc9432c913', '车架总成', '车架总成', '车架总成', 'VPP;VPA;VPW;VPR;VFF;VFW;VFT;MVB', '1', NULL, '1', 'TRUCK', '51a9022707df4b75b68', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c448d49530724f03bf9', 'ABS HECU', '底盘控制系统', 'ABS HECU', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c4a42bea019444f0804', '平衡轴', '后悬架支架', '平衡轴', 'VPA;VPW;VFG;VPO', '1', NULL, '1', 'TRUCK', 'f90d3ea928074f788a4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5066c84aabe4c2084c', '白车身喷涂及密封', '白车身附件', '白车身喷涂及密封', '', '1', NULL, '1', 'CAR', '9ca01e18532e415e812', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5216e9d65c34ea4829', '传动轴安装图', '传动轴安装图', '传动轴安装图', 'VPA;VFG;VPO;VFW;VFF;PEF;PEP;PTT;PRM', '1', NULL, '1', 'TRUCK', '748fe2866bf04938979', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c59879b98203458c8f1', '离合总泵', '离合操纵装置', '离合总泵', 'PTT;PTB;VPP;VPA', '1', NULL, '1', 'CAR', '6045a25aa91549cf95e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5a7bf5265894c759d8', '冰箱开关', '仪表台小开关1', '冰箱开关', '', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5ab496d7b0c44b1ac1', '动力总成悬置', '动力总成悬置', '动力总成悬置', '', '1', NULL, '1', 'CAR', '628891d0983e4bca902', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5bd831e2d4f415ab28', '车载电器', '电器标准部件', '车载电器', '', '1', NULL, '1', 'TRUCK', '9c8d99bbe2c8467c9ff', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5d9f96d23b94176b81', '全车锁芯', '车门附件', '全车锁芯', 'CFL;CFR;CFU;VFT;MKK', '1', NULL, '1', 'TRUCK', 'fa589893b31646768a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5dbe9ac533e4cd19c7', '前悬架弹性元件', '前悬架', '前悬架弹性元件', '', '1', NULL, '1', 'TRUCK', 'f56ab73a05494773bb6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5dd66898cff4528983', '开闭件系统', '开闭件模块团队', '开闭件系统', '', '1', NULL, '1', 'CAR', 'ad5b4a08a8a64e2c9c2', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5e5ee4e4aaf4121979', '总布置图', '整车总布置图', '总布置图', 'VPP;VPA;VPW;VPR;VPK;VFT', '1', NULL, '1', 'TRUCK', 'd44d80e267b344cf80c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c5e8945417cb49a4bab', '后处理装置', '后处理装置', '后处理装置', 'PEF;PEE;VPA;VPW;VPP', '1', NULL, '1', 'TRUCK', 'b01f4d5f5a7c431c88d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c61b7f6308894c1ab17', '排气系统', '后处理+排气模块团队', '排气系统', '', '1', NULL, '1', 'TRUCK', 'b53c8a991388420187e', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c61dae49f35641f5a95', '电磁阀', '底盘开关', '电磁阀', 'VPT;VPP;VPW;PPM', '1', NULL, '1', 'TRUCK', '66d9ae7e531c4e179e8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c657dcaae4944af5b26', '鼓风机总成', '暖气装置', '鼓风机总成', '', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c65c74fd5fd84f2d978', '分动器', '变速模块团队', '分动器', '', '1', NULL, '1', 'CAR', '9e1af5d72d5b449ca29', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c669c9c71e9a4471880', '前风挡玻璃', '风挡玻璃', '前风挡玻璃', 'VPP;MAL;MAW;MAB;BEW;BBR;MAR;MAT;MAC;MAK;MAI;BLI', '1', NULL, '1', 'TRUCK', '46751977e5244023a3a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c68152bab33c47faa19', '电器模块团队', '电子电控系统', 'MTE4 电器模块团队', '', '1', NULL, '1', 'TRUCK', '5b93d25b300f414782f', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c6930980868f496999c', 'DPF后处理警示牌', '排气系统', 'DPF后处理警示牌', '', '1', NULL, '1', 'TRUCK', 'c61b7f6308894c1ab17', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c697d38e0d3648548e7', '缓冲块总成', '货箱附件', '缓冲块总成', '', '1', NULL, '1', 'TRUCK', 'a70a05370ec64436bca', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c70fee163a2e4daa99b', '后减振器总成', '后悬架阻尼系统', '后减振器总成', 'VPW;VPR;CSR', '1', NULL, '1', 'TRUCK', '8287fa75d6e44f0c89f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c7133c23a1e645de9d8', '燃料电池系统模块', '燃料电池系统模块', '燃料电池系统模块', '', '1', NULL, '1', 'TRUCK', 'eec72978959146e38a4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c7229066649a4989b89', '转向杆系', '转向执行元件', '转向杆系', 'VFD;VPW;PAF', '1', NULL, '1', 'CAR', '7223a2b05e7647a18a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c73214aec3ad4eeca15', '前围暖风管路', '暖气装置', '前围暖风管路', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c7925ec2ae5f405696c', '电源总开关(底盘)', '底盘开关', '电源总开关(底盘)', 'VPT;VPP;VPA;MVC', '1', NULL, '1', 'TRUCK', '66d9ae7e531c4e179e8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c7a1d2a04d69437697c', '车门结构', '开闭件系统', '车门结构', '', '1', NULL, '1', 'CAR', 'c5dd66898cff4528983', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c7e5706a9b19430d982', '车身线束支架及通用件', '车身线束', '车身线束支架及通用件', '', '1', NULL, '1', 'CAR', 'ece47900c0894a21a3b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c80052ef63c54aa1a55', '高压附件模块团队', '新能源系统', 'MTN3 高压附件模块团队', '', '1', NULL, '1', 'TRUCK', 'db4b6e80b2554c79a82', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c81d6ad337994ae68ff', 'chiller', '冷气装置', 'chiller', '', '1', NULL, '1', 'TRUCK', '165c97fe0d484ec3845', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c822e2dfe0fb491b8d9', '牵引装置系统', '车架模块团队', '牵引装置系统', '', '1', NULL, '1', 'TRUCK', '983a32bc04154356aba', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c87c8b638eda4239a8c', '转向助力缸及支架', '转向执行元件', '转向助力缸及支架', 'VFD;VPW;PAF', '1', NULL, '1', 'TRUCK', '46479e02a6274b379e0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c88ff49587f64d6dbf3', '盘式制动器总成', '轮边制动模块', '盘式制动器总成', 'VPA;MBK;VFD;BBF', '1', NULL, '1', 'CAR', 'e1aeaa792dca4c4080c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c8b6442f7cff414aa51', '仪表台通用开关', '驾驶室开关', '仪表台通用开关', '', '1', NULL, '1', 'CAR', '010ad996c8d048c6952', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c8f39ede761748f5a11', '开关回位机构总成', '仪表台开关', '开关回位机构总成', 'PTR;ABS/EBS', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c921b13f8f8c4a12b7d', '滤清器装置', '燃油系统', '滤清器装置', '', '1', NULL, '1', 'CAR', '4a5710964c7a489788e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c9a2579d2c634393aac', '燃气滤清器装置', 'NG供给系统', '燃气滤清器装置', '', '1', NULL, '1', 'TRUCK', '95233216c66947379cf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('c9b30fa6d6c14d8cbaf', '车身脚踏板', '上车踏板', '车身脚踏板', 'VPA;VPP;BBF;BEB', '1', NULL, '1', 'TRUCK', '28aff81c108b488f8e5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ca2bed47f4d5421dbd2', '离合器油', '离合器油', '离合器油', 'VPP;PTA', '1', NULL, '1', 'CAR', '8f3cd1d779a94a72b12', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cac80f7a88714f09a9a', '天窗', '顶盖地板附件', '天窗', '', '1', NULL, '1', 'CAR', '233a3f1dc1fb4fde91e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cada298c233f409080a', '排烟管', '独立热源装置', '排烟管', '', '1', NULL, '1', 'TRUCK', '85ed436787944e7f885', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cb132a8dd3db4f0b868', '点火开关', '驾驶室开关', '点火开关', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cb13b83e5a42482880f', '推力杆支架', '前悬架支架', '推力杆支架', '', '1', NULL, '1', 'CAR', '51e0a5ea19a540f3a2d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cb57aa6494334588a64', '冷却装置', '冷却模块', '冷却装置', 'VPA;PEP;VFE', '1', NULL, '1', 'TRUCK', '616009976af94222988', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cb93231b2e9240a4a23', '驾驶室驻车操纵', '制动模块团队', '驾驶室驻车操纵', '', '1', NULL, '1', 'TRUCK', '39f42fade11a450abdf', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cb97d0946a9f41aa8c9', '电动空压机', '电动空压机', '电动空压机', 'VFT', '1', NULL, '1', 'TRUCK', '3e982735fad74762b0b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cbadea95052b45f8b3e', '门控开关', '驾驶室开关', '门控开关', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cbe4714c6e194d09b2e', '变速器安装说明', '变速器安装图', '变速器安装说明', 'PTA;PTD;PTB;PTC;PTT;', '1', NULL, '1', 'CAR', 'af5d8f531e084f6ab08', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cc54e4eb8f724245b23', '隔热垫', '隔音隔热', '隔热垫', '', '1', NULL, '1', 'CAR', '9111c491c968413a9c9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cc8f3386517e4894960', '射频接收器', '系统级控制模块', '射频接收器', '', '1', NULL, '1', 'TRUCK', 'a22e83f4e6d047fb8bd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cc9cc1d1bd114f68913', '胎压监测传感器及附件', '胎压监测', '胎压监测传感器及附件', 'CTM;CTF;VPW', '1', NULL, '1', 'CAR', 'e7524a5c09154155b1a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cca8963dfa6a47078db', '驱动桥模块团队', '动传系统', 'MTT4 驱动桥模块团队', '', '1', NULL, '1', 'CAR', '6a020b61a2d145c1ad2', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ccdf928c99274854a9f', '外饰模块团队', '车身系统', 'MTB5 外饰模块团队', '', '1', NULL, '1', 'CAR', '203ab4100a4448ef841', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ccf3df9c0ff84f1f934', '副车架', '前悬架支架', '副车架', '', '1', NULL, '1', 'CAR', '51e0a5ea19a540f3a2d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cd2ca9a4baca47c4a8b', '独立热源管路(车身部分)', '独立热源装置', '独立热源管路(车身部分)', '', '1', NULL, '1', 'CAR', 'eb2042bcdd84453ea9f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cd3bf45370524a4c857', '车门门锁及钥匙总成', '车门附件', '车门门锁及钥匙总成', 'VPP;VPA', '1', NULL, '1', 'TRUCK', 'fa589893b31646768a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cd5e43b824844cc7b15', '电子地平线总成', '车载智能终端模块', '电子地平线总成', '', '1', NULL, '1', 'CAR', '4a5e30470bbf4ac783d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cd5ed6dc6f0744d4bd3', '挂车阀', '挂车阀', '挂车阀', 'VPA;VFT;MAA;MAE', '1', NULL, '1', 'TRUCK', '01af52e1bb6240c7ab2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cd5f67cd26094171be7', '加注除气装置', '冷却系统', '加注除气装置', '', '1', NULL, '1', 'CAR', 'd4849a07c5c346df909', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cd705f5335254153930', '胎压监测控制器及附件', '胎压监测', '胎压监测控制器及附件', '', '1', NULL, '1', 'CAR', 'e7524a5c09154155b1a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cd7be13c9b8d4c05930', '后围线束总成', '车身线束', '后围线束总成', '', '1', NULL, '1', 'CAR', 'ece47900c0894a21a3b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cd8aff3fea464f3c843', '驾驶/副驾驶风道', '暖气装置', '驾驶/副驾驶风道', '', '1', NULL, '1', 'CAR', '514e946465ef4ffabeb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cdb3016855974b2791e', '制动系统控制单元', '底盘控制系统', '制动系统控制单元', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cdbaef27afc4468a9d2', '油缸模块', '车身翻转系统', '油缸模块', 'VPP;BBF', '1', NULL, '1', 'TRUCK', '42fb49ee9e9e4eb4951', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cdf699f1a3f44f4498a', '电源逆变器', '电器附件', '电源逆变器', 'GMR', '1', NULL, '1', 'CAR', 'f420e6eee0214018b9a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ce0301630c9a4aeab41', '灭火器', '内饰附件', '灭火器', '', '1', NULL, '1', 'TRUCK', 'ee2dca6104f54db0b58', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ce83d37e14a64340a67', '牌照灯总成', '外部照明', '牌照灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cec36305443f46748e3', '整车铭牌', '标牌', '整车铭牌', 'VPA', '1', NULL, '1', 'TRUCK', '79e51564a85e4ad2bac', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cf0774c1cc4f420daa1', '前桥制动管路', '底盘管路', '前桥制动管路', '', '1', NULL, '1', 'CAR', '1f85dc26f3ef4e3ca8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cf14dce1e2ef4832bfd', '顶盖外饰', '外饰系统模块团队', '顶盖外饰', '', '1', NULL, '1', 'TRUCK', 'ae239020b49d40e49a2', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cf51a5fe0142444abd4', '控制器支架', '系统级控制模块', '控制器支架', 'VPP;VFD', '1', NULL, '1', 'TRUCK', 'a22e83f4e6d047fb8bd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cf5269dfb0a94652b74', '伺服液压软管', '伺服系统', '伺服液压软管', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cf6b866ca1c24bffa34', '蓄电池箱体', '蓄电池箱体', '蓄电池箱体', 'MVU;MVC;MVB', '1', NULL, '1', 'CAR', 'ab6a27ab1d014ca883b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cf883954def7410fa1a', '阀和传感器', '阀和传感器', '阀和传感器', 'VPP;VPW', '1', NULL, '1', 'TRUCK', '7aa3c2154dda4092952', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cfaf433473804495809', '尾灯线束总成', '底盘线束', '尾灯线束总成', '', '1', NULL, '1', 'TRUCK', '72ed1024f33f4ad286a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cfb6dbe3195b4b5594b', '前防护总成', '前防护总成', '前防护总成', 'VPP;VPA', '1', NULL, '1', 'TRUCK', 'f65982055d0a4f3d884', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('cfb77e4303e2459db10', '转向护罩总成', '转向护罩总成', '转向护罩总成', 'VPP;CZA;PFP', '1', NULL, '1', 'CAR', '2b15d691d732466db85', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d0403762029546b285c', '外包装', '侧围外饰', '外包装', '', '1', NULL, '1', 'TRUCK', '73444730a92e4edf98b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d0be1cb458744aed824', '前悬架缓冲系统', '前悬架', '前悬架缓冲系统', '', '1', NULL, '1', 'CAR', '1b39a9b3a34e4ac7a63', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d0ec646b1ded4934a8f', '尿素溶液', '后处理系统', '尿素溶液', '', '1', NULL, '1', 'TRUCK', '933cbb6576cc4fc887d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d0f329a1b1f848989b5', '安全电子装置', '安全电子装置', '安全电子装置', '', '1', NULL, '1', 'TRUCK', '3e2a4a4300934c2bb05', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d0f78121fb744356b88', '车载智能终端模块', '智能座舱及车联网模块', '车载智能终端模块', '', '1', NULL, '1', 'TRUCK', '57166259901f47d7810', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d1053f30e18d43cc874', '音响系统', '音响装置', '音响系统', '', '1', NULL, '1', 'CAR', 'a6e58f1372404e4abe5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d142918b0bf3425f8af', '白车身调整总成', '白车身总成', '白车身调整总成', 'BBW;BBL;BBR;BBF;VFD;PTC;BOK;BOR;MCP', '1', NULL, '1', 'TRUCK', '5cf2b77bc7994e9f8f2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d16aba83b0ba4da19ec', '电驱动总成', '电驱动系统模块', '电驱动总成', '', '1', NULL, '1', 'TRUCK', '452ceeee8bfd40ae929', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d1b9c936ae53419f911', '变速器操纵固定支架底盘部分', '变速器操纵机构', '变速器操纵固定支架底盘部分', 'VPP;VFD;PTT;PTC', '1', NULL, '1', 'CAR', '954c378761894541a59', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d1c61f98297e4603a4f', '白车身总成', '白车身总成', '白车身总成', '', '1', NULL, '1', 'CAR', '03a5920176ce4eb4970', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d211659dd10646d9be0', '变速器润滑油', '变速器', '变速器润滑油', '', '1', NULL, '1', 'TRUCK', 'c38639320c9049e2a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d228258439134dfa800', '档位开关', '驾驶室开关', '档位开关', '', '1', NULL, '1', 'TRUCK', '9708f98039654b198dd', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d246dc99237b488da63', '传感器模块', '电控模块团队', '传感器模块', '', '1', NULL, '1', 'TRUCK', '5278f7a6bb904ae9bda', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d30cb5996fd04a4fbf6', '发动机基础数据', '发动机标定数据', '发动机基础数据', 'PEF;PEE', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d31b40fb40cf4da4a36', '鞍式牵引装置', '牵引装置系统', '鞍式牵引装置', '', '1', NULL, '1', 'TRUCK', 'c822e2dfe0fb491b8d9', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d31c584b3f5847b8818', '整车控制模块团队', '新能源系统', 'MTN4 整车控制模块团队', '', '1', NULL, '1', 'TRUCK', 'db4b6e80b2554c79a82', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d3314f24a51c4f8891a', '车身挡泥板', '挡泥板', '车身挡泥板', 'VPP;VPA;BBL;BBF;BEB', '1', NULL, '1', 'TRUCK', '9f3ec91af9ea45cea0a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d35098c165d2470a817', '车桥润滑油', '驱动桥总成', '车桥润滑油', '', '1', NULL, '1', 'TRUCK', 'dd04a2f55cbf48a9bd7', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d3ad645d859e4f00958', '流水槽', '侧围外饰附件', '流水槽', 'VPT;VPP;VPA;BBF;BBR;BBL;GMR', '1', NULL, '1', 'TRUCK', '23985514affb49d5aa5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d3b05d5c71244bcdb3e', '后蒸发器总成及风道', '冷气装置', '后蒸发器总成及风道', '', '1', NULL, '1', 'CAR', '0d1cafefd2134b89a8e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d44d80e267b344cf80c', '整车总布置图', '整车总布置图', '整车总布置图', '', '1', NULL, '1', 'TRUCK', '541937ecd7074ba5b8f', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d45bd39678f243138cc', '车身线束', '线束', '车身线束', '', '1', NULL, '1', 'TRUCK', '2afcde230efb451180b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d4849a07c5c346df909', '冷却系统', '冷却模块团队', '冷却系统', '', '1', NULL, '1', 'CAR', '1f405e83dd7c44fcb35', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d4cd4a0997f44abab9f', 'AVM控制器', '控制器', 'AVM控制器', '', '1', NULL, '1', 'CAR', '1e9d704ecedc4dd0a56', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d5322fe3c76745e78e0', '爆胎应急装置', '爆胎应急装置', '爆胎应急装置', 'CTE;CTF;VPW', '1', NULL, '1', 'TRUCK', '2f65759471b04094933', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d583916e12154788ad8', '手动再生开关', '仪表台小开关1', '手动再生开关', 'VPT;VPP;PEE', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d5d8d416e5e24015afd', '左右门线束总成', '车身线束', '左右门线束总成', '', '1', NULL, '1', 'CAR', 'ece47900c0894a21a3b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d62ac2bda6ff4d87a9e', '窗帘及导轨', '窗帘及导轨', '窗帘及导轨', 'BOU;BOS;BOM;BBR', '1', NULL, '1', 'TRUCK', '0be58fea63b14a7a93f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d68241dc0f4848a6a12', '货箱护栏', '皮卡货箱附件', '货箱护栏', '', '1', NULL, '1', 'CAR', 'e5343b891d9a40b9b97', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d68f61afae4d4b51bf9', '车身系统', '根节点', '车身系统', '', '1', NULL, '1', 'TRUCK', '1000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d6eade7d9741472facc', '前桥制动模块', '行车制动阀', '前桥制动模块', 'VPP;VPA;VPW;MAA;MAE;MAP', '1', NULL, '1', 'TRUCK', '6891d6cd1aae49dfbfe', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d70f4fc1d6de4595b9f', '变速操纵机构', '变速器控制机构', '变速操纵机构', '', '1', NULL, '1', 'TRUCK', 'b884804a0907480d9b8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d731570f34e04ef39c7', '后减振器总成', '后悬架阻尼系统', '后减振器总成', '', '1', NULL, '1', 'CAR', '47ab5788e9844fadbe8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d736e813fc034505828', '加速传动装置', '变速模块团队', '加速传动装置', '', '1', NULL, '1', 'CAR', '9e1af5d72d5b449ca29', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d75a67fc3c914deea6a', '前向ADAS', 'ADAS模块', '前向ADAS', 'VPT;VPP;VPL;GMR;MAB;MAC;MAK;MAL;MAW;BEB', '1', NULL, '1', 'TRUCK', 'bf94e2d3b8c0458fa4d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d7c49906facd4819a53', '上车踏梯', '走台', '上车踏梯', 'VPP;VPA;MVB', '1', NULL, '1', 'TRUCK', '98d2d07cbe1143259aa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d7dda1cecad14e45800', '管线布置图', '制动原理图及管线布置图', '管线布置图', '', '1', NULL, '1', 'CAR', '996eebca59514f02b7f', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d83a6fad03834c7a963', '燃料电池进气系统', '燃料电池进气系统模块', '燃料电池进气系统', '', '1', NULL, '1', 'CAR', '6c295a1c752b4d8eadb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d848216894c94aab808', '前悬架推力杆', '前悬架导向机构', '前悬架推力杆', '', '1', NULL, '1', 'CAR', '231ea4c032694a8092e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d8a2a84be02f42a5b4a', '加速系统安装说明', '加速系统安装图', '加速系统安装说明', 'VPP;VFD;PES;PTA;', '1', NULL, '1', 'CAR', '3a8e329a393747e39f2', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d8c1351b133048238ac', '车身后悬置总成模块', '车身后悬', '车身后悬置总成模块', 'VPP;VPL;BSM;VPA;BBL;BBF;VPW', '1', NULL, '1', 'TRUCK', '7ffc4929b9034337878', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d95426c9274e4dbc9d9', '前轴总成', '轮边制动模块', '前轴总成', 'ABS/EBS;MAP;MAE;VFW', '1', NULL, '1', 'CAR', 'e1aeaa792dca4c4080c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d9c08f2d43054bc7b33', '无线充电', '电源转换模块', '无线充电', 'VPT;VPP;MPW', '1', NULL, '1', 'TRUCK', '077260d889a941bd96d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d9c64794dfc544cd966', '变速操纵固定支架驾驶室部分', '变速操纵机构', '变速操纵固定支架驾驶室部分', 'VPP;VFD;PTC', '1', NULL, '1', 'CAR', 'b6734099820f4e8e905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('d9e2cec240524e6989f', '尿素罐装置', '尿素罐装置', '尿素罐装置', 'VFE;PEE;CFU;VPP;VFF', '1', NULL, '1', 'TRUCK', '844eb9cd21184d00948', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('da623842b04a45c19a5', '转向液压油', '液压介质', '转向液压油', 'VPW', '1', NULL, '1', 'CAR', '4660d7f3424a42a588a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('da64a207fbe04213b2c', '后悬架推力杆支架', '后悬架支架', '后悬架推力杆支架', 'VPA;VPW;VPR;VFG', '1', NULL, '1', 'TRUCK', 'f90d3ea928074f788a4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('da99f319fe634e96a6b', '螺旋弹簧', '前悬架弹性元件', '螺旋弹簧', '', '1', NULL, '1', 'CAR', '2e5d8e96f9004b52927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dabe44b8df8243beaf3', '变速器操纵机构安装图', '变速器操纵机构安装图', '变速器操纵机构安装图', 'VPP;PTT;PTC', '1', NULL, '1', 'CAR', '2959a389e13045ee890', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dae4ba3032874e48a56', '前悬架气囊组件', '前悬架弹性元件', '前悬架气囊组件', '', '1', NULL, '1', 'CAR', '2e5d8e96f9004b52927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('db110e2c0f8645cbad3', '车载冰箱', '车载电器', '车载冰箱', 'MPV', '1', NULL, '1', 'CAR', '94acfc8361ba48fc9f8', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('db1bbd629d3a4defab2', '氢系统模块', '氢燃料电池模块团队', '氢系统模块', '', '1', NULL, '1', 'CAR', '760a7076058d4404b8a', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('db215e9decef4bd39cf', '导流装置', '挡风板', '导流装置', 'BBF', '1', NULL, '1', 'TRUCK', '4cf6584801d34064b16', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('db33fb2eef9c4e67a1f', '监测采集环境温度', '环境温度传感器', '监测采集环境温度', 'PEE ', '1', NULL, '1', 'CAR', '4cfd942c6b374d8787c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('db4b6e80b2554c79a82', '新能源系统', '根节点', '新能源系统', '', '1', NULL, '1', 'TRUCK', '1000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('db5fbea579d848a29cf', '电力驱动总成冷却管路系统', '冷却管路', '电力驱动总成冷却管路系统', '', '1', NULL, '1', 'TRUCK', '1c5d59d83d2f46a5bad', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('db982a139c7d434a843', '尿素溶液', '尿素溶液', '尿素溶液', 'PEE;VFT;CFU', '1', NULL, '1', 'CAR', 'b53da0e31ca54e398cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dbedf4134d2849119a3', '后示廓灯总成', '外部照明', '后示廓灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dbfce65e0d284876a92', '滤清器装置', '燃油滤清器', '滤清器装置', 'VFE;VPP;VPA;VPW;PEM;CFL;CFR', '1', NULL, '1', 'TRUCK', '8db70eeca8e84faf976', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dc48eae656c543ae841', '后悬架气囊组件', '后悬架弹性元件', '后悬架气囊组件', 'VPW;VPR;VFG;CSR', '1', NULL, '1', 'CAR', '27c06cb9fb54453489a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dc60eac059094ddcb22', '轮胎/车轮', '车轮及轮胎模块团队', '轮胎/车轮', '', '1', NULL, '1', 'CAR', '43227b37b3cf4e75af6', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dc65beeaf7664adb97c', 'ESC模块', '底盘控制系统', 'ESC模块', '', '1', NULL, '1', 'CAR', '61afcfeb75be4df2a84', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dc8b5cf5f65b47ea95d', '发动机总成', '发动机总成', '发动机总成', '', '1', NULL, '1', 'CAR', '6c4d905ce9cc4b38988', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dcb3035595d141f5899', '车门门锁', '车门附件', '车门门锁', '', '1', NULL, '1', 'CAR', '8fcbbab3923e4c8ca11', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dd04a2f55cbf48a9bd7', '驱动桥总成', '驱动桥模块团队', '驱动桥总成', '', '1', NULL, '1', 'TRUCK', '2e7835c63d0c4d70874', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dd184c0546a948769f4', '离合器安装图', '离合系统', '离合器安装图', '', '1', NULL, '1', 'CAR', '3d6280ec515448d88cb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dd1a55352a6e4cfbb69', '排气尾管', '排气管', '排气尾管', 'PEF;PEE;BBL;VPA;VPW;VPP;VFG ', '1', NULL, '1', 'CAR', '1f757738eccb4fa9a49', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('de5ff69d07d349e6aa0', '底盘系统', '根节点', '底盘系统', '', '1', NULL, '1', 'TRUCK', '1000', 1); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dea5ebfb97ef4aa2bbc', '离合器操纵装置', '离合系统', '离合器操纵装置', '', '1', NULL, '1', 'TRUCK', '9db17e9517e143b2a18', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dead8367760645bfb64', '电池护罩', '动力电池总成', '电池护罩', '', '1', NULL, '1', 'CAR', '9f5a23f272fa421f854', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ded622034ac944f1b2f', '后桥管束', '后桥管束', '后桥管束', 'VPP;VPA;PRM;MAA;MAE;VPW;MBR;CSP;MBK', '1', NULL, '1', 'TRUCK', 'a532470777c84b67a1f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('deff48aca2754055873', '组合仪表', '组合仪表', '组合仪表', '', '1', NULL, '1', 'CAR', '935192c8aec74295a2a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('df0091e1f59c433790c', '燃料电池排气系统模块', '燃料电池系统模块', '燃料电池排气系统模块', '', '1', NULL, '1', 'CAR', 'af18c09592ef40dfa76', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('df982394c9364989a44', '行驶记录仪/车载终端', '车载智能终端模块', '行驶记录仪/车载终端', 'VPT;VPP;GMR;GMS;BBR', '1', NULL, '1', 'TRUCK', '0d12a730dc9a4760b2a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('dfe30449b42a446f8c6', '燃料电池发动机', '燃料电池系统模块', '燃料电池发动机', '', '1', NULL, '1', 'CAR', 'f6f690f06cbf493ba7d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e067365b900b4398bc2', '前翻转盖板及操纵机构', '前/后围外饰附件', '前翻转盖板及操纵机构', 'VPT;VPP;VPA;VFD;MWV;VPL', '1', NULL, '1', 'TRUCK', '5373de1924e44c52bd4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e06e7198b6404f62a90', '巡航开关', '仪表台小开关1', '巡航开关', 'VPT;VPP;MAC', '1', NULL, '1', 'TRUCK', '1a49d8c3112c4902999', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e0d93801569b46a890e', '悬架控制系统安装图', '悬架控制系统安装图', '悬架控制系统安装图', 'VPW;VPR;VFW;VPK', '1', NULL, '1', 'TRUCK', 'e3a443eb59c04959b4d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e163a748dd044ca2908', '档位开关', '档位开关', '档位开关', '', '1', NULL, '1', 'CAR', '200f86d9a5fd456ba59', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e163aaee779c429ca8b', '发动机数据', '发动机模块团队', '发动机数据', '', '1', NULL, '1', 'TRUCK', '70cf10adbbbc4331bc5', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e16bd50b8f5343068c7', '后组合灯', '外部照明', '后组合灯', 'VPA;BLR;VFW;VPW', '1', NULL, '1', 'TRUCK', 'a9f4acff30af44f0963', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e17a7386c9fd4f5bb46', '继电器', '继电器', '继电器', 'VPP;VFT;VFE;VFS;BMH;MPD;MOS;PEE;PES;PED', '1', NULL, '1', 'TRUCK', '1bb0df7e942f469791a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e1aeaa792dca4c4080c', '轮边制动模块', '轮边制动模块', '轮边制动模块', '', '1', NULL, '1', 'CAR', '6fd746ed48c34c45afb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e1b5add6b26e458da07', '高压线束模块', '高压附件模块团队', '高压线束模块', '', '1', NULL, '1', 'TRUCK', 'c80052ef63c54aa1a55', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e1c254d88da0420dab2', '氢系统模块', '氢系统模块', '氢系统模块', '', '1', NULL, '1', 'TRUCK', '90270246ed0c40efab7', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e1d6c6711d0d4e988f1', '离合器', '离合系统', '离合器', '', '1', NULL, '1', 'CAR', '3d6280ec515448d88cb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e257a27ae47a4872962', '通用开关', '仪表台通用开关', '通用开关', 'BLA', '1', NULL, '1', 'CAR', 'c8b6442f7cff414aa51', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e2a80a327c264114be9', '高压线束模块', '高压附件模块团队', '高压线束模块', '', '1', NULL, '1', 'CAR', '359df73823de4c35b60', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e2bdabe4bea547488fa', '电子后视镜摄像头总成', '电子后视镜', '电子后视镜摄像头总成', '', '1', NULL, '1', 'CAR', '297abaecc51043fea3f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e3116418a30c46f8baf', '鲨鱼鳍天线', '天线模块', '鲨鱼鳍天线', '', '1', NULL, '1', 'TRUCK', '06777a62dc2e44ae87b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e371fbb57f584e5a80f', '顶饰条', '顶外饰附件', '顶饰条', '', '1', NULL, '1', 'CAR', '94a0b0da737f4aa0b39', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e3a443eb59c04959b4d', '悬架控制系统安装图', '空气悬架控制机构', '悬架控制系统安装图', '', '1', NULL, '1', 'TRUCK', '905ce7dd67024993897', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e3e32526c1674a02bfa', '转向管路', '转向管路', '转向管路', '', '1', NULL, '1', 'CAR', 'c13aa73a8a1243439d4', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e408ac047ac347b78c8', '隔音隔热板装置', '封装', '隔音隔热板装置', 'VPP;VPA;PEF;BBL;VFF', '1', NULL, '1', 'TRUCK', '119b9a165409487392a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e41dd5c910f44909a04', '仪表板', '仪表板', '仪表板', '', '1', NULL, '1', 'CAR', 'c3d8d789a33a4ad8af8', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e45be7eb7e144a55980', '转向护罩总成', '转向控制装置', '转向护罩总成', '', '1', NULL, '1', 'TRUCK', '5cf119ed01404776800', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e47668067e6343d6bfe', '动力悬置', '动力悬置模块团队', '动力悬置', '', '1', NULL, '1', 'TRUCK', '240009c8cd8849928b5', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e5343b891d9a40b9b97', '皮卡货箱附件', '皮卡货箱附件', '皮卡货箱附件', '', '1', NULL, '1', 'CAR', '28b43a5a9d244443b41', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e548cfcad2e04accb51', '天线模块', '信息娱乐显示模块', '天线模块', '', '1', NULL, '1', 'CAR', '0913953554a6445fbab', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e55894493a3e4809bd3', '后视镜', '车身电器', '后视镜', '', '1', NULL, '1', 'CAR', 'b9feb9bbee8c4c82adc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e570b0e173b04264941', '电力驱动模块团队', '新能源系统', 'MTN2 电力驱动模块团队', '', '1', NULL, '1', 'CAR', 'b093de0c2d844ecdb25', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e57ea899ba214e72870', '调压模块', '底盘控制系统', '调压模块', '', '1', NULL, '1', 'TRUCK', '06ed902667044f0695a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e5cc4305c3064507bbb', '外置绳钩', '皮卡货箱附件', '外置绳钩', '', '1', NULL, '1', 'CAR', 'e5343b891d9a40b9b97', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e5db2ca2e66f4fe5aed', '风挡玻璃', '前后围外饰', '风挡玻璃', '', '1', NULL, '1', 'CAR', '89f44cae5a3f4c93b70', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e60c9e6a39a04a51b69', '高位制动灯总成', '外部照明', '高位制动灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e622091310b54bd895a', '管线布置图', '制动模块团队', '管线布置图', '', '1', NULL, '1', 'TRUCK', '39f42fade11a450abdf', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e62950fdbf664a2e8ac', '白车身模块团队', '车身系统', 'MTB1 白车身模块团队', '', '1', NULL, '1', 'CAR', '203ab4100a4448ef841', 2); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e631d12940e94c1dab6', '外部照明', '车身电器', '外部照明', '', '1', NULL, '1', 'CAR', 'b9feb9bbee8c4c82adc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e650cb7b8d5746ef9c1', '车门密封', '车门附件', '车门密封', 'VPP', '1', NULL, '1', 'TRUCK', 'fa589893b31646768a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e655ac8d2528400083e', '机舱管路', '底盘管路', '机舱管路', '', '1', NULL, '1', 'CAR', '1f85dc26f3ef4e3ca8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e659aa83953948ed939', '副仪表板总成', '仪表板', '副仪表板总成', '', '1', NULL, '1', 'CAR', 'e41dd5c910f44909a04', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e67502d5cccc4ea8a86', '承载轴', '承载轴', '承载轴', '', '1', NULL, '1', 'TRUCK', '2304a71573a74c7591b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e68374d9596748f7a82', '智能控制器总成', '控制器', '智能控制器总成', '', '1', NULL, '1', 'CAR', '1e9d704ecedc4dd0a56', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e6bd1f70ff5f4d0e887', '后板簧导向板', '后悬架弹性元件', '后板簧导向板', 'VFG', '1', NULL, '1', 'TRUCK', 'fd4b2eb8f51647f5a2b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e6ed2cbfeb6f45d38e8', '侧标志灯总成', '外部照明', '侧标志灯总成', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e70c3c23692d4034af9', '蓄电池', '电力供应', '蓄电池', '', '1', NULL, '1', 'TRUCK', '829f524170d84c3282d', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e7331438d5694c80a7d', '侧防护总成', '侧防护总成', '侧防护总成', 'VPP;VPA', '1', NULL, '1', 'CAR', 'ae9b42377f5844f5868', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e7524a5c09154155b1a', '胎压监测', '轮胎/车轮', '胎压监测', '', '1', NULL, '1', 'CAR', 'dc60eac059094ddcb22', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e76aa6733baa4ac8a64', '车门结构', '开闭件系统', '车门结构', '', '1', NULL, '1', 'TRUCK', '4809992a187c4947818', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e77e71ba7c2e4487815', '货箱限位及缓冲装置', '皮卡货箱附件', '货箱限位及缓冲装置', '', '1', NULL, '1', 'CAR', 'e5343b891d9a40b9b97', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e78811bb691347eaa9a', '反光标识', '侧围外饰', '反光标识', '', '1', NULL, '1', 'CAR', '5a851615102341a0b8b', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e792a42ebe204d14810', '标志标识', '外包装', '标志标识', 'VPT;VPP;PTA;VPA;CST;GMS;PES;VFT;VFE;PEE', '1', NULL, '1', 'TRUCK', 'd0403762029546b285c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e7eb64df88fe48538ef', '玻璃升降系统', '车门附件', '玻璃升降系统', '', '1', NULL, '1', 'CAR', '8fcbbab3923e4c8ca11', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e80d5e0760e94316abb', '货箱固定总成', '货箱附件', '货箱固定总成', '', '1', NULL, '1', 'TRUCK', 'a70a05370ec64436bca', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e813a974e78448078fc', '变速器数据', '变速模块团队', '变速器数据', '', '1', NULL, '1', 'TRUCK', 'a288929ee4994034a6f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e943e9bb00ed4e67a67', '防飞溅', '挡泥板', '防飞溅', '', '1', NULL, '1', 'TRUCK', '9f3ec91af9ea45cea0a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e957de8bb78247fe96d', '空滤器装置', '空滤系统', '空滤器装置', 'VPP;CAA;VPA;BBF;PEF;BBL', '1', NULL, '1', 'CAR', '844e4f4c4ea6430d9a7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e963ac662537465fa18', '行驶记录仪/车载终端', '车载智能终端模块', '行驶记录仪/车载终端', '', '1', NULL, '1', 'CAR', '4a5e30470bbf4ac783d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e9d4b512b72f47449ea', '冷却系统安装图', '冷却系统', '冷却系统安装图', '', '1', NULL, '1', 'CAR', 'd4849a07c5c346df909', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('e9f38f43935e4316a52', '车轮(备)', '车轮', '车轮(备)', 'CTX;CTL;CTD;CTN', '1', NULL, '1', 'TRUCK', '4116db6a55b142e8bc0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ea31c0b8337845b6bc9', '安全带', '安全带', '安全带', '', '1', NULL, '1', 'TRUCK', 'b83e07c046a34f4f957', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ea76cbab79704023bfa', '左右门线束总成', '车身线束', '左右门线束总成', 'VPP;VFD;BMF;BMH;BMO;BOA;MWV', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ea8daa2675504d039a9', '其他标示牌', '标识', '其他标示牌', 'VPP', '1', NULL, '1', 'CAR', '13dbb092513d47bb82a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eaafa31ff4d54e34a42', '车轮护罩安装图', '挡泥板防护罩总成', '车轮护罩安装图', 'VPW;CCM;VPR', '1', NULL, '1', 'TRUCK', '5011e0d9dcba4289909', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ead57e3c4b6742c9853', '门控开关', '门控开关', '门控开关', 'VPT;VPP;BMH;BMO', '1', NULL, '1', 'TRUCK', 'cbadea95052b45f8b3e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eadd01c5a1e94ec9b2f', '电驱动系统模块', '电力驱动模块团队', '电驱动系统模块', '', '1', NULL, '1', 'CAR', 'e570b0e173b04264941', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eb2042bcdd84453ea9f', '独立热源装置', '暖风/空调', '独立热源装置', '', '1', NULL, '1', 'CAR', '380b124f855f463a8dc', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eb5a813074ce4d1dbd0', '转向传动装置图', '转向控制装置', '转向传动装置图', '', '1', NULL, '1', 'CAR', 'b8a58865a7f54495882', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eb65ce08cc3445ba9dc', '安全锤', '安全锤', '安全锤', '', '1', NULL, '1', 'CAR', 'f77b824df6e64e5f905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eb83696300164138a99', '中冷系统', '进气', '中冷系统', '', '1', NULL, '1', 'CAR', 'c062ea2dda37495682e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ebcb3dd2a78246e4a1b', '冷却液', '冷却系统', '冷却液', '', '1', NULL, '1', 'CAR', 'd4849a07c5c346df909', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ebd8a27658fe43f1a37', '发动机燃料', '燃油系统模块团队', '发动机燃料', '', '1', NULL, '1', 'TRUCK', 'a114a51feb2443cfb19', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ebe5de52e4a640278dc', '定位天线', '天线模块', '定位天线', '', '1', NULL, '1', 'TRUCK', '06777a62dc2e44ae87b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ec70c78ec8c74cdc9b6', '空气悬架标定数据', '控制机构', '空气悬架标定数据', 'VPP;VPA;VPW;VFG;VPK', '1', NULL, '1', 'TRUCK', '0f6473b41cce430eb36', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ec887570bcb042dda9e', '车载充电机总成', '车载充电机总成', '车载充电机总成', '', '1', NULL, '1', 'TRUCK', '2f9be37fb3204a64ac3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eca4f8b77ce54368b9b', '空调管路', '冷气装置', '空调管路', 'VPT;VPP;BBF', '1', NULL, '1', 'TRUCK', '165c97fe0d484ec3845', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ecb2d20f2e3949f3853', '分动器', '变速器及安装件', '分动器', '', '1', NULL, '1', 'TRUCK', '37f31b2897b143d9876', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ecb95a6925084660ac4', '新风风道', '暖气装置', '新风风道', 'VPT;VPP', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ece47900c0894a21a3b', '车身线束', '线束', '车身线束', '', '1', NULL, '1', 'CAR', '5191d54e1a8c47ad967', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ecea24019200438d977', '灭火器', '内饰装饰', '灭火器', '', '1', NULL, '1', 'CAR', '1523a304c37f48ff92a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ed304b1bfab8413fbf8', 'ABS模块', '底盘控制系统', 'ABS模块', '', '1', NULL, '1', 'CAR', '61afcfeb75be4df2a84', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ed3d0b0230874b93aac', '冷却系统安装图', '冷却系统', '冷却系统安装图', '', '1', NULL, '1', 'TRUCK', '56551d656f954829ad1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('edc854a827c445a8aa8', '发动机限速数据', '发动机标定数据', '发动机限速数据', 'PEF;PEE;VFS;GMV', '1', NULL, '1', 'TRUCK', '20f4ef28b1ab42178d1', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ee2dca6104f54db0b58', '内饰附件', '内饰系统模块团队', '内饰附件', '', '1', NULL, '1', 'TRUCK', '07c8195e81d54ae7aec', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ee5f62bd59974fe3b10', '电子地平线总成', '车载智能终端模块', '电子地平线总成', 'VPT;VPP;MAH', '1', NULL, '1', 'TRUCK', '0d12a730dc9a4760b2a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ee9c99b30602473bb7b', '后悬架支架', '后悬架', '后悬架支架', '', '1', NULL, '1', 'CAR', '20f0e96840d54a858ca', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eec72978959146e38a4', '燃料电池系统模块', '氢燃料电池模块团队', '燃料电池系统模块', '', '1', NULL, '1', 'TRUCK', '9b174da6ff4d447ca4e', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('eee07e43b1e14151887', '前风窗下饰板', '前/后围外饰附件', '前风窗下饰板', 'VPT;VPP;VPA;VFD;BBW', '1', NULL, '1', 'TRUCK', '5373de1924e44c52bd4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ef4d23dcae214e27aab', '汽化器、缓冲罐总成', '汽化器、缓冲罐总成', '汽化器、缓冲罐总成', '', '1', NULL, '1', 'TRUCK', 'a4ac1bae6361424ca9e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ef76ffbc2def44a5b42', '车身电器盒总成', '电器盒总成', '车身电器盒总成', '', '1', NULL, '1', 'CAR', '345432fca46146df96c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ef8e092de2f04156b17', '高压部件外壳搭铁线', '底盘线束', '高压部件外壳搭铁线', '', '1', NULL, '1', 'CAR', '8cf61a8ed9aa4a70b17', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('efb504caccf245eb8ef', '冷却装置', '冷却模块', '冷却装置', 'PEP', '1', NULL, '1', 'CAR', '64fe16de63ff4c7cb1e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('efd359f1da5040198f2', '信号装置', '电器附件', '信号装置', '', '1', NULL, '1', 'CAR', 'bb13bd67db9746e0848', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f0476bb43f2b450ebd6', '燃油管路及气管', '燃油管路及附件', '燃油管路及气管', 'VPP;VPA;VFW;VFE;CFL;CFR;PEM;CFT;VFG', '1', NULL, '1', 'TRUCK', 'f3e6824d388245c1aa6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f0ad14ff788e4945bb4', '转向管柱带可调机构', '转向控制装置', '转向管柱带可调机构', '', '1', NULL, '1', 'TRUCK', '5cf119ed01404776800', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f0b27c01e60041deadf', '前组合灯', '外部照明', '前组合灯', '', '1', NULL, '1', 'CAR', 'e631d12940e94c1dab6', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f0f380f0d777415a8cf', '方向盘总成', '方向盘总成', '方向盘总成', 'VPP;MAC;PPM;PPP;MMM', '1', NULL, '1', 'TRUCK', '4d5277bd28c442cdb28', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f11574f801b74d81b14', '新能源整车控制器', '新能源整车控制模块', '新能源整车控制器', '', '1', NULL, '1', 'CAR', '8bc348e8a606477790f', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f199f88b57974025be9', '导航天线', '天线模块', '导航天线', '', '1', NULL, '1', 'TRUCK', '06777a62dc2e44ae87b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f19be43ff9fb48ecb5f', '隔热罩', '排气系统', '隔热罩', '', '1', NULL, '1', 'TRUCK', 'c61b7f6308894c1ab17', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f1c23164150740d8840', '后驱动桥总成', '后桥总成', '后驱动桥总成', 'VPW;VPO;VPR;PRT;PRM;PAR;PRR;MBR;PRW;ABS/EBS', '1', NULL, '1', 'CAR', '3fc81ccdb3a2403bafb', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f1c878c473874d6f862', '后空调控制器', '冷气装置', '后空调控制器', '', '1', NULL, '1', 'CAR', '0d1cafefd2134b89a8e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f1e2e61c658041a48b4', '反光标识', '反光标识', '反光标识', 'VPT;VPP;VPA;GMS', '1', NULL, '1', 'TRUCK', '736b894a062e45afb5f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f1e9ca098e0a46cc858', '伺服液压软管', '伺服液压软管', '伺服液压软管', '', '1', NULL, '1', 'TRUCK', 'cf5269dfb0a94652b74', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f204df4cb185453ba8a', '尿素泵气管', '辅助用气管', '尿素泵气管', 'VPP', '1', NULL, '1', 'TRUCK', '9cde6e5e71784ab6adf', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f2818254548a43bf90e', '冷却液', '冷却液', '冷却液', 'PEF;PEP;PTR', '1', NULL, '1', 'TRUCK', '2481b28808cb4dbd93c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f2ba5fa159f24fb0a0e', '发动机润滑油', '发动机总成', '发动机润滑油', '', '1', NULL, '1', 'CAR', 'dc8b5cf5f65b47ea95d', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f2dd43e55011401683f', '雨量传感器', '雨量传感器', '雨量传感器', 'MPW', '1', NULL, '1', 'CAR', '2a15ae799da94eab863', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f391a1d4ddec4dc585b', '摆臂', '前悬架导向机构', '摆臂', 'VPP;CSF;PAF', '1', NULL, '1', 'TRUCK', 'a8ef061caf734e8da7f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f39901676b8f49aca57', '前桥总成附件', '前桥总成附件', '前桥总成附件', '', '1', NULL, '1', 'TRUCK', '0ba026439ae041368be', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f39abab3dc4f4947a89', '电源插座', '电器附件', '电源插座', 'VFT', '1', NULL, '1', 'CAR', 'f420e6eee0214018b9a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f3d5508c196445a7890', '电堆冷却管路系统', '冷却管路', '电堆冷却管路系统', '', '1', NULL, '1', 'TRUCK', '1c5d59d83d2f46a5bad', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f3e6824d388245c1aa6', '燃油管路及附件', '燃油系统', '燃油管路及附件', '', '1', NULL, '1', 'TRUCK', 'c43830c7eda24f03a6e', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f420e6eee0214018b9a', '电器附件', '电器附件', '电器附件', '', '1', NULL, '1', 'CAR', 'bb13bd67db9746e0848', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f439e48f3e624193abf', '底盘空气管理', '制动模块团队', '底盘空气管理', '', '1', NULL, '1', 'TRUCK', '39f42fade11a450abdf', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f43be3e67e7046ed95e', 'V2X总成', '车载智能终端模块', 'V2X总成', '', '1', NULL, '1', 'TRUCK', '0d12a730dc9a4760b2a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f4e183251e744bfab44', '转向油罐总成及支架', '转向动力源', '转向油罐总成及支架', 'VFD;VPA;VPW', '1', NULL, '1', 'TRUCK', '03648c155c5b42858d3', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f4e8ab31f7604a6884b', '蓄电池箱体', '蓄电池', '蓄电池箱体', 'VPT;VPP;VPA;MVU;MVC;MVB', '1', NULL, '1', 'TRUCK', 'e70c3c23692d4034af9', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f524fdba85e8476484a', '随车工具', '车架模块团队', '随车工具', '', '1', NULL, '1', 'TRUCK', '983a32bc04154356aba', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f5312e34e07e4af4b1f', '轮胎(后)', '轮胎', '轮胎(后)', 'CTS;CTU;CTH;VPW', '1', NULL, '1', 'CAR', '5cbc70c6dd3a4f87ab0', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f532f11bb7474623a0d', '前悬固定支架模块', '车身前悬', '前悬固定支架模块', 'VPP;VPA;BSM;BBF', '1', NULL, '1', 'TRUCK', '0276acad36bf4082ab4', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f56ab73a05494773bb6', '前悬架', '悬架模块团队', '前悬架', '', '1', NULL, '1', 'TRUCK', '83969ce9ff3d4614b5f', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f56c1db5a09345e79ea', '前轴安装螺栓', '前悬架弹性元件', '前轴安装螺栓', '', '1', NULL, '1', 'CAR', '2e5d8e96f9004b52927', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f5c2e6c5beeb41bc9ed', '门控开关', '驾驶室开关', '门控开关', '', '1', NULL, '1', 'CAR', '010ad996c8d048c6952', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f5e95bb1034440808c2', '车身线束支架及通用件', '车身线束', '车身线束支架及通用件', 'VPP;VFD', '1', NULL, '1', 'TRUCK', 'd45bd39678f243138cc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f6173bbd1ecc49e1bdf', '尿素罐装置', '尿素罐装置', '尿素罐装置', 'PEF;PEE;CFU;VPP ', '1', NULL, '1', 'CAR', '9e6394e76c52485d90f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f64f617f75244a8e910', '动力电池总成', '动力电池系统模块', '动力电池总成', '', '1', NULL, '1', 'TRUCK', 'bfe2f65fccca45be9eb', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f65982055d0a4f3d884', '前防护总成', '防护', '前防护总成', '', '1', NULL, '1', 'TRUCK', 'feddba635b9d45b7baa', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f66030ccfd1e456da7e', '驾驶/副驾驶风道', '暖气装置', '驾驶/副驾驶风道', 'VPT;VPP;VFD', '1', NULL, '1', 'TRUCK', '26b3ec78e1804f26a1c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f66ef81d76c24930b75', '空压机管路', '底盘空气管理', '空压机管路', '', '1', NULL, '1', 'TRUCK', 'f439e48f3e624193abf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f671c378ebee40bba4b', '上锁体总成模块', '车身后悬', '上锁体总成模块', 'VPP;VPA;VPW', '1', NULL, '1', 'TRUCK', '7ffc4929b9034337878', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f69fa2a8996741deab0', '转向油泵进油管及支架', '转向管路', '转向油泵进油管及支架', 'VPA;CZP', '1', NULL, '1', 'CAR', 'e3e32526c1674a02bfa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f6a6e166114d42728e3', '转向器及附件装置图', '转向动力装置', '转向器及附件装置图', '', '1', NULL, '1', 'CAR', '97073dda2a19415aa11', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f6e97ed83f0248b5b3d', '顶盖内饰', '顶盖地板附件', '顶盖内饰', '', '1', NULL, '1', 'CAR', '233a3f1dc1fb4fde91e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f6f690f06cbf493ba7d', '燃料电池系统模块', '燃料电池系统模块', '燃料电池系统模块', '', '1', NULL, '1', 'CAR', 'af18c09592ef40dfa76', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f704f69520494fc0bb9', '后悬架推力杆', '后悬架导向机构', '后悬架推力杆', 'VPA;VPW;VPR;VFG', '1', NULL, '1', 'TRUCK', 'fec90079d61b4e18b62', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f7067fd948f945b5a3e', '备胎紧固装置', '底盘组件', '备胎紧固装置', '', '1', NULL, '1', 'TRUCK', '63b3ba6cbdeb4984962', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f716bc305a5b4291942', '挡风板', '导流装置', '挡风板', '', '1', NULL, '1', 'CAR', 'f97ccd153d0743be95b', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f71ca8b9960a4a67a75', 'TCU开关', '仪表台小开关2', 'TCU开关', '', '1', NULL, '1', 'TRUCK', '570113ccfa494a5bb0f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f72ecb3ee6a94c4eb46', '网关', '整车级控制模块', '网关', 'VPP', '1', NULL, '1', 'CAR', '1f01b0f643b642d0b42', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f765e050d98649aebc0', '后风挡玻璃', '风挡玻璃', '后风挡玻璃', '', '1', NULL, '1', 'CAR', 'e5db2ca2e66f4fe5aed', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f77b824df6e64e5f905', '安全锤', '内饰装饰', '安全锤', '', '1', NULL, '1', 'CAR', '1523a304c37f48ff92a', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f77ba7f8bbb04b14ba1', '车门外饰', '车门附件', '车门外饰', 'VPA;BBF;VPP;VPL', '1', NULL, '1', 'TRUCK', 'fa589893b31646768a5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f78312798bf140ffa98', '电器原理图', '电器原理图', '电器原理图', '', '1', NULL, '1', 'CAR', 'a277de8bc9074b22948', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f7ceb0c6c1544f37b19', '电控制动系统数据', '电控制动系统数据', '电控制动系统数据', 'VPP;VPL;VPA;VFD;VFT;VFW;CZT;MAA;MAP;MAE', '1', NULL, '1', 'TRUCK', '32e68465d9904284bd5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f83b5d4b1f044b4ea0e', '前缓冲块', '前悬架缓冲系统', '前缓冲块', '', '1', NULL, '1', 'CAR', 'd0be1cb458744aed824', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f85716fac2ea4a2cbf1', '备胎紧固装置', '备胎紧固装置', '备胎紧固装置', 'CTT;CTX;VPA', '1', NULL, '1', 'TRUCK', 'f7067fd948f945b5a3e', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f89e79410d834c76bd4', '液压锁连接油管', '车身翻转系统', '液压锁连接油管', 'VPP', '1', NULL, '1', 'TRUCK', '42fb49ee9e9e4eb4951', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f90d3ea928074f788a4', '后悬架支架', '后悬架', '后悬架支架', '', '1', NULL, '1', 'TRUCK', '664320104d6e4072a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f92660f780d64a2ea71', '液压介质', '转向动力装置', '液压介质', '', '1', NULL, '1', 'TRUCK', '132a74498ec34b99bd1', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('f97ccd153d0743be95b', '导流装置', '冷却系统', '导流装置', '', '1', NULL, '1', 'CAR', 'd4849a07c5c346df909', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fa589893b31646768a5', '车门附件', '开闭件系统', '车门附件', '', '1', NULL, '1', 'TRUCK', '4809992a187c4947818', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fa8b3138df374e509ff', '翼子板', '侧围外饰附件', '翼子板', 'VPL;VPT;VPP;VPA;BBF;BBR;BBL;GMR', '1', NULL, '1', 'TRUCK', '23985514affb49d5aa5', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('faec85bbf17d41d6b50', '前向毫米波雷达', '雷达模块', '前向毫米波雷达', '', '1', NULL, '1', 'CAR', '26ea0c409b2e4c04b41', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fb3018431cc1429a98d', '气囊组件', '安全电子装置', '气囊组件', '', '1', NULL, '1', 'CAR', '80bae733f4f74539aef', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fb3c136bd9294af8ba8', '底盘电器盒总成', '电器盒总成', '底盘电器盒总成', '', '1', NULL, '1', 'CAR', '345432fca46146df96c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fb42a6c6bb2a4ed9b50', '远程油门开关', '仪表台开关', '远程油门开关', 'MPR', '1', NULL, '1', 'CAR', 'a16da4ddbf664542905', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fb4614665fef4d6a9b8', '压缩机及管路', '冷气装置', '压缩机及管路', 'VPT;VPP;VPA;VFE', '1', NULL, '1', 'TRUCK', '165c97fe0d484ec3845', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fb50185d5e4645a5987', '制动液压钢管', '底盘液压管路', '制动液压钢管', '', '1', NULL, '1', 'TRUCK', '7e0d38e7d6a0425cbf6', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fbf8dda709574ac1b8a', '高压盒', '动力电池总成', '高压盒', '', '1', NULL, '1', 'TRUCK', 'f64f617f75244a8e910', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fc294ba5cd7f4befb30', '辅助制动模块', '辅助制动模块', '辅助制动模块', 'PEF', '1', NULL, '1', 'TRUCK', '4e0a7152b33d4e3a9ce', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fc325ed6d3b64b1ead6', '整车铭牌', '标牌', '整车铭牌', 'VPA', '1', NULL, '1', 'CAR', 'b2fea936958f4e4cbfd', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fc7d0e01052c408b86d', '疲劳监测摄像头', '摄像头', '疲劳监测摄像头', '', '1', NULL, '1', 'CAR', '2757928d5faf4c41883', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fd17756853f94797b24', '空腔隔断及发泡材料', '车身NVH降噪', '空腔隔断及发泡材料', '', '1', NULL, '1', 'CAR', '805be245acbb4fd290c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fd17d6e07a584597829', '空气处理单元', '底盘空气管理', '空气处理单元', '', '1', NULL, '1', 'TRUCK', 'f439e48f3e624193abf', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fd1a6e3cfc234885abb', '制动踏板单元', '制动踏板单元', '制动踏板单元', 'VPA;VPW;PEF', '1', NULL, '1', 'CAR', '15de8e53c38345e0a49', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fd4b2eb8f51647f5a2b', '后悬架弹性元件', '后悬架', '后悬架弹性元件', '', '1', NULL, '1', 'TRUCK', '664320104d6e4072a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fd4db30804b0409fb58', '转向液压油', '液压介质', '转向液压油', 'VPW', '1', NULL, '1', 'TRUCK', 'f92660f780d64a2ea71', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fdb1f1b4fb0c4377acc', '车门通用附件', '车门结构', '车门通用附件', '', '1', NULL, '1', 'CAR', 'c7a1d2a04d69437697c', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fdbbc85cc312498f8fe', '离合踏板总成', '离合操纵机构', '离合踏板总成', '', '1', NULL, '1', 'TRUCK', 'a4702d7b7f6f4c6ba0a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fdc380d8d3f04a29a29', '伺服液压钢管', '伺服系统', '伺服液压钢管', '', '1', NULL, '1', 'TRUCK', '207ad7b7f68d4f04bf2', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fdd33dde15644fdba77', '离合器操纵气管', '离合器操纵装置', '离合器操纵气管', 'PTT;PTB;VPA;VPL;BBF', '1', NULL, '1', 'TRUCK', 'dea5ebfb97ef4aa2bbc', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fde3227f0ff842a5800', '空滤进气管路装置', '空滤系统', '空滤进气管路装置', 'VPP;VPA;BBL;PEF;VPO', '1', NULL, '1', 'CAR', '844e4f4c4ea6430d9a7', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fe1c0289e04247ebad0', '直流直流变换器总成', '高压辅控模块', '直流直流变换器总成', '', '1', NULL, '1', 'CAR', '467e3c1376804153888', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fe331d0848ee49b08a8', '传动轴附件', '传动轴系统', '传动轴附件', '', '1', NULL, '1', 'TRUCK', '83df5179313e4694a77', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fe4a1ae3d42d418684d', '工作走台安装图', '走台', '工作走台安装图', 'VPP;VPA;MVB', '1', NULL, '1', 'TRUCK', '98d2d07cbe1143259aa', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fe538cb2548147d7923', '冷却系统及附件模块', '燃料电池系统模块', '冷却系统及附件模块', '', '1', NULL, '1', 'CAR', 'af18c09592ef40dfa76', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fe8ec0230a934973ba1', '前牵引装置', '前牵引装置', '前牵引装置', 'VPP;VPA;VPW', '1', NULL, '1', 'TRUCK', '47881de51b964384a45', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('fec90079d61b4e18b62', '后悬架导向机构', '后悬架', '后悬架导向机构', '', '1', NULL, '1', 'TRUCK', '664320104d6e4072a75', 4); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('feddba635b9d45b7baa', '防护', '车架模块团队', '防护', '', '1', NULL, '1', 'TRUCK', '983a32bc04154356aba', 3); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ff0a5f3dd3cb4a72861', '时钟弹簧', '安全电子装置', '时钟弹簧', 'CZW', '1', NULL, '1', 'CAR', '80bae733f4f74539aef', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ff14a7e3b1a24560b93', '离合总泵/助力器', '离合操纵机构', '离合总泵/助力器', '', '1', NULL, '1', 'TRUCK', 'a4702d7b7f6f4c6ba0a', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ff23fe5f599c4dda97f', '随车工具总成', '随车工具总成', '随车工具总成', 'VPP;VPA', '1', NULL, '1', 'TRUCK', '8717cf8cabf64422842', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ff57dc7780bb42bd8ed', '车身翻转液压油', '车身翻转系统', '车身翻转液压油', 'VPP', '1', NULL, '1', 'TRUCK', '42fb49ee9e9e4eb4951', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ff6c00962e1e49208e2', '独立热源单元', '独立热源装置', '独立热源单元', '', '1', NULL, '1', 'CAR', 'eb2042bcdd84453ea9f', 5); +INSERT INTO `sar_model_tree`(`ID`, `NAME`, `PID`, `MODEL`, `FEATURES`, `DEL_FLAG`, `SORT`, `HAS_CHILDREN`, `MODEL_TYPE`, `MODEL_PID`, `MODEL_LEVEL`) VALUES ('ff7aa510e2664e24837', '电子后视镜', 'ADAS模块', '电子后视镜', '', '1', NULL, '1', 'TRUCK', 'bf94e2d3b8c0458fa4d', 5); diff --git a/pom.xml b/pom.xml index 393390d0..7a336145 100644 --- a/pom.xml +++ b/pom.xml @@ -36,9 +36,26 @@ adc-da-base adc-da-sys adc-da-jwtLogin + adc-da-search + adc-da-slrs + adc-da-activiti + adc-da-convert + + + maven-ali + http://maven.aliyun.com/nexus/content/groups/public// + + true + + + true + always + fail + + adc http://60.247.58.121:8182/nexus/content/groups/public @@ -49,18 +66,6 @@ true - - maven-ali - http://maven.aliyun.com/nexus/content/groups/public// - - true - - - true - always - fail - - @@ -277,6 +282,12 @@ spring-rabbit-test test + + + com.alibaba + easyexcel + 2.2.6 +