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

This commit is contained in:
高嵩
2023-10-10 14:31:52 +08:00
39 changed files with 1775 additions and 463 deletions
@@ -1249,7 +1249,7 @@ MODIFY COLUMN `lot` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_c
MODIFY COLUMN `detection_report_location` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '检测报告位置' AFTER `experiment_file`, MODIFY COLUMN `detection_report_location` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '检测报告位置' AFTER `experiment_file`,
MODIFY COLUMN `explain_info` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '说明' AFTER `detection_report_location`; MODIFY COLUMN `explain_info` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '说明' AFTER `detection_report_location`;
--添加平台件项目库字段2023-09-28 --添加平台件项目库字段2023-10-09
ALTER TABLE `project_library_base` ALTER TABLE `project_library_base`
ADD COLUMN `power` varchar(255) NULL COMMENT '功率' AFTER `platform`, ADD COLUMN `power` varchar(255) NULL COMMENT '功率' AFTER `platform`,
ADD COLUMN `producer` varchar(255) NULL COMMENT '生产商' AFTER `power`, ADD COLUMN `producer` varchar(255) NULL COMMENT '生产商' AFTER `power`,
@@ -1269,13 +1269,17 @@ ADD COLUMN `battery_type_code` varchar(255) NULL COMMENT '电池类型代码' AF
ADD COLUMN `specification_code` varchar(255) NULL COMMENT '规格代码' AFTER `battery_type_code`, ADD COLUMN `specification_code` varchar(255) NULL COMMENT '规格代码' AFTER `battery_type_code`,
ADD COLUMN `traceability_code` varchar(255) NULL COMMENT '追溯代码' AFTER `specification_code`, ADD COLUMN `traceability_code` varchar(255) NULL COMMENT '追溯代码' AFTER `specification_code`,
ADD COLUMN `ymd_number` varchar(255) NULL COMMENT '生产也月日序列号' AFTER `traceability_code`, ADD COLUMN `ymd_number` varchar(255) NULL COMMENT '生产也月日序列号' AFTER `traceability_code`,
ADD COLUMN `size` double(255, 0) NULL COMMENT '尺寸' AFTER `ymd_number`, ADD COLUMN `size` varchar(255) NULL COMMENT '尺寸' AFTER `ymd_number`,
ADD COLUMN `rated_capacity` varchar(255) NULL COMMENT '额定容量' AFTER `size`, ADD COLUMN `rated_capacity` varchar(255) NULL COMMENT '额定容量' AFTER `size`,
ADD COLUMN `nominal_voltage` varchar(255) NULL COMMENT '标称电压' AFTER `rated_capacity`, ADD COLUMN `nominal_voltage` varchar(255) NULL COMMENT '标称电压' AFTER `rated_capacity`,
ADD COLUMN `rated_mass` varchar(255) NULL COMMENT '额定质量' AFTER `nominal_voltage`, ADD COLUMN `rated_mass` varchar(255) NULL COMMENT '额定质量' AFTER `nominal_voltage`,
ADD COLUMN `module_number` varchar(0) NULL COMMENT '包含模块个数' AFTER `rated_mass`, ADD COLUMN `module_number` varchar(255) NULL COMMENT '包含模块个数' AFTER `rated_mass`,
ADD COLUMN `connection_type` varchar(255) NULL COMMENT '模块串并联方式' AFTER `module_number`, ADD COLUMN `connection_type` varchar(255) NULL COMMENT '模块串并联方式' AFTER `module_number`,
ADD COLUMN `module_specification_code` varchar(255) NULL COMMENT '所用模块或单体规格代码' AFTER `connection_type`, ADD COLUMN `module_specification_code` varchar(255) NULL COMMENT '所用模块或单体规格代码' AFTER `connection_type`,
ADD COLUMN `cooling_method` varchar(255) NULL COMMENT '冷却方式' AFTER `module_specification_code`, ADD COLUMN `cooling_method` varchar(255) NULL COMMENT '冷却方式' AFTER `module_specification_code`,
ADD COLUMN `filing_completion_time` datetime(0) NULL COMMENT '备案完成时间' AFTER `cooling_method`, ADD COLUMN `filing_completion_time` datetime(0) NULL COMMENT '备案完成时间' AFTER `cooling_method`,
ADD COLUMN `remark` varchar(1000) NULL COMMENT '备注' AFTER `filing_completion_time`; ADD COLUMN `remark` varchar(1000) NULL COMMENT '备注' AFTER `filing_completion_time`;
--平台件合规认证计划添加标识字段2023-10-09
ALTER TABLE `platform_task_planning`
ADD COLUMN `flag` varchar(255) NULL COMMENT '位置标识(用来区分上下两部分数据,up->上,down->下)' AFTER `project_id`,
@@ -161,4 +161,9 @@ public class AuthDummyInventoryInfoEO implements Serializable {
/**认证类型*/ /**认证类型*/
@ApiModelProperty(value = "认证类型") @ApiModelProperty(value = "认证类型")
private String attestationType; private String attestationType;
/**备注*/
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 50)
private String remark;
} }
@@ -961,9 +961,9 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
if(CollectionUtils.isNotEmpty(baseList)){ if(CollectionUtils.isNotEmpty(baseList)){
String title = ""; String title = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){ if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID,*编号,*责任领域,*交付物类型,交付物模板"; title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID,*编号,*责任领域,*交付物类型,交付物模板,备注";
}else{ }else{
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID,*Number,*Responsible Field,*Deliverable Type,Deliverable Template"; title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID,*Number,*Responsible Field,*Deliverable Type,Deliverable Template,Remark";
} }
int pos = file.getOriginalFilename().lastIndexOf("."); int pos = file.getOriginalFilename().lastIndexOf(".");
@@ -1081,7 +1081,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
if (i == 0) { if (i == 0) {
cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellType(HSSFCell.CELL_TYPE_STRING);
headerSb.append(cell.getStringCellValue() + ","); headerSb.append(cell.getStringCellValue() + ",");
if(j == 8){ if(j == 9){
break; break;
} }
} else if(i > 1){ } else if(i > 1){
@@ -1623,8 +1623,10 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
}else{ }else{
for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : datas) { for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : datas) {
List<BussDocumentLibraryEO> collect = bussDocumentLibraryEOList.stream() List<BussDocumentLibraryEO> collect = bussDocumentLibraryEOList.stream()
.filter(e -> e.getSerialNumber().equals(authDummyInventoryInfoEO.getSerialNumber())).collect(Collectors.toList()); .filter(e -> e.getSerialNumber().trim().equals(authDummyInventoryInfoEO.getSerialNumber().trim())).collect(Collectors.toList());
authDummyInventoryInfoEO.setBussDocumentLibraryId(collect.get(0).getId()); if(CollectionUtils.isNotEmpty(collect)){
authDummyInventoryInfoEO.setBussDocumentLibraryId(collect.get(0).getId());
}
} }
} }
// //2. 验证标准号在法规清单中是否添加过 // //2. 验证标准号在法规清单中是否添加过
@@ -1705,6 +1707,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
case "*责任领域": return "dutyTerritoryName"; case "*责任领域": return "dutyTerritoryName";
case "交付物模板": return "deliverableTemplateName"; case "交付物模板": return "deliverableTemplateName";
case "*交付物类型" : return "deliverableTypeName"; case "*交付物类型" : return "deliverableTypeName";
case "备注" : return "remark";
case "*Category" : return "Category"; case "*Category" : return "Category";
case "*Inspection Items" : return"inspectionItem"; case "*Inspection Items" : return"inspectionItem";
@@ -1715,6 +1718,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
case "*Responsible Field" : return "dutyTerritoryName"; case "*Responsible Field" : return "dutyTerritoryName";
case "Deliverable Template" : return "deliverableTemplateName"; case "Deliverable Template" : return "deliverableTemplateName";
case "*Deliverable Type" : return "deliverableTypeNameEn"; case "*Deliverable Type" : return "deliverableTypeNameEn";
case "Remark" : return "remark";
default: return null; default: return null;
@@ -1797,17 +1801,17 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
String title = ""; String title = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){ if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," + title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," +
"*编号,*责任领域,*交付物类型,交付物模板,"; "*编号,*责任领域,*交付物类型,交付物模板,备注,";
}else{ }else{
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," + title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," +
"*Number,*Responsible Field,*Deliverable Type,Deliverable Template,"; "*Number,*Responsible Field,*Deliverable Type,Deliverable Template,Remark,";
} }
List<String> list = Arrays.asList(title.split(",")); List<String> list = Arrays.asList(title.split(","));
int index = 0; int index = 0;
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){ if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
index = list.indexOf("交付物模板") + 1; index = list.indexOf("备注") + 1;
}else{ }else{
index = list.indexOf("Deliverable Template") + 1; index = list.indexOf("Remark") + 1;
} }
//创建临时文件夹 //创建临时文件夹
@@ -133,7 +133,7 @@
left join project_name_info as pni on plb.project_name_id = pni.id left join project_name_info as pni on plb.project_name_id = pni.id
left join project_year_name_info as pyni on plb.year_name_id=pyni.id left join project_year_name_info as pyni on plb.year_name_id=pyni.id
) tmp_tb ) tmp_tb
where 1=1 and state = #{state} and plb.platform is null where 1=1 and state = #{state}
<if test="projectName !=null and projectName !=''"> <if test="projectName !=null and projectName !=''">
AND project_name LIKE CONCAT(CONCAT('%',#{projectName}),'%') AND project_name LIKE CONCAT(CONCAT('%',#{projectName}),'%')
</if> </if>
@@ -153,7 +153,7 @@
left join project_name_info as pni on plb.project_name_id = pni.id left join project_name_info as pni on plb.project_name_id = pni.id
left join project_year_name_info as pyni on plb.year_name_id=pyni.id left join project_year_name_info as pyni on plb.year_name_id=pyni.id
) tmp_tb ) tmp_tb
where 1=1 and plb.platform is null and id in where 1=1 and id in
<foreach collection="idList" index="index" item="item" open="(" separator="," close=")"> <foreach collection="idList" index="index" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
@@ -175,7 +175,7 @@
left join project_name_info as pni on plb.project_name_id = pni.id left join project_name_info as pni on plb.project_name_id = pni.id
left join project_year_name_info as pyni on plb.year_name_id=pyni.id left join project_year_name_info as pyni on plb.year_name_id=pyni.id
) tmp_tb ) tmp_tb
where 1=1 and plb.platform is null and state = #{state} where 1=1 and state = #{state}
and id in( and id in(
SELECT pm.id AS pm FROM params_manifest pm SELECT pm.id AS pm FROM params_manifest pm
JOIN ( SELECT id FROM JOIN ( SELECT id FROM
@@ -183,7 +183,7 @@
FROM FROM
project_library_base a project_library_base a
JOIN mysql.help_topic b ON b.help_topic_id &lt; ( length( a.certification_engineer ) - length( REPLACE ( a.certification_engineer, ',', '' ) ) + 1 )) temp JOIN mysql.help_topic b ON b.help_topic_id &lt; ( length( a.certification_engineer ) - length( REPLACE ( a.certification_engineer, ',', '' ) ) + 1 )) temp
WHERE user_id = #{userId} and platform is null) a ON pm.project_id = a.id WHERE user_id = #{userId}) a ON pm.project_id = a.id
UNION UNION
SELECT DISTINCT pcm.params_manifest_id AS pm FROM params_collect_manifest pcm WHERE sdt = #{userName} and state in('2','5') SELECT DISTINCT pcm.params_manifest_id AS pm FROM params_collect_manifest pcm WHERE sdt = #{userName} and state in('2','5')
@@ -211,7 +211,7 @@
left join project_name_info as pni on plb.project_name_id = pni.id left join project_name_info as pni on plb.project_name_id = pni.id
left join project_year_name_info as pyni on plb.year_name_id = pyni.id left join project_year_name_info as pyni on plb.year_name_id = pyni.id
) tmp_tb ) tmp_tb
where project_id = #{projectId} and plb.platform is null where project_id = #{projectId}
</select> </select>
<select id="labelListForProjectDetails" resultType="java.util.LinkedHashMap"> <select id="labelListForProjectDetails" resultType="java.util.LinkedHashMap">
@@ -232,7 +232,7 @@
FROM FROM
project_library_base a project_library_base a
JOIN mysql.help_topic b ON b.help_topic_id &lt; ( length( a.certification_engineer ) - length( REPLACE ( a.certification_engineer, ',', '' ) ) + 1 )) temp JOIN mysql.help_topic b ON b.help_topic_id &lt; ( length( a.certification_engineer ) - length( REPLACE ( a.certification_engineer, ',', '' ) ) + 1 )) temp
WHERE user_id = #{userId} and platform is null) a ON pm.project_id = a.id WHERE user_id = #{userId}) a ON pm.project_id = a.id
where pm.state = #{state} where pm.state = #{state}
</select> </select>
</mapper> </mapper>
@@ -619,6 +619,7 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
for (ParamsCollectManifestEO oldCollectManifestEO : diffList) { for (ParamsCollectManifestEO oldCollectManifestEO : diffList) {
ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO(); ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO();
updateCollectManifestEO.setId(oldCollectManifestEO.getId()); updateCollectManifestEO.setId(oldCollectManifestEO.getId());
updateCollectManifestEO.setNioNumber(oldCollectManifestEO.getNioNumber());
updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue()); updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue());
updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项 updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项
updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_AFTER.getValue()); // 因新发布模板中没有该参数项,标记为变更时已删除参数项 updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_AFTER.getValue()); // 因新发布模板中没有该参数项,标记为变更时已删除参数项
@@ -78,9 +78,9 @@ public class PlatformTaskPlanningEOController extends JeroController<PlatformTas
@AutoLog(value = "平台件合规认证计划-列表查询") @AutoLog(value = "平台件合规认证计划-列表查询")
@ApiOperation(value="平台件合规认证计划-列表查询", notes="平台件合规认证计划-列表查询") @ApiOperation(value="平台件合规认证计划-列表查询", notes="平台件合规认证计划-列表查询")
@GetMapping(value = "/list") @GetMapping(value = "/list")
public Result<List<PlatformTaskPlanningEO>> queryList(String projectId) { public Result<?> queryList(String projectId) {
List<PlatformTaskPlanningEO> list = platformTaskPlanningEOService.queryList(projectId); Map<String,Object> result = platformTaskPlanningEOService.queryList(projectId);
return Result.OK(list); return Result.OK(result);
} }
/** /**
@@ -106,9 +106,17 @@ public class PlatformTaskPlanningEOController extends JeroController<PlatformTas
@ApiOperation(value="平台件合规认证计划-批量添加", notes="平台件合规认证计划-批量添加") @ApiOperation(value="平台件合规认证计划-批量添加", notes="平台件合规认证计划-批量添加")
@PostMapping(value = "/addBatch") @PostMapping(value = "/addBatch")
public Result<?> addBatch(@RequestBody Map<String,Object> data) { public Result<?> addBatch(@RequestBody Map<String,Object> data) {
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(data.get("list"))); // JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(data.get("list")));
List<PlatformTaskPlanningEO> platformTaskPlanningEOList = jsonArray.toJavaList(PlatformTaskPlanningEO.class); // JSONArray jsonArrayUp = JSONArray.parseArray(JSON.toJSONString(data.get("listUp")));
platformTaskPlanningEOService.addBatch(platformTaskPlanningEOList); // JSONArray jsonArrayDown = JSONArray.parseArray(JSON.toJSONString(data.get("listDown")));
// List<PlatformTaskPlanningEO> platformTaskPlanningEOListUp = jsonArray.toJavaList(PlatformTaskPlanningEO.class);
// List<PlatformTaskPlanningEO> platformTaskPlanningEOListDown = jsonArray.toJavaList(PlatformTaskPlanningEO.class);
// platformTaskPlanningEOService.addBatch(platformTaskPlanningEOListUp,platformTaskPlanningEOListDown);
JSONArray jsonArrayUp = JSONArray.parseArray(JSON.toJSONString(data.get("listUp")));
JSONArray jsonArrayDown = JSONArray.parseArray(JSON.toJSONString(data.get("listDown")));
List<PlatformTaskPlanningEO> platformTaskPlanningEOListUp = jsonArrayUp.toJavaList(PlatformTaskPlanningEO.class);
List<PlatformTaskPlanningEO> platformTaskPlanningEOListDown = jsonArrayDown.toJavaList(PlatformTaskPlanningEO.class);
platformTaskPlanningEOService.addBatch(platformTaskPlanningEOListUp,platformTaskPlanningEOListDown);
return Result.OK("添加成功!"); return Result.OK("添加成功!");
} }
@@ -93,4 +93,7 @@ public class PlatformTaskPlanningEO implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private boolean isG; private boolean isG;
//标识(用来区分上下两部分数据,up->上,down->下)
private String Flag;
} }
@@ -0,0 +1,45 @@
package com.jero.modules.platform.enums;
/**
* 任务状态枚举类
*/
public enum UpAndDownEnum {
UP("上部分","up"),
DOWN("下部分","down"),
;
String name;
String value;
private UpAndDownEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public static String getTextByValue(String value) {
UpAndDownEnum[] values = values();
for (UpAndDownEnum taskStatusEnum : values) {
if (taskStatusEnum.value.equals(value)) {
return taskStatusEnum.name;
}
}
return null;
}
}
@@ -52,6 +52,34 @@
plb.sort, plb.sort,
plb.flag, plb.flag,
plb.brand, plb.brand,
plb.power,
plb.producer,
plb.duty_depart,
plb.regulation_owner_id,
plb.engineering_interface_person,
plb.brand_label,
plb.product_model,
plb.cell_enterprise,
plb.assembly_enterprise,
plb.part_number_cn,
plb.part_number_en,
plb.filing_code,
plb.supplier_code,
plb.product_type_code,
plb.battery_type_code,
plb.specification_code,
plb.traceability_code,
plb.ymd_number,
plb.size,
plb.rated_capacity,
plb.nominal_voltage,
plb.rated_mass,
plb.module_number,
plb.connection_type,
plb.module_specification_code,
plb.cooling_method,
plb.filing_completion_time,
plb.remark,
sdi.item_text brandText, sdi.item_text brandText,
sdi.en_name brandTextEn sdi.en_name brandTextEn
from project_library_base as plb from project_library_base as plb
@@ -3,6 +3,7 @@ package com.jero.modules.platform.service;
import com.jero.modules.platform.entity.PlatformTaskPlanningEO; import com.jero.modules.platform.entity.PlatformTaskPlanningEO;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Description: 平台件合规认证计划 * @Description: 平台件合规认证计划
@@ -22,9 +23,10 @@ public interface IPlatformTaskPlanningEOService extends IService<PlatformTaskPla
/** /**
* 平台件合规认证计划-批量添加 * 平台件合规认证计划-批量添加
* @param platformTaskPlanningEOList * @param platformTaskPlanningEOListUp
* @param platformTaskPlanningEOListDown
*/ */
void addBatch(List<PlatformTaskPlanningEO> platformTaskPlanningEOList); void addBatch(List<PlatformTaskPlanningEO> platformTaskPlanningEOListUp,List<PlatformTaskPlanningEO> platformTaskPlanningEOListDown);
/** /**
* 更新 * 更新
@@ -63,5 +65,5 @@ public interface IPlatformTaskPlanningEOService extends IService<PlatformTaskPla
* *
* @return * @return
*/ */
List<PlatformTaskPlanningEO> queryList(String projectId); Map<String,Object> queryList(String projectId);
} }
@@ -4555,11 +4555,11 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*认证类型,*WVTA ID," + title = "*类别,*检验项目,*认证类型,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," + "*标准编号,*责任领域,*工程接口人,*责任人," +
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称"; "交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称,备注";
}else { }else {
title = "*Category,*Inspection Items,*Certification Type,*WVTA ID," + title = "*Category,*Inspection Items,*Certification Type,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," + "*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer"; "Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer,Remark";
} }
int pos = file.getOriginalFilename().lastIndexOf("."); int pos = file.getOriginalFilename().lastIndexOf(".");
@@ -4675,7 +4675,7 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
if (i == 0) { if (i == 0) {
cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellType(HSSFCell.CELL_TYPE_STRING);
headerSb.append(cell.getStringCellValue() + ","); headerSb.append(cell.getStringCellValue() + ",");
if(j == 14){ if(j == 15){
break; break;
} }
} else if(i > 1){ } else if(i > 1){
@@ -5823,6 +5823,7 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
case "产品型号": return "productModel"; case "产品型号": return "productModel";
case "生产企业名称": return "productionEnterpriseName"; case "生产企业名称": return "productionEnterpriseName";
case "认证进度": return "certificationProgress"; case "认证进度": return "certificationProgress";
case "备注": return "remark";
case "*Category": return "category"; case "*Category": return "category";
case "*Inspection Items": return "inspectionItem"; case "*Inspection Items": return "inspectionItem";
@@ -5842,6 +5843,7 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
case "Product Model": return "productModel"; case "Product Model": return "productModel";
case "Name Of Manufacturer": return "productionEnterpriseName"; case "Name Of Manufacturer": return "productionEnterpriseName";
case "Homologation Progress": return "certificationProgress"; case "Homologation Progress": return "certificationProgress";
case "Remark": return "remark";
default: return null; default: return null;
//"Deliverable Type,Deliverable Template,initiator,Assignee,Due Date," + //"Deliverable Type,Deliverable Template,initiator,Assignee,Due Date," +
@@ -5866,19 +5868,19 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*认证类型,*WVTA ID," + title = "*类别,*检验项目,*认证类型,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," + "*标准编号,*责任领域,*工程接口人,*责任人," +
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称"; "交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称,备注";
}else { }else {
title = "*Category,*Inspection Items,*Certification Type,*WVTA ID," + title = "*Category,*Inspection Items,*Certification Type,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," + "*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer"; "Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer,Remark";
} }
List<String> list = Arrays.asList(title.split(",")); List<String> list = Arrays.asList(title.split(","));
int index = 0; int index = 0;
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
index = list.indexOf("生产企业名称") + 1; index = list.indexOf("备注") + 1;
}else{ }else{
index = list.indexOf("Name Of Manufacturer") + 1; index = list.indexOf("Remark") + 1;
} }
//创建临时文件夹 //创建临时文件夹
@@ -5902,7 +5904,7 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
cellStyleTemp.setWrapText(true);//自动换行 cellStyleTemp.setWrapText(true);//自动换行
CellRangeAddress region = CellRangeAddress region =
new CellRangeAddress(1, 1, 0, 13); //参数1起始行 参数2终止行 参数3起始列 参数4终止列 new CellRangeAddress(1, 1, 0, 14); //参数1起始行 参数2终止行 参数3起始列 参数4终止列
sheet.addMergedRegion(region); sheet.addMergedRegion(region);
String explain= ""; String explain= "";
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
@@ -6071,8 +6073,10 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
String projectLibraryId = pciList.get(0).getProjectLibraryId(); String projectLibraryId = pciList.get(0).getProjectLibraryId();
ProjectLibraryBase projectLibraryBase = this.platformProjectLibraryBaseService.selectById(projectLibraryId); ProjectLibraryBase projectLibraryBase = this.platformProjectLibraryBaseService.selectById(projectLibraryId);
if(ObjectUtils.isNotEmpty(projectLibraryBase)){ if(ObjectUtils.isNotEmpty(projectLibraryBase)){
List<SysUser> studioEngineerUserInfo = this.sysUserService.querySysUserListByIdList(Arrays.asList(projectLibraryBase.getStudioEngineer().split(","))); List<SysUser> studioEngineerUserInfo = new ArrayList<>();
if(StringUtils.isNotBlank(projectLibraryBase.getStudioEngineer())){
studioEngineerUserInfo = this.sysUserService.querySysUserListByIdList(Arrays.asList(projectLibraryBase.getStudioEngineer().split(",")));
}
String certificationEngineerUserNames = ""; String certificationEngineerUserNames = "";
if(StringUtils.isNotBlank(projectLibraryBase.getCertificationEngineer())){ if(StringUtils.isNotBlank(projectLibraryBase.getCertificationEngineer())){
List<String> certificationEngineerIdList = Arrays.asList(projectLibraryBase.getCertificationEngineer().split(",")); List<String> certificationEngineerIdList = Arrays.asList(projectLibraryBase.getCertificationEngineer().split(","));
@@ -569,7 +569,7 @@ public class PlatformProjectLawsInventoryEOServiceImpl extends ServiceImpl<Platf
@Override @Override
public void editById(ProjectLawsInventoryEO projectLawsInventoryEO) { public void editById(ProjectLawsInventoryEO projectLawsInventoryEO) {
this.editService.editById(projectLawsInventoryEO); this.editService.editByIdPlatform(projectLawsInventoryEO);
} }
/** /**
@@ -23,6 +23,8 @@ import com.jero.modules.cert.template.enums.ControlTypeEnum;
import com.jero.modules.dummy.enums.OrderEnum; import com.jero.modules.dummy.enums.OrderEnum;
import com.jero.modules.enums.DictCodeEnum; import com.jero.modules.enums.DictCodeEnum;
import com.jero.modules.feishu.enums.TemplateInfoEnum2; import com.jero.modules.feishu.enums.TemplateInfoEnum2;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.ota.service.impl.OtaManageApplyEOServiceImpl; import com.jero.modules.ota.service.impl.OtaManageApplyEOServiceImpl;
import com.jero.modules.platform.mapper.PlatformProjectLawsInventoryEOMapper; import com.jero.modules.platform.mapper.PlatformProjectLawsInventoryEOMapper;
import com.jero.modules.platform.mapper.PlatformProjectLibraryBaseMapper; import com.jero.modules.platform.mapper.PlatformProjectLibraryBaseMapper;
@@ -45,6 +47,7 @@ import com.jero.modules.project.enums.DesignComplianceStatusEnum;
import com.jero.modules.project.enums.HSStatisticalNodesEnum; import com.jero.modules.project.enums.HSStatisticalNodesEnum;
import com.jero.modules.project.enums.OperatorTypeEnum; import com.jero.modules.project.enums.OperatorTypeEnum;
import com.jero.modules.project.enums.PermissionDescriptionEnum; import com.jero.modules.project.enums.PermissionDescriptionEnum;
import com.jero.modules.project.enums.ProjectInventoryFieldEnum;
import com.jero.modules.project.enums.ProjectRoleEnum; import com.jero.modules.project.enums.ProjectRoleEnum;
import com.jero.modules.project.enums.ProjectTaskPlanningNameEnum; import com.jero.modules.project.enums.ProjectTaskPlanningNameEnum;
import com.jero.modules.project.enums.ProjectUserLocationEnum; import com.jero.modules.project.enums.ProjectUserLocationEnum;
@@ -194,6 +197,8 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
private OtaManageApplyEOServiceImpl otaManageApplyEOService; private OtaManageApplyEOServiceImpl otaManageApplyEOService;
@Autowired @Autowired
private SysDictItemMapper sysDictItemMapper; private SysDictItemMapper sysDictItemMapper;
@Autowired
private IOSSFileService iOSSFileService;
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
private static DecimalFormat df = new DecimalFormat("#.00"); private static DecimalFormat df = new DecimalFormat("#.00");
@@ -217,7 +222,21 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
projectLibraryBase.setCreateBy(sysUser.getUsername()); projectLibraryBase.setCreateBy(sysUser.getUsername());
projectLibraryBase.setUpdateBy(sysUser.getUsername()); projectLibraryBase.setUpdateBy(sysUser.getUsername());
checkExitData(projectLibraryBase); // checkExitData(projectLibraryBase);
if(StringUtils.isNotBlank(projectLibraryBase.getBrandLabel())){
String valueTemp = UUID.randomUUID().toString().replace("-", "");
List<OSSFile> oSSFileList = new ArrayList<>();
for (String fileId : projectLibraryBase.getBrandLabel().split(",")) {
OSSFile ossFile = new OSSFile();
ossFile.setId(fileId);
ossFile.setConnectId(valueTemp);
oSSFileList.add(ossFile);
}
iOSSFileService.updateFileInfo(oSSFileList);
projectLibraryBase.setBrandLabel(valueTemp);
}
save(projectLibraryBase); save(projectLibraryBase);
//创建任务计划时间轴 //创建任务计划时间轴
@@ -1057,7 +1076,6 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
List<ProjectLibraryBase> result = this.list(queryWrapper); List<ProjectLibraryBase> result = this.list(queryWrapper);
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<SysDictItem> dictItemList = sysDictItemMapper.selectItemsByDictCode(DictCodeEnum.BRAND.getValue()); List<SysDictItem> dictItemList = sysDictItemMapper.selectItemsByDictCode(DictCodeEnum.BRAND.getValue());
//置顶 //置顶
@@ -1068,9 +1086,29 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
wrapper.in(TopProjectEO::getCreateBy,loginUser.getUsername()).in(TopProjectEO::getProjectLibraryBaseId,idList).orderByDesc(TopProjectEO::getSort); wrapper.in(TopProjectEO::getCreateBy,loginUser.getUsername()).in(TopProjectEO::getProjectLibraryBaseId,idList).orderByDesc(TopProjectEO::getSort);
topProjectEOList = iTopProjectEOService.list(wrapper); topProjectEOList = iTopProjectEOService.list(wrapper);
} }
//列表中的法规工程师和工程接口人
List<SysUser> sysUserList = getSysUserList(result);
//目标市场数据字典 //目标市场数据字典
// List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
for(ProjectLibraryBase projectLibraryBase: result){ for(ProjectLibraryBase projectLibraryBase: result){
if(ObjectUtils.isNotEmpty(sysUserList)){
//法规工程师
if(StringUtils.isNotBlank(projectLibraryBase.getRegulationOwnerId())){
List<SysUser> collect = sysUserList.stream()
.filter(e -> e.getId().equals(projectLibraryBase.getRegulationOwnerId())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
projectLibraryBase.setRegulationOwnerIdName(collect.get(0).getUsername());
}
}
//工程接口人
if(StringUtils.isNotBlank(projectLibraryBase.getEngineeringInterfacePerson())){
List<SysUser> collect = sysUserList.stream()
.filter(e -> e.getId().equals(projectLibraryBase.getEngineeringInterfacePerson())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
projectLibraryBase.setEngineeringInterfacePersonName(collect.get(0).getUsername());
}
}
}
//处理品牌 //处理品牌
List<SysDictItem> sysDictItemList = dictItemList.stream() List<SysDictItem> sysDictItemList = dictItemList.stream()
.filter(e -> e.getItemValue().equals(projectLibraryBase.getBrand())).collect(Collectors.toList()); .filter(e -> e.getItemValue().equals(projectLibraryBase.getBrand())).collect(Collectors.toList());
@@ -1098,14 +1136,14 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
} }
//目标市场 //目标市场
// Map<String,Object> param = new HashMap<>(); Map<String,Object> param = new HashMap<>();
// param.put("cut",cut); param.put("cut",cut);
// String targetMarket = getMarket(param, targetMarketList, projectLibraryBase); String targetMarket = getMarket(param, targetMarketList, projectLibraryBase);
// //项目名称(功率-生产商-目标市场) //项目名称(功率-生产商-目标市场)
// String projectName = projectLibraryBase.getPower() + "-" + projectLibraryBase.getProducer() + "-" + targetMarket; String projectName = projectLibraryBase.getPower() + "-" + projectLibraryBase.getProducer() + "-" + targetMarket;
// projectLibraryBase.setProjectNameId(projectName);//原设计平台件项目名称去这个字段值 projectLibraryBase.setProjectNameId(projectName);//原设计平台件项目名称去这个字段值
// //平台件项目名称改为拼接的形式,projectNameId不在存数据,如果这个变更影响其他的地方,项目名称取值可以取projectName的值 //平台件项目名称改为拼接的形式,projectNameId不在存数据,如果这个变更影响其他的地方,项目名称取值可以取projectName的值
// projectLibraryBase.setProjectName(projectName); projectLibraryBase.setProjectName(projectName);
} }
if(ObjectUtils.isEmpty(params.get("orderByField"))){ if(ObjectUtils.isEmpty(params.get("orderByField"))){
@@ -1121,6 +1159,25 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
return result; return result;
} }
private List<SysUser> getSysUserList(List<ProjectLibraryBase> result) {
List<String> RegulationOwnerIdList = result.stream().map(ProjectLibraryBase::getRegulationOwnerId).distinct().collect(Collectors.toList());
List<String> EngineeringInterfacePersonList = result.stream().map(ProjectLibraryBase::getEngineeringInterfacePerson).distinct().collect(Collectors.toList());
List<String> userIdList = new ArrayList<>();
if(ObjectUtils.isNotEmpty(RegulationOwnerIdList)){
userIdList.addAll(RegulationOwnerIdList);
}
if(ObjectUtils.isNotEmpty(EngineeringInterfacePersonList)){
userIdList.addAll(EngineeringInterfacePersonList);
}
List<SysUser> sysUserList = new ArrayList<>();
if(ObjectUtils.isNotEmpty(userIdList)){
QueryWrapper<SysUser> userqueryWrapper = new QueryWrapper<>();
userqueryWrapper.in("id ", userIdList);
sysUserList = sysUserMapper.selectList(userqueryWrapper);
}
return sysUserList;
}
private void hearSort(Map<String, Object> params, List<ProjectLibraryBase> resultList) { private void hearSort(Map<String, Object> params, List<ProjectLibraryBase> resultList) {
if(ObjectUtils.isNotEmpty(params.get("orderByField"))){ if(ObjectUtils.isNotEmpty(params.get("orderByField"))){
Collator comparator = Collator.getInstance(Locale.CHINESE); Collator comparator = Collator.getInstance(Locale.CHINESE);
@@ -1418,6 +1475,7 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
@Override @Override
public void disposeData(List<ProjectLibraryBase> records,String cut,boolean disposeTargetMarketFlag) { public void disposeData(List<ProjectLibraryBase> records,String cut,boolean disposeTargetMarketFlag) {
List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
List<SysUser> sysUserList = getSysUserList(records);
for (ProjectLibraryBase projectLibraryBase : records) { for (ProjectLibraryBase projectLibraryBase : records) {
List<SysUser> sysUsers = new ArrayList<>(); List<SysUser> sysUsers = new ArrayList<>();
//认证工程师多个id查询 //认证工程师多个id查询
@@ -1448,6 +1506,36 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
} }
} }
} }
//法规工程师
if(StringUtils.isNotBlank(projectLibraryBase.getRegulationOwnerId())){
List<SysUser> collect = sysUserList.stream()
.filter(e -> e.getId().equals(projectLibraryBase.getRegulationOwnerId())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
projectLibraryBase.setRegulationOwnerIdName(collect.get(0).getUsername());
}
}
//工程接口人
if(StringUtils.isNotBlank(projectLibraryBase.getEngineeringInterfacePerson())){
List<SysUser> collect = sysUserList.stream()
.filter(e -> e.getId().equals(projectLibraryBase.getEngineeringInterfacePerson())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
projectLibraryBase.setEngineeringInterfacePersonName(collect.get(0).getUsername());
}
}
//责任部门
if(StringUtils.isNotBlank(projectLibraryBase.getDutyDepart())){
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.getBaseMapper().selectItemsAll();
String dutyDepartName = platformProjectLawsInventoryEOService.disposeShowDictItemValue(sysDictItems, projectLibraryBase.getDutyDepart(), cut, ProjectInventoryFieldEnum.DUTY_TERRITORY.getValue());
projectLibraryBase.setDutyDepartName(dutyDepartName);
}
//名牌标签
if(StringUtils.isNotBlank(projectLibraryBase.getBrandLabel())){
List<OSSFile> fileList = iOSSFileService.getFileInfosByConnectId(projectLibraryBase.getBrandLabel());
if(ObjectUtils.isNotEmpty(fileList)){
List<String> urlList = fileList.stream().map(OSSFile::getUrl).collect(Collectors.toList());
projectLibraryBase.setUrlList(urlList);
}
}
if(disposeTargetMarketFlag){ if(disposeTargetMarketFlag){
if(StringUtils.isNotEmpty(projectLibraryBase.getTargetMarket())){ if(StringUtils.isNotEmpty(projectLibraryBase.getTargetMarket())){
@@ -3,16 +3,20 @@ package com.jero.modules.platform.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.platform.entity.PlatformTaskPlanningEO; import com.jero.modules.platform.entity.PlatformTaskPlanningEO;
import com.jero.modules.platform.enums.UpAndDownEnum;
import com.jero.modules.platform.mapper.PlatformTaskPlanningEOMapper; import com.jero.modules.platform.mapper.PlatformTaskPlanningEOMapper;
import com.jero.modules.platform.service.IPlatformTaskPlanningEOService; import com.jero.modules.platform.service.IPlatformTaskPlanningEOService;
import com.jero.modules.project.enums.PlanStatusEnum; import com.jero.modules.project.enums.PlanStatusEnum;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -40,23 +44,33 @@ public class PlatformTaskPlanningEOServiceImpl extends ServiceImpl<PlatformTaskP
/** /**
* 平台件合规认证计划-批量添加 * 平台件合规认证计划-批量添加
* @param platformTaskPlanningEOList * @param platformTaskPlanningEOListUp
* @param platformTaskPlanningEOListDown
*/ */
@Override @Override
public void addBatch(List<PlatformTaskPlanningEO> platformTaskPlanningEOList) { public void addBatch(List<PlatformTaskPlanningEO> platformTaskPlanningEOListUp,List<PlatformTaskPlanningEO> platformTaskPlanningEOListDown) {
if(!platformTaskPlanningEOList.isEmpty()){ if(!platformTaskPlanningEOListUp.isEmpty()){
//先删除在新增 //先删除在新增
// LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); // LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaQueryWrapper<PlatformTaskPlanningEO> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlatformTaskPlanningEO> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(PlatformTaskPlanningEO::getCreateBy,loginUser.getUsername()); // wrapper.eq(PlatformTaskPlanningEO::getCreateBy,loginUser.getUsername());
wrapper.eq(PlatformTaskPlanningEO::getProjectId,platformTaskPlanningEOList.get(0).getProjectId()); wrapper.eq(PlatformTaskPlanningEO::getProjectId,platformTaskPlanningEOListUp.get(0).getProjectId());
this.remove(wrapper); this.remove(wrapper);
for (PlatformTaskPlanningEO platformTaskPlanningEO : platformTaskPlanningEOList) {
for (PlatformTaskPlanningEO platformTaskPlanningEO : platformTaskPlanningEOListUp) {
Date now = new Date(); Date now = new Date();
platformTaskPlanningEO.setCreateTime(now); platformTaskPlanningEO.setCreateTime(now);
platformTaskPlanningEO.setUpdateTime(now); platformTaskPlanningEO.setUpdateTime(now);
platformTaskPlanningEO.setFlag("up");
} }
saveBatch(platformTaskPlanningEOList); for (PlatformTaskPlanningEO platformTaskPlanningEO : platformTaskPlanningEOListDown) {
Date now = new Date();
platformTaskPlanningEO.setCreateTime(now);
platformTaskPlanningEO.setUpdateTime(now);
platformTaskPlanningEO.setFlag("down");
}
saveBatch(platformTaskPlanningEOListUp);
saveBatch(platformTaskPlanningEOListDown);
} }
} }
@@ -112,7 +126,7 @@ public class PlatformTaskPlanningEOServiceImpl extends ServiceImpl<PlatformTaskP
* @return * @return
*/ */
@Override @Override
public List<PlatformTaskPlanningEO> queryList(String projectId) { public Map<String,Object> queryList(String projectId) {
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
Date date = null; Date date = null;
try { try {
@@ -124,21 +138,45 @@ public class PlatformTaskPlanningEOServiceImpl extends ServiceImpl<PlatformTaskP
wrapper.eq(PlatformTaskPlanningEO::getProjectId,projectId); wrapper.eq(PlatformTaskPlanningEO::getProjectId,projectId);
wrapper.orderByAsc(PlatformTaskPlanningEO::getNodeTime); wrapper.orderByAsc(PlatformTaskPlanningEO::getNodeTime);
List<PlatformTaskPlanningEO> taskPlanningEOList = list(wrapper); List<PlatformTaskPlanningEO> taskPlanningEOList = list(wrapper);
for (PlatformTaskPlanningEO platformTaskPlanningEO : taskPlanningEOList) { Map<String,Object> result = new HashMap<>();
platformTaskPlanningEO.setName(platformTaskPlanningEO.getNodeName()); if(ObjectUtils.isEmpty(taskPlanningEOList)){
platformTaskPlanningEO.setTime(platformTaskPlanningEO.getNodeTime()); LambdaQueryWrapper<PlatformTaskPlanningEO> queryWrapper = new LambdaQueryWrapper<>();
platformTaskPlanningEO.setG(false); queryWrapper.isNull(PlatformTaskPlanningEO::getProjectId);
if(ObjectUtils.isNotEmpty(platformTaskPlanningEO.getNodeTime())){ List<PlatformTaskPlanningEO> list = list(queryWrapper);
if(platformTaskPlanningEO.getNodeTime().after(date)){
platformTaskPlanningEO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue()); List<PlatformTaskPlanningEO> up = list.stream()
}else if(platformTaskPlanningEO.getNodeTime().before(date)){ .filter(e -> StringUtils.isNotBlank(e.getFlag()) && UpAndDownEnum.UP.getValue().equals(e.getFlag())).collect(Collectors.toList());
platformTaskPlanningEO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue()); List<PlatformTaskPlanningEO> down = list.stream()
}else{ .filter(e -> StringUtils.isNotBlank(e.getFlag()) && UpAndDownEnum.DOWN.getValue().equals(e.getFlag())).collect(Collectors.toList());
platformTaskPlanningEO.setStatus(PlanStatusEnum.ON_GOING.getValue());
result.put("listUp",up);
result.put("listDown",down);
}else{
for (PlatformTaskPlanningEO platformTaskPlanningEO : taskPlanningEOList) {
platformTaskPlanningEO.setName(platformTaskPlanningEO.getNodeName());
platformTaskPlanningEO.setTime(platformTaskPlanningEO.getNodeTime());
platformTaskPlanningEO.setG(false);
if(ObjectUtils.isNotEmpty(platformTaskPlanningEO.getNodeTime())){
if(platformTaskPlanningEO.getNodeTime().after(date)){
platformTaskPlanningEO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue());
}else if(platformTaskPlanningEO.getNodeTime().before(date)){
platformTaskPlanningEO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue());
}else{
platformTaskPlanningEO.setStatus(PlanStatusEnum.ON_GOING.getValue());
}
} }
} }
taskPlanningEOList = taskPlanningEOList.stream().filter(e->ObjectUtils.isNotEmpty(e.getNodeTime())).collect(Collectors.toList());
List<PlatformTaskPlanningEO> up = taskPlanningEOList.stream()
.filter(e -> StringUtils.isNotBlank(e.getFlag()) && UpAndDownEnum.UP.getValue().equals(e.getFlag())).collect(Collectors.toList());
List<PlatformTaskPlanningEO> down = taskPlanningEOList.stream()
.filter(e -> StringUtils.isNotBlank(e.getFlag()) && UpAndDownEnum.DOWN.getValue().equals(e.getFlag())).collect(Collectors.toList());
result.put("listUp",up);
result.put("listDown",down);
} }
taskPlanningEOList = taskPlanningEOList.stream().filter(e->ObjectUtils.isNotEmpty(e.getNodeTime())).collect(Collectors.toList()); return result;
return taskPlanningEOList;
} }
} }
@@ -216,4 +216,8 @@ public class ProjectCertificationInventoryDutyEnginnerEO implements Serializable
// @Excel(name = "*截止日期", width = 20, format = "yyyy-MM-dd") // @Excel(name = "*截止日期", width = 20, format = "yyyy-MM-dd")
@TableField(exist = false) @TableField(exist = false)
private String endTimeStr; private String endTimeStr;
@ApiModelProperty(value = "备注")
// @Excel(name = "备注", width = 50)
private String remark;
} }
@@ -215,4 +215,8 @@ public class ProjectCertificationInventoryDutyEnginnerEOEnPlatform implements Se
// @Excel(name = "截止日期", width = 20, format = "yyyy-MM-dd") // @Excel(name = "截止日期", width = 20, format = "yyyy-MM-dd")
@TableField(exist = false) @TableField(exist = false)
private String endTimeStr; private String endTimeStr;
@ApiModelProperty(value = "备注")
@Excel(name = "Remark", width = 50)
private String remark;
} }
@@ -192,6 +192,7 @@ public class ProjectCertificationInventoryDutyEnginnerEOPlatform implements Seri
@ApiModelProperty(value = "认证进度备注") @ApiModelProperty(value = "认证进度备注")
private String certificationProgressRemark; private String certificationProgressRemark;
/**项目库id*/ /**项目库id*/
@ApiModelProperty(value = "项目库id") @ApiModelProperty(value = "项目库id")
private String projectLibraryId; private String projectLibraryId;
@@ -215,4 +216,8 @@ public class ProjectCertificationInventoryDutyEnginnerEOPlatform implements Seri
// @Excel(name = "*截止日期", width = 20, format = "yyyy-MM-dd") // @Excel(name = "*截止日期", width = 20, format = "yyyy-MM-dd")
@TableField(exist = false) @TableField(exist = false)
private String endTimeStr; private String endTimeStr;
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 50)
private String remark;
} }
@@ -256,6 +256,11 @@ public class ProjectCertificationInventoryEO implements Serializable {
@ApiModelProperty(value = "认证类型") @ApiModelProperty(value = "认证类型")
private String attestationType; private String attestationType;
/**备注*/
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 50)
private String remark;
/**一级责任领域**/ /**一级责任领域**/
@TableField(exist = false) @TableField(exist = false)
private String firstLevelDutyTerritory; private String firstLevelDutyTerritory;
@@ -221,4 +221,8 @@ public class ProjectCertificationInventoryEOEnPlatform implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String endTimeStr; private String endTimeStr;
@ApiModelProperty(value = "备注")
@Excel(name = "Remark", width = 50)
private String remark;
} }
@@ -261,4 +261,8 @@ public class ProjectCertificationInventoryEOPlatform implements Serializable {
@ApiModelProperty(value = "关联平台件数据") @ApiModelProperty(value = "关联平台件数据")
@TableField(exist = false) @TableField(exist = false)
private List<ProjectCertificationInventoryEOPlatform> projectCertificationInventoryEOS; private List<ProjectCertificationInventoryEOPlatform> projectCertificationInventoryEOS;
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 50)
private String remark;
} }
@@ -166,89 +166,105 @@ public class ProjectLibraryBase implements Comparable<ProjectLibraryBase> {
//平台件项目库字段-------------------------------------------------------------------------------------------------------------- //平台件项目库字段--------------------------------------------------------------------------------------------------------------
// @ApiModelProperty(value = "功率") @ApiModelProperty(value = "功率")
// private String power; private String power;
//
// @ApiModelProperty(value = "生产商") @ApiModelProperty(value = "生产商")
// private String producer; private String producer;
//
// @ApiModelProperty(value = "责任部门") @ApiModelProperty(value = "责任部门")
// private String dutyDepart; private String dutyDepart;
//
// @ApiModelProperty(value = "法规工程师") @TableField(exist = false)
// private String regulationOwnerId; private String dutyDepartName;
//
// @ApiModelProperty(value = "工程接口人") @ApiModelProperty(value = "法规工程师")
// private String engineeringInterfacePerson; private String regulationOwnerId;
//
// @ApiModelProperty(value = "名牌标签") @TableField(exist = false)
// private String brandLabel; @ApiModelProperty(value = "法规工程师回显")
// private String regulationOwnerIdName;
// @ApiModelProperty(value = "产品型号")
// private String productModel; @ApiModelProperty(value = "工程接口人")
// private String engineeringInterfacePerson;
// @ApiModelProperty(value = "电芯生产企业")
// private String cellEnterprise; @TableField(exist = false)
// @ApiModelProperty(value = "工程接口人回显")
// @ApiModelProperty(value = "总成生产企业") private String engineeringInterfacePersonName;
// private String assemblyEnterprise;
// @ApiModelProperty(value = "名牌标签")
// @ApiModelProperty(value = "零件号(国内)") private String brandLabel;
// private String partNumberCn;
// @ApiModelProperty(value = "产品型号")
// @ApiModelProperty(value = "零件号(国外)") private String productModel;
// private String part_numberEn;
// @ApiModelProperty(value = "电芯生产企业")
// @ApiModelProperty(value = "24位备案码") private String cellEnterprise;
// private String filingCode;
// @ApiModelProperty(value = "总成生产企业")
// @ApiModelProperty(value = "供应商代码(1-3") private String assemblyEnterprise;
// private String supplierCode;
// @ApiModelProperty(value = "零件号(国内)")
// @ApiModelProperty(value = "产品类型代码(4") private String partNumberCn;
// private String productTypeCode;
// @ApiModelProperty(value = "零件号(国外)")
// @ApiModelProperty(value = "电池类型代码(5") private String partNumberEn;
// private String batteryTypeCode;
// @ApiModelProperty(value = "24位备案码")
// @ApiModelProperty(value = "规格代码(6-7") private String filingCode;
// private String specificationCode;
// @ApiModelProperty(value = "供应商代码(1-3")
// @ApiModelProperty(value = "追溯代码(8") private String supplierCode;
// private String traceabilityCode;
// @ApiModelProperty(value = "产品类型代码(4")
// @ApiModelProperty(value = "生产也月日序列号") private String productTypeCode;
// private String ymdNumber;
// @ApiModelProperty(value = "电池类型代码(5")
// @ApiModelProperty(value = "尺寸") private String batteryTypeCode;
// private String size;
// @ApiModelProperty(value = "规格代码(6-7")
// @ApiModelProperty(value = "额定容量") private String specificationCode;
// private String ratedCapacity;
// @ApiModelProperty(value = "追溯代码(8")
// @ApiModelProperty(value = "标称电压") private String traceabilityCode;
// private String nominalVoltage;
// @ApiModelProperty(value = "生产也月日序列号")
// @ApiModelProperty(value = "额定质量") private String ymdNumber;
// private String ratedMass;
// @ApiModelProperty(value = "尺寸")
// @ApiModelProperty(value = "包含模块个数") private String size;
// private String moduleNumber;
// @ApiModelProperty(value = "额定容量")
// @ApiModelProperty(value = "模块串并联方式") private String ratedCapacity;
// private String connectionType;
// @ApiModelProperty(value = "标称电压")
// @ApiModelProperty(value = "所用模块或单体规格代码") private String nominalVoltage;
// private String moduleSpecificationCode;
// @ApiModelProperty(value = "额定质量")
// @ApiModelProperty(value = "冷却方式") private String ratedMass;
// private String coolingMethod;
// @ApiModelProperty(value = "包含模块个数")
// @ApiModelProperty(value = "备案完成时间") private String moduleNumber;
// private String filingCompletionTime;
// @ApiModelProperty(value = "模块串并联方式")
// @ApiModelProperty(value = "备注") private String connectionType;
// private String remark;
@ApiModelProperty(value = "所用模块或单体规格代码")
private String moduleSpecificationCode;
@ApiModelProperty(value = "冷却方式")
private String coolingMethod;
@ApiModelProperty(value = "备案完成时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private java.util.Date filingCompletionTime;
@ApiModelProperty(value = "备注")
private String remark;
@TableField(exist = false)
private List<String> urlList;
@Override @Override
@@ -73,7 +73,7 @@ public class PrehomoJob implements Job {
@Override @Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("prehomo流程,定时任务开启 ====================================================="); log.info("prehomo流程,定时任务开启 =====================================================");
/*
//查询出已经启动了prehomo流程的数据 并且流程没有结束 //查询出已经启动了prehomo流程的数据 并且流程没有结束
QueryWrapper<ProjectTaskInventoryEO> queryProjectTaskInventoryWrapper = new QueryWrapper<>(); QueryWrapper<ProjectTaskInventoryEO> queryProjectTaskInventoryWrapper = new QueryWrapper<>();
queryProjectTaskInventoryWrapper.isNotNull("prehomo_p_id"); queryProjectTaskInventoryWrapper.isNotNull("prehomo_p_id");
@@ -367,5 +367,7 @@ public class PrehomoJob implements Job {
} }
} }
log.info("prehomo流程,定时任务结束 ====================================================="); log.info("prehomo流程,定时任务结束 =====================================================");
*/
} }
} }
@@ -14,8 +14,21 @@ import com.jero.modules.dummy.util.ListDiff;
import com.jero.modules.feishu.enums.TemplateInfoEnum2; import com.jero.modules.feishu.enums.TemplateInfoEnum2;
import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.project.entity.*; import com.jero.modules.project.entity.ProjectLawsInventoryEO;
import com.jero.modules.project.enums.*; import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectLibraryRoleRelEO;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.entity.ProjectUserPermission;
import com.jero.modules.project.enums.ComplianceFlowStatusEnum;
import com.jero.modules.project.enums.InventoryAffirmNodeEnum;
import com.jero.modules.project.enums.JumpLinkEnum;
import com.jero.modules.project.enums.PermissionDescriptionEnum;
import com.jero.modules.project.enums.ProjectInventoryFieldEnum;
import com.jero.modules.project.enums.ProjectMessageEnum;
import com.jero.modules.project.enums.ProjectRoleEnum;
import com.jero.modules.project.enums.ProjectUserLocationEnum;
import com.jero.modules.project.enums.RoleRelModelTypeEnum;
import com.jero.modules.project.enums.TaskStatusEnum;
import com.jero.modules.project.service.IProjectLawsInventoryEOService; import com.jero.modules.project.service.IProjectLawsInventoryEOService;
import com.jero.modules.project.service.IProjectLibraryRoleRelEOService; import com.jero.modules.project.service.IProjectLibraryRoleRelEOService;
import com.jero.modules.project.service.IProjectUserPermissionService; import com.jero.modules.project.service.IProjectUserPermissionService;
@@ -43,14 +56,20 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.SerializationUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -1248,6 +1267,243 @@ public class ProjectLawsInventoryEOEditServiceImpl {
throw new JeroBootException("该用户没有权限操作该数据!"); throw new JeroBootException("该用户没有权限操作该数据!");
} }
} }
public void editByIdPlatform(ProjectLawsInventoryEO projectLawsInventoryEO) {
Date now = new Date();
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// boolean checkResult = checkData(projectLawsInventoryEO.getProjectLibraryId(), currentUser.getId(), projectLawsInventoryEO.getId());
// if (checkResult) {
QueryWrapper<ProjectLawsInventoryEO> oldPliQueryWrap = new QueryWrapper<>();
oldPliQueryWrap.lambda().eq(ProjectLawsInventoryEO::getId, projectLawsInventoryEO.getId());
List<ProjectLawsInventoryEO> oldPliEoList = projectLawsInventoryEOService.list(oldPliQueryWrap);
this.updateProjectLawsInventorySendMessage(projectLawsInventoryEO);
// 根据法规清单id获取该法规清单在待办中心的任务明细
List<String> oldPliEoIdList = oldPliEoList.stream().map(ProjectLawsInventoryEO::getId).distinct().collect(Collectors.toList());
QueryWrapper<ProcessInfoDetailEO> pidEoQueryWrap = new QueryWrapper<>();
pidEoQueryWrap.lambda().in(ProcessInfoDetailEO::getProjectLawsInventoryId, oldPliEoIdList);
List<ProcessInfoDetailEO> pidEoList = this.processInfoDetailEOService.list(pidEoQueryWrap);
if (CollectionUtils.isNotEmpty(pidEoList)) {
// 处理编辑法规工程师的逻辑
this.updateRegulationOwner(projectLawsInventoryEO, oldPliEoList, pidEoList);
// 处理编辑责任人的逻辑
this.updateDutyPerson(projectLawsInventoryEO, oldPliEoList, pidEoList);
}
// 处理修改设计或验证符合性截止日期的逻辑
this.updateDesignOrVerifyEndTime(projectLawsInventoryEO, oldPliEoList);
projectLawsInventoryEO.setUpdateTime(now);
ProjectLawsInventoryEO projectLawsInventoryEOCopy = SerializationUtils.clone(projectLawsInventoryEO);//复制
//更新log
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String username = sysUser.getUsername();
String contentLog = username + "编辑了清单中的“" + projectLawsInventoryEO.getSerialNumber() + "”:</br>";
String enContentLog = username + " edited the “" + projectLawsInventoryEO.getSerialNumber() + "” in the list:</br>";
List<ProjectLawsInventoryEO> infoEOList = new ArrayList<>();
infoEOList.add(projectLawsInventoryEO);
List<ProjectLawsInventoryEO> infoEOListCopy = new ArrayList<>();
infoEOListCopy.add(projectLawsInventoryEOCopy);
//查询数据库里原来的数据
QueryWrapper<ProjectLawsInventoryEO> queryWrapper = new QueryWrapper<>();
List<ProjectLawsInventoryEO> dataList = projectLawsInventoryEOService.list(queryWrapper.eq("id", projectLawsInventoryEO.getId()));
List<ProjectLawsInventoryEO> dataListCopy = DeepCopyListUtil.depCopy(dataList);
LambdaUpdateWrapper<ProjectLawsInventoryEO> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(ProjectLawsInventoryEO::getId, projectLawsInventoryEO.getId());
setDateNull(projectLawsInventoryEO, updateWrapper);
//保存
projectLawsInventoryEOService.update(projectLawsInventoryEO, updateWrapper);
// saveOrUpdate(projectLawsInventoryEO);
//获取编辑中的责任领域
List<String> dutyTerritoryList = new ArrayList<>();
dutyTerritoryList = Arrays.asList(projectLawsInventoryEO.getDutyTerritory().split(","));
dutyTerritoryList = dutyTerritoryList.stream().distinct().collect(Collectors.toList());
//获取当前的projectLibrartId
String projectLibrartId = projectLawsInventoryEO.getProjectLibraryId();
String cut = projectLawsInventoryEO.getCut();
Map<String, Object> params = new HashMap<>();
params.put("projectLibraryId", projectLibrartId);
params.put("userId", currentUser.getId());
params.put("modelType", RoleRelModelTypeEnum.LAWS_INVENTORY.getValue());
ProjectLibraryRoleRelEO projectLibraryRoleRelEO = projectLibraryRoleRelEOService.queryByProjectLibraryIdAndUserId(params);
String roleCode1 = projectLibraryRoleRelEO.getRoleCode();
//分别获取当前编辑中的设计符合性和认证符合性责任人
List<String> designDutyIdList = new ArrayList<>();
designDutyIdList = Arrays.asList(projectLawsInventoryEO.getDesignDutyId().split(","));
List<String> verifyDutyIdList = new ArrayList<>();
verifyDutyIdList = Arrays.asList(projectLawsInventoryEO.getVerifyDutyId().split(","));
//allDutyList 为法规工程师中验证符合性和确认符合中的责任人
List<String> allDutyList = new ArrayList<>();
allDutyList.addAll(designDutyIdList);
allDutyList.addAll(verifyDutyIdList);
allDutyList = allDutyList.stream().distinct().collect(Collectors.toList());
//获取相关责任领域下的和projectLibrartId的相关人员名单的信息
List<ProjectRelatedPersonnel> projectRelatedPersonnelList = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritoy(projectLibrartId, dutyTerritoryList);
List<String> allList = new ArrayList<>();
List<String> enginnerList = new ArrayList<>();
List<String> lawEnginnerList = new ArrayList<>();
List<String> enginnerLawSetList = new ArrayList<>();
List<String> enginnerAttSetList = new ArrayList<>();
//根据相关人员名单获取的工程接口人
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
String enginneringInterfacePerson = relatedPersonnel.getEngineeringInterfacePerson();
if (!StringUtils.isEmpty(enginneringInterfacePerson)) {
enginnerList = Arrays.stream(enginneringInterfacePerson.split(",")).collect(Collectors.toList());
allList.addAll(enginnerList);
}
}
//获取相关人员名单中的法规工程师
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
String lawEngineer = relatedPersonnel.getLawEngineer();
if (!StringUtils.isEmpty(lawEngineer)) {
lawEnginnerList = Arrays.stream(lawEngineer.split(",")).collect(Collectors.toList());
allList.addAll(lawEnginnerList);
}
}
//获取相关人员名单中的工程接口-法规工程师设置
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
String engineerLawSet = relatedPersonnel.getEngineerLawSet();
if (!StringUtils.isEmpty(engineerLawSet)) {
enginnerLawSetList = Arrays.stream(engineerLawSet.split(",")).collect(Collectors.toList());
allList.addAll(enginnerLawSetList);
}
}
//获取相关人员名单中的工程接口-认证工程师设置
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
String engineerAttSet = relatedPersonnel.getEngineerAttSet();
if (!StringUtils.isEmpty(engineerAttSet)) {
enginnerAttSetList = Arrays.stream(engineerAttSet.split(",")).collect(Collectors.toList());
allList.addAll(enginnerAttSetList);
}
}
//获取当前项目库id的studio工程师和认证工程师
List<String> studionList = new ArrayList<>();
List<String> certificationEngineerList = new ArrayList<>();
List<ProjectLibraryBase> projectLibraryBases = projectLibraryBaseService.queryById(projectLibrartId, cut);
for (ProjectLibraryBase projectLibraryBase : projectLibraryBases) {
studionList.add(projectLibraryBase.getStudioEngineer());
String certificationEngineer = projectLibraryBase.getCertificationEngineer();
if (!StringUtils.isEmpty(certificationEngineer)) {
certificationEngineerList = Arrays.stream(certificationEngineer.split(",")).collect(Collectors.toList());
allList.addAll(certificationEngineerList);
}
}
allList = allList.stream().filter(all -> {
return StringUtils.isNotBlank(all);
}).distinct().collect(Collectors.toList());
/*
for(String all : allList){
if(all.equals("")){
allList.remove(all);
}
}
*/
//遍历所有人alllist中是否包含责任人,如果包含不用操作
//-------如果不包含,再去判断当前用户的角色是studio法规还是认证
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
if (allList.size() > 0) {
for (String allDuty : allDutyList) {
String dutyPerson = allDuty;
if (StringUtils.isNotEmpty(dutyPerson) && !allList.contains(dutyPerson) && StringUtils.isNotEmpty(roleCode1)) {
if (roleCode1.equals(com.jero.modules.project.enums.ProjectRoleEnum.STUDIO_ENGINEER.getValue())) {
if (relatedPersonnel.getEngineeringInterfacePerson() != null) {
String engineeringInterfacePerson = dutyPerson + "," + relatedPersonnel.getEngineeringInterfacePerson();
relatedPersonnel.setEngineeringInterfacePerson(engineeringInterfacePerson);
} else {
relatedPersonnel.setEngineeringInterfacePerson(dutyPerson);
}
} else if (roleCode1.equals(com.jero.modules.project.enums.ProjectRoleEnum.REGULATI_ENGINEER.getValue())) {
if (relatedPersonnel.getEngineerLawSet() != null) {
String engineerLawSet = dutyPerson + "," + relatedPersonnel.getEngineerLawSet();
relatedPersonnel.setEngineerLawSet(engineerLawSet);
} else {
relatedPersonnel.setEngineerLawSet(dutyPerson);
}
} else if (roleCode1.equals(com.jero.modules.project.enums.ProjectRoleEnum.HOMOLOGATION_ENGINEER.getValue())) {
if (relatedPersonnel.getEngineerAttSet() != null) {
String engineerAttSet = dutyPerson + "," + relatedPersonnel.getEngineerAttSet();
relatedPersonnel.setEngineerAttSet(engineerAttSet);
} else {
relatedPersonnel.setEngineerAttSet(dutyPerson);
}
}
}
}
}
}
this.projectRelatedPersonnelService.updateBatchById(projectRelatedPersonnelList);
//翻译-中文
translateData(infoEOList);
translateData(dataList);
//翻译-英文
translateDataToEn(infoEOListCopy);
translateDataToEn(dataListCopy);
//比对不同字段
Map<String, String> infoDiff = ListDiff.compareObject(dataList.get(0), projectLawsInventoryEO);
Map<String, String> infoDiffEn = ListDiff.compareObject(dataListCopy.get(0), projectLawsInventoryEOCopy);
//设置更新log
setContentLog(infoDiff, contentLog, infoDiffEn, enContentLog, projectLawsInventoryEO.getProjectLibraryId());
//验证用户是否是该法规上级 项目库的studio 如果是则同步更新流程
int roleCode = projectLawsInventoryEOService.checkUserRole(projectLawsInventoryEO.getProjectLibraryId(), currentUser.getId(), "");
if (StringUtils.equals(String.valueOf(roleCode), ProjectRoleEnum.STUDIO_ENGINEER.getValue())) {
//更新流程信息
projectLawsInventoryEOService.updateFlowInfo(projectLawsInventoryEO);
}
//设置权限 先删后加
List<ProjectUserPermission> adds = new ArrayList<>();
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getRegulationOwnerId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_REGULATION.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getHomologationEngineerId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getEngineeringInterfacePerson(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_INTERFACE.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignInitiatorId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignDutyId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoInitiatorId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoDutyId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyInitiatorId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyDutyId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
// }
// else {
// throw new JeroBootException("该用户没有权限操作该数据!");
// }
}
/** /**
* 发送消息 * 发送消息
@@ -4459,11 +4459,11 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," + title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," + "*标准编号,*责任领域,*工程接口人,*责任人," +
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称"; "交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称,备注";
}else { }else {
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," + title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," + "*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer"; "Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer,Remark";
} }
int pos = file.getOriginalFilename().lastIndexOf("."); int pos = file.getOriginalFilename().lastIndexOf(".");
@@ -4579,7 +4579,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if (i == 0) { if (i == 0) {
cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellType(HSSFCell.CELL_TYPE_STRING);
headerSb.append(cell.getStringCellValue() + ","); headerSb.append(cell.getStringCellValue() + ",");
if(j == 15){ if(j == 16){
break; break;
} }
} else if(i > 1){ } else if(i > 1){
@@ -4817,6 +4817,8 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
// 认证类型 // 认证类型
String attestationTypeName = projectCertificationInventoryEO.getAttestationTypeName(); String attestationTypeName = projectCertificationInventoryEO.getAttestationTypeName();
// 备注
String remark = projectCertificationInventoryEO.getRemark();
@@ -4989,6 +4991,18 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
} }
} }
if(StringUtils.isNotBlank(remark)){
if(remark.length() > 500){
String message = "";
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){
message = errorMsg + "备注不能超过500个字符";
}else{
message = errorMsg + " The Remark cannot contain more than 200 characters";
}
msgList.add(message);
}
}
} }
return msgList; return msgList;
} }
@@ -5659,6 +5673,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
case "产品型号": return "productModel"; case "产品型号": return "productModel";
case "生产企业名称": return "productionEnterpriseName"; case "生产企业名称": return "productionEnterpriseName";
case "认证进度": return "certificationProgress"; case "认证进度": return "certificationProgress";
case "备注": return "remark";
case "*Category": return "category"; case "*Category": return "category";
case "*Inspection Items": return "inspectionItem"; case "*Inspection Items": return "inspectionItem";
@@ -5678,6 +5693,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
case "Product Model": return "productModel"; case "Product Model": return "productModel";
case "Name Of Manufacturer": return "productionEnterpriseName"; case "Name Of Manufacturer": return "productionEnterpriseName";
case "Homologation Progress": return "certificationProgress"; case "Homologation Progress": return "certificationProgress";
case "Remark": return "remark";
default: return null; default: return null;
//"Deliverable Type,Deliverable Template,initiator,Assignee,Due Date," + //"Deliverable Type,Deliverable Template,initiator,Assignee,Due Date," +
@@ -5702,19 +5718,19 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," + title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," + "*标准编号,*责任领域,*工程接口人,*责任人," +
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称"; "交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称,备注";
}else { }else {
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," + title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," + "*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer"; "Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer,Remark";
} }
List<String> list = Arrays.asList(title.split(",")); List<String> list = Arrays.asList(title.split(","));
int index = 0; int index = 0;
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
index = list.indexOf("生产企业名称") + 1; index = list.indexOf("备注") + 1;
}else{ }else{
index = list.indexOf("Name Of Manufacturer") + 1; index = list.indexOf("Remark") + 1;
} }
//创建临时文件夹 //创建临时文件夹
@@ -543,19 +543,19 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl<Project
if(CollectionUtils.isNotEmpty(sysUsers)){ if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
} }
try { // try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); // FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle); // feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper); // feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower); // feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper); // feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower); // feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu); // feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 // feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); //// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) { // } catch (IOException e) {
log.error("飞书消息推送失败"); // log.error("飞书消息推送失败");
} // }
} }
} }
} }
@@ -800,22 +800,22 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
if(CollectionUtils.isNotEmpty(sysUsers)){ if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
} }
try { //
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) {
log.error("飞书消息推送失败");
}
//系统内部跳转链接 //系统内部跳转链接
//String href = "<a href='" //String href = "<a href='"
// + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType() // + JumpLinkEnum.INVENTORtry {
//// FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
//// feishuMsgVo.setTitle(msgTitle);
//// feishuMsgVo.setCnContentUpper(cnContentUpper);
//// feishuMsgVo.setCnContentLower(cnContentLower);
//// feishuMsgVo.setEnContentUpper(enContentUpper);
//// feishuMsgVo.setEnContentLower(enContentLower);
//// feishuMsgVo.setUrl(hrefFeishu);
//// feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
////// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
//// } catch (IOException e) {
//// log.error("飞书消息推送失败");
//// }Y_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
// + "&projectName=" + projectNameInfoEO.getProjectName() + "-" // + "&projectName=" + projectNameInfoEO.getProjectName() + "-"
// + projectYearNameInfoEO.getYearName() // + projectYearNameInfoEO.getYearName()
// + "&targetMarket=" + projectLibraryBase.getTargetMarket() // + "&targetMarket=" + projectLibraryBase.getTargetMarket()
@@ -1510,19 +1510,19 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
if(CollectionUtils.isNotEmpty(sysUsers)){ if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
} }
try { // try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); // FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle); // feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper); // feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower); // feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper); // feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower); // feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu); // feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 // feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); //// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) { // } catch (IOException e) {
log.error("飞书消息推送失败"); // log.error("飞书消息推送失败");
} // }
//系统内部跳转链接 //系统内部跳转链接
//String href = "<a href='" //String href = "<a href='"
// + JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType() // + JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
@@ -290,19 +290,19 @@ public class ProjectTaskInventoryFeedbackEOServiceImpl extends ServiceImpl<Proje
if(CollectionUtils.isNotEmpty(sysUsers)){ if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
} }
try { // try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); // FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle); // feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper); // feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower); // feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper); // feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower); // feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu); // feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 // feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); //// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) { // } catch (IOException e) {
log.error("飞书消息推送失败"); // log.error("飞书消息推送失败");
} // }
//系统内部跳转链接 //系统内部跳转链接
//String href = "<a href='" //String href = "<a href='"
// + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink() + projectLibraryBaseInfo.getId() + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType() // + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink() + projectLibraryBaseInfo.getId() + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
@@ -610,19 +610,19 @@ public class ProjectTaskInventoryFeedbackEOServiceImpl extends ServiceImpl<Proje
if(CollectionUtils.isNotEmpty(sysUsers)){ if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
} }
try { // try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); // FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle); // feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper); // feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower); // feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper); // feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower); // feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu); // feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 // feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); //// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) { // } catch (IOException e) {
log.error("飞书消息推送失败"); // log.error("飞书消息推送失败");
} // }
//系统内部跳转链接 //系统内部跳转链接
//String href = "<a href='" //String href = "<a href='"
// + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink() + projectLibraryBaseInfo.getId() + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType() // + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink() + projectLibraryBaseInfo.getId() + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
+29
View File
@@ -1988,4 +1988,33 @@ module.exports = {
matchempty:'The match is empty', matchempty:'The match is empty',
onlyDataProcessStatusDeleted:'Data can only be deleted if the process status is task ready, approved, or rejected by the responsible person', onlyDataProcessStatusDeleted:'Data can only be deleted if the process status is task ready, approved, or rejected by the responsible person',
platformitemhasbeenassociated:'A platform item has been associated', platformitemhasbeenassociated:'A platform item has been associated',
power:'power',
producer:'producer',
Nameplatelabel:'Nameplate label',
Batteryfilingrecord:'Battery filing record',
Modelinformation:'Model information',
Batterynationalcode:'Battery national code',
Recordnformation:'Record information',
Electriccellproductionenterprises:'Electric cell production enterprises',
Assemblymanufacturer:'Assembly manufacturer',
PartNumberCN:'Part Number (Domestic)',
PartNumberEU:'Part Number (Foreign)',
bitfilecode:'24-bit file code',
Vendorcode:'Vendor code',
Productclasscode:'Product class code',
Batterytypecode:'Battery type code',
Specificationcode:'Specification code',
Traceinformationcode:'Trace information code',
Productionyearmonthdateserialnumber:'Production year month date serial number',
dimension:'dimension(mm)',
Ratedcapacity:'Rated capacity(Ah)',
Nominalvoltage:'Nominal voltage(V)',
Ratedmass:'Rated mass(kg)',
Numbercontainedmodules:'Number of contained modules',
Moduleseriesparallelmode:'Module series parallel mode',
modulspecificationcodeused:'The module or monomer specification code used',
Coolingmode:'Cooling mode',
Filingcompletiontime:'Filing completion time',
Platformdevelopmentvalvepoint:'Platform development valve point',
Compliancemanagementvalvepoint:'Compliance management valve point',
} }
+31 -2
View File
@@ -1863,7 +1863,7 @@ module.exports = {
NA: '不涉及', NA: '不涉及',
reviewAndPass: '审查通过', reviewAndPass: '审查通过',
reviewAndReturn: '审查退回', reviewAndReturn: '审查退回',
electroniccontrollerparameter: '电子控制器参数', electroniccontrollerparameter: '控制器参数',
marketRegulationListDetails: '市场法规清单详情', marketRegulationListDetails: '市场法规清单详情',
marketRegulationList: '市场法规清单', marketRegulationList: '市场法规清单',
onlyDataWithTheCurrentCanBeManipulated: '仅能操作责任人为当前用户的数据', onlyDataWithTheCurrentCanBeManipulated: '仅能操作责任人为当前用户的数据',
@@ -3769,7 +3769,7 @@ module.exports = {
NA: '不涉及', NA: '不涉及',
reviewAndPass: '审查通过', reviewAndPass: '审查通过',
reviewAndReturn: '审查退回', reviewAndReturn: '审查退回',
electroniccontrollerparameter: '电子控制器参数', electroniccontrollerparameter: '控制器参数',
marketRegulationListDetails: '市场法规清单详情', marketRegulationListDetails: '市场法规清单详情',
marketRegulationList: '市场法规清单', marketRegulationList: '市场法规清单',
onlyDataWithTheCurrentCanBeManipulated: '仅能操作责任人为当前用户的数据', onlyDataWithTheCurrentCanBeManipulated: '仅能操作责任人为当前用户的数据',
@@ -3944,4 +3944,33 @@ module.exports = {
Processdetails:'流程详情', Processdetails:'流程详情',
matchempty:'匹配项为空', matchempty:'匹配项为空',
platformitemhasbeenassociated:'已关联平台件项目', platformitemhasbeenassociated:'已关联平台件项目',
power:'功率',
producer:'生产商',
Nameplatelabel:'铭牌标签',
Batteryfilingrecord:'电池备案记录',
Modelinformation:'型号信息',
Batterynationalcode:'电池国标码',
Recordnformation:'备案信息',
Electriccellproductionenterprises:'电芯生产企业',
Assemblymanufacturer:'总成生产企业',
PartNumberCN:'零件号国内',
PartNumberEU:'零件号国外',
bitfilecode:'24位备案码',
Vendorcode:'供应商代码',
Productclasscode:'产品类型代码',
Batterytypecode:'电池类型代码',
Specificationcode:'规格代码',
Traceinformationcode:'追溯信息代码',
Productionyearmonthdateserialnumber:'生产年月日序列号',
dimension:'尺寸(mm)',
Ratedcapacity:'额定容量(Ah)',
Nominalvoltage:'标称电压(V)',
Ratedmass:'额定质量(kg)',
Numbercontainedmodules:'包含模块个数',
Moduleseriesparallelmode:'模块串并联方式',
modulspecificationcodeused:'所用模块或单体规格代码',
Coolingmode:'冷却方式',
Filingcompletiontime:'备案完成时间',
Platformdevelopmentvalvepoint:'平台件开发阀点',
Compliancemanagementvalvepoint:'合规管理阀点',
} }
@@ -321,7 +321,24 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel-text" :prop="'dataList.'+index+'.remark'"
:rules="[{max: 500,message: $t('remarks') + $t('cannotExceed') + 500 + $t('Characters'),trigger: 'blur'
}]">
<a-textarea
style="width: 100%"
:placeholder="$t('PleaseEnter')+$t('remarks')"
v-model="item.remark" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<!-- <a-row :gutter="24">--> <!-- <a-row :gutter="24">-->
<!-- <a-col :span="12">--> <!-- <a-col :span="12">-->
<!-- <div class="box-title-text">--> <!-- <div class="box-title-text">-->
@@ -638,6 +655,22 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel-text" :prop="'remark'">
<a-textarea
style="width: 100%"
:placeholder="$t('PleaseEnter')+$t('remarks')"
v-model="formInline.remark" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :span="12" v-if="formInline.taskConfirmEndTime"> <a-col :span="12" v-if="formInline.taskConfirmEndTime">
<div class="box-title-text"> <div class="box-title-text">
@@ -770,7 +803,14 @@
message: this.$t('configurationItem') + this.$t('cannotExceed') + 300 + this.$t('Characters'), message: this.$t('configurationItem') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur' trigger: 'blur'
} }
] ],
remark:[
{
max: 500,
message: this.$t('remarks') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
],
}, },
disabled: false, disabled: false,
flowdisabled: false, flowdisabled: false,
@@ -1259,6 +1299,11 @@
::v-deep .ant-form-item-with-help { ::v-deep .ant-form-item-with-help {
margin-bottom: 25px; margin-bottom: 25px;
} }
.itemModel-text {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
</style> </style>
<style> <style>
.ant-input-disabled { .ant-input-disabled {
@@ -891,6 +891,13 @@
ellipsis: true, ellipsis: true,
scopedSlots: { customRender: 'CertificationProgress' } scopedSlots: { customRender: 'CertificationProgress' }
}, },
{
title: this.$t('remarks'),
align: 'left',
dataIndex: 'remark',
width: 210,
ellipsis: true,
},
{ {
title: this.$t('operation'), title: this.$t('operation'),
align: 'left', align: 'left',
@@ -23,15 +23,15 @@
:triggerChange="false" :dictCode="'brand'"/> :triggerChange="false" :dictCode="'brand'"/>
</div> </div>
</a-col> </a-col>
<a-col :md="6" :sm="8"> <!-- <a-col :md="6" :sm="8">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text" :title="$t('configurationItem')"> <!-- <div class="title-text" :title="$t('configurationItem')">-->
<span>{{$t('configurationItem')}}</span> <!-- <span>{{$t('configurationItem')}}</span>-->
</div> <!-- </div>-->
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('configurationItem')" <!-- <a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('configurationItem')"-->
v-model="queryParam.ipdInfo"></a-input> <!-- v-model="queryParam.ipdInfo"></a-input>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons"> <span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24"> <a-col :md="6" :sm="24">
@@ -161,14 +161,14 @@
ellipsis: true, ellipsis: true,
dataIndex: 'brandText' dataIndex: 'brandText'
}, },
{ // {
title: this.$t('configurationItem'), // title: this.$t('configurationItem'),
align: 'left', // align: 'left',
width: 180, // width: 180,
sorter:true, // sorter:true,
ellipsis: true, // ellipsis: true,
dataIndex: 'ipdInfo' // dataIndex: 'ipdInfo'
}, // },
{ {
title: this.$t('explain'), title: this.$t('explain'),
align: 'left', align: 'left',
@@ -15,42 +15,52 @@
<div class="content-text"> <div class="content-text">
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('entryName')">{{$t('entryName')}}</span> <span class="text-field-left" :title="$t('power')">{{$t('power')}}</span>
<span class="text-field-right" :title="queryForm.projectNameId" <span class="text-field-right" :title="queryForm.power"
>{{queryForm.projectNameId}}</span> >{{queryForm.power}}</span>
</div> </div>
<div class="text-field">
<span class="text-field-left" :title="$t('producer')">{{$t('producer')}}</span>
<span class="text-field-right" :title="queryForm.producer"
>{{queryForm.producer}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('targetMarket')">{{$t('targetMarket')}}</span>
<span class="text-field-right"
:title="queryForm.targetMarket_dictText"
>{{queryForm.targetMarket_dictText}}</span>
</div>
</div>
<div class="content-text">
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('brand')">{{$t('brand')}}</span> <span class="text-field-left" :title="$t('brand')">{{$t('brand')}}</span>
<span class="text-field-right" :title="queryForm.brandText" <span class="text-field-right" :title="queryForm.brandText"
>{{queryForm.brandText}}</span> >{{queryForm.brandText}}</span>
</div> </div>
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('configurationItem')">{{$t('configurationItem')}}</span> <span class="text-field-left" :title="$t('projectStatus')">{{$t('projectStatus')}}</span>
<span class="text-field-right text-field-right-color" <span class="text-field-right"
:title="queryForm.ipdInfo" :title="queryForm.projectStatus_dictText"
@click="urlClick(queryForm.ipdInfo)" >{{queryForm.projectStatus_dictText}}</span>
>{{queryForm.ipdInfo}}</span> </div>
<div class="text-field">
<span class="text-field-left" :title="$t('statisticalNodes')">{{$t('statisticalNodes')}}</span>
<span class="text-field-right"
:title="queryForm.dutyDepart"
>{{queryForm.dutyDepart}}</span>
</div> </div>
</div> </div>
<div class="content-text"> <div class="content-text">
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('regulatoryEngineer')">{{$t('regulatoryEngineer')}}</span> <span class="text-field-left" :title="$t('regulatoryEngineer')">{{$t('regulatoryEngineer')}}</span>
<span class="text-field-right" :title="queryForm.createBy" <span class="text-field-right" :title="queryForm.regulationOwnerIdName"
>{{queryForm.createBy}}</span> >{{queryForm.regulationOwnerIdName}}</span>
</div> </div>
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('dehicleDevelopmentPlan')">{{$t('dehicleDevelopmentPlan')}}</span> <span class="text-field-left" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
<span class="text-field-right text-field-right-color" <span class="text-field-right"
:title="queryForm.vehicleDevelopmentPlan" :title="queryForm.engineeringInterfacePersonName"
@click="urlClick(queryForm.vehicleDevelopmentPlan)" >{{queryForm.engineeringInterfacePersonName}}</span>
>{{queryForm.vehicleDevelopmentPlan}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('certificationProgram')">{{$t('certificationProgram')}}</span>
<span class="text-field-right text-field-right-color"
:title="queryForm.attestationPlan"
@click="urlClick(queryForm.attestationPlan)"
>{{queryForm.attestationPlan}}</span>
</div> </div>
</div> </div>
<div class="content-text"> <div class="content-text">
@@ -60,6 +70,32 @@
>{{queryForm.explanation}}</span> >{{queryForm.explanation}}</span>
</div> </div>
</div> </div>
<div class="content-text">
<div class="text-field">
<span class="text-field-left" :title="$t('Nameplatelabel')">{{$t('Nameplatelabel')}}</span>
<div>
<!-- brandLabel-->
<a-upload
:action="uploadAction+'?cut='+cut"
list-type="picture-card"
:file-list="fileList"
:disabled='true'
@preview="handlePreview"
@change="handleChange"
>
<!-- <div v-if="fileList.length">-->
<!-- <a-icon type="plus" />-->
<!-- <div class="ant-upload-text">-->
<!-- &lt;!&ndash; Upload&ndash;&gt;-->
<!-- </div>-->
<!-- </div>-->
</a-upload>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancelimg">
<img alt="example" style="width: 100%" :src="previewImage" />
</a-modal>
</div>
</div>
</div>
<div class="box-text" style="margin-top: 10px;margin-bottom: 10px"> <div class="box-text" style="margin-top: 10px;margin-bottom: 10px">
<div class="header-text"> <div class="header-text">
{{$t('complianceCertificationProgram')}} {{$t('complianceCertificationProgram')}}
@@ -136,12 +172,31 @@
}, },
selectedRowKeys: [], selectedRowKeys: [],
idList: [], idList: [],
previewVisible: false,
previewImage: '',
fileList: [],
projectNameList: [],
firstLevelDutyTerritoryList:[],
title: '',
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
state: undefined,
myuploadAction: window._CONFIG['domianURL'] + this.thisFileUploadUrl,
upDataList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
regulatoryCertificationTaskPlanList: [] regulatoryCertificationTaskPlanList: []
} }
}, },
mounted() { mounted() {
this.getForm() this.getForm()
this.administrators = false this.administrators = false
let long = localStorage.getItem('language')
this.cut = ''
if (long && long == 'zh-cn') {
this.cut = 'cn'
} else if (long && long == 'en-us') {
this.cut = 'en'
}
this.activeKey = this.$t('regulatoryComplianceManagement') this.activeKey = this.$t('regulatoryComplianceManagement')
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) { if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
this.userInfo().userRoleList.forEach(res => { this.userInfo().userRoleList.forEach(res => {
@@ -163,6 +218,23 @@
} else { } else {
this.queryForm.brandText = this.queryForm.brandText this.queryForm.brandText = this.queryForm.brandText
} }
let file = []
getAction('sys/common/getFileInfos', { id: this.queryForm.brandLabel }).then((res) => {
if (res.success) {
console.log(res.result)
res.result.forEach((item =>{
file.push({
name : item.fileName,
uid : item.id,
url : item.url
})
}))
console.log(file)
this.fileList = file
} else {
// this.$refs.uploadFile.perentHandleFunc()
}
})
} else { } else {
this.queryForm = {} this.queryForm = {}
} }
@@ -201,7 +273,20 @@
downloadFile('/platform/projectLibraryBase/exportProjectProgressStatisticsXls', downloadFile('/platform/projectLibraryBase/exportProjectProgressStatisticsXls',
this.queryForm.projectNameId+'-'+this.queryForm.projectVersion+'-'+this.$t('projectProgressStatistics') + '.xls', query) this.queryForm.projectNameId+'-'+this.queryForm.projectVersion+'-'+this.$t('projectProgressStatistics') + '.xls', query)
}, },
handleCancelimg() {
this.previewVisible = false;
},
async handlePreview(file) {
if (!file.url && !file.preview) {
file.preview = await getBase64(file.originFileObj);
}
this.previewImage = file.url || file.preview;
this.previewVisible = true;
},
handleChange({ fileList }) {
this.fileList = fileList;
console.log(this.fileList)
},
versionStatisticsClick() { versionStatisticsClick() {
this.$refs.versionStatisticsRef.addModel(JSON.parse(JSON.stringify(this.selectedRowKeys))) this.$refs.versionStatisticsRef.addModel(JSON.parse(JSON.stringify(this.selectedRowKeys)))
}, },
@@ -11,16 +11,49 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;"> style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading"> <a-spin :spinning="confirmLoading">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm"> <a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<!-- 项目基本信息-->
<div class="header-text">
{{$t('basicInformationOfParameters')}}
</div>
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<span class="Required">*</span> <span class="Required">*</span>
<span class="title-text-text" :title="$t('entryName')">{{$t('entryName')}}</span> <span class="title-text-text" :title="$t('power')">{{$t('power')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="projectNameId"> <a-form-model-item class="itemModel" prop="power">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('entryName')" <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('power')"
v-model="formInline.projectNameId"></a-input> v-model="formInline.power"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('producer')">{{$t('producer')}}</span>
</div>
<a-form-model-item class="itemModel" prop="producer">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('producer')"
v-model="formInline.producer"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('targetMarket')">{{$t('targetMarket')}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="targetMarket">
<j-multi-select-tag class="box-input" v-model="formInline.targetMarket"
:disabled="disabled"
:placeholder="$t('PleaseSelect')+$t('targetMarket')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
@@ -44,26 +77,41 @@
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<!-- <span class="Required">*</span>--> <span class="Required">*</span>
<span class="title-text-text" :title="$t('configurationItem')">{{$t('configurationItem')}}</span> <span class="title-text-text" :title="$t('projectStatus')">{{$t('projectStatus')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="ipdInfo"> <a-form-model-item class="itemModel-multi" prop="projectStatus">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('configurationItem')" <j-multi-select-tag class="box-input" v-model="formInline.projectStatus"
v-model="formInline.ipdInfo"></a-input> :disabled="disabled"
:placeholder="$t('PleaseSelect')+$t('projectStatus')"
:type="'select'"
:triggerChange="false" :dictCode="'project_status'"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<span class="title-text-text" :title="$t('certificationProgram')">{{$t('certificationProgram')}}</span> <span class="Required">*</span>
<span class="title-text-text" :title="$t('statisticalNodes')">{{$t('statisticalNodes')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="attestationPlan"> <a-form-model-item class="itemModel" prop="dutyDepart">
<a-input class="box-input" <a-select :placeholder="$t('PleaseSelect')+$t('statisticalNodes')"
:disabled="disabled" allowClear
:maxLength="200" show-search
v-model="formInline.attestationPlan" mode="multiple"
:placeholder="$t('PleaseEnter')+$t('certificationProgram')"/> optionFilterProp="label"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
v-model="formInline.dutyDepart">
<a-select-option v-for="(item, key) in firstLevelDutyTerritoryList"
:key="key"
:label="item.key"
:value="item.key">
<span style="display: inline-block;width: 100%" :title=" item.key ">
{{ item.key }}
</span>
</a-select-option>
</a-select>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
@@ -72,19 +120,68 @@
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<span class="title-text-text" <span class="Required">*</span>
:title="$t('dehicleDevelopmentPlan')">{{$t('dehicleDevelopmentPlan')}}</span> <span class="title-text-text" :title="$t('regulatoryEngineer')">{{$t('regulatoryEngineer')}}</span>
</div> </div>
<a-form-model-item class="itemModel" :prop="'vehicleDevelopmentPlan'"> <a-form-model-item class="itemModel" :prop="'regulationOwnerIdName'">
<a-input class="box-input" <PersonnelSelection :query="{db_field_name:'regulationOwnerId',db_field_txt:$t('regulatoryEngineer')}"
:disabled="disabled" :isSingleChoice="true"
:maxLength="200" :personneQuery="formInline"
v-model="formInline.vehicleDevelopmentPlan" @change="PersonnelSelectionChange"
:placeholder="$t('PleaseEnter')+$t('dehicleDevelopmentPlan')"/> v-model="formInline.regulationOwnerIdName"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
</div>
<a-form-model-item class="itemModel" prop="engineeringInterfacePersonName">
<PersonnelSelection :query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('regulatoryEngineer')}"
:isSingleChoice="true"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.engineeringInterfacePersonName"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Nameplatelabel')">{{$t('Nameplatelabel')}}</span>
</div>
<a-form-model-item class="itemModelimg" prop="explanation">
<div>
<!-- brandLabel-->
<a-upload
:action="uploadAction+'?state='+state+'&cut='+cut"
list-type="picture-card"
:file-list="fileList"
@preview="handlePreview"
@change="handleChange"
:headers="headers"
>
<div v-if="fileList.length < 20">
<a-icon type="plus" />
<div class="ant-upload-text">
<!-- Upload-->
</div>
</div>
</a-upload>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancelimg">
<img alt="example" style="width: 100%" :src="previewImage" />
</a-modal>
</div>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<span class="title-text-text" :title="$t('explain')">{{$t('explain')}}</span> <span class="title-text-text" :title="$t('explain')">{{$t('explain')}}</span>
@@ -98,146 +195,301 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<!-- <a-row :gutter="24">--> <!-- 电池备案记录-->
<!-- <a-col :span="12">--> <div class="header-text">
<!-- <div class="box-title-text">--> {{$t('Batteryfilingrecord')}}
<!-- <div class="title-text">--> </div>
<!-- <span class="Required">*</span>--> <!-- 型号信息-->
<!-- <span class="title-text-text" :title="$t('projectStatus')">{{$t('projectStatus')}}</span>--> <div class='header-title'>
<!-- </div>--> <span class='header-title-text'>{{$t('Modelinformation')}}</span>
<!-- <a-form-model-item class="itemModel" prop="projectStatus">--> </div>
<!-- <j-dict-select-tag class="box-input" v-model="formInline.projectStatus"--> <a-row :gutter="24">
<!-- :disabled="disabled"--> <a-col :span="12">
<!-- @input="handleInput('projectStatus')"--> <div class="box-title-text">
<!-- :placeholder="$t('PleaseSelect')+$t('projectStatus')"--> <div class="title-text">
<!-- :type="'select'"--> <span class="title-text-text" :title="$t('productModel')">{{$t('productModel')}}</span>
<!-- :triggerChange="false" :dictCode="'project_status'"/>--> </div>
<!-- </a-form-model-item>--> <a-form-model-item class="itemModel" prop="productModel">
<!-- </div>--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('productModel')"
<!-- </a-col>--> v-model="formInline.productModel"></a-input>
<!-- <a-col :span="12">--> </a-form-model-item>
<!-- <div class="box-title-text">--> </div>
<!-- <div class="title-text">--> </a-col>
<!-- <span class="title-text-text"--> <a-col :span="12">
<!-- :title="$t('brand')">{{$t('brand')}}</span>--> <div class="box-title-text">
<!-- </div>--> <div class="title-text">
<!-- <a-form-model-item class="itemModel" :prop="'brand'">--> <span class="title-text-text" :title="$t('Electriccellproductionenterprises')">{{$t('Electriccellproductionenterprises')}}</span>
<!-- <j-dict-select-tag v-model="formInline.brand"--> </div>
<!-- :placeholder="$t('PleaseSelect')+$t('brand')"--> <a-form-model-item class="itemModel" prop="Electriccellproductionenterprises">
<!-- :type="'select'"--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Electriccellproductionenterprises')"
<!-- :triggerChange="false" :dictCode="'brand'"/>--> v-model="formInline.cellEnterprise"></a-input>
<!-- </a-form-model-item>--> </a-form-model-item>
<!-- </div>--> </div>
<!-- </a-col>--> </a-col>
<!-- </a-row>--> </a-row>
<!-- <a-row :gutter="24">--> <a-row :gutter="24">
<!-- <a-col :span="12">--> <a-col :span="12">
<!-- <div class="box-title-text">--> <div class="box-title-text">
<!-- <div class="title-text">--> <div class="title-text">
<!-- <span class="Required">*</span>--> <span class="title-text-text" :title="$t('Assemblymanufacturer')">{{$t('Assemblymanufacturer')}}</span>
<!-- <span class="title-text-text" :title="$t('StudioEngineer')">{{$t('StudioEngineer')}}</span>--> </div>
<!-- </div>--> <a-form-model-item class="itemModel-multi" prop="Assemblymanufacturer">
<!-- <a-form-model-item class="itemModel-multi" :prop="'studioEngineerName'">--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Assemblymanufacturer')"
<!-- <PersonnelSelection :query="{db_field_name:'studioEngineer',db_field_txt:$t('StudioEngineer')}"--> v-model="formInline.assemblyEnterprise"></a-input>
<!-- :isSingleChoice="true"--> </a-form-model-item>
<!-- :personneQuery="formInline"--> </div>
<!-- v-if="visible"--> </a-col>
<!-- @change="PersonnelSelectionChange"--> <a-col :span="12">
<!-- :disabled="disabled"--> <div class="box-title-text">
<!-- v-model="formInline.studioEngineerName"/>--> <div class="title-text">
<!-- </a-form-model-item>--> <span class="title-text-text" :title="$t('PartNumberCN')">{{$t('PartNumberCN')}}</span>
<!-- </div>--> </div>
<!-- </a-col>--> <a-form-model-item class="itemModel" prop="PartNumberCN">
<!-- <a-col :span="12">--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('PartNumberCN')"
<!-- <div class="box-title-text">--> v-model="formInline.partNumberCn"></a-input>
<!-- <div class="title-text">--> </a-form-model-item>
<!-- <span class="title-text-text" :title="$t('certifiedEngineer')">{{$t('certifiedEngineer')}}</span>--> </div>
<!-- </div>--> </a-col>
<!-- <a-form-model-item class="itemModel-multi" :prop="'certificationEngineerName'">--> </a-row>
<!-- <PersonnelSelection--> <a-row :gutter="24">
<!-- :query="{db_field_name:'certificationEngineer',db_field_txt:$t('certifiedEngineer')}"--> <a-col :span="12">
<!-- :personneQuery="formInline"--> <div class="box-title-text">
<!-- v-if="visible"--> <div class="title-text">
<!-- @change="PersonnelSelectionChange"--> <span class="title-text-text" :title="$t('PartNumberEU')">{{$t('PartNumberEU')}}</span>
<!-- :disabled="disabled"--> </div>
<!-- v-model="formInline.certificationEngineerName"/>--> <a-form-model-item class="itemModel-multi" prop="PartNumberEU">
<!-- </a-form-model-item>--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('PartNumberEU')"
<!-- </div>--> v-model="formInline.partNumberEn"></a-input>
<!-- </a-col>--> </a-form-model-item>
<!-- </a-row>--> </div>
<!-- <a-row :gutter="24">--> </a-col>
<!-- <a-col :span="12">--> </a-row>
<!-- <div class="box-title-text">--> <!-- 电池国标码-->
<!-- <div class="title-text">--> <div class='header-title'>
<!-- <span class="title-text-text" :title="$t('DigitalPlatform')">{{$t('DigitalPlatform')}}</span>--> <span class='header-title-text'>{{$t('Batterynationalcode')}}</span>
<!-- </div>--> </div>
<!-- <a-form-model-item class="itemModel" :prop="'digitalPlatform'">--> <a-row :gutter="24">
<!-- <a-input class="box-input"--> <a-col :span="12">
<!-- :disabled="disabled"--> <div class="box-title-text">
<!-- v-model="formInline.digitalPlatform"--> <div class="title-text">
<!-- :placeholder="$t('PleaseEnter')+$t('DigitalPlatform')"/>--> <span class="title-text-text" :title="$t('bitfilecode')">{{$t('bitfilecode')}}</span>
<!-- </a-form-model-item>--> </div>
<!-- </div>--> <a-form-model-item class="itemModel" prop="bitfilecode">
<!-- </a-col>--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('bitfilecode')"
<!-- <a-col :span="12">--> v-model="formInline.filingCode"></a-input>
<!-- <div class="box-title-text">--> </a-form-model-item>
<!-- <div class="title-text">--> </div>
<!-- <span class="title-text-text" :title="$t('ModelPlatform')">{{$t('ModelPlatform')}}</span>--> </a-col>
<!-- </div>--> <a-col :span="12">
<!-- <a-form-model-item class="itemModel" prop="vehiclePlatform">--> <div class="box-title-text">
<!-- <a-input class="box-input"--> <div class="title-text">
<!-- :disabled="disabled"--> <span class="title-text-text" :title="$t('Vendorcode') + '(13)'">{{$t('Vendorcode') + '(13)'}}</span>
<!-- v-model="formInline.vehiclePlatform"--> </div>
<!-- :placeholder="$t('PleaseEnter')+$t('ModelPlatform')"/>--> <a-form-model-item class="itemModel" prop="endorcode">
<!-- </a-form-model-item>--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Vendorcode') + '(13)'"
<!-- </div>--> v-model="formInline.supplierCode"></a-input>
<!-- </a-col>--> </a-form-model-item>
<!-- </a-row>--> </div>
<!-- <a-row :gutter="24">--> </a-col>
<!-- <a-col :span="12">--> </a-row>
<!-- <div class="box-title-text">--> <a-row :gutter="24">
<!-- <div class="title-text">--> <a-col :span="12">
<!-- <span class="title-text-text" :title="$t('certificationProgram')">{{$t('certificationProgram')}}</span>--> <div class="box-title-text">
<!-- </div>--> <div class="title-text">
<!-- <a-form-model-item class="itemModel" prop="attestationPlan">--> <span class="title-text-text" :title="$t('Productclasscode') + '(4)'">{{$t('Productclasscode') + '(4)'}}</span>
<!-- <a-input class="box-input"--> </div>
<!-- :disabled="disabled"--> <a-form-model-item class="itemModel" prop="Productclasscode">
<!-- v-model="formInline.attestationPlan"--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Productclasscode') + '(4)'"
<!-- :placeholder="$t('PleaseEnter')+$t('certificationProgram')"/>--> v-model="formInline.productTypeCode"></a-input>
<!-- </a-form-model-item>--> </a-form-model-item>
<!-- </div>--> </div>
<!-- </a-col>--> </a-col>
<!-- <a-col :span="12">--> <a-col :span="12">
<!-- <div class="box-title-text">--> <div class="box-title-text">
<!-- <div class="title-text">--> <div class="title-text">
<!-- <span class="title-text-text"--> <span class="title-text-text" :title="$t('Batterytypecode') + '(5)'">{{$t('Batterytypecode') + '(5)'}}</span>
<!-- :title="$t('configurationInformation')">{{$t('configurationInformation')}}</span>--> </div>
<!-- </div>--> <a-form-model-item class="itemModel" prop="Batterytypecode">
<!-- <a-form-model-item class="itemModel" prop="ipdInfo">--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Batterytypecode') + '(5)'"
<!-- <a-input class="box-input"--> v-model="formInline.batteryTypeCode"></a-input>
<!-- :disabled="disabled"--> </a-form-model-item>
<!-- v-model="formInline.ipdInfo"--> </div>
<!-- :placeholder="$t('PleaseEnter')+$t('configurationInformation')"/>--> </a-col>
<!-- </a-form-model-item>--> </a-row>
<!-- </div>--> <a-row :gutter="24">
<!-- &lt;!&ndash; ^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$--> <a-col :span="12">
<!-- &ndash;&gt;--> <div class="box-title-text">
<!-- </a-col>--> <div class="title-text">
<!-- </a-row>--> <span class="title-text-text" :title="$t('Specificationcode') + '(67)'">{{$t('Specificationcode') + '(67)'}}</span>
<!-- <a-row :gutter="24">--> </div>
<!-- <a-col :span="24">--> <a-form-model-item class="itemModel-multi" prop="Specificationcode">
<!-- <div class="box-title-text">--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Specificationcode') + '(67)'"
<!-- <div class="title-text">--> v-model="formInline.specificationCode"></a-input>
<!-- <span class="title-text-text" :title="$t('explain')">{{$t('explain')}}</span>--> </a-form-model-item>
<!-- </div>--> </div>
<!-- <a-form-model-item class="itemModel" prop="explanation">--> </a-col>
<!-- <a-textarea :placeholder="$t('pleaseEnter')+$t('explain')"--> <a-col :span="12">
<!-- v-model="formInline.explanation"--> <div class="box-title-text">
<!-- :rows="4"/>--> <div class="title-text">
<!-- </a-form-model-item>--> <span class="title-text-text" :title="$t('Traceinformationcode') + '(814)'">{{$t('Traceinformationcode') + '(814)'}}</span>
<!-- </div>--> </div>
<!-- </a-col>--> <a-form-model-item class="itemModel-multi" prop="Traceinformationcode">
<!-- </a-row>--> <a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Traceinformationcode') + '(814)'"
v-model="formInline.traceabilityCode"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Productionyearmonthdateserialnumber') + '(1520)'">{{$t('Productionyearmonthdateserialnumber') + '(1520)'}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="Productionyearmonthdateserialnumber">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Productionyearmonthdateserialnumber') + '(1520)'"
v-model="formInline.ymdNumber"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<!-- 备案信息-->
<div class='header-title'>
<span class='header-title-text'>{{$t('Recordnformation')}}</span>
</div>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('dimension')">{{$t('dimension')}}</span>
</div>
<a-form-model-item class="itemModel" prop="dimension">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('dimension')"
v-model="formInline.size"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Ratedcapacity')">{{$t('Ratedcapacity')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Ratedcapacity">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Ratedcapacity')"
v-model="formInline.ratedCapacity"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Nominalvoltage')">{{$t('Nominalvoltage')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Nominalvoltage">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Nominalvoltage')"
v-model="formInline.nominalVoltage"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Ratedmass')">{{$t('Ratedmass')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Ratedmass">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Ratedmass')"
v-model="formInline.ratedMass"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Numbercontainedmodules')">{{$t('Numbercontainedmodules')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Numbercontainedmodules">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Numbercontainedmodules')"
v-model="formInline.moduleNumber"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Moduleseriesparallelmode')">{{$t('Moduleseriesparallelmode')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Moduleseriesparallelmode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Moduleseriesparallelmode')"
v-model="formInline.connectionType"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('modulspecificationcodeused')">{{$t('modulspecificationcodeused')}}</span>
</div>
<a-form-model-item class="itemModel" prop="modulspecificationcodeused">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('modulspecificationcodeused')"
v-model="formInline.moduleSpecificationCode"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Coolingmode')">{{$t('Coolingmode')}}</span>
</div>
<a-form-model-item class="itemModel" prop="dimension">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Coolingmode')"
v-model="formInline.coolingMethod"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<!-- 备注-->
<div class='header-title'>
<span class='header-title-text'>{{$t('remarks')}}</span>
</div>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Filingcompletiontime')">{{$t('Filingcompletiontime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="designDueDate">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('Filingcompletiontime')"
@change="dateChange({db_field_name:'filingCompletionTime'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.filingCompletionTime"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel" prop="remarks">
<a-textarea
:placeholder="$t('remarks')"
:maxLength="500"
v-model="formInline.remark" :rows="2"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model> </a-form-model>
</a-spin> </a-spin>
<div class="drawer-bootom-button"> <div class="drawer-bootom-button">
@@ -249,8 +501,20 @@
<script> <script>
import PersonnelSelection from '@/components/PersonnelSelection/index' import PersonnelSelection from '@/components/PersonnelSelection/index'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage' import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import moment from 'moment'
import Vue from 'vue'
function getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = () => resolve(reader.result)
reader.onerror = (error) => reject(error)
})
}
export default { export default {
name: 'addModel', name: 'addModel',
@@ -324,6 +588,30 @@
trigger: 'blur' trigger: 'blur'
} }
], ],
power:[
{
required: true,
message: this.$t('power') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 200,
message: this.$t('DigitalPlatform') + this.$t('cannotExceed') + 200 + this.$t('Characters'),
trigger: 'blur'
}
],
producer:[
{
required: true,
message: this.$t('producer') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 200,
message: this.$t('DigitalPlatform') + this.$t('cannotExceed') + 200 + this.$t('Characters'),
trigger: 'blur'
}
],
digitalPlatform: [ digitalPlatform: [
{ {
max: 200, max: 200,
@@ -345,6 +633,13 @@
trigger: 'change' trigger: 'change'
} }
], ],
targetMarket: [
{
required: true,
message: this.$t('targetMarket') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
brand: [ brand: [
{ {
required: true, required: true,
@@ -371,24 +666,97 @@
trigger: 'change' trigger: 'change'
} }
], ],
certificationEngineerName: [ dutyDepart: [
{ {
max: 100, required: true,
message: this.$t('certifiedEngineer') + this.$t('cannotExceed') + 100 + this.$t('Characters'), message: this.$t('statisticalNodes') + this.$t('cannotEmpty'),
trigger: 'change' trigger: 'change'
} }
] ],
regulationOwnerIdName: [
{
required: true,
message: this.$t('regulatoryEngineer') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
engineeringInterfacePersonName: [
{
required: true,
message: this.$t('engineeringInterfacePerson') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
}, },
disabled: false, disabled: false,
previewVisible: false,
previewImage: '',
cut: '',
fileList: [],
projectNameList: [], projectNameList: [],
title: '' firstLevelDutyTerritoryList:[],
title: '',
headers: {},
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
state: undefined,
myuploadAction: window._CONFIG['domianURL'] + this.thisFileUploadUrl,
upDataList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
} }
}, },
created() {
this.containerId = 'container-ty-' + new Date().getTime()
},
mounted() { mounted() {
this.getNameList() this.getNameList()
let long = localStorage.getItem('language')
this.cut = ''
if (long && long == 'zh-cn') {
this.cut = 'cn'
} else if (long && long == 'en-us') {
this.cut = 'en'
}
}, },
methods: { methods: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo']),
handleCancelimg() {
this.previewVisible = false;
},
async handlePreview(file) {
if (!file.url && !file.preview) {
file.preview = await getBase64(file.originFileObj);
}
this.previewImage = file.url || file.preview;
this.previewVisible = true;
},
handleChange({ fileList }) {
this.fileList = fileList;
console.log(this.fileList)
let filelist = []
let filelistId = []
this.fileList.forEach((item => {
filelist.push(item.response)
}))
console.log(filelist,'111')
filelist.forEach((item => {
filelistId.push(item.result.id)
}))
this.formInline.brandLabel = filelistId.join(',')
this.formInline = { ...this.formInline }
},
getFirstLevelDutyTerritory() {
getAction('/sys/dictItem/getFirstLevelDutyTerritory', {}).then((res) => {
if (res.success) {
this.firstLevelDutyTerritoryList = res.result
} else {
this.firstLevelDutyTerritoryList = []
}
})
},
dateChange(item) {
this.formInline[item.db_field_name] = this.formInline[item.db_field_name] ? moment(this.formInline[item.db_field_name]).format('YYYY-MM-DD') : ''
},
getNameList(value) { getNameList(value) {
getAction('project/projectNameInfoEO/list', {}).then((res) => { getAction('project/projectNameInfoEO/list', {}).then((res) => {
if (res.success) { if (res.success) {
@@ -397,9 +765,32 @@
let content = this.projectNameList.filter(res => { let content = this.projectNameList.filter(res => {
return res.id == value.projectNameId return res.id == value.projectNameId
}) })
if(value.dutyDepart){
value.dutyDepart = value.dutyDepart.split(',')
}
let file = []
getAction('sys/common/getFileInfos', { id: value.brandLabel }).then((res) => {
if (res.success) {
console.log(res.result)
res.result.forEach((item =>{
file.push({
name : item.fileName,
uid : item.id,
url : item.url
})
}))
console.log(file)
this.fileList = file
} else {
// this.$refs.uploadFile.perentHandleFunc()
}
})
this.formInline = value this.formInline = value
console.log(this.formInline) console.log(this.formInline)
this.formInline.engineeringInterfacePersonName = this.formInline.engineeringInterfacePersonName
this.formInline.regulationOwnerIdName = this.formInline.regulationOwnerIdName
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
this.$forceUpdate()
} }
} else { } else {
this.projectNameList = [] this.projectNameList = []
@@ -411,8 +802,12 @@
this.title = this.$t('add') this.title = this.$t('add')
this.formInline = {} this.formInline = {}
this.getNameList() this.getNameList()
this.formInline.studioEngineerName = this.userInfo().username this.getFirstLevelDutyTerritory()
this.formInline.studioEngineer = this.userInfo().id const token = Vue.ls.get(ACCESS_TOKEN)
this.headers = { 'X-Access-Token': token }
console.log(this.headers)
this.formInline.regulationOwnerIdName = this.userInfo().username
this.formInline.regulationOwnerId = this.userInfo().id
this.formInline.projectVersion = '00' this.formInline.projectVersion = '00'
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
this.$nextTick(() => { this.$nextTick(() => {
@@ -422,6 +817,9 @@
editModel(value) { editModel(value) {
this.visible = true this.visible = true
this.title = this.$t('edit') this.title = this.$t('edit')
const token = Vue.ls.get(ACCESS_TOKEN)
this.headers = { 'X-Access-Token': token }
console.log(this.headers)
this.getNameList(value) this.getNameList(value)
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ruleForm.clearValidate() this.$refs.ruleForm.clearValidate()
@@ -443,6 +841,7 @@
Action = postAction Action = postAction
} }
let query = JSON.parse(JSON.stringify(this.formInline)) let query = JSON.parse(JSON.stringify(this.formInline))
delete query.urlList
Object.keys(query).forEach(res => { Object.keys(query).forEach(res => {
if (query[res] && query[res] instanceof Array) { if (query[res] && query[res] instanceof Array) {
query[res] = query[res].join(',') query[res] = query[res].join(',')
@@ -582,7 +981,31 @@
height: 40px; height: 40px;
margin-bottom: 24px; margin-bottom: 24px;
} }
.itemModelimg {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
margin-bottom: 24px;
}
.header-text {
font-size: 16px;
color: #000000;
font-weight: bold;
}
.header-title-text{
font-size: 16px;
color: #000000;
line-height: 50px;
margin: 0 19px;
}
.header-title{
background: #F5F6F7;
width: 100%;
height: 50px;
margin-top: 10px;
margin-bottom: 10px;
}
.Required { .Required {
color: red; color: red;
margin-right: 4px; margin-right: 4px;
@@ -820,6 +820,13 @@
ellipsis: true, ellipsis: true,
scopedSlots: { customRender: 'nameOfManufacturer' } scopedSlots: { customRender: 'nameOfManufacturer' }
}, },
{
title: this.$t('remarks'),
align: 'left',
dataIndex: 'remark',
width: 180,
ellipsis: true,
},
{ {
title: this.$t('operation'), title: this.$t('operation'),
align: 'left', align: 'left',
@@ -11,7 +11,10 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;"> style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading"> <a-spin :spinning="confirmLoading">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm"> <a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<div v-for="(item,index) in formInline.list" :key="index"> <div class="header-text">
{{$t('Platformdevelopmentvalvepoint')}}
</div>
<div v-for="(item,index) in formInline.listUp" :key="index">
<div style='margin-left: 25px'> <div style='margin-left: 25px'>
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :span="12"> <a-col :span="12">
@@ -21,7 +24,7 @@
<span class="title-text-text" :title="$t('Nodename')">{{$t('Nodename')}}</span> <span class="title-text-text" :title="$t('Nodename')">{{$t('Nodename')}}</span>
</div> </div>
<a-form-model-item class="itemModel" <a-form-model-item class="itemModel"
:prop="'list.'+index+'.nodeName'" :prop="'listUp.'+index+'.nodeName'"
:rules="[{ required:true, :rules="[{ required:true,
message: $t('Nodename') + $t('cannotEmpty'), trigger: 'blur'}]" message: $t('Nodename') + $t('cannotEmpty'), trigger: 'blur'}]"
> >
@@ -50,7 +53,55 @@
</div> </div>
</a-col> </a-col>
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' @click="addClick(index)" type="plus"/> <a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' @click="addClick(index)" type="plus"/>
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' v-if="formInline.list.length > 1" @click="deleteClick(index)" <a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' v-if="formInline.listUp.length > 1" @click="deleteClick(index)"
type="minus" />
</a-row>
</div>
</div>
<div class="header-text">
{{$t('Compliancemanagementvalvepoint')}}
</div>
<div v-for="(item,index) in formInline.listDown" :key="index">
<div style='margin-left: 25px'>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('Nodename')">{{$t('Nodename')}}</span>
</div>
<a-form-model-item class="itemModel"
:prop="'listDown.'+index+'.nodeName'"
:rules="[{ required:true,
message: $t('Nodename') + $t('cannotEmpty'), trigger: 'blur'}]"
>
<a-input class="box-input"
v-model="item.nodeName"
:maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Nodename')"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12" style='margin-left: -49px'>
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Nodedate')">{{$t('Nodedate')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('Nodedate')"
@change="dateChange(item,index)"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="item.nodeTime"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' @click="addClickdown(index)" type="plus"/>
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' v-if="formInline.listDown.length > 1" @click="deleteClickdown(index)"
type="minus" /> type="minus" />
</a-row> </a-row>
</div> </div>
@@ -77,7 +128,8 @@
visible: false, visible: false,
confirmLoading: false, confirmLoading: false,
formInline: { formInline: {
list:[{}] listUp:[{}],
listDown:[{}],
}, },
rules: { rules: {
}, },
@@ -88,15 +140,27 @@
}, },
methods: { methods: {
addClick(index){ addClick(index){
if(this.formInline.list.length > 19){ if(this.formInline.listUp.length > 19){
this.$message.warning(this.$t('maximum')) this.$message.warning(this.$t('maximum'))
}else{ }else{
this.formInline.list.splice(index + 1, 0, {}) this.formInline.listUp.splice(index + 1, 0, {})
} }
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
}, },
deleteClick(index) { deleteClick(index) {
this.formInline.list.splice(index, 1) this.formInline.listUp.splice(index, 1)
this.formInline = { ...this.formInline }
},
addClickdown(index){
if(this.formInline.listDown.length > 19){
this.$message.warning(this.$t('maximum'))
}else{
this.formInline.listDown.splice(index + 1, 0, {})
}
this.formInline = { ...this.formInline }
},
deleteClickdown(index) {
this.formInline.listDown.splice(index, 1)
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
}, },
edit() { edit() {
@@ -107,13 +171,14 @@
this.settingQueryForm() this.settingQueryForm()
}, },
settingQueryForm() { settingQueryForm() {
getAction(this.url.settingQueryForm, { projectId: this.$route.query.id }).then((res) => { getAction('platform/platformTaskPlanningEO/queryListUpdate', { projectId: this.$route.query.id }).then((res) => {
if (res.success) { if (res.success) {
this.formInline.list = res.result ? res.result : [{}] this.formInline.listUp = res.result.listUp ? res.result.listUp : [{}]
this.formInline.listDown = res.result.listDown ? res.result.listDown : [{}]
if(res.result==null ||res.result.length == 0){ if(res.result==null ||res.result.length == 0){
this.formInline.list=[{}] this.formInline.listUp=[{}]
this.formInline.listDown=[{}]
} }
console.log(this.formInline.list)
} }
}) })
@@ -121,14 +186,23 @@
handleOk() { handleOk() {
this.$refs.ruleForm.validate(valid => { this.$refs.ruleForm.validate(valid => {
if (valid) { if (valid) {
if(this.formInline.list){ if(this.formInline.listUp){
this.formInline.list.forEach((item,index) => { this.formInline.listUp.forEach((item,index) => {
item.projectId = this.$route.query.id item.projectId = this.$route.query.id
if((item.nodeName == '' || item.nodeName == undefined) && (item.nodeTime == ''| item.nodeTime == undefined)){ if((item.nodeName == '' || item.nodeName == undefined) && (item.nodeTime == ''| item.nodeTime == undefined)){
this.formInline.list.splice(index, 1) // 调用splice方法删除指定的对象 this.formInline.listUp.splice(index, 1) // 调用splice方法删除指定的对象
} }
}) })
this.formInline.list = this.formInline.list this.formInline.listUp = this.formInline.listUp
}
if(this.formInline.listDown){
this.formInline.listDown.forEach((item,index) => {
item.projectId = this.$route.query.id
if((item.nodeName == '' || item.nodeName == undefined) && (item.nodeTime == ''| item.nodeTime == undefined)){
this.formInline.listDown.splice(index, 1) // 调用splice方法删除指定的对象
}
})
this.formInline.listDown = this.formInline.listDown
} }
let query = { let query = {
...this.formInline, ...this.formInline,
@@ -160,12 +234,14 @@
}, },
handleCancel() { handleCancel() {
this.formInline = { this.formInline = {
list:[{}] listUp:[{}],
listDown:[{}],
} }
this.visible = false this.visible = false
}, },
dateChange(item,index) { dateChange(item,index) {
this.formInline.list[index].danodeTimete = this.formInline.list[index].nodeTime ? moment(this.formInline.list[index].nodeTime).format('YYYY-MM-DD') : '' this.formInline.listUp[index].danodeTimete = this.formInline.listUp[index].nodeTime ? moment(this.formInline.listUp[index].nodeTime).format('YYYY-MM-DD') : ''
this.formInline.listDown[index].danodeTimete = this.formInline.listDown[index].nodeTime ? moment(this.formInline.listDown[index].nodeTime).format('YYYY-MM-DD') : ''
} }
} }
} }
@@ -184,7 +260,12 @@
/*.formAdd .ant-form-item {*/ /*.formAdd .ant-form-item {*/
/* margin-bottom: 20px;*/ /* margin-bottom: 20px;*/
/*}*/ /*}*/
.header-text {
font-size: 16px;
color: #000000;
font-weight: bold;
}
.itemModel .ant-form-item-control-wrapper { .itemModel .ant-form-item-control-wrapper {
width: 100%; width: 100%;
} }
@@ -226,6 +226,24 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel-text" :prop="'dataList.'+index+'.remark'"
:rules="[{max: 500,message: $t('remarks') + $t('cannotExceed') + 500 + $t('Characters'),trigger: 'blur'
}]">
<a-textarea
style="width: 100%"
:placeholder="$t('PleaseEnter')+$t('remarks')"
v-model="item.remark" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</div> </div>
</a-form-model> </a-form-model>
</a-spin> </a-spin>
@@ -548,4 +566,10 @@
::v-deep .ant-form-item-with-help { ::v-deep .ant-form-item-with-help {
margin-bottom: 25px; margin-bottom: 25px;
} }
.itemModel-text {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
</style> </style>
@@ -222,6 +222,22 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel-text" :prop="'remark'">
<a-textarea
style="width: 100%"
:placeholder="$t('PleaseEnter')+$t('remarks')"
v-model="formInline.remark" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model> </a-form-model>
</a-spin> </a-spin>
<div class="drawer-bootom-button" v-if="button"> <div class="drawer-bootom-button" v-if="button">
@@ -325,7 +341,14 @@
message: this.$t('Deliverables') + this.$t('cannotEmpty'), message: this.$t('Deliverables') + this.$t('cannotEmpty'),
trigger: 'change' trigger: 'change'
} }
] ],
remark:[
{
max: 500,
message: this.$t('remarks') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
],
} }
} }
}, },
@@ -560,4 +583,10 @@
::v-deep .ant-form-item-with-help { ::v-deep .ant-form-item-with-help {
margin-bottom: 25px; margin-bottom: 25px;
} }
.itemModel-text {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
</style> </style>
@@ -429,6 +429,13 @@
ellipsis: true, ellipsis: true,
scopedSlots: { customRender: 'deliverableTemplate' } scopedSlots: { customRender: 'deliverableTemplate' }
}, },
{
title: this.$t('remarks'),
align: 'left',
dataIndex: 'remark',
width: 330,
ellipsis: true
},
{ {
title: this.$t('operation'), title: this.$t('operation'),
align: 'left', align: 'left',