Commit f3dc92b1 authored by LiuLin's avatar LiuLin

Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register

parents 2229af8f 792c9b7d
......@@ -12,10 +12,7 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.privilege.model.*;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.commons.lang3.ObjectUtils;
......@@ -41,10 +38,12 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* controller层切面 用于用户数据缓存 供 sql自动填充使用 (使用粒度过大的Aop会创建大量代理对象,影响性能,占用内存,考虑使用
......@@ -283,6 +282,14 @@ public class ControllerAop {
stopWatch5.stop();
logger.info("获取用户信息====>{}s", stopWatch5.getTotalTimeSeconds());
List<String> appCodes = new ArrayList<>();
try {
List<ApplicationModel> applicationModelList = Privilege.agencyUserClient.listApps(userList.get(0).getUserId()).getResult();
appCodes = applicationModelList.stream().map(ApplicationModel::getAppCode).collect(Collectors.toList());
} catch (Exception e) {
throw new RuntimeException("获取listApps失败");
}
userList.get(0).setAppCodes(appCodes);
ReginParams regionParams = new ReginParams();
regionParams.setCompany(company);
regionParams.setRole(role);
......
......@@ -186,6 +186,23 @@ public class DataDictionaryController extends BaseController {
}
}
@TycloudOperation(needAuth = true, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/getDataDictionary/{type}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据字典类型查询字典", notes = "根据字典类型查询字典")
public ResponseModel<Object> getDataDictionary(@PathVariable String type) throws Exception {
// 数据字典生成树方法 原先通过getCode做主键 现修改为 getSequenceNbr 后期数据字典parent字段保存id 而不要保存code by
// kongfm 2021-09-08
// 数据字典还原 by kongfm 2021-09-09
QueryWrapper<DataDictionary> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", type);
queryWrapper.eq("is_delete", false);
queryWrapper.orderByAsc("sort_num");
Collection<DataDictionary> list = iDataDictionaryService.list(queryWrapper);
return ResponseHelper.buildResponse(list);
}
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/dataDictionaryIdFillMenu", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据字典类型查询字典,id为SequenceNbr", notes = "根据字典类型查询字典,id为SequenceNbr")
......
......@@ -25,6 +25,7 @@ public class DateUtils {
public static final String MINUTE_ONLY_PATTERN = "mm";
public static final String HOUR_ONLY_PATTERN = "HH";
public static final String DATE_PATTERN_NUM = "yyyyMMdd";
public static final String DATE_PATTERN_MM = "yyyyMM";
public static final String CHN_DATE_PATTERN_YEAR = "yyyy年";
public static final String CHN_DATE_PATTERN_MONTH = "MM月";
public static final String CHN_DATE_PATTERN = "yyyy年MM月dd日";
......
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Getter;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.nio.file.Files;
@Getter
public class ByteArrayMultipartFile implements MultipartFile {
private byte[] bytes;
private String name;
private String originalFilename;
private String contentType;
public ByteArrayMultipartFile() {
}
public ByteArrayMultipartFile(String name, String originalFilename, String contentType, byte[] bytes) {
super();
this.name = name;
this.originalFilename = originalFilename;
this.contentType = contentType;
this.bytes = bytes;
}
@Override
public boolean isEmpty() {
return bytes.length == 0;
}
@Override
public long getSize() {
return bytes.length;
}
@Override
public InputStream getInputStream() {
return new ByteArrayInputStream(bytes);
}
@Override
public void transferTo(File destination) throws IOException {
try (OutputStream outputStream = Files.newOutputStream(destination.toPath())) {
outputStream.write(bytes);
}
}
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "JgInstallationAccDto", description = "")
public class JgInstallationAccDto {
String opinion;
JgInstallationNoticeDto model;
}
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -95,13 +96,13 @@ public class JgInstallationNoticeDto extends BaseDto {
private String propertyUnitName;
@ApiModelProperty(value = "使用单位id")
private String useUnitId;
private String useUnitCreditCode;
@ApiModelProperty(value = "使用单位")
private String useUnitName;
@ApiModelProperty(value = "接收机构ID")
private String receiveOrgId;
private String receiveOrgCreditCode;
@ApiModelProperty(value = "接收机构")
private String receiveOrgName;
......@@ -200,10 +201,16 @@ public class JgInstallationNoticeDto extends BaseDto {
@ApiModelProperty(value = "告知设备列表")
private List<Map<String, Object>> deviceList;
@ApiModelProperty(value = "告知单PDF URL")
private String noticeReportUrl;
public String getFullAddress() {
return (StringUtils.isEmpty(this.provinceName) ? "" : this.provinceName)
+ (StringUtils.isEmpty(this.cityName) ? "" : this.cityName)
+ (StringUtils.isEmpty(this.countyName) ? "" : this.countyName)
+ (StringUtils.isEmpty(this.address) ? "" : this.address);
}
@ApiModelProperty(value = "设备注册代码")
private String equRegisterCode;
}
......@@ -335,4 +335,17 @@ public class JgInstallationNotice extends BaseEntity {
@TableField("instance_id")
private String instanceId;
/**
* 告知单PDF URL
*/
@TableField("notice_report_url")
private String noticeReportUrl;
/**
* 设备注册编码
*/
@TableField("equ_register_code")
private String equRegisterCode;
}
......@@ -25,7 +25,12 @@ public enum FlowStatusEnum {
/**
* 已驳回
*/
REJECTED(6614, "已驳回");
REJECTED(6614, "已驳回"),
/**
* 已撤回
*/
ROBACK(6615, "已撤回");
private final int code;
......
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.api.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
......@@ -13,7 +14,7 @@ import java.util.Map;
* @author system_generator
* @date 2023-12-12
*/
public interface IJgInstallationNoticeService {
public interface IJgInstallationNoticeService extends IService<JgInstallationNotice> {
/**
* 根据sequenceNbr查询
......@@ -56,4 +57,12 @@ public interface IJgInstallationNoticeService {
* @param submitType 保存类型
*/
void saveNotice(String submitType, Map<String, JgInstallationNoticeDto> model);
/**
* 打印告知单
*
* @param sequenceNbr 主键
* @return pdf文件路径
*/
String generateInstallationNoticeReport(Long sequenceNbr);
}
......@@ -16,7 +16,8 @@
isn.province_name AS provinceName,
isn.city_name AS cityName,
isn.county_name AS countyName,
isn.instance_id AS instanceId
isn.instance_id AS instanceId,
isn.notice_report_url AS noticeReportUrl
FROM
tzs_jg_installation_notice isn
<where>
......@@ -39,7 +40,7 @@
</if>
</if>
<if test="type == 'supervision'">
AND isn.notice_status in ('6612', '6613', '6614')
AND (isn.notice_status in ('6612', '6613', '6614') or isn.status in('6614') )
</if>
</where>
ORDER BY
......@@ -49,10 +50,22 @@
<select id="queryEquipInformation" resultType="java.util.Map">
select
isn.sequence_nbr AS sequenceNbr,
isn.install_unit_name AS installUnitName,
isn.apply_no AS applyNo,
isn.province_name AS provinceName,
isn.city_name AS cityName,
isn.county_name AS countyName,
isn.address AS address,
isn.install_start_date AS installStartDate,
isn.install_license_no AS installLicenseNo,
isn.install_license_expiration_date AS installLicenseExpirationDate,
isn.install_leader_name AS installLeaderName,
isn.install_leader_phone AS installLeaderPhone,
isn.use_unit_name AS useUnitName,
isn.equ_register_code AS equRegisterCode,
ri.equ_list AS equList,
ri.equ_category AS equCategory,
ri.EQU_DEFINE AS equDefine,
-- 产品编号
ri.product_name AS productName,
ri.brand_name AS brandName,
ri.equ_type AS equType,
......@@ -77,7 +90,13 @@
fi.produce_country AS produceCountry,
fi.factory_standard AS factoryStandard,
fi.product_quality_yield_prove AS productQualityYieldProve,
fi.ins_use_maintain_explain AS insUseMaintainExplain
fi.ins_use_maintain_explain AS insUseMaintainExplain,
ui.safety_manager AS safetyManager,
ui.phone AS safetyManagerPhone,
ui.PROVINCE_NAME AS useUnitProvinceName,
ui.CITY_NAME AS useUnitCityName,
ui.COUNTY_NAME AS useUnitCountyName,
ui.ADDRESS AS useUnitAddress
FROM
tzs_jg_installation_notice isn
LEFT JOIN tzs_jg_relation_equip re ON re.business_id = isn.sequence_nbr
......@@ -85,7 +104,9 @@
LEFT JOIN idx_biz_jg_design_info di ON di.record = re.equip_id
LEFT JOIN idx_biz_jg_factory_info fi ON fi.record = re.equip_id
LEFT JOIN idx_biz_jg_inspection_detection_info idi ON idi.record = re.equip_id
LEFT JOIN idx_biz_jg_use_info ui ON ui.record = re.equip_id
WHERE
isn.sequence_nbr = #{sequenceNbr}
LIMIT 1
</select>
</mapper>
......@@ -31,6 +31,12 @@
<version>1.10.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>19.5jdk</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
......
package com.yeejoin.amos.boot.module.jg.biz.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationAccDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
/**
* 安装告知
*
* @author system_generator
* @date 2023-12-12
*/
@RestController
@Api(tags = "安装告知工作流相关Api")
@RequestMapping(value = "/jg-installation-workflow")
public class JgInstallationByWorkFlowController {
@Autowired
JgInstallationNoticeServiceImpl jgInstallationNoticeServiceImpl;
/**
* 提交
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/submit")
@ApiOperation(httpMethod = "POST", value = "安装告知提交", notes = "安装告知提交")
public ResponseModel<JgInstallationNoticeDto> submit(@RequestBody JgInstallationNoticeDto model, String op) {
// TODO 发起安装告知流程
// jgInstallationNoticeServiceImpl.submit(model, op);
return ResponseHelper.buildResponse(model);
}
/**
* 撤销
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/cancel")
@ApiOperation(httpMethod = "POST", value = "安装告知撤销", notes = "安装告知撤销")
public ResponseModel<JgInstallationNoticeDto> cancel(@RequestBody Map<String, Object> model) {
JgInstallationNoticeDto installationInfo = BeanUtil.mapToBean(((LinkedHashMap) model.get("installationInfo")), JgInstallationNoticeDto.class, true);
if (Objects.isNull(installationInfo)) {
throw new IllegalArgumentException("参数installationInfo不能为空");
}
jgInstallationNoticeServiceImpl.cancel(installationInfo);
return ResponseHelper.buildResponse(installationInfo);
}
/**
* 受理
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/accept")
@ApiOperation(httpMethod = "POST", value = "安装告知受理", notes = "安装告知受理")
public ResponseModel<JgInstallationNoticeDto> accept(@RequestBody Map<String, Object> model, String op) {
// TODO 受理安装告知流程
LinkedHashMap model1 = (LinkedHashMap)model.get("model");
LinkedHashMap form = (LinkedHashMap)model1.get("form");
LinkedHashMap installationInfo = (LinkedHashMap)form.get("installationInfo");
JgInstallationNoticeDto jgInstallationNoticeDto = JSON.parseObject(JSON.toJSONString(installationInfo), JgInstallationNoticeDto.class);
jgInstallationNoticeServiceImpl.accept(jgInstallationNoticeDto,op);
return ResponseHelper.buildResponse(null);
}
}
package com.yeejoin.amos.boot.module.jg.biz.controller;
import cn.hutool.core.bean.BeanUtil;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import org.omg.PortableInterceptor.SUCCESSFUL;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl;
import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
......@@ -24,8 +18,6 @@ import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map;
import java.util.Objects;
......@@ -41,7 +33,7 @@ import java.util.Objects;
public class JgInstallationNoticeController extends BaseController {
@Autowired
JgInstallationNoticeServiceImpl jgInstallationNoticeServiceImpl;
private IJgInstallationNoticeService iJgInstallationNoticeService;
/**
* 新增
......@@ -49,12 +41,12 @@ public class JgInstallationNoticeController extends BaseController {
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增安装告知", notes = "新增安装告知")
public ResponseModel<String> save(@RequestParam String submitType,@RequestBody Map<String, JgInstallationNoticeDto> model) {
jgInstallationNoticeServiceImpl.saveNotice(submitType, model);
return ResponseHelper.buildResponse("");
}
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增安装告知", notes = "新增安装告知")
public ResponseModel<String> save(@RequestParam String submitType, @RequestBody Map<String, JgInstallationNoticeDto> model) {
iJgInstallationNoticeService.saveNotice(submitType, model);
return ResponseHelper.buildResponse("");
}
/**
* 根据sequenceNbr更新
......@@ -69,7 +61,7 @@ public class JgInstallationNoticeController extends BaseController {
if (Objects.isNull(installationInfo)) {
throw new IllegalArgumentException("参数installationInfo不能为空");
}
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.updateInstallationNotice(installationInfo, op));
return ResponseHelper.buildResponse(iJgInstallationNoticeService.updateInstallationNotice(installationInfo, op));
}
/**
......@@ -81,7 +73,7 @@ public class JgInstallationNoticeController extends BaseController {
@DeleteMapping(value = "/delete")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除安装告知", notes = "根据sequenceNbr删除安装告知")
public ResponseModel<Boolean> deleteBySequenceNbr(@RequestParam(value = "sequenceNbr") Long[] sequenceNbr) {
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.removeById(sequenceNbr));
return ResponseHelper.buildResponse(iJgInstallationNoticeService.removeById(sequenceNbr));
}
/**
......@@ -94,7 +86,7 @@ public class JgInstallationNoticeController extends BaseController {
@ApiOperation(value = "根据sequenceNbr删除维保合同备案", notes = "根据sequenceNbr删除维保合同备案")
public ResponseModel<Boolean> deleteForBatch(@RequestParam("sequenceNbrs") Long[] sequenceNbrs) {
try {
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.deleteForBatch(sequenceNbrs));
return ResponseHelper.buildResponse(iJgInstallationNoticeService.deleteForBatch(sequenceNbrs));
} catch (Exception e) {
return CommonResponseUtil.failure(e.getMessage());
}
......@@ -110,7 +102,7 @@ public class JgInstallationNoticeController extends BaseController {
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个安装告知", notes = "根据sequenceNbr查询单个安装告知")
public ResponseModel<Map<String,
Map<String, Object>>> selectOne(@RequestParam("sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.queryBySequenceNbr(sequenceNbr));
return ResponseHelper.buildResponse(iJgInstallationNoticeService.queryBySequenceNbr(sequenceNbr));
}
......@@ -131,18 +123,16 @@ public class JgInstallationNoticeController extends BaseController {
@RequestBody(required = false) JgInstallationNoticeDto model
) {
Page<JgInstallationNotice> page = new Page<>(current, size);
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.queryForJgInstallationNoticePage(page, model, type));
return ResponseHelper.buildResponse(iJgInstallationNoticeService.queryForJgInstallationNoticePage(page, model, type));
}
/**
* 列表全部数据查询
*
* @return
* 生成告知单
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "安装告知列表全部数据查询", notes = "安装告知列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<JgInstallationNoticeDto>> selectForList() {
return ResponseHelper.buildResponse(jgInstallationNoticeServiceImpl.queryForJgInstallationNoticeList());
@GetMapping(value = "/generate-report")
public ResponseModel<String> generateReport(@RequestParam("sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(iJgInstallationNoticeService.generateInstallationNoticeReport(sequenceNbr));
}
}
package com.yeejoin.amos.boot.module.jg.biz.feign;
import com.yeejoin.amos.boot.biz.common.feign.FeignConfiguration;
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.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.Map;
@FeignClient(name = "TZS-YMT-LL", url = "172.16.3.155:11000", path = "/ymt", configuration =
{FeignConfiguration.class})
public interface TzsServiceFeignClient {
/**
* 创建监管码及96333
*
* @param map 请求体
* @return
*/
@RequestMapping(value = "/equipment-category/createSupervisorCode", method = RequestMethod.POST)
ResponseModel<Map<String, Object>> createCode(@RequestBody Map<String, Object> map);
}
......@@ -3,11 +3,11 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.biz.dao.ESElavtorRepository;
import com.yeejoin.amos.boot.module.jg.biz.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgConstructionInfoService;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgDesignInfoService;
......@@ -38,7 +38,6 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.CategoryOtherInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgTechParamsElevatorMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.SuperviseInfoMapper;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import org.apache.lucene.queryparser.classic.QueryParser;
......@@ -54,15 +53,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
......@@ -163,7 +163,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
/**
* 删除设备注册信息(批量删除)
*
* @param sequenceNbrList
* @param map
* @return
*/
public boolean batchDeleteByRecord(Map<String, Object> map) {
......@@ -204,63 +204,118 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
//使用信息
IdxBizJgUseInfo useInfo = idxBizJgUseInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(useInfo)) {
Map<String, Object> useInfoMap = Bean.BeantoMap(useInfo);
Map<String, Object> useInfoMap = new HashMap<>();
String[] fields = null;
try {
useInfoMap = this.convertCamelToUnderscore(useInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
useInfoMap.put("USEINFO_SEQ", useInfo.getSequenceNbr());
objMap.putAll(useInfoMap);
}
//设计制造
IdxBizJgDesignInfo designInfo = iIdxBizJgDesignInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(designInfo)) {
Map<String, Object> designInfoMap = Bean.BeantoMap(designInfo);
Map<String, Object> designInfoMap = new HashMap<>();
String[] fields = {"DESIGN_DOC", "DESIGN_STANDARD"};
try {
designInfoMap = this.convertCamelToUnderscore(designInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
designInfoMap.put("DESIGNINFO_SEQ", designInfo.getSequenceNbr());
objMap.putAll(designInfoMap);
}
//制造信息
IdxBizJgFactoryInfo factoryInfo = iIdxBizJgFactoryInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(factoryInfo)) {
Map<String, Object> factoryInfoMap = Bean.BeantoMap(factoryInfo);
Map<String, Object> factoryInfoMap = new HashMap<>();
String[] fields = {"FACTORY_STANDARD", "PRODUCT_QUALITY_YIELD_PROVE", "INS_USE_MAINTAIN_EXPLAIN"};
try {
factoryInfoMap = this.convertCamelToUnderscore(factoryInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
factoryInfoMap.put("FACTORYINFO_SEQ", factoryInfo.getSequenceNbr());
objMap.putAll(factoryInfoMap);
}
//施工信息
IdxBizJgConstructionInfo constructionInfo = iIdxBizJgConstructionInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(constructionInfo)) {
Map<String, Object> constructionInfoMap = Bean.BeantoMap(constructionInfo);
Map<String, Object> constructionInfoMap = new HashMap<>();
String[] fields = null;
try {
constructionInfoMap = this.convertCamelToUnderscore(constructionInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
constructionInfoMap.put("CONSTRUCTIONINFO_SEQ", constructionInfo.getSequenceNbr());
objMap.putAll(constructionInfoMap);
}
//注册登记
IdxBizJgRegisterInfo registerInfo = this.getOne(new QueryWrapper<IdxBizJgRegisterInfo>().eq("RECORD", record));
if (!ValidationUtil.isEmpty(registerInfo)) {
Map<String, Object> registerInfoMap = Bean.BeantoMap(registerInfo);
Map<String, Object> registerInfoMap = new HashMap<>();
String[] fields = {"PRODUCT_PHOTO"};
try {
registerInfoMap = this.convertCamelToUnderscore(registerInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
registerInfoMap.put("REGISTERINFO_SEQ", registerInfo.getSequenceNbr());
registerInfoMap.put("SEQUENCE_NBR", registerInfo.getSequenceNbr());
objMap.putAll(registerInfoMap);
}
//维保备案
IdxBizJgMaintenanceRecordInfo maintenanceRecordInfo = iIdxBizJgMaintenanceRecordInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(maintenanceRecordInfo)) {
Map<String, Object> maintenanceRecordInfoMap = Bean.BeantoMap(maintenanceRecordInfo);
Map<String, Object> maintenanceRecordInfoMap = new HashMap<>();
String[] fields = null;
try {
maintenanceRecordInfoMap = this.convertCamelToUnderscore(maintenanceRecordInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
maintenanceRecordInfoMap.put("MAINTENANCERECORDINFO_SEQ", maintenanceRecordInfo.getSequenceNbr());
objMap.putAll(maintenanceRecordInfoMap);
}
//监督管理
IdxBizJgSupervisionInfo supervisionInfo = iIdxBizJgSupervisionInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(supervisionInfo)) {
Map<String, Object> supervisionInfoMap = Bean.BeantoMap(supervisionInfo);
Map<String, Object> supervisionInfoMap = new HashMap<>();
String[] fields = null;
try {
supervisionInfoMap = this.convertCamelToUnderscore(supervisionInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
supervisionInfoMap.put("SUPERVISIONINFO_SEQ", supervisionInfo.getSequenceNbr());
objMap.putAll(supervisionInfoMap);
}
//其他信息
IdxBizJgOtherInfo otherInfo = iIdxBizJgOtherInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(otherInfo)) {
Map<String, Object> otherInfoMap = Bean.BeantoMap(otherInfo);
Map<String, Object> otherInfoMap = new HashMap<>();
String[] fields = null;
try {
otherInfoMap = this.convertCamelToUnderscore(otherInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
otherInfoMap.put("OTHERINFO_SEQ", otherInfo.getSequenceNbr());
objMap.putAll(otherInfoMap);
}
//检验检测
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = iIdxBizJgInspectionDetectionInfoService.getOneData(record);
if (!ValidationUtil.isEmpty(inspectionDetectionInfo)) {
Map<String, Object> inspectionDetectionInfoMap = Bean.BeantoMap(inspectionDetectionInfo);
Map<String, Object> inspectionDetectionInfoMap = new HashMap<>();
String[] fields = {"INSPECT_REPORT"};
try {
inspectionDetectionInfoMap = this.convertCamelToUnderscore(inspectionDetectionInfo, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
inspectionDetectionInfoMap.put("INSPECTIONDETECTIONINFO_SEQ", inspectionDetectionInfo.getSequenceNbr());
objMap.putAll(inspectionDetectionInfoMap);
}
......@@ -268,7 +323,13 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
//电梯
IdxBizJgTechParamsElevator elevator = iIdxBizJgTechParamsElevatorService.getOneData(record);
if (!ValidationUtil.isEmpty(elevator)) {
Map<String, Object> elevatorMap = Bean.BeantoMap(elevator);
Map<String, Object> elevatorMap = new HashMap<>();
String[] fields = {"EXPLOSIONPROOF_SIGN_COMPLETE"};
try {
elevatorMap = this.convertCamelToUnderscore(elevator, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
elevatorMap.put("ELEVATOR_SEQ", elevator.getSequenceNbr());
objMap.putAll(elevatorMap);
}
......@@ -283,14 +344,26 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
//主要零部件
IdxBizJgMainParts mainParts = iIdxBizJgMainPartsService.getOneData(record);
if (!ValidationUtil.isEmpty(mainParts)) {
Map<String, Object> mainPartsMap = Bean.BeantoMap(mainParts);
Map<String, Object> mainPartsMap = new HashMap<>();
String[] fields = null;
try {
mainPartsMap = this.convertCamelToUnderscore(mainParts, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
mainPartsMap.put("MAINPARTS_SEQ", mainParts.getSequenceNbr());
objMap.putAll(mainPartsMap);
}
//安全附件
IdxBizJgProtectionDevices protectionDevices = iIdxBizJgProtectionDevicesService.getOneData(record);
if (!ValidationUtil.isEmpty(protectionDevices)) {
Map<String, Object> protectionDevicesMap = Bean.BeantoMap(protectionDevices);
Map<String, Object> protectionDevicesMap = new HashMap<>();
String[] fields = null;
try {
protectionDevicesMap = this.convertCamelToUnderscore(protectionDevices, fields);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
protectionDevicesMap.put("PROTECTIONDEVICES_SEQ", protectionDevices.getSequenceNbr());
objMap.putAll(protectionDevicesMap);
}
......@@ -358,31 +431,36 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
}
}
// 默认条件【STATUS===""】
// 默认条件【STATUS==="" || null
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.matchQuery("STATUS", "null"));
meBuilder.must(QueryBuilders.boolQuery()
.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("STATUS")))
.should(QueryBuilders.boolQuery().must(QueryBuilders.matchPhraseQuery("STATUS",""))));
boolMust.must(meBuilder);
String queryType = map.getString("QUERY_TYPE");
// //查询 安装告知【可告知设备列表】【EQU_STATE===""
// //查询 安装告知【可告知设备列表】【EQU_STATE=== null
if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "AZ")) {
BoolQueryBuilder azBuilder = QueryBuilders.boolQuery();
azBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
boolMust.must(azBuilder);
}
//查询 维保备案【可绑定设备列表】【EQU_STATE==="" && INSPECT_REPORT!==9999(默认占位值)】
//查询 维保备案【可绑定设备列表】【(EQU_STATE=== null) && (INSPECT_REPORT!=="" && !null)】
if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "WB")) {
BoolQueryBuilder wbBuilder = QueryBuilders.boolQuery();
wbBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
wbBuilder.mustNot(QueryBuilders.matchQuery("INSPECT_REPORT", 9999));
wbBuilder.must(QueryBuilders.existsQuery("INSPECT_REPORT"));
wbBuilder.mustNot(QueryBuilders.matchPhraseQuery("INSPECT_REPORT",""));
boolMust.must(wbBuilder);
}
//查询 使用登记【可选设备列表】【EQU_STATUS==="" && INSPECT_REPORT!==9999(默认占位值) && USE_ORG_CODE!==""
//查询 使用登记【可选设备列表】【EQU_STATUS=== null && (INSPECT_REPORT!=="" && !null) && (USE_ORG_CODE!=="" && !null)
if (!ObjectUtils.isEmpty(queryType) && ValidationUtil.equals(queryType, "SY")) {
BoolQueryBuilder syBuilder = QueryBuilders.boolQuery();
syBuilder.mustNot(QueryBuilders.existsQuery("EQU_STATE"));
syBuilder.mustNot(QueryBuilders.matchQuery("INSPECT_REPORT", 9999));
syBuilder.mustNot(QueryBuilders.matchQuery("USE_ORG_CODE", ""));
syBuilder.must(QueryBuilders.existsQuery("INSPECT_REPORT"));
syBuilder.mustNot(QueryBuilders.matchPhraseQuery("INSPECT_REPORT",""));
syBuilder.must(QueryBuilders.existsQuery("USE_ORG_CODE"));
syBuilder.mustNot(QueryBuilders.matchPhraseQuery("USE_ORG_CODE",""));
boolMust.must(syBuilder);
}
......@@ -455,7 +533,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
String record = null;
LinkedHashMap equipmentInfoForm = (LinkedHashMap) map.get(EQUIPMENT_INFO_FORM_ID);
//操作类型
String operateType = ValidationUtil.isEmpty(String.valueOf(equipmentInfoForm.get("SEQUENCE_NBR"))) ? OPERATESAVE : OPERATEEDIT;
String operateType = ValidationUtil.isEmpty(equipmentInfoForm.get("SEQUENCE_NBR")) ? OPERATESAVE : OPERATEEDIT;
record = OPERATESAVE.equals(operateType) ? UUID.randomUUID().toString() : equipmentInfoForm.get("RECORD").toString();
//使用信息
......@@ -565,9 +643,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
Map<String, Object> map = categoryOtherInfoMapper.selectDataById(id);
categoryOtherInfoMapper.updateEsStatus(id);
ESEquipmentCategoryDto dto = JSON.parseObject(toJSONString(map), ESEquipmentCategoryDto.class);
// 默认赋值占位,方便es条件搜索时使用
dto.setSTATUS("null");
dto.setEQU_STATE(9999);
Optional<ESEquipmentCategoryDto> data = esEquipmentCategory.findById(id);
if (!ObjectUtils.isEmpty(data)) {
esEquipmentCategory.deleteById(id);
......@@ -616,4 +691,27 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
}
}
/**
* 将对象的属性由驼峰转为纯大写下划线格式
*
* @param object
* @return
* @throws IllegalAccessException
*/
public static Map<String, Object> convertCamelToUnderscore(Object object, String[] strToJsonArrayFields) throws IllegalAccessException {
Map<String, Object> result = new HashMap<>();
Class<?> clazz = object.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
String underscoreFieldName = StringUtils.camelToUnderline(fieldName).toUpperCase();
Object value = field.get(object);
//需要转为jsonArray的字段
if (!ValidationUtil.isEmpty(strToJsonArrayFields) && Arrays.asList(strToJsonArrayFields).contains(underscoreFieldName)) {
value = JSON.parseArray((String) field.get(object));
}
result.put(underscoreFieldName.toUpperCase(), value);
}
return result;
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aspose.words.SaveFormat;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jg.api.dto.ByteArrayMultipartFile;
import com.yeejoin.amos.boot.module.jg.api.dto.JgInstallationNoticeDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRelationEquip;
......@@ -12,23 +15,48 @@ import com.yeejoin.amos.boot.module.jg.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgRelationEquipMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.ymt.api.entity.OtherInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo;
import com.yeejoin.amos.boot.module.jg.biz.utils.ImageUtils;
import com.yeejoin.amos.boot.module.jg.biz.utils.WordTemplateUtils;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.boot.module.ymt.api.service.ICreateCodeService;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsJgOtherInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsJgRegistrationInfo;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.text.ParseException;
/**
* 服务实现类
......@@ -37,18 +65,53 @@ import java.util.stream.Collectors;
* @date 2023-12-12
*/
@Service
public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationNoticeDto, JgInstallationNotice, JgInstallationNoticeMapper> implements IJgInstallationNoticeService {
public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationNoticeDto,JgInstallationNotice,JgInstallationNoticeMapper> implements IJgInstallationNoticeService {
public static final String SUBMIT_TYPE_FLOW = "1";
public static final String PROCESS_DEFINITION_KEY = "installationNotification";
public static final String TABLE_PAGE_ID = "1734141426742095873";
//西安行政区划code
private static final String XIAN = "610100";
//咸阳行政区划code
private static final String XIAN_YANG = "610400";
@Autowired
private JgRelationEquipMapper jgRelationEquipMapper;
EquipmentCategoryMapper equipmentCategoryMapper;
@Autowired
private JgInstallationNoticeMapper jgInstallationNoticeMapper;
JgRelationEquipMapper jgRelationEquipMapper;
@Autowired
private JgInstallationNoticeMapper jgInstallationNoticeMapper;
@Autowired
private ICreateCodeService iCreateCodeService;
// @Autowired
// private EquipmentCategoryServiceImpl equipmentCategoryService;
@Autowired
RegistrationInfoMapper tzsJgRegistrationInfoMapper;
@Autowired
OtherInfoMapper tzsJgOtherInfoMapper;
@Autowired
TzsServiceFeignClient tzsServiceFeignClient;
public static byte[] file2byte(File file) {
try {
FileInputStream in = new FileInputStream(file);
//当文件没有结束时,每次读取一个字节显示
byte[] data = new byte[in.available()];
in.read(data);
in.close();
return data;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 根据sequenceNbr查询
......@@ -60,15 +123,34 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
public Map<String, Map<String, Object>> queryBySequenceNbr(Long sequenceNbr) {
// 安装告知信息
JgInstallationNotice notice = jgInstallationNoticeMapper.selectById(sequenceNbr);
if (Objects.isNull(notice)) {
return null;
}
Map<String, Object> installationInfo = BeanUtil.beanToMap(notice);
installationInfo.put("province", notice.getProvince() + "_" + notice.getProvinceName());
installationInfo.put("city", notice.getCity() + "_" + notice.getCityName());
installationInfo.put("county", notice.getCounty() + "_" + notice.getCountyName());
installationInfo.put("useUnitCreditCode", notice.getUseUnitCreditCode() + "_" + notice.getUseUnitName());
installationInfo.put("receiveOrgCreditCode", notice.getReceiveOrgCreditCode() + "_" + notice.getReceiveOrgName());
installationInfo.put("inspectUnitId", notice.getInspectUnitId() + "_" + notice.getInspectUnitName());
String[] fields = {"productPhoto", "designDoc", "designStandard", "factoryStandard",
"productQualityYieldProve", "insUseMaintainExplain", "inspectReport",
"proxyStatementAttachment", "installContractAttachment"};
// 设备信息
List<Map<String, Object>> equipmentInfos = jgInstallationNoticeMapper.queryEquipInformation(sequenceNbr);
for (String s:fields) {
if(installationInfo.containsKey(s)) {
installationInfo.put(s, JSON.parseArray(installationInfo.get(s).toString()));
}
if(equipmentInfos.get(0).containsKey(s)) {
equipmentInfos.get(0).put(s, JSON.parseArray(equipmentInfos.get(0).get(s).toString()));
}
}
return new HashMap<String, Map<String, Object>>() {{
this.put("installationInfo", installationInfo);
this.put("equipmentInfo", equipmentInfos.get(0));
......@@ -97,13 +179,6 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
dto.setBusinessKey("1");
try {
ajaxResult = Workflow.taskClient.startByVariable(dto);
String instanceId = ((Map) ajaxResult.get("data")).get("id").toString();
noticeDto.setInstanceId(instanceId);
noticeDto.setStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
noticeDto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
JgInstallationNotice bean = new JgInstallationNotice();
BeanUtils.copyProperties(noticeDto, bean);
jgInstallationNoticeMapper.updateById(bean);
} catch (Exception e) {
log.error("提交失败:{}", e);
}
......@@ -124,8 +199,8 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
AjaxResult ajaxResult1;
try {
ajaxResult1 = Workflow.taskClient.completeByTask(taskId, taskResultDTO);
if (ObjectUtils.isEmpty(ajaxResult1)) {
noticeDto.setStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
if (ajaxResult1.get("code").equals(200)) {
noticeDto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
JgInstallationNotice bean = new JgInstallationNotice();
BeanUtils.copyProperties(noticeDto, bean);
jgInstallationNoticeMapper.updateById(bean);
......@@ -133,9 +208,22 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
} catch (Exception e) {
log.error("提交失败:{}", e);
}
// 生成告知单
JgInstallationNotice jgInstallationNotice = this.getById(noticeDto.getSequenceNbr());
if (String.valueOf(FlowStatusEnum.SUBMITTED.getCode()).equals(jgInstallationNotice.getNoticeStatus())) {
String reportUrl = this.generateInstallationNoticeReport(jgInstallationNotice.getSequenceNbr());
if (StringUtils.hasText(reportUrl)) {
jgInstallationNotice.setNoticeReportUrl(reportUrl);
jgInstallationNoticeMapper.updateById(jgInstallationNotice);
}
}
return noticeDto;
}
/**
* 分页查询
*
......@@ -194,6 +282,113 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
return this.updateBatchById(jgInstallationNotices);
}
/**
* 打印安装告知单
*
* @param sequenceNbr 主键
* @return pdf文件路径
*/
@Override
public String generateInstallationNoticeReport(Long sequenceNbr) {
if (Objects.isNull(sequenceNbr)) {
throw new IllegalArgumentException("参数不能为空");
}
JgInstallationNotice jgInstallationNotice = this.getById(sequenceNbr);
List<Map<String, Object>> informationList = jgInstallationNoticeMapper.queryEquipInformation(sequenceNbr);
if (Objects.isNull(jgInstallationNotice) || CollectionUtils.isEmpty(informationList)) {
throw new IllegalArgumentException("安装告知单不存在");
}
Map<String, Object> installation = informationList.get(0);
Function<String, String> getValue = key -> installation.getOrDefault(key, "").toString();
// 组装模板变量
Map<String, Object> placeholders = new HashMap<>();
placeholders.put("sequenceNbr", getValue.apply("sequenceNbr"));
placeholders.put("installUnitName", getValue.apply("installUnitName"));
placeholders.put("applyNo", getValue.apply("applyNo"));
placeholders.put("productName", getValue.apply("productName"));
placeholders.put("equipType", getValue.apply("equType"));
placeholders.put("equipCode", getValue.apply("equRegisterCode"));
placeholders.put("produceCode", getValue.apply("produceCode")); // TODO: 制造编号
placeholders.put("produceUnitName", getValue.apply("produceUnitName"));
placeholders.put("produceLicenseNum", getValue.apply("produceLicenseNum"));
placeholders.put("fullAddress", getValue.apply("provinceName") + getValue.apply("cityName") + getValue.apply("countyName") + getValue.apply("address"));
placeholders.put("installStartDate", getValue.apply("installStartDate"));
placeholders.put("installType", getValue.apply("installType")); // TODO: 施工类别
placeholders.put("installLicenseNo", getValue.apply("installLicenseNo"));
placeholders.put("installLicenseExpirationDate", getValue.apply("installLicenseExpirationDate"));
placeholders.put("installLeaderName", getValue.apply("installLeaderName"));
placeholders.put("installLeaderPhone", getValue.apply("installLeaderPhone"));
placeholders.put("installUnitAddress", getValue.apply("installUnitAddress")); // TODO: 施工单位地址
placeholders.put("useUnitName", getValue.apply("useUnitName"));
placeholders.put("useUnitLeaderName", getValue.apply("safetyManager"));
placeholders.put("useUnitLeaderPhone", getValue.apply("safetyManagerPhone"));
placeholders.put("useUnitLeaderAddress", getValue.apply("useUnitProvinceName") + getValue.apply("useUnitCityName") + getValue.apply("useUnitCountyName") + getValue.apply("useUnitAddress"));
// 生成二维码
String qrCode = ImageUtils.generateQRCode(getValue.apply("applyNo"), 300, 300);
placeholders.put("qrCode", qrCode);
// word转pdf
File pdfFile;
try {
pdfFile = this.wordToPdf("installation-notification-report.ftl", placeholders);
} catch (Exception e) {
throw new RuntimeException(e);
}
// 上传pdf至文件服务器
String url = this.uploadFile(pdfFile);
// 删除临时文件
try {
Files.deleteIfExists(pdfFile.toPath());
} catch (IOException e) {
log.error("删除临时文件失败:{}", e);
}
// 更新到数据库
jgInstallationNotice.setNoticeReportUrl(url);
this.updateById(jgInstallationNotice);
return url;
}
/**
* word 转 pdf
*
* @param wordPath word文件路径
*/
private File wordToPdf(String wordPath, Map<String, Object> placeholders) throws Exception {
Assert.hasText(wordPath, "word文件路径不能为空");
String tempFileName = "安装告知单_" + System.currentTimeMillis() + "_temp.pdf";
WordTemplateUtils instance = WordTemplateUtils.getInstance();
return instance.fillAndConvertDocFile(wordPath, tempFileName, placeholders, SaveFormat.PDF);
}
/**
* 上传文件至文件服务器
*
* @param file 文件
*/
private String uploadFile(File file) {
Assert.notNull(file, "文件不能为空");
MultipartFile multipartFile = new ByteArrayMultipartFile("file", "file.pdf", "application/pdf", file2byte(file));
FeignClientResult<Map<String, String>> result = Systemctl.fileStorageClient.updateCommonFile(multipartFile);
String urlString = "";
if (result != null) {
for (String s : result.getResult().keySet()) {
urlString = s;
}
}
return urlString;
}
@Override
@SuppressWarnings({"Duplicates", "rawtypes"})
@Transactional(rollbackFor = Exception.class)
......@@ -219,6 +414,24 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
// 发起流程
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
// String[] strIds = new String[deviceList.size()];
// String[] strKeys = new String[deviceList.size()];
//
// for (int i = 0; i<deviceList.size() ; i++
// ) {
// strIds[i] = PROCESS_DEFINITION_KEY;
// strKeys[i] = String.valueOf(i);
// }
// dto.setProcessDefinitionIds(String.join(",", strIds));
// dto.setProcessDefinitionKeys(String.join(",", strKeys));
// dto.setCompleteFirstTask(true);
//
// try {
// FeignClientResult result = Workflow.taskV2Client.startByVariable(dto);
// } catch (Exception e) {
// e.printStackTrace();
// }
for (int i = 0; i < deviceList.size(); i++) {
dto.setProcessDefinitionKey(PROCESS_DEFINITION_KEY);
dto.setBusinessKey("1");
......@@ -262,9 +475,9 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
jgRelationEquip.setBusinessType(ApplicationFormTypeEnum.GZ.getCode());
if (!CollectionUtils.isEmpty(instanceIdList)) {
dto.setInstanceId(instanceIdList.get(i));
dto.setStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
dto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_PROCESSED.getCode()));
} else {
dto.setStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
dto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
}
list.add(dto);
equipList.add(jgRelationEquip);
......@@ -316,20 +529,20 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
}
// 分割单位
String useUnitId = model.getUseUnitId();
String useUnitId = model.getUseUnitCreditCode();
if (!ObjectUtils.isEmpty(useUnitId)) {
String[] useUnitList = useUnitId.split("_");
if (useUnitList.length > 1) {
model.setUseUnitId(useUnitList[0]);
model.setUseUnitCreditCode(useUnitList[0]);
model.setUseUnitName(useUnitList[1]);
}
}
String receiveOrgId = model.getReceiveOrgId();
String receiveOrgId = model.getReceiveOrgCreditCode();
if (!ObjectUtils.isEmpty(receiveOrgId)) {
String[] receiveOrgIdList = receiveOrgId.split("_");
if (receiveOrgIdList.length > 1) {
model.setReceiveOrgId(receiveOrgIdList[0]);
model.setReceiveOrgCreditCode(receiveOrgIdList[0]);
model.setReceiveOrgName(receiveOrgIdList[1]);
}
}
......@@ -351,4 +564,126 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
}
return urls;
}
public boolean submit(JgInstallationNoticeDto noticeDto,String op) {
AjaxResult ajaxResult = Workflow.taskClient.getTask(noticeDto.getInstanceId());
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(taskId);
dto.setComment("提交流程");
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", op);
dto.setVariable(map);
//执行流程
AjaxResult ajaxResult1 = null;
try {
ajaxResult1 = Workflow.taskClient.completeByTask(taskId, dto);
if (ajaxResult1.get("code").equals(200)) {
return true;
} else {
return false;
}
} catch (Exception e) {
log.error("提交失败:{}", e);
return false;
}
}
public void cancel(JgInstallationNoticeDto noticeDto) {
FeignClientResult ajaxResult = Workflow.taskV2Client.rollBack(noticeDto.getInstanceId());
JgInstallationNotice jgInstallationNotice = this.baseMapper.selectById(noticeDto.getSequenceNbr());
if(ajaxResult.getStatus() == 200) {
jgInstallationNotice.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
jgInstallationNotice.setStatus(String.valueOf(FlowStatusEnum.ROBACK.getCode()));
jgInstallationNoticeMapper.updateById(jgInstallationNotice);
}
}
public void accept(JgInstallationNoticeDto dto,String op) {
convertField(dto);
// 组装设备注册代码
StringBuffer stringBuffer = new StringBuffer();
String ym = null;
try {
ym = DateUtils.dateFormat(new Date(), DateUtils.DATE_PATTERN_MM);
} catch (ParseException e) {
log.error("日期转换失败:{}", e);
}
LambdaQueryWrapper<JgRelationEquip> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgRelationEquip::getBusinessId,dto.getSequenceNbr());
JgRelationEquip jgRelationEquip = jgRelationEquipMapper.selectOne(queryWrapper);
LambdaQueryWrapper<OtherInfo> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(OtherInfo::getRecord,jgRelationEquip.getEquipId());
OtherInfo tzsJgOtherInfo = tzsJgOtherInfoMapper.selectOne(queryWrapper1);
LambdaQueryWrapper<RegistrationInfo> queryWrapper2 = new LambdaQueryWrapper<>();
queryWrapper2.eq(RegistrationInfo::getRecord,jgRelationEquip.getEquipId());
RegistrationInfo tzsJgRegistrationInfo = tzsJgRegistrationInfoMapper.selectOne(queryWrapper2);
stringBuffer.append(tzsJgRegistrationInfo.getEquCategory()).append(dto.getCity()).append(ym);
String equCode = stringBuffer.toString();
String deviceRegistrationCode = iCreateCodeService.createDeviceRegistrationCode(equCode);
Map<String, Object> map = new HashMap<>();
map.put("cityCode",dto.getCity());
map.put("countyCode",dto.getCounty());
map.put("equCategory",tzsJgRegistrationInfo.getEquCategory());
map.put("isXiXian",dto.getIsXixian());
Map<String, Object> mapCode;
ResponseModel<Map<String, Object>> code = tzsServiceFeignClient.createCode(map);
mapCode = code.getResult();
boolean submit = submit(dto, op);
if(submit) {
if("0".equals(op)) {
dto.setNoticeStatus(String.valueOf(FlowStatusEnum.HAVE_PROCESSED.getCode()));
} else {
dto.setNoticeStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
dto.setStatus(String.valueOf(FlowStatusEnum.REJECTED.getCode()));
}
JgInstallationNotice bean = new JgInstallationNotice();
BeanUtils.copyProperties(dto,bean);
bean.setEquRegisterCode(deviceRegistrationCode);
jgInstallationNoticeMapper.updateById(bean);
// 更新其他业务表
tzsJgOtherInfo.setCode96333(mapCode.get("code96333").toString());
tzsJgOtherInfo.setSupervisoryCode(mapCode.get("superviseCode").toString());
tzsJgRegistrationInfo.setEquCode(deviceRegistrationCode);
tzsJgOtherInfoMapper.updateById(tzsJgOtherInfo);
tzsJgRegistrationInfoMapper.updateById(tzsJgRegistrationInfo);
}
// // 组装监管码
// String division = "";
// if (((XIAN.equals(dto.getCity()) || XIAN_YANG.equals(dto.getCity())) && "1".equals(dto.getIsXixian()))) {
// division = "X";
// } else {
// //生成监管码前缀
// Map<String, Object> divisionMap = equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQH.getCode(), dto.getCounty());
// division = ObjectUtils.isEmpty(divisionMap) ? equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQH.getCode(), dto.getCity()).get("code").toString() : divisionMap.get("code").toString();
// }
//
// // 组装96333码
// String prefix = "";
// if (((XIAN.equals(dto.getCity()) || XIAN_YANG.equals(dto.getCity())) && "1".equals(dto.getIsXixian()))) {
// prefix = EquipmentCategoryEnum.XXCSM.getValue();
// } else {
// Map<String, Object> elevatorMap = equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQHDT.getCode(), dto.getCounty());
// prefix = ObjectUtils.isEmpty(elevatorMap) ? equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQHDT.getCode(), dto.getCity()).get("code").toString() : elevatorMap.get("code").toString();
// }
}
}
\ No newline at end of file
......@@ -12,6 +12,7 @@ import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URLEncoder;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -302,4 +303,35 @@ public class ImageUtils {
}
}
/**
* 生成二维码(白色背景),并将其转换成base64
*
* @param text 二维码内容
* @param width 二维码宽度
* @param height 二维码高度
* @return base64
*/
public static String generateQRCode(String text, int width, int height) {
try {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
BitMatrix bm = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 二维码颜色:黑色
int QRCOLOR = 0x201f1f;
//二维码背景颜色:白色
int BGWHITE = 0xFFFFFF;
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
}
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", outputStream);
return Base64.getEncoder().encodeToString(outputStream.toByteArray());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package com.yeejoin.amos.boot.module.jg.biz.utils;
import com.aspose.words.Document;
import com.aspose.words.License;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Slf4j
public class WordTemplateUtils {
public static final String BASE_PACKAGE_PATH = "/templates";
private static WordTemplateUtils wordTemplateUtils;
private final Configuration configuration;
private WordTemplateUtils() {
configuration = new Configuration(Configuration.VERSION_2_3_23);
}
public static synchronized WordTemplateUtils getInstance() {
if (wordTemplateUtils == null) {
wordTemplateUtils = new WordTemplateUtils();
}
return wordTemplateUtils;
}
/**
* 创建doc并写入内容
*
* @param templatePath doc模板文件路径
* @param dataMap 内容
* @param template 模板
* @return doc文件
*/
private File createDoc(String templatePath, Map<String, ?> dataMap, Template template) throws TemplateException, IOException {
// templatePath在后缀之前加上UUID是为了防止并发时多个线程使用同一个模板文件而导致生成的Word文档内容不一致
int i = templatePath.lastIndexOf(".");
templatePath = UUID.randomUUID() + templatePath.substring(i);
if (templatePath.endsWith(".ftl")) {
templatePath = templatePath.replace(".ftl", ".doc");
}
File docFile = new File(templatePath);
try (
// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
Writer writer = new OutputStreamWriter(Files.newOutputStream(docFile.toPath()), StandardCharsets.UTF_8)
) {
template.process(dataMap, writer);
}
return docFile;
}
public File fillAndConvertDocFile(String templatePath, String targetFileName, Map<String, ?> map, int saveFormat) throws Exception {
// 指定模板所在包路径
configuration.setClassForTemplateLoading(this.getClass(), BASE_PACKAGE_PATH);
// 获取模板, 生成Word文档
Template freemarkerTemplate = configuration.getTemplate(templatePath, "UTF-8");
File docFile = createDoc(templatePath, map, freemarkerTemplate);
// 转换Word文档
File converedFile = converDocFile(docFile.getAbsolutePath(), targetFileName, saveFormat);
// 删除临时文件
Files.deleteIfExists(docFile.toPath());
return converedFile;
}
/**
* word转换
*
* @param docPath word文件路径
* @param targetPath 转换后文件路径
* @param saveFormat 目标文件类型 取自 com.aspose.words.SaveFormat
*/
private File converDocFile(String docPath, String targetPath, int saveFormat) throws Exception {
// 验证License 若不验证则转化出的pdf文档会有水印产生
if (!getLicense()) {
throw new RuntimeException("验证License失败");
}
if (StringUtils.isEmpty(docPath)) {
throw new FileNotFoundException("文档文件不存在");
}
try (
InputStream inputStream = Files.newInputStream(Paths.get(docPath));
OutputStream outputStream = Files.newOutputStream(Paths.get(targetPath));
) {
File targetFile = new File(targetPath);
Document doc = new Document(inputStream);
doc.save(outputStream, saveFormat);
return targetFile;
}
}
/**
* 获取License
*
* @return boolean
*/
private boolean getLicense() {
boolean result = false;
try {
String s = "<License><Data><Products><Product>Aspose.Total for Java</Product><Product>Aspose.Words for Java</Product></Products><EditionType>Enterprise</EditionType><SubscriptionExpiry>20991231</SubscriptionExpiry><LicenseExpiry>20991231</LicenseExpiry><SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber></Data><Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature></License>";
ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
License license = new License();
license.setLicense(is);
result = true;
} catch (Exception e) {
log.error("获取License失败", e);
}
return result;
}
}
......@@ -50,7 +50,7 @@
<logger name="com.yeejoin" level="INFO"/>
<!-- 日志输出级别 -->
<root level="DEBUG">
<root level="INFO">
<!-- <appender-ref ref="FILE" /> -->
<appender-ref ref="STDOUT" />
<!-- <appender-ref ref="ELK" />-->
......
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage"><pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties" Target="docProps/custom.xml"/></Relationships></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/><Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"><pkg:xmlData><w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData" mc:Ignorable="w14 w15 wp14"><w:body><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="300" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="default"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>ID: ${sequenceNbr}</w:t></w:r></w:p><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="300" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="default"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>附件</w:t></w:r></w:p><w:p><w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="52"/><w:szCs w:val="52"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:drawing><wp:anchor distT="0" distB="0" distL="114300" distR="114300" simplePos="0" relativeHeight="251659264" behindDoc="0" locked="0" layoutInCell="1" allowOverlap="1"><wp:simplePos x="0" y="0"/><wp:positionH relativeFrom="column"><wp:posOffset>4432300</wp:posOffset></wp:positionH><wp:positionV relativeFrom="paragraph"><wp:posOffset>545465</wp:posOffset></wp:positionV><wp:extent cx="921385" cy="921385"/><wp:effectExtent l="0" t="0" r="12065" b="12065"/><wp:wrapNone/><wp:docPr id="1" name="图片 1"/><wp:cNvGraphicFramePr><a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/></wp:cNvGraphicFramePr><a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:nvPicPr><pic:cNvPr id="1" name="图片 1"/><pic:cNvPicPr><a:picLocks noChangeAspect="1"/></pic:cNvPicPr></pic:nvPicPr><pic:blipFill><a:blip r:embed="rId4"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="921385" cy="921385"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln><a:noFill/></a:ln></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:anchor></w:drawing></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="52"/><w:szCs w:val="52"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>特种设备安装改造维修告知书</w:t></w:r></w:p><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="240" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t xml:space="preserve">施工单位: </w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:u w:val="single"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>${installUnitName}</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>(加盖公章)</w:t></w:r></w:p><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="720" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="10"/><w:szCs w:val="10"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>告知书编号:</w:t></w:r><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="28"/><w:szCs w:val="28"/><w:u w:val="single"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>${applyNo}</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p><w:tbl><w:tblPr><w:tblStyle w:val="8"/><w:tblW w:w="4998" w:type="pct"/><w:jc w:val="center"/><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblLayout w:type="fixed"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr><w:tblGrid><w:gridCol w:w="1736"/><w:gridCol w:w="1253"/><w:gridCol w:w="1256"/><w:gridCol w:w="1765"/><w:gridCol w:w="1253"/><w:gridCol w:w="1256"/></w:tblGrid><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="default" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>设备名称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="default" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${productName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="default" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>型号(参数)</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="720" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${equipType}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>设备代码</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${equipCode}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>制造编号</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="720" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${produceCode}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>设备制造单位全称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${produceUnitName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>制造许可证编号</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="720" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${produceLicenseNum}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>设备地点</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${fillAddress}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>安装改造维修日期</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installStartDate}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>施工单位全称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3980" w:type="pct"/><w:gridSpan w:val="5"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="720" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installUnitName}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>施工类别</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="735" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installType}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="736" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>许可证编号</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installLicenseNo}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="735" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>许可证有效期</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="736" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installLicenseExpirationDate}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>联系人</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installLeaderName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>电话</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installLeaderPhone}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>地址</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3980" w:type="pct"/><w:gridSpan w:val="5"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${installUnitAddress}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>使用单位全称</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3980" w:type="pct"/><w:gridSpan w:val="5"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${useUnitName}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>联系人</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1472" w:type="pct"/><w:gridSpan w:val="2"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${useUnitLeaderName}</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1036" w:type="pct"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>电话</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="1471" w:type="pct"/><w:gridSpan w:val="2"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${useUnitLeaderPhone}</w:t></w:r></w:p></w:tc></w:tr><w:tr><w:tblPrEx><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPrEx><w:trPr><w:trHeight w:val="794" w:hRule="exact"/><w:jc w:val="center"/></w:trPr><w:tc><w:tcPr><w:tcW w:w="1019" w:type="pct"/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>地址</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3980" w:type="pct"/><w:gridSpan w:val="5"/><w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/><w:noWrap w:val="0"/><w:vAlign w:val="center"/></w:tcPr><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:jc w:val="center"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="BEBEBE"/><w:kern w:val="0"/><w:sz w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:cs="宋体"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/><w:color w:val="262626" w:themeColor="text1" w:themeTint="D9"/><w:kern w:val="0"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/><w14:textFill><w14:solidFill><w14:schemeClr w14:val="tx1"><w14:lumMod w14:val="85000"/><w14:lumOff w14:val="15000"/></w14:schemeClr></w14:solidFill></w14:textFill></w:rPr><w:t>${useUnitLeaderAddress}</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p><w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>注:1、告知单按每台设备填写。</w:t></w:r></w:p><w:p><w:pPr><w:spacing w:line="240" w:lineRule="auto"/><w:ind w:firstLine="480" w:firstLineChars="200"/><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="黑体" w:hAnsi="黑体" w:eastAsia="黑体" w:cs="黑体"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>2、施工单位应提供特种设备许可证书复印件(加盖单位公章)。</w:t></w:r></w:p><w:p><w:pPr><w:keepNext w:val="0"/><w:keepLines w:val="0"/><w:pageBreakBefore w:val="0"/><w:widowControl w:val="0"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="0"/></w:numPr><w:kinsoku/><w:wordWrap/><w:overflowPunct/><w:topLinePunct w:val="0"/><w:autoSpaceDE/><w:autoSpaceDN/><w:bidi w:val="0"/><w:adjustRightInd/><w:snapToGrid/><w:spacing w:line="300" w:lineRule="auto"/><w:textAlignment w:val="auto"/><w:rPr><w:sz w:val="28"/></w:rPr></w:pPr><w:r><w:rPr><w:rFonts w:hint="eastAsia" w:ascii="等线" w:hAnsi="等线" w:eastAsia="等线" w:cs="等线"/><w:lang w:val="en-US" w:eastAsia="zh-CN"/></w:rPr><w:t>按照市委政府关于“四改两拆”三年攻坚行动实施方案要求,市域范围内的建筑物和建设项目,须符合城乡建设规划要求和《土地管理法》之要求并须取得合法手续,按要求,特种设备不允许装于不符合相关法规的建筑物之内。据此要求。</w:t></w:r></w:p><w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/><w:cols w:space="0" w:num="1"/><w:rtlGutter w:val="0"/><w:docGrid w:type="lines" w:linePitch="312" w:charSpace="0"/></w:sectPr></w:body></w:document></pkg:xmlData></pkg:part><pkg:part pkg:name="/docProps/app.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"><pkg:xmlData><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Template>Normal.dotm</Template><Company>Microsoft</Company><Pages>3</Pages><Words>262</Words><Characters>534</Characters><Lines>5</Lines><Paragraphs>1</Paragraphs><TotalTime>7</TotalTime><ScaleCrop>false</ScaleCrop><LinksUpToDate>false</LinksUpToDate><CharactersWithSpaces>552</CharactersWithSpaces><Application>WPS Office_12.1.0.16120_F1E327BC-269C-435d-A152-05C5408002CA</Application><DocSecurity>0</DocSecurity></Properties></pkg:xmlData></pkg:part><pkg:part pkg:name="/docProps/core.xml" pkg:contentType="application/vnd.openxmlformats-package.core-properties+xml"><pkg:xmlData><cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dcterms:created xsi:type="dcterms:W3CDTF">2021-04-07T06:02:00Z</dcterms:created><dc:creator>徐铁龙</dc:creator><cp:lastModifiedBy>DELL</cp:lastModifiedBy><cp:lastPrinted>2021-04-07T06:46:00Z</cp:lastPrinted><dcterms:modified xsi:type="dcterms:W3CDTF">2023-12-15T11:58:19Z</dcterms:modified><cp:revision>14</cp:revision></cp:coreProperties></pkg:xmlData></pkg:part><pkg:part pkg:name="/docProps/custom.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.custom-properties+xml"><pkg:xmlData><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="KSOProductBuildVer"><vt:lpwstr>2052-12.1.0.16120</vt:lpwstr></property><property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="3" name="ICV"><vt:lpwstr>B40FDDD478184802856A4291EB47F93F_13</vt:lpwstr></property></Properties></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/fontTable.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"><pkg:xmlData><w:fonts xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14"><w:font w:name="Times New Roman"><w:panose1 w:val="02020603050405020304"/><w:charset w:val="00"/><w:family w:val="roman"/><w:pitch w:val="variable"/><w:sig w:usb0="20007A87" w:usb1="80000000" w:usb2="00000008" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/></w:font><w:font w:name="宋体"><w:panose1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="default"/><w:sig w:usb0="00000203" w:usb1="288F0000" w:usb2="00000006" w:usb3="00000000" w:csb0="00040001" w:csb1="00000000"/></w:font><w:font w:name="Wingdings"><w:panose1 w:val="05000000000000000000"/><w:charset w:val="02"/><w:family w:val="auto"/><w:pitch w:val="default"/><w:sig w:usb0="00000000" w:usb1="00000000" w:usb2="00000000" w:usb3="00000000" w:csb0="80000000" w:csb1="00000000"/></w:font><w:font w:name="Arial"><w:panose1 w:val="020B0604020202020204"/><w:charset w:val="01"/><w:family w:val="swiss"/><w:pitch w:val="default"/><w:sig w:usb0="E0002EFF" w:usb1="C000785B" w:usb2="00000009" w:usb3="00000000" w:csb0="400001FF" w:csb1="FFFF0000"/></w:font><w:font w:name="黑体"><w:panose1 w:val="02010609060101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="default"/><w:sig w:usb0="800002BF" w:usb1="38CF7CFA" w:usb2="00000016" w:usb3="00000000" w:csb0="00040001" w:csb1="00000000"/></w:font><w:font w:name="Courier New"><w:panose1 w:val="02070309020205020404"/><w:charset w:val="01"/><w:family w:val="modern"/><w:pitch w:val="default"/><w:sig w:usb0="E0002EFF" w:usb1="C0007843" w:usb2="00000009" w:usb3="00000000" w:csb0="400001FF" w:csb1="FFFF0000"/></w:font><w:font w:name="Symbol"><w:panose1 w:val="05050102010706020507"/><w:charset w:val="02"/><w:family w:val="roman"/><w:pitch w:val="default"/><w:sig w:usb0="00000000" w:usb1="00000000" w:usb2="00000000" w:usb3="00000000" w:csb0="80000000" w:csb1="00000000"/></w:font><w:font w:name="Calibri"><w:panose1 w:val="020F0502020204030204"/><w:charset w:val="00"/><w:family w:val="swiss"/><w:pitch w:val="default"/><w:sig w:usb0="E4002EFF" w:usb1="C000247B" w:usb2="00000009" w:usb3="00000000" w:csb0="200001FF" w:csb1="00000000"/></w:font><w:font w:name="等线"><w:panose1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="auto"/><w:pitch w:val="default"/><w:sig w:usb0="A00002BF" w:usb1="38CF7CFA" w:usb2="00000016" w:usb3="00000000" w:csb0="0004000F" w:csb1="00000000"/></w:font></w:fonts></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/media/image1.png" pkg:contentType="image/png"><pkg:binaryData>iVBORw0KGgoAAAANSUhEUgAAAJEAAACRCAIAAABMus10AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAL
mElEQVR4nO2da1BURxbH58k4M4CAgqDgC6IWAyiKIT4I+Cgkoqs7MSrvTZURgc3WRlzRuApW0ESj
frBWBqwy0RVFK2owiAuYGNzA4itb4iBSoGJRWGBRoqOjCCjsB6uYO90jt+cyA56t8/vk/DndfWb+
2DRN39Pi3t5eEQIKyVAngFgNegYPWd+/CgsLr1+7NoSp9LE+Pd3NzY2r6PX6kydOEGEpqaljxozh
Knfu3Dn8/fdE2J8+/dTPz09AGu3t7fv27hXQ0OaEzJy5fPnyvpcmz65euVJQUDAUKZGsTU4mPGtq
ajp27BgRtmr1asKz1tZWOizqo4+EeWY0GunehoSenh6uZzg3wgM9gwd6Bg/0DB6y/r8skdjX1N7e
XsG/1Pf09Lx+/ZpQWMIsIpFIxGIxb5hYLGYJGwgW3wWX/jxzdnauvnnTpvmQHD9+fMuXXwpru3zZ
MpawpMRElrB/HDgQHR3NG5a9Y0dsbCxLh4KZGhT09OnTfgJwboQHegYP9Awe6Bk80DN48Kz1aa5f
v16j1wsbLCY2VqFQCGsrmMjISK/Ro3nDxo8fL6z/zs7OguPHhbUNCAwMCQmxtpXVnv3y88+5ubnW
tnrDH7XawfcsITFx7ty59uv/5cuX27dvF9Z23bp1AjzDuREe6Bk80DN4oGfwQM/gYfW6cUgIDw//
5eJFQlyXnNzQ0MBVpk+f/u2ePUTY3j17tm3dyjvEtszMiIiIgaU5SMDwzNHR0dHRkRDpXxuUSuXE
iRMJ0WAwNDY28g7x/PnzgWQ4mODcCA/0DB7oGTzQM3jAWIO0tbXV1dURop+fn4uLC1fRaDR024CA
AOIEh9FovHHjhs2THDRgeHb16tU/p6UR4k9FRYGBgbxtN23eTCh6vf4PS5faLLlBB+dGeKBn8EDP
4IGewQM9g4fV60atVhs8fbqwwVQqlbCGM2bMyDt4kBDHjRvH0nbfvn11t29zlf5P6VqLSqWic2Nk
gqBDKFZ79t6kSe9NmiRgpIHg6enp6ekprO1/f/+9srLStvlwkcvlkZGR9uufBudGeKBn8EDP4IGe
waO/NUhPT09LS4tdhzcYDCxhHR0dT548IcSRI0fK5XKu0tnZ2d7eToSp1Wpi/dLd3f3o0SPrkxWJ
RCKDwWDvz2RAzwwajcbZs2bZNB+BXLx4kWWP+Nq1awnx8UTY0fx84hzxQPaId+/atXvXLmFtbQXO
jfBAz+CBnsEDPYMHegYP07px0aJFPj4+Q5hKH8OHDyeUyZMnb9y4kRBLSkrOnz/PVaRSKR12+fJl
Yr+xra2NMQ26tyHB39+f+1IMt07q0iVLampquMqcOXPyqUpw8XFxLHvEjPVB3gVwboQHegYP9Awe
6Bk80DN4mNaNWZmZp06d4n7Nycmp6vJlll4CLB26tjeHjxyZMmUKV5FKpUqlkgjr6OggagHW1tau
WrmSCFMoFDKZ2Y75mDFjSsvKeNMwGAxzZs8mxL9+8cWaNWsIUfCntGLFiixOOQtTll1dXcRzc1Kp
lLHTIXngTqFQ0A8S0tAu0opIJOrs7Ozs7OQqHR0djJnQb7+7u5sljJGuri7uS5wb4YGewQM9gwd6
Bg/TGiQ4OJj4ISyVyU6fPs3Si1artXFe5jQ/eHD1yhXesIcPH1ZUVBDi3LlzR40axdv2/dBQb/Nb
MRTDhtFvPzg4mC6NYFuWLF3qYH7OJTg4mPvS5NknK1d+Yr4CNhgM06ZOZRmm8f594TkyUFxczOJZ
Q0PDhvR0Qjyan8/iWWJiIrFH3NTUFP7hh0TYjp077e1ZdnY2/ZcNLjg3wgM9gwd6Bg/0DB7oGTxM
68acAweILdHXr17RDRISEz+mVvbLqGtAtFptUlIS7/AlJSU6nY4Q8/LyWJ42S1+/Xmn+EKLx2TPe
ViKRyNfXt7CwkBDHsT2+l5OTc/LkSa4yTKGgeyu7cIH+TGi0Wm0idTXK2s8+e2n+S9eiyMhUzjFq
k2fNzc03q6t5h/Hy8po6bRoh0g0ZD423t7fTbYkt0bdBFAJkR6VS0W+BkQfNzQ+am7mKs7Mz3VtJ
SQnLh+nh4UG3raurI55E1Zif4cG5ER7oGTzQM3igZ/AwrUG8vb2DzHcXX796devWLbsO7+bmFkRt
aTo4ONhwiLt37zqZ/zlbqVJNokov3L9/32D+WGL748d0bjRqtZoxE7o3iVRaTVW4470V0eRZalpa
qvlzeex7xIKJioqKioqy6xBZmZmEEhAQUHTuHCF+u3s3cZLcx8fn37/9ZsNMzp49Syg6nY578TQj
ODfCAz2DB3oGD/QMHugZPPqrNaFUKvfs3UuIAQEBdCQd1tzcnL5+PSF+lZ1NlJarqqo69cMPvFmO
GDGCHoKmvr7+YF4eIa5NTiZW9kTl6bfx6NEj+i0wMnbcOJaE58+f7+HhwRs2YcIE7kt7PTOo0+no
Oho3qquJkw6Md4ovXrz4QE4Ob1hFRQVLfRCLpKWmEmv9gbAxIyMlJcVWvRHg3AgP9Awe6Bk80DN4
2OseC7lczrJ5KpPJWMKkUqnRaOQN6+rqonvr6upiafvK0kEKwTAOahG1Wk1clkIAo9ZEcXExXVeO
ZiC1Jt4d6NU1Ac6N8EDP4IGewQM9gwd6Bg/TWv9SeXltbe0QptJHbFxc/wunN3y8YoW7uztXkUql
OmpbclpwcGBQEFdpa2s7bV5VwyJOTk5x1O7lpfLy2+Y3mVgkNDSUvqEllzoxbZHvDh0aNmwYV/H3
9w/n3J1t8qy0tLSgoIClU3sTvWQJi2dJSUlEDWnGPWK9Xs/imYuLS0ZGBiEanjxh8Sw8IoLeI2b0
bP/+/YQSExPD9QznRnigZ/BAz+CBnsEDPYNHf/v6jo6OZRcu2HX4wsJCG17lMXPmzP9UVRFiVmbm
3zZs4CoWC4h9lZ29YMECrtLa2jrrgw+IsHUpKcQQz549WyT0zrr4+PhUhr1v4hBNf55JJBIvLy9h
2TDCsqZnR6FQ0Ak/f/68tbWVt62rqyvRtru7m24ol8uJMMEXXopEIkdHRwGfMM6N8EDP4IGewQM9
g4fV50Ea6usFVySbN28ecTMgOGpra8vMK3K8ePFCcG+NjY1lDCWPvb29udePWO3ZmTNncnNzrW31
Bt6TDu8+x/Lzj+Xn26q30tLS0tJS3rCYmJidX3/d9xLnRnigZ/BAz+CBnsEDPYOHvc5+DwLbtm4l
7rHQaDSbNm+2Vf/u7u7/PHqUEL87dKi8vJyrqFSqXOpBxfFsVeqio6NXrV7NG0ZU2QPs2Q2qGopt
z7ErlcqwsDBC/Bf1XKFMJqPDGPHx8RHQFudGeKBn8EDP4IGewQPGGkStVhP1FixisYqxp6cnS1uj
0Xjv3j3eMAcHB6I3lUpFN3Rzc6MrWtBpSCQSlkGdnJy4J6ZheBYRERHBOUhrFSx1OkQiUVpq6ibq
1DDNjp07uVf+id5Sfc9irYmLv/5KKDqdbsH8+byD4h4xeNAzeKBn8EDP4IGewcPqdeOChQtZroCz
CPEo3ADJy8traWnhDUtISPD19bXVoOeKiurr67mKRCzOpEoeP378OCsri7c3vV5PixszMpTmHxRR
F89qz0JCQkJCQqxtZQ/OFRXV1NTwhi1cuNCGnlVVVVWZn/12dnauvnmTCNv1zTdHDh8WNkRsbCzW
B/l/Az2DB3oGD/QMHugZPPpbNz59+tTXzncxM54GKC4u/svnnxPimR9/JApaV1ZWJlHX9iUmJBCl
9TQazU9FRbyDent7l1+6RIh/37LlxIkTXMXip5S+YcOdu3cJ0c9Gy1eetX5PT49Nhhk4dCYSiUQq
lRIK3bC3t5f4zmD8RhGLxUT/b0SW3Cy2tRU4N8IDPYMHegYP9AwepjXI+6GhFn+GDz7E6WCRSDR2
7Ni4uDhCdHNzIxRPT086jGb06NG0GBYW5urqylWIl29g/JQ0Gg0tsuQmYrhmEUYNaYTLO/EfC7EK
9Awe/wNla5PurCXX1wAAAABJRU5ErkJggg==</pkg:binaryData></pkg:part><pkg:part pkg:name="/word/settings.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"><pkg:xmlData><w:settings xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData" mc:Ignorable="w14"><w:zoom w:percent="120"/><w:bordersDoNotSurroundHeader w:val="0"/><w:bordersDoNotSurroundFooter w:val="0"/><w:documentProtection w:enforcement="0"/><w:defaultTabStop w:val="420"/><w:hyphenationZone w:val="360"/><w:drawingGridVerticalSpacing w:val="156"/><w:displayHorizontalDrawingGridEvery w:val="1"/><w:displayVerticalDrawingGridEvery w:val="1"/><w:noPunctuationKerning w:val="1"/><w:characterSpacingControl w:val="compressPunctuation"/><w:compat><w:spaceForUL/><w:balanceSingleByteDoubleByteWidth/><w:doNotLeaveBackslashAlone/><w:ulTrailSpace/><w:doNotExpandShiftReturn/><w:adjustLineHeightInTable/><w:doNotWrapTextWithPunct/><w:doNotUseEastAsianBreakRules/><w:useFELayout/><w:doNotUseIndentAsNumberingTabStop/><w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="14"/><w:compatSetting w:name="overrideTableStyleFontSizeAndJustification" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/><w:compatSetting w:name="enableOpenTypeFeatures" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/><w:compatSetting w:name="doNotFlipMirrorIndents" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/></w:compat><w:docVars><w:docVar w:name="commondata" w:val="eyJoZGlkIjoiOGU0YzRjY2I3ZDU5NmEwMWRmZmYzOWRiMjBhMjYyZjkifQ=="/></w:docVars><w:rsids><w:rsidRoot w:val="00050023"/><w:rsid w:val="00040667"/><w:rsid w:val="00040FF7"/><w:rsid w:val="00050023"/><w:rsid w:val="000A7947"/><w:rsid w:val="000D3739"/><w:rsid w:val="000E2155"/><w:rsid w:val="00101F20"/><w:rsid w:val="001D5AAB"/><w:rsid w:val="00201B95"/><w:rsid w:val="00235D10"/><w:rsid w:val="002A2B6C"/><w:rsid w:val="003C1840"/><w:rsid w:val="00400062"/><w:rsid w:val="004155AE"/><w:rsid w:val="00481C56"/><w:rsid w:val="004C0670"/><w:rsid w:val="004D5FAC"/><w:rsid w:val="00524BEE"/><w:rsid w:val="00553854"/><w:rsid w:val="005C34ED"/><w:rsid w:val="00755289"/><w:rsid w:val="00770422"/><w:rsid w:val="00776BF9"/><w:rsid w:val="00801102"/><w:rsid w:val="0081034C"/><w:rsid w:val="008D313A"/><w:rsid w:val="009A1196"/><w:rsid w:val="00AE60A3"/><w:rsid w:val="00B000D9"/><w:rsid w:val="00B4410D"/><w:rsid w:val="00B75F74"/><w:rsid w:val="00B92B3A"/><w:rsid w:val="00D10D3E"/><w:rsid w:val="00D601E6"/><w:rsid w:val="00D90FCE"/><w:rsid w:val="00DD6429"/><w:rsid w:val="00E049D7"/><w:rsid w:val="00E32872"/><w:rsid w:val="00E5277E"/><w:rsid w:val="00E95B7F"/><w:rsid w:val="00F06FB2"/><w:rsid w:val="00F33DF0"/><w:rsid w:val="00F836D8"/><w:rsid w:val="00F97947"/><w:rsid w:val="00FA2D4F"/><w:rsid w:val="00FB24F7"/><w:rsid w:val="00FB4EDF"/><w:rsid w:val="00FC6DCA"/><w:rsid w:val="038A570F"/><w:rsid w:val="03990047"/><w:rsid w:val="07E04497"/><w:rsid w:val="0D020A0B"/><w:rsid w:val="0DCB1711"/><w:rsid w:val="0E325320"/><w:rsid w:val="0EC17220"/><w:rsid w:val="0FBC66FE"/><w:rsid w:val="0FEB1C2B"/><w:rsid w:val="11BF511D"/><w:rsid w:val="11EA2C13"/><w:rsid w:val="124456EF"/><w:rsid w:val="12635AA8"/><w:rsid w:val="12F232D0"/><w:rsid w:val="13AE3F29"/><w:rsid w:val="13B30CB1"/><w:rsid w:val="1481490C"/><w:rsid w:val="15B825AF"/><w:rsid w:val="15E0735C"/><w:rsid w:val="163B6EDA"/><w:rsid w:val="174C6527"/><w:rsid w:val="191B532F"/><w:rsid w:val="19E25E4D"/><w:rsid w:val="1D491D3F"/><w:rsid w:val="1D725739"/><w:rsid w:val="1D8B05A9"/><w:rsid w:val="1DD441B5"/><w:rsid w:val="1DFE114D"/><w:rsid w:val="1EB464E5"/><w:rsid w:val="1EF4585E"/><w:rsid w:val="20270082"/><w:rsid w:val="20A559EA"/><w:rsid w:val="21091F11"/><w:rsid w:val="212E5E1B"/><w:rsid w:val="2138272D"/><w:rsid w:val="21B756EE"/><w:rsid w:val="21DB66AD"/><w:rsid w:val="222114DC"/><w:rsid w:val="228C7D76"/><w:rsid w:val="22A04AF7"/><w:rsid w:val="23153176"/><w:rsid w:val="251D5F8B"/><w:rsid w:val="256040C9"/><w:rsid w:val="25E46AA9"/><w:rsid w:val="2624159B"/><w:rsid w:val="278542BB"/><w:rsid w:val="28C9029D"/><w:rsid w:val="28E87731"/><w:rsid w:val="291C44C8"/><w:rsid w:val="2928331E"/><w:rsid w:val="2B966A97"/><w:rsid w:val="2C680039"/><w:rsid w:val="2DFB7085"/><w:rsid w:val="2F996B56"/><w:rsid w:val="2F9E416C"/><w:rsid w:val="30874C00"/><w:rsid w:val="32700042"/><w:rsid w:val="32B06690"/><w:rsid w:val="330E0A28"/><w:rsid w:val="333F7A14"/><w:rsid w:val="349F3341"/><w:rsid w:val="34A02734"/><w:rsid w:val="36BB55B0"/><w:rsid w:val="36D87F64"/><w:rsid w:val="380D00E1"/><w:rsid w:val="39E82BB3"/><w:rsid w:val="3AF630AE"/><w:rsid w:val="3C10082C"/><w:rsid w:val="3C461E13"/><w:rsid w:val="3C9506A5"/><w:rsid w:val="3CD016DD"/><w:rsid w:val="3FCA68B7"/><w:rsid w:val="41872CB2"/><w:rsid w:val="45DB537A"/><w:rsid w:val="46BF4C9C"/><w:rsid w:val="47394A4E"/><w:rsid w:val="47685334"/><w:rsid w:val="49415E3C"/><w:rsid w:val="4BA34B8C"/><w:rsid w:val="4D185106"/><w:rsid w:val="4E9C3B15"/><w:rsid w:val="4F22226C"/><w:rsid w:val="4F756840"/><w:rsid w:val="4F7800DE"/><w:rsid w:val="50C25AB5"/><w:rsid w:val="5212025B"/><w:rsid w:val="53D31D87"/><w:rsid w:val="547B2588"/><w:rsid w:val="58BF0636"/><w:rsid w:val="59A87812"/><w:rsid w:val="59B44408"/><w:rsid w:val="5A767910"/><w:rsid w:val="5CF74D38"/><w:rsid w:val="5D991BA9"/><w:rsid w:val="5DD12653"/><w:rsid w:val="5ED23951"/><w:rsid w:val="5F830B05"/><w:rsid w:val="5FFE63DD"/><w:rsid w:val="60C26EAD"/><w:rsid w:val="61202383"/><w:rsid w:val="614B5652"/><w:rsid w:val="62CF7BBD"/><w:rsid w:val="65C71020"/><w:rsid w:val="666B70B9"/><w:rsid w:val="671E44FE"/><w:rsid w:val="691E364C"/><w:rsid w:val="695678B8"/><w:rsid w:val="6A3273AF"/><w:rsid w:val="6CDE55CC"/><w:rsid w:val="6D336B24"/><w:rsid w:val="6DA71E62"/><w:rsid w:val="6E7F7922"/><w:rsid w:val="6E95615F"/><w:rsid w:val="6FA75643"/><w:rsid w:val="70BA270C"/><w:rsid w:val="71F907B3"/><w:rsid w:val="723B701D"/><w:rsid w:val="723E2669"/><w:rsid w:val="726C367A"/><w:rsid w:val="749747AF"/><w:rsid w:val="76004806"/><w:rsid w:val="76452637"/><w:rsid w:val="76EF6628"/><w:rsid w:val="77EB3B80"/><w:rsid w:val="7866291A"/><w:rsid w:val="79767E6F"/><w:rsid w:val="79BA2F1D"/><w:rsid w:val="7A0041B6"/><w:rsid w:val="7ADE49EA"/><w:rsid w:val="7BB16DAF"/><w:rsid w:val="7BE530CE"/><w:rsid w:val="7DC600E3"/><w:rsid w:val="7E9C4EDE"/><w:rsid w:val="7EC71F75"/><w:rsid w:val="7F1B445E"/></w:rsids><m:mathPr><m:brkBin m:val="before"/><m:brkBinSub m:val="--"/><m:smallFrac m:val="0"/><m:dispDef/><m:lMargin m:val="0"/><m:rMargin m:val="0"/><m:defJc m:val="centerGroup"/><m:wrapIndent m:val="1440"/><m:intLim m:val="subSup"/><m:naryLim m:val="undOvr"/></m:mathPr><w:themeFontLang w:val="en-US" w:eastAsia="zh-CN"/><w:clrSchemeMapping w:bg1="light1" w:t1="dark1" w:bg2="light2" w:t2="dark2" w:accent1="accent1" w:accent2="accent2" w:accent3="accent3" w:accent4="accent4" w:accent5="accent5" w:accent6="accent6" w:hyperlink="hyperlink" w:followedHyperlink="followedHyperlink"/><w:shapeDefaults><o:shapedefaults/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults></w:settings></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/styles.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"><pkg:xmlData><w:styles xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData" mc:Ignorable="w14"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/></w:rPr></w:rPrDefault><w:pPrDefault/></w:docDefaults><w:latentStyles w:count="260" w:defQFormat="0" w:defUnhideWhenUsed="1" w:defSemiHidden="1" w:defUIPriority="99" w:defLockedState="0"><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="0" w:semiHidden="0" w:name="Normal"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="9" w:semiHidden="0" w:name="heading 1"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 2"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 3"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 4"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 5"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 6"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 7"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 8"/><w:lsdException w:qFormat="1" w:uiPriority="9" w:name="heading 9"/><w:lsdException w:uiPriority="99" w:name="index 1"/><w:lsdException w:uiPriority="99" w:name="index 2"/><w:lsdException w:uiPriority="99" w:name="index 3"/><w:lsdException w:uiPriority="99" w:name="index 4"/><w:lsdException w:uiPriority="99" w:name="index 5"/><w:lsdException w:uiPriority="99" w:name="index 6"/><w:lsdException w:uiPriority="99" w:name="index 7"/><w:lsdException w:uiPriority="99" w:name="index 8"/><w:lsdException w:uiPriority="99" w:name="index 9"/><w:lsdException w:uiPriority="39" w:name="toc 1"/><w:lsdException w:uiPriority="39" w:name="toc 2"/><w:lsdException w:uiPriority="39" w:name="toc 3"/><w:lsdException w:uiPriority="39" w:name="toc 4"/><w:lsdException w:uiPriority="39" w:name="toc 5"/><w:lsdException w:uiPriority="39" w:name="toc 6"/><w:lsdException w:uiPriority="39" w:name="toc 7"/><w:lsdException w:uiPriority="39" w:name="toc 8"/><w:lsdException w:uiPriority="39" w:name="toc 9"/><w:lsdException w:uiPriority="99" w:name="Normal Indent"/><w:lsdException w:uiPriority="99" w:name="footnote text"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="annotation text"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="header"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="footer"/><w:lsdException w:uiPriority="99" w:name="index heading"/><w:lsdException w:qFormat="1" w:uiPriority="35" w:name="caption"/><w:lsdException w:uiPriority="99" w:name="table of figures"/><w:lsdException w:uiPriority="99" w:name="envelope address"/><w:lsdException w:uiPriority="99" w:name="envelope return"/><w:lsdException w:uiPriority="99" w:name="footnote reference"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="annotation reference"/><w:lsdException w:uiPriority="99" w:name="line number"/><w:lsdException w:uiPriority="99" w:name="page number"/><w:lsdException w:uiPriority="99" w:name="endnote reference"/><w:lsdException w:uiPriority="99" w:name="endnote text"/><w:lsdException w:uiPriority="99" w:name="table of authorities"/><w:lsdException w:uiPriority="99" w:name="macro"/><w:lsdException w:uiPriority="99" w:name="toa heading"/><w:lsdException w:uiPriority="99" w:name="List"/><w:lsdException w:uiPriority="99" w:name="List Bullet"/><w:lsdException w:uiPriority="99" w:name="List Number"/><w:lsdException w:uiPriority="99" w:name="List 2"/><w:lsdException w:uiPriority="99" w:name="List 3"/><w:lsdException w:uiPriority="99" w:name="List 4"/><w:lsdException w:uiPriority="99" w:name="List 5"/><w:lsdException w:uiPriority="99" w:name="List Bullet 2"/><w:lsdException w:uiPriority="99" w:name="List Bullet 3"/><w:lsdException w:uiPriority="99" w:name="List Bullet 4"/><w:lsdException w:uiPriority="99" w:name="List Bullet 5"/><w:lsdException w:uiPriority="99" w:name="List Number 2"/><w:lsdException w:uiPriority="99" w:name="List Number 3"/><w:lsdException w:uiPriority="99" w:name="List Number 4"/><w:lsdException w:uiPriority="99" w:name="List Number 5"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="10" w:semiHidden="0" w:name="Title"/><w:lsdException w:uiPriority="99" w:name="Closing"/><w:lsdException w:uiPriority="99" w:name="Signature"/><w:lsdException w:qFormat="1" w:uiPriority="1" w:semiHidden="0" w:name="Default Paragraph Font"/><w:lsdException w:uiPriority="99" w:name="Body Text"/><w:lsdException w:uiPriority="99" w:name="Body Text Indent"/><w:lsdException w:uiPriority="99" w:name="List Continue"/><w:lsdException w:uiPriority="99" w:name="List Continue 2"/><w:lsdException w:uiPriority="99" w:name="List Continue 3"/><w:lsdException w:uiPriority="99" w:name="List Continue 4"/><w:lsdException w:uiPriority="99" w:name="List Continue 5"/><w:lsdException w:uiPriority="99" w:name="Message Header"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="11" w:semiHidden="0" w:name="Subtitle"/><w:lsdException w:uiPriority="99" w:name="Salutation"/><w:lsdException w:uiPriority="99" w:name="Date"/><w:lsdException w:uiPriority="99" w:name="Body Text First Indent"/><w:lsdException w:uiPriority="99" w:name="Body Text First Indent 2"/><w:lsdException w:uiPriority="99" w:name="Note Heading"/><w:lsdException w:uiPriority="99" w:name="Body Text 2"/><w:lsdException w:uiPriority="99" w:name="Body Text 3"/><w:lsdException w:uiPriority="99" w:name="Body Text Indent 2"/><w:lsdException w:uiPriority="99" w:name="Body Text Indent 3"/><w:lsdException w:uiPriority="99" w:name="Block Text"/><w:lsdException w:uiPriority="99" w:name="Hyperlink"/><w:lsdException w:uiPriority="99" w:name="FollowedHyperlink"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="22" w:semiHidden="0" w:name="Strong"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="20" w:semiHidden="0" w:name="Emphasis"/><w:lsdException w:uiPriority="99" w:name="Document Map"/><w:lsdException w:uiPriority="99" w:name="Plain Text"/><w:lsdException w:uiPriority="99" w:name="E-mail Signature"/><w:lsdException w:uiPriority="99" w:name="Normal (Web)"/><w:lsdException w:uiPriority="99" w:name="HTML Acronym"/><w:lsdException w:uiPriority="99" w:name="HTML Address"/><w:lsdException w:uiPriority="99" w:name="HTML Cite"/><w:lsdException w:uiPriority="99" w:name="HTML Code"/><w:lsdException w:uiPriority="99" w:name="HTML Definition"/><w:lsdException w:uiPriority="99" w:name="HTML Keyboard"/><w:lsdException w:uiPriority="99" w:name="HTML Preformatted"/><w:lsdException w:uiPriority="99" w:name="HTML Sample"/><w:lsdException w:uiPriority="99" w:name="HTML Typewriter"/><w:lsdException w:uiPriority="99" w:name="HTML Variable"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="Normal Table"/><w:lsdException w:qFormat="1" w:uiPriority="99" w:semiHidden="0" w:name="annotation subject"/><w:lsdException w:uiPriority="99" w:name="Table Simple 1"/><w:lsdException w:uiPriority="99" w:name="Table Simple 2"/><w:lsdException w:uiPriority="99" w:name="Table Simple 3"/><w:lsdException w:uiPriority="99" w:name="Table Classic 1"/><w:lsdException w:uiPriority="99" w:name="Table Classic 2"/><w:lsdException w:uiPriority="99" w:name="Table Classic 3"/><w:lsdException w:uiPriority="99" w:name="Table Classic 4"/><w:lsdException w:uiPriority="99" w:name="Table Colorful 1"/><w:lsdException w:uiPriority="99" w:name="Table Colorful 2"/><w:lsdException w:uiPriority="99" w:name="Table Colorful 3"/><w:lsdException w:uiPriority="99" w:name="Table Columns 1"/><w:lsdException w:uiPriority="99" w:name="Table Columns 2"/><w:lsdException w:uiPriority="99" w:name="Table Columns 3"/><w:lsdException w:uiPriority="99" w:name="Table Columns 4"/><w:lsdException w:uiPriority="99" w:name="Table Columns 5"/><w:lsdException w:uiPriority="99" w:name="Table Grid 1"/><w:lsdException w:uiPriority="99" w:name="Table Grid 2"/><w:lsdException w:uiPriority="99" w:name="Table Grid 3"/><w:lsdException w:uiPriority="99" w:name="Table Grid 4"/><w:lsdException w:uiPriority="99" w:name="Table Grid 5"/><w:lsdException w:uiPriority="99" w:name="Table Grid 6"/><w:lsdException w:uiPriority="99" w:name="Table Grid 7"/><w:lsdException w:uiPriority="99" w:name="Table Grid 8"/><w:lsdException w:uiPriority="99" w:name="Table List 1"/><w:lsdException w:uiPriority="99" w:name="Table List 2"/><w:lsdException w:uiPriority="99" w:name="Table List 3"/><w:lsdException w:uiPriority="99" w:name="Table List 4"/><w:lsdException w:uiPriority="99" w:name="Table List 5"/><w:lsdException w:uiPriority="99" w:name="Table List 6"/><w:lsdException w:uiPriority="99" w:name="Table List 7"/><w:lsdException w:uiPriority="99" w:name="Table List 8"/><w:lsdException w:uiPriority="99" w:name="Table 3D effects 1"/><w:lsdException w:uiPriority="99" w:name="Table 3D effects 2"/><w:lsdException w:uiPriority="99" w:name="Table 3D effects 3"/><w:lsdException w:uiPriority="99" w:name="Table Contemporary"/><w:lsdException w:uiPriority="99" w:name="Table Elegant"/><w:lsdException w:uiPriority="99" w:name="Table Professional"/><w:lsdException w:uiPriority="99" w:name="Table Subtle 1"/><w:lsdException w:uiPriority="99" w:name="Table Subtle 2"/><w:lsdException w:uiPriority="99" w:name="Table Web 1"/><w:lsdException w:uiPriority="99" w:name="Table Web 2"/><w:lsdException w:uiPriority="99" w:name="Table Web 3"/><w:lsdException w:uiPriority="99" w:name="Balloon Text"/><w:lsdException w:qFormat="1" w:unhideWhenUsed="0" w:uiPriority="0" w:semiHidden="0" w:name="Table Grid"/><w:lsdException w:uiPriority="99" w:name="Table Theme"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 1"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 2"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 3"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 4"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 5"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="60" w:semiHidden="0" w:name="Light Shading Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="61" w:semiHidden="0" w:name="Light List Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="62" w:semiHidden="0" w:name="Light Grid Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="63" w:semiHidden="0" w:name="Medium Shading 1 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="64" w:semiHidden="0" w:name="Medium Shading 2 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="65" w:semiHidden="0" w:name="Medium List 1 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="66" w:semiHidden="0" w:name="Medium List 2 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="67" w:semiHidden="0" w:name="Medium Grid 1 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="68" w:semiHidden="0" w:name="Medium Grid 2 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="69" w:semiHidden="0" w:name="Medium Grid 3 Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="70" w:semiHidden="0" w:name="Dark List Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="71" w:semiHidden="0" w:name="Colorful Shading Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="72" w:semiHidden="0" w:name="Colorful List Accent 6"/><w:lsdException w:unhideWhenUsed="0" w:uiPriority="73" w:semiHidden="0" w:name="Colorful Grid Accent 6"/></w:latentStyles><w:style w:type="paragraph" w:default="1" w:styleId="1"><w:name w:val="Normal"/><w:autoRedefine/><w:qFormat/><w:uiPriority w:val="0"/><w:pPr><w:widowControl w:val="0"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/><w:kern w:val="2"/><w:sz w:val="21"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="2"><w:name w:val="heading 1"/><w:basedOn w:val="1"/><w:next w:val="1"/><w:autoRedefine/><w:qFormat/><w:uiPriority w:val="9"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before="340" w:beforeLines="0" w:beforeAutospacing="0" w:after="330" w:afterLines="0" w:afterAutospacing="0" w:line="576" w:lineRule="auto"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:b/><w:kern w:val="44"/><w:sz w:val="44"/></w:rPr></w:style><w:style w:type="character" w:default="1" w:styleId="9"><w:name w:val="Default Paragraph Font"/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="1"/></w:style><w:style w:type="table" w:default="1" w:styleId="7"><w:name w:val="Normal Table"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:tblPr><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="paragraph" w:styleId="3"><w:name w:val="annotation text"/><w:basedOn w:val="1"/><w:link w:val="11"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:pPr><w:jc w:val="left"/></w:pPr></w:style><w:style w:type="paragraph" w:styleId="4"><w:name w:val="footer"/><w:basedOn w:val="1"/><w:link w:val="12"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:pPr><w:tabs><w:tab w:val="center" w:pos="4153"/><w:tab w:val="right" w:pos="8306"/></w:tabs><w:snapToGrid w:val="0"/><w:jc w:val="left"/></w:pPr><w:rPr><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:eastAsia="宋体" w:cs="Times New Roman"/><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="5"><w:name w:val="header"/><w:basedOn w:val="1"/><w:link w:val="13"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:pPr><w:pBdr><w:bottom w:val="single" w:color="auto" w:sz="6" w:space="1"/></w:pBdr><w:tabs><w:tab w:val="center" w:pos="4153"/><w:tab w:val="right" w:pos="8306"/></w:tabs><w:snapToGrid w:val="0"/><w:jc w:val="center"/></w:pPr><w:rPr><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:eastAsia="宋体" w:cs="Times New Roman"/><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="6"><w:name w:val="annotation subject"/><w:basedOn w:val="3"/><w:next w:val="3"/><w:link w:val="14"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:b/><w:bCs/></w:rPr></w:style><w:style w:type="table" w:styleId="8"><w:name w:val="Table Grid"/><w:basedOn w:val="7"/><w:autoRedefine/><w:qFormat/><w:uiPriority w:val="0"/><w:pPr><w:widowControl w:val="0"/><w:jc w:val="both"/></w:pPr><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/><w:kern w:val="0"/><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr><w:tblPr><w:tblBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/><w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tblBorders></w:tblPr></w:style><w:style w:type="character" w:styleId="10"><w:name w:val="annotation reference"/><w:basedOn w:val="9"/><w:autoRedefine/><w:unhideWhenUsed/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:sz w:val="21"/><w:szCs w:val="21"/></w:rPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="11"><w:name w:val="批注文字 字符"/><w:basedOn w:val="9"/><w:link w:val="3"/><w:autoRedefine/><w:semiHidden/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/><w:szCs w:val="24"/></w:rPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="12"><w:name w:val="页脚 字符"/><w:basedOn w:val="9"/><w:link w:val="4"/><w:autoRedefine/><w:semiHidden/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="13"><w:name w:val="页眉 字符"/><w:basedOn w:val="9"/><w:link w:val="5"/><w:autoRedefine/><w:semiHidden/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr></w:style><w:style w:type="character" w:customStyle="1" w:styleId="14"><w:name w:val="批注主题 字符"/><w:basedOn w:val="11"/><w:link w:val="6"/><w:autoRedefine/><w:semiHidden/><w:qFormat/><w:uiPriority w:val="99"/><w:rPr><w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="宋体" w:cs="Times New Roman"/><w:b/><w:bCs/><w:szCs w:val="24"/></w:rPr></w:style></w:styles></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/theme/theme1.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.theme+xml"><pkg:xmlData><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink><a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS ゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Angsana New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS 明朝"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Cordia New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:satMod val="350000"/><a:shade val="99000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/></a:theme></pkg:xmlData></pkg:part></pkg:package>
\ No newline at end of file
......@@ -2,11 +2,11 @@ package com.yeejoin.amos.boot.module.jyjc.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
/**
......@@ -158,6 +158,9 @@ public class JyjcInspectionApplication extends BaseEntity {
@TableField("workflow_node")
private String workflowNode;
/**
* 检验结果方式
*/
@TableField("result_type")
private String resultType;
}
package com.yeejoin.amos.boot.module.jyjc.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
......@@ -155,4 +154,16 @@ public class JyjcInspectionResult extends BaseEntity {
*/
@TableField("inspection_type_name")
private String inspectionTypeName;
/**
* 报检日期
*/
@TableField("application_date")
private Date applicationDate;
/**
* 检验结果方式
*/
@TableField("result_type")
private String resultType;
}
......@@ -7,6 +7,9 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
import java.util.Map;
/**
*
*
......@@ -45,4 +48,10 @@ public class JyjcInspectionResultAttachment extends BaseEntity {
@TableField("remark")
private String remark;
/**
* 附件地址
*/
@TableField(exist = false)
private List<Object> attachmentUrlList;
}
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -66,6 +67,7 @@ public class JyjcOpeningApplication extends BaseEntity {
* 有效期至
*/
@TableField("expiry_date")
@JsonFormat (pattern = "yyyy-MM-dd")
private Date expiryDate;
/**
......
package com.yeejoin.amos.boot.module.jyjc.api.enums;
public enum AttachmentTypeEnum {
SPECIAL_EQUIPMENT_REPORT("特种设备检验报告","1"),
INSPECTION_CERTIFICATE("监检证书","2");
private String name;
private String code;
public String getName() {
return name;
}
AttachmentTypeEnum(String name, String code) {
this.name = name;
this.code = code;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
package com.yeejoin.amos.boot.module.jyjc.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.api.enums
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:25
*/
@Getter
@AllArgsConstructor
public enum BizTypeEnum {
SUPERVISE("supervise", "监督检验"),
FIRST_INSPECTION("firstinspect", "定检"),
DETECTION("detection", "检测");
private String code;
private String name;
public static List<String> getEnumNameList() {
List<String> codeList = new ArrayList<String>();
for (BizTypeEnum c : BizTypeEnum.values()) {
codeList.add(c.getCode());
}
return codeList;
}
}
......@@ -3,6 +3,9 @@ package com.yeejoin.amos.boot.module.jyjc.api.mapper;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationAttachment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
* Mapper 接口
*
......@@ -13,4 +16,6 @@ public interface JyjcInspectionApplicationAttachmentMapper extends BaseMapper<Jy
public void deleteByApplicationSeq(Long applicationSeq);
public List<Map<String,Object>> getDataByApplicationSeq(Long applicationSeq);
}
package com.yeejoin.amos.boot.module.jyjc.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import org.springframework.data.repository.query.Param;
import java.util.Map;
/**
* Mapper 接口
......@@ -14,4 +19,8 @@ public interface JyjcInspectionApplicationMapper extends BaseMapper<JyjcInspecti
public Page<JyjcInspectionApplication> queryForDataList( Page<JyjcInspectionApplication> page, String applicationNo, String inspectionClassify, String applicationUnitCode,String applicationUnitName, String equipClassify, String inspectionUnitCode,String inspectionUnitName, String applicationDate, String acceptDate, String inspectionChargePerson, String status , String bizType);
Page<JyjcInspectionApplicationEquipModel> listByCategory(Page<JyjcInspectionApplicationEquipModel> page,@Param("equipClassify") String equipClassify);
JyjcInspectionApplicationModel selectDataBySeq(Long sequenceNbr);
}
......@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface JyjcInspectionApplicationPushLogMapper extends BaseMapper<JyjcInspectionApplicationPushLog> {
void deleteByApplicationSeq(Long seq);
}
......@@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface JyjcInspectionEquipStatisticsMapper extends BaseMapper<JyjcInspectionEquipStatistics> {
void deleteByApplicationSeq(Long seq);
}
......@@ -2,22 +2,22 @@ package com.yeejoin.amos.boot.module.jyjc.api.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Date;
/**
*
*
* @author system_generator
* @date 2023-12-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="JyjcInspectionApplicationEquipModel", description="")
@ApiModel(value = "JyjcInspectionApplicationEquipModel", description = "")
public class JyjcInspectionApplicationEquipModel extends BaseModel {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "报检申请表主键")
......@@ -29,4 +29,60 @@ public class JyjcInspectionApplicationEquipModel extends BaseModel {
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "业务类型(与菜单对应拆表使用)")
private String bizType;
@ApiModelProperty(value = "设备类别")
private String equCategory;
@ApiModelProperty(value = "设备类别名称")
private String equCategoryName;
@ApiModelProperty(value = "检验检测类型编码")
private String inspectionType;
@ApiModelProperty(value = "检验检测类型名称(冗余)")
private String inspectionTypeName;
@ApiModelProperty(value = "报检日期")
private Date applicationDate;
@ApiModelProperty("检验结果方式")
private String resultType;
@ApiModelProperty(value = "设备种类")
private String equList;
@ApiModelProperty(value = "设备种类名称")
private String equListName;
@ApiModelProperty(value = "使用登记证编号")
private String useOrgCode;
@ApiModelProperty(value = "单位内部编号")
private String useInnerCode;
@ApiModelProperty(value = "注册代码")
private String equCode;
@ApiModelProperty(value = "设备使用地点省")
private String provinceName;
@ApiModelProperty(value = "设备使用地点市")
private String cityName;
@ApiModelProperty(value = "设备使用地点区")
private String countyName;
@ApiModelProperty(value = "设备使用地点街道")
private String streetName;
@ApiModelProperty(value = "设备使用地点详细")
private String address;
@ApiModelProperty(value = "使用单位")
private String useUnitName;
@ApiModelProperty(value = "使用单位统一信用代码")
private String useUnitCreditCode;
}
......@@ -2,25 +2,24 @@ package com.yeejoin.amos.boot.module.jyjc.api.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
*
*
* @author system_generator
* @date 2023-12-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="JyjcInspectionApplicationModel", description="")
@ApiModel(value = "JyjcInspectionApplicationModel", description = "")
public class JyjcInspectionApplicationModel extends BaseModel {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "检验检测单位编码")
......@@ -67,6 +66,12 @@ public class JyjcInspectionApplicationModel extends BaseModel {
@ApiModelProperty(value = "报检单位编号")
private String applicationUnitCode;
@ApiModelProperty(value = "报检单位名称")
private String applicationUnitName;
@ApiModelProperty(value = "报检单位地址")
private String address;
@ApiModelProperty(value = "监管单位名称")
private String superviseOrgName;
@ApiModelProperty(value = "包含设备数量(冗余)")
private Integer numberOfEquip;
......@@ -77,7 +82,7 @@ public class JyjcInspectionApplicationModel extends BaseModel {
@ApiModelProperty(value = "工作流实例ID")
private String processInstanceId;
@ApiModelProperty(value = "工作流key")
@ApiModelProperty(value = "工作流key")
private String processKey;
@ApiModelProperty(value = "申请单二维码")
......@@ -98,20 +103,43 @@ public class JyjcInspectionApplicationModel extends BaseModel {
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存")
private String workflowNode;
@ApiModelProperty(value = "告知书")
private List<Map<String,Object>> gzs;
@ApiModelProperty(value = "产品质量证明书")
private List<Map<String,Object>> cpzl;
@ApiModelProperty(value = "施工自行检查报告")
private List<Map<String,Object>> sgzx ;
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存")
@ApiModelProperty(value = "施工合同或证明")
private List<Map<String,Object>> sght;
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存")
@ApiModelProperty(value = "施工方案/施工设计文件")
private List<Map<String,Object>> sgfa;
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存")
@ApiModelProperty(value = "施工单位许可证书")
private List<Map<String,Object>> sgdwxk;
@ApiModelProperty(value = "型式试验证书")
private List<Map<String,Object>> xssy;
@ApiModelProperty(value = "限速器和渐进式安全钳的调试证书")
private List<Map<String,Object>> xsqts;
@ApiModelProperty(value = "土建声明")
private List<Map<String,Object>> tjsm;
@ApiModelProperty(value = "质量保证手册和程序文件")
private List<Map<String,Object>> zlbz;
@ApiModelProperty(value = "施工作业文件")
private List<Map<String,Object>> sgzy;
@ApiModelProperty(value = "施工人员、质量保证体系责任人、专业技术人员身份证、技术工人的身份证及资质证书")
private List<Map<String,Object>> sgry;
@ApiModelProperty(value = "产品技术文件")
private List<Map<String,Object>> cpjs;
@ApiModelProperty(value = "施工设计文件")
private List<Map<String,Object>> sgsj;
@ApiModelProperty(value = "施工分包方目录")
private List<Map<String,Object>> sgfb;
@ApiModelProperty(value = "分包方评价资料")
private List<Map<String,Object>> fbspj;
@ApiModelProperty(value = "操作类型 0 新增 2 编辑 1 暂存")
private List<Map<String,Object>> equip;
@ApiModelProperty("检验结果方式")
private String resultType;
}
......@@ -7,6 +7,8 @@ import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 业务开通申请表
......@@ -31,6 +33,7 @@ public class JyjcInspectionResultModel extends BaseModel {
@ApiModelProperty(value = "报检单位编号")
private String applicationUnitCode;
//监管码
@ApiModelProperty(value = "设备唯一标识")
private String equipUnicode;
......@@ -91,12 +94,15 @@ public class JyjcInspectionResultModel extends BaseModel {
@ApiModelProperty(value = "检验检测类型名称(冗余)")
private String inspectionTypeName;
@ApiModelProperty(value = "报检日期")
private Date applicationDate;
@ApiModelProperty("检验结果方式")
private String resultType;
@ApiModelProperty(value = "设备种类")
private String equList;
@ApiModelProperty(value = "监管码")
private String supervisoryCode;
@ApiModelProperty(value = "使用登记证编号")
private String useOrgCode;
......@@ -120,8 +126,8 @@ public class JyjcInspectionResultModel extends BaseModel {
private String useUnitCreditCode;
@ApiModelProperty(value = "检验结果技术参数")
private JyjcInspectionResultParamModel resultParamModel;
private Map<String,Object> resultParamModelMap;
@ApiModelProperty(value = "检验结果附件")
private JyjcInspectionResultAttachmentModel resultAttachmentModel;
@ApiModelProperty(value = "附件类型(特种设备检验报告:1,监检证书:2)")
private String attachmentType;
}
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.api.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseUnitLicenceDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto;
......@@ -44,6 +45,7 @@ public class JyjcOpeningApplicationModel extends BaseModel {
private String resultType;
@ApiModelProperty (value = "有效期至")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date expiryDate;
@ApiModelProperty (value = "受理日期(接收日期)")
......
package com.yeejoin.amos.boot.module.jyjc.api.service;
import java.util.Map;
/**
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.api.service
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 15:55
*/
public interface IJyjcInspectionApplicationHandlerService {
String type();
boolean notifyInspectionUnit(Map<String, Object> params);
}
package com.yeejoin.amos.boot.module.jyjc.api.service;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import java.util.List;
/**
* 接口类
*
* @author system_generator
* @date 2023-12-14
*/
public interface IJyjcInspectionApplicationService {}
public interface IJyjcInspectionApplicationService {
void deleteBatchData(List<Long> sequenceNbr);
}
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jyjc.api.service;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam;
import java.util.List;
import java.util.Map;
/**
* 检验结果技术参数表接口类
......@@ -17,4 +18,11 @@ public interface IJyjcInspectionResultParamService {
* @return
*/
List<JyjcInspectionResultParam> getParamByResultSeq(Long sequenceNbr);
/**
* 根据设备code获取技术参数字段
* @param equipTypeCode 设备code
* @return 字段列表
*/
List<Map<String,Object>> getParamByEquipTypeCode(String equipTypeCode);
}
package com.yeejoin.amos.boot.module.jyjc.api.service;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
......@@ -18,4 +21,12 @@ public interface IJyjcInspectionResultService {
* @return 检验结果实体
*/
Map<String, Object> queryDetailBySeq(Long sequenceNbr);
/**
* 获取设备种类
* @param type 获取的类型
* @param notNode 不需要节点
* @return 列表
*/
List<Map<String,Object>> equipList(String type, String notNode);
}
......@@ -8,8 +8,16 @@
from
tz_jyjc_inspection_application_attachment
where
application_seq = #{applicationSeq}
application_seq =
#{applicationSeq}
</delete>
<select id="getDataByApplicationSeq" resultType="map">
select *
from tz_jyjc_inspection_application_attachment
where application_seq = #{applicationSeq}
</select>
</mapper>
......@@ -5,26 +5,27 @@
<select id="queryForDataList"
resultType="com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication">
select
tzjia.applicationNo,
tzjia.inspectionType,
tzjia.inspectionUnitName,
tzjia.equipClassify,
tzjia.numberOfEquip,
tzjia.inspectionUnitName,
tzjia.applicationDate,
tzjia.acceptDate,
tzjia.inspectionChargePerson,
tzjia.inspectionChargePhone,
tzjia.application_no,
tzjia.inspection_type,
(select name from cb_data_dictionary where cb_data_dictionary.code = tzjia.inspection_classify and cb_data_dictionary.type = 'JYJCLB') as inspectionClassify,
tzjia.inspection_unit_code,
(select name from cb_data_dictionary where cb_data_dictionary.code = tzjia.equip_classify and cb_data_dictionary.type = 'BJSBZL') as equipClassify,
tzjia.number_of_equip,
tzjia.inspection_unit_code,
tzjia.application_date,
tzjia.accept_date,
tzjia.inspection_charge_phone,
tzjia.inspection_charge_person,
tzjia.status
from
tz_jyjc_inspection_application as tzjia
where
tzjia.is_delete = 0
<where>
<if test=" applicationNo != null and applicationNo != ''">
and applicationNo like concat('%',#{applicationNo}.'%')
and application_no like concat('%',#{applicationNo}.'%')
</if>
<if test="inspectionType != null and inspectionType != ''">
and inspectionType = #{inspectionType}
<if test="inspectionClassify != null and inspectionClassify != ''">
and inspection_classify = #{inspectionClassify}
</if>
<if test="inspectionUnitName != null and inspectionUnitName != ''">
and inspection_unit_code in (select use_code from tz_base_enterprise_info where use_unit like concat('%',#{inspectionUnitName},'%'))
......@@ -39,22 +40,16 @@
and application_unit_code in (select use_code from tz_base_enterprise_info where use_unit like concat('%',#{inspectionUnitName},'%'))
</if>
<if test="equipClassify != null and equipClassify != ''">
and equipClassify = #{equipClassify}
</if>
<if test="numberOfEquip != null and numberOfEquip != ''">
and numberOfEquip = #{numberOfEquip}
and equip_classify = #{equipClassify}
</if>
<if test="applicationDate != null and applicationDate != ''">
and applicationDate = #{applicationDate}
and application_date = #{applicationDate}
</if>
<if test="acceptDate != null and acceptDate != ''">
and acceptDate = #{acceptDate}
and accept_date = #{acceptDate}
</if>
<if test="inspectionChargePerson != null and inspectionChargePerson != ''">
and inspectionChargePerson like concat('%',#{inspectionChargePerson}.'%')
</if>
<if test="inspectionChargePhone != null and inspectionChargePhone != ''">
and inspectionChargePhone like concat('%',#{inspectionChargePhone}.'%')
and inspection_charge_person like concat('%',#{inspectionChargePerson}.'%')
</if>
<if test="status != null and status != ''">
and status = #{status}
......@@ -62,5 +57,48 @@
<if test="bizType != null and bizType != ''">
and biz_type = #{bizType}
</if>
</where>
</select>
<select id="listByCategory"
resultType="com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel">
select
use_unit_name,
use_unit_credit_code,
province_name,
city_name,
county_name,
street_name,
address,
use_inner_code,
equ_list,
tec1.name equ_list_name,
equ_category,
tec.name equ_category_name,
use_org_code,
equ_code,
supervisory_code
from
idx_biz_jg_use_info ibjui
left join idx_biz_jg_register_info ibjri on ibjui.record = ibjri.record
left join idx_biz_jg_other_info ibjoi on ibjui.record = ibjoi.record
left join amos_tzs_biz.tz_equipment_category tec on ibjri.equ_category = tec.code
left join amos_tzs_biz.tz_equipment_category tec1 on ibjri.equ_list = tec1.code
<where>
<if test="equipClassify != null and equipClassify != ''">
and equ_list = #{equipClassify}
</if>
</where>
</select>
<select id="selectDataBySeq" resultType="com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel">
SELECT
tzjia.*,
tbei.supervise_org_name AS superviseOrgName,
tbei.use_unit AS applicationUnitName,
tbei.address AS address
FROM
tz_jyjc_inspection_application AS tzjia
LEFT JOIN tz_base_enterprise_info tbei ON tzjia.application_unit_code = tbei.use_code
WHERE
tzjia.sequence_nbr = #{sequenceNbr}
</select>
</mapper>
......@@ -2,4 +2,12 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationPushLogMapper">
<delete id="deleteByApplicationSeq">
delete
*
from
tz_jyjc_inspection_application_push_log
where
application_seq = #{applicationSeq}
</delete>
</mapper>
......@@ -2,4 +2,12 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionEquipStatisticsMapper">
<delete id="deleteByApplicationSeq">
delete
*
from
tz_jyjc_inspection_equip_statistics
where
application_seq = #{applicationSeq}
</delete>
</mapper>
......@@ -4,22 +4,54 @@
<select id="selectJyjcInspectionResultpPage"
resultType="com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel">
SELECT sequence_nbr, inspection_unit_code, application_no, application_unit_code, equip_unicode, result_status,
license_number, result_no, inspector, inner_person_code, inspection_conclusion, inspection_date,
next_inspection_date, inspection_start_date, inspection_end_date, inspection_result_summary, non_conformance,
rectification, remark, rec_user_id, rec_date, biz_type
FROM tz_jyjc_inspection_result
select res.sequence_nbr, res.inspection_unit_code, res.application_no, res.application_unit_code,
res.equip_unicode, res.result_status, res.license_number, res.result_no, res.inspector, res.inner_person_code,
res.inspection_conclusion, res.inspection_date, res.next_inspection_date, res.inspection_start_date,
res.inspection_end_date, res.inspection_result_summary, res.non_conformance, res.rectification, res.remark,
res.rec_user_id, res.rec_date, res.biz_type,res.equ_category, res.inspection_type, res.inspection_type_name,
res.application_date,use_unit_name, use_unit_credit_code, province_name, city_name, county_name, street_name,
address, equ_code, use_inner_code, equ_list, tec1.name equ_list_name, ibjri.equ_category, tec.name
equ_category_name, use_org_code
from tz_jyjc_inspection_result res
left join idx_biz_jg_other_info ibjoi on res.equip_unicode = ibjoi.supervisory_code
left join idx_biz_jg_use_info ibjui on ibjui.record = ibjoi.record
left join idx_biz_jg_register_info ibjri on ibjui.record = ibjri.record
left join tz_equipment_category tec on ibjri.equ_category = tec.code
left join tz_equipment_category tec1 on ibjri.equ_list = tec1.code
<where>
<if test="jyjcInspectionResultModel.applicationNo != '' and jyjcInspectionResultModel.applicationNo != null">
and application_no like concat('%',#{jyjcInspectionResultModel.applicationNo},'%')
and res.application_no like concat('%',#{jyjcInspectionResultModel.applicationNo},'%')
</if>
<if test="jyjcInspectionResultModel.inspectionUnitCode != '' and jyjcInspectionResultModel.inspectionUnitCode != null">
and inspection_unit_code = #{jyjcInspectionResultModel.inspectionUnitCode}
and res.inspection_unit_code = #{jyjcInspectionResultModel.inspectionUnitCode}
</if>
<if test="jyjcInspectionResultModel.applicationUnitCode != '' and jyjcInspectionResultModel.applicationUnitCode != null">
and application_unit_code = #{jyjcInspectionResultModel.applicationUnitCode}
and res.application_unit_code = #{jyjcInspectionResultModel.applicationUnitCode}
</if>
<if test="jyjcInspectionResultModel.useUnitCreditCode != '' and jyjcInspectionResultModel.useUnitCreditCode != null">
and use_unit_credit_code like concat('%',#{jyjcInspectionResultModel.useUnitCreditCode},'%')
</if>
<if test="jyjcInspectionResultModel.useInnerCode != '' and jyjcInspectionResultModel.useInnerCode != null">
and use_inner_code like concat('%',#{jyjcInspectionResultModel.useInnerCode},'%')
</if>
<if test="jyjcInspectionResultModel.equCode != '' and jyjcInspectionResultModel.equCode != null">
and equ_code like concat('%',#{jyjcInspectionResultModel.equCode},'%')
</if>
<if test="jyjcInspectionResultModel.useOrgCode != '' and jyjcInspectionResultModel.useOrgCode != null">
and use_org_code like concat('%',#{jyjcInspectionResultModel.useOrgCode},'%')
</if>
<if test="jyjcInspectionResultModel.equipUnicode != '' and jyjcInspectionResultModel.equipUnicode != null">
and res.equip_unicode like concat('%',#{jyjcInspectionResultModel.equipUnicode},'%')
</if>
<if test="jyjcInspectionResultModel.equCategory != '' and jyjcInspectionResultModel.equCategory != null">
and ibjri.equ_category = #{jyjcInspectionResultModel.equCategory}
</if>
<if test="jyjcInspectionResultModel.inspectionType != '' and jyjcInspectionResultModel.inspectionType != null">
and res.inspection_type = #{jyjcInspectionResultModel.inspectionType}
</if>
<if test="jyjcInspectionResultModel.applicationDate!=null">
AND TO_DAYS(res.application_date) = TO_DAYS(#{jyjcInspectionResultModel.applicationDate})
</if>
</where>
</select>
</mapper>
......@@ -23,8 +23,8 @@
workflow_prostance_id,
workflow_role,
unit_code_name,
status,
status_name
status_name,
workflow_active_key
from tz_jyjc_opening_application
<where>
<if test="jyjcOpeningApplicationRequstDto.applicationSeq != '' and jyjcOpeningApplicationRequstDto.applicationSeq != null">
......
package com.yeejoin.amos.boot.module.jyjc.biz.config;
import com.yeejoin.amos.boot.module.ymt.api.enums.BaseExceptionEnum;
/**
......
package com.yeejoin.amos.boot.module.jyjc.biz.config;
import com.yeejoin.amos.boot.module.ymt.api.common.BaseException;
import com.yeejoin.amos.boot.module.ymt.api.enums.CommonErrorEnum;
/**
......
package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationModel;
import com.yeejoin.amos.boot.module.jyjc.biz.config.BaseException;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonserviceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcOpeningApplicationServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* @author system_generator
* @date 2023-12-13
*/
......@@ -39,9 +24,8 @@ import java.util.stream.Collectors;
@RequestMapping(value = "/common")
public class CommonController extends BaseController {
@Autowired
CommonserviceImpl commonserviceImpl;
@Autowired
CommonserviceImpl commonserviceImpl;
/**
* 新增
......@@ -49,10 +33,21 @@ public class CommonController extends BaseController {
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/getJyjcPersonByUnitCode")
@ApiOperation(httpMethod = "GET", value = "根据公司的unitCode获取检测检验人员列表", notes = "根据公司的unitCode获取检测检验人员列表")
public ResponseModel<List<TzsUserInfo>> getUserInfosByUnitCode(@RequestParam String unitCode) {
return ResponseHelper.buildResponse(commonserviceImpl.getUserInfosByUnitCode(unitCode));
}
@PostMapping(value = "/getJyjcPersonByUnitCode")
@ApiOperation(httpMethod = "GET", value = "根据公司的unitCode获取检测检验人员列表", notes = "根据公司的unitCode获取检测检验人员列表")
public ResponseModel<List<TzsUserInfo>> getUserInfosByUnitCode(@RequestParam String unitCode) {
return ResponseHelper.buildResponse(commonserviceImpl.getUserInfosByUnitCode(unitCode));
}
/**
* 查询检验检测机构列表(基本信息及联系人)
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getInspectionUnitList")
@ApiOperation(httpMethod = "GET", value = "查询检验检测机构列表(基本信息及联系人)", notes = "查询检验检测机构列表(基本信息及联系人)")
public ResponseModel<List<TzBaseEnterpriseInfo>> getInspectionUnitList() {
return ResponseHelper.buildResponse(commonserviceImpl.getInspectionUnitList());
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import cn.hutool.core.bean.BeanUtil;
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.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.enums.WorkFlowEnum;
import com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip;
import com.yeejoin.amos.boot.module.jyjc.api.enums.DocumentEnum;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationAttachmentModel;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationAttachmentServiceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationEquipServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationServiceImpl;
import org.typroject.tyboot.core.rdbms.annotation.Condition;
import org.typroject.tyboot.core.rdbms.annotation.Operator;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import static com.yeejoin.amos.boot.biz.common.service.impl.WorkflowExcuteServiceImpl.buildOrderNo;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
......@@ -56,12 +35,7 @@ public class JyjcInspectionApplicationController extends BaseController {
@Autowired
JyjcInspectionApplicationServiceImpl jyjcInspectionApplicationServiceImpl;
@Autowired
JyjcInspectionApplicationAttachmentServiceImpl jyjcInspectionApplicationAttachmentService;
@Autowired
JyjcInspectionApplicationEquipServiceImpl jyjcInspectionApplicationEquipService;
@Autowired
WorkflowFeignService workflowFeignService;
/**
* 新增
......@@ -73,81 +47,9 @@ public class JyjcInspectionApplicationController extends BaseController {
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<JyjcInspectionApplicationModel> save(@RequestBody JyjcInspectionApplicationModel model) {
//开启报检流程工作流
if ( !model.getOperationType().equals("2")){
if (model.getOperationType().equals("0")){
JSONObject body = new JSONObject();
String businessKey = buildOrderNo();
body.put(WorkFlowEnum.BUSINESSKEY.getCode(), businessKey);
body.put(WorkFlowEnum.processDefinitionKey.getCode(), model.getProcessKey());
JSONObject jsonObject = workflowFeignService.startProcess(body);
String processId = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("result"))).getString("id");
model.setProcessInstanceId(processId);
model.setStatus("已提交");
}else if ( model.getOperationType().equals("1")){
model.setStatus("草稿");
}
model = jyjcInspectionApplicationServiceImpl.createWithModel(model);
//保存报检装备监管码
if ( model.getEquip().size() > 0){
List<Map<String, Object>> equip = model.getEquip();
List<String> jgm = equip.stream().map(e -> e.get("equipUnicode").toString()).collect(Collectors.toList());
for (String s : jgm) {
JyjcInspectionApplicationEquip equipInfo = new JyjcInspectionApplicationEquip();
equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfo.setEquipUnicode(s);
jyjcInspectionApplicationEquipService.save(equipInfo);
}
}
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件保存
List<String> enumNameList = DocumentEnum.getEnumNameList();
List<JyjcInspectionApplicationAttachmentModel> attachmentModels = new ArrayList<>();
for (String code : enumNameList) {
if (map.containsKey(code)){
JyjcInspectionApplicationAttachment attachments = new JyjcInspectionApplicationAttachment();
attachments.setAttachmentType(code);
attachments.setAttachmentUrl(JSONObject.toJSONString(map.get(code)));
attachments.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationAttachmentService.getBaseMapper().insert(attachments);
}
}
}else {
//更新报检装备监管码
jyjcInspectionApplicationEquipService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
if ( model.getEquip().size() > 0){
List<Map<String, Object>> equip = model.getEquip();
List<String> jgm = equip.stream().map(e -> e.get("equipUnicode").toString()).collect(Collectors.toList());
for (String s : jgm) {
JyjcInspectionApplicationEquip equipInfo = new JyjcInspectionApplicationEquip();
equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfo.setEquipUnicode(s);
jyjcInspectionApplicationEquipService.save(equipInfo);
}
}
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件更新
List<String> enumNameList = DocumentEnum.getEnumNameList();
List<JyjcInspectionApplicationAttachmentModel> attachmentModels = new ArrayList<>();
jyjcInspectionApplicationAttachmentService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
for (String code : enumNameList) {
if (map.containsKey(code)){
JyjcInspectionApplicationAttachment attachments = new JyjcInspectionApplicationAttachment();
attachments.setAttachmentType(code);
attachments.setAttachmentUrl(JSONObject.toJSONString(map.get(code)));
attachments.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationAttachmentService.getBaseMapper().insert(attachments);
}
}
model.setStatus("已提交");
jyjcInspectionApplicationServiceImpl.updateWithModel(model);
}
return ResponseHelper.buildResponse(model);
ReginParams selectedOrgInfo = getSelectedOrgInfo();
model.setApplicationUnitCode(selectedOrgInfo.getCompany().getCompanyCode());
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.save(model));
}
......@@ -163,7 +65,6 @@ public class JyjcInspectionApplicationController extends BaseController {
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<JyjcInspectionApplicationModel> updateBySequenceNbrJyjcInspectionApplication(@RequestBody JyjcInspectionApplicationModel model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.updateWithModel(model));
}
......@@ -181,6 +82,25 @@ public class JyjcInspectionApplicationController extends BaseController {
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/deleteBatch")
@ApiOperation(httpMethod = "DELETE", value = "批量删除", notes = "批量删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, List<Long>sequenceNbr){
jyjcInspectionApplicationServiceImpl.deleteBatchData(sequenceNbr);
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.deleteBatchSeq(sequenceNbr));
}
/**
* 根据sequenceNbr查询
*
......@@ -190,8 +110,8 @@ public class JyjcInspectionApplicationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<JyjcInspectionApplicationModel> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.queryBySeq(sequenceNbr));
public ResponseModel<Map<String,Object>> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.selectBySeq(sequenceNbr));
}
/**
......@@ -260,4 +180,76 @@ public class JyjcInspectionApplicationController extends BaseController {
public ResponseModel<List<JyjcInspectionApplicationModel>> selectForList() {
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.queryForJyjcInspectionApplicationList());
}
/**
* 接收接口
*
*
* @param params params
* @return {@link ResponseModel< HashMap< String String>>}
* @author yangyang
* @throws
* @date 2023/12/15 11:25
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST",value = "接收", notes = "接收")
@PostMapping(value = "/flow/{type}/receive")
public ResponseModel<HashMap<String,String>> execueFlow(@PathVariable(value = "type") String type, @RequestBody Map<String, Object> params) {
params.put("type", type);
jyjcInspectionApplicationServiceImpl.doReceive(params);
HashMap<String,String> result =new HashMap<>();
result.put("result","success");
return ResponseHelper.buildResponse(result);
}
/**
* 退回接口(监督检验、定(首)检、检测)-通用
*
*
* @param params params
* @return {@link }
* @author yangyang
* @throws
* @date 2023/12/15 13:44
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "退回", notes = "退回")
@PostMapping(value = "/flow/reject")
public void doRejectFlow(@RequestBody Map<String,Object> params) {
jyjcInspectionApplicationServiceImpl.doReject(params);
}
/**
* 撤回接口(监督检验、定(首)检、检测)-通用
*
*
* @param instanceId instanceId
* @return {@link }
* @author yangyang
* @throws
* @date 2023/12/15 13:39
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "撤回", notes = "撤回")
@GetMapping(value = "/flow/rollback")
public void doRollbackFlow(@RequestParam("instanceId") String instanceId) {
jyjcInspectionApplicationServiceImpl.doRollback(instanceId);
}
/**
* 查询指定设备种类的设备列表
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "查询指定设备种类的设备列表", notes = "查询指定设备种类的设备列表")
@GetMapping(value = "/listByCategory")
public ResponseModel<Page<JyjcInspectionApplicationEquipModel>> listByCategory(
@RequestParam("current") int current,
@RequestParam("size") int size,
@RequestParam("equipClassify") String equipClassify) {
Page<JyjcInspectionApplicationEquipModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.listByCategory(page,equipClassify));
}
}
......@@ -18,8 +18,6 @@ import java.util.List;
import java.util.Map;
/**
*
*
* @author system_generator
* @date 2023-12-14
*/
......@@ -37,28 +35,28 @@ public class JyjcInspectionResultController extends BaseController {
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<JyjcInspectionResultModel> save(@RequestBody JyjcInspectionResultModel model) {
model = jyjcInspectionResultServiceImpl.createWithModel(model);
return ResponseHelper.buildResponse(model);
}
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<JyjcInspectionResultModel> save(@RequestBody JyjcInspectionResultModel model) {
model = jyjcInspectionResultServiceImpl.createWithModel(model);
return ResponseHelper.buildResponse(model);
}
/**
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<JyjcInspectionResultModel> updateBySequenceNbrJyjcInspectionResult(@RequestBody JyjcInspectionResultModel model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.updateWithModel(model));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<JyjcInspectionResultModel> updateBySequenceNbrJyjcInspectionResult(@RequestBody JyjcInspectionResultModel model, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.updateWithModel(model));
}
/**
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
......@@ -67,75 +65,76 @@ public class JyjcInspectionResultController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<Map<String, Object>> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryDetailBySeq(sequenceNbr));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<Map<String, Object>> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryDetailBySeq(sequenceNbr));
}
/**
* 列表全部数据查询
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<JyjcInspectionResultModel>> selectForList() {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultList());
}
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<JyjcInspectionResultModel>> selectForList() {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultList());
}
/**
* 列表页面(报检单位)
*
* @param current 当前页
* @param size 当前页大小
* @param model 查询参数
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/applicationUnitPage")
@ApiOperation(httpMethod = "GET", value = "列表页面(报检单位)", notes = "列表页面(报检单位)")
public ResponseModel<Page<JyjcInspectionResultModel>> applicationUnitQueryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size, JyjcInspectionResultModel model) {
Page<JyjcInspectionResultModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultPage(page, model, false));
}
/**
* 列表页面(报检单位)
*
* @param current 当前页
* @param size 当前页大小
* @param model 查询参数
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/applicationUnitPage")
@ApiOperation(httpMethod = "Post", value = "列表页面(报检单位)", notes = "列表页面(报检单位)")
public ResponseModel<Page<JyjcInspectionResultModel>> applicationUnitQueryForPage(
@RequestParam int current, @RequestParam int size,
@RequestBody JyjcInspectionResultModel model) {
Page<JyjcInspectionResultModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultPage(page, model, false));
}
/**
* 列表页面(检验检测单位)
*
* @param current 当前页
* @param size 当前页大小
* @param model 查询参数
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/inspectionUnitPage")
@ApiOperation(httpMethod = "POST", value = "列表页面(检验检测单位)", notes = "列表页面(检验检测单位)")
public ResponseModel<Page<JyjcInspectionResultModel>> inspectionUnitQueryForPage(
@RequestParam int current, @RequestParam int size,
@RequestBody JyjcInspectionResultModel model) {
Page<JyjcInspectionResultModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultPage(page, model, true));
}
/**
* 列表页面(检验检测单位)
*
* @param current 当前页
* @param size 当前页大小
* @param model 查询参数
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/inspectionUnitPage")
@ApiOperation(httpMethod = "GET", value = "列表页面(检验检测单位)", notes = "列表页面(检验检测单位)")
public ResponseModel<Page<JyjcInspectionResultModel>> inspectionUnitQueryForPage(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size, JyjcInspectionResultModel model) {
Page<JyjcInspectionResultModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.queryForJyjcInspectionResultPage(page, model, true));
}
/**
* 检验结果-上传结果和编辑结果
......@@ -145,7 +144,21 @@ public class JyjcInspectionResultController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/updateResult")
@ApiOperation(httpMethod = "PUT", value = "检验结果-上传结果和编辑结果", notes = "检验结果-上传结果和编辑结果")
public ResponseModel<JyjcInspectionResultModel> updateJyjcInspectionResult(@RequestBody JyjcInspectionResultModel model) {
public ResponseModel<JyjcInspectionResultModel> updateJyjcInspectionResult(@RequestBody Map<String, Map<String, Object>> model) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.updateJyjcInspectionResult(model));
}
/**
* 获取设备种类列表
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "获取设备种类列表", notes = "获取设备种类列表")
@GetMapping(value = "/equipTypeList")
public ResponseModel<List<Map<String, Object>>> equipTypeList(@RequestParam(required = false) String type, @RequestParam(required = false) String notNode) {
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.equipList(type, notNode));
}
}
......@@ -6,6 +6,8 @@ import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import java.util.List;
import java.util.Map;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionResultParamServiceImpl;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
......@@ -113,4 +115,16 @@ public class JyjcInspectionResultParamController extends BaseController {
public ResponseModel<List<JyjcInspectionResultParamModel>> selectForList() {
return ResponseHelper.buildResponse(jyjcInspectionResultParamServiceImpl.queryForJyjcInspectionResultParamList());
}
/**
* 获取某一类设备的技术参数
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "获取某一类设备的技术参数", notes = "获取某一类设备的技术参数")
@GetMapping(value = "/getParamByEquipTypeCode")
public ResponseModel<List<Map<String,Object>>> getParamByEquipTypeCode(@RequestParam String equipTypeCode) {
return ResponseHelper.buildResponse(jyjcInspectionResultParamServiceImpl.getParamByEquipTypeCode(equipTypeCode));
}
}
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import cn.hutool.core.map.MapBuilder;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcOpeningApplication;
import com.yeejoin.amos.boot.module.jyjc.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationRequstDto;
import com.yeejoin.amos.boot.module.jyjc.biz.config.BaseException;
import com.yeejoin.amos.feign.privilege.Privilege;
......@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcOpeningApplicationServiceImpl;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -25,10 +27,7 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcOpeningApplicationModel;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -97,6 +96,11 @@ public class JyjcOpeningApplicationController extends BaseController {
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
JyjcOpeningApplication jyjcOpeningApplication = jyjcOpeningApplicationServiceImpl.getById(sequenceNbr);
List<String> status = Arrays.asList(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()),String.valueOf(FlowStatusEnum.REJECTED.getCode()));
if(status.contains(jyjcOpeningApplication.getStatus())){
throw new BadRequest("除撤回跟驳回的流程之外其余流程不可删除!");
}
return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.removeById(sequenceNbr));
}
......@@ -110,7 +114,7 @@ public class JyjcOpeningApplicationController extends BaseController {
@DeleteMapping(value = "batchDelete")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(@RequestParam(value = "sequenceNbrList") List<Long> sequenceNbrList){
return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.deleteBatchSeq(sequenceNbrList));
return ResponseHelper.buildResponse(jyjcOpeningApplicationServiceImpl.deleteBatchByIds(sequenceNbrList));
}
/**
......@@ -201,8 +205,8 @@ public class JyjcOpeningApplicationController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "撤回业务开通申请", notes = "撤回业务开通申请")
@GetMapping(value = "/rollBackFlow")
public void overflow( @RequestParam("instanceId") String instanceId) {
jyjcOpeningApplicationServiceImpl.stopFlow(instanceId);
public void overflow( @RequestParam("sequenceNbr") String sequenceNbr) {
jyjcOpeningApplicationServiceImpl.stopFlow(sequenceNbr);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
......
......@@ -5,9 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
......@@ -26,6 +27,10 @@ public class CommonserviceImpl {
@Autowired
TzsUserInfoMapper userInfoMapper;
@Autowired
TzBaseEnterpriseInfoMapper enterpriseInfoMapper;
public static final String UNIT_TYPE = "检验检测机构";
/**
* @return ReginParams
......@@ -43,4 +48,8 @@ public class CommonserviceImpl {
List<TzsUserInfo> userInfos = userInfoMapper.selectList(userInfoQueryWrapper);
return userInfos;
}
public List<TzBaseEnterpriseInfo> getInspectionUnitList() {
return enterpriseInfoMapper.getInspectionUnitList(UNIT_TYPE);
}
}
......@@ -4,9 +4,13 @@ import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEqu
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationEquipMapper;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationEquipService;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.Collections;
import java.util.List;
/**
......@@ -30,4 +34,13 @@ public class JyjcInspectionApplicationEquipServiceImpl extends BaseService<JyjcI
public List<JyjcInspectionApplicationEquipModel> queryForJyjcInspectionApplicationEquipList() {
return this.queryForList("" , false);
}
public List<JyjcInspectionApplicationEquipModel> listApplicationEquipByApplicationSeq(Long applicationSeq) {
// this.queryForList 尽量不要重载方法
List<JyjcInspectionApplicationEquip> entitys = this.lambdaQuery().eq(JyjcInspectionApplicationEquip::getApplicationSeq, applicationSeq).list();
if (ValidationUtil.isEmpty(entitys)) {
return Collections.EMPTY_LIST;
}
return Bean.toModels(entitys, JyjcInspectionApplicationEquipModel.class);
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationPushLog;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationPushLogMapper;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationPushLogService;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationPushLogModel;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import java.util.Map;
/**
* 服务实现类
......@@ -30,4 +34,26 @@ public class JyjcInspectionApplicationPushLogServiceImpl extends BaseService<Jyj
public List<JyjcInspectionApplicationPushLogModel> queryForJyjcInspectionApplicationPushLogList() {
return this.queryForList("" , false);
}
/**
* 记录日志
*
*
* @param params params
* @return {@link boolean}
* @author yangyang
* @throws
* @date 2023/12/15 15:53
*/
public boolean saveInspectionApplicationPushLog(Map<String, Object> params) {
JyjcInspectionApplicationModel inspectionApplicationModel = (JyjcInspectionApplicationModel) params.get("inspectionApplication");
List<JyjcInspectionApplicationEquipModel> applicationEquipModels = (List<JyjcInspectionApplicationEquipModel>) params.get("applicationEquips");
JyjcInspectionApplicationPushLog logEntity = new JyjcInspectionApplicationPushLog();
logEntity.setApplicationSeq(inspectionApplicationModel.getSequenceNbr());
logEntity.setInspectionUnitCode(inspectionApplicationModel.getInspectionUnitCode());
logEntity.setPushData(JSON.toJSONString(applicationEquipModels));
logEntity.setPushStatus("0");
return this.save(logEntity);
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapBuilder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.enums.WorkFlowEnum;
import com.yeejoin.amos.boot.biz.common.workflow.feign.WorkflowFeignService;
import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplication;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.api.enums.DocumentEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationMapper;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationService;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationAttachmentModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationEquipModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionApplicationModel;
import org.typroject.tyboot.core.rdbms.annotation.Condition;
import org.typroject.tyboot.core.rdbms.annotation.Operator;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationService;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler.JyjcInspectionApplicationHandlerFactory;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.service.ICreateCodeService;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import com.yeejoin.amos.feign.workflow.model.TaskResultDTO;
import lombok.extern.slf4j.Slf4j;
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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import org.springframework.web.bind.annotation.RequestBody;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.*;
import java.util.stream.Collectors;
import static com.yeejoin.amos.boot.biz.common.service.impl.WorkflowExcuteServiceImpl.buildOrderNo;
/**
* 服务实现类
......@@ -18,33 +50,312 @@ import java.util.List;
* @date 2023-12-14
*/
@Service
public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspectionApplicationModel,JyjcInspectionApplication,JyjcInspectionApplicationMapper> implements IJyjcInspectionApplicationService {
@Slf4j
public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspectionApplicationModel, JyjcInspectionApplication, JyjcInspectionApplicationMapper> implements IJyjcInspectionApplicationService {
@Autowired
private JyjcInspectionResultServiceImpl inspectionResultService;
@Autowired
private JyjcInspectionApplicationEquipServiceImpl applicationEquipService;
@Autowired
private ICreateCodeService createCodeService;
@Autowired
private WorkflowHelper workflowHelper;
/**
* 分页查询
*/
@Autowired
JyjcInspectionApplicationAttachmentServiceImpl jyjcInspectionApplicationAttachmentService;
@Autowired
JyjcInspectionApplicationEquipServiceImpl jyjcInspectionApplicationEquipService;
@Autowired
JyjcInspectionApplicationPushLogServiceImpl jyjcInspectionApplicationPushLogService;
@Autowired
JyjcInspectionEquipStatisticsServiceImpl jyjcInspectionEquipStatisticsService;
@Autowired
WorkflowFeignService workflowFeignService;
public JyjcInspectionApplicationModel save(@RequestBody JyjcInspectionApplicationModel model) {
//开启报检流程工作流
if (!model.getOperationType().equals("2")) {
if (model.getOperationType().equals("0")) {
JSONObject body = new JSONObject();
String businessKey = buildOrderNo();
body.put(WorkFlowEnum.BUSINESSKEY.getCode(), businessKey);
body.put(WorkFlowEnum.processDefinitionKey.getCode(), model.getProcessKey());
JSONObject jsonObject = workflowFeignService.startByVariable(body);
String processId = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("data"))).getString("id");
model.setProcessInstanceId(processId);
model.setStatus("已提交");
} else if (model.getOperationType().equals("1")) {
model.setStatus("草稿");
}
model.setApplicationNo(UUID.randomUUID().toString());
model.setApplicationDate(new Date());
model = this.createWithModel(model);
//保存报检装备监管码
if (null != model.getEquip()&&model.getEquip().size() > 0) {
List<Map<String, Object>> equip = model.getEquip();
List<String> jgm = equip.stream().map(e -> e.get("equipUnicode").toString()).collect(Collectors.toList());
for (String s : jgm) {
JyjcInspectionApplicationEquip equipInfo = new JyjcInspectionApplicationEquip();
equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfo.setEquipUnicode(s);
jyjcInspectionApplicationEquipService.save(equipInfo);
}
}
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件保存
List<String> enumNameList = DocumentEnum.getEnumNameList();
List<JyjcInspectionApplicationAttachmentModel> attachmentModels = new ArrayList<>();
for (String code : enumNameList) {
if (map.containsKey(code)) {
JyjcInspectionApplicationAttachment attachments = new JyjcInspectionApplicationAttachment();
attachments.setAttachmentType(code);
attachments.setAttachmentUrl(JSONObject.toJSONString(map.get(code)));
attachments.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationAttachmentService.getBaseMapper().insert(attachments);
}
}
} else {
//更新报检装备监管码
jyjcInspectionApplicationEquipService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
if (model.getEquip().size() > 0) {
List<Map<String, Object>> equip = model.getEquip();
List<String> jgm = equip.stream().map(e -> e.get("equipUnicode").toString()).collect(Collectors.toList());
for (String s : jgm) {
JyjcInspectionApplicationEquip equipInfo = new JyjcInspectionApplicationEquip();
equipInfo.setApplicationSeq(model.getSequenceNbr());
equipInfo.setEquipUnicode(s);
jyjcInspectionApplicationEquipService.save(equipInfo);
}
}
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件更新
List<String> enumNameList = DocumentEnum.getEnumNameList();
List<JyjcInspectionApplicationAttachmentModel> attachmentModels = new ArrayList<>();
jyjcInspectionApplicationAttachmentService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
for (String code : enumNameList) {
if (map.containsKey(code)) {
JyjcInspectionApplicationAttachment attachments = new JyjcInspectionApplicationAttachment();
attachments.setAttachmentType(code);
attachments.setAttachmentUrl(JSONObject.toJSONString(map.get(code)));
attachments.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationAttachmentService.getBaseMapper().insert(attachments);
}
}
model.setStatus("已提交");
this.updateWithModel(model);
}
return model;
}
public void deleteBatchData(List<Long> sequenceNbr) {
List<JyjcInspectionApplication> jyjcInspectionApplications = this.getBaseMapper().selectBatchIds(sequenceNbr);
long count = jyjcInspectionApplications.stream().filter(e -> !e.getStatus().equals("已撤销") && !e.getStatus().equals("已撤回")).count();
if (count > 0) {
throw new BadRequest("存在 非已撤销、已退回状态的报检单 不可删除!");
}
this.deleteBatchSeq(sequenceNbr);
for (Long seq : sequenceNbr) {
jyjcInspectionApplicationEquipService.getBaseMapper().deleteByApplicationSeq(seq);
jyjcInspectionApplicationAttachmentService.getBaseMapper().deleteByApplicationSeq(seq);
jyjcInspectionApplicationPushLogService.getBaseMapper().deleteByApplicationSeq(seq);
jyjcInspectionEquipStatisticsService.getBaseMapper().deleteByApplicationSeq(seq);
}
}
public Page<JyjcInspectionApplicationEquipModel> listByCategory(Page<JyjcInspectionApplicationEquipModel> page,String equipClassify) {
return getBaseMapper().listByCategory(page,equipClassify);
}
public Page<JyjcInspectionApplication> queryForJyjcInspectionApplicationPage(Page<JyjcInspectionApplication> page,
String applicationNo,
String inspectionClassify,
String applicationUnitCode,
String equipClassify,
String inspectionUnitCode,
String applicationUnitName,
String inspectionUnitName,
String applicationDate,
String acceptDate,
String inspectionChargePerson,
String status , String bizType) {
String applicationNo,
String inspectionClassify,
String applicationUnitCode,
String equipClassify,
String inspectionUnitCode,
String applicationUnitName,
String inspectionUnitName,
String applicationDate,
String acceptDate,
String inspectionChargePerson,
String status, String bizType) {
return this.getBaseMapper().queryForDataList(page,applicationNo,inspectionClassify,applicationUnitCode,applicationUnitName,equipClassify,inspectionUnitCode,inspectionUnitName,applicationDate,acceptDate,inspectionChargePerson,status,bizType);
return this.getBaseMapper().queryForDataList(page, applicationNo, inspectionClassify, applicationUnitCode, applicationUnitName, equipClassify, inspectionUnitCode, inspectionUnitName, applicationDate, acceptDate, inspectionChargePerson, status, bizType);
}
/**
* 列表查询 示例
*/
public List<JyjcInspectionApplicationModel> queryForJyjcInspectionApplicationList() {
return this.queryForList("" , false);
public List<JyjcInspectionApplicationModel> queryForJyjcInspectionApplicationList() {
return this.queryForList("", false);
}
public Map<String,Object> selectBySeq(Long sequenceNbr) {
JyjcInspectionApplicationModel model = this.getBaseMapper().selectDataBySeq(sequenceNbr);
Map<String, Object> map = BeanUtil.beanToMap(model);
List<Map<String, Object>> dataByApplicationSeq = jyjcInspectionApplicationAttachmentService.getBaseMapper().getDataByApplicationSeq(sequenceNbr);
Map<String, Object> attMap = new HashMap<>();
for (Map<String, Object> maps : dataByApplicationSeq) {
List<AttachmentDto> data = JSONArray.parseArray(maps.get("attachment_url").toString(), AttachmentDto.class);
attMap.put(maps.get("attachment_type").toString(),data);
}
map.putAll(attMap);
return map;
}
/**
* 接收
*
*
* @param params params
* @return {@link }
* @author yangyang
* @throws
* @date 2023/12/15 15:14
*/
public void doReceive(Map<String, Object> params) {
execueFlow(params);
// 执行接收业务
String type = (String) params.get("type");
Long sequenceNbr = (Long) params.get("sequenceNbr");
JyjcInspectionApplicationModel inspectionApplicationModel = this.queryBySeq(sequenceNbr);
List<JyjcInspectionApplicationEquipModel> applicationEquipModels = applicationEquipService.listApplicationEquipByApplicationSeq(sequenceNbr);
if (ValidationUtil.isEmpty(applicationEquipModels)) {
return;
}
List<JyjcInspectionResult> resultModels = new ArrayList(applicationEquipModels.size());
List<String> codes = createCodeService.createApplicationFormCode(ApplicationFormTypeEnum.JG.getCode(), applicationEquipModels.size());
for (int i = 0; i < applicationEquipModels.size(); i++) {
JyjcInspectionResult resultModel = new JyjcInspectionResult();
resultModel.setInspectionUnitCode(inspectionApplicationModel.getInspectionUnitCode());
resultModel.setApplicationNo(inspectionApplicationModel.getApplicationNo());
resultModel.setApplicationUnitCode(inspectionApplicationModel.getApplicationUnitCode());
resultModel.setResultStatus("未出");
resultModel.setApplicationDate(inspectionApplicationModel.getApplicationDate());
// 解析设备
resultModel.setBizType(inspectionApplicationModel.getBizType());
resultModel.setResultNo(codes.get(i));
resultModel.setEquipUnicode(applicationEquipModels.get(i).getEquipUnicode());//设备唯一标识
}
inspectionResultService.saveOrUpdateBatch(resultModels);
// 通知对应的检验机构
Map<String, Object> thiryPartParams = MapBuilder.<String, Object>create().put("inspectionApplication", inspectionApplicationModel).put("applicationEquips", applicationEquipModels).build();
JyjcInspectionApplicationHandlerFactory.apply(type).notifyInspectionUnit(thiryPartParams);
}
/**
* 退回
*
*
* @param params params
* @return {@link }
* @author yangyang
* @throws
* @date 2023/12/15 15:14
*/
public void doReject(Map<String, Object> params) {
execueFlow(params);
String instanceId = Optional.ofNullable(params.get("instanceId")).orElse("").toString();
params.put("status", FlowStatusEnum.REJECTED.getCode() + "");
updateModelByInstanceId(instanceId, params);
}
/**
* 接收/驳回通知检验单
*/
public void execueFlow(Map<String, Object> params) {
String op = params.get("op").toString();
String instanceId = params.get("instanceId").toString();
String comments= params.get("comments").toString();
try {
AjaxResult ajaxResult = Workflow.taskClient.getTask(instanceId);
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");
//组装信息
TaskResultDTO dto = new TaskResultDTO();
dto.setResultCode("approvalStatus");
dto.setTaskId(taskId);
HashMap<String,Object> varibalble = new HashMap<>();
varibalble.put("approvalStatus",op);
dto.setVariable(varibalble);
dto.setComment(comments);
// 执行流程
AjaxResult ajaxResult1 = Workflow.taskClient.completeByTask(taskId, dto);
if (ObjectUtils.isEmpty(ajaxResult1)) {
}
} catch (Exception e) {
e.printStackTrace();
log.error("执行工作流错误, => {}", params, e);
}
}
/**
* 撤回流程办理单
*/
public void doRollback(String instanceId) {
try {
// 撤回流程
FeignClientResult feignClientResult =new FeignClientResult();
if (ObjectUtils.isEmpty(feignClientResult)) {
}
updateModelByInstanceId(instanceId, MapBuilder.<String, Object>create().put("status", FlowStatusEnum.REJECTED.getCode() + "").build());
} catch (Exception e) {
e.printStackTrace();
log.error("撤回工作流错误, => {}", instanceId, e);
}
}
public void updateModelByInstanceId(String instanceId, Map<String, Object> params) {
JyjcInspectionApplication entity = this.lambdaQuery().eq(JyjcInspectionApplication::getProcessInstanceId, instanceId).one();
if (entity == null) {
return;
}
String status = (String) params.get("status");
String inspectionChargePerson = (String) params.get("inspectionChargePerson");
String inspectionChargePhone = (String) params.get("inspectionChargePhone");
String processDescription = (String) params.get("comments");
if (StringUtils.isNotBlank(inspectionChargePerson)) {
entity.setInspectionChargePerson(inspectionChargePerson);
}
if (StringUtils.isNotBlank(inspectionChargePhone)) {
entity.setInspectionChargePhone(inspectionChargePhone);
}
if (StringUtils.isNotBlank(processDescription)) {
entity.setProcessDescription(processDescription);
}
JSONObject taskJson = workflowHelper.getTask(instanceId);
if (taskJson == null) {
log.warn("流程=>{}查询不到或已结束", instanceId);
return;
}
entity.setWorkflowRole(workflowHelper.getWorkflowRoleGroups(taskJson));
entity.setWorkflowNode(taskJson.getString("taskDefinitionKey"));
// entity.setWorkflowActiveKey();
entity.setStatus(status);
// entity.setStatusName(FlowStatusEnum.getNameByType(Long.parseLong(status)));
this.updateById(entity);
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.jyjc.api.common.StringUtil;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionResultParamMapper;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamService;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultParamModel;
import com.yeejoin.amos.boot.module.jyjc.biz.utils.JsonUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 检验结果技术参数表服务实现类
......@@ -18,6 +26,10 @@ import java.util.List;
*/
@Service
public class JyjcInspectionResultParamServiceImpl extends BaseService<JyjcInspectionResultParamModel,JyjcInspectionResultParam,JyjcInspectionResultParamMapper> implements IJyjcInspectionResultParamService {
@Value("classpath:/json/equipParam.json")
private Resource equipParam;
/**
* 分页查询
*/
......@@ -38,4 +50,14 @@ public class JyjcInspectionResultParamServiceImpl extends BaseService<JyjcInspec
wrapper.eq(JyjcInspectionResultParam::getResultSeq, sequenceNbr);
return this.baseMapper.selectList(wrapper);
}
@Override
public List<Map<String, Object>> getParamByEquipTypeCode(String equipTypeCode) {
List<Map<String, Object>> paramList = new ArrayList<>();
Map<String, List<Map<String, Object>>> paramJson = JsonUtils.getResourceJson(equipParam);
if (StringUtil.isNotEmpty(equipTypeCode)) {
paramList = ObjectUtils.isEmpty(paramJson.get(equipTypeCode)) ? new ArrayList<>() : paramJson.get(equipTypeCode);
}
return paramList;
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jyjc.api.common.StringUtil;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam;
......@@ -16,16 +17,22 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultAttachmentService;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultParamService;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionResultService;
import com.yeejoin.amos.boot.module.jyjc.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -44,6 +51,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
private IJyjcInspectionResultParamService iJyjcInspectionResultParamService;
@Autowired
EquipmentCategoryMapper equipmentCategoryMapper;
@Value("classpath:/json/equipCategory.json")
private Resource equipCategory;
@Autowired
JyjcInspectionResultMapper resultMapper;
@Autowired
......@@ -59,6 +72,9 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
public Page<JyjcInspectionResultModel> queryForJyjcInspectionResultPage(Page<JyjcInspectionResultModel> page, JyjcInspectionResultModel model, boolean type) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(),
RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(model)) {
model = new JyjcInspectionResultModel();
}
if (type) {
//检验检测单位分页查询
model.setInspectionUnitCode(reginParams.getCompany().getCompanyCode());
......@@ -77,12 +93,32 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
}
public JyjcInspectionResultModel updateJyjcInspectionResult(JyjcInspectionResultModel model) {
public JyjcInspectionResultModel updateJyjcInspectionResult(Map<String, Map<String, Object>> tableModel) {
Map<String, Object> map = tableModel.get("inspectResult");
JyjcInspectionResultModel model = BeanUtil.mapToBean(map, JyjcInspectionResultModel.class, true);
updateWithModel(model);
if (ObjectUtil.isNotEmpty(model.getResultAttachmentModel()))
attachmentService.createWithModel(model.getResultAttachmentModel());
if (ObjectUtil.isNotEmpty(model.getResultParamModel()))
resultParamService.createWithModel(model.getResultParamModel());
List<JyjcInspectionResultAttachment> attachmentList = new ArrayList<>();
map.forEach((k, v) -> {
if (k.contains("JYJC_") && !ObjectUtils.isEmpty(map.get(k))) {
JyjcInspectionResultAttachment attachment = new JyjcInspectionResultAttachment();
attachment.setResultSeq(model.getSequenceNbr());
attachment.setAttachmentUrl(JSON.toJSONString(map.get(k)));
attachment.setAttachmentType(k);
attachmentList.add(attachment);
}
});
if (!CollectionUtils.isEmpty(attachmentList)) {
attachmentService.saveBatch(attachmentList);
}
if (!CollectionUtils.isEmpty(model.getResultParamModelMap())){
JyjcInspectionResultParam resultParam = new JyjcInspectionResultParam();
resultParam.setResultSeq(model.getSequenceNbr());
resultParam.setParamJson(JSON.toJSONString(model.getResultParamModelMap()));
resultParamService.save(resultParam);
}
return model;
}
......@@ -105,7 +141,12 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
// 获取附件
List<JyjcInspectionResultAttachment> attachmentList = iJyjcInspectionResultAttachmentService.getObjByResultSeq(sequenceNbr);
if (!CollectionUtils.isEmpty(attachmentList)) {
Map<String, Object> attachmentMap = attachmentList.stream().collect(Collectors.toMap(JyjcInspectionResultAttachment::getAttachmentType, JyjcInspectionResultAttachment::getAttachmentUrl));
Map<String, Object> attachmentMap = attachmentList.stream().map(obj -> {
if (StringUtil.isNotEmpty(obj.getAttachmentUrl())) {
obj.setAttachmentUrlList(JSONArray.parseArray(obj.getAttachmentUrl()));
}
return obj;
}).collect(Collectors.toMap(JyjcInspectionResultAttachment::getAttachmentType, JyjcInspectionResultAttachment::getAttachmentUrlList));
map.putAll(attachmentMap);
}
......@@ -121,6 +162,36 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
map.put("paramJson", mapParam);
}
}
return map;
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("inspectResult", map);
return resultMap;
}
@Override
public List<Map<String, Object>> equipList(String type, String notNode) {
List<Map<String, Object>> menus = new ArrayList<>();
Map<String, List<Map<String, Object>>> resourceJson = JsonUtils.getResourceJson(equipCategory);
List<Map<String, Object>> mapList;
if (ValidationUtil.isEmpty(type)) {
mapList = resourceJson.get(EquipmentClassifityEnum.BDLS.getCode());
} else {
mapList = resourceJson.get(type);
}
mapList.stream().filter(map -> {
if (!ObjectUtils.isEmpty(notNode)) {
String[] code = notNode.split(",");
List<String> codeList = Arrays.asList(code);
return !codeList.contains(map.get("code"));
}
return true;
}).forEach(obj -> {
Map<String, Object> resultMap = new HashMap<>(2);
resultMap.put("instanceName", obj.get("name"));
resultMap.put("instanceId", obj.get("code"));
menus.add(resultMap);
});
return menus;
}
}
\ No newline at end of file
......@@ -25,9 +25,11 @@ import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseUnitLicenceDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseUnitLicenceMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.service.ICreateCodeService;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
......@@ -39,12 +41,15 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.expression.Ids;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
......@@ -64,7 +69,8 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
@Autowired
CommonserviceImpl commonserviceImpl;
@Autowired
private ICreateCodeService createCodeService;
@Autowired
JyjcOpeningApplicationMapper jyjcOpeningApplicationMapper;
......@@ -95,7 +101,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
try {
if (enableStartFlow) {
// 开启工作流 startProcess
String instanceId = startFlow();
String instanceId = startFlow("1");
JSONObject dataObject = getTask(instanceId);
JSONArray executorArray = dataObject.getJSONObject("nodeInfo").getJSONArray("executor");
if (!ValidationUtil.isEmpty(executorArray)) {
......@@ -117,9 +123,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
if (model.getSequenceNbr() == null) {
CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany();
model.setUnitCode(companyBo.getCompanyCode());
model.setUnitCode("91611103MAC4Q1EG7B");
model.setUnitCodeName(companyBo.getCompanyName());
model.setApplicationSeq(buildApplicationSeq());
List<String> codes = createCodeService.createApplicationFormCode(ApplicationFormTypeEnum.JY.getCode(), 1);
model.setApplicationSeq(codes.get(0));
return this.createWithModel(model);
} else {
return this.updateWithModel(model);
......@@ -187,9 +193,9 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
public Page<JyjcOpeningApplicationModel> querypageForCompany(Page<JyjcOpeningApplication> page, JyjcOpeningApplicationRequstDto jyjcOpeningApplicationRequstDto) {
//根据申请单中的单位信息对于列表数据进行过滤
CompanyBo companyBo = commonserviceImpl.getReginParamsOfCurrentUser().getCompany();
if (companyBo.getLevel().equals("company")) {
// if (companyBo.getLevel().equals("company")) {
jyjcOpeningApplicationRequstDto.setUnitCode(companyBo.getCompanyCode());
}
// }
String applyStartTime = "";
String applyEndTime = "";
......@@ -215,14 +221,16 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
if (ValidationUtil.isEmpty(reginParams.getCompany())) {
throw new RuntimeException("未指定人员归属单位信息");
}
String unitCode;
JyjcOpeningApplicationModel jyjcOpeningApplicationModel;
if (null != sequenceNbr) {
jyjcOpeningApplicationModel = this.queryBySeq(sequenceNbr);
unitCode = jyjcOpeningApplicationModel.getUnitCode();
} else {
jyjcOpeningApplicationModel = new JyjcOpeningApplicationModel();
unitCode = reginParams.getCompany().getCompanyCode();
}
String unitCode = reginParams.getCompany().getCompanyCode();
unitCode = "91611103MAC4Q1EG7B"; // 测试用,之后务必删除!!!
// unitCode = "91611103MAC4Q1EG7B"; // 测试用,之后务必删除!!!
QueryWrapper enterpriseInfoQueryWrapper = new QueryWrapper<>();
enterpriseInfoQueryWrapper.eq("use_code", unitCode);
TzBaseEnterpriseInfo baseUnitLicenceEntity = enterpriseInfoMapper.selectOne(enterpriseInfoQueryWrapper);
......@@ -249,10 +257,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
// unitLicenceQueryWrapper.eq("licence_type", LicenceTypeEnum.JYJC.getCode());
// List<TzBaseUnitLicenceDto> baseUnitLicences = Bean.toModels(unitLicenceMapper.selectList(unitLicenceQueryWrapper), TzBaseUnitLicenceDto.class );
//
List<TzBaseUnitLicenceDto> baseUnitLicences = baseMapper.selectBaseUnitLicenceList(MapBuilder.<String, Object>create()
.put("unitCode", unitCode)
// .put("licenceType", LicenceTypeEnum.JYJC.getCode())
.build());
List<TzBaseUnitLicenceDto> baseUnitLicences = baseMapper.selectBaseUnitLicenceList(MapBuilder.<String, Object>create().put("unitCode", unitCode).put("licenceType", "jyjc").build());
jyjcOpeningApplicationModel.setBaseUnitLicences(baseUnitLicences);
// 获取检验人员信息
QueryWrapper userInfoQueryWrapper = new QueryWrapper<>();
......@@ -281,11 +286,22 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
return jyjcOpeningApplicationModel;
}
public String startFlow() throws Exception {
public String startFlow(String businessKey) throws Exception {
// 重新开启工作流
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(processDefinitionKey);
dto.setBusinessKey("1");
dto.setBusinessKey(StringUtils.defaultString(businessKey, "1"));
// dto.setCompleteFirstTask(true);
// FeignClientResult ajaxResult = Workflow.taskV2Client.startByVariable(dto);
//
// if (log.isDebugEnabled()) {
// log.debug("开启工作流结果:{}", ajaxResult);
// }
// if (ajaxResult == null || 200 != ajaxResult.getStatus()) {
// throw new BaseException("开启工作流错误");
// }
// return ((Map) ajaxResult.getResult()).get("id").toString();
// V1
AjaxResult ajaxResult = Workflow.taskClient.startByVariable(dto);
if (log.isDebugEnabled()) {
log.debug("开启工作流结果:{}", ajaxResult);
......@@ -342,14 +358,15 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
/**
* 撤回流程办理单
*/
public void stopFlow(String instanceId) {
public void stopFlow(String sequenceNbr) {
JyjcOpeningApplication jyjcOpeningApplication = jyjcOpeningApplicationMapper.selectById(sequenceNbr);
try {
//撤回流程
JSONObject jsonObject = workflowFeignClient.rollBack(instanceId);
JSONObject jsonObject = workflowFeignClient.rollBack(jyjcOpeningApplication.getWorkflowProstanceId());
if (ObjectUtils.isEmpty(jsonObject)) {
}
updateModelByInstanceId(instanceId, FlowStatusEnum.ROLLBACK.getCode() + "");
updateModelByInstanceId(jyjcOpeningApplication.getWorkflowProstanceId(), FlowStatusEnum.ROLLBACK.getCode() + "");
} catch (Exception e) {
e.printStackTrace();
}
......@@ -375,34 +392,34 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
dataObject.put("nodeInfo", nodeInfo.getResult());
return dataObject;
}
/**
* JY+年(4位)+月(2位)+日(2位)+序列号(3位
*
* @param
* @return {@link java.lang.String}
* @throws
* @author yangyang
* @date 2023/12/13 22:30
*/
private String buildApplicationSeq() {
String sdf = new SimpleDateFormat("yyyyMMdd").format(new Date());
long increment = redisUtils.incr(CommonConstants.OPEN_APPLICATION_SEQ_KEY, 1);
if (increment == 0) {
redisUtils.expire(CommonConstants.OPEN_APPLICATION_SEQ_KEY, nextDay());
}
return CommonConstants.APPLICATION_SEQ_PREFIX + sdf + String.format("%03d", increment);
}
private long nextDay() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.DAY_OF_MONTH, 1);
return (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000;
}
//
// /**
// * JY+年(4位)+月(2位)+日(2位)+序列号(3位
// *
// * @param
// * @return {@link java.lang.String}
// * @throws
// * @author yangyang
// * @date 2023/12/13 22:30
// */
// private String buildApplicationSeq() {
// String sdf = new SimpleDateFormat("yyyyMMdd").format(new Date());
// long increment = redisUtils.incr(CommonConstants.OPEN_APPLICATION_SEQ_KEY, 1);
// if (increment == 0) {
// redisUtils.expire(CommonConstants.OPEN_APPLICATION_SEQ_KEY, nextDay());
// }
// return CommonConstants.APPLICATION_SEQ_PREFIX + sdf + String.format("%03d", increment);
// }
//
// private long nextDay() {
// Calendar calendar = Calendar.getInstance();
// calendar.set(Calendar.HOUR_OF_DAY, 0);
// calendar.set(Calendar.MINUTE, 0);
// calendar.set(Calendar.SECOND, 0);
// calendar.set(Calendar.MILLISECOND, 0);
// calendar.add(Calendar.DAY_OF_MONTH, 1);
// return (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000;
// }
public List<Map<String, Object>> selectForFlowStatusList() {
return Arrays.stream(FlowStatusEnum.values()).map(this::mapPointTypeToMap).collect(Collectors.toList());
......@@ -415,4 +432,15 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
return record;
}
public Boolean deleteBatchByIds(List<Long> ids){
List<JyjcOpeningApplication> jyjcOpeningApplicationList=jyjcOpeningApplicationMapper.selectList(new QueryWrapper<JyjcOpeningApplication>()
.in("sequence_nbr"));
List<String> status = Arrays.asList(String.valueOf(FlowStatusEnum.ROLLBACK.getCode()),String.valueOf(FlowStatusEnum.REJECTED.getCode()));
jyjcOpeningApplicationList = jyjcOpeningApplicationList.stream().filter(jyjcOpeningApplication ->!status.contains(jyjcOpeningApplication.getStatus())).collect(Collectors.toList());
if(jyjcOpeningApplicationList.isEmpty()){
throw new BadRequest("除撤回跟驳回的流程之外其余流程不可删除,请核对数据后重新提交!");
}
deleteBatchByIds(ids);
return true;
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.WorkflowFeignClient;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.AjaxResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.LinkedHashMap;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 15:46
*/
@Component
@Slf4j
public class WorkflowHelper {
@Autowired
private WorkflowFeignClient workflowFeignClient;
/**
* 获取工作流
*
*
* @param instanceId instanceId
* @return {@link JSONObject}
* @author yangyang
* @throws
* @date 2023/12/15 16:17
*/
public JSONObject getTask(String instanceId) {
AjaxResult ajaxResult = Workflow.taskClient.getTask(instanceId);
JSONObject dataObject = JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")));
String taskId = dataObject.getString("id");// 工作流ID
FeignClientResult<JSONObject> nodeInfo = workflowFeignClient.getNodeInfotoken(RequestContext.getAppKey(), RequestContext.getProduct(), RequestContext.getToken(), taskId);
dataObject.put("nodeInfo", nodeInfo.getResult());
return dataObject;
}
public String getWorkflowStatus(JSONObject dataObject) {
return !ValidationUtil.isEmpty(dataObject) && !ValidationUtil.isEmpty(dataObject.get("status")) ? String.valueOf(dataObject.get("status")) : "";
}
public String getWorkflowRoleGroups(JSONObject dataObject) {
JSONArray executorArray = dataObject.getJSONObject("nodeInfo").getJSONArray("executor");
if(!ValidationUtil.isEmpty(executorArray)) {
return executorArray.stream().map(json -> Optional.ofNullable(((LinkedHashMap) json).get("groupId")).orElse("").toString()).collect(Collectors.joining(","));
}
return null;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationHandlerService;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationPushLogServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:12
*/
@Component
public class AbstractJyjcInspectionApplicationHandlerServiceImpl implements IJyjcInspectionApplicationHandlerService {
@Autowired
private JyjcInspectionApplicationPushLogServiceImpl applicationPushLogService;
@Override
public String type() {
return "default";
}
@Override
public boolean notifyInspectionUnit(Map<String, Object> params) {
// push日志
applicationPushLogService.saveInspectionApplicationPushLog(params);
return true;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 检测
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:32
*/
@Component
public class DetectionInspectionApplicationHandlerServiceImpl extends AbstractJyjcInspectionApplicationHandlerServiceImpl {
@Override
public String type() {
return BizTypeEnum.DETECTION.getCode();
}
@Override
public boolean notifyInspectionUnit(Map<String, Object> params) {
super.notifyInspectionUnit(params);
// todo
return true;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 定检
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:32
*/
@Component
public class FirstInspectionApplicationHandlerServiceImpl extends AbstractJyjcInspectionApplicationHandlerServiceImpl {
@Override
public String type() {
return BizTypeEnum.FIRST_INSPECTION.getCode();
}
@Override
public boolean notifyInspectionUnit(Map<String, Object> params) {
super.notifyInspectionUnit(params);
// todo
return true;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationHandlerService;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @author yangyang
* @version v1.0
* @date 2023/11/8 15:10
*/
@Service
public class JyjcInspectionApplicationHandlerFactory implements ApplicationContextAware {
private static final Map<String, IJyjcInspectionApplicationHandlerService> SERVICE_POOL = new HashMap<>(12);
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
applicationContext.getBeansOfType(IJyjcInspectionApplicationHandlerService.class).forEach((beanName, bean) -> SERVICE_POOL.put(bean.type(), bean));
}
public static IJyjcInspectionApplicationHandlerService apply(String type) {
IJyjcInspectionApplicationHandlerService objectSceneService = SERVICE_POOL.get(type);
if (Objects.isNull(objectSceneService)) {
throw new IllegalArgumentException("SERVICE_POOL type: " + type + " is not found !");
}
return objectSceneService;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 监督检验
*
* <p>
* ProjectName: amos-boot-biz
* PackageName: com.yeejoin.amos.boot.module.jyjc.biz.service.impl.handler
*
* @author yangyang
* @version v1.0
* @date 2023/12/15 16:32
*/
@Component
public class SuperviseInspectionApplicationHandlerServiceImpl extends AbstractJyjcInspectionApplicationHandlerServiceImpl {
@Override
public String type() {
return BizTypeEnum.SUPERVISE.getCode();
}
@Override
public boolean notifyInspectionUnit(Map<String, Object> params) {
super.notifyInspectionUnit(params);
// todo
return true;
}
}
package com.yeejoin.amos.boot.module.jyjc.biz.utils;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.Resource;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Map;
public class JsonUtils {
//将json文件转化为Map<list<Map<>>>
public static Map getResourceJson(Resource resource) {
String json = null;
try {
json = IOUtils.toString(resource.getInputStream(), String.valueOf(StandardCharsets.UTF_8));
} catch (IOException e) {
throw new RuntimeException(resource + "json文件转化失败");
}
return JSONObject.parseObject(json, Map.class);
}
}
{
"eightCategory": [
{
"name": "电梯",
"code": "3000",
"image": "upload/tzs/common/image/总览电梯.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "elevator"
},
{
"name": "起重机械",
"code": "4000",
"image": "upload/tzs/common/image/总览起重机械.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "lifting"
},
{
"name": "场内机动车辆",
"code": "5000",
"image": "upload/tzs/common/image/总览厂车.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "vehicle"
},
{
"name": "锅炉",
"code": "1000",
"image": "upload/tzs/common/image/总览锅炉.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "boiler"
},
{
"name": "压力容器",
"code": "2000",
"image": "upload/tzs/common/image/总览压力容器.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "vessel"
},
{
"name": "压力管道",
"code": "8000",
"image": "upload/tzs/common/image/总览压力管道.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "pipeline"
},
{
"name": "大型游乐设施",
"code": "6000",
"image": "upload/tzs/common/image/总览游乐设施.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "rides"
},
{
"name": "客运索道",
"code": "9000",
"image": "upload/tzs/common/image/总览索道.png",
"waitClaim": "0",
"alreadyClaim": "0",
"refuseClaim": "0",
"sum": "0",
"type": "ropeway"
}
],
"other": [
{
"name": "电梯",
"code": "3000"
},
{
"name": "起重机械",
"code": "4000"
},
{
"name": "场内机动车辆",
"code": "5000"
},
{
"name": "锅炉",
"code": "1000"
},
{
"name": "压力容器",
"code": "2000"
},
{
"name": "压力管道",
"code": "8000"
},
{
"name": "大型游乐设施",
"code": "6000"
},
{
"name": "客运索道",
"code": "9000"
}
]
}
\ No newline at end of file
{
"3000": [
{
"label": "使用年限",
"key": "synx",
"type": "input"
},
{
"label": "控制方式",
"key": "kzfs",
"type": "select",
"data": [
{
"name": "选项1",
"value": "1"
},
{
"name": "选项1",
"value": "1"
}
]
}
],
"4000": [
{
"label": "使用年限4000",
"key": "synx",
"type": "input"
}
]
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.tcm.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@AllArgsConstructor
@Getter
public enum PersonManageRoleEnum {
/**
* 人员管理角色枚举
*/
code("人员管理角色字典code", 6616L),
use("使用单位", 1735591519093547010L),
agw("安装改造维修单位", 1735591458058035201L),
jyjc("检验检测机构", 1735590873120399362L);
String name;
Long id;
public static Map<Long, String> getName = new HashMap<>();
public static Map<String, Long> getId = new HashMap<>();
static {
for (PersonManageRoleEnum e : PersonManageRoleEnum.values()) {
getName.put(e.id, e.name);
getId.put(e.name, e.id);
}
}
}
......@@ -31,4 +31,8 @@ public interface TzsUserInfoMapper extends BaseMapper<TzsUserInfo> {
List<GroupAndPersonInfoDto> getUnitInfoByUserId(Long groupId);
String selectPostNameByUserId(String userId);
List<Map<String, Object>> getUserTypeList(@Param(value = "typeList") List<String> typeList);
String selectCompanyTypeById(Long companySeq);
}
......@@ -211,4 +211,21 @@
<select id="selectPostNameByUserId" resultType="java.lang.String">
SELECT post_name FROM "tzs_user_info" WHERE amos_user_id = #{userId}
</select>
<select id="getUserTypeList" resultType="java.util.Map">
SELECT
*
FROM
"cb_data_dictionary"
WHERE
type in
<foreach collection="typeList" separator="," item="type" open="(" close=")">
#{type}
</foreach>
</select>
<select id="selectCompanyTypeById" resultType="java.lang.String">
select company_type from privilege_company where sequence_nbr = #{companySeq}
</select>
</mapper>
\ No newline at end of file
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
......@@ -82,7 +83,7 @@ public class TzsUserInfoController extends BaseController {
if (ObjectUtils.isEmpty(reginParams)) {
return null;
}
CompanyModel companyModel = reginParams.getUserModel().getCompanys().get(0);
CompanyBo companyModel = reginParams.getCompany();
if(ObjectUtils.isEmpty(companyModel)){
throw new BadRequest("未指定人员归属单位信息");
}
......@@ -218,11 +219,11 @@ public class TzsUserInfoController extends BaseController {
if (ObjectUtils.isEmpty(reginParams)) {
return null;
}
CompanyModel companyModel = reginParams.getUserModel().getCompanys().get(0);
if(ObjectUtils.isEmpty(companyModel)){
CompanyBo company = reginParams.getCompany();
if(ObjectUtils.isEmpty(company)){
throw new BadRequest("未指定人员归属单位信息");
}
dto.setUnitCode(companyModel.getCompanyCode());
dto.setUnitCode(company.getCompanyCode());
Page<TzsUserInfoDto> page = new Page<>();
page.setCurrent(Long.parseLong(current));
page.setSize(Long.parseLong(size));
......
......@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
......@@ -15,6 +16,7 @@ import com.yeejoin.amos.boot.module.tcm.api.dto.TzsEquipListDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.tcm.api.entity.*;
import com.yeejoin.amos.boot.module.tcm.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.PersonManageRoleEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.TwoStipulateGroupEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.UnitTypeEnum;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserEquipMapper;
......@@ -262,6 +264,22 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
});
//添加人员管理角色
TzsUserInfo tzsUserInfo = tzsUserInfoMapper.selectById(sequenceNbr);
String post = tzsUserInfo.getPost();
if(post.contains(PersonManageRoleEnum.code.getId().toString())){
String companyType = tzsUserInfoMapper.selectCompanyTypeById(companySeq);
if(companyType.contains(PersonManageRoleEnum.jyjc.getName())){
roleIds.add(PersonManageRoleEnum.jyjc.getId());
}
if(companyType.contains(PersonManageRoleEnum.use.getName())){
roleIds.add(PersonManageRoleEnum.use.getId());
}
if(companyType.contains(PersonManageRoleEnum.agw.getName())){
roleIds.add(PersonManageRoleEnum.agw.getId());
}
}
Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
roleSeqMap.put(companySeq, roleIds);
......@@ -271,7 +289,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
agencyUserModel.setOrgRoleSeqs(roleSeqMap);
userResult = Privilege.agencyUserClient.create(agencyUserModel);
if (userResult.getStatus() == 200) {
TzsUserInfo tzsUserInfo = tzsUserInfoMapper.selectById(sequenceNbr);
tzsUserInfo.setAmosUserId(userResult.getResult().getUserId());
tzsUserInfo.setAmosUserName(userResult.getResult().getUserName());
tzsUserInfo.setLockStatus(status);
......@@ -284,7 +302,6 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
Privilege.groupUserClient.create(Long.valueOf(roleGroup.getExtend()), userIds);
}
//绑定两个规定用户组
String post = tzsUserInfo.getPost();
post = post.replace("[", "").replace("]", "").replace("\"", "");
for (String code : post.split(",")) {
DataDictionary groupId = iDataDictionaryService
......@@ -366,6 +383,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
boolean productCompany = false;
boolean useCompany = false;
boolean installCompany = false;
boolean inspectionCompany = false;
for (CompanyModel companyModel : companyModels) {
String companyType = companyModel.getCompanyType();
if (companyType.contains("使用单位") || companyType.contains("个人主体")) {
......@@ -377,19 +395,23 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
if (companyType.contains("安装改造维修单位")){
installCompany = true;
}
if (companyType.contains("检验检测机构")){
inspectionCompany = true;
}
}
String companyType = null;
StringBuilder companyType = new StringBuilder();
if (useCompany) {
companyType = "use";
companyType.append("use-");
}
if (productCompany) {
companyType = "pro";
}
if (useCompany && productCompany) {
companyType = "useAndPro";
companyType.append("pro-");
}
if (installCompany) {
companyType = companyType + "AndInstall";
companyType.append("install-");
}
if (inspectionCompany) {
companyType.append("inspection");
}
result.put("companyType", companyType);
return result;
......@@ -526,18 +548,21 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
@Override
public List<Map<String, Object>> getUserType(String unitType) {
if (unitType.equals("pro")) {
return tzsUserInfoMapper.getUserType("QYRYGW-SCDW", null);
} else if (unitType.equals("use")) {
return tzsUserInfoMapper.getUserType("QYRYGW-SYDW", null);
} else if (unitType.equals("useAndInstall")){
return tzsUserInfoMapper.getUserType("QYRYGW-SYDW", "QYRYGW-INSTALL");
} else if (unitType.equals("proAndInstall")){
return tzsUserInfoMapper.getUserType("QYRYGW-SCDW", "QYRYGW-INSTALL");
}else {
return tzsUserInfoMapper.getUserType(null, null);
List<String> type = new ArrayList<>();
type.add("QYRYGW");
if (unitType.contains("use")) {
type.add("QYRYGW-SYDW");
}
if (unitType.contains("pro")) {
type.add("QYRYGW-SCDW");
}
if (unitType.contains("install")) {
type.add("QYRYGW-INSTALL");
}
if (unitType.contains("inspection")) {
type.add("QYRYGW-INSPECTION");
}
return tzsUserInfoMapper.getUserTypeList(type);
}
public List<LinkedHashMap> screenData(List<LinkedHashMap> result, List<LinkedHashMap> data, String id) {
......
......@@ -16,6 +16,7 @@ public enum ApplicationFormTypeEnum {
*/
GZ("GZ"),
JY("JY"),
JG("JG"),// 检验结果
WB("WB"),
SY("SY");
......
package com.yeejoin.amos.boot.module.ymt.api.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.ymt.api.dto.EquEnterDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* 企业数据信息 Mapper 接口
......@@ -44,4 +45,11 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
IPage<TzBaseEnterpriseInfoDto> page(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto);
IPage<TzBaseEnterpriseInfoDto> pageList(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto, List orgCodeList);
/**
* 查找企业关联设备详情列表
*
*/
List<TzBaseEnterpriseInfo> getInspectionUnitList(@Param("unitType") String unitType);
}
......@@ -85,7 +85,12 @@
USE_PLACE,
ADDRESS,
EQU_STATE,
STATUS
STATUS,
USE_INNER_CODE,
FACTORY_NUM,
PRODUCE_UNIT_NAME,
INSPECT_REPORT,
NEXT_INSPECT_DATE
from idx_biz_view_jg_all
WHERE SEQUENCE_NBR = #{id}
</select>
......
......@@ -49,7 +49,7 @@
</if>
<if
test="tzBaseEnterpriseInfoDto.useUnit!=null and tzBaseEnterpriseInfoDto.useUnit!='' ">
AND use_unit LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.useUnit},'%')
AND use_unit LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.useUnit},'%')
</if>
<if
test="tzBaseEnterpriseInfoDto.useUnitCertificate!=null and tzBaseEnterpriseInfoDto.useUnitCertificate!='' ">
......@@ -57,7 +57,7 @@
</if>
<if
test="tzBaseEnterpriseInfoDto.useCode!=null and tzBaseEnterpriseInfoDto.useCode!='' ">
AND use_code LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.useCode},'%')
AND use_code LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.useCode},'%')
</if>
<if
test="tzBaseEnterpriseInfoDto.region!=null and tzBaseEnterpriseInfoDto.region!='' ">
......@@ -65,11 +65,11 @@
</if>
<if
test="tzBaseEnterpriseInfoDto.legalPerson!=null and tzBaseEnterpriseInfoDto.legalPerson!='' ">
AND legal_person LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.legalPerson},'%')
AND legal_person LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.legalPerson},'%')
</if>
<if
test="tzBaseEnterpriseInfoDto.legalPhone!=null and tzBaseEnterpriseInfoDto.legalPhone!='' ">
AND legal_phone LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.legalPhone},'%')
AND legal_phone LIKE CONCAT('%',#{tzBaseEnterpriseInfoDto.legalPhone},'%')
</if>
<if
test="tzBaseEnterpriseInfoDto.superviseOrgCode!=null and tzBaseEnterpriseInfoDto.superviseOrgCode!='' ">
......@@ -154,5 +154,10 @@
<select id="selectByUseUnit" resultType="com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo">
select * from tz_base_enterprise_info where use_unit = #{useUnit}
</select>
<select id="getInspectionUnitList" resultType="com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo">
select sequence_nbr,use_code,use_unit,use_contact,contact_phone
from tz_base_enterprise_info
where unit_type LIKE CONCAT('%',#{unitType},'%')
</select>
</mapper>
......@@ -27,7 +27,7 @@
<springcloud.version>Hoxton.SR8</springcloud.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<tyboot-version>1.1.23-SNAPSHOT</tyboot-version>
<amos.version>1.7.10-SNAPSHOT</amos.version>
<amos.version>1.8.6</amos.version>
<itext.version>7.1.1</itext.version>
<elasticsearch.version>7.15.2</elasticsearch.version>
</properties>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment