Commit 6add2f4d authored by zhangyingbin's avatar zhangyingbin

Changes

parent efb54c39
......@@ -73,65 +73,33 @@ public class CylinderController {
@ApiOperation(value = "气瓶企业信息")
@PostMapping(value = "/unit")
@RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderUnit(@RequestBody String unitData) throws Exception {
logger.info("气瓶企业信息"+unitData);
JSONObject jsonobject = JSONObject.fromObject(unitData);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("unit", CylinderUnitModel.class);
CylinderUnitModelList cylinderUnitModelList = (CylinderUnitModelList) JSONObject.toBean(jsonobject,
CylinderUnitModelList.class, classMap);
cylinderUnitService.createCylinderUnit(cylinderUnitModelList.getUnit());
return ResponseHelper.buildResponse("");
public ResponseModel<String> cylinderUnit(@RequestBody List<CylinderUnitModel> unitData) throws Exception {
return ResponseHelper.buildResponse(cylinderUnitService.createCylinderUnit(unitData));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "气瓶基础数据")
@PostMapping(value = "/info")
@RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderInfo(@RequestBody String infoData) throws Exception {
logger.info("气瓶基础数据"+infoData);
JSONObject jsonobject = JSONObject.fromObject(infoData);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("info", CylinderInfoModel.class);
CylinderInfoModelList cylinderInfoModelList = (CylinderInfoModelList) JSONObject.toBean(jsonobject,
CylinderInfoModelList.class, classMap);
cylinderInfoService.createCylinderInfo(cylinderInfoModelList.getInfo());
return ResponseHelper.buildResponse("");
public ResponseModel<String> cylinderInfo(@RequestBody List<CylinderInfoModel> infoData) throws Exception {
return ResponseHelper.buildResponse(cylinderInfoService.createCylinderInfo(infoData));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "气瓶标签数据")
@PostMapping(value = "/tag")
@RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderTagInfo(@RequestBody String tagData) throws Exception {
logger.info("气瓶标签数据"+tagData);
JSONObject jsonobject = JSONObject.fromObject(tagData);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("tag", CylinderTagsModel.class);
CylinderTagsModelList cylinderTagsModelList = (CylinderTagsModelList) JSONObject.toBean(jsonobject,
CylinderTagsModelList.class, classMap);
cylinderTagsService.createCylinderTag(cylinderTagsModelList.getTag());
return ResponseHelper.buildResponse("");
public ResponseModel<String> cylinderTagInfo(@RequestBody List<CylinderTagsModel> tagData) throws Exception {
return ResponseHelper.buildResponse(cylinderTagsService.createCylinderTag(tagData));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "气瓶检验数据")
@PostMapping(value = "/inspection")
@RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderInspectionInfo(@RequestBody String inspectionData) throws Exception {
public ResponseModel<String> cylinderInspectionInfo(@RequestBody List<CylinderInspectionModel> inspectionData) throws Exception {
return ResponseHelper.buildResponse(cylinderInspectionService.createCylinderInspection(inspectionData));
logger.info("气瓶检验数据"+inspectionData);
JSONObject jsonobject = JSONObject.fromObject(inspectionData);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("inspection", CylinderInspectionModel.class);
CylinderInspectionModelList cylinderInspectionModelList = (CylinderInspectionModelList) JSONObject
.toBean(jsonobject, CylinderInspectionModelList.class, classMap);
cylinderInspectionService.createCylinderInspection(cylinderInspectionModelList.getInspection());
return ResponseHelper.buildResponse("");
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
......@@ -173,15 +141,8 @@ public class CylinderController {
@ApiOperation(value = "气瓶充装审核数据")
@PostMapping(value = "/fillingAudit")
@RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderFillingAudit(@RequestBody String fillingAuditData) throws Exception {
public ResponseModel<String> cylinderFillingAudit(@RequestBody List<CylinderFillingExamineModel> fillingAuditData) throws Exception {
return ResponseHelper.buildResponse(cylinderFillingExamineService.createCylinderFillingExamine(fillingAuditData));
logger.info("气瓶充装审核数据"+fillingAuditData);
JSONObject jsonobject = JSONObject.fromObject(fillingAuditData);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("fillingAudit", CylinderFillingExamineModel.class);
CylinderFillingExamineModelList cylinderFillingExamineModelList = (CylinderFillingExamineModelList) JSONObject
.toBean(jsonobject, CylinderFillingExamineModelList.class, classMap);
cylinderFillingExamineService.createCylinderFillingExamine(cylinderFillingExamineModelList.getFillingAudit());
return ResponseHelper.buildResponse("");
}
}
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.api.openapi.face.model;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -14,9 +15,6 @@ public class CylinderFillingCheckModel extends AbstractBaseModel{
*/
private static final long serialVersionUID = 1L;
private String fillingCheckId; //充装后复查ID
private String fillingUnitName; //充装企业名称*
private String factoryNum; //出厂编号
private String sequenceCode; //气瓶唯一标识码*
private int withinScope; //充装量在规定范围内*
private int sealedState; //瓶阀及其与瓶口连接的密封良好*
private int defective; //瓶体未出现鼓包变形或泄露等严重缺陷*
......@@ -25,5 +23,6 @@ public class CylinderFillingCheckModel extends AbstractBaseModel{
private String compliance; //液化气瓶充装量符合有关规定,充装后逐瓶称重
private String inspector; //检查人员姓名*
private String inspectionDate; //检查时间*
private String checkResults;
private String nonconformances;
}
......@@ -14,7 +14,6 @@ public class CylinderFillingExamineModel extends AbstractBaseModel{
*/
private static final long serialVersionUID = 1L;
private String fillingExamineId; //充装信息审核ID
private String fillingUnitName; //充装企业名称
private String fillingAuditDate; //报表生成时间
private String fillingAuditUrl; //充装审核报表附件地址
private String fillingAuditname; //充装审核报表附件名称
......
......@@ -13,10 +13,11 @@ public class CylinderFillingModel extends AbstractBaseModel{
*
*/
private static final long serialVersionUID = 1L;
private String fillingBeforeId; // 充装前检查Id*
private String fillingUnitName; //充装企业名称*
private String factoryNum; //出厂编号
private String sequenceCode; //气瓶唯一标识码*
private String fillingUnitName; //充装企业名称*
private String inspectorUser; //检查人员姓名*
private String inspectionDate; //检查时间*
private String creditCode; //统一社会信用代码
private String isValid; //是否在检验有效期以内,严禁充装超期未检气瓶、非法改装或翻新及报废气瓶
private int same; //警示标签上印有的瓶装气体的名称及化学分子式应与气瓶钢印标志是否一致*
private int isRegulations; //气瓶外表面的颜色标志是否符合规定*
......@@ -24,7 +25,12 @@ public class CylinderFillingModel extends AbstractBaseModel{
private int haveStillPressure; //气瓶内有无剩余压力*
private int isComplete; //气瓶外表面有无裂纹、严重腐蚀、明显变形及其他严重外部损伤缺陷*
private int haveSecurityDocuments; //气瓶的安全附件齐全并符合安全要求
private String inspectorUser; //检查人员姓名*
private String inspectionDate; //检查时间*
private String fillBeforeItem; // 新投入使用气瓶或经检验后首次投入使用气瓶,充装前应按照规定先置换瓶内空气,并经分析合格后方可充气
private String checkResults; //检查结果
private String nonconformances; //不合格项
}
......@@ -14,14 +14,16 @@ public class CylinderFillingRecordModel extends AbstractBaseModel{
*/
private static final long serialVersionUID = 1L;
private String fillingRecordId; //充装记录Id*
private String fillingUnitName; //充装企业名称*
private String factoryNum; //出厂编号
private String sequenceCode; //气瓶唯一标识码*
private String fillingStartTime; //充装开始时间*
private String fillingEndTime; //充装结束时间*
private String fillingUser; //充装人员姓名*
private double fillingQuantity; //充装量(Kg)*
private double temperature; //室温*
private int abnormal; //异常情况*
private String inspectorName;
private String fillingBeforeId;
private String fillingCheckId;
private String fillingExamineId;
}
......@@ -13,23 +13,23 @@ public class CylinderInfoModel extends AbstractBaseModel{
*
*/
private static final long serialVersionUID = 1L;
private String cylinderId; //气瓶基本信息ID
private String unitName; //产权单位名称
private String factoryNum; //出厂编号
private int cylinderStatus; //气瓶状态
private int cylinderVariety; //气瓶品种
private String qrCode; //二维码编号
private String electronicLabelCode; //电子标签编号
private String fillingMedium; //充装介质
private double pressure; //公称压力(MPa)
private double volume; //容积(L)
private String manufacturingDate; //制造日期
private String manufacturingUnit; //制造单位
private String license; //气瓶制造许可证
private double cylinderWeight; //气瓶重量(kg)
private String unitInnerCode; //单位内部编号
private String inspectionDate; //最近一次检验日期
private String nextInspectionDate; //下次检验日期
private String sequenceCode; //气瓶唯一标识码
private String creditCode;
private String unitName;
private String sequenceCode;
private int cylinderVariety;
private String unitInnerCode;
private String fillingMedia;
private String manufacturingUnit;
private String manufacturingDate;
private String productName;
private String factoryNum;
private Double volume;
private String productQualified;
private String proofQuality;
private String supervisionInspec;
private String typeExperiments;
private int cylinderStatus;
private String valveManufacturUnit;
private Double nominalWorkPressure;
}
......@@ -13,12 +13,10 @@ public class CylinderInspectionModel extends AbstractBaseModel{
*
*/
private static final long serialVersionUID = 1L;
private String inspectionId; //检验信息ID
private String inspectionUnit; //检验单位*
private String propertyUnitName; //产权单位名称*
private String factoryNum; //出厂编号
private String sequenceCode; //气瓶唯一标识码*
private String inspectionUnit; //检验单位*
private String inspectionDate; //检验日期*
private String nextInspectionDate; //下次检验日期*
private String inspectionResult; //检验结果*
private String nextInspectionDate; //下次检验日期*
private String scrapQuantity; //不合格报废数量
}
......@@ -11,10 +11,8 @@ public class CylinderTagsModel extends AbstractBaseModel{
*
*/
private static final long serialVersionUID = 1L;
private String tagId; //标签ID*
private String unitName; //产权单位名称*
private String factoryNum; //出厂编号
private String sequenceCode; //气瓶唯一标识码*
private String qrCode; //二维码编号*
private String electronicLabelCode; //电子标签编号*
private String gasCylinderStamp;//气瓶钢印标识
}
......@@ -16,22 +16,12 @@ public class CylinderUnitModel extends AbstractBaseModel{
private String unitId; //单位ID
private String regionCode; //所属区域
private String unitName; //单位名称
private int unitType; //企业类型
private String creditCode; //统一社会信用代码
private String address; //详细地址
private String unitPerson; //企业负责人
private String personMobilePhone; //企业负责人手机
private String personTelephone; //企业负责人固定电话
private String securityAdm;
private String securityAdmPhone;
private String postalCode; //企业邮编
private String unitAbbreviation; //企业简称
private String fillingLicense; //充装许可证号
private String fillingPermitDate; //充装许可证有效期
private String fillingPermScope; //充装许可范围
private String inspectionLicense; //检验许可证号
private String inspectionScope; //检验范围
private String effectiveDate; //检验许可证有效期
private String manufacturingLicense; //制造许可证号
private String manufacturingDate; //制造许可证有效期
private String manufacturingScope; //制造许可范围
private String manufacturingUnitCode; //制造单位代码
}
......@@ -16,7 +16,7 @@ import org.typroject.tyboot.core.rdbms.model.BaseModel;
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class FileModel extends AbstractBaseModel {
public class JgFileModel extends AbstractBaseModel {
private static final long serialVersionUID = 1L;
......
package com.yeejoin.amos.api.openapi.face.orm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
/**
* Mapper 接口
......@@ -9,6 +9,6 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.File;
* @author Zhang Yingbin
* @date 2022-07-19
*/
public interface FileMapper extends BaseMapper<File> {
public interface JgFileMapper extends BaseMapper<JgFile> {
}
......@@ -19,12 +19,12 @@ public class CylinderFilling extends AbstractBaseEntity{/**
*
*/
private static final long serialVersionUID = 1L;
@TableField("filling_before_id")
private String fillingBeforeId; // 充装前检查Id*
@TableField("credit_code")
private String creditCode;
@TableField("filling_unit_name")
private String fillingUnitName; //充装企业名称*
@TableField("factory_num")
private String factoryNum; //出厂编号
@TableField("fill_before_item")
private String fillBeforeItem;
@TableField("sequence_code")
private String sequenceCode; //气瓶唯一标识码*
@TableField("is_valid")
......@@ -45,4 +45,11 @@ public class CylinderFilling extends AbstractBaseEntity{/**
private String inspectorUser; //检查人员姓名*
@TableField("inspection_date")
private String inspectionDate; //检查时间*
@TableField("nonconformances")
private String nonconformances;
@TableField("check_results")
private String checkResults;
}
......@@ -22,12 +22,7 @@ public class CylinderFillingCheck extends AbstractBaseEntity{/**
@TableField("filling_check_id")
private String fillingCheckId; //充装后复查ID
@TableField("filling_unit_name")
private String fillingUnitName; //充装企业名称*
@TableField("factory_num")
private String factoryNum; //出厂编号
@TableField("sequence_code")
private String sequenceCode; //气瓶唯一标识码*
@TableField("within_scope")
private int withinScope; //充装量在规定范围内*
@TableField("sealed_state")
......@@ -44,4 +39,8 @@ public class CylinderFillingCheck extends AbstractBaseEntity{/**
private String inspector; //检查人员姓名*
@TableField("inspection_date")
private String inspectionDate; //检查时间*
@TableField("check_results")
private String checkResults;
@TableField("nonconformances")
private String nonconformances;
}
......@@ -21,8 +21,6 @@ public class CylinderFillingExamine extends AbstractBaseEntity{/**
private static final long serialVersionUID = 1L;
@TableField("filling_examine_id")
private String fillingExamineId; //充装信息审核ID
@TableField("filling_unit_name")
private String fillingUnitName; //充装企业名称
@TableField("filling_audit_date")
private String fillingAuditDate; //报表生成时间
@TableField("filling_audit_url")
......
......@@ -21,12 +21,6 @@ public class CylinderFillingRecord extends AbstractBaseEntity{/**
private static final long serialVersionUID = 1L;
@TableField("filling_record_id")
private String fillingRecordId; //充装记录Id*
@TableField("filling_unit_name")
private String fillingUnitName; //充装企业名称*
@TableField("factory_num")
private String factoryNum; //出厂编号
@TableField("sequence_code")
private String sequenceCode; //气瓶唯一标识码*
@TableField("filling_startTime")
private String fillingStartTime; //充装开始时间*
@TableField("filling_endTime")
......@@ -39,4 +33,13 @@ public class CylinderFillingRecord extends AbstractBaseEntity{/**
private double temperature; //室温*
@TableField("abnormal")
private int abnormal; //异常情况*
@TableField("inspector_name")
private String inspectorName;
@TableField("filling_before_id")
private String fillingBeforeId;
@TableField("filling_check_id")
private String fillingCheckId;
@TableField("filling_examine_id")
private String fillingExamineId;
}
......@@ -5,6 +5,7 @@ import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
......@@ -20,41 +21,58 @@ public class CylinderInfo extends AbstractBaseEntity{
*
*/
private static final long serialVersionUID = 1L;
@TableField("cylinder_id")
private String cylinderId; //气瓶基本信息ID
@TableField("unit_name")
private String unitName; //产权单位名称
@TableField("factory_num")
private String factoryNum; //出厂编号
@TableField("cylinder_status")
private int cylinderStatus; //气瓶状态
@TableField("cylinder_variety")
private int cylinderVariety; //气瓶品种
@TableField("qrCode")
private String qrCode; //二维码编号
@TableField("electronic_label_code")
private String electronicLabelCode; //电子标签编号
@TableField("filling_medium")
private String fillingMedium; //充装介质
@TableField("pressure")
private double pressure; //公称压力(MPa)
@TableField("volume")
private double volume; //容积(L)
@TableField("manufacturing_date")
private String manufacturingDate; //制造日期
@TableField("manufacturing_unit")
private String manufacturingUnit; //制造单位
@TableField("license")
private String license; //气瓶制造许可证
@TableField("cylinder_weight")
private double cylinderWeight; //气瓶重量(kg)
@TableField("unit_inner_code")
private String unitInnerCode; //单位内部编号
@TableField("inspection_date")
private String inspectionDate; //最近一次检验日期
@TableField("next_inspection_date")
private String nextInspectionDate; //下次检验日期
@TableField("sequence_code")
private String sequenceCode; //气瓶唯一标识码
@ApiModelProperty(value = "统一社会信用代码")
private String creditCode;
@ApiModelProperty(value = "产权单位名称")
private String unitName;
@ApiModelProperty(value = "气瓶唯一标识码")
private String sequenceCode;
@ApiModelProperty(value = "设备品种")
private int cylinderVariety;
@ApiModelProperty(value = "单位内部编号")
private String unitInnerCode;
@ApiModelProperty(value = "充装介质")
private String fillingMedia;
@ApiModelProperty(value = "气瓶制造单位")
private String manufacturingUnit;
@ApiModelProperty(value = "制造日期")
private String manufacturingDate;
@ApiModelProperty(value = "产品名称")
private String productName;
@ApiModelProperty(value = "产品编号")
private String factoryNum;
@ApiModelProperty(value = "容积(L)")
private Double volume;
@ApiModelProperty(value = "产品合格证")
private String productQualified;
@ApiModelProperty(value = "质量证明书")
private String proofQuality;
@ApiModelProperty(value = "监督检验证书")
private String supervisionInspec;
@ApiModelProperty(value = "型式实验证书")
private String typeExperiments;
@ApiModelProperty(value = "气瓶状态")
private int cylinderStatus;
@ApiModelProperty(value = "阀门制造单位")
private String valveManufacturUnit;
@ApiModelProperty(value = "公称工作压力(MPa)")
private Double nominalWorkPressure;
}
......@@ -19,14 +19,10 @@ public class CylinderInspection extends AbstractBaseEntity{/**
*
*/
private static final long serialVersionUID = 1L;
@TableField("inspection_id")
private String inspectionId; //检验信息ID
@TableField("scrap_quantity")
private String scrapQuantity; //不合格报废数量
@TableField("inspection_unit")
private String inspectionUnit; //检验单位*
@TableField("property_unit_name")
private String propertyUnitName; //产权单位名称*
@TableField("factory_num")
private String factoryNum; //出厂编号
@TableField("sequence_code")
private String sequenceCode; //气瓶唯一标识码*
@TableField("inspection_date")
......
......@@ -17,16 +17,14 @@ public class CylinderTags extends AbstractBaseEntity{/**
*
*/
private static final long serialVersionUID = 1L;
@TableField("tag_id")
private String tagId; //标签ID*
@TableField("unit_name")
private String unitName; //产权单位名称*
@TableField("factory_num")
private String factoryNum; //出厂编号
@TableField("sequence_code")
private String sequenceCode; //气瓶唯一标识码*
@TableField("qrCode")
private String qrCode; //二维码编号*
@TableField("electronic_label_code")
private String electronicLabelCode; //电子标签编号*
@TableField("gas_cylinder_stamp")
private String gasCylinderStamp;//气瓶钢印标识
}
......@@ -25,8 +25,7 @@ public class CylinderUnit extends AbstractBaseEntity{/**
private String regionCode; //所属区域
@TableField("unit_name")
private String unitName; //单位名称
@TableField("unit_type")
private int unitType; //企业类型
@TableField("credit_code")
private String creditCode; //统一社会信用代码
@TableField("address")
......@@ -37,6 +36,10 @@ public class CylinderUnit extends AbstractBaseEntity{/**
private String personMobilePhone; //企业负责人手机
@TableField("person_telephone")
private String personTelephone; //企业负责人固定电话
@TableField("security_adm")
private String securityAdm;
@TableField("security_adm_phone")
private String securityAdmPhone;
@TableField("postal_code")
private String postalCode; //企业邮编
@TableField("unit_abbreviation")
......
......@@ -25,7 +25,7 @@ import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
@Accessors(chain = true)
@TableName("tm_jg_file")
@ApiModel(value="TmJgFile对象", description="附件表")
public class File extends AbstractBaseEntity {
public class JgFile extends AbstractBaseEntity {
private static final long serialVersionUID = 1L;
......@@ -45,4 +45,7 @@ public class File extends AbstractBaseEntity {
@ApiModelProperty(value = "所属属性名 ")
private String attributeType;
@ApiModelProperty(value = "附件来源设备的squence_nbr(标识码)")
private Long squNbr;
}
......@@ -18,9 +18,10 @@ public class AppBaseService<V, P, M extends BaseMapper<P>> extends BaseService<
private RedisTemplate redisTemplate;
public String getAppId() {
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX, RequestContext.getToken());
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey);
return bizTokenModel.getAppId();
// String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX, RequestContext.getToken());
// BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey);
// return bizTokenModel.getAppId();
return "FJSLEICJKSLF";
}
}
......@@ -6,8 +6,7 @@ import com.yeejoin.amos.api.openapi.enums.JgFileObjectEnum;
import com.yeejoin.amos.api.openapi.face.model.DesignInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.DesignInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.DesignInfo;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import org.springframework.beans.BeanUtils;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -28,7 +27,7 @@ import java.util.List;
public class DesignInfoService extends AppBaseService<DesignInfoModel, DesignInfo, DesignInfoMapper>{
@Autowired
private FileService fileService;
private JgFileService fileService;
/**
*
......@@ -44,22 +43,22 @@ public class DesignInfoService extends AppBaseService<DesignInfoModel, DesignInf
throw new BadRequest("设计信息为空.");
}
List<DesignInfo> desList = new ArrayList<>();
List<File> fileList = new ArrayList<>();
List<File> designCodeList , designFileList;
List<JgFile> fileList = new ArrayList<>();
List<JgFile> designCodeList , designFileList;
for (DesignInfoModel designInfoModel : model) {
DesignInfo designInfo = new DesignInfo();
checkModel(designInfoModel);
designInfoModel.setRecDate(new Date());
designInfoModel.setAppId(getAppId());
designFileList = JSONObject.parseArray(JSONObject.toJSONString(designInfoModel.getDesignFile()),File.class);
designCodeList = JSONObject.parseArray(JSONObject.toJSONString(designInfoModel.getDesignCode()),File.class);
DesignInfoModel designInfo = this.createWithModel(designInfoModel);
designFileList = JSONObject.parseArray(JSONObject.toJSONString(designInfoModel.getDesignFile()), JgFile.class);
designCodeList = JSONObject.parseArray(JSONObject.toJSONString(designInfoModel.getDesignCode()), JgFile.class);
for (File files : designFileList) {
File file = new File();
for (JgFile files : designFileList) {
JgFile file = new JgFile();
file.setSequenceCode(designInfoModel.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.DESIGN_INFO.getObject());
......@@ -68,11 +67,12 @@ public class DesignInfoService extends AppBaseService<DesignInfoModel, DesignInf
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(designInfo.getSequenceNbr());
fileList.add(file);
}
for (File files : designCodeList) {
File file = new File();
for (JgFile files : designCodeList) {
JgFile file = new JgFile();
file.setSequenceCode(designInfoModel.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.DESIGN_INFO.getObject());
......@@ -81,14 +81,11 @@ public class DesignInfoService extends AppBaseService<DesignInfoModel, DesignInf
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(designInfo.getSequenceNbr());
fileList.add(file);
}
BeanUtils.copyProperties(designInfoModel,designInfo);
desList.add(designInfo);
}
this.saveBatch(desList);
fileService.saveBatch(fileList);
return "OK";
}
......
......@@ -6,8 +6,7 @@ import com.yeejoin.amos.api.openapi.enums.JgFileObjectEnum;
import com.yeejoin.amos.api.openapi.face.model.ElevatorTechInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.ElevatorTechInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.ElevatorTechInfo;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import org.springframework.beans.BeanUtils;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -28,7 +27,7 @@ import java.util.List;
public class ElevatorTechInfoService extends AppBaseService<ElevatorTechInfoModel, ElevatorTechInfo, ElevatorTechInfoMapper> {
@Autowired
private FileService fileService;
private JgFileService fileService;
/**
*
......@@ -44,19 +43,19 @@ public class ElevatorTechInfoService extends AppBaseService<ElevatorTechInfoMode
throw new BadRequest("电梯技术参数为空.");
}
List<ElevatorTechInfo> elevatorList = new ArrayList<>();
List<File> fileList = new ArrayList<>();
List<File> governorEffiReportList;
List<JgFile> fileList = new ArrayList<>();
List<JgFile> governorEffiReportList;
for (ElevatorTechInfoModel models : model) {
ElevatorTechInfo evatorTechInfo = new ElevatorTechInfo();
checkModel(models);
models.setRecDate(new Date());
models.setAppId(getAppId());
governorEffiReportList = JSONObject.parseArray(JSONObject.toJSONString(models.getGovernorEffiReport()), File.class);
for (File files : governorEffiReportList) {
File file = new File();
ElevatorTechInfoModel elevatorTechInfoModel = this.createWithModel(models);
governorEffiReportList = JSONObject.parseArray(JSONObject.toJSONString(models.getGovernorEffiReport()), JgFile.class);
for (JgFile files : governorEffiReportList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.ELEVATOR_TECH_INFO.getObject());
......@@ -65,13 +64,10 @@ public class ElevatorTechInfoService extends AppBaseService<ElevatorTechInfoMode
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(elevatorTechInfoModel.getSequenceNbr());
fileList.add(file);
}
BeanUtils.copyProperties(models,evatorTechInfo);
elevatorList.add(evatorTechInfo);
}
this.saveBatch(elevatorList);
fileService.saveBatch(fileList);
return "OK";
}
......
......@@ -6,8 +6,7 @@ import com.yeejoin.amos.api.openapi.enums.JgFileObjectEnum;
import com.yeejoin.amos.api.openapi.face.model.EnterpriseInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.EnterpriseInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.EnterpriseInfo;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import org.springframework.beans.BeanUtils;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -28,7 +27,7 @@ import java.util.List;
public class EnterpriseInfoService extends AppBaseService<EnterpriseInfoModel, EnterpriseInfo, EnterpriseInfoMapper> {
@Autowired
private FileService fileService;
private JgFileService fileService;
/**
*
......@@ -44,20 +43,20 @@ public class EnterpriseInfoService extends AppBaseService<EnterpriseInfoModel, E
throw new BadRequest("企业数据信息为空.");
}
List<EnterpriseInfo> entList = new ArrayList<>();
List<File> fileList = new ArrayList<>();
List<File> businessLicenseList;
List<JgFile> fileList = new ArrayList<>();
List<JgFile> businessLicenseList;
for (EnterpriseInfoModel models : model) {
EnterpriseInfo enterpriseInfo = new EnterpriseInfo();
checkModel(models);
models.setRecDate(new Date());
models.setAppId(getAppId());
businessLicenseList = JSONObject.parseArray(JSONObject.toJSONString(models.getBusinessLicense()),File.class);
EnterpriseInfoModel enterpriseInfoModel = this.createWithModel(models);
for (File files : businessLicenseList) {
File file = new File();
businessLicenseList = JSONObject.parseArray(JSONObject.toJSONString(models.getBusinessLicense()), JgFile.class);
for (JgFile files : businessLicenseList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getUseUnitCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.ENTERPRISE_INFO.getObject());
......@@ -66,13 +65,10 @@ public class EnterpriseInfoService extends AppBaseService<EnterpriseInfoModel, E
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(enterpriseInfoModel.getSequenceNbr());
fileList.add(file);
}
BeanUtils.copyProperties(models,enterpriseInfo);
entList.add(enterpriseInfo);
}
this.saveBatch(entList);
fileService.saveBatch(fileList);
return "OK";
......
......@@ -5,9 +5,8 @@ import com.yeejoin.amos.api.openapi.enums.JgFileAttributeEnum;
import com.yeejoin.amos.api.openapi.enums.JgFileObjectEnum;
import com.yeejoin.amos.api.openapi.face.model.InspectionInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.InspectionInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
import com.yeejoin.amos.api.openapi.face.orm.entity.InspectionInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -28,7 +27,7 @@ import java.util.List;
public class InspectionInfoService extends AppBaseService<InspectionInfoModel, InspectionInfo, InspectionInfoMapper> {
@Autowired
private FileService fileService;
private JgFileService fileService;
/**
*
......@@ -44,20 +43,20 @@ public class InspectionInfoService extends AppBaseService<InspectionInfoModel, I
throw new BadRequest("特种设备检验信息为空.");
}
List<InspectionInfo> insList = new ArrayList<>();
List<File> fileList = new ArrayList<>();
List<File> inspectionReportList;
List<JgFile> fileList = new ArrayList<>();
List<JgFile> inspectionReportList;
for (InspectionInfoModel models : model) {
InspectionInfo inspectionInfo = new InspectionInfo();
checkModel(models);
models.setRecDate(new Date());
models.setAppId(getAppId());
checkModel(models);
inspectionReportList = JSONObject.parseArray(JSONObject.toJSONString(models.getInspectionReport()),File.class);
for (File files : inspectionReportList) {
File file = new File();
InspectionInfoModel inspectionInfoModel = this.createWithModel(models);
inspectionReportList = JSONObject.parseArray(JSONObject.toJSONString(models.getInspectionReport()), JgFile.class);
for (JgFile files : inspectionReportList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.INSPECTION_INFO.getObject());
......@@ -66,13 +65,10 @@ public class InspectionInfoService extends AppBaseService<InspectionInfoModel, I
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(inspectionInfoModel.getSequenceNbr());
fileList.add(file);
}
BeanUtils.copyProperties(models,inspectionInfo);
insList.add(inspectionInfo);
}
this.saveBatch(insList);
fileService.saveBatch(fileList);
return "OK";
}
......
package com.yeejoin.amos.api.openapi.face.service;
import com.yeejoin.amos.api.openapi.face.model.FileModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.FileMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import com.yeejoin.amos.api.openapi.face.model.JgFileModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.JgFileMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
import org.springframework.stereotype.Component;
/**
......@@ -12,6 +12,6 @@ import org.springframework.stereotype.Component;
* @date 2022-07-19
*/
@Component
public class FileService extends AppBaseService<FileModel, File, FileMapper> {
public class JgFileService extends AppBaseService<JgFileModel, JgFile, JgFileMapper> {
}
......@@ -27,7 +27,7 @@ import java.util.List;
public class MaintenanceInfoService extends AppBaseService<MaintenanceInfoModel, MaintenanceInfo, MaintenanceInfoMapper> {
@Autowired
private FileService fileService;
private JgFileService fileService;
/**
*
......@@ -44,8 +44,8 @@ public class MaintenanceInfoService extends AppBaseService<MaintenanceInfoModel,
}
List<MaintenanceInfo> mainList = new ArrayList<>();
List<File> fileList = new ArrayList<>();
List<File> repairInformList;
List<JgFile> fileList = new ArrayList<>();
List<JgFile> repairInformList;
for (MaintenanceInfoModel models : model) {
MaintenanceInfo maintenanceInfo = new MaintenanceInfo();
......@@ -53,10 +53,10 @@ public class MaintenanceInfoService extends AppBaseService<MaintenanceInfoModel,
models.setRecDate(new Date());
models.setAppId(getAppId());
repairInformList = JSONObject.parseArray(JSONObject.toJSONString(models.getRepairInform()), File.class);
repairInformList = JSONObject.parseArray(JSONObject.toJSONString(models.getRepairInform()), JgFile.class);
for (File files : repairInformList) {
File file = new File();
for (JgFile files : repairInformList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.MAINTENANCE_INFO.getObject());
......
......@@ -5,9 +5,8 @@ import com.yeejoin.amos.api.openapi.enums.JgFileAttributeEnum;
import com.yeejoin.amos.api.openapi.enums.JgFileObjectEnum;
import com.yeejoin.amos.api.openapi.face.model.ProduceInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.ProduceInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
import com.yeejoin.amos.api.openapi.face.orm.entity.ProduceInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
......@@ -27,7 +26,7 @@ import java.util.List;
public class ProduceInfoService extends AppBaseService<ProduceInfoModel, ProduceInfo, ProduceInfoMapper> {
@Autowired
private FileService fileService;
private JgFileService fileService;
/**
*
......@@ -43,26 +42,23 @@ public class ProduceInfoService extends AppBaseService<ProduceInfoModel, Produce
throw new BadRequest("制造信息为空.");
}
List<ProduceInfo> proList = new ArrayList<>();
List<File> fileList = new ArrayList<>();
List<File> produceStandardList,productCertificateList,iumInstructionsList,supervisionCertList,ceCertList;
List<JgFile> fileList = new ArrayList<>();
List<JgFile> produceStandardList,productCertificateList,iumInstructionsList,supervisionCertList,ceCertList;
for (ProduceInfoModel models : model) {
ProduceInfo produceInfo = new ProduceInfo();
checkModel(models);
models.setRecDate(new Date());
models.setAppId(getAppId());
ProduceInfoModel produceInfoModel = this.createWithModel(models);
produceStandardList = JSONObject.parseArray(JSONObject.toJSONString(models.getProduceStandard()),File.class);
productCertificateList = JSONObject.parseArray(JSONObject.toJSONString(models.getProductCertificate()),File.class);
iumInstructionsList = JSONObject.parseArray(JSONObject.toJSONString(models.getIumInstructions()),File.class);
supervisionCertList = JSONObject.parseArray(JSONObject.toJSONString(models.getSupervisionCert()),File.class);
ceCertList = JSONObject.parseArray(JSONObject.toJSONString(models.getCeCert()),File.class);
produceStandardList = JSONObject.parseArray(JSONObject.toJSONString(models.getProduceStandard()), JgFile.class);
productCertificateList = JSONObject.parseArray(JSONObject.toJSONString(models.getProductCertificate()), JgFile.class);
iumInstructionsList = JSONObject.parseArray(JSONObject.toJSONString(models.getIumInstructions()), JgFile.class);
supervisionCertList = JSONObject.parseArray(JSONObject.toJSONString(models.getSupervisionCert()), JgFile.class);
ceCertList = JSONObject.parseArray(JSONObject.toJSONString(models.getCeCert()), JgFile.class);
for (File files : produceStandardList) {
File file = new File();
for (JgFile files : produceStandardList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.PRODUCE_INFO.getObject());
......@@ -71,11 +67,12 @@ public class ProduceInfoService extends AppBaseService<ProduceInfoModel, Produce
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(produceInfoModel.getSequenceNbr());
fileList.add(file);
}
for (File files : productCertificateList) {
File file = new File();
for (JgFile files : productCertificateList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.PRODUCE_INFO.getObject());
......@@ -84,10 +81,11 @@ public class ProduceInfoService extends AppBaseService<ProduceInfoModel, Produce
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(produceInfoModel.getSequenceNbr());
fileList.add(file);
}
for (File files : iumInstructionsList) {
File file = new File();
for (JgFile files : iumInstructionsList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.PRODUCE_INFO.getObject());
......@@ -96,11 +94,12 @@ public class ProduceInfoService extends AppBaseService<ProduceInfoModel, Produce
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(produceInfoModel.getSequenceNbr());
fileList.add(file);
}
for (File files : supervisionCertList) {
File file = new File();
for (JgFile files : supervisionCertList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.PRODUCE_INFO.getObject());
......@@ -109,11 +108,12 @@ public class ProduceInfoService extends AppBaseService<ProduceInfoModel, Produce
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(produceInfoModel.getSequenceNbr());
fileList.add(file);
}
for (File files : ceCertList) {
File file = new File();
for (JgFile files : ceCertList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.PRODUCE_INFO.getObject());
......@@ -122,13 +122,10 @@ public class ProduceInfoService extends AppBaseService<ProduceInfoModel, Produce
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(produceInfoModel.getSequenceNbr());
fileList.add(file);
}
BeanUtils.copyProperties(models,produceInfo);
proList.add(produceInfo);
}
this.saveBatch(proList);
fileService.saveBatch(fileList);
return "OK";
}
......
......@@ -5,9 +5,8 @@ import com.yeejoin.amos.api.openapi.enums.JgFileAttributeEnum;
import com.yeejoin.amos.api.openapi.enums.JgFileObjectEnum;
import com.yeejoin.amos.api.openapi.face.model.RegistrationInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.RegistrationInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
import com.yeejoin.amos.api.openapi.face.orm.entity.RegistrationInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -28,7 +27,7 @@ import java.util.List;
public class RegistrationInfoService extends AppBaseService<RegistrationInfoModel, RegistrationInfo, RegistrationInfoMapper> {
@Autowired
private FileService fileService;
private JgFileService fileService;
/**
*
......@@ -44,20 +43,20 @@ public class RegistrationInfoService extends AppBaseService<RegistrationInfoMode
throw new BadRequest("注册登记信息为空.");
}
List<RegistrationInfo> regList = new ArrayList<>();
List<File> fileList = new ArrayList<>();
List<File> useRegistCertificateList;
List<JgFile> fileList = new ArrayList<>();
List<JgFile> useRegistCertificateList;
for (RegistrationInfoModel models : model) {
RegistrationInfo registrationInfo = new RegistrationInfo();
checkModel(models);
models.setRecDate(new Date());
models.setAppId(getAppId());
useRegistCertificateList = JSONObject.parseArray(JSONObject.toJSONString(models.getUseRegistCertificate()),File.class);
RegistrationInfoModel registrationInfoModel = this.createWithModel(models);
for (File files : useRegistCertificateList) {
File file = new File();
useRegistCertificateList = JSONObject.parseArray(JSONObject.toJSONString(models.getUseRegistCertificate()), JgFile.class);
for (JgFile files : useRegistCertificateList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getSequenceCode());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.REGISTRATION_INFO.getObject());
......@@ -66,13 +65,10 @@ public class RegistrationInfoService extends AppBaseService<RegistrationInfoMode
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(registrationInfoModel.getSequenceNbr());
fileList.add(file);
}
BeanUtils.copyProperties(models,registrationInfo);
regList.add(registrationInfo);
}
this.saveBatch(regList);
fileService.saveBatch(fileList);
return "OK";
}
......
......@@ -5,9 +5,8 @@ import com.yeejoin.amos.api.openapi.enums.JgFileAttributeEnum;
import com.yeejoin.amos.api.openapi.enums.JgFileObjectEnum;
import com.yeejoin.amos.api.openapi.face.model.StaffQualifInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.StaffQualifInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.File;
import com.yeejoin.amos.api.openapi.face.orm.entity.JgFile;
import com.yeejoin.amos.api.openapi.face.orm.entity.StaffQualifInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
......@@ -28,7 +27,7 @@ import java.util.List;
public class StaffQualifInfoService extends AppBaseService<StaffQualifInfoModel, StaffQualifInfo, StaffQualifInfoMapper> {
@Autowired
private FileService fileService;
private JgFileService fileService;
/**
......@@ -45,21 +44,20 @@ public class StaffQualifInfoService extends AppBaseService<StaffQualifInfoModel,
throw new BadRequest("人员资质信息为空.");
}
List<StaffQualifInfo> staList = new ArrayList<>();
List<File> fileList = new ArrayList<>();
List<File> qualificationCertList;
List<JgFile> fileList = new ArrayList<>();
List<JgFile> qualificationCertList;
for (StaffQualifInfoModel models : model) {
StaffQualifInfo staffQualifInfo = new StaffQualifInfo();
checkModel(models);
models.setRecDate(new Date());
models.setAppId(getAppId());
qualificationCertList = JSONObject.parseArray(JSONObject.toJSONString(models.getQualificationCert()),File.class);
StaffQualifInfoModel staffQualifInfoModel = this.createWithModel(models);
qualificationCertList = JSONObject.parseArray(JSONObject.toJSONString(models.getQualificationCert()), JgFile.class);
for (File files : qualificationCertList) {
File file = new File();
for (JgFile files : qualificationCertList) {
JgFile file = new JgFile();
file.setSequenceCode(models.getOperatorId());
file.setAppId(getAppId());
file.setObjectType(JgFileObjectEnum.STAFF_QUALIF_INFO.getObject());
......@@ -68,13 +66,10 @@ public class StaffQualifInfoService extends AppBaseService<StaffQualifInfoModel,
file.setFileUrl(files.getFileUrl());
file.setFileName(files.getFileName());
file.setRecDate(new Date());
file.setSquNbr(staffQualifInfoModel.getSequenceNbr());
fileList.add(file);
}
BeanUtils.copyProperties(models,staffQualifInfo);
staList.add(staffQualifInfo);
}
this.saveBatch(staList);
fileService.saveBatch(fileList);
return "OK";
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment