diff --git a/src/main/java/com/pms/ocp/common/handler/MYLocalDateTimeTypeHandler.java b/src/main/java/com/pms/ocp/common/handler/MYLocalDateTimeTypeHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..8efbd9f9b6502b81d390793eb80696cfb93f59d0 --- /dev/null +++ b/src/main/java/com/pms/ocp/common/handler/MYLocalDateTimeTypeHandler.java @@ -0,0 +1,54 @@ +package com.pms.ocp.common.handler; + +import org.apache.ibatis.type.LocalDateTimeTypeHandler; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.time.ZoneOffset; + +/** + * @Auther: wangjian + * @Date: 2022/3/10 10:10 + * @Description:时间类型处理器 + */ +public class MYLocalDateTimeTypeHandler extends LocalDateTimeTypeHandler { +// @Override +// public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException { +// Timestamp timestamp = rs.getTimestamp(columnName); +// Long remindTime = timestamp.getTime(); +// return LocalDateTime.ofEpochSecond(remindTime,0, ZoneOffset.ofHours(8)); +// } + + +// @Override +// public LocalDateTime getResult(ResultSet rs, String columnName) throws SQLException { +// Object object = rs.getObject(columnName); +// System.out.println(object); +// if (object instanceof java.sql.Timestamp) {//在这里强行转换,将sql的时间转换为LocalDateTime +// //可以根据自己的需要进行转化 +// return LocalDateTime.ofInstant(((Timestamp) object).toInstant(), ZoneOffset.ofHours(0)); +// } +// return super.getResult(rs, columnName); +// } + + @Override + public LocalDateTime getResult(ResultSet rs, String columnName) throws SQLException { + Object object = rs.getObject(columnName); + if (object == null) { + return null; + } + +// System.out.println(object); + // 如有需要 在这里强行转换,将sql的时间转换为LocalDateTime + if (object instanceof java.sql.Timestamp) { + //可以根据自己的需要进行转化 + return LocalDateTime.ofInstant(((Timestamp) object).toInstant(), ZoneOffset.ofHours(8)); + } + + return super.getResult(rs, columnName); + } + + +} diff --git a/src/main/java/com/pms/ocp/common/handler/TimestampTypeHandler.java b/src/main/java/com/pms/ocp/common/handler/TimestampTypeHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..dab5ce2a0827d17d63cadc6d2391c55fea2c3b3d --- /dev/null +++ b/src/main/java/com/pms/ocp/common/handler/TimestampTypeHandler.java @@ -0,0 +1,66 @@ +package com.pms.ocp.common.handler; + +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; +import org.postgresql.util.PGTimestamp; + +import java.sql.*; +import java.time.LocalDateTime; + +/** + * @Auther: wangjian + * @Date: 2022/3/10 09:43 + * @Description: + */ +@MappedTypes({LocalDateTime.class}) +@MappedJdbcTypes({JdbcType.OTHER}) +public class TimestampTypeHandler extends BaseTypeHandler { + @Override + public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { + Timestamp p = null; + if (parameter != null) { + if (parameter instanceof LocalDateTime) { + PGTimestamp.valueOf(LocalDateTime.now()); + p = PGTimestamp.valueOf((LocalDateTime) parameter); + } + ps.setObject(i, p); + } + } + + /** + * Gets the nullable result. + * + * @param rs the rs + * @param columnName Colunm name, when configuration useColumnLabel is false + * @return the nullable result + * @throws SQLException the SQL exception + */ + @Override + public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { + return toFill(rs.getObject(columnName)); + } + + @Override + public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + return toFill(rs.getObject(columnIndex)); + } + + @Override + public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + return toFill(cs.getObject(columnIndex)); + } + + private Object toFill(Object v) { + if (v != null) { + if (v instanceof PGTimestamp) { + PGTimestamp p = (PGTimestamp) v; + return p.toLocalDateTime(); + } else if (v instanceof Timestamp) { + return ((Timestamp) v).toLocalDateTime(); + } + } + return v; + } +} \ No newline at end of file diff --git a/src/main/java/com/pms/ocp/controller/ModelBaseController.java b/src/main/java/com/pms/ocp/controller/ModelBaseController.java index 5e9f1caa2c2adf0b43bea0619b8da85857203241..d6ef10b2876b50300a0a3a8ed9ccd0f65f5072f2 100644 --- a/src/main/java/com/pms/ocp/controller/ModelBaseController.java +++ b/src/main/java/com/pms/ocp/controller/ModelBaseController.java @@ -1,8 +1,10 @@ package com.pms.ocp.controller; import com.pms.ocp.common.constants.CodeEnum; +import com.pms.ocp.model.dto.ModelPropertyDTO; import com.pms.ocp.model.entity.Model; import com.pms.ocp.model.entity.ModelNote; +import com.pms.ocp.model.entity.ModelProperty; import com.pms.ocp.model.entity.ModelType; import com.pms.ocp.model.vo.ResponseVO; import com.pms.ocp.service.ModelGroupService; @@ -44,6 +46,9 @@ public class ModelBaseController { @Autowired private ModelNoteService modelNoteService; + @Autowired + private ModelPropertyService propertyService; + /** * 模型分类-查询 * @@ -219,8 +224,10 @@ public class ModelBaseController { */ @ApiOperation("模型属性-增加") @PostMapping("create/model/property") - public ResponseVO createModelProperty() { - return ResponseVO.ok(); + public ResponseVO createModelProperty(@RequestBody ModelPropertyDTO modelPropertyDTO) { + + Integer i = modelPropertyService.createModelProperty(modelPropertyDTO); + return ResponseVO.ok(i); } /** @@ -230,8 +237,9 @@ public class ModelBaseController { */ @ApiOperation("模型属性-查询") @GetMapping("get/model/property") - public ResponseVO getModelProperty() { - return ResponseVO.ok(modelPropertyService.getModelProperty()); + public ResponseVO getModelProperty(@RequestParam(value = "modelCode", required = false) String modelCode, + @RequestParam(value = "propCode", required = false) String propCode) { + return ResponseVO.ok(modelPropertyService.listModelProperty(modelCode, propCode)); } /** @@ -241,19 +249,20 @@ public class ModelBaseController { */ @ApiOperation("模型属性-修改") @PostMapping("/update/model/property") - public ResponseVO updateModelProperty() { - return ResponseVO.ok(); + public ResponseVO updateModelProperty(@RequestBody ModelPropertyDTO modelPropertyDTO) { + + return ResponseVO.ok(modelPropertyService.updateModelProperty(modelPropertyDTO)); } /** - * 模型属性-删除 + * 模型属性-删除/批量删除 * * @return */ - @ApiOperation("模型属性-删除") + @ApiOperation("模型属性-删除/批量删除") @PostMapping("/delete/model/property") - public ResponseVO deleteModelProperty() { - return ResponseVO.ok(); + public ResponseVO deleteModelProperty(@RequestBody List ids) { + return ResponseVO.ok(modelPropertyService.deletePatchModelProperty(ids)); } /** diff --git a/src/main/java/com/pms/ocp/mapper/ModelPropertyMapper.java b/src/main/java/com/pms/ocp/mapper/ModelPropertyMapper.java index 52de9394071b5be5ee8ae7f34585616007a19d67..fcb91b2cfaf4d2acd4263d514584138712fd5eaa 100644 --- a/src/main/java/com/pms/ocp/mapper/ModelPropertyMapper.java +++ b/src/main/java/com/pms/ocp/mapper/ModelPropertyMapper.java @@ -12,5 +12,5 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper -public interface ModelPropertyMapper extends BaseMapper { +public interface ModelPropertyMapper extends BaseMapper { } diff --git a/src/main/java/com/pms/ocp/model/dto/ModelPropertyDTO.java b/src/main/java/com/pms/ocp/model/dto/ModelPropertyDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..b01ac9d33cb9845f8f8425c368729e128cafbf58 --- /dev/null +++ b/src/main/java/com/pms/ocp/model/dto/ModelPropertyDTO.java @@ -0,0 +1,143 @@ +package com.pms.ocp.model.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.sql.Date; +import java.time.LocalDateTime; + +/** + * @Auther: wangjian + * @Date: 2022/2/22 16:40 + * @Description:模型属性DTO对象 + */ + +@ApiModel(value = "模型属性DTO对象") +@Data +public class ModelPropertyDTO { + + /** + * 模型属性编号 + */ + @ApiModelProperty(value = "模型属性编号") + private String objId; + + /** + * 模型编号 + */ + @ApiModelProperty(value = "模型编号") + private String modelCode; + + /** + * 属性名称 + */ + @ApiModelProperty(value = "属性名称") + private String columnName; + + /** + * 属性编码 + */ + @ApiModelProperty(value = "属性编码") + private String propCode; + + /** + * 属性描述 + */ + @ApiModelProperty(value = "属性描述") + private String columnComments; + + /** + * 数据类型 + */ + @ApiModelProperty(value = "数据类型") + private Integer dataType; + + /** + * 数据长度 + */ + @ApiModelProperty(value = "数据长度") + private Integer dataLength; + + /** + * 数据精度 + */ + @ApiModelProperty(value = "数据精度") + private Integer dataScale; + + /** + * 是否主键 0:否,1:是 + */ + @ApiModelProperty(value = "是否主键 0:否,1:是") + private Integer boolPrimaryKey; + + /** + * 是否必填 0:否,1:是 + */ + @ApiModelProperty(value = "是否必填 0:否,1:是") + private Integer boolRequired; + + /** + * 推广类型 0:统推,1:自建 + */ + @ApiModelProperty(value = "推广类型 0:统推,1:自建") + private String propPromotion; + + /** + * 显示顺序 + */ + @ApiModelProperty(value = "显示顺序") + private Integer propOrderNo; + + /** + * 提交人编号 + */ + @ApiModelProperty(value = "提交人编号") + private String propUserId; + + /** + * 提交人姓名 + */ + @ApiModelProperty(value = "提交人姓名") + private String propUserName; + + /** + * 创建时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty(value = "创建时间") + private Date propCtime; + + /** + * 修改时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty(value = "修改时间") + private Date propMtime; + +} + +// 字段名称 字段描述 字段类型 允许为NULL 备注 +// prop_id 主键 varchar(42) 否 +// model_id 模型id varchar(42) 否 +// column_name 属性名称 varchar(50) 否 +// column_code 属性编码 varchar(42) 否 +// column_comments 属性描述 varchar(50) 否 +// data_type 数据类型 int4 否 +// data_length 数据长度 int4 是 +// data_scale 数据精度 int4 是 +// is_pk 是否主键 int4 否 0:否,1:是 +// is_required 是否必填 int4 是 0:否,1:是 +// prop_promotion 推广类型 int4 是 0:统推,1:自建 +// company_id 省公司ID varchar(42) 是 +// company_name 省公司名称 varchar(50) 是 +// prop _dispidx 显示顺序 int4 否 +// prop_user_id 提交人id varchar(42) 否 +// prop_user_name 提交人姓名 varchar(64) 否 +// prop_ctime 创建时间 timestamp(6) 否 +// prop_mtime 修改时间 timestamp(6) 否 diff --git a/src/main/java/com/pms/ocp/model/entity/ModelProperty.java b/src/main/java/com/pms/ocp/model/entity/ModelProperty.java index ff930b3aaa19fbcbbc26d14abcf8570fd14740b9..afcef546c2e8e72f1426e9048592ca3b9c8c0574 100644 --- a/src/main/java/com/pms/ocp/model/entity/ModelProperty.java +++ b/src/main/java/com/pms/ocp/model/entity/ModelProperty.java @@ -3,9 +3,16 @@ package com.pms.ocp.model.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.AllArgsConstructor; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; /** * @Auther: wangjian @@ -13,6 +20,7 @@ import lombok.NoArgsConstructor; * @Description:模型属性对象 */ @Data +@Accessors(chain = true) @TableName("ocp_model_prop") public class ModelProperty{ @@ -45,41 +53,39 @@ public class ModelProperty{ /** * 数据类型 */ - private String dataType; + private Integer dataType; /** * 数据长度 */ - private String dataLength; + private Integer dataLength; /** * 数据精度 */ - private String dataScale; + private Integer dataScale; /** * 是否主键 */ @TableField(value = "is_pk") - private String boolPrimaryKey; + private Integer boolPrimaryKey; /** * 是否必填 */ @TableField(value = "is_required") - private String boolRequired; + private Integer boolRequired; /** * 推广类型 */ private String propPromotion; - - /** * 显示顺序 */ - private String propOrderNo; + private Integer propOrderNo; /** * 提交人id @@ -94,14 +100,21 @@ public class ModelProperty{ /** * 创建时间 */ - @TableField(value = "prop_ctime") - private String prop_ctime; + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// @TableField() +// @TableField(typeHandler = TimestampTypeHandler.class) + private LocalDateTime propCtime; /** * 修改时间 */ - @TableField(value = "prop_mtime") - private String prop_mtime; +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// @TableField(typeHandler = TimestampTypeHandler.class) + private LocalDateTime propMtime; } // 字段名称 字段描述 字段类型 允许为NULL 备注 diff --git a/src/main/java/com/pms/ocp/service/ModelPropertyService.java b/src/main/java/com/pms/ocp/service/ModelPropertyService.java index df9e737230d9fbe29f2b02a81d457ada6a36e0c5..5fede0949932fdb1f0a152d395f7caab0e242306 100644 --- a/src/main/java/com/pms/ocp/service/ModelPropertyService.java +++ b/src/main/java/com/pms/ocp/service/ModelPropertyService.java @@ -1,6 +1,8 @@ package com.pms.ocp.service; +import com.pms.ocp.model.dto.ModelPropertyDTO; import com.pms.ocp.model.entity.ModelProperty; +import io.swagger.models.auth.In; import java.util.List; @@ -14,26 +16,34 @@ public interface ModelPropertyService { /** * 创建模型属性 * - * @param modelProperty + * @param modelPropertyDTO * @return */ - Integer createModelProperty(ModelProperty modelProperty); + Integer createModelProperty(ModelPropertyDTO modelPropertyDTO); /** * 删除模型属性 * - * @param modelId + * @param modelCode * @return */ - Integer deleteModelProperty(String modelId); + Integer deleteModelProperty(String modelCode, String propCode); + + /** + * 批量删除模型属性 + * + * @param ids + * @return + */ + Integer deletePatchModelProperty(List ids); /** * 更新模型属性 * - * @param modelProperty + * @param modelPropertyDTO * @return */ - Integer updateModelProperty(ModelProperty modelProperty); + Integer updateModelProperty(ModelPropertyDTO modelPropertyDTO); /** * 获取模型属性 @@ -41,7 +51,7 @@ public interface ModelPropertyService { * @param * @return */ - List getModelPropertyList(); + List listModelProperty(String modelCode, String propCode); /** * 获取模型属性列表 @@ -49,5 +59,5 @@ public interface ModelPropertyService { * @param * @return */ - List getModelProperty(); + ModelPropertyDTO getModelProperty(); } diff --git a/src/main/java/com/pms/ocp/service/impl/ModelPropertyServiceImpl.java b/src/main/java/com/pms/ocp/service/impl/ModelPropertyServiceImpl.java index 1b85388bfb757bc01a88ee793c6d5397749555ee..0bcbfc46842716d81367ab4b30afaa2e91888d7e 100644 --- a/src/main/java/com/pms/ocp/service/impl/ModelPropertyServiceImpl.java +++ b/src/main/java/com/pms/ocp/service/impl/ModelPropertyServiceImpl.java @@ -1,10 +1,19 @@ package com.pms.ocp.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.pms.ocp.mapper.ModelPropertyMapper; +import com.pms.ocp.model.dto.ModelPropertyDTO; import com.pms.ocp.model.entity.ModelProperty; import com.pms.ocp.service.ModelPropertyService; +import io.swagger.models.auth.In; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.sql.Date; +import java.time.LocalDateTime; import java.util.List; /** @@ -16,26 +25,69 @@ import java.util.List; @Service public class ModelPropertyServiceImpl implements ModelPropertyService { -// @Autowired + @Autowired + private ModelPropertyMapper modelPropertyMapper; @Override - public Integer createModelProperty(ModelProperty modelProperty) { - return null; + public Integer createModelProperty(ModelPropertyDTO modelPropertyDTO) { + + ModelProperty modelProperty = new ModelProperty(); + + BeanUtils.copyProperties(modelPropertyDTO, modelProperty); + + modelProperty.setPropCtime(LocalDateTime.now()); + return modelPropertyMapper.insert(modelProperty); } @Override - public Integer deleteModelProperty(String modelId) { - return null; + public Integer deleteModelProperty(String modelCode, String propCode) { + QueryWrapper queryWrapper = new QueryWrapper(); + + if (StringUtils.isNotEmpty(modelCode)) { + queryWrapper.lambda().eq(ModelProperty::getModelCode, modelCode); + } + + if (StringUtils.isNotEmpty(propCode)) { + queryWrapper.lambda().eq(ModelProperty::getPropCode, propCode); + } + return modelPropertyMapper.delete(queryWrapper); } @Override - public Integer updateModelProperty(ModelProperty modelProperty) { - return null; + public Integer deletePatchModelProperty(List ids) { + return modelPropertyMapper.deleteBatchIds(ids); } @Override - public List getModelPropertyList() { - return null; + public Integer updateModelProperty(ModelPropertyDTO modelPropertyDTO) { + + ModelProperty modelProperty = new ModelProperty(); + + BeanUtils.copyProperties(modelPropertyDTO, modelProperty); + + modelProperty.setPropMtime(LocalDateTime.now()); + + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + + updateWrapper.lambda().eq(ModelProperty::getObjId, modelProperty.getObjId()); + + return modelPropertyMapper.update(modelProperty, updateWrapper); + } + + @Override + public List listModelProperty(String modelCode, String propCode) { + + QueryWrapper queryWrapper = new QueryWrapper(); + + if (StringUtils.isNotEmpty(modelCode)) { + queryWrapper.lambda().eq(ModelProperty::getModelCode, modelCode); + } + + if (StringUtils.isNotEmpty(propCode)) { + queryWrapper.lambda().eq(ModelProperty::getPropCode, propCode); + } + + return modelPropertyMapper.selectList(queryWrapper); } /** @@ -44,7 +96,7 @@ public class ModelPropertyServiceImpl implements ModelPropertyService { * @return */ @Override - public List getModelProperty() { + public ModelPropertyDTO getModelProperty() { QueryWrapper wrapper = new QueryWrapper<>(); return null; } diff --git a/src/main/java/com/pms/ocp/service/impl/OcpApiTreeServiceImpl.java b/src/main/java/com/pms/ocp/service/impl/OcpApiTreeServiceImpl.java index f7ffe16c3a9e30652c2331e76f09dd9f76af7563..80810d75a31ecb48417a24a9e4cec7787325a537 100644 --- a/src/main/java/com/pms/ocp/service/impl/OcpApiTreeServiceImpl.java +++ b/src/main/java/com/pms/ocp/service/impl/OcpApiTreeServiceImpl.java @@ -1,11 +1,8 @@ package com.pms.ocp.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.api.R; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.pms.ocp.common.config.PageParam; import com.pms.ocp.common.utils.RandomStringUtil; import com.pms.ocp.mapper.OcpApiBaseMapper; import com.pms.ocp.mapper.OcpApiTreeMapper;